init projet

This commit is contained in:
2026-05-20 10:43:18 +02:00
parent 51f27903bb
commit 9a402b0b34
57 changed files with 5622 additions and 0 deletions
+76
View File
@@ -0,0 +1,76 @@
// src/pages/Users/Users.jsx
// Page Utilisateurs : gestion des utilisateurs (simulation)
import { useState } from 'react';
import { Plus, Edit, Trash2 } from 'lucide-react';
import DataTable from '../../components/common/DataTable';
import Button from '../../components/common/Button';
import styles from './Users.module.css';
/* Données simulées pour les utilisateurs */
const mockUsers = [
{ id: 1, nom: 'Alice Dupont', email: 'alice@xefi.fr', role: 'Admin', actif: true },
{ id: 2, nom: 'Bob Martin', email: 'bob@xefi.fr', role: 'Utilisateur', actif: true },
{ id: 3, nom: 'Charlie Durand', email: 'charlie@xefi.fr', role: 'Utilisateur', actif: false }
];
export default function Users() {
const [users, setUsers] = useState(mockUsers);
function handleAdd() {
console.log('Ajouter utilisateur');
}
function handleEdit(user) {
console.log('Modifier utilisateur', user);
}
function handleDelete(user) {
setUsers(prev => prev.map(u => u.id === user.id ? { ...u, actif: false } : u));
}
const columns = [
{ key: 'nom', label: 'Nom' },
{ key: 'email', label: 'Email' },
{ key: 'role', label: 'Rôle' },
{
key: 'actif',
label: 'Statut',
render: (val) => val ? 'Actif' : 'Inactif'
},
{
key: 'actions',
label: 'Actions',
render: (val, row) => (
<div className={styles.actions}>
<button className={styles.actionBtn} onClick={() => handleEdit(row)}>
<Edit size={14} />
Modifier
</button>
<button className={styles.actionBtn} onClick={() => handleDelete(row)}>
<Trash2 size={14} />
Désactiver
</button>
</div>
)
}
];
return (
<div className={styles.page}>
<div className={styles.header}>
<h1 className={styles.title}>Utilisateurs</h1>
<Button variant="primary" onClick={handleAdd}>
<Plus size={14} />
Ajouter
</Button>
</div>
<DataTable
columns={columns}
data={users}
pageSize={50}
emptyMessage="Aucun utilisateur trouvé."
/>
</div>
);
}