default() ->id('admin') ->path('admin') ->spa() ->colors([ 'primary' => Color::Blue, ]) ->globalSearchKeyBindings(['command+k', 'ctrl+k']) ->favicon(config('settings.logo') ? Storage::url(config('settings.logo')) : null) ->discoverResources(in: app_path('Admin/Resources'), for: 'App\\Admin\\Resources') ->discoverPages(in: app_path('Admin/Pages'), for: 'App\\Admin\\Pages') ->discoverClusters(in: app_path('Admin/Clusters'), for: 'App\\Admin\\Clusters') ->userMenuItems([ MenuItem::make() ->label('Exit Admin') ->url('/') ->icon('heroicon-s-arrow-uturn-left') ->sort(24), ]) ->discoverWidgets(in: app_path('Admin/Widgets'), for: 'App\\Admin\\Widgets') ->renderHook( PanelsRenderHook::SIDEBAR_NAV_END, fn (): string => Blade::render(''), ) ->navigationGroups([ 'Administration', 'Configuration', 'Extensions', 'System', ]) ->middleware([ EncryptCookies::class, AddQueuedCookiesToResponse::class, StartSession::class, ImpersonateMiddleware::class, AuthenticateSession::class, ShareErrorsFromSession::class, VerifyCsrfToken::class, SubstituteBindings::class, DisableBladeIconComponents::class, DispatchServingFilamentEvent::class, ]) ->theme(asset('css/filament/admin/theme.css')) ->authMiddleware([ Authenticate::class, ]); try { foreach (collect(Extension::where(function ($query) { $query->where('enabled', true)->orWhere('type', 'server')->orWhere('type', 'gateway'); })->get())->unique('extension') as $extension) { $panel->discoverResources(in: base_path('extensions' . '/' . $extension->path . '/Admin/Resources'), for: $extension->namespace . '\\Admin\\Resources'); $panel->discoverPages(in: base_path('extensions' . '/' . $extension->path . '/Admin/Pages'), for: $extension->namespace . '\\Admin\\Pages'); $panel->discoverClusters(in: base_path('extensions' . '/' . $extension->path . '/Admin/Clusters'), for: $extension->namespace . '\\Admin\\Clusters'); } } catch (\Exception $e) { // Do nothing } return $panel; } }