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.lgBorder, ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ if (showIcon) ...[ Container( width: 42, height: 42, decoration: BoxDecoration( color: color.withValues(alpha: 0.10), borderRadius: AppRadius.smBorder, ), child: Icon(icon, color: color, size: 22), ), 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, ), ), if (i != stats.length - 1) const SizedBox(width: 8), ], ], ), ], ], ), ); } } class _HeaderStat extends StatelessWidget { final EnterpriseStat stat; final Color color; const _HeaderStat({required this.stat, required this.color}); @override Widget build(BuildContext context) { return Container( constraints: const BoxConstraints(minHeight: 66), padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 11), decoration: BoxDecoration( color: const Color(0xFFF7F8FA), borderRadius: AppRadius.smBorder, ), 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.w700, ), ), const SizedBox(height: 2), Text( stat.label, maxLines: 1, overflow: TextOverflow.ellipsis, style: const TextStyle( color: AppColors.textSecondary, fontSize: 12, fontWeight: FontWeight.w600, ), ), ], ), ), ], ), ); } }