/* ============================================================ MenuOverlay — full-screen navigation (AIR меню.PNG pattern) Floating chrome + centred grey panel: · left : big primary nav + small secondary list (bottom) · right : two stacked CTA cells split by a hairline ============================================================ */ /* small grey "+" cell button (the AIR expand square) */ function PlusSquare({ onClick }) { const [hover, setHover] = React.useState(false); return ( ); } /* one big primary nav line */ function NavLine({ label, onClick }) { const [hover, setHover] = React.useState(false); return ( ); } /* one small secondary nav line */ function SubLine({ label, onClick }) { const [hover, setHover] = React.useState(false); return ( ); } /* red YouTube play-button mark (lucide build lacks a youtube glyph) */ function YouTubeMark({ size = 18 }) { return ( ); } /* right-column CTA cell: label top-left, plus square bottom-right */ function CtaCell({ label, onClick, divider, icon, iconColor }) { return (
); } function MenuOverlay({ open, onClose, onNav, onContact }) { const { t } = useT(); const go = (id) => { onNav(id); onClose(); }; const goPage = (url) => { window.location.href = url; }; const openExt = (url) => { window.open(url, "_blank", "noopener"); onClose(); }; const CH = window.CHANNELS || {}; const primary = [ { label: t("menu.story"), page: "about.html" }, { label: t("menu.program"), page: "course.html" }, { label: t("menu.pricing"), id: "pricing" }, { label: t("menu.results"), id: "results" }, { label: t("menu.channels"), id: "contact" }, ]; const secondary = [ { label: t("menu.webinarFree"), page: "webinar.html" }, { label: t("common.enrollPay"), page: "enroll.html" }, ]; return (
{/* ambient greyscale form bleeding from the right edge */}
{/* floating chrome (matches Header; menu → close) */}
{t("brand")}
{t("brand")} goPage("course.html#enroll")}>{t("common.enroll")}
{/* centred panel */}
{/* ambient smoke inside the panel */} {/* left column */}
{primary.map((it) => it.page ? goPage(it.page) : go(it.id)} />)}
{secondary.map((it) => it.page ? goPage(it.page) : go(it.id)} />)}
{/* right column — two CTA cells */}
openExt(CH.youtube || "#")} /> openExt(CH.telegramOpen || "#")} divider /> goPage("secret.html")} divider />
); } Object.assign(window, { MenuOverlay });