import { useEffect, useState } from 'react' import { supabase } from '@/lib/supabase' import { useAuth } from '@/context/AuthContext' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table' import { Card, CardContent } from '@/components/ui/card' import { Badge } from '@/components/ui/badge' import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from '@/components/ui/dialog' import { InviteUserModal } from '@/components/InviteUserModal' import { Download } from 'lucide-react' import { toast } from 'sonner' export function Members() { const { profile } = useAuth() const [members, setMembers] = useState([]) const [editMember, setEditMember] = useState(null) const [editName, setEditName] = useState('') useEffect(() => { load() }, []) async function load() { const { data } = await supabase.from('members').select('*').order('created_at', { ascending: false }) if (data) setMembers(data) } async function updateMember() { const { error } = await supabase.from('members').update({ full_name: editName }).eq('id', editMember.id) if (error) { toast.error(error.message); return } setEditMember(null) load() toast.success('Membre mis à jour') } async function deleteMember(id) { if (!confirm('Supprimer ce membre ?')) return const { error } = await supabase.from('members').delete().eq('id', id) if (error) { toast.error(error.message); return } load() toast.success('Membre supprimé') } function exportCSV() { const header = 'Nom,Email,Rôle,Inscrit le\n' const rows = members.map((m) => `"${m.full_name || ''}","${m.email}","${m.role}","${new Date(m.created_at).toLocaleDateString()}"` ).join('\n') const blob = new Blob([header + rows], { type: 'text/csv;charset=utf-8;' }) const url = URL.createObjectURL(blob) const a = document.createElement('a') a.href = url a.download = 'membres.csv' a.click() URL.revokeObjectURL(url) toast.success('Fichier CSV téléchargé') } return (

Membres

Nom Email Rôle Inscrit le Actions {members.map((m) => ( {m.full_name || '—'} {m.email} {m.role === 'admin' ? 'Admin' : 'Membre'} {new Date(m.created_at).toLocaleDateString()}
Modifier le membre
setEditName(e.target.value)} />
{m.id !== profile?.id && ( )}
))}
) }