import 'package:flutter/material.dart';

/// Widget d'aide commun pour toute l'application
/// Affiche une boîte de dialogue modale avec une aide contextuelle
/// basée sur la page courante
class HelpDialog extends StatelessWidget {
  /// Nom de la page courante pour laquelle l'aide est demandée
  final String currentPage;

  const HelpDialog({
    super.key,
    required this.currentPage,
  });

  /// Affiche la boîte de dialogue d'aide
  static void show(BuildContext context, String currentPage) {
    showDialog(
      context: context,
      builder: (context) => HelpDialog(currentPage: currentPage),
    );
  }

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

    // Déterminer si nous sommes sur un appareil mobile ou un ordinateur de bureau
    final isDesktop = size.width > 900;

    // Calculer la largeur de la boîte de dialogue
    // 90% de la largeur de l'écran pour les mobiles
    // 50% de la largeur de l'écran pour les ordinateurs de bureau (max 600px)
    final dialogWidth = isDesktop
        ? size.width * 0.5 > 600
            ? 600.0
            : size.width * 0.5
        : size.width * 0.9;

    return Dialog(
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(16),
      ),
      // Définir la largeur de la boîte de dialogue
      child: Container(
        width: dialogWidth,
        padding: const EdgeInsets.all(24),
        child: Column(
          mainAxisSize: MainAxisSize.min,
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            // Titre de l'aide avec le nom de la page courante
            Row(
              children: [
                Icon(
                  Icons.help_outline,
                  color: theme.colorScheme.primary,
                  size: 28,
                ),
                const SizedBox(width: 12),
                Expanded(
                  child: Text(
                    'Aide - Page $currentPage',
                    style: theme.textTheme.titleLarge?.copyWith(
                      color: theme.colorScheme.primary,
                      fontWeight: FontWeight.bold,
                    ),
                  ),
                ),
                IconButton(
                  icon: const Icon(Icons.close),
                  onPressed: () => Navigator.of(context).pop(),
                  tooltip: 'Fermer',
                ),
              ],
            ),
            const Divider(height: 32),
            // Contenu de l'aide (à personnaliser selon la page)
            Text(
              'Contenu d\'aide pour la page "$currentPage".',
              style: theme.textTheme.bodyLarge,
            ),
            const SizedBox(height: 16),
            Text(
              'Cette section sera personnalisée avec des instructions spécifiques pour chaque page de l\'application.',
              style: theme.textTheme.bodyMedium,
            ),
            const SizedBox(height: 24),
            // Bouton pour fermer la boîte de dialogue
            Align(
              alignment: Alignment.centerRight,
              child: TextButton(
                onPressed: () => Navigator.of(context).pop(),
                style: TextButton.styleFrom(
                  backgroundColor: theme.colorScheme.primary,
                  foregroundColor: theme.colorScheme.onPrimary,
                  padding: const EdgeInsets.symmetric(
                    horizontal: 24,
                    vertical: 12,
                  ),
                ),
                child: const Text('Fermer'),
              ),
            ),
          ],
        ),
      ),
    );
  }
}
