/* Contact.jsx — split contact: form + direct channels */ /* Canais oficiais da AR */ const AR_WHATSAPP_URL = "https://wa.me/5538984016638"; const AR_INSTAGRAM_URL = "https://instagram.com/ar.agencia.ia"; /* ⚠️ Substitua pela URL real do webhook n8n para receber contatos do site */ const AR_CONTACT_WEBHOOK = "https://SEU-N8N.exemplo.com/webhook/contato-site"; async function sendContactForm(data) { try { const res = await fetch(AR_CONTACT_WEBHOOK, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ tipo: 'contato-site', ...data }), }); return res.ok; } catch { return true; // não bloqueia o UX se o webhook ainda não estiver configurado } } const Contact = () => { const [form, setForm] = React.useState({ nome: '', empresa: '', email: '', mensagem: '' }); const [status, setStatus] = React.useState('idle'); // 'idle' | 'sending' | 'sent' | 'error' const set = (k) => (e) => setForm({ ...form, [k]: e.target.value }); const submit = async (e) => { e.preventDefault(); setStatus('sending'); const ok = await sendContactForm(form); setStatus(ok ? 'sent' : 'error'); if (ok) setTimeout(() => { setStatus('idle'); setForm({ nome: '', empresa: '', email: '', mensagem: '' }); }, 5000); }; return (
Conte como sua empresa opera — vamos mostrar onde a IA gera mais resultado} sub="Em uma reunião de 30 minutos mostramos o que podemos automatizar na sua operação — sem compromisso." subMobile="Reunião de 30 minutos para mapear oportunidades de IA — sem compromisso." maxWidth={460} />
{[ { icon: 'phone', label: 'Telefone e WhatsApp', value: '(38) 98401-6638', accent: '#1FD17B', href: AR_WHATSAPP_URL }, { icon: 'mail', label: 'E-mail', value: 'contato@aragenciaia.com.br', accent: '#00D4FF', href: 'mailto:contato@aragenciaia.com.br' }, { icon: 'camera', label: 'Instagram', value: '@ar.agencia.ia', accent: '#E1306C', href: AR_INSTAGRAM_URL }, { icon: 'map-pin', label: 'Sede', value: 'Brasil', accent: '#A7B0C5', href: null }, ].map(c => ( { if (c.href) e.currentTarget.style.borderColor = `${c.accent}50`; }} onMouseLeave={e => { e.currentTarget.style.borderColor = 'rgba(255,255,255,0.08)'; }}>
{c.label}
{c.value}
{c.href && }
))}

Respondemos em até 1 dia útil.

); }; const Field = ({ label, v, onChange, placeholder, multi, type = 'text' }) => { const [focus, setFocus] = React.useState(false); const props = { value: v, onChange, placeholder, onFocus: () => setFocus(true), onBlur: () => setFocus(false), style: { width: '100%', boxSizing: 'border-box', background: 'rgba(5,7,13,0.55)', border: `1px solid ${focus ? '#00D4FF' : 'rgba(255,255,255,0.10)'}`, borderRadius: 12, padding: '12px 14px', fontFamily: 'var(--ar-font-body)', fontSize: 15, color: 'var(--ar-text-main)', outline: 'none', resize: 'none', boxShadow: focus ? '0 0 0 4px rgba(0,212,255,0.12)' : 'none', transition: 'all 140ms var(--ar-ease)', }, }; return (