feat(shared): legacy presentation/ + shared design system + widgets
- lib/presentation : pages legacy (explore/network, notifications) avec BLoC - lib/shared/design_system : UnionFlow Design System v2 (tokens, components) + MD3 tokens + module_colors par feature - lib/shared/widgets : widgets transversaux (core_card, core_shimmer, error_widget, loading_widget, powered_by_lions_dev, etc.) - lib/shared/constants + utils
This commit is contained in:
@@ -76,7 +76,7 @@ class _FinanceView extends StatelessWidget {
|
||||
alignment: CrossAxisAlignment.center,
|
||||
),
|
||||
),
|
||||
const VerticalDivider(color: AppColors.lightBorder),
|
||||
const VerticalDivider(color: AppColors.border),
|
||||
Expanded(
|
||||
child: MiniMetricWidget(
|
||||
label: 'En attente',
|
||||
@@ -85,7 +85,7 @@ class _FinanceView extends StatelessWidget {
|
||||
alignment: CrossAxisAlignment.center,
|
||||
),
|
||||
),
|
||||
const VerticalDivider(color: AppColors.lightBorder),
|
||||
const VerticalDivider(color: AppColors.border),
|
||||
Expanded(
|
||||
child: MiniMetricWidget(
|
||||
label: 'Épargne',
|
||||
@@ -106,7 +106,7 @@ class _FinanceView extends StatelessWidget {
|
||||
style: AppTypography.badgeText.copyWith(
|
||||
color: Theme.of(context).brightness == Brightness.dark
|
||||
? AppColors.textSecondaryDark
|
||||
: AppColors.textSecondaryLight,
|
||||
: AppColors.textSecondary,
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -63,7 +63,7 @@ class _NetworkViewState extends State<_NetworkView> {
|
||||
color: Theme.of(context).scaffoldBackgroundColor,
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: isDark ? AppColors.darkBorder : AppColors.lightBorder,
|
||||
color: isDark ? AppColors.borderDark : AppColors.border,
|
||||
width: 1,
|
||||
),
|
||||
),
|
||||
@@ -75,9 +75,9 @@ class _NetworkViewState extends State<_NetworkView> {
|
||||
decoration: InputDecoration(
|
||||
hintText: 'Rechercher des membres, organisations...',
|
||||
hintStyle: AppTypography.subtitleSmall,
|
||||
prefixIcon: const Icon(Icons.search, size: 20, color: AppColors.textSecondaryLight),
|
||||
prefixIcon: const Icon(Icons.search, size: 20, color: AppColors.textSecondary),
|
||||
filled: true,
|
||||
fillColor: isDark ? AppColors.darkSurface : AppColors.lightSurface,
|
||||
fillColor: isDark ? AppColors.surfaceDark : AppColors.surface,
|
||||
contentPadding: const EdgeInsets.symmetric(vertical: 0), // Garder petit
|
||||
border: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(20),
|
||||
@@ -160,8 +160,8 @@ class _NetworkViewState extends State<_NetworkView> {
|
||||
},
|
||||
child: InfoBadge(
|
||||
text: item.isConnected ? 'Connecté' : 'Suivre',
|
||||
backgroundColor: item.isConnected ? AppColors.lightSurface : AppColors.primaryGreen,
|
||||
textColor: item.isConnected ? AppColors.textPrimaryLight : Colors.white,
|
||||
backgroundColor: item.isConnected ? AppColors.surface : AppColors.primary,
|
||||
textColor: item.isConnected ? AppColors.textPrimary : Colors.white,
|
||||
),
|
||||
),
|
||||
],
|
||||
|
||||
@@ -96,7 +96,7 @@ class _UnifiedFeedViewState extends State<_UnifiedFeedView> {
|
||||
),
|
||||
),
|
||||
body: RefreshIndicator(
|
||||
color: AppColors.primaryGreen,
|
||||
color: AppColors.primary,
|
||||
backgroundColor: Theme.of(context).scaffoldBackgroundColor,
|
||||
onRefresh: () async {
|
||||
context.read<UnifiedFeedBloc>().add(const LoadFeedRequested(isRefresh: true));
|
||||
@@ -189,8 +189,8 @@ class _UnifiedFeedViewState extends State<_UnifiedFeedView> {
|
||||
const SizedBox(width: 6),
|
||||
InfoBadge(
|
||||
text: item.type.name.toUpperCase(),
|
||||
backgroundColor: AppColors.primaryGreen.withOpacity(0.1),
|
||||
textColor: AppColors.primaryGreen,
|
||||
backgroundColor: AppColors.primary.withOpacity(0.1),
|
||||
textColor: AppColors.primary,
|
||||
),
|
||||
]
|
||||
],
|
||||
@@ -206,7 +206,7 @@ class _UnifiedFeedViewState extends State<_UnifiedFeedView> {
|
||||
size: 16,
|
||||
color: Theme.of(context).brightness == Brightness.dark
|
||||
? AppColors.textSecondaryDark
|
||||
: AppColors.textSecondaryLight,
|
||||
: AppColors.textSecondary,
|
||||
),
|
||||
onPressed: () => _showPostOptionsMenu(context, item),
|
||||
)
|
||||
|
||||
@@ -116,7 +116,7 @@ class _NotificationView extends StatelessWidget {
|
||||
itemCount: state.items.length,
|
||||
itemBuilder: (context, index) {
|
||||
final item = state.items[index];
|
||||
final unreadColor = isDark ? const Color(0xFF1B2E26) : const Color(0xFFE8F5E9);
|
||||
final unreadColor = isDark ? const Color(0xFF1A1F2E) : const Color(0xFFEFF6FF);
|
||||
|
||||
return InkWell(
|
||||
onTap: () {
|
||||
@@ -136,8 +136,8 @@ class _NotificationView extends StatelessWidget {
|
||||
Icon(
|
||||
item.category == 'finance' ? Icons.payment : Icons.event,
|
||||
color: item.isRead
|
||||
? (isDark ? AppColors.textSecondaryDark : AppColors.textSecondaryLight)
|
||||
: AppColors.primaryGreen,
|
||||
? (isDark ? AppColors.textSecondaryDark : AppColors.textSecondary)
|
||||
: AppColors.primary,
|
||||
size: 20,
|
||||
),
|
||||
const SizedBox(width: 12),
|
||||
|
||||
@@ -48,7 +48,7 @@ class MiniHeaderBar extends StatelessWidget implements PreferredSizeWidget {
|
||||
Text(
|
||||
title,
|
||||
style: AppTypography.headerSmall.copyWith(
|
||||
color: isDark ? AppColors.textPrimaryDark : AppColors.textPrimaryLight,
|
||||
color: isDark ? AppColors.textPrimaryDark : AppColors.textPrimary,
|
||||
),
|
||||
),
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ class MiniMetricWidget extends StatelessWidget {
|
||||
style: AppTypography.badgeText.copyWith(
|
||||
color: Theme.of(context).brightness == Brightness.dark
|
||||
? AppColors.textSecondaryDark
|
||||
: AppColors.textSecondaryLight,
|
||||
: AppColors.textSecondary,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 2),
|
||||
@@ -38,7 +38,7 @@ class MiniMetricWidget extends StatelessWidget {
|
||||
style: AppTypography.actionText.copyWith(
|
||||
color: valueColor ?? (Theme.of(context).brightness == Brightness.dark
|
||||
? AppColors.textPrimaryDark
|
||||
: AppColors.textPrimaryLight),
|
||||
: AppColors.textPrimary),
|
||||
),
|
||||
),
|
||||
],
|
||||
|
||||
@@ -42,7 +42,7 @@ class ProfileDrawer extends StatelessWidget {
|
||||
Text(
|
||||
name,
|
||||
style: AppTypography.headerSmall.copyWith(
|
||||
color: isDark ? AppColors.textPrimaryDark : AppColors.textPrimaryLight,
|
||||
color: isDark ? AppColors.textPrimaryDark : AppColors.textPrimary,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 4),
|
||||
@@ -68,7 +68,7 @@ class ProfileDrawer extends StatelessWidget {
|
||||
},
|
||||
),
|
||||
|
||||
Divider(color: isDark ? AppColors.darkBorder : AppColors.lightBorder, height: 1),
|
||||
Divider(color: isDark ? AppColors.borderDark : AppColors.border, height: 1),
|
||||
|
||||
// Liens / Actions (factorisés)
|
||||
Expanded(
|
||||
@@ -84,7 +84,7 @@ class ProfileDrawer extends StatelessWidget {
|
||||
),
|
||||
),
|
||||
|
||||
Divider(color: isDark ? AppColors.darkBorder : AppColors.lightBorder, height: 1),
|
||||
Divider(color: isDark ? AppColors.borderDark : AppColors.border, height: 1),
|
||||
|
||||
// Bouton Déconnexion
|
||||
Padding(
|
||||
@@ -124,14 +124,14 @@ class ProfileDrawer extends StatelessWidget {
|
||||
Icon(
|
||||
icon,
|
||||
size: 22,
|
||||
color: isDark ? AppColors.textPrimaryDark : AppColors.textPrimaryLight,
|
||||
color: isDark ? AppColors.textPrimaryDark : AppColors.textPrimary,
|
||||
),
|
||||
const SizedBox(width: 20),
|
||||
Text(
|
||||
title,
|
||||
style: AppTypography.headerSmall.copyWith(
|
||||
fontWeight: FontWeight.w500,
|
||||
color: isDark ? AppColors.textPrimaryDark : AppColors.textPrimaryLight,
|
||||
color: isDark ? AppColors.textPrimaryDark : AppColors.textPrimary,
|
||||
),
|
||||
),
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user