"use client"; import { useState } from "react"; import Link from "next/link"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from "@/components/ui/dropdown-menu"; import { PlusCircle, Search, MoreHorizontal, Pencil, Trash2, Shield, UserCog } from "lucide-react"; import { Badge } from "@/components/ui/badge"; import { toast } from "sonner"; export default function AdminUsersPage() { const [searchQuery, setSearchQuery] = useState(""); // Mock data for users const users = [ { id: 1, name: "Jean Dupont", email: "jean.dupont@example.com", role: "user", status: "active", lastLogin: "2025-05-15T14:32:00", projects: 3, }, { id: 2, name: "Marie Martin", email: "marie.martin@example.com", role: "admin", status: "active", lastLogin: "2025-05-15T13:45:00", projects: 5, }, { id: 3, name: "Pierre Durand", email: "pierre.durand@example.com", role: "user", status: "inactive", lastLogin: "2025-05-10T11:20:00", projects: 1, }, { id: 4, name: "Sophie Lefebvre", email: "sophie.lefebvre@example.com", role: "user", status: "active", lastLogin: "2025-05-15T10:15:00", projects: 2, }, { id: 5, name: "Thomas Bernard", email: "thomas.bernard@example.com", role: "admin", status: "active", lastLogin: "2025-05-14T16:30:00", projects: 0, }, ]; // Filter users based on search query const filteredUsers = users.filter( (user) => user.name.toLowerCase().includes(searchQuery.toLowerCase()) || user.email.toLowerCase().includes(searchQuery.toLowerCase()) || user.role.toLowerCase().includes(searchQuery.toLowerCase()) ); const handleDeleteUser = (userId: number) => { toast.success(`Utilisateur #${userId} supprimé avec succès`); }; const handleChangeRole = (userId: number, newRole: string) => { toast.success(`Rôle de l'utilisateur #${userId} changé en ${newRole}`); }; return (

Gestion des utilisateurs

setSearchQuery(e.target.value)} />
{/* Mobile card view */}
{filteredUsers.length === 0 ? (
Aucun utilisateur trouvé.
) : ( filteredUsers.map((user) => (
{user.name} {user.email}
{user.role === "admin" ? ( ) : null} {user.role === "admin" ? "Admin" : "Utilisateur"}
Statut: {user.status === "active" ? "Actif" : "Inactif"}
Projets: {user.projects}
Dernière connexion: {new Date(user.lastLogin).toLocaleString("fr-FR", { dateStyle: "medium", timeStyle: "short", })}
Actions Modifier handleChangeRole(user.id, user.role === "admin" ? "user" : "admin")} > {user.role === "admin" ? "Retirer les droits admin" : "Promouvoir admin"} handleDeleteUser(user.id)} className="text-destructive focus:text-destructive" > Supprimer
)) )}
{/* Desktop table view */}
Nom Email Rôle Statut Dernière connexion Projets Actions {filteredUsers.length === 0 ? ( Aucun utilisateur trouvé. ) : ( filteredUsers.map((user) => ( {user.name} {user.email} {user.role === "admin" ? ( ) : null} {user.role === "admin" ? "Admin" : "Utilisateur"} {user.status === "active" ? "Actif" : "Inactif"} {new Date(user.lastLogin).toLocaleString("fr-FR", { dateStyle: "medium", timeStyle: "short", })} {user.projects} Actions Modifier handleChangeRole(user.id, user.role === "admin" ? "user" : "admin")} className="flex items-center" > {user.role === "admin" ? "Retirer les droits admin" : "Promouvoir admin"} handleDeleteUser(user.id)} className="text-destructive focus:text-destructive flex items-center" > Supprimer )) )}
); }