columns([ TextColumn::make('name') ->label(__('Name')) ->searchable() ->sortable(), TextColumn::make('disk_quota_mb') ->label(__('Disk')) ->getStateUsing(function ($record) { $quota = $record->disk_quota_mb; if (! $quota) { return __('Unlimited'); } return $quota >= 1024 ? number_format($quota / 1024, 1).' GB' : $quota.' MB'; }), TextColumn::make('bandwidth_gb') ->label(__('Bandwidth')) ->getStateUsing(fn ($record) => $record->bandwidth_gb ? $record->bandwidth_gb.' GB' : __('Unlimited')), TextColumn::make('domains_limit') ->label(__('Domains')) ->getStateUsing(fn ($record) => $record->domains_limit ?: __('Unlimited')), TextColumn::make('databases_limit') ->label(__('Databases')) ->getStateUsing(fn ($record) => $record->databases_limit ?: __('Unlimited')), TextColumn::make('mailboxes_limit') ->label(__('Mailboxes')) ->getStateUsing(fn ($record) => $record->mailboxes_limit ?: __('Unlimited')), TextColumn::make('resource_limits') ->label(__('System Limits')) ->getStateUsing(function ($record) { $cpu = $record->cpu_limit_percent ? $record->cpu_limit_percent.'%' : null; $memory = $record->memory_limit_mb ? $record->memory_limit_mb.' MB' : null; $io = $record->io_limit_mb ? $record->io_limit_mb.' MB/s' : null; $parts = array_filter([ $cpu ? __('CPU: :value', ['value' => $cpu]) : null, $memory ? __('RAM: :value', ['value' => $memory]) : null, $io ? __('IO: :value', ['value' => $io]) : null, ]); return ! empty($parts) ? implode(', ', $parts) : __('Unlimited'); }), IconColumn::make('is_active') ->label(__('Active')) ->boolean(), ]) ->recordActions([ EditAction::make(), DeleteAction::make(), ]) ->defaultSort('name'); } }