/// Widget de tuile d'activité individuelle
/// Affiche une activité récente avec icône, titre et timestamp
library dashboard_activity_tile;

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';

/// Modèle de données pour une activité récente
class DashboardActivity {
  /// Titre principal de l'activité
  final String title;
  
  /// Description détaillée de l'activité
  final String subtitle;
  
  /// Icône représentative de l'activité
  final IconData icon;
  
  /// Couleur thématique de l'activité
  final Color color;
  
  /// Timestamp de l'activité
  final String time;
  
  /// Callback optionnel lors du tap sur l'activité
  final VoidCallback? onTap;

  /// Constructeur du modèle d'activité
  const DashboardActivity({
    required this.title,
    required this.subtitle,
    required this.icon,
    required this.color,
    required this.time,
    this.onTap,
  });
}

/// Widget de tuile d'activité
/// 
/// Affiche une activité récente avec :
/// - Avatar coloré avec icône thématique
/// - Titre et description de l'activité
/// - Timestamp relatif
/// - Design compact et lisible
/// - Support du tap pour détails
class DashboardActivityTile extends StatelessWidget {
  /// Données de l'activité à afficher
  final DashboardActivity activity;

  /// Constructeur de la tuile d'activité
  const DashboardActivityTile({
    super.key,
    required this.activity,
  });

  @override
  Widget build(BuildContext context) {
    return ListTile(
      onTap: activity.onTap,
      contentPadding: const EdgeInsets.symmetric(
        horizontal: SpacingTokens.sm,
        vertical: SpacingTokens.xs,
      ),
      leading: CircleAvatar(
        radius: 16,
        backgroundColor: activity.color.withOpacity(0.1),
        child: Icon(
          activity.icon,
          color: activity.color,
          size: 16,
        ),
      ),
      title: Text(
        activity.title,
        style: TypographyTokens.bodySmall.copyWith(
          fontWeight: FontWeight.w600,
        ),
      ),
      subtitle: Text(
        activity.subtitle,
        style: TypographyTokens.bodySmall.copyWith(
          color: ColorTokens.onSurfaceVariant,
          fontSize: 12,
        ),
      ),
      trailing: SizedBox(
        width: 60,
        child: Text(
          activity.time,
          style: TypographyTokens.labelSmall.copyWith(
            color: ColorTokens.onSurfaceVariant,
            fontSize: 11,
          ),
          textAlign: TextAlign.end,
        ),
      ),
    );
  }
}
