Checkpoint: Renommage du bouton "Ajouter un inscrit" et application de l'alternance de couleurs blanc/bleu clair sur tous les tableaux.

**Modifications apportées :**

1. **Renommage du bouton d'ajout d'apprenant** :
   - Bouton renommé de "Ajouter un inscrit" à "Ajouter un apprenant"
   - Titre de la boîte de dialogue mis à jour
   - Description améliorée : "Sélectionnez un apprenant dans la liste ci-dessous pour l'inscrire à cette séquence. La liste affichée correspond à l'ensemble des apprenants enregistrés dans le système."

2. **Alternance de couleurs blanc/bleu clair (bg-blue-50/70)** appliquée sur tous les tableaux :
   - Liste des formations (AdminFormations.tsx)
   - Liste des séquences (AdminSequences.tsx)
   - Liste des apprenants (AdminApprenants.tsx)
   - Liste des inscrits dans la fenêtre de gestion des attestations (AdminGestionAttestations.tsx)
   - Liste des utilisateurs (AdminUsers.tsx)
   - Liste des formateurs (AdminFormateurs.tsx)

**Résultat :**
 Meilleure cohérence terminologique dans l'interface
 Amélioration significative de la lisibilité de tous les tableaux grâce à l'alternance de couleurs
 Expérience utilisateur plus fluide et professionnelle
 Déployé et testé avec succès sur le VPS de production (https://formations.itinova.org)
This commit is contained in:
Manus
2026-01-20 05:08:27 -05:00
parent dc28caa3fd
commit 21ed7f7355
8 changed files with 31 additions and 15 deletions

View File

@@ -289,8 +289,8 @@ export default function AdminApprenants() {
</TableRow>
</TableHeader>
<TableBody>
{filteredApprenants.map((apprenant) => (
<TableRow key={apprenant.id}>
{filteredApprenants.map((apprenant, index) => (
<TableRow key={apprenant.id} className={index % 2 === 1 ? "bg-blue-50/70" : ""}>
<TableCell className="font-medium">{apprenant.nom}</TableCell>
<TableCell>{apprenant.prenom}</TableCell>
<TableCell>{apprenant.email}</TableCell>

View File

@@ -276,8 +276,8 @@ export default function AdminFormations() {
</TableRow>
</TableHeader>
<TableBody>
{filteredFormations.map((formation) => (
<TableRow key={formation.id}>
{filteredFormations.map((formation, index) => (
<TableRow key={formation.id} className={index % 2 === 1 ? "bg-blue-50/70" : ""}>
<TableCell className="font-medium">{formation.nom}</TableCell>
<TableCell className="max-w-xs truncate">{formation.description || "-"}</TableCell>
<TableCell>

View File

@@ -439,14 +439,14 @@ export default function AdminGestionAttestations() {
</TableRow>
</TableHeader>
<TableBody>
{apprenants.map((item) => {
{apprenants.map((item, index) => {
const hasAttestation = !!item.attestation;
const hasDocument = hasAttestation && (item.attestation.urlPdf || item.attestation.documentUrl);
const isSent = hasAttestation && item.attestation.emailEnvoye;
const documentUrl = item.attestation?.documentUrl || item.attestation?.urlPdf;
return (
<TableRow key={item.inscription.id}>
<TableRow key={item.inscription.id} className={index % 2 === 1 ? "bg-blue-50/70" : ""}>
<TableCell>{item.apprenant.nom}</TableCell>
<TableCell>{item.apprenant.prenom}</TableCell>
<TableCell>{item.apprenant.email}</TableCell>

View File

@@ -522,7 +522,7 @@ export default function AdminSequenceInscrits() {
className="gap-2"
>
<UserPlus className="h-4 w-4" />
Ajouter un inscrit
Ajouter un apprenant
</Button>
</div>
</CardHeader>
@@ -596,9 +596,9 @@ export default function AdminSequenceInscrits() {
<Dialog open={isAddInscritOpen} onOpenChange={setIsAddInscritOpen}>
<DialogContent className="max-w-2xl">
<DialogHeader>
<DialogTitle>Ajouter un inscrit à la séquence</DialogTitle>
<DialogTitle>Ajouter un apprenant à la séquence</DialogTitle>
<DialogDescription>
Sélectionnez un apprenant à inscrire à cette séquence
Sélectionnez un apprenant dans la liste ci-dessous pour l'inscrire à cette séquence. La liste affichée correspond à l'ensemble des apprenants enregistrés dans le système.
</DialogDescription>
</DialogHeader>
<AddInscritForm

View File

@@ -722,8 +722,8 @@ export default function AdminSequences() {
</TableRow>
</TableHeader>
<TableBody>
{filteredAndSortedSequences.map((sequence) => (
<TableRow key={sequence.id}>
{filteredAndSortedSequences.map((sequence, index) => (
<TableRow key={sequence.id} className={index % 2 === 1 ? "bg-blue-50/70" : ""}>
<TableCell className={`font-semibold ${getFormationColor(sequence.formationId)}`}>{getFormationName(sequence.formationId)}</TableCell>
<TableCell>{sequence.nom}</TableCell>
<TableCell>

View File

@@ -367,8 +367,8 @@ export default function AdminUsers() {
</TableCell>
</TableRow>
) : (
filteredUsers.map((user) => (
<TableRow key={user.id}>
filteredUsers.map((user, index) => (
<TableRow key={user.id} className={index % 2 === 1 ? "bg-blue-50/70" : ""}>
<TableCell className="font-medium">{user.id}</TableCell>
<TableCell>{user.name || "N/A"}</TableCell>
<TableCell>{user.email || "N/A"}</TableCell>

View File

@@ -229,8 +229,8 @@ export default function AdminFormateurs() {
</TableRow>
</TableHeader>
<TableBody>
{formateurs?.map((formateur) => (
<TableRow key={formateur.id}>
{formateurs?.map((formateur, index) => (
<TableRow key={formateur.id} className={index % 2 === 1 ? "bg-blue-50/70" : ""}>
<TableCell className="font-medium">{formateur.nom}</TableCell>
<TableCell>
{formateur.email ? (

16
todo.md
View File

@@ -978,3 +978,19 @@
- [x] Identifier pourquoi les boutons ont disparu
- [x] Restaurer les boutons
- [x] Déployer et tester
## Renommage bouton ajout d'apprenant
- [x] Renommer "Ajouter un inscrit" en "Ajouter un apprenant"
- [x] Ajouter précision dans la boîte de dialogue
- [x] Déployer et tester
## Alternance de couleurs blanc/bleu sur tous les tableaux
- [x] Liste des formations
- [x] Liste des séquences
- [x] Liste des apprenants
- [x] Liste des inscrits (fenêtre gestion des attestations)
- [x] Liste des utilisateurs
- [x] Liste des formateurs
- [x] Déployer et tester