import React, { useState, useEffect } from 'react'; import { Mail, Lock, User, ArrowRight, Loader2, BookOpen, ShieldCheck } from 'lucide-react'; import { useAuth } from '../hooks'; interface AuthPageProps { onBack: () => void; onSuccess: () => void; initialMode?: 'signin' | 'signup' | 'forgot'; } const AuthPage: React.FC = ({ onBack, onSuccess, initialMode = 'signin' }) => { const [mode, setMode] = useState<'signin' | 'signup' | 'forgot'>(initialMode); const [loading, setLoading] = useState(false); const [formData, setFormData] = useState({ name: '', email: '', password: '' }); const [error, setError] = useState(''); // On récupère les fonctions de connexion directement du hook const { user, login, signup } = useAuth(); // Redirection automatique dès que l'utilisateur est détecté dans l'état global useEffect(() => { if (user) { onSuccess(); } }, [user, onSuccess]); const handleAdminLogin = async () => { const adminData = { email: 'streaper2@gmail.com', password: 'Kency1313' }; setFormData({ name: 'Admin Plume', ...adminData }); setLoading(true); setError(''); try { const result = await login(adminData.email, adminData.password); if (result?.error) setError(result.error); } catch (e) { setError('Erreur de connexion au service.'); } finally { setLoading(false); } }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(''); setLoading(true); try { let result; if (mode === 'signup') { result = await signup(formData.email, formData.password, formData.name); } else { result = await login(formData.email, formData.password); } if (result?.error) { setError(result.error); } } catch (e) { setError('Une erreur technique est survenue.'); } finally { setLoading(false); } }; return (
{/* Panneau Latéral (Visible sur Desktop) */}
PlumeIA

L'endroit où vos histoires prennent vie.

Rejoignez une communauté d'auteurs qui utilisent l'IA pour briser la page blanche.

© 2024 PlumeIA Ecosystem.
{/* Formulaire */}

{mode === 'signin' ? 'Content de vous revoir' : mode === 'signup' ? "Commencer l'aventure" : 'Récupération'}

{mode === 'signin' ? 'Entrez vos identifiants pour continuer.' : 'Créez votre compte gratuit en quelques secondes.'}

{error && (
{error}
)}
{mode === 'signup' && (
setFormData({ ...formData, name: e.target.value })} placeholder="Marc Dupré" className="w-full pl-12 pr-4 py-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 font-medium" />
)}
setFormData({ ...formData, email: e.target.value })} placeholder="votre@email.com" className="w-full pl-12 pr-4 py-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 font-medium" />
{mode !== 'forgot' && (
setFormData({ ...formData, password: e.target.value })} placeholder="••••••••" className="w-full pl-12 pr-4 py-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 font-medium" />
)}
{mode === 'signin' && ( )}

{mode === 'signin' ? "Pas de compte ?" : "Déjà membre ?"}

); }; export default AuthPage;