// 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 (
);
}
function Field({ label, value, onChange, type = 'text', textarea = false, placeholder = '', err = false }) {
const [focus, setFocus] = useStateF(false);
const Tag = textarea ? 'textarea' : 'input';
return (
{label}
setFocus(true)}
onBlur={() => setFocus(false)}
placeholder={placeholder}
rows={textarea ? 3 : undefined}
style={{
background: '#F4EEE2',
border: `1.5px solid ${err ? '#C46A5C' : focus ? '#14223D' : '#1B2A4E22'}`,
borderRadius: 12,
padding: '14px 16px',
fontSize: 14.5, color: '#14223D',
fontFamily: 'inherit',
outline: 'none',
resize: textarea ? 'vertical' : 'none',
transition: 'border .15s'
}} />
);
}
// ==========================================================
// FOOTER
// ==========================================================
function Footer({ accent = '#C9A961' }) {
return (
Entreprise de conseil en gestion pour dirigeants, indépendants, micro-entrepreneurs et TPE. Administratif, trésorerie, conformité.
{[
{ h: 'Services', items: ['Accompagnement administratif', 'Plan de trésorerie', 'Micro-entreprise', 'Facturation électronique'] },
{ h: 'Entreprise', items: ['Pourquoi MLS Conseil', 'Témoignages', 'Tarifs', 'Foire aux questions'] },
{ h: 'Contact', items: ['07 49 29 81 43', 'contact@mls-conseil.net', 'France & visio', 'Lun–Ven · 9h–18h'] }].
map((col, i) =>
{col.h}
{col.items.map((it, j) =>
{it}
)}
)}
© 2026 MLS Conseil ·
Mentions légales
Politique de confidentialité
CGV
);
}
// ==========================================================
// 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 (
setPicked(`${day.n}-${s}`)} style={{
background: active ? '#14223D' : 'transparent',
color: active ? '#F4EEE2' : '#14223D',
border: `1px solid ${active ? '#14223D' : '#1B2A4E22'}`,
borderRadius: 8, padding: '7px 0', fontSize: 12.5, fontWeight: 500,
cursor: 'pointer', textAlign: 'center'
}}>{s} );
})}
)}
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 });