/* Blog + Contacto */ (function () { const { useState, useRef } = React; function Blog({ data }) { const b = data.blog; return (
{b.eyebrow}

{b.title}

Ver todo el blog
{b.posts.map((p, i) => (
{p.tag}

{p.title}

{p.read} de lectura
))}
); } function Contacto({ data }) { const c = data.contact; const [sent, setSent] = useState(false); const [folio, setFolio] = useState(""); const [enviando, setEnviando] = useState(false); const [error, setError] = useState(""); /* Momento en que se montó el formulario: el servidor exige un mínimo de segundos de llenado como medida anti-bot. */ const t0 = useRef(Math.floor(Date.now() / 1000)); const submit = (e) => { e.preventDefault(); if (enviando) return; setError(""); setEnviando(true); const fd = new FormData(e.target); fd.append("_t", String(t0.current)); fetch("api/contacto.php", { method: "POST", body: fd }) .then((r) => r.json().then((j) => ({ ok: r.ok, j }))) .then(({ j }) => { if (j.ok) { setFolio(j.folio); setSent(true); } else { const errs = j.errors || {}; setError(errs._ || Object.values(errs)[0] || "No se pudo enviar tu mensaje."); } }) .catch(() => setError("No se pudo conectar. Revisa tu conexión e intenta de nuevo.")) .then(() => setEnviando(false)); }; return (
{c.eyebrow}

{c.title}

{c.lead}

{data.social.map((s) => ( ))}
{sent ? (

¡Gracias! Te contactaremos pronto.

Un asesor revisará tu solicitud y responderá con tiempos y arancel.

{folio &&

Folio: {folio}

}
) : (