- Fix all missing French accents across 16 files (é, è, ê, à, ô, ç) - Improve candidature API error handling: check env vars, better messages - Add Mentions légales page (/mentions-legales) - Add CGV page (/cgv) - Add Politique de confidentialité page (/confidentialite) - Business info: Enguerrand Ozano, SIREN 994538932, TVA FR16994538932 https://claude.ai/code/session_01H2aRGDaKgarPvhay2HxN6Y
92 lines
3.5 KiB
TypeScript
92 lines
3.5 KiB
TypeScript
import Card from "@/components/ui/Card";
|
|
|
|
const testimonials = [
|
|
{
|
|
name: "Sarah M.",
|
|
role: "Étudiante, 22 ans",
|
|
content:
|
|
"En 4 semaines, j'ai généré mes premiers 800€ sur TikTok Shop. Le programme m'a donné une méthode claire et un accompagnement top.",
|
|
revenue: "2 400€/mois",
|
|
avatar: "S",
|
|
},
|
|
{
|
|
name: "Thomas D.",
|
|
role: "Ex-salarié, 34 ans",
|
|
content:
|
|
"J'hésitais à me lancer, mais le coaching m'a permis de structurer mon activité. Aujourd'hui je vis de TikTok Shop à plein temps.",
|
|
revenue: "4 200€/mois",
|
|
avatar: "T",
|
|
},
|
|
{
|
|
name: "Amina K.",
|
|
role: "Mère au foyer, 29 ans",
|
|
content:
|
|
"Je cherchais un complément de revenus flexible. Grâce à HookLab, je gagne un SMIC supplémentaire en travaillant 2h par jour.",
|
|
revenue: "1 600€/mois",
|
|
avatar: "A",
|
|
},
|
|
];
|
|
|
|
export default function Testimonials() {
|
|
return (
|
|
<section id="temoignages" 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">
|
|
Témoignages
|
|
</span>
|
|
<h2 className="text-3xl md:text-4xl lg:text-5xl font-bold tracking-[-0.02em] mb-4">
|
|
Ils ont <span className="gradient-text">transformé</span> leur vie
|
|
</h2>
|
|
<p className="text-white/60 text-lg">
|
|
Découvre les résultats de nos élèves après le programme.
|
|
</p>
|
|
</div>
|
|
|
|
{/* Cards */}
|
|
<div className="grid grid-cols-1 md:grid-cols-3 gap-6">
|
|
{testimonials.map((t, i) => (
|
|
<Card key={i} hover>
|
|
{/* Stars */}
|
|
<div className="flex gap-1 mb-4">
|
|
{[1, 2, 3, 4, 5].map((s) => (
|
|
<svg
|
|
key={s}
|
|
className="w-4 h-4 text-warning"
|
|
fill="currentColor"
|
|
viewBox="0 0 20 20"
|
|
>
|
|
<path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" />
|
|
</svg>
|
|
))}
|
|
</div>
|
|
|
|
{/* Content */}
|
|
<p className="text-white/80 mb-6 leading-relaxed">
|
|
“{t.content}”
|
|
</p>
|
|
|
|
{/* Revenue badge */}
|
|
<div className="inline-flex items-center px-3 py-1.5 bg-success/10 border border-success/20 rounded-full text-success text-sm font-medium mb-6">
|
|
{t.revenue}
|
|
</div>
|
|
|
|
{/* Author */}
|
|
<div className="flex items-center gap-3 pt-4 border-t border-dark-border">
|
|
<div className="w-10 h-10 rounded-full gradient-bg flex items-center justify-center text-sm font-bold text-white">
|
|
{t.avatar}
|
|
</div>
|
|
<div>
|
|
<p className="text-white font-medium text-sm">{t.name}</p>
|
|
<p className="text-white/40 text-xs">{t.role}</p>
|
|
</div>
|
|
</div>
|
|
</Card>
|
|
))}
|
|
</div>
|
|
</div>
|
|
</section>
|
|
);
|
|
}
|