import { useEffect, useState, useRef } from "@wordpress/element";
import { __ } from "@wordpress/i18n";
import useGetChangeLogData from "../../hooks/getChangeLogData";
import { Arrow, ArrowRight } from "../icons/navigation";
import { Logo, OurPluginsIcon } from "../icons/brand";
import { LogNoticeIcon, Blog, Community, DocsStroked, FeatRequest, GetHelp, Roadmap, SetupWizard, TechSupport, Video, WhatsNew } from "../icons/ui";
import { CloseIcon } from "../../../prebuild-library/icons";
const GreenCheckIcon = () => (
);
const GetHelpItems = [
{
title: __("Documentation", "post-carousel"),
Icon: DocsStroked,
link: "https://wpsmartpost.com/docs/",
},
{
title: __("Technical Support", "post-carousel"),
Icon: TechSupport,
link: "https://shapedplugin.com/create-new-ticket/",
},
{
title: __("Setup Wizard", "post-carousel"),
Icon: SetupWizard,
link: `${sp_pcp_block_settings?.homeUrl}wp-admin/admin.php?page=pcp_help#setupwizard`,
},
{
title: __("Public Roadmap", "post-carousel"),
Icon: Roadmap,
link: "https://community.shapedplugin.com/roadmap/smart-post/",
},
{
title: __("Request a Feature", "post-carousel"),
Icon: FeatRequest,
link: "https://community.shapedplugin.com/portal/space/smartpost/home",
},
{
title: __("Video Tutorials", "post-carousel"),
Icon: Video,
link: "https://youtu.be/vnveuaiPBdc?si=B-DH-foeAh9TwjE5",
},
{
title: __("What's New", "post-carousel"),
Icon: WhatsNew,
link: "https://wpsmartpost.com/changelog/",
},
{
title: __("Blog: Latest News", "post-carousel"),
Icon: Blog,
link: "https://wpsmartpost.com/blog/",
},
{
title: __("Join Community", "post-carousel"),
Icon: Community,
link: "https://community.shapedplugin.com/portal/",
},
{
title: __("About Us", "post-carousel"),
Icon: DocsStroked,
link: "#about-us",
value: "about-us",
internal: true,
},
];
const Header = ({ page, setPage, modulesOptions }) => {
const [changeLogToggle, setChangeLogToggle] = useState(false);
const [changeLodData, setChangeLogData] = useState(null);
const [showUpgradeNotice, setShowUpgradeNotice] = useState(!!sp_pcp_block_settings?.upgradeNoticeVisible);
const [activeItemPosition, setActiveItemPosition] = useState({ left: 0, width: 0 });
const navRef = useRef();
const itemsRef = useRef({});
const getHelpRef = useRef();
const { getChangeLog } = useGetChangeLogData();
const changeLogControl = async () => {
if (!changeLodData) {
const changelog = await getChangeLog();
setChangeLogData(changelog);
}
setChangeLogToggle(!changeLogToggle);
if (!changeLogToggle) {
document.querySelector("body").classList.add("show-change-log");
} else {
document.querySelector("body").classList.remove("show-change-log");
}
};
useEffect(() => {
const closeChangeLog = (e) => {
if (changeLogToggle) {
const changelogEl = document.querySelector(".sp-pcp-change-log");
if (changelogEl && !changelogEl.contains(e.target)) {
setChangeLogToggle(false);
document.querySelector("body").classList.remove("show-change-log");
}
}
};
document.addEventListener("click", closeChangeLog);
return () => document.removeEventListener("click", closeChangeLog);
}, [changeLogToggle]);
const enabledSavedTemplate = modulesOptions?.some((item) => item.module_name === "saved-template" && item.show);
useEffect(() => {
const postMenu = document.getElementById("menu-posts-sp_post_carousel");
if (!postMenu) {
return;
}
const saveTemplateItem = postMenu?.querySelectorAll("li");
if (saveTemplateItem && saveTemplateItem.length > 3) {
if (!enabledSavedTemplate) {
saveTemplateItem[3].style.display = "none";
} else {
saveTemplateItem[3].style.display = "block";
}
}
// Initialize recommended plugins wrapper visibility on mount
const pluginsContainer = document.querySelector(".spspc-recommended-page");
if (pluginsContainer) {
if (page === "our-plugins") {
pluginsContainer.style.display = "block";
} else {
pluginsContainer.style.display = "none";
}
}
}, [enabledSavedTemplate, page]);
// Update sliding indicator position when current page changes
useEffect(() => {
if (page === "about-us") {
// Position indicator below Get Help button
const getHelpEl = getHelpRef.current;
const nav = navRef.current;
if (getHelpEl && nav) {
const navRect = nav.getBoundingClientRect();
const getHelpRect = getHelpEl.getBoundingClientRect();
setActiveItemPosition({
left: getHelpRect.left - navRect.left,
width: getHelpRect.width,
});
}
} else if (itemsRef.current[page]) {
// Position indicator below nav item
const item = itemsRef.current[page];
const nav = navRef.current;
if (item && nav) {
const navRect = nav.getBoundingClientRect();
const itemRect = item.getBoundingClientRect();
setActiveItemPosition({
left: itemRect.left - navRect.left,
width: itemRect.width,
});
}
}
// Show/hide recommended plugins wrapper based on active page
const pluginsContainer = document.querySelector(".spspc-recommended-page");
if (pluginsContainer) {
if (page === "our-plugins") {
pluginsContainer.style.display = "block";
} else {
pluginsContainer.style.display = "none";
}
}
}, [page]);
const tabChange = (e) => {
e.preventDefault();
const targetLink = e.currentTarget.closest("a");
const targetValue = targetLink.getAttribute("value");
setPage(targetValue);
window.location.hash = targetValue;
};
// Permanently dismiss the upgrade notice: hide it immediately and persist the
// choice via AJAX so it never shows again on subsequent page loads.
const dismissUpgradeNotice = () => {
setShowUpgradeNotice(false);
const formData = new FormData();
formData.append("action", "sp_pcp_dismiss_upgrade_notice");
formData.append("nonce", sp_pcp_block_settings?.nonce);
formData.append("dismissed", true);
fetch(ajaxurl, { method: "POST", body: formData }).catch(() => {});
};
const navigationItems = [
{
title: __("Dashboard", "post-carousel"),
value: "quick-start",
href: "#",
show: true,
},
{
title: __("Blocks", "post-carousel"),
value: "blocks",
href: "#blocks",
show: true,
badge: __("NEW!", "post-carousel"),
},
{
title: __("Modules", "post-carousel"),
value: "modules",
href: "#modules",
show: true,
},
{
title: __("Saved Templates", "post-carousel"),
value: "savedTemplate",
href: "#savedTemplate",
show: enabledSavedTemplate,
},
{
title: __("Integrations", "post-carousel"),
value: "integrations",
href: "#integrations",
show: true,
},
{
title: __("Settings", "post-carousel"),
value: "settings",
href: "#settings",
show: true,
},
{
title: __("Lite vs Pro", "post-carousel"),
value: "lite-vs-pro",
href: "#lite-vs-pro",
show: true,
},
{
title: __("Our Plugins", "post-carousel"),
value: "our-plugins",
href: "#our-plugins",
show: true,
icon:
Loading....