// Demo request modal — hooked to /api/demo (Resend backend) function Waitlist({ lang }) { const [open, setOpen] = React.useState(false); const [submitted, setSubmitted] = React.useState(false); const [pending, setPending] = React.useState(false); const [error, setError] = React.useState(null); React.useEffect(() => { const handler = (e) => { const a = e.target.closest && e.target.closest('a[href="#demo"], button[data-waitlist]'); if (!a) return; e.preventDefault(); setOpen(true); setSubmitted(false); setError(null); }; document.addEventListener("click", handler); const esc = (e) => { if (e.key === "Escape") setOpen(false); }; document.addEventListener("keydown", esc); return () => { document.removeEventListener("click", handler); document.removeEventListener("keydown", esc); }; }, []); if (!open) return null; const tr = lang === "tr"; const onSubmit = async (e) => { e.preventDefault(); if (pending) return; setError(null); setPending(true); const fd = new FormData(e.currentTarget); const payload = { name: fd.get("name") || "", company: fd.get("company") || "", email: fd.get("email") || "", message: fd.get("message") || "", }; try { const res = await fetch("/api/demo", { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify(payload), }); const data = await res.json().catch(() => ({})); if (res.ok && data.success) { setSubmitted(true); } else { setError( data.error || (tr ? "Talep iletilemedi. Lütfen info@grendex.co adresine yazın." : "We couldn't deliver your request. Please email info@grendex.co.") ); } } catch { setError( tr ? "Bağlantı hatası. Lütfen tekrar deneyin." : "Network error. Please try again." ); } finally { setPending(false); } }; return (
{ if (e.target === e.currentTarget) setOpen(false); }} style={{ position: "fixed", inset: 0, zIndex: 1000, background: "rgba(20,20,15,0.45)", display: "grid", placeItems: "center", padding: 24, animation: "wlfade .18s ease-out", }}>
{!submitted ? ( <>
{tr ? "DEMO TALEBİ" : "REQUEST DEMO"}

{tr ? "Demo talep edin" : "Request a demo"}

{tr ? "Formu doldurun, ekibimiz 24 saat içinde sizinle iletişime geçsin." : "Fill in the form and our team will reach out within 24 hours."}

{error && (
{error}
)}