// Demo modal — opens via custom event "open-demo" const { useState: useStateModal, useEffect: useEffectModal } = React; const DemoModal = () => { const [open, setOpen] = useStateModal(false); const [submitted, setSubmitted] = useStateModal(false); const [form, setForm] = useStateModal({ nume: "", email: "", magazin: "", mesaj: "" }); const [errors, setErrors] = useStateModal({}); useEffectModal(() => { const handler = () => { setOpen(true); setSubmitted(false); }; window.addEventListener("open-demo", handler); return () => window.removeEventListener("open-demo", handler); }, []); useEffectModal(() => { document.body.style.overflow = open ? "hidden" : ""; const onEsc = (e) => { if (e.key === "Escape") setOpen(false); }; window.addEventListener("keydown", onEsc); return () => window.removeEventListener("keydown", onEsc); }, [open]); const validate = () => { const e = {}; if (!form.nume.trim()) e.nume = "Numele este obligatoriu"; if (!/^\S+@\S+\.\S+$/.test(form.email)) e.email = "Email invalid"; if (!form.magazin.trim()) e.magazin = "URL magazin obligatoriu"; setErrors(e); return Object.keys(e).length === 0; }; const submit = (e) => { e.preventDefault(); if (!validate()) return; setSubmitted(true); }; return (
Te sunăm în 4 ore lucrătoare. Fără card, fără obligații.
> ) : (Te sunăm la {form.email} în maxim 4 ore lucrătoare.