From 897b95ec134bb26764934f847cd6891e5fd343bb Mon Sep 17 00:00:00 2001 From: Charles Date: Thu, 27 Nov 2025 16:44:05 -0500 Subject: [PATCH] Change Admin Actions to IconButtons (#1900) --- app/Filament/Admin/Pages/Health.php | 4 +- app/Filament/Admin/Pages/ListLogs.php | 9 ++-- app/Filament/Admin/Pages/Settings.php | 3 ++ app/Filament/Admin/Pages/ViewLogs.php | 11 ++-- .../Resources/ApiKeys/ApiKeyResource.php | 11 ++-- .../Resources/ApiKeys/Pages/CreateApiKey.php | 5 +- .../Resources/ApiKeys/Pages/ListApiKeys.php | 5 +- .../DatabaseHosts/DatabaseHostResource.php | 6 +-- .../DatabaseHosts/Pages/EditDatabaseHost.php | 9 +++- .../DatabaseHosts/Pages/ListDatabaseHosts.php | 5 +- .../DatabasesRelationManager.php | 5 +- .../Admin/Resources/Eggs/Pages/CreateEgg.php | 5 +- .../Admin/Resources/Eggs/Pages/EditEgg.php | 8 ++- .../Admin/Resources/Eggs/Pages/ListEggs.php | 13 +++-- .../Admin/Resources/Mounts/MountResource.php | 6 +-- .../Resources/Mounts/Pages/CreateMount.php | 5 +- .../Resources/Mounts/Pages/EditMount.php | 9 +++- .../Resources/Mounts/Pages/ListMounts.php | 5 +- .../Resources/Mounts/Pages/ViewMount.php | 6 ++- .../Admin/Resources/Nodes/NodeResource.php | 4 +- .../Resources/Nodes/Pages/CreateNode.php | 11 ++-- .../Admin/Resources/Nodes/Pages/EditNode.php | 8 ++- .../Admin/Resources/Nodes/Pages/ListNodes.php | 7 ++- .../AllocationsRelationManager.php | 3 ++ ...Manager.php => ServersRelationManager.php} | 18 +++++-- .../Admin/Resources/Roles/Pages/EditRole.php | 8 ++- .../Admin/Resources/Roles/Pages/ListRoles.php | 5 +- .../Admin/Resources/Roles/RoleResource.php | 7 --- .../Resources/Servers/Pages/EditServer.php | 9 +++- .../Resources/Servers/Pages/ListServers.php | 12 +++-- .../AllocationsRelationManager.php | 39 ++++++++------ .../DatabasesRelationManager.php | 8 ++- .../Admin/Resources/Users/Pages/EditUser.php | 9 +++- .../Admin/Resources/Users/Pages/ListUsers.php | 5 +- .../Pages/EditWebhookConfiguration.php | 9 +++- .../Pages/ListWebhookConfigurations.php | 5 +- .../Resources/Webhooks/WebhookResource.php | 4 -- .../Components/Actions/ExportEggAction.php | 4 ++ .../Components/Actions/ImportEggAction.php | 7 +++ .../Actions/UpdateNodeAllocations.php | 3 ++ app/Filament/Pages/Auth/EditProfile.php | 9 +++- .../Filament/FilamentServiceProvider.php | 52 +++++++++++++++++++ 42 files changed, 261 insertions(+), 115 deletions(-) rename app/Filament/Admin/Resources/Nodes/RelationManagers/{NodesRelationManager.php => ServersRelationManager.php} (73%) diff --git a/app/Filament/Admin/Pages/Health.php b/app/Filament/Admin/Pages/Health.php index 81d1b69bc..00ef7a2a3 100644 --- a/app/Filament/Admin/Pages/Health.php +++ b/app/Filament/Admin/Pages/Health.php @@ -6,6 +6,7 @@ use Carbon\Carbon; use Filament\Actions\Action; use Filament\Notifications\Notification; use Filament\Pages\Page; +use Filament\Support\Enums\IconSize; use Illuminate\Support\Facades\Artisan; use Spatie\Health\Commands\RunHealthChecksCommand; use Spatie\Health\Enums\Status; @@ -47,7 +48,8 @@ class Health extends Page return [ Action::make('refresh') ->label(trans('admin/health.refresh')) - ->button() + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-refresh') ->action('refresh'), ]; } diff --git a/app/Filament/Admin/Pages/ListLogs.php b/app/Filament/Admin/Pages/ListLogs.php index 4c728b7c2..25aad8fdb 100644 --- a/app/Filament/Admin/Pages/ListLogs.php +++ b/app/Filament/Admin/Pages/ListLogs.php @@ -46,13 +46,12 @@ class ListLogs extends BaseListLogs ]) ->recordActions([ ViewLogAction::make() - ->icon('tabler-file-description')->iconSize(IconSize::Medium), + ->icon('tabler-file-description')->iconSize(IconSize::Large)->iconButton(), DownloadAction::make() - ->icon('tabler-file-download')->iconSize(IconSize::Medium), + ->icon('tabler-file-download')->iconSize(IconSize::Large)->iconButton(), Action::make('uploadLogs') - ->button() ->hiddenLabel() - ->icon('tabler-world-upload')->iconSize(IconSize::Medium) + ->icon('tabler-world-upload')->iconSize(IconSize::Large)->iconButton() ->requiresConfirmation() ->modalHeading(trans('admin/log.actions.upload_logs')) ->modalDescription(fn ($record) => trans('admin/log.actions.upload_logs_description', ['file' => $record['date'], 'url' => 'https://logs.pelican.dev'])) @@ -124,7 +123,7 @@ class ListLogs extends BaseListLogs } }), DeleteAction::make() - ->icon('tabler-trash')->iconSize(IconSize::Medium), + ->icon('tabler-trash')->iconSize(IconSize::Medium)->iconButton(), ]); } } diff --git a/app/Filament/Admin/Pages/Settings.php b/app/Filament/Admin/Pages/Settings.php index 55b751076..3887feea7 100644 --- a/app/Filament/Admin/Pages/Settings.php +++ b/app/Filament/Admin/Pages/Settings.php @@ -36,6 +36,7 @@ use Filament\Schemas\Components\Utilities\Get; use Filament\Schemas\Components\Utilities\Set; use Filament\Schemas\Contracts\HasSchemas; use Filament\Schemas\Schema; +use Filament\Support\Enums\IconSize; use Filament\Support\Enums\Width; use Illuminate\Http\Client\Factory; use Illuminate\Support\Arr; @@ -829,6 +830,8 @@ class Settings extends Page implements HasSchemas { return [ Action::make('save') + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-device-floppy') ->action('save') ->authorize(fn () => user()?->can('update settings')) ->keyBindings(['mod+s']), diff --git a/app/Filament/Admin/Pages/ViewLogs.php b/app/Filament/Admin/Pages/ViewLogs.php index 3e24a1b08..32e108a1c 100644 --- a/app/Filament/Admin/Pages/ViewLogs.php +++ b/app/Filament/Admin/Pages/ViewLogs.php @@ -19,14 +19,15 @@ class ViewLogs extends BaseViewLog public function getHeaderActions(): array { return [ + BackAction::make() + ->icon('tabler-arrow-left')->iconSize(IconSize::ExtraLarge)->iconButton(), DeleteAction::make(withTooltip: true) - ->icon('tabler-trash')->iconSize(IconSize::Medium), + ->icon('tabler-trash')->iconSize(IconSize::ExtraLarge)->iconButton(), DownloadAction::make(withTooltip: true) - ->icon('tabler-file-download')->iconSize(IconSize::Medium), + ->icon('tabler-file-download')->iconSize(IconSize::ExtraLarge)->iconButton(), Action::make('uploadLogs') - ->button() ->hiddenLabel() - ->icon('tabler-world-upload')->iconSize(IconSize::Medium) + ->icon('tabler-world-upload')->iconSize(IconSize::ExtraLarge)->iconButton() ->requiresConfirmation() ->tooltip(trans('admin/log.actions.upload_tooltip', ['url' => 'logs.pelican.dev'])) ->modalHeading(trans('admin/log.actions.upload_logs')) @@ -98,8 +99,6 @@ class ViewLogs extends BaseViewLog return; } }), - BackAction::make() - ->icon('tabler-arrow-left')->iconSize(IconSize::Medium), ]; } } diff --git a/app/Filament/Admin/Resources/ApiKeys/ApiKeyResource.php b/app/Filament/Admin/Resources/ApiKeys/ApiKeyResource.php index bae621752..fca928ee8 100644 --- a/app/Filament/Admin/Resources/ApiKeys/ApiKeyResource.php +++ b/app/Filament/Admin/Resources/ApiKeys/ApiKeyResource.php @@ -12,7 +12,6 @@ use App\Traits\Filament\CanCustomizeRelations; use App\Traits\Filament\CanModifyForm; use App\Traits\Filament\CanModifyTable; use Exception; -use Filament\Actions\CreateAction; use Filament\Actions\DeleteAction; use Filament\Forms\Components\TagsInput; use Filament\Forms\Components\Textarea; @@ -21,6 +20,7 @@ use Filament\Resources\Pages\PageRegistration; use Filament\Resources\Resource; use Filament\Schemas\Components\Fieldset; use Filament\Schemas\Schema; +use Filament\Support\Enums\IconSize; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; @@ -96,14 +96,13 @@ class ApiKeyResource extends Resource ->url(fn (ApiKey $apiKey) => user()?->can('update', $apiKey->user) ? EditUser::getUrl(['record' => $apiKey->user]) : null), ]) ->recordActions([ - DeleteAction::make(), + DeleteAction::make() + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-trash'), ]) ->emptyStateIcon('tabler-key') ->emptyStateDescription('') - ->emptyStateHeading(trans('admin/apikey.empty')) - ->emptyStateActions([ - CreateAction::make(), - ]); + ->emptyStateHeading(trans('admin/apikey.empty')); } /** diff --git a/app/Filament/Admin/Resources/ApiKeys/Pages/CreateApiKey.php b/app/Filament/Admin/Resources/ApiKeys/Pages/CreateApiKey.php index 2ea20592c..bc3f2c507 100644 --- a/app/Filament/Admin/Resources/ApiKeys/Pages/CreateApiKey.php +++ b/app/Filament/Admin/Resources/ApiKeys/Pages/CreateApiKey.php @@ -9,6 +9,7 @@ use App\Traits\Filament\CanCustomizeHeaderWidgets; use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Resources\Pages\CreateRecord; +use Filament\Support\Enums\IconSize; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Str; @@ -25,7 +26,9 @@ class CreateApiKey extends CreateRecord protected function getDefaultHeaderActions(): array { return [ - $this->getCreateFormAction()->formId('form'), + $this->getCreateFormAction()->formId('form') + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-file-plus'), ]; } diff --git a/app/Filament/Admin/Resources/ApiKeys/Pages/ListApiKeys.php b/app/Filament/Admin/Resources/ApiKeys/Pages/ListApiKeys.php index 7425a61eb..5a7669ed1 100644 --- a/app/Filament/Admin/Resources/ApiKeys/Pages/ListApiKeys.php +++ b/app/Filament/Admin/Resources/ApiKeys/Pages/ListApiKeys.php @@ -3,13 +3,13 @@ namespace App\Filament\Admin\Resources\ApiKeys\Pages; use App\Filament\Admin\Resources\ApiKeys\ApiKeyResource; -use App\Models\ApiKey; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Actions\CreateAction; use Filament\Resources\Pages\ListRecords; +use Filament\Support\Enums\IconSize; class ListApiKeys extends ListRecords { @@ -23,7 +23,8 @@ class ListApiKeys extends ListRecords { return [ CreateAction::make() - ->hidden(fn () => ApiKey::where('key_type', ApiKey::TYPE_APPLICATION)->count() <= 0), + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-file-plus'), ]; } } diff --git a/app/Filament/Admin/Resources/DatabaseHosts/DatabaseHostResource.php b/app/Filament/Admin/Resources/DatabaseHosts/DatabaseHostResource.php index b8d0aaee0..0e22e9c79 100644 --- a/app/Filament/Admin/Resources/DatabaseHosts/DatabaseHostResource.php +++ b/app/Filament/Admin/Resources/DatabaseHosts/DatabaseHostResource.php @@ -13,7 +13,6 @@ use App\Traits\Filament\CanCustomizeRelations; use App\Traits\Filament\CanModifyForm; use App\Traits\Filament\CanModifyTable; use Exception; -use Filament\Actions\CreateAction; use Filament\Actions\DeleteBulkAction; use Filament\Actions\EditAction; use Filament\Actions\ViewAction; @@ -100,10 +99,7 @@ class DatabaseHostResource extends Resource ]) ->emptyStateIcon('tabler-database') ->emptyStateDescription('') - ->emptyStateHeading(trans('admin/databasehost.no_database_hosts')) - ->emptyStateActions([ - CreateAction::make(), - ]); + ->emptyStateHeading(trans('admin/databasehost.no_database_hosts')); } /** diff --git a/app/Filament/Admin/Resources/DatabaseHosts/Pages/EditDatabaseHost.php b/app/Filament/Admin/Resources/DatabaseHosts/Pages/EditDatabaseHost.php index 40117abd7..bdb32fc21 100644 --- a/app/Filament/Admin/Resources/DatabaseHosts/Pages/EditDatabaseHost.php +++ b/app/Filament/Admin/Resources/DatabaseHosts/Pages/EditDatabaseHost.php @@ -12,6 +12,7 @@ use Filament\Actions\ActionGroup; use Filament\Actions\DeleteAction; use Filament\Notifications\Notification; use Filament\Resources\Pages\EditRecord; +use Filament\Support\Enums\IconSize; use Filament\Support\Exceptions\Halt; use Illuminate\Database\Eloquent\Model; use PDOException; @@ -36,8 +37,12 @@ class EditDatabaseHost extends EditRecord return [ DeleteAction::make() ->label(fn (DatabaseHost $databaseHost) => $databaseHost->databases()->count() > 0 ? trans('admin/databasehost.delete_help') : trans('filament-actions::delete.single.modal.actions.delete.label')) - ->disabled(fn (DatabaseHost $databaseHost) => $databaseHost->databases()->count() > 0), - $this->getSaveFormAction()->formId('form'), + ->disabled(fn (DatabaseHost $databaseHost) => $databaseHost->databases()->count() > 0) + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-trash'), + $this->getSaveFormAction()->formId('form') + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-device-floppy'), ]; } diff --git a/app/Filament/Admin/Resources/DatabaseHosts/Pages/ListDatabaseHosts.php b/app/Filament/Admin/Resources/DatabaseHosts/Pages/ListDatabaseHosts.php index 22f887823..8fc5dc8b9 100644 --- a/app/Filament/Admin/Resources/DatabaseHosts/Pages/ListDatabaseHosts.php +++ b/app/Filament/Admin/Resources/DatabaseHosts/Pages/ListDatabaseHosts.php @@ -3,13 +3,13 @@ namespace App\Filament\Admin\Resources\DatabaseHosts\Pages; use App\Filament\Admin\Resources\DatabaseHosts\DatabaseHostResource; -use App\Models\DatabaseHost; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Actions\CreateAction; use Filament\Resources\Pages\ListRecords; +use Filament\Support\Enums\IconSize; class ListDatabaseHosts extends ListRecords { @@ -23,7 +23,8 @@ class ListDatabaseHosts extends ListRecords { return [ CreateAction::make() - ->hidden(fn () => DatabaseHost::count() <= 0), + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-file-plus'), ]; } } diff --git a/app/Filament/Admin/Resources/DatabaseHosts/RelationManagers/DatabasesRelationManager.php b/app/Filament/Admin/Resources/DatabaseHosts/RelationManagers/DatabasesRelationManager.php index 677c1983e..f763adb90 100644 --- a/app/Filament/Admin/Resources/DatabaseHosts/RelationManagers/DatabasesRelationManager.php +++ b/app/Filament/Admin/Resources/DatabaseHosts/RelationManagers/DatabasesRelationManager.php @@ -10,6 +10,7 @@ use Filament\Actions\ViewAction; use Filament\Forms\Components\TextInput; use Filament\Resources\RelationManagers\RelationManager; use Filament\Schemas\Schema; +use Filament\Support\Enums\IconSize; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Table; @@ -69,7 +70,9 @@ class DatabasesRelationManager extends RelationManager ->recordActions([ ViewAction::make() ->color('primary'), - DeleteAction::make(), + DeleteAction::make() + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-trash'), ]); } } diff --git a/app/Filament/Admin/Resources/Eggs/Pages/CreateEgg.php b/app/Filament/Admin/Resources/Eggs/Pages/CreateEgg.php index 533fc3c3c..8f865684b 100644 --- a/app/Filament/Admin/Resources/Eggs/Pages/CreateEgg.php +++ b/app/Filament/Admin/Resources/Eggs/Pages/CreateEgg.php @@ -27,6 +27,7 @@ use Filament\Schemas\Components\Tabs\Tab; use Filament\Schemas\Components\Utilities\Get; use Filament\Schemas\Components\Utilities\Set; use Filament\Schemas\Schema; +use Filament\Support\Enums\IconSize; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Str; use Illuminate\Validation\Rules\Unique; @@ -44,7 +45,9 @@ class CreateEgg extends CreateRecord protected function getDefaultHeaderActions(): array { return [ - $this->getCreateFormAction()->formId('form'), + $this->getCreateFormAction()->formId('form') + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-file-plus'), ]; } diff --git a/app/Filament/Admin/Resources/Eggs/Pages/EditEgg.php b/app/Filament/Admin/Resources/Eggs/Pages/EditEgg.php index a1dd1e805..7b90beffe 100644 --- a/app/Filament/Admin/Resources/Eggs/Pages/EditEgg.php +++ b/app/Filament/Admin/Resources/Eggs/Pages/EditEgg.php @@ -451,11 +451,15 @@ class EditEgg extends EditRecord return [ DeleteAction::make() ->disabled(fn (Egg $egg): bool => $egg->servers()->count() > 0) - ->label(fn (Egg $egg): string => $egg->servers()->count() <= 0 ? trans('filament-actions::delete.single.label') : trans('admin/egg.in_use')), + ->label(fn (Egg $egg): string => $egg->servers()->count() <= 0 ? trans('filament-actions::delete.single.label') : trans('admin/egg.in_use')) + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-trash'), ExportEggAction::make(), ImportEggAction::make() ->multiple(false), - $this->getSaveFormAction()->formId('form'), + $this->getSaveFormAction()->formId('form') + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-device-floppy'), ]; } diff --git a/app/Filament/Admin/Resources/Eggs/Pages/ListEggs.php b/app/Filament/Admin/Resources/Eggs/Pages/ListEggs.php index 6117482f8..ea2fb4165 100644 --- a/app/Filament/Admin/Resources/Eggs/Pages/ListEggs.php +++ b/app/Filament/Admin/Resources/Eggs/Pages/ListEggs.php @@ -19,6 +19,7 @@ use Filament\Actions\DeleteBulkAction; use Filament\Actions\EditAction; use Filament\Actions\ReplicateAction; use Filament\Resources\Pages\ListRecords; +use Filament\Support\Enums\IconSize; use Filament\Tables\Columns\ImageColumn; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Table; @@ -66,7 +67,8 @@ class ListEggs extends ListRecords ->tooltip(trans('filament-actions::edit.single.label')), ExportEggAction::make() ->iconButton() - ->tooltip(trans('filament-actions::export.modal.actions.export.label')), + ->tooltip(trans('filament-actions::export.modal.actions.export.label')) + ->iconSize(IconSize::Large), UpdateEggAction::make() ->iconButton() ->tooltip(trans_choice('admin/egg.update', 1)), @@ -98,11 +100,6 @@ class ListEggs extends ListRecords ->emptyStateIcon('tabler-eggs') ->emptyStateDescription('') ->emptyStateHeading(trans('admin/egg.no_eggs')) - ->emptyStateActions([ - CreateAction::make(), - ImportEggAction::make() - ->multiple(), - ]) ->filters([ TagsFilter::make() ->model(Egg::class), @@ -117,7 +114,9 @@ class ListEggs extends ListRecords return [ ImportEggAction::make() ->multiple(), - CreateAction::make(), + CreateAction::make() + ->icon('tabler-file-plus') + ->iconButton()->iconSize(IconSize::ExtraLarge), ]; } } diff --git a/app/Filament/Admin/Resources/Mounts/MountResource.php b/app/Filament/Admin/Resources/Mounts/MountResource.php index ba3c78216..7e26fe5a1 100644 --- a/app/Filament/Admin/Resources/Mounts/MountResource.php +++ b/app/Filament/Admin/Resources/Mounts/MountResource.php @@ -12,7 +12,6 @@ use App\Traits\Filament\CanCustomizeRelations; use App\Traits\Filament\CanModifyForm; use App\Traits\Filament\CanModifyTable; use Exception; -use Filament\Actions\CreateAction; use Filament\Actions\DeleteBulkAction; use Filament\Actions\EditAction; use Filament\Actions\ViewAction; @@ -104,10 +103,7 @@ class MountResource extends Resource ]) ->emptyStateIcon('tabler-layers-linked') ->emptyStateDescription('') - ->emptyStateHeading(trans('admin/mount.no_mounts')) - ->emptyStateActions([ - CreateAction::make(), - ]); + ->emptyStateHeading(trans('admin/mount.no_mounts')); } /** diff --git a/app/Filament/Admin/Resources/Mounts/Pages/CreateMount.php b/app/Filament/Admin/Resources/Mounts/Pages/CreateMount.php index d29b754f7..1ec1d8f27 100644 --- a/app/Filament/Admin/Resources/Mounts/Pages/CreateMount.php +++ b/app/Filament/Admin/Resources/Mounts/Pages/CreateMount.php @@ -8,6 +8,7 @@ use App\Traits\Filament\CanCustomizeHeaderWidgets; use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Resources\Pages\CreateRecord; +use Filament\Support\Enums\IconSize; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Str; @@ -24,7 +25,9 @@ class CreateMount extends CreateRecord protected function getDefaultHeaderActions(): array { return [ - $this->getCreateFormAction()->formId('form'), + $this->getCreateFormAction()->formId('form') + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-file-plus'), ]; } diff --git a/app/Filament/Admin/Resources/Mounts/Pages/EditMount.php b/app/Filament/Admin/Resources/Mounts/Pages/EditMount.php index ccf1ab140..bf1a683c1 100644 --- a/app/Filament/Admin/Resources/Mounts/Pages/EditMount.php +++ b/app/Filament/Admin/Resources/Mounts/Pages/EditMount.php @@ -9,6 +9,7 @@ use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Actions\DeleteAction; use Filament\Resources\Pages\EditRecord; +use Filament\Support\Enums\IconSize; class EditMount extends EditRecord { @@ -21,8 +22,12 @@ class EditMount extends EditRecord protected function getDefaultHeaderActions(): array { return [ - DeleteAction::make(), - $this->getSaveFormAction()->formId('form'), + DeleteAction::make() + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-trash'), + $this->getSaveFormAction()->formId('form') + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-device-floppy'), ]; } diff --git a/app/Filament/Admin/Resources/Mounts/Pages/ListMounts.php b/app/Filament/Admin/Resources/Mounts/Pages/ListMounts.php index c09300ced..adf78861f 100644 --- a/app/Filament/Admin/Resources/Mounts/Pages/ListMounts.php +++ b/app/Filament/Admin/Resources/Mounts/Pages/ListMounts.php @@ -3,13 +3,13 @@ namespace App\Filament\Admin\Resources\Mounts\Pages; use App\Filament\Admin\Resources\Mounts\MountResource; -use App\Models\Mount; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Actions\CreateAction; use Filament\Resources\Pages\ListRecords; +use Filament\Support\Enums\IconSize; class ListMounts extends ListRecords { @@ -23,7 +23,8 @@ class ListMounts extends ListRecords { return [ CreateAction::make() - ->hidden(fn () => Mount::count() <= 0), + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-file-plus'), ]; } } diff --git a/app/Filament/Admin/Resources/Mounts/Pages/ViewMount.php b/app/Filament/Admin/Resources/Mounts/Pages/ViewMount.php index 7e4fab51c..3b82db540 100644 --- a/app/Filament/Admin/Resources/Mounts/Pages/ViewMount.php +++ b/app/Filament/Admin/Resources/Mounts/Pages/ViewMount.php @@ -9,6 +9,7 @@ use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Actions\EditAction; use Filament\Resources\Pages\ViewRecord; +use Filament\Support\Enums\IconSize; class ViewMount extends ViewRecord { @@ -21,7 +22,10 @@ class ViewMount extends ViewRecord protected function getDefaultHeaderActions(): array { return [ - EditAction::make(), + EditAction::make() + ->icon('tabler-edit') + ->iconSize(IconSize::ExtraLarge) + ->iconButton(), ]; } } diff --git a/app/Filament/Admin/Resources/Nodes/NodeResource.php b/app/Filament/Admin/Resources/Nodes/NodeResource.php index d27295fcd..efc4a3f7f 100644 --- a/app/Filament/Admin/Resources/Nodes/NodeResource.php +++ b/app/Filament/Admin/Resources/Nodes/NodeResource.php @@ -7,7 +7,7 @@ use App\Filament\Admin\Resources\Nodes\Pages\CreateNode; use App\Filament\Admin\Resources\Nodes\Pages\EditNode; use App\Filament\Admin\Resources\Nodes\Pages\ListNodes; use App\Filament\Admin\Resources\Nodes\RelationManagers\AllocationsRelationManager; -use App\Filament\Admin\Resources\Nodes\RelationManagers\NodesRelationManager; +use App\Filament\Admin\Resources\Nodes\RelationManagers\ServersRelationManager; use App\Models\Node; use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizeRelations; @@ -57,7 +57,7 @@ class NodeResource extends Resource { return [ AllocationsRelationManager::class, - NodesRelationManager::class, + ServersRelationManager::class, ]; } diff --git a/app/Filament/Admin/Resources/Nodes/Pages/CreateNode.php b/app/Filament/Admin/Resources/Nodes/Pages/CreateNode.php index 5c7dcdf2a..5850bc8b8 100644 --- a/app/Filament/Admin/Resources/Nodes/Pages/CreateNode.php +++ b/app/Filament/Admin/Resources/Nodes/Pages/CreateNode.php @@ -19,6 +19,7 @@ use Filament\Schemas\Components\Utilities\Set; use Filament\Schemas\Components\Wizard; use Filament\Schemas\Components\Wizard\Step; use Filament\Schemas\Schema; +use Filament\Support\Enums\IconSize; use Illuminate\Support\Facades\Blade; use Illuminate\Support\HtmlString; @@ -400,14 +401,16 @@ class CreateNode extends CreateRecord ]), ]), ])->columnSpanFull() - ->nextAction(fn (Action $action) => $action->label(trans('admin/node.next_step'))) + ->nextAction(fn (Action $action) => $action->label(trans('admin/node.next_step'))->iconButton()->iconSize(IconSize::ExtraLarge)->icon('tabler-arrow-right')) + ->previousAction(fn (Action $action) => $action->iconButton()->iconSize(IconSize::ExtraLarge)->icon('tabler-arrow-left')) ->submitAction(new HtmlString(Blade::render(<<<'BLADE' - {{ trans('admin/node.create') }} - + BLADE))), ]); } diff --git a/app/Filament/Admin/Resources/Nodes/Pages/EditNode.php b/app/Filament/Admin/Resources/Nodes/Pages/EditNode.php index 29aedeb01..f86f437b9 100644 --- a/app/Filament/Admin/Resources/Nodes/Pages/EditNode.php +++ b/app/Filament/Admin/Resources/Nodes/Pages/EditNode.php @@ -810,8 +810,12 @@ class EditNode extends EditRecord return [ DeleteAction::make() ->disabled(fn (Node $node) => $node->servers()->count() > 0) - ->label(fn (Node $node) => $node->servers()->count() > 0 ? trans('admin/node.node_has_servers') : trans('filament-actions::delete.single.label')), - $this->getSaveFormAction()->formId('form'), + ->label(fn (Node $node) => $node->servers()->count() > 0 ? trans('admin/node.node_has_servers') : trans('filament-actions::delete.single.label')) + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-trash'), + $this->getSaveFormAction()->formId('form') + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-device-floppy'), ]; } diff --git a/app/Filament/Admin/Resources/Nodes/Pages/ListNodes.php b/app/Filament/Admin/Resources/Nodes/Pages/ListNodes.php index 93bb7aee4..9d4fd952f 100644 --- a/app/Filament/Admin/Resources/Nodes/Pages/ListNodes.php +++ b/app/Filament/Admin/Resources/Nodes/Pages/ListNodes.php @@ -13,6 +13,7 @@ use Filament\Actions\ActionGroup; use Filament\Actions\CreateAction; use Filament\Actions\EditAction; use Filament\Resources\Pages\ListRecords; +use Filament\Support\Enums\IconSize; use Filament\Tables\Columns\IconColumn; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Table; @@ -67,9 +68,6 @@ class ListNodes extends ListRecords ->emptyStateIcon('tabler-server-2') ->emptyStateDescription('') ->emptyStateHeading(trans('admin/node.no_nodes')) - ->emptyStateActions([ - CreateAction::make(), - ]) ->filters([ TagsFilter::make() ->model(Node::class), @@ -81,7 +79,8 @@ class ListNodes extends ListRecords { return [ CreateAction::make() - ->hidden(fn () => Node::count() <= 0), + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-file-plus'), ]; } } diff --git a/app/Filament/Admin/Resources/Nodes/RelationManagers/AllocationsRelationManager.php b/app/Filament/Admin/Resources/Nodes/RelationManagers/AllocationsRelationManager.php index b421e6d83..871289b3d 100644 --- a/app/Filament/Admin/Resources/Nodes/RelationManagers/AllocationsRelationManager.php +++ b/app/Filament/Admin/Resources/Nodes/RelationManagers/AllocationsRelationManager.php @@ -16,6 +16,7 @@ use Filament\Forms\Components\TextInput; use Filament\Resources\RelationManagers\RelationManager; use Filament\Schemas\Components\Utilities\Get; use Filament\Schemas\Components\Utilities\Set; +use Filament\Support\Enums\IconSize; use Filament\Tables\Columns\SelectColumn; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Columns\TextInputColumn; @@ -86,6 +87,8 @@ class AllocationsRelationManager extends RelationManager ->authorize(fn () => user()?->can('update', $this->getOwnerRecord())), Action::make('create new allocation') ->label(trans('admin/node.create_allocation')) + ->icon('tabler-world-plus') + ->iconButton()->iconSize(IconSize::ExtraLarge) ->schema(fn () => [ Select::make('allocation_ip') ->options(fn () => collect($this->getOwnerRecord()->ipAddresses())->mapWithKeys(fn (string $ip) => [$ip => $ip])) diff --git a/app/Filament/Admin/Resources/Nodes/RelationManagers/NodesRelationManager.php b/app/Filament/Admin/Resources/Nodes/RelationManagers/ServersRelationManager.php similarity index 73% rename from app/Filament/Admin/Resources/Nodes/RelationManagers/NodesRelationManager.php rename to app/Filament/Admin/Resources/Nodes/RelationManagers/ServersRelationManager.php index eef3d7e9a..e5904d6e3 100644 --- a/app/Filament/Admin/Resources/Nodes/RelationManagers/NodesRelationManager.php +++ b/app/Filament/Admin/Resources/Nodes/RelationManagers/ServersRelationManager.php @@ -2,13 +2,14 @@ namespace App\Filament\Admin\Resources\Nodes\RelationManagers; +use App\Enums\ServerResourceType; use App\Models\Server; use Filament\Resources\RelationManagers\RelationManager; use Filament\Tables\Columns\SelectColumn; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Table; -class NodesRelationManager extends RelationManager +class ServersRelationManager extends RelationManager { protected static string $relationship = 'servers'; @@ -42,11 +43,18 @@ class NodesRelationManager extends RelationManager ->label(trans('admin/node.primary_allocation')) ->disabled(fn (Server $server) => $server->allocations->count() <= 1) ->options(fn (Server $server) => $server->allocations->take(1)->mapWithKeys(fn ($allocation) => [$allocation->id => $allocation->address])) - ->selectablePlaceholder(fn (SelectColumn $select) => !$select->isDisabled()) - ->placeholder(trans('admin/node.none')) + ->selectablePlaceholder(fn (Server $server) => $server->allocations->count() <= 1) + ->placeholder(trans('admin/server.none')) ->sortable(), - TextColumn::make('memory')->label(trans('admin/node.memory')), - TextColumn::make('cpu')->label(trans('admin/node.cpu')), + TextColumn::make('cpu') + ->label(trans('admin/node.cpu')) + ->state(fn (Server $server) => $server->formatResource(ServerResourceType::CPULimit)), + TextColumn::make('memory') + ->label(trans('admin/node.memory')) + ->state(fn (Server $server) => $server->formatResource(ServerResourceType::MemoryLimit)), + TextColumn::make('disk') + ->label(trans('admin/node.disk')) + ->state(fn (Server $server) => $server->formatResource(ServerResourceType::DiskLimit)), TextColumn::make('databases_count') ->counts('databases') ->label(trans('admin/node.databases')) diff --git a/app/Filament/Admin/Resources/Roles/Pages/EditRole.php b/app/Filament/Admin/Resources/Roles/Pages/EditRole.php index d2c65d2b1..feede6388 100644 --- a/app/Filament/Admin/Resources/Roles/Pages/EditRole.php +++ b/app/Filament/Admin/Resources/Roles/Pages/EditRole.php @@ -10,6 +10,7 @@ use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Actions\DeleteAction; use Filament\Resources\Pages\EditRecord; +use Filament\Support\Enums\IconSize; use Illuminate\Support\Arr; use Illuminate\Support\Collection; use Spatie\Permission\Models\Permission; @@ -57,8 +58,13 @@ class EditRole extends EditRecord { return [ DeleteAction::make() + ->label(fn (Role $role) => $role->isRootAdmin() ? trans('admin/role.root_admin_delete') : ($role->users_count >= 1 ? trans('admin/role.in_use') : trans('filament-actions::delete.single.label'))) ->disabled(fn (Role $role) => $role->isRootAdmin() || $role->users_count >= 1) - ->label(fn (Role $role) => $role->isRootAdmin() ? trans('admin/role.root_admin_delete') : ($role->users_count >= 1 ? trans('admin/role.in_use') : trans('filament-actions::delete.single.label'))), $this->getSaveFormAction()->formId('form'), + ->icon('tabler-trash') + ->iconButton()->iconSize(IconSize::ExtraLarge), + $this->getSaveFormAction()->formId('form') + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-device-floppy'), ]; } diff --git a/app/Filament/Admin/Resources/Roles/Pages/ListRoles.php b/app/Filament/Admin/Resources/Roles/Pages/ListRoles.php index 4bae2247e..340858f4c 100644 --- a/app/Filament/Admin/Resources/Roles/Pages/ListRoles.php +++ b/app/Filament/Admin/Resources/Roles/Pages/ListRoles.php @@ -9,6 +9,7 @@ use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Actions\CreateAction; use Filament\Resources\Pages\ListRecords; +use Filament\Support\Enums\IconSize; class ListRoles extends ListRecords { @@ -21,7 +22,9 @@ class ListRoles extends ListRecords protected function getDefaultHeaderActions(): array { return [ - CreateAction::make(), + CreateAction::make() + ->icon('tabler-file-plus') + ->iconButton()->iconSize(IconSize::ExtraLarge), ]; } } diff --git a/app/Filament/Admin/Resources/Roles/RoleResource.php b/app/Filament/Admin/Resources/Roles/RoleResource.php index e1baa035b..e5b6ecf2a 100644 --- a/app/Filament/Admin/Resources/Roles/RoleResource.php +++ b/app/Filament/Admin/Resources/Roles/RoleResource.php @@ -15,7 +15,6 @@ use App\Traits\Filament\CanModifyTable; use BackedEnum; use Exception; use Filament\Actions\Action; -use Filament\Actions\CreateAction; use Filament\Actions\DeleteBulkAction; use Filament\Actions\EditAction; use Filament\Actions\ViewAction; @@ -104,12 +103,6 @@ class RoleResource extends Resource ->checkIfRecordIsSelectableUsing(fn (Role $role) => !$role->isRootAdmin() && $role->users_count <= 0) ->groupedBulkActions([ DeleteBulkAction::make(), - ]) - ->emptyStateIcon('tabler-users-group') - ->emptyStateDescription('') - ->emptyStateHeading(trans('admin/role.no_roles')) - ->emptyStateActions([ - CreateAction::make(), ]); } diff --git a/app/Filament/Admin/Resources/Servers/Pages/EditServer.php b/app/Filament/Admin/Resources/Servers/Pages/EditServer.php index 2332ef860..052f67998 100644 --- a/app/Filament/Admin/Resources/Servers/Pages/EditServer.php +++ b/app/Filament/Admin/Resources/Servers/Pages/EditServer.php @@ -1139,7 +1139,9 @@ class EditServer extends EditRecord } }) ->hidden(fn () => $canForceDelete) - ->authorize(fn (Server $server) => user()?->can('delete server', $server)), + ->authorize(fn (Server $server) => user()?->can('delete server', $server)) + ->icon('tabler-trash') + ->iconButton()->iconSize(IconSize::ExtraLarge), Action::make('ForceDelete') ->color('danger') ->label(trans('filament-actions::force-delete.single.label')) @@ -1160,8 +1162,11 @@ class EditServer extends EditRecord Action::make('console') ->label(trans('admin/server.console')) ->icon('tabler-terminal') + ->iconButton()->iconSize(IconSize::ExtraLarge) ->url(fn (Server $server) => Console::getUrl(panel: 'server', tenant: $server)), - $this->getSaveFormAction()->formId('form'), + $this->getSaveFormAction()->formId('form') + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-device-floppy'), ]; } diff --git a/app/Filament/Admin/Resources/Servers/Pages/ListServers.php b/app/Filament/Admin/Resources/Servers/Pages/ListServers.php index 88e48cd98..ecb366b22 100644 --- a/app/Filament/Admin/Resources/Servers/Pages/ListServers.php +++ b/app/Filament/Admin/Resources/Servers/Pages/ListServers.php @@ -12,6 +12,7 @@ use Filament\Actions\ActionGroup; use Filament\Actions\CreateAction; use Filament\Actions\EditAction; use Filament\Resources\Pages\ListRecords; +use Filament\Support\Enums\IconSize; use Filament\Tables\Columns\SelectColumn; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Grouping\Group; @@ -92,6 +93,9 @@ class ListServers extends ListRecords ->recordActions([ Action::make('View') ->label(trans('admin/server.view')) + ->iconButton() + ->icon('tabler-terminal') + ->iconSize(IconSize::Large) ->url(fn (Server $server) => Console::getUrl(panel: 'server', tenant: $server)) ->authorize(fn (Server $server) => user()?->canAccessTenant($server)), EditAction::make(), @@ -99,10 +103,7 @@ class ListServers extends ListRecords ->emptyStateIcon('tabler-brand-docker') ->searchable() ->emptyStateDescription('') - ->emptyStateHeading(trans('admin/server.no_servers')) - ->emptyStateActions([ - CreateAction::make(), - ]); + ->emptyStateHeading(trans('admin/server.no_servers')); } /** @return array */ @@ -110,7 +111,8 @@ class ListServers extends ListRecords { return [ CreateAction::make() - ->hidden(fn () => Server::count() <= 0), + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-file-plus'), ]; } } diff --git a/app/Filament/Admin/Resources/Servers/RelationManagers/AllocationsRelationManager.php b/app/Filament/Admin/Resources/Servers/RelationManagers/AllocationsRelationManager.php index d143a1af4..2100aa57f 100644 --- a/app/Filament/Admin/Resources/Servers/RelationManagers/AllocationsRelationManager.php +++ b/app/Filament/Admin/Resources/Servers/RelationManagers/AllocationsRelationManager.php @@ -8,6 +8,7 @@ use App\Models\Server; use App\Services\Allocations\AssignmentService; use Filament\Actions\Action; use Filament\Actions\AssociateAction; +use Filament\Actions\BulkActionGroup; use Filament\Actions\CreateAction; use Filament\Actions\DissociateAction; use Filament\Actions\DissociateBulkAction; @@ -18,6 +19,7 @@ use Filament\Forms\Components\TextInput; use Filament\Resources\RelationManagers\RelationManager; use Filament\Schemas\Components\Utilities\Get; use Filament\Schemas\Components\Utilities\Set; +use Filament\Support\Enums\IconSize; use Filament\Tables\Columns\IconColumn; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Columns\TextInputColumn; @@ -33,11 +35,11 @@ class AllocationsRelationManager extends RelationManager public function table(Table $table): Table { return $table + ->heading('') ->selectCurrentPageOnly() ->recordTitleAttribute('address') ->recordTitle(fn (Allocation $allocation) => $allocation->address) ->inverseRelationship('server') - ->heading(trans('admin/server.allocations')) ->columns([ TextColumn::make('ip') ->label(trans('admin/server.ip_address')), @@ -92,8 +94,24 @@ class AllocationsRelationManager extends RelationManager } }), ]) - ->headerActions([ - CreateAction::make()->label(trans('admin/server.create_allocation')) + ->toolbarActions([ + BulkActionGroup::make([ + DissociateBulkAction::make() + ->after(function () { + Allocation::whereNull('server_id')->update([ + 'notes' => null, + 'is_locked' => false, + ]); + + if (!$this->getOwnerRecord()->allocation_id) { + $this->getOwnerRecord()->update(['allocation_id' => $this->getOwnerRecord()->allocations()->first()?->id]); + } + }), + ]), + CreateAction::make() + ->label(trans('admin/server.create_allocation')) + ->icon('tabler-network') + ->iconButton()->iconSize(IconSize::ExtraLarge) ->createAnother(false) ->schema(fn () => [ Select::make('allocation_ip') @@ -132,6 +150,8 @@ class AllocationsRelationManager extends RelationManager ]) ->action(fn (array $data, AssignmentService $service) => $service->handle($this->getOwnerRecord()->node, $data, $this->getOwnerRecord())), AssociateAction::make() + ->icon('tabler-file-plus') + ->iconButton()->iconSize(IconSize::ExtraLarge) ->multiple() ->associateAnother(false) ->preloadRecordSelect() @@ -145,19 +165,6 @@ class AllocationsRelationManager extends RelationManager $this->getOwnerRecord()->update(['allocation_id' => $data['recordId'][0]]); } }), - ]) - ->groupedBulkActions([ - DissociateBulkAction::make() - ->after(function () { - Allocation::whereNull('server_id')->update([ - 'notes' => null, - 'is_locked' => false, - ]); - - if (!$this->getOwnerRecord()->allocation_id) { - $this->getOwnerRecord()->update(['allocation_id' => $this->getOwnerRecord()->allocations()->first()?->id]); - } - }), ]); } } diff --git a/app/Filament/Admin/Resources/Servers/RelationManagers/DatabasesRelationManager.php b/app/Filament/Admin/Resources/Servers/RelationManagers/DatabasesRelationManager.php index 06d86c400..5fa007b40 100644 --- a/app/Filament/Admin/Resources/Servers/RelationManagers/DatabasesRelationManager.php +++ b/app/Filament/Admin/Resources/Servers/RelationManagers/DatabasesRelationManager.php @@ -18,6 +18,7 @@ use Filament\Forms\Components\TextInput; use Filament\Notifications\Notification; use Filament\Resources\RelationManagers\RelationManager; use Filament\Schemas\Schema; +use Filament\Support\Enums\IconSize; use Filament\Support\Exceptions\Halt; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Table; @@ -61,6 +62,7 @@ class DatabasesRelationManager extends RelationManager public function table(Table $table): Table { return $table + ->heading('') ->recordTitleAttribute('database') ->columns([ TextColumn::make('database'), @@ -81,6 +83,8 @@ class DatabasesRelationManager extends RelationManager ViewAction::make() ->color('primary'), DeleteAction::make() + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-trash') ->successNotificationTitle(null) ->using(function (Database $database, DatabaseManagementService $service) { try { @@ -100,11 +104,13 @@ class DatabasesRelationManager extends RelationManager } }), ]) - ->headerActions([ + ->toolbarActions([ CreateAction::make() ->disabled(fn () => DatabaseHost::count() < 1) ->label(fn () => DatabaseHost::count() < 1 ? trans('admin/server.no_db_hosts') : trans('admin/server.create_database')) ->color(fn () => DatabaseHost::count() < 1 ? 'danger' : 'primary') + ->icon(fn () => DatabaseHost::count() < 1 ? 'tabler-database-x' : 'tabler-database-plus') + ->iconButton()->iconSize(IconSize::ExtraLarge) ->createAnother(false) ->action(function (array $data, DatabaseManagementService $service, RandomWordService $randomWordService) { $data['database'] ??= $randomWordService->word() . random_int(1, 420); diff --git a/app/Filament/Admin/Resources/Users/Pages/EditUser.php b/app/Filament/Admin/Resources/Users/Pages/EditUser.php index be1beffe4..028e72159 100644 --- a/app/Filament/Admin/Resources/Users/Pages/EditUser.php +++ b/app/Filament/Admin/Resources/Users/Pages/EditUser.php @@ -11,6 +11,7 @@ use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Actions\DeleteAction; use Filament\Resources\Pages\EditRecord; +use Filament\Support\Enums\IconSize; use Illuminate\Database\Eloquent\Model; class EditUser extends EditRecord @@ -33,8 +34,12 @@ class EditUser extends EditRecord return [ DeleteAction::make() ->label(fn (User $user) => user()?->id === $user->id ? trans('admin/user.self_delete') : ($user->servers()->count() > 0 ? trans('admin/user.has_servers') : trans('filament-actions::delete.single.modal.actions.delete.label'))) - ->disabled(fn (User $user) => user()?->id === $user->id || $user->servers()->count() > 0), - $this->getSaveFormAction()->formId('form'), + ->disabled(fn (User $user) => user()?->id === $user->id || $user->servers()->count() > 0) + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-trash'), + $this->getSaveFormAction()->formId('form') + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-device-floppy'), ]; } diff --git a/app/Filament/Admin/Resources/Users/Pages/ListUsers.php b/app/Filament/Admin/Resources/Users/Pages/ListUsers.php index 3245fdbcf..44630c7ec 100644 --- a/app/Filament/Admin/Resources/Users/Pages/ListUsers.php +++ b/app/Filament/Admin/Resources/Users/Pages/ListUsers.php @@ -9,6 +9,7 @@ use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Actions\CreateAction; use Filament\Resources\Pages\ListRecords; +use Filament\Support\Enums\IconSize; class ListUsers extends ListRecords { @@ -21,7 +22,9 @@ class ListUsers extends ListRecords protected function getDefaultHeaderActions(): array { return [ - CreateAction::make(), + CreateAction::make() + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-user-plus'), ]; } } diff --git a/app/Filament/Admin/Resources/Webhooks/Pages/EditWebhookConfiguration.php b/app/Filament/Admin/Resources/Webhooks/Pages/EditWebhookConfiguration.php index 20d5a1ba1..779acbfea 100644 --- a/app/Filament/Admin/Resources/Webhooks/Pages/EditWebhookConfiguration.php +++ b/app/Filament/Admin/Resources/Webhooks/Pages/EditWebhookConfiguration.php @@ -11,6 +11,7 @@ use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Actions\DeleteAction; use Filament\Resources\Pages\EditRecord; +use Filament\Support\Enums\IconSize; class EditWebhookConfiguration extends EditRecord { @@ -23,14 +24,18 @@ class EditWebhookConfiguration extends EditRecord protected function getDefaultHeaderActions(): array { return [ - DeleteAction::make(), + DeleteAction::make() + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-trash'), Action::make('test_now') ->label(trans('admin/webhook.test_now')) ->color('primary') ->disabled(fn (WebhookConfiguration $webhookConfiguration) => count($webhookConfiguration->events) === 0) ->action(fn (WebhookConfiguration $webhookConfiguration) => $webhookConfiguration->run()) ->tooltip(trans('admin/webhook.test_now_help')), - $this->getSaveFormAction()->formId('form'), + $this->getSaveFormAction()->formId('form') + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-device-floppy'), ]; } diff --git a/app/Filament/Admin/Resources/Webhooks/Pages/ListWebhookConfigurations.php b/app/Filament/Admin/Resources/Webhooks/Pages/ListWebhookConfigurations.php index 9aaf589b1..7a5267b26 100644 --- a/app/Filament/Admin/Resources/Webhooks/Pages/ListWebhookConfigurations.php +++ b/app/Filament/Admin/Resources/Webhooks/Pages/ListWebhookConfigurations.php @@ -3,13 +3,13 @@ namespace App\Filament\Admin\Resources\Webhooks\Pages; use App\Filament\Admin\Resources\Webhooks\WebhookResource; -use App\Models\WebhookConfiguration; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Actions\CreateAction; use Filament\Resources\Pages\ListRecords; +use Filament\Support\Enums\IconSize; class ListWebhookConfigurations extends ListRecords { @@ -23,7 +23,8 @@ class ListWebhookConfigurations extends ListRecords { return [ CreateAction::make() - ->hidden(fn () => WebhookConfiguration::count() <= 0), + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-file-plus'), ]; } } diff --git a/app/Filament/Admin/Resources/Webhooks/WebhookResource.php b/app/Filament/Admin/Resources/Webhooks/WebhookResource.php index 27384602a..8f5d5241c 100644 --- a/app/Filament/Admin/Resources/Webhooks/WebhookResource.php +++ b/app/Filament/Admin/Resources/Webhooks/WebhookResource.php @@ -15,7 +15,6 @@ use App\Traits\Filament\CanModifyForm; use App\Traits\Filament\CanModifyTable; use Exception; use Filament\Actions\Action; -use Filament\Actions\CreateAction; use Filament\Actions\DeleteBulkAction; use Filament\Actions\EditAction; use Filament\Actions\ReplicateAction; @@ -114,9 +113,6 @@ class WebhookResource extends Resource ->emptyStateIcon('tabler-webhook') ->emptyStateDescription('') ->emptyStateHeading(trans('admin/webhook.no_webhooks')) - ->emptyStateActions([ - CreateAction::make(), - ]) ->persistFiltersInSession() ->filters([ SelectFilter::make('type') diff --git a/app/Filament/Components/Actions/ExportEggAction.php b/app/Filament/Components/Actions/ExportEggAction.php index 22942a1b9..1dbfb7696 100644 --- a/app/Filament/Components/Actions/ExportEggAction.php +++ b/app/Filament/Components/Actions/ExportEggAction.php @@ -21,6 +21,10 @@ class ExportEggAction extends Action $this->label(trans('filament-actions::export.modal.actions.export.label')); + $this->iconButton(); + + $this->icon('tabler-file-export'); + $this->tableIcon('tabler-download'); $this->authorize(fn () => user()?->can('export egg')); diff --git a/app/Filament/Components/Actions/ImportEggAction.php b/app/Filament/Components/Actions/ImportEggAction.php index 77a65c2e7..a9ee08db8 100644 --- a/app/Filament/Components/Actions/ImportEggAction.php +++ b/app/Filament/Components/Actions/ImportEggAction.php @@ -17,6 +17,7 @@ use Filament\Schemas\Components\Tabs; use Filament\Schemas\Components\Tabs\Tab; use Filament\Schemas\Components\Utilities\Get; use Filament\Schemas\Components\Utilities\Set; +use Filament\Support\Enums\IconSize; use Illuminate\Support\Arr; use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Str; @@ -35,6 +36,12 @@ class ImportEggAction extends Action $this->label(trans('filament-actions::import.modal.actions.import.label')); + $this->iconButton(); + + $this->icon('tabler-file-import'); + + $this->iconSize(IconSize::ExtraLarge); + $this->authorize(fn () => user()?->can('import egg')); $this->action(function (array $data, EggImporterService $eggImportService): void { diff --git a/app/Filament/Components/Actions/UpdateNodeAllocations.php b/app/Filament/Components/Actions/UpdateNodeAllocations.php index cf186f82c..8108c06a4 100644 --- a/app/Filament/Components/Actions/UpdateNodeAllocations.php +++ b/app/Filament/Components/Actions/UpdateNodeAllocations.php @@ -8,6 +8,7 @@ use Exception; use Filament\Actions\Action; use Filament\Forms\Components\Select; use Filament\Notifications\Notification; +use Filament\Support\Enums\IconSize; class UpdateNodeAllocations extends Action { @@ -23,6 +24,8 @@ class UpdateNodeAllocations extends Action $this->label(trans('admin/node.bulk_update_ip')); $this->icon('tabler-replace'); + $this->iconSize(IconSize::ExtraLarge); + $this->iconButton(); $this->color('warning'); diff --git a/app/Filament/Pages/Auth/EditProfile.php b/app/Filament/Pages/Auth/EditProfile.php index 58a2a2bd3..cad104c2e 100644 --- a/app/Filament/Pages/Auth/EditProfile.php +++ b/app/Filament/Pages/Auth/EditProfile.php @@ -39,6 +39,7 @@ use Filament\Schemas\Components\Tabs\Tab; use Filament\Schemas\Components\Utilities\Get; use Filament\Schemas\Schema; use Filament\Support\Colors\Color; +use Filament\Support\Enums\IconSize; use Filament\Support\Enums\Width; use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Facades\Hash; @@ -550,8 +551,12 @@ class EditProfile extends BaseEditProfile protected function getDefaultHeaderActions(): array { return [ - $this->getSaveFormAction()->formId('form'), - $this->getCancelFormAction()->formId('form'), + $this->getCancelFormAction()->formId('form') + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-arrow-left'), + $this->getSaveFormAction()->formId('form') + ->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon('tabler-device-floppy'), ]; } diff --git a/app/Providers/Filament/FilamentServiceProvider.php b/app/Providers/Filament/FilamentServiceProvider.php index 8b3388f29..54cd3cca7 100644 --- a/app/Providers/Filament/FilamentServiceProvider.php +++ b/app/Providers/Filament/FilamentServiceProvider.php @@ -2,12 +2,20 @@ namespace App\Providers\Filament; +use Filament\Actions\View\ActionsIconAlias; use Filament\Forms\Components\Field; use Filament\Forms\Components\Select; use Filament\Forms\Components\TextInput\Actions\CopyAction; +use Filament\Forms\View\FormsIconAlias; +use Filament\Notifications\View\NotificationsIconAlias; +use Filament\Schemas\View\SchemaIconAlias; use Filament\Support\Colors\Color; use Filament\Support\Facades\FilamentColor; +use Filament\Support\Facades\FilamentIcon; use Filament\Support\Facades\FilamentView; +use Filament\Support\View\SupportIconAlias; +use Filament\Tables\View\TablesIconAlias; +use Filament\View\PanelsIconAlias; use Filament\View\PanelsRenderHook; use Illuminate\Support\Facades\Blade; use Illuminate\Support\ServiceProvider; @@ -76,6 +84,50 @@ class FilamentServiceProvider extends ServiceProvider }); Select::configureUsing(fn (Select $select) => $select->native(false)); + + FilamentIcon::register([ + ActionsIconAlias::DELETE_ACTION => 'tabler-trash', + ActionsIconAlias::EDIT_ACTION => 'tabler-pencil', + ActionsIconAlias::VIEW_ACTION => 'tabler-eye', + ActionsIconAlias::REPLICATE_ACTION => 'tabler-copy-plus', + + PanelsIconAlias::USER_MENU_LOGOUT_BUTTON => 'tabler-logout-2', + PanelsIconAlias::USER_MENU_PROFILE_ITEM => 'tabler-user', + PanelsIconAlias::THEME_SWITCHER_LIGHT_BUTTON => 'tabler-sun', + PanelsIconAlias::THEME_SWITCHER_DARK_BUTTON => 'tabler-moon', + PanelsIconAlias::THEME_SWITCHER_SYSTEM_BUTTON => 'tabler-device-desktop', + PanelsIconAlias::SIDEBAR_OPEN_DATABASE_NOTIFICATIONS_BUTTON => 'tabler-bell', + PanelsIconAlias::TOPBAR_OPEN_DATABASE_NOTIFICATIONS_BUTTON => 'tabler-bell', + PanelsIconAlias::GLOBAL_SEARCH_FIELD => 'tabler-search', + PanelsIconAlias::SIDEBAR_EXPAND_BUTTON => 'tabler-arrow-right-dashed', + PanelsIconAlias::SIDEBAR_COLLAPSE_BUTTON => 'tabler-arrow-left-dashed', + + TablesIconAlias::ACTIONS_FILTER => 'tabler-filters', + TablesIconAlias::SEARCH_FIELD => 'tabler-search', + TablesIconAlias::ACTIONS_COLUMN_MANAGER => 'tabler-columns', + TablesIconAlias::ACTIONS_OPEN_BULK_ACTIONS => 'tabler-box-multiple', + + NotificationsIconAlias::DATABASE_MODAL_EMPTY_STATE => 'tabler-bell-off', + NotificationsIconAlias::NOTIFICATION_CLOSE_BUTTON => 'tabler-x', + NotificationsIconAlias::NOTIFICATION_INFO => 'tabler-info-circle', + NotificationsIconAlias::NOTIFICATION_SUCCESS => 'tabler-check-circle', + NotificationsIconAlias::NOTIFICATION_WARNING => 'tabler-alert-triangle', + NotificationsIconAlias::NOTIFICATION_DANGER => 'tabler-alert-circle', + + SupportIconAlias::MODAL_CLOSE_BUTTON => 'tabler-x', + SupportIconAlias::BREADCRUMBS_SEPARATOR => 'tabler-chevrons-right', + SupportIconAlias::PAGINATION_NEXT_BUTTON => 'tabler-arrow-right', + SupportIconAlias::PAGINATION_PREVIOUS_BUTTON => 'tabler-arrow-left', + SupportIconAlias::SECTION_COLLAPSE_BUTTON => 'tabler-chevron-up', + + FormsIconAlias::COMPONENTS_KEY_VALUE_ACTIONS_DELETE => 'tabler-trash', + FormsIconAlias::COMPONENTS_REPEATER_ACTIONS_DELETE => 'tabler-trash', + FormsIconAlias::COMPONENTS_REPEATER_ACTIONS_EXPAND => 'tabler-chevron-down', + FormsIconAlias::COMPONENTS_REPEATER_ACTIONS_COLLAPSE => 'tabler-chevron-up', + FormsIconAlias::COMPONENTS_REPEATER_ACTIONS_REORDER => 'tabler-arrows-sort', + + SchemaIconAlias::COMPONENTS_WIZARD_COMPLETED_STEP => 'tabler-check', + ]); } public function register(): void {}