// Layershop.eu — Contact page function ContactPage() { const Nav = window.Nav; const Footer = window.Footer; const LayerStripes = window.LayerStripes; const CookieBanner = window.CookieBanner; const [form, setForm] = React.useState({ name: "", email: "", msg: "", company: "", notRobot: false }); const [errors, setErrors] = React.useState({}); const [sent, setSent] = React.useState(false); const [sending, setSending] = React.useState(false); const [serverError, setServerError] = React.useState(""); const formTsRef = React.useRef(Date.now()); const update = (k) => (e) => { const val = e.target.type === 'checkbox' ? e.target.checked : e.target.value; setForm(f => ({ ...f, [k]: val })); setErrors(err => ({ ...err, [k]: undefined })); }; const validate = () => { const e = {}; if (!form.name.trim()) e.name = "Vul je naam in."; if (!form.email.trim()) e.email = "Vul je e-mailadres in."; else if (!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(form.email)) e.email = "Geen geldig e-mailadres."; if (!form.msg.trim()) e.msg = "Schrijf een bericht."; if (!form.notRobot) e.notRobot = "Bevestig dat je geen robot bent."; if (form.company) e.company = "Spam gedetecteerd."; return e; }; const onSubmit = async (ev) => { ev.preventDefault(); setServerError(""); const e = validate(); setErrors(e); if (Object.keys(e).length > 0) return; setSending(true); try { const fd = new FormData(); fd.append("name", form.name); fd.append("companyField", ""); fd.append("email", form.email); fd.append("msg", form.msg); fd.append("company", form.company); if (form.notRobot) fd.append("notRobot", "on"); fd.append("form_ts", String(formTsRef.current)); const res = await fetch("send.php", { method: "POST", body: fd }); let data = null; try { data = await res.json(); } catch (_) {} if (res.ok && data && data.ok) { setSent(true); } else { setServerError((data && data.msg) ? data.msg : "Verzenden mislukt. Probeer opnieuw."); } } catch (err) { setServerError("Verbinding mislukt. Probeer het later opnieuw."); } finally { setSending(false); } }; return (