/// Widget de grille d'actions rapides du dashboard
/// Affiche les actions principales dans une grille responsive
library dashboard_quick_actions_grid;

import 'package:flutter/material.dart';
import '../../../../core/design_system/tokens/color_tokens.dart';
import '../../../../core/design_system/tokens/spacing_tokens.dart';
import '../../../../core/design_system/tokens/typography_tokens.dart';
import 'dashboard_quick_action_button.dart';

/// Widget de grille d'actions rapides
/// 
/// Affiche les actions principales dans une grille 2x2 :
/// - Ajouter un membre
/// - Enregistrer une cotisation
/// - Créer un événement
/// - Demande de solidarité
/// 
/// Chaque bouton déclenche une action spécifique
class DashboardQuickActionsGrid extends StatelessWidget {
  /// Callback pour les actions rapides
  final Function(String actionType)? onActionTap;

  /// Liste des actions à afficher
  final List<DashboardQuickAction>? actions;

  /// Constructeur de la grille d'actions rapides
  const DashboardQuickActionsGrid({
    super.key,
    this.onActionTap,
    this.actions,
  });

  /// Génère la liste des actions rapides par défaut
  List<DashboardQuickAction> _getDefaultActions() {
    return [
      DashboardQuickAction(
        icon: Icons.person_add,
        title: 'Ajouter Membre',
        color: ColorTokens.primary,
        onTap: () => onActionTap?.call('add_member'),
      ),
      DashboardQuickAction(
        icon: Icons.payment,
        title: 'Cotisation',
        color: ColorTokens.success,
        onTap: () => onActionTap?.call('add_cotisation'),
      ),
      DashboardQuickAction(
        icon: Icons.event_note,
        title: 'Événement',
        color: ColorTokens.tertiary,
        onTap: () => onActionTap?.call('create_event'),
      ),
      DashboardQuickAction(
        icon: Icons.volunteer_activism,
        title: 'Solidarité',
        color: ColorTokens.error,
        onTap: () => onActionTap?.call('solidarity_request'),
      ),
    ];
  }

  @override
  Widget build(BuildContext context) {
    final actionsToShow = actions ?? _getDefaultActions();
    
    return Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        Text(
          'Actions rapides',
          style: TypographyTokens.headlineSmall.copyWith(
            fontWeight: FontWeight.w700,
          ),
        ),
        const SizedBox(height: SpacingTokens.md),
        GridView.builder(
          shrinkWrap: true,
          physics: const NeverScrollableScrollPhysics(),
          gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
            crossAxisCount: 2,
            crossAxisSpacing: SpacingTokens.md,
            mainAxisSpacing: SpacingTokens.md,
            childAspectRatio: 2.2,
          ),
          itemCount: actionsToShow.length,
          itemBuilder: (context, index) {
            return DashboardQuickActionButton(action: actionsToShow[index]);
          },
        ),
      ],
    );
  }
}
