/* global React */ /* ============================================================= VzdelAI — SEKCIA: Navigácia (header) ------------------------------------------------------------- Fixed top header. Pri scrollovaní sa pozadie mení z transparentného na biele. Na mobiloch sa otvára/zatvára drawer cez hamburger button (s ESC, click-outside a body-scroll lock-om pre a11y). Závislosti (window): V2_LogoMark ============================================================= */ /* ────── DÁTA: hlavné navigačné odkazy ────── */ const NAV_LINKS = [ ['O projekte', '#for-whom'], ['Ako funguje VzdelAI', '#how'], ['Projekt v číslach', '#stats'], ['Aktivity', '#activities'], ['Výstupy', '#outputs'], ['Konzorcium', '#consortium'], ['Kontakt', '#kontakt'], ]; /* ────── HLAVNÝ KOMPONENT ────── */ function V2_Nav() { const { V2_LogoMark } = window; const [scrolled, setScrolled] = React.useState(false); const [menuOpen, setMenuOpen] = React.useState(false); // Sledovanie scrollu — prepne style hlavičky pri y > 80 React.useEffect(() => { const onScroll = () => { const next = window.scrollY > 80; setScrolled((cur) => cur === next ? cur : next); }; window.addEventListener('scroll', onScroll, { passive: true }); return () => window.removeEventListener('scroll', onScroll); }, []); // Lock body scroll keď je mobilné menu otvorené React.useEffect(() => { document.body.style.overflow = menuOpen ? 'hidden' : ''; return () => { document.body.style.overflow = ''; }; }, [menuOpen]); // ESC zatvára mobilné menu (a11y) React.useEffect(() => { if (!menuOpen) return; const onKey = (e) => { if (e.key === 'Escape') setMenuOpen(false); }; window.addEventListener('keydown', onKey); return () => window.removeEventListener('keydown', onKey); }, [menuOpen]); const linkColor = scrolled ? 'var(--vz-ink)' : 'rgba(255,255,255,0.92)'; return (
VzdelAI {/* Plný text na desktope/tablet, krátky "Kontakt" na malých telefónoch — riadi sa cez CSS .vz-nav-cta-full / .vz-nav-cta-short */} Kontaktovať tím Kontakt
{/* Mobile menu drawer */} {menuOpen && {/* Click-outside backdrop: pokrýva viewport pod drawerom */}
setMenuOpen(false)} aria-hidden="true" style={{ position: 'fixed', top: 0, left: 0, right: 0, bottom: 0, background: 'rgba(15,23,42,0.25)', zIndex: 1 }} /> }
); } /* ────── EXPORT ────── */ window.V2_Nav = V2_Nav;