From 36d69fe2b4154215e1211834db6b636d98e2b5f2 Mon Sep 17 00:00:00 2001 From: Thomas Fransolet Date: Thu, 19 Feb 2026 17:32:08 +0100 Subject: [PATCH] Added form contact and send email via formspree --- src/app/page.tsx | 178 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 168 insertions(+), 10 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index dd6b79b..537f466 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,7 +1,52 @@ -import React from 'react'; +'use client'; + +import React, { useState } from 'react'; import { resolveImage } from '@/data/stitch-images'; export default function Home() { + const [formData, setFormData] = useState({ + firstName: '', + lastName: '', + email: '', + message: '' + }); + + const [status, setStatus] = useState<'idle' | 'loading' | 'success' | 'error'>('idle'); + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setStatus('loading'); + + try { + const response = await fetch("https://formspree.io/f/xbdaajlo", { + method: "POST", + headers: { + "Content-Type": "application/json", + "Accept": "application/json" + }, + body: JSON.stringify(formData) + }); + + if (response.ok) { + setStatus('success'); + setFormData({ firstName: '', lastName: '', email: '', message: '' }); + } else { + setStatus('error'); + } + } catch (error) { + setStatus('error'); + } + }; + + const handleChange = (e: React.ChangeEvent) => { + const { name, value } = e.target; + setFormData(prev => ({ ...prev, [name]: value })); + }; + + const scrollToContact = (e: React.MouseEvent) => { + e.preventDefault(); + document.getElementById('contact')?.scrollIntoView({ behavior: 'smooth' }); + }; return (
{/* Top Navigation */} @@ -28,7 +73,10 @@ export default function Home() { > Connexion - @@ -53,7 +101,10 @@ export default function Home() { Transformez l'expérience de vos visiteurs. Gérez vos parcours sur tablettes et mobiles en temps réel, sans aucune connaissance technique.

- @@ -233,7 +284,7 @@ export default function Home() { {/* White Label / Value Proposition */} -
+
@@ -272,22 +323,22 @@ export default function Home() {
-

White label

+

White label

Votre marque, votre application. Pas la nôtre.

Bénéficiez d'une solution White Label complète. Personnalisez l'interface aux couleurs de votre institution, utilisez votre propre logo et typographie pour une immersion totale de vos visiteurs dans votre univers.

  • - check_circle + check_circle Personnalisation complète des interfaces
  • - check_circle + check_circle Logo institutionnel sur l'écran d'accueil
  • - check_circle + check_circle Typographies et iconographies sur-mesure
@@ -301,7 +352,7 @@ export default function Home() {
{/* Target Audience */} -
+

Une solution pensée pour vous

@@ -348,7 +399,10 @@ export default function Home() { Rejoignez des dizaines d'institutions culturelles qui font confiance à MyInfoMate pour leur stratégie numérique.

-
+ + {/* Contact Form Section */} +
+
+
+ +
+
+
+

Contact & Démo

+

Prêt à commencer l'aventure ?

+

Remplissez ce formulaire et nous reviendrons vers vous pour une démo personnalisée.

+
+ + {status === 'success' ? ( +
+
+ task_alt +
+

Message envoyé !

+

Merci pour votre intérêt. Nous reviendrons vers vous très prochainement.

+ +
+ ) : ( +
+ {status === 'error' && ( +
+ error + Une erreur est survenue. Veuillez réessayer ou nous contacter directement par email. +
+ )} +
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+ +
+ )} +
+
+
{/* Footer */}