const { useState, useEffect } = React; function WebsiteNav({ showLinks = true } = {}) { const [scrolled, setScrolled] = useState(false); const [menuOpen, setMenuOpen] = useState(false); const { isMobile } = useViewport(); useEffect(() => { const fn = () => setScrolled(window.scrollY > window.innerHeight * 0.8); window.addEventListener('scroll', fn, { passive: true }); fn(); return () => window.removeEventListener('scroll', fn); }, []); // lock page scroll while the overlay menu is open useEffect(() => { document.body.style.overflow = menuOpen ? 'hidden' : ''; return () => { document.body.style.overflow = ''; }; }, [menuOpen]); // close menu if we grow back to desktop useEffect(() => { if (!isMobile) setMenuOpen(false); }, [isMobile]); const links = [['#portfolio', 'trabalhos'], ['#servicos', 'serviços'], ['#sobre', 'sobre'], ['#contato', 'contato']]; if (isMobile) { if (!showLinks) { return ( ); } const bar = (rot, ty) => ({ width: 22, height: 2, borderRadius: 2, background: menuOpen ? '#1D1D1B' : '#fff', transition: 'transform .35s cubic-bezier(.76,0,.24,1), background .2s', transform: menuOpen ? 'translateY(' + ty + 'px) rotate(' + rot + 'deg)' : 'none', }); return ( {/* Hamburger — always reachable on mobile; mix-blend so it reads on dark hero & light sections */} setMenuOpen((o) => !o)} style={{ position: 'fixed', top: 16, right: 16, zIndex: 300, width: 48, height: 48, borderRadius: '50%', display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', gap: 6, background: menuOpen ? '#E3DDD8' : 'transparent', border: 'none', cursor: 'pointer', padding: 0, mixBlendMode: menuOpen ? 'normal' : 'difference', WebkitTapHighlightColor: 'transparent', }}> {/* Full-screen overlay menu */} {links.map(([href, label]) => ( setMenuOpen(false)} style={{ fontFamily: 'HelveticaCompressed, "Arial Narrow", Arial, sans-serif', fontWeight: 700, fontSize: 'clamp(42px, 14vw, 76px)', textTransform: 'uppercase', lineHeight: 1.05, color: '#E3DDD8', textDecoration: 'none', letterSpacing: '-.01em', }}>{label} ))} lucasqueiroz@gmail.com +55 11 97551 4667 ); } return ( {showLinks && {links.map(([href, label]) => ( e.currentTarget.style.opacity='.5'} onMouseLeave={e => e.currentTarget.style.opacity='1'} >{label} → ))} } ); } Object.assign(window, { WebsiteNav });