// lead-modal.jsx — Lead capture modal with form validation + success state function LeadModal({ lang, onClose }) { const c = window.CONTENT[lang].form; const levels = window.CONTENT[lang].levels.items; const [data, setData] = React.useState({ parent: '', email: '', phone: '', child: '', age: '', level: '', note: '', }); const [submitted, setSubmitted] = React.useState(false); const [errors, setErrors] = React.useState({}); React.useEffect(() => { const k = (e) => { if (e.key === 'Escape') onClose(); }; document.addEventListener('keydown', k); document.body.style.overflow = 'hidden'; return () => { document.removeEventListener('keydown', k); document.body.style.overflow = ''; }; }, [onClose]); const handleChange = (field, value) => { setData(d => ({ ...d, [field]: value })); if (errors[field]) setErrors(e => ({ ...e, [field]: null })); }; const submit = (e) => { e.preventDefault(); const err = {}; if (!data.parent.trim()) err.parent = true; if (!/^.+@.+\..+$/.test(data.email)) err.email = true; if (data.phone.replace(/\D/g, '').length < 8) err.phone = true; if (!data.child.trim()) err.child = true; if (Object.keys(err).length) { setErrors(err); return; } setSubmitted(true); }; const inputBase = { width: '100%', padding: '12px 14px', background: 'var(--bg-soft)', border: '2px solid var(--line)', borderRadius: 12, fontFamily: 'inherit', fontSize: 15, color: 'var(--ink)', outline: 'none', }; const errStyle = { borderColor: '#FF3030', background: 'rgba(255,48,48,0.06)' }; const labelStyle = { fontSize: 12, fontWeight: 700, textTransform: 'uppercase', letterSpacing: '0.06em', color: 'var(--ink-soft)', marginBottom: 6, display: 'block', }; return (
e.stopPropagation()}> {!submitted ? ( <>
Future AI Creators

{c.title}

{c.sub}

handleChange('parent', e.target.value)} placeholder="Ayşe Yılmaz"/>
handleChange('email', e.target.value)} placeholder="ayse@email.com"/>
handleChange('phone', e.target.value)} placeholder="+90 5__ ___ __ __"/>
handleChange('child', e.target.value)} placeholder="Ada"/>
handleChange('age', e.target.value)} placeholder="9"/>