defaultSort('name') ->columns([ TextColumn::make('name') ->label(__('panel.roles.fields.name')) ->weight('medium') ->badge() ->color(fn (string $state) => $state === 'super_admin' ? 'danger' : 'primary') ->description(fn (Role $record) => in_array($record->name, Permissions::protectedRoles(), true) ? __('panel.roles.protected') : null) ->searchable() ->sortable(), TextColumn::make('permissions_count') ->label(__('panel.roles.fields.permissions')) ->counts('permissions') // super_admin holds no permission rows: it is granted // everything by the Gate::before hook instead. ->formatStateUsing(fn ($state, Role $record) => $record->name === 'super_admin' ? '∞' : $state) ->badge(), TextColumn::make('users_count') ->label(__('panel.roles.fields.users_count')) ->counts('users') ->badge() ->color('gray'), ]) ->recordActions([ EditAction::make(), DeleteAction::make(), ]); } }