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') ->label(trans('admin/user.username')) ->searchable(), TextColumn::make('email') ->label(trans('admin/user.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(trans('admin/user.roles')) ->badge() ->icon('tabler-users-group') ->placeholder(trans('admin/user.no_roles')), TextColumn::make('servers_count') ->counts('servers') ->icon('tabler-server') ->label(trans('admin/user.servers')), TextColumn::make('subusers_count') ->visibleFrom('sm') ->label(trans('admin/user.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(), ]; } }