import 'package:flutter/material.dart';
import 'package:geosector_app/presentation/widgets/dashboard_app_bar.dart';
import 'package:geosector_app/presentation/widgets/responsive_navigation.dart';
import 'package:geosector_app/core/theme/app_theme.dart'; // Pour les couleurs du thème

/// Layout commun pour les tableaux de bord utilisateur et administrateur
/// Combine DashboardAppBar et ResponsiveNavigation
class DashboardLayout extends StatelessWidget {
  /// Le contenu principal à afficher
  final Widget body;

  /// Le titre de la page
  final String title;

  /// L'index de la page sélectionnée
  final int selectedIndex;

  /// Callback appelé lorsqu'un élément de navigation est sélectionné
  final Function(int) onDestinationSelected;

  /// Liste des destinations de navigation
  final List<NavigationDestination> destinations;

  /// Actions supplémentaires à afficher dans l'AppBar
  final List<Widget>? additionalActions;

  /// Widgets à afficher en bas de la sidebar
  final List<Widget>? sidebarBottomItems;

  /// Indique si l'utilisateur est un administrateur
  final bool isAdmin;

  /// Callback appelé lorsque le bouton de déconnexion est pressé
  final VoidCallback? onLogoutPressed;

  const DashboardLayout({
    super.key,
    required this.body,
    required this.title,
    required this.selectedIndex,
    required this.onDestinationSelected,
    required this.destinations,
    this.additionalActions,
    this.sidebarBottomItems,
    this.isAdmin = false,
    this.onLogoutPressed,
  });

  @override
  Widget build(BuildContext context) {
    // Scaffold avec fond transparent (le fond est géré par AppScaffold)
    return Scaffold(
      key: ValueKey('dashboard_scaffold_$selectedIndex'),
      backgroundColor: Colors.transparent,
      appBar: DashboardAppBar(
        key: ValueKey('dashboard_appbar_$selectedIndex'),
        title: title,
        pageTitle: destinations[selectedIndex].label,
        isAdmin: isAdmin,
        onLogoutPressed: onLogoutPressed,
      ),
      body: ResponsiveNavigation(
        key: ValueKey('responsive_nav_$selectedIndex'),
        title: title,
        body: body,
        selectedIndex: selectedIndex,
        onDestinationSelected: onDestinationSelected,
        destinations: destinations,
        showNewPassageButton: false,
        onNewPassagePressed: null,
        sidebarBottomItems: sidebarBottomItems,
        isAdmin: isAdmin,
        showAppBar: false,
      ),
    );
  }
}
