// Contact page with working form function ContactPage({ navigate }) { const [form, setForm] = React.useState({ name: '', email: '', company: '', message: '', projectType: '', budget: '' }); const [errors, setErrors] = React.useState({}); const [submitted, setSubmitted] = React.useState(false); const [submitting, setSubmitting] = React.useState(false); const types = ['Résidence privée', 'Réhabilitation', 'Commercial / hôtellerie', 'Culturel / civique', 'Intérieurs uniquement', 'Pas encore sûr·e']; const budgets = ['< 200k €', '200k – 1M €', '1M – 2M €', '2M+ €', 'Confidentiel']; const set = (k, v) => { setForm((f) => ({ ...f, [k]: v })); if (errors[k]) setErrors((e) => {const n = { ...e };delete n[k];return n;}); }; const validate = () => { const e = {}; if (!form.name.trim()) e.name = 'Merci d\'indiquer votre nom.'; if (!form.email.trim()) e.email = 'Il nous faut un email pour vous répondre.';else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(form.email)) e.email = 'Cet email semble incorrect.'; if (!form.message.trim() || form.message.trim().length < 12) e.message = 'Dites-nous-en un peu plus — même une seule phrase suffit.'; if (!form.projectType) e.projectType = 'Choisissez le type le plus proche.'; return e; }; const submit = async (ev) => { ev.preventDefault(); const e = validate(); if (Object.keys(e).length) {setErrors(e);return;} setSubmitting(true); setErrors({}); try { const res = await fetch('https://formsubmit.co/ajax/marilinebresle@gmail.com', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' }, body: JSON.stringify({ _subject: 'Nouveau message via le site Think Architecture', _template: 'table', _captcha: 'false', _replyto: form.email, Nom: form.name, Email: form.email, 'Projet / Surface': form.company, 'Type de projet': form.projectType, 'Budget estimé': form.budget, Message: form.message }) }); const data = await res.json().catch(() => ({})); if (res.ok && String(data.success) === 'true') { setSubmitting(false); setSubmitted(true); } else { throw new Error(data.message || 'Échec de l\'envoi'); } } catch (err) { setSubmitting(false); setErrors({ submit: 'L\'envoi a échoué. Réessayez, ou écrivez directement à marilinebresle@gmail.com.' }); } }; return (

Parlons de
votre projet.

Une première conversation est le dessin le plus important que nous ferons ensemble. Dites-nous un mot sur votre projet, votre calendrier et ce que vous imaginez — nous vous répondrons dans les plus bref délais.

Agence
Think Architecture
24 Rue Vimaine
38200 Vienne · France
Téléphone
Horaires
Lundi — Vendredi
09:00 — 18:00 CET
{/* === FORM === */}
{submitted ?
Merci, {form.name.split(' ')[0]}.
Votre message est bien arrivé à l'agence. Mariline ou un membre de l'équipe vous écrira à {form.email} dans les deux jours ouvrés.
:
set('name', e.target.value)} placeholder="M., Mme, SCI…" /> {errors.name && {errors.name}}
set('email', e.target.value)} placeholder="vous@email.fr" /> {errors.email && {errors.email}}
set('company', e.target.value)} placeholder="Maison à Sainte-Foy, Pharmacie de la Talaudière…" />
{types.map((t) => )}
{errors.projectType && {errors.projectType}}
{budgets.map((b) => )}