Change Admin Actions to IconButtons (#1900)

This commit is contained in:
Charles 2025-11-27 16:44:05 -05:00 committed by GitHub
parent 97f5a0f20b
commit 897b95ec13
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
42 changed files with 261 additions and 115 deletions

View File

@ -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'),
];
}

View File

@ -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(),
]);
}
}

View File

@ -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']),

View File

@ -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),
];
}
}

View File

@ -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'));
}
/**

View File

@ -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'),
];
}

View File

@ -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'),
];
}
}

View File

@ -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'));
}
/**

View File

@ -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'),
];
}

View File

@ -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'),
];
}
}

View File

@ -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'),
]);
}
}

View File

@ -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'),
];
}

View File

@ -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'),
];
}

View File

@ -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),
];
}
}

View File

@ -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'));
}
/**

View File

@ -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'),
];
}

View File

@ -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'),
];
}

View File

@ -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'),
];
}
}

View File

@ -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(),
];
}
}

View File

@ -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,
];
}

View File

@ -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'
<x-filament::button
<x-filament::icon-button
type="submit"
size="sm"
iconSize="xl"
icon="tabler-file-plus"
>
{{ trans('admin/node.create') }}
</x-filament::button>
</x-filament::icon-button>
BLADE))),
]);
}

View File

@ -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'),
];
}

View File

@ -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'),
];
}
}

View File

@ -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]))

View File

@ -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'))

View File

@ -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'),
];
}

View File

@ -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),
];
}
}

View File

@ -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(),
]);
}

View File

@ -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'),
];
}

View File

@ -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<Action|ActionGroup> */
@ -110,7 +111,8 @@ class ListServers extends ListRecords
{
return [
CreateAction::make()
->hidden(fn () => Server::count() <= 0),
->iconButton()->iconSize(IconSize::ExtraLarge)
->icon('tabler-file-plus'),
];
}
}

View File

@ -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]);
}
}),
]);
}
}

View File

@ -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);

View File

@ -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'),
];
}

View File

@ -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'),
];
}
}

View File

@ -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'),
];
}

View File

@ -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'),
];
}
}

View File

@ -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')

View File

@ -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'));

View File

@ -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 {

View File

@ -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');

View File

@ -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'),
];
}

View File

@ -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 {}