// ─── Site sections — i18n-aware ───────────────────────────── function Filosofie() { const t = useT(); return (
{t.filosofieEyebrow}

"¡eso!" {t.filosofieTitle1}{' '} {t.filosofieTitle2}

{t.filosofiePara1}

{t.filosofiePara2}

); } function Pijlers() { const t = useT(); return (
{t.pijlersEyebrow}

{t.pijlersTitle}

{t.pijlersIntro}
{t.pillars.map(([title, tag, items], i) => (
{ e.currentTarget.style.transform = 'translateY(-4px)'; e.currentTarget.style.boxShadow = '0 20px 40px rgba(31,26,23,0.08)'; }} onMouseLeave={(e) => { e.currentTarget.style.transform = 'none'; e.currentTarget.style.boxShadow = 'none'; }}>
0{i + 1} {title}

{tag}

    {items.map((x) => (
  • ))}
))}
); } function Coaches() { const t = useT(); return (
{t.coachesEyebrow}

{t.coachesTitle}

{t.coachesSubtitle}
{t.coachesData.map(([name, role, initials, face, p1, p2], i) => (
{face ? (
) : (
{initials}
)}

{name}

{role}

{p1}

{p2}

))}
); } function Programma() { const t = useT(); return (
{t.programmaEyebrow}

{t.programmaTitle1}
{t.programmaTitle2}

{t.programmaIntro}
{t.programmaScheduleLabel}
{t.schedule.map(([d, x, h], i) => (
{d}
{x}
{h}
))}

{t.programmaScheduleNote}

{t.commitmentTitle}

{t.commitmentBody}

); } function Testimonial() { const t = useT(); return (
{t.testimonial}
{t.testimonialAuthor}
); } function WatKrijgt() { const t = useT(); return (
{t.krijgtEyebrow}

{t.krijgtTitle}

{t.krijgtItems.map(([title, body], i) => (
{title}

{body}

))}
); } function OpenClinic() { const t = useT(); const waHref = `https://wa.me/31617490653?text=${encodeURIComponent(t.waMessage)}`; return (
{t.clinicEyebrow}

{t.clinicTitle}

{t.clinicLede}

{t.clinicScheduleLabel}
{t.clinicSchedule.map(([time, what], i) => (
{time} {what}
))}
{t.clinicWhoTitle}
    {t.clinicWho.map((x) => (
  • {x}
  • ))}
{t.clinicWhatTitle}
    {t.clinicWhat.map((x) => (
  • {x}
  • ))}
{t.clinicCTA} {t.clinicNote}
); } window.OpenClinic = OpenClinic; function FAQ() { const t = useT(); return (
{t.faqEyebrow}

{t.faqTitle}

{t.faqs.map(([q, a], i) => ( ))}
); } function FAQItem({ q, a, delay = 0 }) { const [open, setOpen] = React.useState(false); return (

{a}

); } function Inschrijven() { const t = useT(); const [name, setName] = React.useState(''); const [age, setAge] = React.useState(''); const [email, setEmail] = React.useState(''); const [msg, setMsg] = React.useState(''); const [sent, setSent] = React.useState(false); // Formspree: replace XXXXXXXX with your endpoint id (formspree.io → create form → copy id) const FORMSPREE_ENDPOINT = 'https://formspree.io/f/XXXXXXXX'; async function submit(e) { e.preventDefault(); try { await fetch(FORMSPREE_ENDPOINT, { method: 'POST', headers: { 'Accept': 'application/json' }, body: new FormData(e.target), }); setSent(true); } catch (err) { // Fallback to mailto if formspree unreachable const subject = encodeURIComponent('Gratis intake — ' + (name || 'aanmelding')); const body = encodeURIComponent( 'Naam talent: ' + name + '\n' + 'Leeftijd: ' + age + '\n' + 'E-mail ouder/voogd: ' + email + '\n\n' + 'Niveau / opmerkingen:\n' + msg ); window.location.href = 'mailto:coach@esotennis.nl?subject=' + subject + '&body=' + body; setSent(true); } } return (
{t.inschrijvenEyebrow}

{t.inschrijvenTitle1}
{t.inschrijvenTitle2}

{t.inschrijvenBody}

{t.contactEmail} coach@esotennis.nl
{t.contactPhone} 06 1749 0653
{t.contactLocation} {t.locationText}
{t.formEyebrow}
{sent ? (

{t.thanksTitle}, {name || ''}!

{t.thanksBody}

) : ( setName(e.target.value)} placeholder={t.fieldNamePh} style={inputStyle} /> setAge(e.target.value)} min={6} max={18} placeholder={t.fieldAgePh} style={inputStyle} /> setEmail(e.target.value)} placeholder={t.fieldEmailPh} style={inputStyle} />