/** * ========================================================================= * PLATEFORME ECO-PANNEAU.FR - VERSION 1.0.0 * Socle Riverains - Onglet : Newsletter / Actualités du chantier * ========================================================================= */ const { useState } = React; window.pano_RiverainNewsletterTab = ({ panneau, themeColor, showToast }) => { const { MailIcon, LoaderIcon, CheckCircleIcon, ArrowRightIcon } = window.pano_getIcons(); const Button = window.pano_Button || (() => null); const [email, setEmail] = useState(''); const [status, setStatus] = useState('idle'); // idle, requesting, verifying, success const [verifySession, setVerifySession] = useState(''); const [verifyCode, setVerifyCode] = useState(''); const [submitting, setSubmitting] = useState(false); const handleSubscribeRequest = async (e) => { e.preventDefault(); if (!email.trim() || !email.includes('@')) { if (showToast) showToast("Veuillez saisir une adresse e-mail valide.", "error"); return; } const d = await window.pano_apiFetch('newsletter/subscribe_request', { body: { email: email.trim(), panneau_id: panneau.id }, setLoading: setSubmitting, successMessage: "Un code de vérification a été envoyé à votre adresse e-mail." }); if (d && d.data && d.data.verify_session) { setVerifySession(d.data.verify_session); setStatus('verifying'); } }; const handleVerifyCode = async (e) => { e.preventDefault(); if (verifyCode.length !== 6) return; const d = await window.pano_apiFetch('newsletter/subscribe_confirm', { body: { verify_session: verifySession, code: verifyCode }, setLoading: setSubmitting, successMessage: "Inscription confirmée avec succès !" }); if (d) { setStatus('success'); } }; if (status === 'success') { return (

Inscription validée !

Vous recevrez désormais les actualités et les informations importantes concernant ce chantier directement par e-mail.

); } if (status === 'verifying') { return (

Vérification de l'e-mail

Un code à 6 chiffres a été envoyé à {email}. Saisissez-le ci-dessous pour confirmer votre inscription.

setVerifyCode(e.target.value.replace(/\D/g, '').slice(0, 6))} className="w-full border-2 border-slate-200 rounded-xl p-3 text-center text-3xl tracking-[0.25em] font-black outline-none focus:border-slate-800 mb-4" placeholder="000000" autoFocus />
setStatus('idle')} className="mt-4 text-xs font-bold text-slate-400 hover:text-slate-600 transition cursor-pointer inline-block"> Annuler / Modifier l'e-mail
); } return (

Rester informé

Inscrivez-vous à la newsletter du chantier pour recevoir les alertes importantes (coupures de route, livraisons exceptionnelles, etc.) directement dans votre boîte mail.

setEmail(e.target.value)} required disabled={submitting} placeholder="Votre adresse e-mail" className="w-full border-2 rounded-xl p-3 text-sm outline-none transition border-slate-200 focus:border-slate-800 disabled:opacity-50" />

Votre e-mail ne sera utilisé que pour les communications relatives à ce chantier. Vous pourrez vous désinscrire à tout moment.

); }; /* EOF ========== [_react/_riverains_newsletter.jsx] */