makeOnboardingEntryAction() ->visible(fn (): bool => $this->getTableRecords()->count() > 0), ]; } protected function getTableEmptyStateActions(): array { return [ $this->makeOnboardingEntryAction(), ]; } private function makeOnboardingEntryAction(): Actions\Action { return Actions\Action::make('add_tenant') ->label($this->onboardingEntryLabel()) ->icon($this->onboardingEntryIcon()) ->url(route('admin.onboarding')); } private function onboardingEntryLabel(): string { $draftCount = $this->accessibleResumableDraftCount(); return match (true) { $draftCount === 1 => 'Continue onboarding', $draftCount > 1 => 'Choose onboarding draft', default => 'Add tenant', }; } private function onboardingEntryIcon(): string { $draftCount = $this->accessibleResumableDraftCount(); return match (true) { $draftCount === 1 => 'heroicon-m-arrow-path', $draftCount > 1 => 'heroicon-m-queue-list', default => 'heroicon-m-plus', }; } private function accessibleResumableDraftCount(): int { $user = auth()->user(); if (! $user instanceof User) { return 0; } $workspaceId = app(WorkspaceContext::class)->currentWorkspaceId(request()); if (! is_int($workspaceId)) { return 0; } $workspace = Workspace::query()->whereKey($workspaceId)->first(); if (! $workspace instanceof Workspace) { return 0; } return app(OnboardingDraftResolver::class)->resumableDraftsFor($user, $workspace)->count(); } }