feat(features): refontes explore/feed/finance_workflow/help/logs/members/notifications
- explore + feed : pages de découverte (réseau, fil d'actualité) - finance_workflow : approvals bloc + budgets bloc + dialogs - help : support page avec FAQ + contact - logs : monitoring bloc avec metrics + alerts + searchLogs - members : recherche avancée, bulk actions, bloc complet, import/export - notifications : bloc + page
This commit is contained in:
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
||||
|
||||
import '../../../../shared/models/membre_search_result.dart' as search_model;
|
||||
import '../../data/models/membre_complete_model.dart';
|
||||
import '../../../../shared/design_system/tokens/app_colors.dart';
|
||||
|
||||
/// Widget d'affichage des résultats de recherche de membres
|
||||
/// Gère la pagination, le tri et l'affichage des membres trouvés
|
||||
@@ -56,20 +57,20 @@ class _MembreSearchResultsState extends State<MembreSearchResults> {
|
||||
Icon(
|
||||
Icons.search_off,
|
||||
size: 64,
|
||||
color: Colors.grey[400],
|
||||
color: Theme.of(context).colorScheme.onSurfaceVariant,
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
Text(
|
||||
'Aucun membre trouvé',
|
||||
style: Theme.of(context).textTheme.titleLarge?.copyWith(
|
||||
color: Colors.grey[600],
|
||||
color: Theme.of(context).colorScheme.onSurfaceVariant,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
Text(
|
||||
'Essayez de modifier vos critères de recherche',
|
||||
style: Theme.of(context).textTheme.bodyMedium?.copyWith(
|
||||
color: Colors.grey[500],
|
||||
color: Theme.of(context).colorScheme.onSurfaceVariant,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 24),
|
||||
@@ -117,9 +118,9 @@ class _MembreSearchResultsState extends State<MembreSearchResults> {
|
||||
),
|
||||
Chip(
|
||||
label: Text('${widget.result.executionTimeMs}ms'),
|
||||
backgroundColor: Colors.green.withOpacity(0.1),
|
||||
backgroundColor: AppColors.success.withOpacity(0.1),
|
||||
labelStyle: const TextStyle(
|
||||
color: Colors.green,
|
||||
color: AppColors.success,
|
||||
fontSize: 12,
|
||||
),
|
||||
),
|
||||
@@ -130,7 +131,7 @@ class _MembreSearchResultsState extends State<MembreSearchResults> {
|
||||
Text(
|
||||
'Critères: ${widget.result.criteria.description}',
|
||||
style: Theme.of(context).textTheme.bodySmall?.copyWith(
|
||||
color: Colors.grey[600],
|
||||
color: Theme.of(context).colorScheme.onSurfaceVariant,
|
||||
),
|
||||
maxLines: 2,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
@@ -162,7 +163,7 @@ class _MembreSearchResultsState extends State<MembreSearchResults> {
|
||||
child: Text(
|
||||
_getInitials(membre.nom, membre.prenom),
|
||||
style: const TextStyle(
|
||||
color: Colors.white,
|
||||
color: AppColors.onPrimary,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
@@ -177,7 +178,7 @@ class _MembreSearchResultsState extends State<MembreSearchResults> {
|
||||
if (membre.email.isNotEmpty)
|
||||
Row(
|
||||
children: [
|
||||
const Icon(Icons.email, size: 14, color: Colors.grey),
|
||||
const Icon(Icons.email, size: 14, color: AppColors.textTertiary),
|
||||
const SizedBox(width: 4),
|
||||
Expanded(
|
||||
child: Text(
|
||||
@@ -191,7 +192,7 @@ class _MembreSearchResultsState extends State<MembreSearchResults> {
|
||||
if (membre.telephone?.isNotEmpty == true)
|
||||
Row(
|
||||
children: [
|
||||
const Icon(Icons.phone, size: 14, color: Colors.grey),
|
||||
const Icon(Icons.phone, size: 14, color: AppColors.textTertiary),
|
||||
const SizedBox(width: 4),
|
||||
Text(
|
||||
membre.telephone!,
|
||||
@@ -202,7 +203,7 @@ class _MembreSearchResultsState extends State<MembreSearchResults> {
|
||||
if (membre.organisationNom?.isNotEmpty == true)
|
||||
Row(
|
||||
children: [
|
||||
const Icon(Icons.business, size: 14, color: Colors.grey),
|
||||
const Icon(Icons.business, size: 14, color: AppColors.textTertiary),
|
||||
const SizedBox(width: 4),
|
||||
Expanded(
|
||||
child: Text(
|
||||
@@ -225,7 +226,7 @@ class _MembreSearchResultsState extends State<MembreSearchResults> {
|
||||
_formatRoles(membre.role!),
|
||||
style: const TextStyle(
|
||||
fontSize: 10,
|
||||
color: Colors.grey,
|
||||
color: AppColors.textTertiary,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
@@ -261,8 +262,8 @@ class _MembreSearchResultsState extends State<MembreSearchResults> {
|
||||
icon: const Icon(Icons.chevron_left),
|
||||
label: const Text('Précédent'),
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor: Colors.grey[100],
|
||||
foregroundColor: Colors.grey[700],
|
||||
backgroundColor: Theme.of(context).colorScheme.surfaceContainerHighest,
|
||||
foregroundColor: Theme.of(context).colorScheme.onSurfaceVariant,
|
||||
),
|
||||
),
|
||||
|
||||
@@ -289,7 +290,7 @@ class _MembreSearchResultsState extends State<MembreSearchResults> {
|
||||
label: const Text('Suivant'),
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor: Theme.of(context).primaryColor,
|
||||
foregroundColor: Colors.white,
|
||||
foregroundColor: AppColors.onPrimary,
|
||||
),
|
||||
),
|
||||
],
|
||||
@@ -322,15 +323,15 @@ class _MembreSearchResultsState extends State<MembreSearchResults> {
|
||||
Color _getStatusColor(StatutMembre statut) {
|
||||
switch (statut) {
|
||||
case StatutMembre.actif:
|
||||
return Colors.green;
|
||||
return AppColors.success;
|
||||
case StatutMembre.inactif:
|
||||
return Colors.orange;
|
||||
return AppColors.warning;
|
||||
case StatutMembre.suspendu:
|
||||
return Colors.red;
|
||||
return AppColors.error;
|
||||
case StatutMembre.enAttente:
|
||||
return Colors.grey;
|
||||
return AppColors.textTertiary;
|
||||
default:
|
||||
return Colors.grey;
|
||||
return AppColors.textTertiary;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user