import 'package:flutter/material.dart'; import '../core/app_colors.dart'; import '../core/app_theme.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; const EnterpriseHeader({ super.key, required this.title, required this.subtitle, required this.icon, required this.color, required this.accent, this.stats = const [], this.trailing, }); @override Widget build(BuildContext context) { return 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: 54), padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 9), decoration: BoxDecoration( gradient: LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors: [ color.withValues(alpha: 0.10), accent.withValues(alpha: 0.06), ], ), borderRadius: BorderRadius.circular(10), border: Border.all(color: AppColors.borderLight, width: 1.1), ), child: Row( children: [ if (stat.icon != null) ...[ Icon(stat.icon, color: color, size: 16), const SizedBox(width: 6), ], Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( stat.value, maxLines: 1, overflow: TextOverflow.ellipsis, style: const TextStyle( color: AppColors.textPrimary, fontSize: 14, fontWeight: FontWeight.w800, ), ), const SizedBox(height: 2), Text( stat.label, maxLines: 1, overflow: TextOverflow.ellipsis, style: const TextStyle( color: AppColors.textSecondary, fontSize: 11, fontWeight: FontWeight.w700, ), ), ], ), ), ], ), ); } } class EnterpriseSectionCard extends StatelessWidget { final String? title; final IconData? icon; final Color color; final Widget child; final EdgeInsetsGeometry padding; final Widget? trailing; const EnterpriseSectionCard({ super.key, this.title, this.icon, required this.color, required this.child, this.trailing, this.padding = const EdgeInsets.all(16), }); @override Widget build(BuildContext context) { return Container( padding: padding, decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(16), border: Border.all(color: AppColors.border, width: 1.1), boxShadow: [AppTheme.shadowLight], ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ if (title != null) ...[ Row( children: [ if (icon != null) ...[ Container( width: 34, height: 34, decoration: BoxDecoration( color: color.withValues(alpha: 0.10), borderRadius: BorderRadius.circular(10), ), child: Icon(icon, size: 19, color: color), ), const SizedBox(width: 10), ], Expanded( child: Text( title!, maxLines: 1, overflow: TextOverflow.ellipsis, style: const TextStyle( fontSize: 17, fontWeight: FontWeight.w800, color: AppColors.textPrimary, ), ), ), ?trailing, ], ), const SizedBox(height: 14), ], child, ], ), ); } } class EnterpriseFab extends StatelessWidget { final VoidCallback onPressed; final IconData icon; final Color color; const EnterpriseFab({ super.key, required this.onPressed, required this.icon, required this.color, }); @override Widget build(BuildContext context) { return FloatingActionButton( onPressed: onPressed, backgroundColor: color, elevation: 0, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)), child: Icon(icon, size: 26, color: Colors.white), ); } }