// ─── Hero + Nav — i18n-aware ───────────────────────────── function NavBar() { const [scrolled, setScrolled] = React.useState(false); const t = useT(); React.useEffect(() => { const onScroll = () => setScrolled((window.scrollY || 0) > 40); window.addEventListener('scroll', onScroll, { passive: true }); onScroll(); return () => window.removeEventListener('scroll', onScroll); }, []); const waHref = `https://wa.me/31617490653?text=${encodeURIComponent(t.waMessage)}`; return ( ); } function NavMenu({ scrolled }) { const t = useT(); const [open, setOpen] = React.useState(false); const waHref = `https://wa.me/31617490653?text=${encodeURIComponent(t.waMessage)}`; const isMobile = typeof window !== 'undefined' && window.matchMedia('(max-width: 900px)').matches; const [_, force] = React.useReducer(x => x + 1, 0); React.useEffect(() => { const mql = window.matchMedia('(max-width: 900px)'); const h = () => force(); mql.addEventListener?.('change', h); return () => mql.removeEventListener?.('change', h); }, []); const mobile = typeof window !== 'undefined' && window.matchMedia('(max-width: 900px)').matches; const linkStyle = { color: 'inherit', textDecoration: 'none', fontSize: 13, fontWeight: 600, letterSpacing: '0.02em', opacity: 0.85, }; const desktopContent = ( {t.navLinks.map(([l, h]) => ( {l} ))} {t.navOpenClinicLabel} {t.navOpenClinicDate} {t.navWhatsApp} {t.navCTA} ); if (!mobile) { return (
{desktopContent}
); } return ( {open && (
{t.navWhatsApp} setOpen(false)} style={{ background: '#C84D2C', color: '#F8F4E8', padding: '14px 18px', fontFamily: "'Source Serif 4', Georgia, serif", fontStyle: 'italic', fontWeight: 900, fontSize: 15, textDecoration: 'none', textAlign: 'center', }}>{t.navCTA}
)}
); } window.NavMenu = NavMenu; function Hero({ marksShow, marksColor, marksBleed, marksSize }) { const y = useScrollY(); const t = useT(); const photoY = Math.min(y * 0.35, 220); const overlayOp = Math.min(0.18 + y / 1800, 0.48); const waHref = `https://wa.me/31617490653?text=${encodeURIComponent(t.waMessage)}`; return (
{t.heroRibbonLabel} {t.heroRibbon}
{t.heroEyebrow}

{t.heroTitle1}
{t.heroTitle2}
{t.heroTitle3}

{t.heroLede}

{t.stats.map(([n, l]) => (
{n}
{l}
))}
); } function HeroMarquee() { const t = useT(); const phrases = t.marqueePhrases; const block = ( {phrases.map((p, i) => ( {p} ))} ); return (
{block}{block}
); } window.NavBar = NavBar; window.Hero = Hero;