'use client'; import { useState } from 'react'; import { useAuth } from '@/hooks/useAuth'; import Card from '@/components/ui/Card'; import Button from '@/components/ui/Button'; import Input from '@/components/ui/Input'; import { User, Mail, Lock, Shield, Trash2 } from 'lucide-react'; import toast from 'react-hot-toast'; import api from '@/lib/api'; import Modal from '@/components/ui/Modal'; export default function ProfilPage() { const { user, fetchUser, logout } = useAuth(); const [editing, setEditing] = useState(false); const [changingPassword, setChangingPassword] = useState(false); const [deleteModalOpen, setDeleteModalOpen] = useState(false); const [loading, setLoading] = useState(false); const [form, setForm] = useState({ nom: user?.nom || '', prenom: user?.prenom || '', email: user?.email || '', }); const [passwordForm, setPasswordForm] = useState({ ancien_mot_de_passe: '', password: '', password_confirmation: '', }); const handleUpdateProfil = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); try { await api.put('/profil', form); await fetchUser(); setEditing(false); toast.success('Profil mis à jour'); } catch (err: any) { toast.error(err.response?.data?.message || 'Erreur lors de la mise à jour'); } finally { setLoading(false); } }; const handleChangePassword = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); try { await api.put('/profil/password', passwordForm); setChangingPassword(false); setPasswordForm({ ancien_mot_de_passe: '', password: '', password_confirmation: '' }); toast.success('Mot de passe modifié'); } catch (err: any) { toast.error(err.response?.data?.message || 'Erreur lors du changement'); } finally { setLoading(false); } }; const handleDeleteAccount = async () => { setLoading(true); try { await api.delete('/profil'); toast.success('Compte supprimé'); logout(); } catch (err: any) { toast.error(err.response?.data?.message || 'Erreur lors de la suppression'); } finally { setLoading(false); } }; return (

Mon profil

{/* Infos du profil */}

{user?.prenom} {user?.nom}

{user?.email}

Membre depuis le {user?.created_at ? new Date(user.created_at).toLocaleDateString('fr-FR', { day: 'numeric', month: 'long', year: 'numeric' }) : '—'}

{editing ? (
setForm({ ...form, prenom: e.target.value })} icon={} required /> setForm({ ...form, nom: e.target.value })} icon={} required />
setForm({ ...form, email: e.target.value })} icon={} required />
) : ( )}
{/* Changer mot de passe */}

Mot de passe

{changingPassword ? (
setPasswordForm({ ...passwordForm, ancien_mot_de_passe: e.target.value })} required /> setPasswordForm({ ...passwordForm, password: e.target.value })} required /> setPasswordForm({ ...passwordForm, password_confirmation: e.target.value })} required />
) : ( )}
{/* Zone dangereuse */}

Zone dangereuse

La suppression de votre compte est irréversible. Toutes vos données seront effacées conformément au RGPD.

{/* Modal confirmation suppression */} setDeleteModalOpen(false)} title="Confirmer la suppression" size="sm" >

Êtes-vous sûr de vouloir supprimer votre compte ? Cette action est irréversible.

); }