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: , }, ]; const getNavDividerClass = (value) => { if (value === "lite-vs-pro") { return "sp-pcp-nav-divider"; } if (value === "our-plugins") { return "sp-pcp-nav-item-with-icon"; } return ""; }; return ( <>

Latest Updates - Changelog

changeLogControl()} className="sp-pcp-change-log-close">
{changeLodData && (
)} {!changeLodData && changeLogToggle && (

Loading....

)}
{/* Upgrade Notice with Close Button */} {showUpgradeNotice && (
You're currently using Smart Post Lite. To access additional features, consider {__("Upgrade to Pro", "post-carousel")}
)} {/* Header with Three-Column Layout */}
{/* Left: Logo + Version */}
changeLogControl()} className="sp-pcp-plugin-version"> {sp_pcp_block_settings.pluginVersion}
{/* Center: Navigation with Sliding Indicator */}
{/* Right: Get Help */}
{__("Get Help", "post-carousel")}
{GetHelpItems?.map( ({ title, link, Icon, internal, value }, index) => ( { e.preventDefault(); setPage(value); window.location.hash = value; } })} > {title} ) )}
); }; export default Header;