function FormPage({ onBack, onContinue, initial }) { const { useState } = React; const [data, setData] = useState(initial || { nome: "", email: "", telefone: "" }); const [ddi, setDdi] = useState("+55"); // Estado para armazenar o código do país (Padrão: Brasil) const [errors, setErrors] = useState({}); const [saving, setSaving] = useState(false); // Máscara dinâmica com base no país selecionado const formatPhone = (v, currentDdi) => { let d = v.replace(/\D/g, ""); if (currentDdi === "+1") { // Padrão EUA: 10 dígitos (XXX) XXX-XXXX d = d.slice(0, 10); if (d.length === 0) return ""; if (d.length <= 3) return `(${d}`; if (d.length <= 6) return `(${d.slice(0,3)}) ${d.slice(3)}`; return `(${d.slice(0,3)}) ${d.slice(3,6)}-${d.slice(6)}`; } else { // Padrão Brasil: 10 ou 11 dígitos (XX) XXXXX-XXXX d = d.slice(0, 11); if (d.length === 0) return ""; if (d.length <= 2) return `(${d}`; if (d.length <= 6) return `(${d.slice(0,2)}) ${d.slice(2)}`; if (d.length <= 10) return `(${d.slice(0,2)}) ${d.slice(2,6)}-${d.slice(6)}`; return `(${d.slice(0,2)}) ${d.slice(2,7)}-${d.slice(7)}`; } }; const update = (k, v) => { setData({ ...data, [k]: v }); if (errors[k]) setErrors({ ...errors, [k]: null }); }; // Quando o usuário troca de país no seletor, reformatamos o número que já está digitado const handleDdiChange = (e) => { const newDdi = e.target.value; setDdi(newDdi); update('telefone', formatPhone(data.telefone, newDdi)); }; const submit = async (e) => { e.preventDefault(); const errs = {}; if (!data.nome.trim() || data.nome.trim().length < 2) errs.nome = "Informe seu nome"; if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(data.email)) errs.email = "Email inválido"; // Validação ajustada para o número de dígitos esperado por país const digits = data.telefone.replace(/\D/g, ""); if (ddi === "+1" && digits.length < 10) errs.telefone = "Telefone inválido"; if (ddi === "+55" && digits.length < 10) errs.telefone = "Telefone inválido"; setErrors(errs); if (Object.keys(errs).length === 0) { setSaving(true); // Junta o DDI selecionado com o telefone digitado para enviar ao PHP const payload = { ...data, telefone: `${ddi} ${data.telefone}` }; try { await fetch('/salvar_lead.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload) }); } catch (error) { console.error("Falha ao salvar no banco interno:", error); } setSaving(false); onContinue(payload); } }; return (