// Final CTA form + footer + booking modal const { useState: useStateF } = React; function FormCTA({ accent = '#C9A961', onCTA }) { const [data, setData] = useStateF({ nom: '', prenom: '', entreprise: '', tel: '', email: '', besoin: '' }); const [sent, setSent] = useStateF(false); const [errors, setErrors] = useStateF({}); const update = (k) => (e) => setData((d) => ({ ...d, [k]: e.target.value })); const submit = (e) => { e.preventDefault(); const errs = {}; if (!data.nom.trim()) errs.nom = true; if (!data.prenom.trim()) errs.prenom = true; if (!data.email.trim() || !data.email.includes('@')) errs.email = true; if (!data.tel.trim()) errs.tel = true; if (Object.keys(errs).length) {setErrors(errs);return;} setErrors({}); // Open user's email client prefilled with the form payload. const subject = `Demande d'accompagnement — ${data.prenom} ${data.nom}`; const body = `Bonjour,\n\n` + `Je souhaite être recontacté(e) au sujet d'un accompagnement.\n\n` + `— Prénom : ${data.prenom}\n` + `— Nom : ${data.nom}\n` + `— Entreprise : ${data.entreprise || '—'}\n` + `— Téléphone : ${data.tel}\n` + `— Email : ${data.email}\n\n` + `Besoin :\n${data.besoin || '—'}\n\n` + `Envoyé depuis mls-conseil.net`; const mailto = `mailto:contact@mls-conseil.net?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`; window.location.href = mailto; setSent(true); }; return (
{/* decorative serif */}
MLS

Discutons de votre{' '} besoin.

Premier rendez-vous de 30 minutes, gratuit et sans engagement. Vous nous parlez de votre activité, on vous propose un cadre.

{[ { icon: 'phone', label: '07 49 29 81 43', sub: 'Lun–Ven · 9h–18h' }, { icon: 'mail', label: 'contact@mls-conseil.net', sub: 'Réponse sous 48h ouvrées' }, { icon: 'pin', label: 'France & visio', sub: 'France entière en distanciel' }]. map((c, i) =>
{c.icon === 'phone' && } {c.icon === 'mail' && } {c.icon === 'pin' && }
{c.label}
{c.sub}
)}
{sent ?

Merci, {data.prenom || 'à très vite'}.

Votre messagerie s'est ouverte avec un message pré-rempli pour contact@mls-conseil.net. Vérifiez les informations puis envoyez — réponse sous 48h ouvrées.

:
Vos données restent confidentielles · Aucune prospection externe
Demander un accompagnement
}
); } function Field({ label, value, onChange, type = 'text', textarea = false, placeholder = '', err = false }) { const [focus, setFocus] = useStateF(false); const Tag = textarea ? 'textarea' : 'input'; return ( ); } // ========================================================== // FOOTER // ========================================================== function Footer({ accent = '#C9A961' }) { return ( ); } // ========================================================== // BOOKING MODAL (RDV) // ========================================================== function BookingModal({ open, onClose, accent }) { const [step, setStep] = useStateF(0); const [picked, setPicked] = useStateF(null); if (!open) return null; const days = [ { d: 'Mar.', n: '12', m: 'mai', slots: ['09:30', '11:00', '14:00', '16:30'] }, { d: 'Mer.', n: '13', m: 'mai', slots: ['10:00', '11:30', '15:00'] }, { d: 'Jeu.', n: '14', m: 'mai', slots: ['09:00', '14:30', '17:00'] }, { d: 'Ven.', n: '15', m: 'mai', slots: ['10:30', '13:30', '16:00'] }]; return (
e.stopPropagation()} style={{ background: '#F4EEE2', borderRadius: 24, width: '100%', maxWidth: 720, padding: 36, boxShadow: '0 40px 80px -20px #00000077', animation: 'slideUp .3s cubic-bezier(.2,.8,.2,1)', position: 'relative' }}> {step === 0 && <>
Étape 1 · Créneau

Premier RDV de 30 minutes.

Visio ou téléphone, gratuit, sans engagement.

{days.map((day, i) =>
{day.d}
{day.n}
{day.m}
{day.slots.map((s) => { const active = picked === `${day.n}-${s}`; return ( ); })}
)}
Fuseau · Europe/Paris { if (!picked) return; const [day, time] = picked.split('-'); const subject = `Demande de RDV — ${day} mai à ${time}`; const body = `Bonjour,\n\n` + `Je souhaite réserver un premier rendez-vous de 30 minutes :\n\n` + `— Date : ${day} mai\n` + `— Heure : ${time} (Europe/Paris)\n` + `— Format souhaité : visio ou téléphone\n\n` + `Mes coordonnées :\n` + `— Prénom / Nom : \n` + `— Téléphone : \n` + `— Email : \n\n` + `Sujet (optionnel) :\n\n\n` + `Envoyé depuis mls-conseil.net`; window.location.href = `mailto:contact@mls-conseil.net?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`; setStep(1); }}>Confirmer le créneau
} {step === 1 && <>

Email pré-rempli ouvert.

Votre messagerie s'est ouverte avec une demande de RDV pré-remplie pour contact@mls-conseil.net. Complétez vos coordonnées puis envoyez — nous vous confirmons le créneau sous 48h ouvrées.

Fermer }
); } Object.assign(window, { FormCTA, Footer, BookingModal });