// Shared UI: brand mark, nav, footer, icons. window.BrandMark = function BrandMark({ size = 22 }) { return ( ); }; window.Nav = function Nav({ route, navigate }) { const metagraphOn = !!(window.__ENV && window.__ENV.METAGRAPH_ENABLED); const links = [ { id: 'graphs', label: 'Knowledge Graphs' }, { id: 'portal', label: 'Portal' }, { id: 'pricing', label: 'Pricing' }, ]; if (metagraphOn) links.unshift({ id: 'metagraph', label: 'Metagraph' }); // Mobile drawer state. The CSS only reveals the burger at <=760px, so on // desktop the toggle is just dead weight (display:none). Close on route // change so tapping a link doesn't leave the drawer hanging. const [open, setOpen] = React.useState(false); React.useEffect(() => { setOpen(false); }, [route]); React.useEffect(() => { // Lock body scroll while the drawer is open so the page doesn't slide // around behind it. if (!open) return; const prev = document.body.style.overflow; document.body.style.overflow = 'hidden'; return () => { document.body.style.overflow = prev; }; }, [open]); return ( <> ); }; function BurgerIcon({ open }) { return ( {open ? ( <> ) : ( <> )} ); } window.Footer = function Footer({ navigate }) { // Only render links that point somewhere real. Placeholders removed // rather than rendered as inert "#" anchors — the user complained // (rightly) about fake links. const docs = window.api ? window.api.docsUrl() : null; const status = window.api ? window.api.statusUrl() : null; const year = new Date().getFullYear(); return ( ); }; // Small inline icon set window.Icon = function Icon({ name, size = 18, ...rest }) { const common = { width: size, height: size, viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: 1.6, strokeLinecap: 'round', strokeLinejoin: 'round', ...rest }; const paths = { search: <>, plus: <>, minus: <>, chev: , chevDown: , arrow: <>, check: , node: <>, sparkle: <>, shield: , bolt: , layers: <>, }; return {paths[name]}; };