import 'package:flutter/material.dart'; import '../core/app_colors.dart'; import '../core/app_design_tokens.dart'; class EnterpriseStat { final String label; final String value; final IconData? icon; const EnterpriseStat({required this.label, required this.value, this.icon}); } class EnterpriseHeader extends StatelessWidget { final String title; final String subtitle; final IconData icon; final Color color; final Color accent; final List stats; final Widget? trailing; final bool showIcon; const EnterpriseHeader({ super.key, required this.title, required this.subtitle, required this.icon, required this.color, required this.accent, this.stats = const [], this.trailing, this.showIcon = true, }); @override Widget build(BuildContext context) { return Container( padding: AppSpacing.panel, decoration: BoxDecoration( color: Colors.white, borderRadius: AppRadius.xlBorder, border: Border.all(color: AppColors.border, width: 1.1), boxShadow: AppShadows.soft, ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ if (showIcon) ...[ Container( width: 46, height: 46, decoration: BoxDecoration( gradient: LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors: [color, accent], ), borderRadius: BorderRadius.circular(14), ), child: Icon(icon, color: Colors.white, size: 25), ), const SizedBox(width: 12), ], Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( title, maxLines: 1, overflow: TextOverflow.ellipsis, style: AppTextStyles.summaryTitle, ), const SizedBox(height: 3), Text( subtitle, maxLines: 2, overflow: TextOverflow.ellipsis, style: AppTextStyles.summarySubtitle, ), ], ), ), if (trailing != null) ...[const SizedBox(width: 10), trailing!], ], ), if (stats.isNotEmpty) ...[ const SizedBox(height: 14), Row( children: [ for (var i = 0; i < stats.length; i++) ...[ Expanded( child: _HeaderStat( stat: stats[i], color: i.isEven ? color : accent, accent: i.isEven ? accent : color, ), ), if (i != stats.length - 1) const SizedBox(width: 8), ], ], ), ], ], ), ); } } class _HeaderStat extends StatelessWidget { final EnterpriseStat stat; final Color color; final Color accent; const _HeaderStat({ required this.stat, required this.color, required this.accent, }); @override Widget build(BuildContext context) { return Container( constraints: const BoxConstraints(minHeight: 66), padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 11), decoration: BoxDecoration( gradient: LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors: [ color.withValues(alpha: 0.10), accent.withValues(alpha: 0.06), ], ), borderRadius: AppRadius.smBorder, border: Border.all(color: AppColors.borderLight, width: 1.1), ), child: Row( children: [ if (stat.icon != null) ...[ Icon(stat.icon, color: color, size: 19), const SizedBox(width: 8), ], Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( stat.value, maxLines: 1, overflow: TextOverflow.ellipsis, style: const TextStyle( color: AppColors.textPrimary, fontSize: 17, fontWeight: FontWeight.w900, ), ), const SizedBox(height: 2), Text( stat.label, maxLines: 1, overflow: TextOverflow.ellipsis, style: const TextStyle( color: AppColors.textSecondary, fontSize: 12, fontWeight: FontWeight.w800, ), ), ], ), ), ], ), ); } }