*/ public function getTabs(): array { $stats = FindingExceptionResource::exceptionStatsForCurrentTenant(); $needsAction = $stats['pending'] + $stats['expiring'] + $stats['expired']; return [ 'all' => Tab::make('All') ->icon('heroicon-m-list-bullet'), 'needs_action' => Tab::make('Needs action') ->icon('heroicon-m-exclamation-triangle') ->modifyQueryUsing(fn (Builder $query) => $query->whereIn('status', [ FindingException::STATUS_PENDING, FindingException::STATUS_EXPIRING, FindingException::STATUS_EXPIRED, ])) ->badge($needsAction > 0 ? $needsAction : null) ->badgeColor('warning'), 'active' => Tab::make('Active') ->icon('heroicon-m-check-badge') ->modifyQueryUsing(fn (Builder $query) => $query->where('status', FindingException::STATUS_ACTIVE)), 'historical' => Tab::make('Historical') ->icon('heroicon-m-archive-box') ->modifyQueryUsing(fn (Builder $query) => $query->whereIn('status', [ FindingException::STATUS_REJECTED, FindingException::STATUS_REVOKED, FindingException::STATUS_SUPERSEDED, ])), ]; } protected function getHeaderActions(): array { return [ Action::make('open_findings') ->label('Open findings') ->icon('heroicon-o-arrow-top-right-on-square') ->color('gray') ->url(FindingResource::getUrl('index')), Action::make('open_approval_queue') ->label('Open approval queue') ->icon('heroicon-o-arrow-top-right-on-square') ->color('gray') ->visible(fn (): bool => FindingExceptionResource::canAccessApprovalQueueForTenant()) ->url(fn (): ?string => FindingExceptionResource::approvalQueueUrl()), ]; } }