// Disparo em massa — WhatsApp blast dedicado const DisparoPage = () => { const [step, setStep] = React.useState("compor"); // compor | revisar | enviando | concluido const [tipo, setTipo] = React.useState("texto-imagem"); // texto | texto-imagem | botao const [msg, setMsg] = React.useState("Oi {primeiro_nome}! 💛\n\nTem live nova hoje às 20h — peças de Verão 26 com preço exclusivo de live.\n\nGuarda já no carrinho ⬇️\n👉 {link_live}"); const [segmentos, setSegmentos] = React.useState(["champions", "leais", "live60"]); const [intervalo, setIntervalo] = React.useState(15); const [agora, setAgora] = React.useState(true); const [sent, setSent] = React.useState(0); const toggleSeg = (s) => setSegmentos(prev => prev.includes(s) ? prev.filter(x => x !== s) : [...prev, s]); // Estimativa de destinatários (mock) const calcDestinatarios = () => { const m = { champions: 142, leais: 318, potencial: 89, risco: 204, novos: 64, perdidos: 487, live60: 312, loja30: 89, aniver: 28, cashback: 84 }; return segmentos.reduce((s, k) => s + (m[k] || 0), 0); }; const dest = calcDestinatarios(); const custo = dest * 0.05; const tempoMin = Math.ceil(dest * intervalo / 60); // Simula envio React.useEffect(() => { if (step !== "enviando") return; setSent(0); const start = Date.now(); const id = setInterval(() => { const elapsed = (Date.now() - start) / 1000; const target = Math.min(dest, Math.floor(elapsed / 1.5 * dest * 0.08)); setSent(target); if (target >= dest) { clearInterval(id); setTimeout(() => setStep("concluido"), 600); } }, 80); return () => clearInterval(id); }, [step, dest]); return (
WhatsApp em massa

Disparo em massa

Envio direto via API WhatsApp Business · até 5.000 destinatários por disparo.

SALDO R$ 28,40 · ≈ 568 envios · recarregar
{/* Stepper */}
{step === "compor" && (

Tipo de mensagem

setTipo("texto")} icon="send" label="Texto simples"/> setTipo("texto-imagem")} icon="eye" label="Texto + imagem"/> setTipo("botao")} icon="arrowRight" label="Texto + botão CTA"/>

Mensagem

{tipo === "texto-imagem" && (
Arraste imagem ou clique para enviar JPEG · PNG · até 5MB
)}