import 'package:flutter/material.dart'; import '../tokens/app_colors.dart'; import '../tokens/unionflow_colors.dart'; /// Bouton d'action rapide UnionFlow /// Adaptatif dark/light via AppColors class UnionActionButton extends StatelessWidget { final IconData icon; final String label; final VoidCallback onTap; final Color? backgroundColor; final Color? iconColor; const UnionActionButton({ super.key, required this.icon, required this.label, required this.onTap, this.backgroundColor, this.iconColor, }); @override Widget build(BuildContext context) { final isDark = Theme.of(context).brightness == Brightness.dark; final bgColor = isDark ? AppColors.surfaceDark : AppColors.surface; final borderColor = isDark ? AppColors.borderDark : AppColors.border; final accentColor = iconColor ?? backgroundColor ?? UnionFlowColors.unionGreen; return InkWell( onTap: onTap, borderRadius: BorderRadius.circular(10), child: Container( padding: const EdgeInsets.symmetric(vertical: 9, horizontal: 8), decoration: BoxDecoration( color: bgColor, borderRadius: BorderRadius.circular(10), border: Border.all(color: borderColor), ), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Icon(icon, size: 16, color: accentColor), const SizedBox(width: 6), Flexible( child: Text( label, style: TextStyle( fontSize: 11, fontWeight: FontWeight.w600, color: accentColor, ), textAlign: TextAlign.center, maxLines: 1, overflow: TextOverflow.ellipsis, ), ), ], ), ), ); } } /// Grid d'actions rapides class UnionActionGrid extends StatelessWidget { final List actions; const UnionActionGrid({ super.key, required this.actions, }); @override Widget build(BuildContext context) { return Row( children: [ for (int i = 0; i < actions.length; i++) ...[ Expanded(child: actions[i]), if (i < actions.length - 1) const SizedBox(width: 10), ], ], ); } }