// ─── SENES MEDIA · nav, footer ──────────────────────────────────── function Nav({ page, navigate }) { const links = [ { id: "home", label: "Home" }, { id: "work", label: "Our Work" }, { id: "about", label: "About Us" }, { id: "services", label: "Services" }, { id: "contact", label: "Contact" }, ]; const [open, setOpen] = React.useState(false); const menuRef = React.useRef(null); // close menu on outside click React.useEffect(() => { if (!open) return; const handler = (e) => { if (menuRef.current && !menuRef.current.contains(e.target)) setOpen(false); }; document.addEventListener("click", handler, true); return () => document.removeEventListener("click", handler, true); }, [open]); const go = (id) => { navigate(id); setOpen(false); }; return ( { e.preventDefault(); go("home"); }} className="nav-logo" data-cursor="hover"> {links.map((l) => ( { e.preventDefault(); go(l.id); }} className={`nav-link ${page === l.id ? "active" : ""}`} data-cursor="hover"> {l.label} ))} { e.preventDefault(); go("contact"); }} className="nav-cta" data-cursor="hover"> Get in touch {/* Mobile hamburger */} setOpen((v) => !v)} aria-label={open ? "Close menu" : "Open menu"} aria-expanded={open} data-cursor="hover" > {/* Mobile dropdown menu */} {links.map((l, i) => ( { e.preventDefault(); go(l.id); }} className={`nav-dropdown-link ${page === l.id ? "active" : ""}`} style={{ transitionDelay: open ? `${0.04 + i * 0.035}s` : "0s" }}> 0{i + 1} {l.label} {page === l.id && } ))} { e.preventDefault(); go("contact"); }} className="nav-dropdown-cta" style={{ transitionDelay: open ? `${0.04 + links.length * 0.035}s` : "0s" }}> Get in touch info@senesmedia.com ); } function Footer({ navigate }) { const d = window.SENES_DATA; return ( ); } // ─── Global CTA closer — shows above the footer on every page ──── function CTACloser({ navigate }) { return ( BEGIN · LET'S BRING YOUR IDEAS TO LIFE Have a project? We would love to hear about your project and help bring your ideas to life. navigate("contact")} style={{ padding: "20px 36px" }}> Start a conversation ); } Object.assign(window, { Nav, Footer, CTACloser });
We would love to hear about your project and help bring your ideas to life.