default() ->id('admin') ->path('admin') ->login(Login::class) ->authenticatedRoutes(function (Panel $panel): void { ChooseWorkspace::registerRoutes($panel); ChooseTenant::registerRoutes($panel); NoAccess::registerRoutes($panel); }) ->tenant(Tenant::class, slugAttribute: 'external_id') ->tenantRoutePrefix('t') ->tenantMenu(fn (): bool => filled(Filament::getTenant())) ->searchableTenantMenu() ->tenantRegistration(RegisterTenant::class) ->colors([ 'primary' => Color::Amber, ]) ->navigationItems([ NavigationItem::make('Workspaces') ->url(function (): string { $tenant = Filament::getTenant(); if ($tenant instanceof Tenant) { return route('filament.admin.resources.workspaces.index', ['tenant' => $tenant->external_id]); } return ChooseWorkspace::getUrl(); }) ->icon('heroicon-o-squares-2x2') ->group('Settings') ->sort(10), ]) ->renderHook( PanelsRenderHook::HEAD_END, fn () => view('filament.partials.livewire-intercept-shim')->render() ) ->renderHook( PanelsRenderHook::USER_MENU_PROFILE_AFTER, fn () => view('filament.partials.workspace-switcher')->render() ) ->renderHook( PanelsRenderHook::BODY_END, fn () => (bool) config('tenantpilot.bulk_operations.progress_widget_enabled', true) ? view('livewire.bulk-operation-progress-wrapper')->render() : '' ) ->discoverClusters(in: app_path('Filament/Clusters'), for: 'App\Filament\Clusters') ->discoverResources(in: app_path('Filament/Resources'), for: 'App\Filament\Resources') ->discoverPages(in: app_path('Filament/Pages'), for: 'App\Filament\Pages') ->pages([ TenantDashboard::class, ]) ->discoverWidgets(in: app_path('Filament/Widgets'), for: 'App\Filament\Widgets') ->widgets([ AccountWidget::class, FilamentInfoWidget::class, ]) ->databaseNotifications() ->middleware([ EncryptCookies::class, AddQueuedCookiesToResponse::class, StartSession::class, AuthenticateSession::class, ShareErrorsFromSession::class, VerifyCsrfToken::class, SubstituteBindings::class, 'ensure-correct-guard:web', 'ensure-workspace-selected', 'ensure-filament-tenant-selected', DenyNonMemberTenantAccess::class, DisableBladeIconComponents::class, DispatchServingFilamentEvent::class, ]) ->authMiddleware([ Authenticate::class, ]); if (! app()->runningUnitTests()) { $panel->viteTheme('resources/css/filament/admin/theme.css'); } return $panel; } }