label(fn (Tenant $record): string => TenantResource::lifecycleActionDescriptor($record, TenantActionSurface::TenantEditHeader)?->label ?? 'Restore') ->color('success') ->icon(fn (Tenant $record): string => TenantResource::lifecycleActionDescriptor($record, TenantActionSurface::TenantEditHeader)?->icon ?? 'heroicon-o-arrow-uturn-left') ->requiresConfirmation() ->modalHeading(fn (Tenant $record): string => TenantResource::lifecycleActionDescriptor($record, TenantActionSurface::TenantEditHeader)?->modalHeading ?? 'Restore tenant') ->modalDescription(fn (Tenant $record): string => TenantResource::lifecycleActionDescriptor($record, TenantActionSurface::TenantEditHeader)?->modalDescription ?? 'Restore this archived tenant to make it available again in normal management flows.') ->visible(fn (Tenant $record): bool => TenantResource::lifecycleActionDescriptor($record, TenantActionSurface::TenantEditHeader)?->key === 'restore') ->action(function (Tenant $record, WorkspaceAuditLogger $auditLogger): void { TenantResource::restoreTenant($record, $auditLogger); }) ) ->requireCapability(Capabilities::TENANT_DELETE) ->tooltip('You do not have permission to restore tenants.') ->preserveVisibility() ->destructive() ->apply(), UiEnforcement::forAction( Action::make('archive') ->label(fn (Tenant $record): string => TenantResource::lifecycleActionDescriptor($record, TenantActionSurface::TenantEditHeader)?->label ?? 'Archive') ->color('danger') ->icon(fn (Tenant $record): string => TenantResource::lifecycleActionDescriptor($record, TenantActionSurface::TenantEditHeader)?->icon ?? 'heroicon-o-archive-box-x-mark') ->requiresConfirmation() ->modalHeading(fn (Tenant $record): string => TenantResource::lifecycleActionDescriptor($record, TenantActionSurface::TenantEditHeader)?->modalHeading ?? 'Archive tenant') ->modalDescription(fn (Tenant $record): string => TenantResource::lifecycleActionDescriptor($record, TenantActionSurface::TenantEditHeader)?->modalDescription ?? 'Archive this tenant to retain it for inspection while removing it from active operating flows.') ->visible(fn (Tenant $record): bool => TenantResource::lifecycleActionDescriptor($record, TenantActionSurface::TenantEditHeader)?->key === 'archive') ->action(function (Tenant $record, WorkspaceAuditLogger $auditLogger): void { TenantResource::archiveTenant($record, $auditLogger); }) ) ->requireCapability(Capabilities::TENANT_DELETE) ->tooltip('You do not have permission to archive tenants.') ->preserveVisibility() ->destructive() ->apply(), ]) ->label('Lifecycle') ->icon('heroicon-o-archive-box') ->color('gray') ->visible(fn (): bool => $this->getRecord() instanceof Tenant && in_array( TenantResource::lifecycleActionDescriptor($this->getRecord(), TenantActionSurface::TenantEditHeader)?->key, ['archive', 'restore'], true, )), ])); } }