feat(ui): dark mode adaptatif sur 15 pages/widgets restants

Pattern AppColors pair (isDark ternaries) appliqué sur :
- login_page : SnackBar error color Color(0xFFDC2626) → AppColors.error
  (gradient brand intentionnel non modifié)
- help_support : barre de recherche + ExpansionTile + chevrons → scheme adaptatif
- system_settings : état 'Accès réservé' + unselectedLabelColor TabBar
- epargne : date/description/boutons OutlinedButton foregroundColor adaptatifs
- conversation_tile, connected_recent_activities, connected_upcoming_events
- dashboard_notifications_widget
- budgets_list_page, pending_approvals_page, approve/reject_dialog
- create_organization_page, edit_organization_page, about_page

Les couleurs sémantiques (error, success, warning, primary) restent inchangées.
Les blancs/gradients intentionnels (AppBars brand, logos payment) préservés.
This commit is contained in:
dahoud
2026-04-15 20:14:59 +00:00
parent b2f29922d3
commit ba779a7a40
15 changed files with 1002 additions and 1146 deletions

View File

@@ -53,6 +53,7 @@ class _ApproveDialogState extends State<ApproveDialog> {
@override
Widget build(BuildContext context) {
final isDark = Theme.of(context).brightness == Brightness.dark;
final currencyFormat = NumberFormat.currency(symbol: widget.approval.currency);
return AlertDialog(
@@ -72,9 +73,9 @@ class _ApproveDialogState extends State<ApproveDialog> {
Container(
padding: const EdgeInsets.all(SpacingTokens.md),
decoration: BoxDecoration(
color: AppColors.lightBackground,
color: isDark ? AppColors.surfaceDark : AppColors.surface,
borderRadius: BorderRadius.circular(SpacingTokens.radiusSm),
border: Border.all(color: AppColors.lightBorder),
border: Border.all(color: isDark ? AppColors.borderDark : AppColors.border),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
@@ -88,7 +89,7 @@ class _ApproveDialogState extends State<ApproveDialog> {
'Montant',
currencyFormat.format(widget.approval.amount),
valueStyle: AppTypography.actionText.copyWith(
color: AppColors.primaryGreen,
color: AppColors.primary,
fontWeight: FontWeight.bold,
),
),
@@ -145,7 +146,7 @@ class _ApproveDialogState extends State<ApproveDialog> {
label: const Text('Approuver'),
style: ElevatedButton.styleFrom(
backgroundColor: AppColors.success,
foregroundColor: Colors.white,
foregroundColor: AppColors.onPrimary,
),
),
],

View File

@@ -53,6 +53,7 @@ class _RejectDialogState extends State<RejectDialog> {
@override
Widget build(BuildContext context) {
final isDark = Theme.of(context).brightness == Brightness.dark;
final currencyFormat = NumberFormat.currency(symbol: widget.approval.currency);
return AlertDialog(
@@ -75,9 +76,9 @@ class _RejectDialogState extends State<RejectDialog> {
Container(
padding: const EdgeInsets.all(SpacingTokens.md),
decoration: BoxDecoration(
color: AppColors.lightBackground,
color: isDark ? AppColors.surfaceDark : AppColors.surface,
borderRadius: BorderRadius.circular(SpacingTokens.radiusSm),
border: Border.all(color: AppColors.lightBorder),
border: Border.all(color: isDark ? AppColors.borderDark : AppColors.border),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
@@ -91,7 +92,7 @@ class _RejectDialogState extends State<RejectDialog> {
'Montant',
currencyFormat.format(widget.approval.amount),
valueStyle: AppTypography.actionText.copyWith(
color: AppColors.primaryGreen,
color: AppColors.primary,
fontWeight: FontWeight.bold,
),
),
@@ -141,7 +142,7 @@ class _RejectDialogState extends State<RejectDialog> {
label: const Text('Rejeter'),
style: ElevatedButton.styleFrom(
backgroundColor: AppColors.error,
foregroundColor: Colors.white,
foregroundColor: AppColors.onError,
),
),
],