edtech / apps /admin /src /components /MetaVerificationGuide.tsx
CognxSafeTrack
feat: Premium Onboarding with Meta SDK and Technical Debt resolution
6248bf4
import { useState } from 'react';
import { motion, AnimatePresence } from 'framer-motion';
import { ShieldCheck, FileText, Globe, Zap, ArrowRight, CheckCircle2, ChevronRight, HelpCircle } from 'lucide-react';
const STEPS = [
{
id: 'identity',
title: 'Identité de l\'Entreprise',
description: 'Meta doit vérifier que votre école est une entité réelle.',
icon: <FileText className="w-6 h-6" />,
color: 'from-blue-500 to-indigo-600',
details: [
'Extrait Kbis ou Registre du Commerce',
'Facture d\'électricité ou téléphone au nom de l\'école',
'Le nom doit correspondre EXACTEMENT à celui sur Facebook'
]
},
{
id: 'domain',
title: 'Vérification du Domaine',
description: 'Prouvez que vous êtes propriétaire de votre site web.',
icon: <Globe className="w-6 h-6" />,
color: 'from-purple-500 to-pink-600',
details: [
'Ajout d\'un code TXT sur votre DNS (ex: Namecheap, LWS)',
'Ou ajout d\'un fichier HTML sur votre serveur',
'Indispensable pour la confiance des élèves'
]
},
{
id: 'approval',
title: 'Explosion des Limites',
description: 'Passez de 250 à 1000+ conversations par jour.',
icon: <Zap className="w-6 h-6" />,
color: 'from-amber-400 to-orange-500',
details: [
'Accès aux statistiques avancées de Meta',
'Possibilité de diffuser des notifications massives',
'Validation par Meta sous 48h à 7 jours'
]
}
];
export default function MetaVerificationGuide() {
const [activeStep, setActiveStep] = useState(0);
return (
<div className="bg-white rounded-[2.5rem] p-10 border border-slate-100 shadow-2xl shadow-indigo-100/50">
<div className="flex items-center gap-4 mb-10">
<div className="w-14 h-14 bg-indigo-50 rounded-2xl flex items-center justify-center text-indigo-600">
<ShieldCheck className="w-8 h-8" />
</div>
<div>
<h2 className="text-3xl font-black text-slate-900 tracking-tight">Accélérateur de Croissance</h2>
<p className="text-slate-500 font-medium">Guide interactif pour débloquer toute la puissance de WhatsApp</p>
</div>
</div>
<div className="grid md:grid-cols-[1fr_1.5fr] gap-12">
{/* Sidebar Steps */}
<div className="space-y-4">
{STEPS.map((step, idx) => (
<button
key={step.id}
onClick={() => setActiveStep(idx)}
className={`w-full text-left p-6 rounded-3xl transition-all duration-300 relative overflow-hidden group ${
activeStep === idx
? 'bg-slate-900 text-white shadow-xl translate-x-2'
: 'bg-slate-50 text-slate-400 hover:bg-slate-100'
}`}
>
<div className="flex items-center gap-4 relative z-10">
<div className={`p-2 rounded-xl ${activeStep === idx ? 'bg-white/10' : 'bg-white shadow-sm'}`}>
{step.icon}
</div>
<div className="flex-1">
<h4 className="font-bold text-sm">{step.title}</h4>
{activeStep === idx && (
<motion.p
initial={{ opacity: 0, height: 0 }}
animate={{ opacity: 1, height: 'auto' }}
className="text-xs text-slate-300 mt-1 font-medium"
>
{step.description}
</motion.p>
)}
</div>
<ChevronRight className={`w-5 h-5 transition-transform ${activeStep === idx ? 'rotate-90' : ''}`} />
</div>
</button>
))}
</div>
{/* Content Area */}
<div className="relative min-h-[400px]">
<AnimatePresence mode="wait">
<motion.div
key={activeStep}
initial={{ opacity: 0, x: 20 }}
animate={{ opacity: 1, x: 0 }}
exit={{ opacity: 0, x: -20 }}
className="bg-slate-50/50 rounded-[3rem] p-12 border border-white h-full"
>
<div className={`w-20 h-20 bg-gradient-to-br ${STEPS[activeStep].color} rounded-3xl mb-8 flex items-center justify-center text-white shadow-lg`}>
{STEPS[activeStep].icon}
</div>
<h3 className="text-2xl font-black text-slate-900 mb-6">{STEPS[activeStep].title}</h3>
<div className="space-y-6">
{STEPS[activeStep].details.map((detail, i) => (
<motion.div
initial={{ opacity: 0, y: 10 }}
animate={{ opacity: 1, y: 0 }}
transition={{ delay: i * 0.1 }}
key={i}
className="flex items-start gap-4"
>
<div className="mt-1 bg-white p-1 rounded-full shadow-sm text-emerald-500">
<CheckCircle2 className="w-4 h-4" />
</div>
<p className="text-slate-600 font-medium leading-relaxed">{detail}</p>
</motion.div>
))}
</div>
<div className="mt-12 pt-8 border-t border-slate-200/50 flex items-center justify-between">
<div className="flex items-center gap-2 text-indigo-600 font-bold text-sm">
<HelpCircle className="w-4 h-4" />
Besoin d'aide ?
</div>
<a
href="https://business.facebook.com/settings/security"
target="_blank"
className={`flex items-center gap-2 bg-gradient-to-r ${STEPS[activeStep].color} text-white px-8 py-4 rounded-2xl font-bold hover:scale-105 transition shadow-lg`}
>
Ouvrir Meta Manager <ArrowRight className="w-4 h-4" />
</a>
</div>
</motion.div>
</AnimatePresence>
</div>
</div>
</div>
);
}