/// Widget de section d'activité récente du dashboard
/// Affiche les dernières activités dans une liste compacte
library dashboard_recent_activity_section;

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_activity_tile.dart';

/// Widget de section d'activité récente
/// 
/// Affiche les dernières activités de l'union :
/// - Nouveaux membres
/// - Cotisations reçues
/// - Événements créés
/// - Demandes de solidarité
/// 
/// Chaque activité peut être tapée pour plus de détails
class DashboardRecentActivitySection extends StatelessWidget {
  /// Callback pour les actions sur les activités
  final Function(String activityId)? onActivityTap;

  /// Liste des activités à afficher
  final List<DashboardActivity>? activities;

  /// Constructeur de la section d'activité récente
  const DashboardRecentActivitySection({
    super.key,
    this.onActivityTap,
    this.activities,
  });

  /// Génère la liste des activités récentes par défaut
  List<DashboardActivity> _getDefaultActivities() {
    return [
      DashboardActivity(
        title: 'Nouveau membre ajouté',
        subtitle: 'Marie Dupont a rejoint l\'union',
        icon: Icons.person_add,
        color: ColorTokens.primary,
        time: 'Il y a 2h',
        onTap: () => onActivityTap?.call('member_added_001'),
      ),
      DashboardActivity(
        title: 'Cotisation reçue',
        subtitle: 'Paiement de 50€ de Jean Martin',
        icon: Icons.payment,
        color: ColorTokens.success,
        time: 'Il y a 4h',
        onTap: () => onActivityTap?.call('cotisation_002'),
      ),
      DashboardActivity(
        title: 'Événement créé',
        subtitle: 'Assemblée générale programmée',
        icon: Icons.event,
        color: ColorTokens.tertiary,
        time: 'Hier',
        onTap: () => onActivityTap?.call('event_003'),
      ),
    ];
  }

  @override
  Widget build(BuildContext context) {
    final activitiesToShow = activities ?? _getDefaultActivities();

    return Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        Text(
          'Activité récente',
          style: TypographyTokens.headlineSmall.copyWith(
            fontWeight: FontWeight.w700,
          ),
        ),
        const SizedBox(height: SpacingTokens.md),
        Card(
          elevation: 1,
          child: Padding(
            padding: const EdgeInsets.symmetric(vertical: SpacingTokens.sm),
            child: Column(
              children: activitiesToShow.map((activity) {
                final isLast = activity == activitiesToShow.last;
                return Column(
                  children: [
                    DashboardActivityTile(activity: activity),
                    if (!isLast) const Divider(height: 1),
                  ],
                );
              }).toList(),
            ),
          ),
        ),
      ],
    );
  }
}
