import type { Metadata } from "next"; import Link from "next/link"; import Navbar from "@/components/marketing/Navbar"; import Footer from "@/components/marketing/Footer"; import ScrollReveal from "@/components/animations/ScrollReveal"; import ContactForm from "@/components/marketing/ContactForm"; import { getSiteConfig, getServices, getTestimonials, getFAQ, getValues, getPartners, getRealisations, } from "@/lib/content"; import type { Service, Testimonial, FAQItem } from "@/types/content"; export async function generateMetadata(): Promise { const config = await getSiteConfig(); return { title: config.seo.title, description: config.seo.description, alternates: { canonical: config.url }, }; } /* ── Arrow SVG ── */ function Arrow({ className = "w-4 h-4" }: { className?: string }) { return ( ); } /* ── Service card — dark bg editorial ── */ function ServiceCard({ service, index }: { service: Service; index: number }) { const href = service.slug === "conseil" ? "/contact" : `/${service.slug}`; return (
{service.icon}

{service.title}

{service.shortDescription}

Découvrir ); } /* ── Testimonial card ── */ function TestimonialCard({ t }: { t: Testimonial }) { const serviceLabel: Record = { "construction-maison": "Construction", renovation: "Rénovation", assainissement: "Assainissement", "creation-acces": "Création d'accès", demolition: "Démolition", }; return (
{Array.from({ length: 5 }).map((_, i) => ( ))}

“{t.text}”

{t.name}

{t.ville} — {serviceLabel[t.service] ?? t.service}

); } /* ── FAQ item ── */ function FAQItem({ item }: { item: FAQItem }) { return (
{item.question}
{item.answer}
); } /* ══════════════════════════════════════════════════ PAGE PRINCIPALE ══════════════════════════════════════════════════ */ export default async function HomePage() { const [config, services, testimonials, faqItems, values, partners, realisations] = await Promise.all([ getSiteConfig(), getServices(), getTestimonials(), getFAQ(), getValues(), getPartners(), getRealisations(), ]); const { hero, zones, zoneDescription, phone, phoneRaw } = config; return (
{/* ══ 1 — HERO ══ */}
{/* Panneaux décoratifs diagonaux */}
{/* Contenu gauche */}
{hero.badge}

Maçon
&
Constructeur

{hero.subtitle}

{hero.cta} {phone}
{/* Stats */}
{hero.stats.map((s) => (
{s.val}
{s.label}
))}
{/* Panneau droit — stats éditoriales sur fond diagonal */}
{values.slice(0, 3).map((v, i) => (
{v.icon}

{v.title}

{v.description}

))}
{/* ══ 2 — NOS SERVICES (dark editorial) ══ */}
Nos savoir-faire

Nos
services

Tous les services
{services.map((s, i) => ( ))}
{/* ══ 3 — BANDE CTA ══ */}

Devis gratuit — Réponse sous 24h

Votre projet mérite
un artisan de confiance

Obtenir mon devis gratuit Appeler Benoît — {phone}
{/* ══ 4 — RÉALISATIONS ══ */}
Nos chantiers

Réalisations

Voir tout
{realisations.map((r, i) => { const bgColors = ["bg-navy", "bg-stone", "bg-navy-light", "bg-stone", "bg-navy", "bg-navy-light"]; return (
{/* Fond placeholder */}
0{i + 1}
{/* Ligne orange bas (repos) */}
{/* Infos au repos */}
{r.ville}

{r.title}

{/* Overlay hover — slide from bottom */}
{r.ville}

{r.title}

{r.description}

); })}
{/* ══ 5 — TÉMOIGNAGES (dark) ══ */}
Ce qu'ils en disent

Clients
satisfaits

{testimonials.map((t, i) => ( ))}
{/* ══ 6 — ZONE D'INTERVENTION ══ */}
Secteur d'activité

On intervient
dans tout le Nord

OBC Maçonnerie rayonne sur {zoneDescription} autour de Mouchin — de Douai à Valenciennes, Orchies et Saint-Amand-les-Eaux.

Vérifier ma commune
{zones.map((v, i) => ( {v} ))} + communes voisines
{/* ══ 7 — PARTENAIRES ══ */}
Un réseau solide

Nos partenaires

Découvrir le réseau
{partners.map((p, i) => (
{p.icon}
{p.label}
))}
{/* ══ 8 — FAQ ══ */}
Questions fréquentes

On répond
à vos questions

Pas de réponse à votre question ? Appelez directement Benoît au{" "} {phone}.

Poser ma question
{faqItems.map((f) => ( ))}
{/* ══ 9 — CONTACT SPLIT ══ */}
{/* Gauche — dark info */}
Contactez-nous

Parlons de
votre projet

Téléphone

{phone}

Siège

{config.address}

Délai de réponse

Sous 24h — Du lundi au samedi

{/* Garanties */}
{[ { val: "Gratuit", label: "Devis" }, { val: "24h", label: "Réponse" }, { val: "10+", label: "Ans d'expérience" }, { val: "100%", label: "Satisfaction" }, ].map((s) => (
{s.val}
{s.label}
))}
{/* Droite — formulaire */}
Devis gratuit

Votre demande

); }