default() ->id('admin') ->path('admin') ->brandName('StreakFit 🔥') ->favicon(asset('favicon.ico')) ->login() // Guard web standard : n'interfère pas avec l'auth Sanctum du front. ->authGuard('web') // Accent "flamme" : amber en primaire, orange en secondaire (warning), gris zinc neutre. ->colors([ 'primary' => Color::Amber, 'warning' => Color::Orange, 'danger' => Color::Red, 'success' => Color::Emerald, 'gray' => Color::Zinc, ]) // Dark mode disponible via le sélecteur clair/sombre (activé explicitement, non forcé). ->darkMode(condition: true, isForced: false) // Barre latérale repliable sur desktop (gain de place sur les grandes tables). ->sidebarCollapsibleOnDesktop() // Ordre d'affichage des groupes de navigation dans la sidebar. ->navigationGroups([ 'Catalogue', 'Communauté', 'Entraînement', 'Gamification', 'Système', ]) ->discoverResources(in: app_path('Filament/Resources'), for: 'App\Filament\Resources') ->discoverPages(in: app_path('Filament/Pages'), for: 'App\Filament\Pages') ->pages([ Dashboard::class, ]) ->discoverWidgets(in: app_path('Filament/Widgets'), for: 'App\Filament\Widgets') ->widgets([ StreakFitStatsOverview::class, WorkoutSessionsPerDayChart::class, UsersGrowthChart::class, ExercisesByBodyPartChart::class, TopExercisesChart::class, ]) // Gestion des rôles/permissions (Spatie) via Filament Shield — fournit sa propre // RoleResource, rangée dans "Communauté" à côté de l'utilisateur. ->plugins([ FilamentShieldPlugin::make() ->navigationGroup('Communauté') ->navigationSort(2), ]) ->middleware([ EncryptCookies::class, AddQueuedCookiesToResponse::class, StartSession::class, AuthenticateSession::class, ShareErrorsFromSession::class, PreventRequestForgery::class, SubstituteBindings::class, DisableBladeIconComponents::class, DispatchServingFilamentEvent::class, ]) ->authMiddleware([ Authenticate::class, ]); } }