// ─── 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 (
);
}
function HeroMarquee() {
const t = useT();
const phrases = t.marqueePhrases;
const block = (
{phrases.map((p, i) => (
{p}
))}
);
return (
);
}
window.NavBar = NavBar;
window.Hero = Hero;