import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import '../../../core/providers/auth_provider.dart'; class DashboardShell extends ConsumerWidget { final Widget child; const DashboardShell({super.key, required this.child}); @override Widget build(BuildContext context, WidgetRef ref) { final location = GoRouterState.of(context).matchedLocation; final employee = ref.watch(authProvider).employee; int currentIndex = 0; if (location.startsWith('/dashboard/vehicles')) currentIndex = 1; if (location.startsWith('/dashboard/reservations')) currentIndex = 2; if (location.startsWith('/dashboard/customers')) currentIndex = 3; return Scaffold( drawer: _Drawer(employee: employee, ref: ref), body: child, bottomNavigationBar: NavigationBar( selectedIndex: currentIndex, onDestinationSelected: (i) { switch (i) { case 0: context.go('/dashboard'); case 1: context.go('/dashboard/vehicles'); case 2: context.go('/dashboard/reservations'); case 3: context.go('/dashboard/customers'); } }, destinations: const [ NavigationDestination( icon: Icon(Icons.dashboard_outlined), selectedIcon: Icon(Icons.dashboard), label: 'Dashboard', ), NavigationDestination( icon: Icon(Icons.directions_car_outlined), selectedIcon: Icon(Icons.directions_car), label: 'Vehicles', ), NavigationDestination( icon: Icon(Icons.event_note_outlined), selectedIcon: Icon(Icons.event_note), label: 'Reservations', ), NavigationDestination( icon: Icon(Icons.people_outlined), selectedIcon: Icon(Icons.people), label: 'Customers', ), ], ), ); } } class _Drawer extends StatelessWidget { final dynamic employee; final WidgetRef ref; const _Drawer({required this.employee, required this.ref}); @override Widget build(BuildContext context) { return Drawer( child: SafeArea( child: Column( children: [ Padding( padding: const EdgeInsets.all(20), child: Row( children: [ CircleAvatar( backgroundColor: const Color(0xFF1A56DB), radius: 24, child: Text( employee?.firstName.substring(0, 1).toUpperCase() ?? 'U', style: const TextStyle( color: Colors.white, fontWeight: FontWeight.bold), ), ), const SizedBox(width: 12), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( employee?.fullName ?? 'Employee', style: const TextStyle(fontWeight: FontWeight.w600), ), Text( employee?.role ?? '', style: const TextStyle( fontSize: 12, color: Color(0xFF6B7280)), ), ], ), ), ], ), ), const Divider(), const Spacer(), ListTile( leading: const Icon(Icons.logout, color: Color(0xFFE02424)), title: const Text('Sign Out', style: TextStyle(color: Color(0xFFE02424))), onTap: () async { Navigator.of(context).pop(); await ref.read(authProvider.notifier).logout(); }, ), const SizedBox(height: 8), ], ), ), ); } }