From 57d8ac7a2ef41b104ff8000ca8b11033898b4193 Mon Sep 17 00:00:00 2001 From: bender Date: Thu, 12 Mar 2026 11:58:56 +0000 Subject: [PATCH] Update src/app/page.tsx --- src/app/page.tsx | 261 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 219 insertions(+), 42 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index 20a9c6c..dd8f8ad 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -5,14 +5,21 @@ import NavbarStyleCentered from "@/components/navbar/NavbarStyleCentered/NavbarS import HeroSplitDualMedia from "@/components/sections/hero/HeroSplitDualMedia"; import ProductCardOne from "@/components/sections/product/ProductCardOne"; import FeatureCardSixteen from "@/components/sections/feature/FeatureCardSixteen"; -import TestimonialCardOne from "@/components/sections/testimonial/TestimonialCardOne"; +import TestimonialCardThirteen from "@/components/sections/testimonial/TestimonialCardThirteen"; import PricingCardNine from "@/components/sections/pricing/PricingCardNine"; import ContactText from "@/components/sections/contact/ContactText"; import FooterBaseCard from "@/components/sections/footer/FooterBaseCard"; import { Hammer, Wrench, CheckCircle, Camera, Star, Euro } from "lucide-react"; import Link from "next/link"; +import { useState } from "react"; export default function HomePage() { + const [reviewSubmitted, setReviewSubmitted] = useState(false); + const [reviewError, setReviewError] = useState(""); + const [formData, setFormData] = useState({ + name: "", role: "", company: "", rating: 5, + testimonial: ""}); + const navItems = [ { name: "Accueil", id: "home" }, { name: "Services", id: "services" }, @@ -55,6 +62,38 @@ export default function HomePage() { }, ]; + const handleInputChange = (e: React.ChangeEvent) => { + const { name, value } = e.target; + setFormData((prev) => ({ + ...prev, + [name]: name === "rating" ? parseInt(value) : value, + })); + }; + + const handleSubmitReview = (e: React.FormEvent) => { + e.preventDefault(); + setReviewError(""); + + if (!formData.name.trim() || !formData.testimonial.trim() || !formData.role.trim() || !formData.company.trim()) { + setReviewError("Tous les champs sont obligatoires."); + return; + } + + if (formData.testimonial.length < 10) { + setReviewError("Veuillez écrire au moins 10 caractères pour votre avis."); + return; + } + + setReviewSubmitted(true); + setFormData({ + name: "", role: "", company: "", rating: 5, + testimonial: ""}); + + setTimeout(() => { + setReviewSubmitted(false); + }, 5000); + }; + return (
-
- +
+
+ {/* Header Section */} +
+
+ + Témoignages +
+

Avis de Nos Clients

+

+ Partagez votre expérience avec Webild Construction. Vos avis nous aident à continuer à améliorer nos services. +

+
+ +
+ {/* Review Form */} +
+

Soumettre un Avis

+ + {reviewSubmitted ? ( +
+

✓ Merci pour votre avis!

+

Votre témoignage a été reçu avec succès. Nous l'examinerons avant de le publier.

+
+ ) : ( +
+ {reviewError && ( +
+

{reviewError}

+
+ )} + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ {[1, 2, 3, 4, 5].map((star) => ( + + ))} +
+
+ +
+ +