searchable(false) ->columns([ ImageColumn::make('picture') ->visibleFrom('lg') ->label('') ->extraImgAttributes(['class' => 'rounded-full']) ->defaultImageUrl(fn (User $user) => 'https://gravatar.com/avatar/' . md5(strtolower($user->email))), TextColumn::make('external_id') ->searchable() ->hidden(), TextColumn::make('uuid') ->label('UUID') ->hidden() ->searchable(), TextColumn::make('username') ->searchable(), TextColumn::make('email') ->searchable() ->icon('tabler-mail'), IconColumn::make('use_totp') ->label('2FA') ->visibleFrom('lg') ->icon(fn (User $user) => $user->use_totp ? 'tabler-lock' : 'tabler-lock-open-off') ->boolean() ->sortable(), TextColumn::make('roles.name') ->label('Roles') ->badge() ->icon('tabler-users-group') ->placeholder('No roles'), TextColumn::make('servers_count') ->counts('servers') ->icon('tabler-server') ->label('Servers'), TextColumn::make('subusers_count') ->visibleFrom('sm') ->label('Subusers') ->counts('subusers') ->icon('tabler-users'), ]) ->actions([ EditAction::make(), ]) ->checkIfRecordIsSelectableUsing(fn (User $user) => auth()->user()->id !== $user->id && !$user->servers_count) ->bulkActions([ BulkActionGroup::make([ DeleteBulkAction::make() ->authorize(fn () => auth()->user()->can('delete user')), ]), ]); } protected function getHeaderActions(): array { return [ CreateAction::make() ->label('Create User'), ]; } }