Transformation complète du site HookLab de formation TikTok Shop vers une landing page haute conversion pour agence web locale ciblant les artisans du bâtiment dans le Nord (Douai, Orchies, Valenciennes). - Nouveau design system : bleu nuit/orange sur fond clair (mobile-first) - Hero avec promesse artisan + CTA orange "Réserver mon Audit" - Section "Le Système" (3 étapes : Trouvé, Choisi, Contacté) - Portfolio connecté à Sanity.io (fallback data intégré) - Section "Qui suis-je" avec carte OpenStreetMap interactive - FAQ orientée artisans avec JSON-LD pour Google - Formulaire contact audit gratuit - SEO local : 12 keywords artisans, JSON-LD LocalBusiness - Sanity.io schemas (portfolio, siteSettings) + client conditionnel - Accessibilité : skip-to-content, focus-visible, aria-labels https://claude.ai/code/session_01H2aRGDaKgarPvhay2HxN6Y
282 lines
12 KiB
TypeScript
282 lines
12 KiB
TypeScript
import Link from "next/link";
|
|
import Button from "@/components/ui/Button";
|
|
import Card from "@/components/ui/Card";
|
|
|
|
const coachingFeatures = [
|
|
"8 semaines de coaching intensif",
|
|
"Acc\u00e8s \u00e0 tous les modules vid\u00e9o",
|
|
"Templates et scripts de contenu",
|
|
"Appels de groupe hebdomadaires",
|
|
"Support WhatsApp illimit\u00e9",
|
|
"Communaut\u00e9 priv\u00e9e d\u2019entrepreneurs",
|
|
"Mises \u00e0 jour \u00e0 vie du contenu",
|
|
"Certification HookLab",
|
|
];
|
|
|
|
const bonuses = [
|
|
"Liste de 50 produits gagnants TikTok Shop",
|
|
"Guide de l\u2019algorithme TikTok 2025-2026",
|
|
"Templates Canva pour miniatures",
|
|
];
|
|
|
|
const suiviFeatures = [
|
|
"R\u00e9ponses \u00e0 tes questions vid\u00e9os",
|
|
"Id\u00e9es de concepts et tendances",
|
|
"Coaching motivation au quotidien",
|
|
"Acc\u00e8s aux nouvelles mises \u00e0 jour",
|
|
"Groupe WhatsApp alumni",
|
|
];
|
|
|
|
export default function Pricing() {
|
|
return (
|
|
<section id="tarif" className="py-20 md:py-32">
|
|
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
{/* Header */}
|
|
<div className="text-center max-w-2xl mx-auto mb-16">
|
|
<span className="inline-block px-3 py-1.5 bg-primary/10 border border-primary/20 rounded-full text-primary text-xs font-medium mb-4">
|
|
Tarifs
|
|
</span>
|
|
<h2 className="text-3xl md:text-4xl lg:text-5xl font-bold tracking-[-0.02em] mb-4">
|
|
Investis dans ta{" "}
|
|
<span className="gradient-text">formation TikTok Shop</span>
|
|
</h2>
|
|
<p className="text-white/60 text-lg">
|
|
Un programme complet avec accompagnement personnalisé, et une
|
|
option de suivi mensuel pour continuer à progresser.
|
|
</p>
|
|
</div>
|
|
|
|
{/* Pricing cards */}
|
|
<div className="grid grid-cols-1 lg:grid-cols-2 gap-6 max-w-4xl mx-auto">
|
|
{/* Coaching card */}
|
|
<Card className="relative overflow-hidden border-primary/30">
|
|
{/* Popular badge */}
|
|
<div className="absolute top-0 left-0 right-0 gradient-bg py-2.5 text-center">
|
|
<span className="text-white text-sm font-semibold">
|
|
Programme principal — Places limitées
|
|
</span>
|
|
</div>
|
|
|
|
<div className="pt-14">
|
|
<h3 className="text-lg font-bold text-white mb-1">
|
|
Formation + Coaching
|
|
</h3>
|
|
<p className="text-white/40 text-sm mb-6">
|
|
Programme intensif de 8 semaines
|
|
</p>
|
|
|
|
{/* Price */}
|
|
<div className="text-center mb-8">
|
|
<div className="flex items-baseline justify-center gap-2 mb-1">
|
|
<span className="text-white/40 text-2xl line-through">
|
|
690€
|
|
</span>
|
|
<span className="text-5xl md:text-6xl font-bold text-white">
|
|
490€
|
|
</span>
|
|
<span className="text-white/40 text-lg">/mois</span>
|
|
</div>
|
|
<p className="text-white/40 mt-2">
|
|
x2 mois (980€ total) — Paiement sécurisé
|
|
via Stripe
|
|
</p>
|
|
<div className="inline-flex items-center mt-3 px-3 py-1 bg-success/10 border border-success/20 rounded-full">
|
|
<span className="text-success text-sm font-medium">
|
|
Économise 400€ avec l'offre de lancement
|
|
</span>
|
|
</div>
|
|
</div>
|
|
|
|
{/* Divider */}
|
|
<div className="border-t border-dark-border my-6" />
|
|
|
|
{/* Features */}
|
|
<div className="mb-6">
|
|
<p className="text-white/50 text-xs uppercase tracking-wider mb-4 font-medium">
|
|
Inclus dans le programme
|
|
</p>
|
|
<ul className="space-y-3">
|
|
{coachingFeatures.map((f, i) => (
|
|
<li key={i} className="flex items-center gap-3">
|
|
<div className="w-5 h-5 rounded-full bg-success/10 flex items-center justify-center shrink-0">
|
|
<svg
|
|
className="w-3 h-3 text-success"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
viewBox="0 0 24 24"
|
|
>
|
|
<path
|
|
strokeLinecap="round"
|
|
strokeLinejoin="round"
|
|
strokeWidth={3}
|
|
d="M5 13l4 4L19 7"
|
|
/>
|
|
</svg>
|
|
</div>
|
|
<span className="text-white/80 text-sm">{f}</span>
|
|
</li>
|
|
))}
|
|
</ul>
|
|
</div>
|
|
|
|
{/* Bonus */}
|
|
<div className="bg-primary/5 border border-primary/10 rounded-2xl p-4 mb-6">
|
|
<p className="text-primary text-xs uppercase tracking-wider mb-3 font-medium">
|
|
Bonus inclus
|
|
</p>
|
|
<ul className="space-y-2">
|
|
{bonuses.map((b, i) => (
|
|
<li key={i} className="flex items-center gap-2">
|
|
<svg
|
|
className="w-4 h-4 text-primary shrink-0"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
viewBox="0 0 24 24"
|
|
>
|
|
<path
|
|
strokeLinecap="round"
|
|
strokeLinejoin="round"
|
|
strokeWidth={2}
|
|
d="M12 8v13m0-13V6a2 2 0 112 2h-2zm0 0V5.5A2.5 2.5 0 109.5 8H12zm-7 4h14M5 12a2 2 0 110-4h14a2 2 0 110 4M5 12v7a2 2 0 002 2h10a2 2 0 002-2v-7"
|
|
/>
|
|
</svg>
|
|
<span className="text-white/70 text-sm">{b}</span>
|
|
</li>
|
|
))}
|
|
</ul>
|
|
</div>
|
|
|
|
{/* CTA */}
|
|
<Link href="/candidature">
|
|
<Button size="lg" className="w-full pulse-glow">
|
|
Candidater pour rejoindre HookLab
|
|
</Button>
|
|
</Link>
|
|
|
|
{/* Guarantee */}
|
|
<div className="flex items-center justify-center gap-2 mt-5">
|
|
<svg
|
|
className="w-5 h-5 text-success"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
viewBox="0 0 24 24"
|
|
>
|
|
<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>
|
|
<span className="text-white/40 text-sm">
|
|
Garantie satisfait ou remboursé 14 jours
|
|
</span>
|
|
</div>
|
|
|
|
<p className="text-center text-white/25 text-xs mt-3">
|
|
Candidature soumise à validation. Réponse sous
|
|
24h.
|
|
</p>
|
|
</div>
|
|
</Card>
|
|
|
|
{/* Suivi card */}
|
|
<Card className="relative overflow-hidden border-dark-border">
|
|
<div className="absolute top-0 left-0 right-0 bg-dark-lighter py-2.5 text-center border-b border-dark-border">
|
|
<span className="text-white/60 text-sm font-semibold">
|
|
Après la formation
|
|
</span>
|
|
</div>
|
|
|
|
<div className="pt-14">
|
|
<h3 className="text-lg font-bold text-white mb-1">
|
|
Suivi continu
|
|
</h3>
|
|
<p className="text-white/40 text-sm mb-6">
|
|
Pour ceux qui ont terminé le programme
|
|
</p>
|
|
|
|
{/* Price */}
|
|
<div className="text-center mb-8">
|
|
<div className="flex items-baseline justify-center gap-2 mb-1">
|
|
<span className="text-4xl md:text-5xl font-bold text-white">
|
|
49€
|
|
</span>
|
|
<span className="text-white/40 text-lg">/mois</span>
|
|
</div>
|
|
<p className="text-white/40 mt-2">
|
|
Sans engagement — Annulable à tout moment
|
|
</p>
|
|
</div>
|
|
|
|
{/* Divider */}
|
|
<div className="border-t border-dark-border my-6" />
|
|
|
|
{/* Condition */}
|
|
<div className="bg-warning/5 border border-warning/15 rounded-xl p-3 mb-6">
|
|
<p className="text-warning text-xs font-medium flex items-center gap-2">
|
|
<svg className="w-4 h-4 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
|
</svg>
|
|
Accessible uniquement après avoir terminé les 8 semaines de coaching
|
|
</p>
|
|
</div>
|
|
|
|
{/* Features */}
|
|
<div className="mb-6">
|
|
<p className="text-white/50 text-xs uppercase tracking-wider mb-4 font-medium">
|
|
Inclus dans le suivi
|
|
</p>
|
|
<ul className="space-y-3">
|
|
{suiviFeatures.map((f, i) => (
|
|
<li key={i} className="flex items-center gap-3">
|
|
<div className="w-5 h-5 rounded-full bg-success/10 flex items-center justify-center shrink-0">
|
|
<svg
|
|
className="w-3 h-3 text-success"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
viewBox="0 0 24 24"
|
|
>
|
|
<path
|
|
strokeLinecap="round"
|
|
strokeLinejoin="round"
|
|
strokeWidth={3}
|
|
d="M5 13l4 4L19 7"
|
|
/>
|
|
</svg>
|
|
</div>
|
|
<span className="text-white/80 text-sm">{f}</span>
|
|
</li>
|
|
))}
|
|
</ul>
|
|
</div>
|
|
|
|
{/* Info */}
|
|
<div className="bg-dark border border-dark-border rounded-2xl p-4 mb-6">
|
|
<p className="text-white/50 text-sm leading-relaxed">
|
|
Le suivi mensuel te permet de continuer à progresser
|
|
après ta formation initiale. Pose tes questions, reçois
|
|
des idées de contenus et reste motivé avec la
|
|
communauté d'anciens élèves.
|
|
</p>
|
|
</div>
|
|
|
|
{/* CTA disabled-style */}
|
|
<div className="opacity-60">
|
|
<Button size="lg" variant="secondary" className="w-full" disabled>
|
|
Disponible après la formation
|
|
</Button>
|
|
</div>
|
|
|
|
<p className="text-center text-white/25 text-xs mt-3">
|
|
Le lien de souscription sera envoyé à la fin de
|
|
tes 8 semaines.
|
|
</p>
|
|
</div>
|
|
</Card>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
);
|
|
}
|