import 'package:flutter/material.dart';

/// Badge de statut d'événement avec design moderne et compact.
///
/// Ce widget affiche le statut d'un événement (ouvert, fermé, annulé)
/// avec une couleur et une icône appropriées.
///
/// **Usage:**
/// ```dart
/// EventStatusBadge(status: 'ouvert')
/// EventStatusBadge(status: 'fermé')
/// ```
class EventStatusBadge extends StatelessWidget {
  const EventStatusBadge({
    required this.status,
    super.key,
  });

  /// Le statut de l'événement ('ouvert', 'fermé', 'annulé')
  final String status;

  /// Retourne les propriétés du statut.
  _StatusProperties get _properties {
    final lowerStatus = status.toLowerCase();
    switch (lowerStatus) {
      case 'fermé':
        return _StatusProperties(
          color: Colors.red,
          icon: Icons.lock,
          label: 'Fermé',
        );
      case 'annulé':
        return _StatusProperties(
          color: Colors.orange,
          icon: Icons.cancel,
          label: 'Annulé',
        );
      case 'ouvert':
      default:
        return _StatusProperties(
          color: Colors.green,
          icon: Icons.lock_open,
          label: 'Ouvert',
        );
    }
  }

  @override
  Widget build(BuildContext context) {
    final theme = Theme.of(context);
    final props = _properties;

    return Container(
      padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
      decoration: BoxDecoration(
        color: props.color.withOpacity(0.15),
        borderRadius: BorderRadius.circular(12),
        border: Border.all(
          color: props.color.withOpacity(0.5),
          width: 1,
        ),
      ),
      child: Row(
        mainAxisSize: MainAxisSize.min,
        children: [
          Icon(
            props.icon,
            color: props.color,
            size: 12,
          ),
          const SizedBox(width: 4),
          Text(
            props.label,
            style: theme.textTheme.bodySmall?.copyWith(
              color: props.color,
              fontSize: 11,
              fontWeight: FontWeight.w600,
            ),
          ),
        ],
      ),
    );
  }
}

/// Propriétés d'un statut d'événement.
class _StatusProperties {
  const _StatusProperties({
    required this.color,
    required this.icon,
    required this.label,
  });

  final Color color;
  final IconData icon;
  final String label;
}
