feat(features): refontes adhesions/admin/auth/backup/contributions/dashboard/epargne/events

- adhesions : bloc complet avec events/states/model, dialogs paiement/rejet
- admin : users bloc, user management list/detail pages
- authentication : bloc + keycloak auth service + webview
- backup : bloc complet, repository, models
- contributions : bloc + widgets + export
- dashboard : widgets connectés (activities, events, notifications, search)
  + charts + monitoring + shortcuts
- epargne : repository, transactions, dialogs
- events : bloc complet, pages (detail, connected, wrapper), models
This commit is contained in:
dahoud
2026-04-15 20:26:48 +00:00
parent 45dcd2171e
commit 120434aba0
36 changed files with 903 additions and 1411 deletions

View File

@@ -181,11 +181,9 @@ class _EpargneDetailPageState extends State<EpargneDetailPage> {
final actif = c.statut == 'ACTIF';
return Scaffold(
appBar: AppBar(
title: const Text('Détail du compte'),
backgroundColor: Colors.transparent,
elevation: 0,
foregroundColor: ColorTokens.onSurface,
appBar: UFAppBar(
title: 'Détail du compte',
moduleGradient: ModuleColors.epargneGradient,
actions: [
IconButton(
icon: const Icon(Icons.history),
@@ -197,7 +195,7 @@ class _EpargneDetailPageState extends State<EpargneDetailPage> {
body: Container(
width: double.infinity,
decoration: const BoxDecoration(
color: AppColors.lightBackground,
color: AppColors.background,
),
child: SafeArea(
child: RefreshIndicator(

View File

@@ -7,6 +7,7 @@ import 'package:file_picker/file_picker.dart';
import '../../../../core/constants/lcb_ft_constants.dart';
import '../../../../core/data/repositories/parametres_lcb_ft_repository.dart';
import '../../../../core/utils/error_formatter.dart';
import '../../../../shared/design_system/tokens/app_colors.dart';
import '../../data/models/transaction_epargne_request.dart';
import '../../data/repositories/transaction_epargne_repository.dart';
import '../../data/services/document_upload_service.dart';
@@ -116,7 +117,7 @@ class _DepotEpargneDialogState extends State<DepotEpargneDialog> {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('✓ Pièce justificative uploadée avec succès'),
backgroundColor: Colors.green,
backgroundColor: AppColors.success,
),
);
} catch (e) {
@@ -128,7 +129,7 @@ class _DepotEpargneDialogState extends State<DepotEpargneDialog> {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text('Erreur upload : ${e.toString()}'),
backgroundColor: Colors.red,
backgroundColor: AppColors.error,
),
);
}
@@ -334,7 +335,7 @@ class _DepotEpargneDialogState extends State<DepotEpargneDialog> {
)
: Icon(
_pieceJustificativeId != null ? Icons.check_circle : Icons.attach_file,
color: _pieceJustificativeId != null ? Colors.green : null,
color: _pieceJustificativeId != null ? AppColors.success : null,
),
label: Text(
_pieceJustificativeId != null
@@ -344,7 +345,7 @@ class _DepotEpargneDialogState extends State<DepotEpargneDialog> {
style: OutlinedButton.styleFrom(
minimumSize: const Size(double.infinity, 48),
side: _pieceJustificativeId != null
? const BorderSide(color: Colors.green)
? const BorderSide(color: AppColors.success)
: null,
),
),
@@ -362,7 +363,7 @@ class _DepotEpargneDialogState extends State<DepotEpargneDialog> {
child: Text(
'Photo ou PDF (max 5 MB)',
style: Theme.of(context).textTheme.bodySmall?.copyWith(
color: Colors.grey,
color: AppColors.textTertiary,
),
),
),

View File

@@ -257,7 +257,7 @@ class _RetraitEpargneDialogState extends State<RetraitEpargneDialog> {
)
: Icon(
_pieceJustificativeId != null ? Icons.check_circle : Icons.attach_file,
color: _pieceJustificativeId != null ? Colors.green : null,
color: _pieceJustificativeId != null ? AppColors.success : null,
),
label: Text(
_pieceJustificativeId != null
@@ -267,7 +267,7 @@ class _RetraitEpargneDialogState extends State<RetraitEpargneDialog> {
style: OutlinedButton.styleFrom(
minimumSize: const Size(double.infinity, 48),
side: _pieceJustificativeId != null
? const BorderSide(color: Colors.green)
? const BorderSide(color: AppColors.success)
: null,
),
),
@@ -285,7 +285,7 @@ class _RetraitEpargneDialogState extends State<RetraitEpargneDialog> {
child: Text(
'Photo ou PDF (max 5 MB)',
style: Theme.of(context).textTheme.bodySmall?.copyWith(
color: Colors.grey,
color: AppColors.textTertiary,
),
),
),

View File

@@ -323,7 +323,7 @@ class _TransfertEpargneDialogState extends State<TransfertEpargneDialog> {
)
: Icon(
_pieceJustificativeId != null ? Icons.check_circle : Icons.attach_file,
color: _pieceJustificativeId != null ? Colors.green : null,
color: _pieceJustificativeId != null ? AppColors.success : null,
),
label: Text(
_pieceJustificativeId != null
@@ -333,7 +333,7 @@ class _TransfertEpargneDialogState extends State<TransfertEpargneDialog> {
style: OutlinedButton.styleFrom(
minimumSize: const Size(double.infinity, 48),
side: _pieceJustificativeId != null
? const BorderSide(color: Colors.green)
? const BorderSide(color: AppColors.success)
: null,
),
),
@@ -351,7 +351,7 @@ class _TransfertEpargneDialogState extends State<TransfertEpargneDialog> {
child: Text(
'Photo ou PDF (max 5 MB)',
style: Theme.of(context).textTheme.bodySmall?.copyWith(
color: Colors.grey,
color: AppColors.textTertiary,
),
),
),