// GSP Contact form + Locations. function ContactForm({ empleo = false, formId }) { const Icon = window.Icon; // status: 'idle' | 'sending' | 'sent' | 'error' const [status, setStatus] = React.useState('idle'); const [form, setForm] = React.useState({ nombre: '', telefono: '', email: '', servicio: '', mensaje: '', empresa_web: '' }); const startedAt = React.useRef(Date.now()); const tsRef = React.useRef(null); // container del captcha const tsId = React.useRef(null); // widgetId de Turnstile const fid = formId || (window.GSPForms ? window.GSPForms.pageFormId('contacto') : 'contacto'); const set = (k) => (e) => setForm((f) => ({ ...f, [k]: e.target.value })); React.useEffect(() => { startedAt.current = Date.now(); if (window.GSPForms) window.GSPForms.renderTurnstile(tsRef.current).then((id) => { tsId.current = id; }); }, []); const handleSubmit = (e) => { e.preventDefault(); if (status === 'sending') return; setStatus('sending'); const token = window.GSPForms ? window.GSPForms.getToken(tsId.current) : ''; window.GSPForms.submit({ formId: fid, fields: { nombre: form.nombre, telefono: form.telefono, email: form.email, servicio: form.servicio, mensaje: form.mensaje }, meta: { startedAt: startedAt.current, hp: form.empresa_web, token }, }).then(() => { setStatus('sent'); }).catch((err) => { console.warn('[ContactForm] envío falló:', err && err.message); setStatus('error'); if (window.GSPForms) window.GSPForms.resetTurnstile(tsId.current); }); }; const sent = status === 'sent'; const sending = status === 'sending'; const features = [ ['Respuesta en 24 hs', 'Nos comprometemos a responder rápido.'], ['Sin compromiso', 'Cotización gratuita y sin obligación.'], ['Asesoramiento profesional', 'Un especialista analiza tu caso particular.'], ]; return (
Contacto

Solicitá tu cotización
sin compromiso

Completá el formulario y nuestro equipo te contactará en menos de 24 horas con una propuesta adaptada a tus necesidades.

{features.map(([h, p]) => (

{h}

{p}

))}
{sent ? (

¡Consulta enviada!

Gracias. Un especialista de GSP te va a contactar dentro de las próximas 24 horas.

) : (