From d14550a1cfcfc74628e9390753653f5cfbdb9d5d Mon Sep 17 00:00:00 2001 From: Julien Martin Date: Tue, 24 Feb 2026 22:31:23 +0100 Subject: [PATCH] =?UTF-8?q?feat(#96):=20harmoniser=20les=20icones=20de=20r?= =?UTF-8?q?=C3=B4les=20en=20liste=20et=20modale?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Uniformise l'identité visuelle des rôles (admin, super admin, gestionnaire, parent) avec icônes dédiées dans les listes et la modale, et affiche le téléphone dans la ligne admin en retirant le rôle redondant. Co-authored-by: Cursor --- .../creation/gestionnaires_create.dart | 62 ++++++++++++++++--- .../admin/admin_management_widget.dart | 5 +- .../admin/gestionnaire_management_widget.dart | 1 + .../admin/parent_managmant_widget.dart | 1 + 4 files changed, 59 insertions(+), 10 deletions(-) diff --git a/frontend/lib/screens/administrateurs/creation/gestionnaires_create.dart b/frontend/lib/screens/administrateurs/creation/gestionnaires_create.dart index 9a79fbb..3a2ce05 100644 --- a/frontend/lib/screens/administrateurs/creation/gestionnaires_create.dart +++ b/frontend/lib/screens/administrateurs/creation/gestionnaires_create.dart @@ -43,6 +43,46 @@ class _AdminUserFormDialogState extends State { widget.initialUser?.role.toLowerCase() == 'super_admin'; bool get _isLockedAdminIdentity => _isEditMode && widget.adminMode && _isSuperAdminTarget; + String get _targetRoleKey { + if (widget.initialUser != null) { + return widget.initialUser!.role.toLowerCase(); + } + return widget.adminMode ? 'administrateur' : 'gestionnaire'; + } + + String get _targetRoleLabel { + switch (_targetRoleKey) { + case 'super_admin': + return 'Super administrateur'; + case 'administrateur': + return 'Administrateur'; + case 'gestionnaire': + return 'Gestionnaire'; + case 'assistante_maternelle': + return 'Assistante maternelle'; + case 'parent': + return 'Parent'; + default: + return 'Utilisateur'; + } + } + + IconData get _targetRoleIcon { + switch (_targetRoleKey) { + case 'super_admin': + return Icons.verified_user_outlined; + case 'administrateur': + return Icons.admin_panel_settings_outlined; + case 'gestionnaire': + return Icons.assignment_ind_outlined; + case 'assistante_maternelle': + return Icons.child_care_outlined; + case 'parent': + return Icons.supervisor_account_outlined; + default: + return Icons.person_outline; + } + } @override void initState() { @@ -371,19 +411,23 @@ class _AdminUserFormDialogState extends State { return AlertDialog( title: Row( children: [ + CircleAvatar( + radius: 16, + backgroundColor: const Color(0xFFEDE5FA), + child: Icon( + _targetRoleIcon, + size: 20, + color: const Color(0xFF6B3FA0), + ), + ), + const SizedBox(width: 8), Expanded( child: Text( _isEditMode ? (widget.readOnly - ? (widget.adminMode - ? 'Consulter un administrateur' - : 'Consulter un gestionnaire') - : (widget.adminMode - ? 'Modifier un administrateur' - : 'Modifier un gestionnaire')) - : (widget.adminMode - ? 'Créer un administrateur' - : 'Créer un gestionnaire'), + ? 'Consulter un "$_targetRoleLabel"' + : 'Modifier un "$_targetRoleLabel"') + : 'Créer un "$_targetRoleLabel"', ), ), if (_isEditMode && !widget.readOnly) diff --git a/frontend/lib/widgets/admin/admin_management_widget.dart b/frontend/lib/widgets/admin/admin_management_widget.dart index 2c73bdb..be51365 100644 --- a/frontend/lib/widgets/admin/admin_management_widget.dart +++ b/frontend/lib/widgets/admin/admin_management_widget.dart @@ -118,9 +118,12 @@ class _AdminManagementWidgetState extends State { final canEdit = _canEditAdmin(user); return AdminUserCard( title: user.fullName, + fallbackIcon: isSuperAdmin + ? Icons.verified_user_outlined + : Icons.manage_accounts_outlined, subtitleLines: [ user.email, - 'Rôle : ${user.role}', + 'Téléphone : ${user.telephone?.trim().isNotEmpty == true ? user.telephone : 'Non renseigné'}', ], avatarUrl: user.photoUrl, borderColor: isSuperAdmin diff --git a/frontend/lib/widgets/admin/gestionnaire_management_widget.dart b/frontend/lib/widgets/admin/gestionnaire_management_widget.dart index 4ea3ead..2692831 100644 --- a/frontend/lib/widgets/admin/gestionnaire_management_widget.dart +++ b/frontend/lib/widgets/admin/gestionnaire_management_widget.dart @@ -86,6 +86,7 @@ class _GestionnaireManagementWidgetState final user = filteredGestionnaires[index]; return AdminUserCard( title: user.fullName, + fallbackIcon: Icons.assignment_ind_outlined, avatarUrl: user.photoUrl, subtitleLines: [ user.email, diff --git a/frontend/lib/widgets/admin/parent_managmant_widget.dart b/frontend/lib/widgets/admin/parent_managmant_widget.dart index cfa8637..5b8e20a 100644 --- a/frontend/lib/widgets/admin/parent_managmant_widget.dart +++ b/frontend/lib/widgets/admin/parent_managmant_widget.dart @@ -75,6 +75,7 @@ class _ParentManagementWidgetState extends State { final parent = filteredParents[index]; return AdminUserCard( title: parent.user.fullName, + fallbackIcon: Icons.supervisor_account_outlined, avatarUrl: parent.user.photoUrl, subtitleLines: [ parent.user.email,