refactor: rewrite all homepage text content for clearer artisan messaging

- Hero: new H1 "Votre savoir-faire mérite d'être vu", updated subtitle and CTA to "Diagnostic Gratuit"
- Navbar: rename menu items to "Notre Méthode" and "Exemples"
- Problematique: rewrite pain points (temps perdu, invisibilité, complexité) + engagement block
- System: replace tech features with 3-step method (Trouve, Choisit, Contacte)
- DemosLive: simplify demo cards with concise descriptions per trade model
- AboutMe: replace stats with bullet points (interlocuteur unique, 100% géré, pas de surprise)
- FAQ: reduce to 3 focused questions (informatique, Facebook, coût)
- Contact: update CTA title to "sécuriser votre carnet de commandes"
- Footer: update tagline, remove plan du site link, trim intervention zone

https://claude.ai/code/session_01V8YAjpqRQ3bfBYsABYsEgo
This commit is contained in:
Claude
2026-02-18 06:23:30 +00:00
parent c62998d0c2
commit e1bade3656
9 changed files with 110 additions and 166 deletions

View File

@@ -1,7 +1,6 @@
"use client"; "use client";
import ScrollReveal from "@/components/animations/ScrollReveal"; import ScrollReveal from "@/components/animations/ScrollReveal";
import AnimatedCounter from "@/components/animations/AnimatedCounter";
interface AboutMeProps { interface AboutMeProps {
images?: Record<string, string>; images?: Record<string, string>;
@@ -19,25 +18,6 @@ export default function AboutMe({ images }: AboutMeProps) {
</div> </div>
<div className="relative max-w-6xl mx-auto px-4 sm:px-6 lg:px-8"> <div className="relative max-w-6xl mx-auto px-4 sm:px-6 lg:px-8">
{/* Stats top row */}
<ScrollReveal direction="up">
<div className="grid grid-cols-2 md:grid-cols-4 gap-6 mb-14">
{[
{ value: 100, suffix: "%", label: "Local Nord" },
{ value: 24, suffix: "h", label: "Délai de réponse" },
{ value: 0, suffix: "€", label: "L'audit" },
{ value: 3, suffix: "", label: "Piliers du système" },
].map((stat, i) => (
<div key={i} className="text-center">
<p className="text-3xl md:text-4xl font-extrabold text-white">
<AnimatedCounter end={stat.value} suffix={stat.suffix} />
</p>
<p className="text-white/70 text-sm font-medium mt-1">{stat.label}</p>
</div>
))}
</div>
</ScrollReveal>
{/* Content */} {/* Content */}
<div className="grid grid-cols-1 md:grid-cols-2 gap-12 items-center"> <div className="grid grid-cols-1 md:grid-cols-2 gap-12 items-center">
{/* Photo */} {/* Photo */}
@@ -63,7 +43,7 @@ export default function AboutMe({ images }: AboutMeProps) {
)} )}
</div> </div>
<div className="absolute -bottom-3 left-1/2 -translate-x-1/2 bg-navy text-white text-xs font-bold px-4 py-2 rounded-full shadow-lg whitespace-nowrap"> <div className="absolute -bottom-3 left-1/2 -translate-x-1/2 bg-navy text-white text-xs font-bold px-4 py-2 rounded-full shadow-lg whitespace-nowrap">
Basé à Flines-lez-Raches Bas&eacute; &agrave; Flines-lez-Raches
</div> </div>
</div> </div>
</div> </div>
@@ -76,27 +56,34 @@ export default function AboutMe({ images }: AboutMeProps) {
Votre expert local Votre expert local
</span> </span>
<h2 className="text-2xl md:text-3xl lg:text-4xl font-bold text-white tracking-[-0.02em] mb-4"> <h2 className="text-2xl md:text-3xl lg:text-4xl font-bold text-white tracking-[-0.02em] mb-4">
Pas une plateforme anonyme.{" "} Enguerrand Ozano.{" "}
<span className="text-navy">Un voisin.</span> <span className="text-navy">Votre voisin &agrave; Flines-lez-Raches.</span>
</h2> </h2>
<p className="text-white/90 text-base leading-relaxed mb-4"> <p className="text-white/90 text-base leading-relaxed mb-6">
Je suis <strong className="text-white">Enguerrand</strong>, spécialisé dans la Oubliez les plateformes t&eacute;l&eacute;phoniques &agrave; l&rsquo;autre bout du monde.
visibilité locale et la construction de{" "} Je suis ici, dans le Nord (59). Je connais la r&eacute;alit&eacute; de vos m&eacute;tiers
<strong className="text-white">systèmes de confiance en ligne</strong>{" "} et vos contraintes g&eacute;ographiques.
pour les artisans du Nord.
</p>
<p className="text-white/80 text-base leading-relaxed mb-4">
Je ne suis pas un call center parisien. Je connais la réalité de vos
chantiers à Douai, Orchies ou Valenciennes. Je sais que vous n&rsquo;avez pas
le temps de gérer &ldquo;un truc internet&rdquo; et que vous voulez des résultats
concrets : des appels de <strong className="text-white">vrais</strong> clients.
</p>
<p className="text-white/80 text-base leading-relaxed mb-6">
Mon approche : je vous construis un <strong className="text-white">système complet</strong>{" "}
(Google + Facebook + Site) qui transforme votre bouche-à-oreille en système
permanent. Pas de jargon, pas de blabla &mdash; du concret.
</p> </p>
<ul className="space-y-4 mb-6">
{[
{ strong: "Un interlocuteur unique", text: "C\u2019est moi qui g\u00e8re votre dossier du d\u00e9but \u00e0 la fin." },
{ strong: "100% G\u00e9r\u00e9 pour vous", text: "Une fois le site lanc\u00e9, vous n\u2019avez rien \u00e0 faire. Si vous avez une nouvelle photo de chantier, vous me l\u2019envoyez, je la mets en ligne." },
{ strong: "Pas de mauvaise surprise", text: "Tout est clair d\u00e8s le d\u00e9part." },
].map((item, i) => (
<li key={i} className="flex items-start gap-3">
<div className="w-5 h-5 bg-white/20 rounded-full flex items-center justify-center shrink-0 mt-0.5">
<svg className="w-3 h-3 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={3} d="M5 13l4 4L19 7" />
</svg>
</div>
<p className="text-white/80 text-base leading-relaxed">
<strong className="text-white">{item.strong}&nbsp;:</strong> {item.text}
</p>
</li>
))}
</ul>
<a <a
href="#contact" href="#contact"
className="inline-flex items-center gap-2 bg-navy hover:bg-navy-light text-white font-bold text-sm px-6 py-3 rounded-xl transition-colors" className="inline-flex items-center gap-2 bg-navy hover:bg-navy-light text-white font-bold text-sm px-6 py-3 rounded-xl transition-colors"

View File

@@ -23,12 +23,11 @@ export default function Contact() {
Audit gratuit Audit gratuit
</span> </span>
<h2 className="text-2xl md:text-3xl lg:text-4xl font-bold text-white tracking-[-0.02em] mb-4"> <h2 className="text-2xl md:text-3xl lg:text-4xl font-bold text-white tracking-[-0.02em] mb-4">
Prêt à arrêter de courir après les chantiers ? Pr&ecirc;t &agrave; s&eacute;curiser votre carnet de commandes&nbsp;?
</h2> </h2>
<p className="text-white/70 text-base leading-relaxed mb-6"> <p className="text-white/70 text-base leading-relaxed mb-6">
Réservez votre audit gratuit. Je regarde votre situation Google, Je regarde votre situation actuelle sur internet (gratuitement)
votre visibilité actuelle, et je vous dis concrètement ce et je vous dis honn&ecirc;tement ce qu&rsquo;on peut am&eacute;liorer.
qu&rsquo;on peut améliorer. Sans engagement, sans jargon.
</p> </p>
<ul className="space-y-3"> <ul className="space-y-3">
@@ -124,7 +123,7 @@ export default function Contact() {
/> />
</div> </div>
<Button type="submit" size="lg" className="w-full"> <Button type="submit" size="lg" className="w-full">
Réserver mon Audit Gratuit R&Eacute;SERVER MON AUDIT GRATUIT
</Button> </Button>
<p className="text-text-muted text-xs text-center"> <p className="text-text-muted text-xs text-center">
Gratuit &middot; Sans engagement &middot; Réponse sous 24h Gratuit &middot; Sans engagement &middot; Réponse sous 24h

View File

@@ -6,12 +6,10 @@ import ScrollReveal from "@/components/animations/ScrollReveal";
const demos = [ const demos = [
{ {
title: "L\u2019Expertise Solide", title: "Le Mod\u00e8le \u00ab\u00a0Gros \u0152uvre\u00a0\u00bb",
subtitle: "Pour ceux dont le travail doit durer 100 ans.", subtitle: "Ma\u00e7ons, Couvreurs",
pourQui: "Maçons, Couvreurs, Charpentiers.", description: "Id\u00e9al pour montrer la technique. Un site qui met en avant vos photos \u00ab\u00a0Avant / Apr\u00e8s\u00a0\u00bb pour prouver la qualit\u00e9 de vos finitions.",
pointFort: "Slider «\u00a0Avant / Après\u00a0» interactif + badges garanties (Décennale, Qualibat, RGE) immanquables.", cta: "Voir un exemple Ma\u00e7onnerie",
fonctionnalite: "Formulaire intelligent : si Urgence Fuite \u2192 bouton rouge «\u00a0APPELER LE PATRON\u00a0».",
cta: "Voir la Démo Maçonnerie",
href: "/macon", href: "/macon",
icon: ( icon: (
<svg className="w-10 h-10" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <svg className="w-10 h-10" fill="none" stroke="currentColor" viewBox="0 0 24 24">
@@ -20,12 +18,10 @@ const demos = [
), ),
}, },
{ {
title: "L\u2019Artisan Créateur", title: "Le Mod\u00e8le \u00ab\u00a0Cr\u00e9ation\u00a0\u00bb",
subtitle: "Pour ceux qui vendent du beau et du confort.", subtitle: "Paysagistes, Peintres",
pourQui: "Paysagistes, Peintres, Décorateurs.", description: "Id\u00e9al pour vendre du r\u00eave. Un design \u00e9pur\u00e9 qui laisse toute la place \u00e0 la beaut\u00e9 de vos r\u00e9alisations.",
pointFort: "Galerie filtrable par type + saisonnalité intelligente (le site change selon la saison).", cta: "Voir un exemple Paysagiste",
fonctionnalite: "Bouton WhatsApp flottant «\u00a0Je veux le même jardin\u00a0» + immersion locale par ville.",
cta: "Voir la Démo Paysagiste",
href: "/paysagiste", href: "/paysagiste",
icon: ( icon: (
<svg className="w-10 h-10" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <svg className="w-10 h-10" fill="none" stroke="currentColor" viewBox="0 0 24 24">
@@ -34,12 +30,10 @@ const demos = [
), ),
}, },
{ {
title: "L\u2019Intervention Éclair", title: "Le Mod\u00e8le \u00ab\u00a0Intervention\u00a0\u00bb",
subtitle: "Pour ceux qui sauvent la mise (et veulent être payés vite).", subtitle: "Plombiers, \u00c9lectriciens",
pourQui: "Plombiers, Électriciens, Serruriers.", description: "Id\u00e9al pour l\u2019urgence. Un site ultra-rapide avec votre num\u00e9ro de t\u00e9l\u00e9phone bien visible pour \u00eatre appel\u00e9 en un clic.",
pointFort: "Avis Google en haut + tarifs transparents + bouton d\u2019appel sticky sur mobile.", cta: "Voir un exemple Plombier",
fonctionnalite: "Diagnostic en 3 clics : qualifie la panne + détecte si hors zone.",
cta: "Voir la Démo Plombier",
href: "/plombier", href: "/plombier",
icon: ( icon: (
<svg className="w-10 h-10" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <svg className="w-10 h-10" fill="none" stroke="currentColor" viewBox="0 0 24 24">
@@ -55,21 +49,20 @@ interface DemosLiveProps {
export default function DemosLive(_props: DemosLiveProps) { export default function DemosLive(_props: DemosLiveProps) {
return ( return (
<section id="demos" className="py-16 md:py-24 bg-bg" aria-label="Démos live"> <section id="exemples" className="py-16 md:py-24 bg-bg" aria-label="Exemples">
<div className="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8"> <div className="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8">
<ScrollReveal direction="up"> <ScrollReveal direction="up">
<div className="text-center mb-14"> <div className="text-center mb-14">
<span className="inline-block px-3 py-1.5 bg-orange/10 border border-orange/20 rounded-full text-orange text-xs font-semibold mb-4"> <span className="inline-block px-3 py-1.5 bg-orange/10 border border-orange/20 rounded-full text-orange text-xs font-semibold mb-4">
Démos Live Exemples
</span> </span>
<h2 className="text-2xl md:text-3xl lg:text-4xl font-bold text-navy tracking-[-0.02em] mb-3"> <h2 className="text-2xl md:text-3xl lg:text-4xl font-bold text-navy tracking-[-0.02em] mb-3">
Ne signez pas sans voir.{" "} Ne signez pas les yeux ferm&eacute;s.{" "}
<span className="text-orange">Testez votre futur site maintenant.</span> <span className="text-orange">Regardez ce que je peux faire pour vous.</span>
</h2> </h2>
<p className="text-text-light text-base md:text-lg max-w-2xl mx-auto"> <p className="text-text-light text-base md:text-lg max-w-2xl mx-auto">
Je ne vous demande pas de me croire sur parole. J&rsquo;ai construit 3 modèles Je ne vous demande pas de me croire sur parole. J&rsquo;ai pr&eacute;par&eacute; des mod&egrave;les
de «&nbsp;Dossiers de Confiance&nbsp;» optimisés pour vos métiers. adapt&eacute;s &agrave; votre m&eacute;tier. Cliquez et imaginez votre logo &agrave; la place.
Cliquez, naviguez, et imaginez votre logo à la place.
</p> </p>
</div> </div>
</ScrollReveal> </ScrollReveal>
@@ -89,19 +82,8 @@ export default function DemosLive(_props: DemosLiveProps) {
{/* Content */} {/* Content */}
<div className="p-5 flex-1 flex flex-col"> <div className="p-5 flex-1 flex flex-col">
<div className="space-y-3 flex-1"> <div className="flex-1">
<div> <p className="text-text-light text-sm leading-relaxed">{demo.description}</p>
<p className="text-navy font-semibold text-xs uppercase tracking-wider mb-1">Pour qui ?</p>
<p className="text-text-light text-sm">{demo.pourQui}</p>
</div>
<div>
<p className="text-navy font-semibold text-xs uppercase tracking-wider mb-1">Le point fort</p>
<p className="text-text-light text-sm">{demo.pointFort}</p>
</div>
<div>
<p className="text-navy font-semibold text-xs uppercase tracking-wider mb-1">Fonctionnalité clé</p>
<p className="text-text-light text-sm">{demo.fonctionnalite}</p>
</div>
</div> </div>
{/* CTA */} {/* CTA */}

View File

@@ -5,28 +5,16 @@ import ScrollReveal from "@/components/animations/ScrollReveal";
const faqs = [ const faqs = [
{ {
q: "J\u2019ai déjà une page Facebook, ça suffit non\u00a0?", q: "Je n\u2019y connais rien en informatique, est-ce un probl\u00e8me\u00a0?",
a: "Facebook, c\u2019est pour les amis. Google, c\u2019est pour les clients qui ont un carnet de chèques et une urgence. Un site professionnel inspire 56% plus de confiance qu\u2019une simple page sociale.", a: "Absolument pas. C\u2019est mon travail. Vous continuez \u00e0 g\u00e9rer vos chantiers, je m\u2019occupe de tout ce qui est technique (s\u00e9curit\u00e9, mise en ligne, affichage sur mobile).",
}, },
{ {
q: "Est-ce que je pourrai changer mes photos moi-même\u00a0?", q: "J\u2019ai d\u00e9j\u00e0 une page Facebook, \u00e7a suffit non\u00a0?",
a: "Oui. Vous avez un panneau d'administration simple et intuitif. Collez un lien d'image, cliquez sur Sauver, et le site se met à jour tout seul. Aussi simple qu'envoyer un SMS.", a: "Facebook est utile, mais ce n\u2019est pas \u00e0 vous. Un site internet est votre propri\u00e9t\u00e9 et inspire beaucoup plus confiance pour signer des devis importants. C\u2019est la diff\u00e9rence entre un bricoleur et une entreprise \u00e9tablie.",
}, },
{ {
q: "C\u2019est quoi la différence avec un site gratuit\u00a0?", q: "Combien \u00e7a co\u00fbte\u00a0?",
a: "Un site gratuit, c\u2019est comme construire une maison sans fondations. Ça ne tient pas, Google ne le voit pas, et ça fait fuir les gros chantiers. Je vous construis un actif numérique durable.", a: "Chaque artisan a des besoins diff\u00e9rents. Je propose des forfaits clairs et adapt\u00e9s aux TPE. Pas de frais cach\u00e9s. Nous en parlerons de vive voix lors de l\u2019audit.",
},
{
q: "Combien coûte un site avec HookLab\u00a0?",
a: "Chaque projet est différent. Je propose un audit gratuit pour comprendre votre situation et vous faire une proposition adaptée à votre activité. Pas d\u2019abonnement caché, pas de surprise.",
},
{
q: "Combien de temps pour avoir des résultats\u00a0?",
a: "Le site est en ligne en 2-3 semaines. Les premiers résultats Google arrivent en 4 à 8 semaines selon votre zone et votre métier. Mais le site commence à travailler pour vous dès le jour 1.",
},
{
q: "J\u2019y connais rien en informatique, c\u2019est un problème\u00a0?",
a: "C\u2019est justement mon métier. Je m\u2019occupe de tout\u00a0: création, mise en ligne, référencement. Vous, vous continuez vos chantiers. Et si vous voulez modifier quelque chose, un simple message suffit.",
}, },
]; ];

View File

@@ -20,7 +20,7 @@ export default function Footer() {
</span> </span>
</Link> </Link>
<p className="text-text-light text-sm leading-relaxed max-w-xs"> <p className="text-text-light text-sm leading-relaxed max-w-xs">
Création de sites pour le Bâtiment et l&rsquo;Artisanat. Cr&eacute;ation de sites internet pour artisans.
</p> </p>
<p className="text-text-muted text-xs mt-3"> <p className="text-text-muted text-xs mt-3">
59148 Flines-lez-Raches 59148 Flines-lez-Raches
@@ -54,11 +54,6 @@ export default function Footer() {
Politique de Confidentialité Politique de Confidentialité
</Link> </Link>
</li> </li>
<li>
<Link href="/plan-du-site" className="text-text-light hover:text-navy text-sm transition-colors">
Plan du site
</Link>
</li>
</ul> </ul>
</div> </div>
</div> </div>
@@ -70,7 +65,7 @@ export default function Footer() {
&copy; {new Date().getFullYear()} HookLab &mdash; Enguerrand Ozano &middot; SIREN 994 538 932 &copy; {new Date().getFullYear()} HookLab &mdash; Enguerrand Ozano &middot; SIREN 994 538 932
</p> </p>
<p className="text-text-muted text-xs text-center md:text-right"> <p className="text-text-muted text-xs text-center md:text-right">
Intervention : Douai &middot; Orchies &middot; Arleux &middot; Valenciennes &middot; Saint-Amand-les-Eaux Intervention : Douai &middot; Orchies &middot; Arleux &middot; Valenciennes
</p> </p>
</div> </div>
</div> </div>

View File

@@ -45,40 +45,35 @@ export default function Hero({ images }: HeroProps) {
Artisans du Nord : Artisans du Nord :
</span> </span>
<span className="block animate-hero-text-2"> <span className="block animate-hero-text-2">
Transformez votre Votre savoir-faire
</span>
<span className="block animate-hero-text-2">
bouche-à-oreille en{" "}
</span> </span>
<span className="block text-orange animate-hero-text-3 relative"> <span className="block text-orange animate-hero-text-3 relative">
machine à chantiers. m&eacute;rite d&rsquo;&ecirc;tre vu.
<span className="absolute -bottom-2 left-0 h-1 bg-orange/40 rounded-full animate-underline-grow" /> <span className="absolute -bottom-2 left-0 h-1 bg-orange/40 rounded-full animate-underline-grow" />
</span> </span>
</h1> </h1>
<p className="text-white/65 text-lg sm:text-xl leading-relaxed mb-10 max-w-xl animate-fade-in-up animation-delay-600"> <p className="text-white/65 text-lg sm:text-xl leading-relaxed mb-10 max-w-xl animate-fade-in-up animation-delay-600">
Avis Google + Facebook + Site pro : le triptyque qui fait que vos Vous construisez du solide sur vos chantiers. Je construis votre r&eacute;putation solide sur internet.
futurs clients vous appellent <strong className="text-white/90">vous</strong>, et pas votre concurrent. Bas&eacute; &agrave; Flines-lez-Raches, j&rsquo;aide les professionnels du b&acirc;timent de Douai, Orchies
et Valenciennes &agrave; &ecirc;tre trouv&eacute;s et choisis par les bons clients.
</p> </p>
<div className="flex flex-col sm:flex-row gap-4 animate-fade-in-up animation-delay-800"> <div className="flex flex-col sm:flex-row gap-4 animate-fade-in-up animation-delay-800">
<a href="#contact"> <a href="#contact">
<Button size="lg" className="w-full sm:w-auto pulse-glow text-base group"> <Button size="lg" className="w-full sm:w-auto pulse-glow text-base group">
<span className="flex items-center gap-2"> <span className="flex items-center gap-2">
DÉMARRER MON AUDIT GRATUIT D&Eacute;MARRER MON DIAGNOSTIC GRATUIT
<svg className="w-5 h-5 transition-transform group-hover:translate-x-1" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <svg className="w-5 h-5 transition-transform group-hover:translate-x-1" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M17 8l4 4m0 0l-4 4m4-4H3" /> <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M17 8l4 4m0 0l-4 4m4-4H3" />
</svg> </svg>
</span> </span>
</Button> </Button>
</a> </a>
<a
href="#process"
className="inline-flex items-center justify-center gap-2 px-6 py-3.5 border border-white/20 text-white font-semibold text-sm rounded-xl hover:bg-white/10 hover:border-white/30 transition-all duration-300"
>
Comment ça marche ?
</a>
</div> </div>
<p className="text-white/40 text-xs mt-3 animate-fade-in-up animation-delay-800">
Sans engagement. R&eacute;ponse sous 24h.
</p>
<div className="mt-8 flex flex-wrap items-center gap-6 animate-fade-in-up animation-delay-1000"> <div className="mt-8 flex flex-wrap items-center gap-6 animate-fade-in-up animation-delay-1000">
{["Réponse sous 24h", "100% Géré pour vous", "Pas de jargon"].map((t) => ( {["Réponse sous 24h", "100% Géré pour vous", "Pas de jargon"].map((t) => (

View File

@@ -22,11 +22,11 @@ export default function Navbar() {
{/* Desktop links */} {/* Desktop links */}
<div className="hidden md:flex items-center gap-8"> <div className="hidden md:flex items-center gap-8">
<a href="#systeme" className="text-text-light hover:text-navy text-sm font-medium transition-colors"> <a href="#methode" className="text-text-light hover:text-navy text-sm font-medium transition-colors">
Le Syst&egrave;me Notre M&eacute;thode
</a> </a>
<a href="#demos" className="text-text-light hover:text-navy text-sm font-medium transition-colors"> <a href="#exemples" className="text-text-light hover:text-navy text-sm font-medium transition-colors">
R&eacute;alisations Exemples
</a> </a>
<a href="#qui-suis-je" className="text-text-light hover:text-navy text-sm font-medium transition-colors"> <a href="#qui-suis-je" className="text-text-light hover:text-navy text-sm font-medium transition-colors">
Qui suis-je Qui suis-je
@@ -68,11 +68,11 @@ export default function Navbar() {
{/* Mobile menu */} {/* Mobile menu */}
{open && ( {open && (
<div className="md:hidden border-t border-border py-4 space-y-3"> <div className="md:hidden border-t border-border py-4 space-y-3">
<a href="#systeme" onClick={() => setOpen(false)} className="block text-text-light hover:text-navy text-sm font-medium py-2 transition-colors"> <a href="#methode" onClick={() => setOpen(false)} className="block text-text-light hover:text-navy text-sm font-medium py-2 transition-colors">
Le Syst&egrave;me Notre M&eacute;thode
</a> </a>
<a href="#demos" onClick={() => setOpen(false)} className="block text-text-light hover:text-navy text-sm font-medium py-2 transition-colors"> <a href="#exemples" onClick={() => setOpen(false)} className="block text-text-light hover:text-navy text-sm font-medium py-2 transition-colors">
R&eacute;alisations Exemples
</a> </a>
<a href="#qui-suis-je" onClick={() => setOpen(false)} className="block text-text-light hover:text-navy text-sm font-medium py-2 transition-colors"> <a href="#qui-suis-je" onClick={() => setOpen(false)} className="block text-text-light hover:text-navy text-sm font-medium py-2 transition-colors">
Qui suis-je Qui suis-je

View File

@@ -1,7 +1,6 @@
"use client"; "use client";
import ScrollReveal from "@/components/animations/ScrollReveal"; import ScrollReveal from "@/components/animations/ScrollReveal";
import AnimatedCounter from "@/components/animations/AnimatedCounter";
export default function Problematique() { export default function Problematique() {
return ( return (
@@ -10,11 +9,11 @@ export default function Problematique() {
<ScrollReveal direction="up"> <ScrollReveal direction="up">
<div className="text-center mb-12"> <div className="text-center mb-12">
<h3 className="text-2xl md:text-3xl lg:text-4xl font-bold text-navy tracking-[-0.02em] mb-4"> <h3 className="text-2xl md:text-3xl lg:text-4xl font-bold text-navy tracking-[-0.02em] mb-4">
Vous êtes un pro sur le chantier.{" "} Chacun son m&eacute;tier.{" "}
<span className="text-orange">Pourquoi votre présence en ligne dit-elle le contraire&nbsp;?</span> <span className="text-orange">Vous &ecirc;tes l&rsquo;expert du chantier, je suis l&rsquo;expert du num&eacute;rique.</span>
</h3> </h3>
<p className="text-text-light text-base md:text-lg"> <p className="text-text-light text-base md:text-lg">
Marc, je sais ce que vous vivez&nbsp;: Marc, je sais ce que vous vivez au quotidien&nbsp;:
</p> </p>
</div> </div>
</ScrollReveal> </ScrollReveal>
@@ -23,15 +22,15 @@ export default function Problematique() {
{[ {[
{ {
title: "Le temps perdu", title: "Le temps perdu",
text: "Vos soirées passent à faire des devis pour des gens qui cherchent «\u00a0le moins cher\u00a0» sur Leboncoin.", text: "Vos soir\u00e9es passent \u00e0 faire des devis pour des curieux qui cherchent juste \u00ab\u00a0un prix\u00a0\u00bb et ne signent jamais.",
}, },
{ {
title: "L\u2019invisibilité", title: "L\u2019invisibilit\u00e9",
text: "Des concurrents moins qualifiés que vous sortent avant vous sur Google Maps.", text: "Vous voyez des concurrents, parfois moins qualifi\u00e9s que vous, appara\u00eetre avant vous sur Google.",
}, },
{ {
title: "La peur de la technique", title: "La complexit\u00e9",
text: "On vous a parlé de WordPress, de mises à jour, de piratage\u2026 Vous voulez un outil, pas un deuxième travail.", text: "On vous parle de \u00ab\u00a0r\u00e9f\u00e9rencement\u00a0\u00bb, de \u00ab\u00a0mises \u00e0 jour\u00a0\u00bb\u2026 Pour vous, c\u2019est du chinois. Vous voulez un outil qui marche, pas une charge mentale suppl\u00e9mentaire.",
}, },
].map((item, i) => ( ].map((item, i) => (
<ScrollReveal key={i} direction="left" delay={i * 150}> <ScrollReveal key={i} direction="left" delay={i * 150}>
@@ -54,13 +53,10 @@ export default function Problematique() {
<ScrollReveal direction="none"> <ScrollReveal direction="none">
<div className="bg-navy rounded-2xl p-6 md:p-8 text-center"> <div className="bg-navy rounded-2xl p-6 md:p-8 text-center">
<p className="text-white text-base md:text-lg leading-relaxed"> <p className="text-white text-base md:text-lg leading-relaxed">
<strong className="text-orange text-2xl md:text-3xl font-extrabold block mb-2 animate-stat-glow"> <strong className="text-orange text-lg md:text-xl font-extrabold">Mon engagement&nbsp;:</strong>{" "}
<AnimatedCounter end={93} suffix="%" /> Je ne vous vends pas de la technologie pour le plaisir. Je mets en place un{" "}
</strong> <strong className="text-orange">Dossier de Confiance</strong>{" "}
des acheteurs jugent votre crédibilité sur le design de votre site.{" "} qui prouve votre s&eacute;rieux aux clients qui vous cherchent.
<span className="text-white/70">
Si votre site est lent ou «&nbsp;moche&nbsp;», le client pense que votre travail l&rsquo;est aussi.
</span>
</p> </p>
</div> </div>
</ScrollReveal> </ScrollReveal>

View File

@@ -3,17 +3,18 @@
import Card from "@/components/ui/Card"; import Card from "@/components/ui/Card";
import ScrollReveal from "@/components/animations/ScrollReveal"; import ScrollReveal from "@/components/animations/ScrollReveal";
const features = [ const steps = [
{ {
icon: ( icon: (
<svg className="w-8 h-8" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <svg className="w-8 h-8" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M13 10V3L4 14h7v7l9-11h-7z" /> <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" />
</svg> </svg>
), ),
title: "Vitesse Supersonique", step: "1",
subtitle: "Google adore", title: "ON VOUS TROUVE",
subtitle: "Votre pr\u00e9sence Google",
description: description:
"Votre site se charge instantanément sur mobile. C\u2019est crucial pour le référencement et pour vos clients pressés. La technologie des géants (Netflix, Airbnb) adaptée aux artisans du Nord.", "Quand un client tape \u00ab\u00a0Couvreur Douai\u00a0\u00bb ou \u00ab\u00a0Menuisier Orchies\u00a0\u00bb, il doit tomber sur vous. Je g\u00e8re votre fiche Google et je m\u2019assure que vous soyez visible localement, l\u00e0 o\u00f9 sont vos clients.",
}, },
{ {
icon: ( icon: (
@@ -21,27 +22,29 @@ const features = [
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z" /> <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z" />
</svg> </svg>
), ),
title: "Sécurité Militaire", step: "2",
subtitle: "HTTPS inclus", title: "ON VOUS CHOISIT",
subtitle: "Votre Site & Vos Avis",
description: description:
"Pas de base de données à pirater. Votre site est statique, blindé et sécurisé par défaut (cadenas vert HTTPS obligatoire). Vos clients sont rassurés.", "Un client met moins de 10 secondes pour juger si vous \u00eates s\u00e9rieux. Je cr\u00e9e un site internet clair qui affiche vos labels (RGE, Qualibat), vos plus belles photos de r\u00e9alisations et les avis de vos clients satisfaits. C\u2019est votre classeur de chantier, mais en ligne.",
}, },
{ {
icon: ( icon: (
<svg className="w-8 h-8" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <svg className="w-8 h-8" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M12 18h.01M8 21h8a2 2 0 002-2V5a2 2 0 00-2-2H8a2 2 0 00-2 2v14a2 2 0 002 2z" /> <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z" />
</svg> </svg>
), ),
title: "100% Mobile First", step: "3",
subtitle: "Conçu pour le pouce", title: "ON VOUS CONTACTE",
subtitle: "Le Filtrage",
description: description:
"Vos clients vous cherchent sur leur smartphone. Votre site est conçu pour le pouce, avec des boutons d\u2019appel énormes et accessibles.", "Fini les appels inutiles. Votre site est con\u00e7u pour filtrer les demandes. En affichant votre professionnalisme, vous \u00e9cartez les \u00ab\u00a0touristes\u00a0\u00bb et attirez les clients qui ont un vrai projet et le budget qui va avec.",
}, },
]; ];
export default function System() { export default function System() {
return ( return (
<section id="systeme" className="relative py-16 md:py-24 bg-navy" aria-label="Le système"> <section id="methode" className="relative py-16 md:py-24 bg-navy" aria-label="Notre méthode">
{/* Subtle pattern */} {/* Subtle pattern */}
<div className="absolute inset-0 bg-[radial-gradient(circle_at_70%_30%,rgba(255,255,255,0.03),transparent_60%)]" /> <div className="absolute inset-0 bg-[radial-gradient(circle_at_70%_30%,rgba(255,255,255,0.03),transparent_60%)]" />
@@ -49,25 +52,24 @@ export default function System() {
<ScrollReveal direction="up"> <ScrollReveal direction="up">
<div className="text-center mb-14"> <div className="text-center mb-14">
<span className="inline-block px-3 py-1.5 bg-orange/20 border border-orange/30 rounded-full text-orange text-xs font-semibold mb-4"> <span className="inline-block px-3 py-1.5 bg-orange/20 border border-orange/30 rounded-full text-orange text-xs font-semibold mb-4">
La Solution HookLab Notre M&eacute;thode
</span> </span>
<h2 className="text-2xl md:text-3xl lg:text-4xl font-bold text-white tracking-[-0.02em] mb-3"> <h2 className="text-2xl md:text-3xl lg:text-4xl font-bold text-white tracking-[-0.02em] mb-3">
Le «&nbsp;Dossier de Confiance&nbsp;» :{" "} 3 &eacute;tapes pour transformer votre bouche-&agrave;-oreille en{" "}
<span className="text-orange">Plus qu&rsquo;un site, une infrastructure.</span> <span className="text-orange">syst&egrave;me automatique.</span>
</h2> </h2>
<p className="text-white/60 text-base md:text-lg max-w-2xl mx-auto"> <p className="text-white/60 text-base md:text-lg max-w-2xl mx-auto">
Je ne fais pas de sites «&nbsp;bricolés&nbsp;» sur WordPress qui plantent si on ne les Pas de jargon. Voici ce que je mets en place pour vous&nbsp;:
met pas à jour. J&rsquo;utilise la technologie des géants adaptée aux artisans du Nord.
</p> </p>
</div> </div>
</ScrollReveal> </ScrollReveal>
<div className="grid grid-cols-1 md:grid-cols-3 gap-6"> <div className="grid grid-cols-1 md:grid-cols-3 gap-6">
{features.map((f, i) => ( {steps.map((f, i) => (
<ScrollReveal key={i} direction="up" delay={i * 200}> <ScrollReveal key={i} direction="up" delay={i * 200}>
<Card hover className="text-center bg-white/5 border-white/10 backdrop-blur-sm h-full"> <Card hover className="text-center bg-white/5 border-white/10 backdrop-blur-sm h-full">
<div className="w-16 h-16 bg-orange/20 rounded-2xl flex items-center justify-center mx-auto mb-5 text-orange"> <div className="w-12 h-12 bg-orange rounded-full flex items-center justify-center mx-auto mb-4 text-white font-extrabold text-xl">
{f.icon} {f.step}
</div> </div>
<h3 className="text-white font-bold text-lg mb-1">{f.title}</h3> <h3 className="text-white font-bold text-lg mb-1">{f.title}</h3>
<p className="text-orange text-sm font-semibold mb-3">{f.subtitle}</p> <p className="text-orange text-sm font-semibold mb-3">{f.subtitle}</p>