function Modal({ whatsappLink, onClose, onSubmit }) { const [form, setForm] = React.useState({ nome: '', whatsapp: '', email: '' }); const [errors, setErrors] = React.useState({}); const [loading, setLoading] = React.useState(false); // Bloqueia scroll do body enquanto modal aberto React.useEffect(() => { document.body.style.overflow = 'hidden'; return () => { document.body.style.overflow = ''; }; }, []); function maskPhone(val) { const d = val.replace(/\D/g, '').slice(0, 11); if (d.length <= 2) return d; if (d.length <= 7) return `(${d.slice(0,2)}) ${d.slice(2)}`; if (d.length <= 11) return `(${d.slice(0,2)}) ${d.slice(2,7)}-${d.slice(7)}`; return val; } function validate() { const e = {}; if (!form.nome.trim() || form.nome.trim().length < 2) e.nome = 'Informe seu nome completo.'; const digits = form.whatsapp.replace(/\D/g, ''); if (digits.length < 10) e.whatsapp = 'WhatsApp inválido.'; if (form.email && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(form.email)) e.email = 'E-mail inválido.'; return e; } async function handleSubmit(e) { e.preventDefault(); const errs = validate(); if (Object.keys(errs).length) { setErrors(errs); return; } setLoading(true); await onSubmit(form); window.open(whatsappLink, '_blank'); onClose(); } function set(field) { return (e) => { const val = field === 'whatsapp' ? maskPhone(e.target.value) : e.target.value; setForm(f => ({ ...f, [field]: val })); if (errors[field]) setErrors(er => ({ ...er, [field]: undefined })); }; } return (
Me conta rapidinho sobre você — assim eu já chego no diagnóstico preparado pra te ajudar de verdade.