searchable(false) ->checkIfRecordIsSelectableUsing(fn (Node $node) => $node->servers_count <= 0) ->columns([ Tables\Columns\TextColumn::make('uuid') ->label('UUID') ->searchable() ->hidden(), Tables\Columns\IconColumn::make('health') ->alignCenter() ->state(fn (Node $node) => $node) ->view('livewire.columns.version-column'), Tables\Columns\TextColumn::make('name') ->icon('tabler-server-2') ->sortable() ->searchable(), Tables\Columns\TextColumn::make('fqdn') ->visibleFrom('md') ->label('Address') ->icon('tabler-network') ->sortable() ->searchable(), Tables\Columns\TextColumn::make('memory') ->visibleFrom('sm') ->icon('tabler-device-desktop-analytics') ->numeric() ->suffix(config('panel.use_binary_prefix') ? ' GiB' : ' GB') ->formatStateUsing(fn ($state) => number_format($state / (config('panel.use_binary_prefix') ? 1024 : 1000), 2)) ->sortable(), Tables\Columns\TextColumn::make('disk') ->visibleFrom('sm') ->icon('tabler-file') ->numeric() ->suffix(config('panel.use_binary_prefix') ? ' GiB' : ' GB') ->formatStateUsing(fn ($state) => number_format($state / (config('panel.use_binary_prefix') ? 1024 : 1000), 2)) ->sortable(), Tables\Columns\TextColumn::make('cpu') ->visibleFrom('sm') ->icon('tabler-file') ->numeric() ->suffix(' %') ->sortable(), Tables\Columns\IconColumn::make('scheme') ->visibleFrom('xl') ->label('SSL') ->trueIcon('tabler-lock') ->falseIcon('tabler-lock-open-off') ->state(fn (Node $node) => $node->scheme === 'https'), Tables\Columns\IconColumn::make('public') ->visibleFrom('lg') ->trueIcon('tabler-eye-check') ->falseIcon('tabler-eye-cancel'), Tables\Columns\TextColumn::make('servers_count') ->visibleFrom('sm') ->counts('servers') ->label('Servers') ->sortable() ->icon('tabler-brand-docker'), ]) ->filters([ // ]) ->actions([ Tables\Actions\EditAction::make(), ]) ->bulkActions([ Tables\Actions\BulkActionGroup::make([ Tables\Actions\DeleteBulkAction::make(), ]), ]) ->emptyStateIcon('tabler-server-2') ->emptyStateDescription('') ->emptyStateHeading('No Nodes') ->emptyStateActions([ CreateAction::make('create') ->label('Create Node') ->button(), ]); } protected function getHeaderActions(): array { return [ Actions\CreateAction::make() ->label('Create Node') ->hidden(fn () => Node::count() <= 0), ]; } }