diff --git a/src/app/realizations/page.tsx b/src/app/realizations/page.tsx index ce8c275..06aca48 100644 --- a/src/app/realizations/page.tsx +++ b/src/app/realizations/page.tsx @@ -20,8 +20,7 @@ export default function RealizationsPage() { const footerColumns = [ { - title: "Entreprise", - items: [ + title: "Entreprise", items: [ { label: "À Propos", href: "/about" }, { label: "Services", href: "/services" }, { label: "Réalisations", href: "/realizations" }, @@ -29,8 +28,7 @@ export default function RealizationsPage() { ], }, { - title: "Services", - items: [ + title: "Services", items: [ { label: "Terrassement", href: "/services" }, { label: "Aménagement Extérieur", href: "/services" }, { label: "Béton Désactivé", href: "/services" }, @@ -38,8 +36,7 @@ export default function RealizationsPage() { ], }, { - title: "Contact", - items: [ + title: "Contact", items: [ { label: "Téléphone", href: "#" }, { label: "Email", href: "#" }, { label: "Annecy, Haute-Savoie", href: "#" }, @@ -69,9 +66,7 @@ export default function RealizationsPage() { id: item.id, }))} button={{ - text: "Devis Gratuit", - href: "/contact", - }} + text: "Devis Gratuit", href: "/contact"}} /> @@ -82,47 +77,17 @@ export default function RealizationsPage() { tag="Portfolio" products={[ { - id: "terrasse-01", - name: "Terrasse Béton Haut de Gamme", - price: "Annecy", - imageSrc: "http://img.b2bpic.net/free-photo/exterior-modern-buildings_1112-1995.jpg?_wi=3", - imageAlt: "Terrasse béton finition premium", - }, + id: "terrasse-01", name: "Terrasse Béton Haut de Gamme", price: "Annecy", imageSrc: "http://img.b2bpic.net/free-photo/exterior-modern-buildings_1112-1995.jpg", imageAlt: "Terrasse béton finition premium"}, { - id: "allees-01", - name: "Allées Pavées Accès Maison", - price: "Cran-Gevrier", - imageSrc: "http://img.b2bpic.net/free-photo/bike-ride-sunset_1137-245.jpg?_wi=3", - imageAlt: "Allées pavées professionnelles", - }, + id: "allees-01", name: "Allées Pavées Accès Maison", price: "Cran-Gevrier", imageSrc: "http://img.b2bpic.net/free-photo/bike-ride-sunset_1137-245.jpg", imageAlt: "Allées pavées professionnelles"}, { - id: "beton-01", - name: "Béton Désactivé Moderne", - price: "Meythet", - imageSrc: "http://img.b2bpic.net/free-photo/colorful-pebbles-surface_23-2148978398.jpg?_wi=3", - imageAlt: "Béton désactivé finition propre", - }, + id: "beton-01", name: "Béton Désactivé Moderne", price: "Meythet", imageSrc: "http://img.b2bpic.net/free-photo/colorful-pebbles-surface_23-2148978398.jpg", imageAlt: "Béton désactivé finition propre"}, { - id: "murets-01", - name: "Murets Maçonnerie Paysagère", - price: "Seynod", - imageSrc: "http://img.b2bpic.net/free-photo/high-angle-shot-empty-park-with-blooming-green-trees-walls_181624-19632.jpg?_wi=2", - imageAlt: "Murets de soutènement", - }, + id: "murets-01", name: "Murets Maçonnerie Paysagère", price: "Seynod", imageSrc: "http://img.b2bpic.net/free-photo/high-angle-shot-empty-park-with-blooming-green-trees-walls_181624-19632.jpg", imageAlt: "Murets de soutènement"}, { - id: "cours-01", - name: "Aménagement Complet Cour", - price: "Pringy", - imageSrc: "http://img.b2bpic.net/free-photo/long-corridor-showcase_1127-3442.jpg?_wi=2", - imageAlt: "Aménagement extérieur complet", - }, + id: "cours-01", name: "Aménagement Complet Cour", price: "Pringy", imageSrc: "http://img.b2bpic.net/free-photo/long-corridor-showcase_1127-3442.jpg", imageAlt: "Aménagement extérieur complet"}, { - id: "terrain-01", - name: "Préparation Terrain Extension", - price: "Annecy-le-Vieux", - imageSrc: "http://img.b2bpic.net/free-photo/construction-site-with-barrow-filled-with-tools_23-2148254079.jpg?_wi=2", - imageAlt: "Préparation terrain professionnelle", - }, + id: "terrain-01", name: "Préparation Terrain Extension", price: "Annecy-le-Vieux", imageSrc: "http://img.b2bpic.net/free-photo/construction-site-with-barrow-filled-with-tools_23-2148254079.jpg", imageAlt: "Préparation terrain professionnelle"}, ]} gridVariant="three-columns-all-equal-width" animationType="slide-up" @@ -137,26 +102,15 @@ export default function RealizationsPage() { tag="Performance" metrics={[ { - id: "1", - value: "5/5", - description: "Note moyenne Google reviews - Avis clients vérifiés et récents", - }, + id: "1", value: "5/5", description: "Note moyenne Google reviews - Avis clients vérifiés et récents"}, { - id: "2", - value: "+100", - description: "Projets réussis depuis 2021 - Terrasses, allées, aménagements", - }, + id: "2", value: "+100", description: "Projets réussis depuis 2021 - Terrasses, allées, aménagements"}, { - id: "3", - value: "2021", - description: "Création de l'entreprise - Expertise en croissance continue", - }, + id: "3", value: "2021", description: "Création de l'entreprise - Expertise en croissance continue"}, { - id: "4", - value: "Annecy", - description: "Base locale Haute-Savoie - Interventions région Annecy et alentours", - }, + id: "4", value: "Annecy", description: "Base locale Haute-Savoie - Interventions région Annecy et alentours"}, ]} + metricsAnimation="slide-up" useInvertedBackground={false} /> @@ -169,51 +123,27 @@ export default function RealizationsPage() { showRating={true} testimonials={[ { - id: "1", - name: "Marie Dubois", - handle: "@marie_d", - testimonial: "Travail exceptionnel sur notre terrasse béton. Équipe très professionnelle, chantier propre, et finitions impeccables. Vraiment satisfaits !", - rating: 5, + id: "1", name: "Marie Dubois", handle: "@marie_d", testimonial: "Travail exceptionnel sur notre terrasse béton. Équipe très professionnelle, chantier propre, et finitions impeccables. Vraiment satisfaits !", rating: 5, icon: User, }, { - id: "2", - name: "Jean-Paul Martin", - handle: "@jp_martin", - testimonial: "Excellente communication du début à la fin. Les délais ont été respectés, le travail est soigné. Je recommande vivement A2P.", - rating: 5, + id: "2", name: "Jean-Paul Martin", handle: "@jp_martin", testimonial: "Excellente communication du début à la fin. Les délais ont été respectés, le travail est soigné. Je recommande vivement A2P.", rating: 5, icon: User, }, { - id: "3", - name: "Sophie Laurent", - handle: "@sophie_l", - testimonial: "Équipe sympathique et très compétente. Nos allées pavées sont magnifiques. Merci pour les bons conseils tout au long du projet !", - rating: 5, + id: "3", name: "Sophie Laurent", handle: "@sophie_l", testimonial: "Équipe sympathique et très compétente. Nos allées pavées sont magnifiques. Merci pour les bons conseils tout au long du projet !", rating: 5, icon: User, }, { - id: "4", - name: "Michel Arnould", - handle: "@m_arnould", - testimonial: "Entreprise sérieuse et à taille humaine. Le béton désactivé est parfait. Personnel courtois et professionnel. Hautement recommandé.", - rating: 5, + id: "4", name: "Michel Arnould", handle: "@m_arnould", testimonial: "Entreprise sérieuse et à taille humaine. Le béton désactivé est parfait. Personnel courtois et professionnel. Hautement recommandé.", rating: 5, icon: User, }, { - id: "5", - name: "Valérie Rousseau", - handle: "@val_rousseau", - testimonial: "Impressionnée par la qualité du travail et la propreté du chantier. Équipe ponctuelle et efficace. A2P, c'est du sérieux !", - rating: 5, + id: "5", name: "Valérie Rousseau", handle: "@val_rousseau", testimonial: "Impressionnée par la qualité du travail et la propreté du chantier. Équipe ponctuelle et efficace. A2P, c'est du sérieux !", rating: 5, icon: User, }, { - id: "6", - name: "Philippe Gillet", - handle: "@p_gillet", - testimonial: "Devis détaillé, conseils de qualité, et exécution impeccable. Notre cours est transformée. Merci pour cette belle réalisation !", - rating: 5, + id: "6", name: "Philippe Gillet", handle: "@p_gillet", testimonial: "Devis détaillé, conseils de qualité, et exécution impeccable. Notre cours est transformée. Merci pour cette belle réalisation !", rating: 5, icon: User, }, ]} diff --git a/src/components/shared/SvgTextLogo/SvgTextLogo.tsx b/src/components/shared/SvgTextLogo/SvgTextLogo.tsx index f214190..7200db1 100644 --- a/src/components/shared/SvgTextLogo/SvgTextLogo.tsx +++ b/src/components/shared/SvgTextLogo/SvgTextLogo.tsx @@ -1,51 +1,50 @@ -"use client"; - -import { memo } from "react"; -import useSvgTextLogo from "./useSvgTextLogo"; -import { cls } from "@/lib/utils"; +import React from 'react'; interface SvgTextLogoProps { - logoText: string; - adjustHeightFactor?: number; - verticalAlign?: "top" | "center"; + text: string; className?: string; + textClassName?: string; + fontSize?: number; + fontWeight?: number | string; + fontFamily?: string; + fill?: string; } -const SvgTextLogo = memo(function SvgTextLogo({ - logoText, - adjustHeightFactor, - verticalAlign = "top", - className = "", -}) { - const { svgRef, textRef, viewBox, aspectRatio } = useSvgTextLogo(logoText, false, adjustHeightFactor); +const SvgTextLogo: React.FC = ({ + text, + className = '', + textClassName = '', + fontSize = 24, + fontWeight = 'bold', + fontFamily = 'system-ui, -apple-system, sans-serif', + fill = 'currentColor', +}) => { + const estimatedWidth = text.length * (fontSize as number) * 0.6; + const estimatedHeight = (fontSize as number) * 1.2; return ( - {logoText} + {text} ); -}); +}; -SvgTextLogo.displayName = "SvgTextLogo"; - -export default SvgTextLogo; +export default SvgTextLogo; \ No newline at end of file