From 297ecb544d30b0ff05910f143fa446119928b5c4 Mon Sep 17 00:00:00 2001 From: Boy132 Date: Tue, 27 Jan 2026 11:36:07 +0100 Subject: [PATCH] Replace icon strings with enum (#2113) --- .../Commands/Dev/GenerateTablerIconsEnum.php | 48 + app/Enums/BackupStatus.php | 9 +- app/Enums/ContainerStatus.php | 23 +- app/Enums/PluginCategory.php | 9 +- app/Enums/PluginStatus.php | 13 +- app/Enums/ServerState.php | 12 +- app/Enums/SubuserPermission.php | 24 +- app/Enums/TablerIcon.php | 5997 +++++++++++++++++ app/Enums/WebhookType.php | 7 +- .../Schemas/CaptchaSchemaInterface.php | 3 +- .../Schemas/Turnstile/TurnstileSchema.php | 10 +- .../Features/Schemas/GSLTokenSchema.php | 3 +- .../Features/Schemas/PIDLimitSchema.php | 3 +- app/Extensions/OAuth/OAuthSchemaInterface.php | 3 +- .../OAuth/Schemas/BitbucketSchema.php | 6 +- app/Extensions/OAuth/Schemas/CommonSchema.php | 6 +- .../OAuth/Schemas/DiscordSchema.php | 6 +- .../OAuth/Schemas/FacebookSchema.php | 6 +- app/Extensions/OAuth/Schemas/GithubSchema.php | 6 +- app/Extensions/OAuth/Schemas/GitlabSchema.php | 6 +- app/Extensions/OAuth/Schemas/GoogleSchema.php | 6 +- .../OAuth/Schemas/LinkedinSchema.php | 6 +- app/Extensions/OAuth/Schemas/OAuthSchema.php | 12 +- app/Extensions/OAuth/Schemas/SlackSchema.php | 6 +- app/Extensions/OAuth/Schemas/SteamSchema.php | 6 +- app/Extensions/OAuth/Schemas/XSchema.php | 6 +- app/Filament/Admin/Pages/Dashboard.php | 4 +- app/Filament/Admin/Pages/Health.php | 24 +- app/Filament/Admin/Pages/ListLogs.php | 9 +- app/Filament/Admin/Pages/Settings.php | 67 +- app/Filament/Admin/Pages/ViewLogs.php | 7 +- .../Resources/ApiKeys/ApiKeyResource.php | 14 +- .../Resources/ApiKeys/Pages/CreateApiKey.php | 3 +- .../Resources/ApiKeys/Pages/ListApiKeys.php | 3 +- .../DatabaseHosts/DatabaseHostResource.php | 6 +- .../Pages/CreateDatabaseHost.php | 3 +- .../DatabaseHosts/Pages/EditDatabaseHost.php | 5 +- .../DatabaseHosts/Pages/ListDatabaseHosts.php | 3 +- .../Admin/Resources/Eggs/EggResource.php | 4 +- .../Admin/Resources/Eggs/Pages/CreateEgg.php | 9 +- .../Admin/Resources/Eggs/Pages/EditEgg.php | 21 +- .../Admin/Resources/Eggs/Pages/ListEggs.php | 5 +- .../Admin/Resources/Mounts/MountResource.php | 12 +- .../Resources/Mounts/Pages/CreateMount.php | 3 +- .../Resources/Mounts/Pages/EditMount.php | 3 +- .../Resources/Mounts/Pages/ListMounts.php | 3 +- .../Admin/Resources/Nodes/NodeResource.php | 4 +- .../Resources/Nodes/Pages/CreateNode.php | 19 +- .../Admin/Resources/Nodes/Pages/EditNode.php | 39 +- .../Admin/Resources/Nodes/Pages/ListNodes.php | 13 +- .../AllocationsRelationManager.php | 10 +- .../ServersRelationManager.php | 4 +- .../Resources/Plugins/PluginResource.php | 28 +- .../Resources/Roles/Pages/CreateRole.php | 3 +- .../Admin/Resources/Roles/Pages/EditRole.php | 3 +- .../Admin/Resources/Roles/Pages/ListRoles.php | 3 +- .../Admin/Resources/Roles/RoleResource.php | 3 +- .../Resources/Servers/Pages/CreateServer.php | 53 +- .../Resources/Servers/Pages/EditServer.php | 51 +- .../Resources/Servers/Pages/ListServers.php | 7 +- .../AllocationsRelationManager.php | 15 +- .../DatabasesRelationManager.php | 7 +- .../Resources/Servers/ServerResource.php | 4 +- .../Resources/Users/Pages/CreateUser.php | 3 +- .../Admin/Resources/Users/Pages/EditUser.php | 3 +- .../Admin/Resources/Users/Pages/ListUsers.php | 3 +- .../Admin/Resources/Users/UserResource.php | 26 +- .../Pages/CreateWebhookConfiguration.php | 5 +- .../Pages/EditWebhookConfiguration.php | 3 +- .../Pages/ListWebhookConfigurations.php | 3 +- .../Resources/Webhooks/WebhookResource.php | 8 +- app/Filament/Admin/Widgets/CanaryWidget.php | 5 +- app/Filament/Admin/Widgets/HelpWidget.php | 5 +- app/Filament/Admin/Widgets/NoNodesWidget.php | 5 +- app/Filament/Admin/Widgets/SupportWidget.php | 5 +- app/Filament/Admin/Widgets/UpdateWidget.php | 9 +- .../Resources/Servers/Pages/ListServers.php | 13 +- .../App/Resources/Servers/ServerResource.php | 4 +- .../Components/Actions/DeleteServerIcon.php | 3 +- .../Components/Actions/ExportEggAction.php | 5 +- .../Actions/ExportScheduleAction.php | 3 +- .../Components/Actions/ImportEggAction.php | 9 +- .../Actions/ImportScheduleAction.php | 5 +- .../Actions/RotateDatabasePasswordAction.php | 3 +- .../Components/Actions/UpdateEggAction.php | 3 +- .../Actions/UpdateEggBulkAction.php | 3 +- .../Actions/UpdateNodeAllocations.php | 5 +- .../Forms/Fields/StartupVariable.php | 3 +- app/Filament/Pages/Auth/EditProfile.php | 39 +- app/Filament/Server/Pages/Console.php | 12 +- app/Filament/Server/Pages/Settings.php | 20 +- app/Filament/Server/Pages/Startup.php | 4 +- .../Resources/Activities/ActivityResource.php | 6 +- .../Allocations/AllocationResource.php | 14 +- .../Resources/Backups/BackupResource.php | 18 +- .../Resources/Databases/DatabaseResource.php | 8 +- .../Server/Resources/Files/FileResource.php | 4 +- .../Resources/Files/Pages/EditFiles.php | 7 +- .../Resources/Files/Pages/ListFiles.php | 25 +- .../Schedules/Pages/EditSchedule.php | 5 +- .../Schedules/Pages/ViewSchedule.php | 3 +- .../Resources/Schedules/ScheduleResource.php | 12 +- .../Resources/Subusers/SubuserResource.php | 8 +- app/Livewire/Installer/PanelInstaller.php | 3 +- app/Livewire/Installer/Steps/CacheStep.php | 11 +- app/Livewire/Installer/Steps/DatabaseStep.php | 13 +- .../Installer/Steps/EggSelectionStep.php | 3 +- .../Installer/Steps/EnvironmentStep.php | 5 +- app/Livewire/Installer/Steps/QueueStep.php | 3 +- .../Installer/Steps/RequirementsStep.php | 7 +- app/Livewire/Installer/Steps/SessionStep.php | 3 +- app/Livewire/NodeSystemInformation.php | 5 +- app/Models/ActivityLog.php | 10 +- app/Models/File.php | 12 +- app/Models/Role.php | 14 +- app/Providers/Filament/AdminPanelProvider.php | 5 +- app/Providers/Filament/AppPanelProvider.php | 3 +- .../Filament/FilamentServiceProvider.php | 75 +- .../Filament/ServerPanelProvider.php | 7 +- 119 files changed, 6713 insertions(+), 509 deletions(-) create mode 100644 app/Console/Commands/Dev/GenerateTablerIconsEnum.php create mode 100644 app/Enums/TablerIcon.php diff --git a/app/Console/Commands/Dev/GenerateTablerIconsEnum.php b/app/Console/Commands/Dev/GenerateTablerIconsEnum.php new file mode 100644 index 000000000..abff562ef --- /dev/null +++ b/app/Console/Commands/Dev/GenerateTablerIconsEnum.php @@ -0,0 +1,48 @@ + $file->getExtension() === 'svg'); + + $enumContent = "getFilename(), PATHINFO_FILENAME); + + // Letter V is duplicate, as "letter-v" and "letter-letter-v" + if (str($filename)->contains('letter-letter')) { + continue; + } + + // Filled icons exist with "-f" and "-filled", we only want the later + if (str($filename)->endsWith('-f') && file_exists(base_path("vendor/secondnetwork/blade-tabler-icons/resources/svg/{$filename}illed.svg"))) { + continue; + } + + $caseName = str($filename)->title()->replace('-', ''); + $value = str($filename)->slug()->prepend('tabler-'); + + $enumContent .= " case $caseName = '$value';\n"; + } + + $enumContent .= "}\n"; + + File::put(base_path('app/Enums/TablerIcon.php'), $enumContent); + + $this->info('Enum generated'); + } +} diff --git a/app/Enums/BackupStatus.php b/app/Enums/BackupStatus.php index 7d28f73ef..96543159c 100644 --- a/app/Enums/BackupStatus.php +++ b/app/Enums/BackupStatus.php @@ -2,6 +2,7 @@ namespace App\Enums; +use BackedEnum; use Filament\Support\Contracts\HasColor; use Filament\Support\Contracts\HasIcon; use Filament\Support\Contracts\HasLabel; @@ -12,12 +13,12 @@ enum BackupStatus: string implements HasColor, HasIcon, HasLabel case Successful = 'successful'; case Failed = 'failed'; - public function getIcon(): string + public function getIcon(): BackedEnum { return match ($this) { - self::InProgress => 'tabler-circle-dashed', - self::Successful => 'tabler-circle-check', - self::Failed => 'tabler-circle-x', + self::InProgress => TablerIcon::CircleDashed, + self::Successful => TablerIcon::CircleCheck, + self::Failed => TablerIcon::CircleX, }; } diff --git a/app/Enums/ContainerStatus.php b/app/Enums/ContainerStatus.php index 15548c423..25712a20a 100644 --- a/app/Enums/ContainerStatus.php +++ b/app/Enums/ContainerStatus.php @@ -2,6 +2,7 @@ namespace App\Enums; +use BackedEnum; use Filament\Support\Contracts\HasColor; use Filament\Support\Contracts\HasIcon; use Filament\Support\Contracts\HasLabel; @@ -23,20 +24,20 @@ enum ContainerStatus: string implements HasColor, HasIcon, HasLabel // HTTP Based case Missing = 'missing'; - public function getIcon(): string + public function getIcon(): BackedEnum { return match ($this) { - self::Created => 'tabler-heart-plus', - self::Starting => 'tabler-heart-up', - self::Running => 'tabler-heartbeat', - self::Restarting => 'tabler-heart-bolt', - self::Exited => 'tabler-heart-exclamation', - self::Paused => 'tabler-heart-pause', - self::Dead, self::Offline => 'tabler-heart-x', - self::Removing => 'tabler-heart-down', - self::Missing => 'tabler-heart-search', - self::Stopping => 'tabler-heart-minus', + self::Created => TablerIcon::HeartPlus, + self::Starting => TablerIcon::HeartUp, + self::Running => TablerIcon::Heartbeat, + self::Restarting => TablerIcon::HeartBolt, + self::Exited => TablerIcon::HeartExclamation, + self::Paused => TablerIcon::HeartPause, + self::Dead, self::Offline => TablerIcon::HeartX, + self::Removing => TablerIcon::HeartDown, + self::Missing => TablerIcon::HeartSearch, + self::Stopping => TablerIcon::HeartMinus, }; } diff --git a/app/Enums/PluginCategory.php b/app/Enums/PluginCategory.php index 23e18b231..2826b4a45 100644 --- a/app/Enums/PluginCategory.php +++ b/app/Enums/PluginCategory.php @@ -2,6 +2,7 @@ namespace App\Enums; +use BackedEnum; use Filament\Support\Contracts\HasIcon; use Filament\Support\Contracts\HasLabel; @@ -11,12 +12,12 @@ enum PluginCategory: string implements HasIcon, HasLabel case Theme = 'theme'; case Language = 'language'; - public function getIcon(): string + public function getIcon(): BackedEnum { return match ($this) { - self::Plugin => 'tabler-package', - self::Theme => 'tabler-palette', - self::Language => 'tabler-language', + self::Plugin => TablerIcon::Package, + self::Theme => TablerIcon::Palette, + self::Language => TablerIcon::Language, }; } diff --git a/app/Enums/PluginStatus.php b/app/Enums/PluginStatus.php index 180adef47..260837507 100644 --- a/app/Enums/PluginStatus.php +++ b/app/Enums/PluginStatus.php @@ -2,6 +2,7 @@ namespace App\Enums; +use BackedEnum; use Filament\Support\Contracts\HasColor; use Filament\Support\Contracts\HasIcon; use Filament\Support\Contracts\HasLabel; @@ -14,14 +15,14 @@ enum PluginStatus: string implements HasColor, HasIcon, HasLabel case Errored = 'errored'; case Incompatible = 'incompatible'; - public function getIcon(): string + public function getIcon(): BackedEnum { return match ($this) { - self::NotInstalled => 'tabler-heart-off', - self::Disabled => 'tabler-heart-x', - self::Enabled => 'tabler-heart-check', - self::Errored => 'tabler-heart-broken', - self::Incompatible => 'tabler-heart-cancel', + self::NotInstalled => TablerIcon::HeartOff, + self::Disabled => TablerIcon::HeartX, + self::Enabled => TablerIcon::HeartCheck, + self::Errored => TablerIcon::HeartBroken, + self::Incompatible => TablerIcon::HeartCancel, }; } diff --git a/app/Enums/ServerState.php b/app/Enums/ServerState.php index e036bb922..5967c23f0 100644 --- a/app/Enums/ServerState.php +++ b/app/Enums/ServerState.php @@ -2,6 +2,7 @@ namespace App\Enums; +use BackedEnum; use Filament\Support\Contracts\HasColor; use Filament\Support\Contracts\HasIcon; use Filament\Support\Contracts\HasLabel; @@ -14,14 +15,13 @@ enum ServerState: string implements HasColor, HasIcon, HasLabel case Suspended = 'suspended'; case RestoringBackup = 'restoring_backup'; - public function getIcon(): string + public function getIcon(): BackedEnum { return match ($this) { - self::Installing => 'tabler-heart-bolt', - self::InstallFailed => 'tabler-heart-x', - self::ReinstallFailed => 'tabler-heart-x', - self::Suspended => 'tabler-heart-cancel', - self::RestoringBackup => 'tabler-heart-up', + self::Installing => TablerIcon::HeartBolt, + self::InstallFailed, self::ReinstallFailed => TablerIcon::HeartX, + self::Suspended => TablerIcon::HeartCancel, + self::RestoringBackup => TablerIcon::HeartUp, }; } diff --git a/app/Enums/SubuserPermission.php b/app/Enums/SubuserPermission.php index ccb16680e..f0d7a343d 100644 --- a/app/Enums/SubuserPermission.php +++ b/app/Enums/SubuserPermission.php @@ -2,6 +2,8 @@ namespace App\Enums; +use BackedEnum; + enum SubuserPermission: string { case WebsocketConnect = 'websocket.connect'; @@ -67,21 +69,21 @@ enum SubuserPermission: string return $this === self::WebsocketConnect; } - public function getIcon(): ?string + public function getIcon(): ?BackedEnum { [$group, $permission] = $this->split(); return match ($group) { - 'control' => 'tabler-terminal-2', - 'user' => 'tabler-users', - 'file' => 'tabler-files', - 'backup' => 'tabler-file-zip', - 'allocation' => 'tabler-network', - 'startup' => 'tabler-player-play', - 'database' => 'tabler-database', - 'schedule' => 'tabler-clock', - 'settings' => 'tabler-settings', - 'activity' => 'tabler-stack', + 'control' => TablerIcon::Terminal2, + 'user' => TablerIcon::Users, + 'file' => TablerIcon::Files, + 'backup' => TablerIcon::FileZip, + 'allocation' => TablerIcon::Network, + 'startup' => TablerIcon::PlayerPlay, + 'database' => TablerIcon::Database, + 'schedule' => TablerIcon::Clock, + 'settings' => TablerIcon::Settings, + 'activity' => TablerIcon::Stack, default => null, }; } diff --git a/app/Enums/TablerIcon.php b/app/Enums/TablerIcon.php new file mode 100644 index 000000000..92ff30e1a --- /dev/null +++ b/app/Enums/TablerIcon.php @@ -0,0 +1,5997 @@ + 'tabler-world-www', - self::Discord => 'tabler-brand-discord', + self::Regular => TablerIcon::WorldWww, + self::Discord => TablerIcon::BrandDiscord, }; } } diff --git a/app/Extensions/Captcha/Schemas/CaptchaSchemaInterface.php b/app/Extensions/Captcha/Schemas/CaptchaSchemaInterface.php index 6c8497b0f..fc08680f8 100644 --- a/app/Extensions/Captcha/Schemas/CaptchaSchemaInterface.php +++ b/app/Extensions/Captcha/Schemas/CaptchaSchemaInterface.php @@ -2,6 +2,7 @@ namespace App\Extensions\Captcha\Schemas; +use BackedEnum; use Filament\Schemas\Components\Component; interface CaptchaSchemaInterface @@ -24,7 +25,7 @@ interface CaptchaSchemaInterface */ public function getSettingsForm(): array; - public function getIcon(): ?string; + public function getIcon(): null|string|BackedEnum; public function validateResponse(?string $captchaResponse = null): void; } diff --git a/app/Extensions/Captcha/Schemas/Turnstile/TurnstileSchema.php b/app/Extensions/Captcha/Schemas/Turnstile/TurnstileSchema.php index 158f2612a..f6220b2fe 100644 --- a/app/Extensions/Captcha/Schemas/Turnstile/TurnstileSchema.php +++ b/app/Extensions/Captcha/Schemas/Turnstile/TurnstileSchema.php @@ -2,8 +2,10 @@ namespace App\Extensions\Captcha\Schemas\Turnstile; +use App\Enums\TablerIcon; use App\Extensions\Captcha\Schemas\BaseSchema; use App\Extensions\Captcha\Schemas\CaptchaSchemaInterface; +use BackedEnum; use Exception; use Filament\Forms\Components\Toggle; use Filament\Infolists\Components\TextEntry; @@ -49,8 +51,8 @@ class TurnstileSchema extends BaseSchema implements CaptchaSchemaInterface ->label(trans('admin/setting.captcha.verify')) ->columnSpan(2) ->inline(false) - ->onIcon('tabler-check') - ->offIcon('tabler-x') + ->onIcon(TablerIcon::Check) + ->offIcon(TablerIcon::X) ->onColor('success') ->offColor('danger') ->default(env('CAPTCHA_TURNSTILE_VERIFY_DOMAIN', true)), @@ -61,9 +63,9 @@ class TurnstileSchema extends BaseSchema implements CaptchaSchemaInterface ]); } - public function getIcon(): ?string + public function getIcon(): BackedEnum { - return 'tabler-brand-cloudflare'; + return TablerIcon::BrandCloudflare; } /** diff --git a/app/Extensions/Features/Schemas/GSLTokenSchema.php b/app/Extensions/Features/Schemas/GSLTokenSchema.php index aa380a771..c52faab40 100644 --- a/app/Extensions/Features/Schemas/GSLTokenSchema.php +++ b/app/Extensions/Features/Schemas/GSLTokenSchema.php @@ -3,6 +3,7 @@ namespace App\Extensions\Features\Schemas; use App\Enums\SubuserPermission; +use App\Enums\TablerIcon; use App\Extensions\Features\FeatureSchemaInterface; use App\Facades\Activity; use App\Models\Server; @@ -73,7 +74,7 @@ class GSLTokenSchema implements FeatureSchemaInterface } }, ]) - ->hintIcon('tabler-code', fn () => implode('|', $serverVariable->variable->rules)) + ->hintIcon(TablerIcon::Code, fn () => implode('|', $serverVariable->variable->rules)) ->label(fn () => $serverVariable->variable->name) ->prefix(fn () => '{{' . $serverVariable->variable->env_variable . '}}') ->helperText(fn () => empty($serverVariable->variable->description) ? '—' : $serverVariable->variable->description), diff --git a/app/Extensions/Features/Schemas/PIDLimitSchema.php b/app/Extensions/Features/Schemas/PIDLimitSchema.php index 63581ae08..871014214 100644 --- a/app/Extensions/Features/Schemas/PIDLimitSchema.php +++ b/app/Extensions/Features/Schemas/PIDLimitSchema.php @@ -2,6 +2,7 @@ namespace App\Extensions\Features\Schemas; +use App\Enums\TablerIcon; use App\Extensions\Features\FeatureSchemaInterface; use Filament\Actions\Action; use Illuminate\Support\Facades\Blade; @@ -31,7 +32,7 @@ class PIDLimitSchema implements FeatureSchemaInterface { return Action::make($this->getId()) ->requiresConfirmation() - ->icon('tabler-alert-triangle') + ->icon(TablerIcon::AlertTriangle) ->modalHeading(fn () => user()?->isAdmin() ? 'Memory or process limit reached...' : 'Possible resource limit reached...') ->modalDescription(new HtmlString(Blade::render( user()?->isAdmin() ? <<<'HTML' diff --git a/app/Extensions/OAuth/OAuthSchemaInterface.php b/app/Extensions/OAuth/OAuthSchemaInterface.php index 5f58a3fad..56320d5b2 100644 --- a/app/Extensions/OAuth/OAuthSchemaInterface.php +++ b/app/Extensions/OAuth/OAuthSchemaInterface.php @@ -3,6 +3,7 @@ namespace App\Extensions\OAuth; use App\Models\User; +use BackedEnum; use Filament\Schemas\Components\Component; use Filament\Schemas\Components\Wizard\Step; use Laravel\Socialite\Contracts\User as OAuthUser; @@ -29,7 +30,7 @@ interface OAuthSchemaInterface /** @return Step[] */ public function getSetupSteps(): array; - public function getIcon(): ?string; + public function getIcon(): null|string|BackedEnum; public function getHexColor(): ?string; diff --git a/app/Extensions/OAuth/Schemas/BitbucketSchema.php b/app/Extensions/OAuth/Schemas/BitbucketSchema.php index 5252d5372..bcb271ee7 100644 --- a/app/Extensions/OAuth/Schemas/BitbucketSchema.php +++ b/app/Extensions/OAuth/Schemas/BitbucketSchema.php @@ -2,6 +2,8 @@ namespace App\Extensions\OAuth\Schemas; +use App\Enums\TablerIcon; +use BackedEnum; use Filament\Forms\Components\TextInput; use Filament\Infolists\Components\TextEntry; use Filament\Schemas\Components\Wizard\Step; @@ -33,9 +35,9 @@ final class BitbucketSchema extends OAuthSchema ], parent::getSetupSteps()); } - public function getIcon(): string + public function getIcon(): BackedEnum { - return 'tabler-brand-bitbucket-f'; + return TablerIcon::BrandBitbucketFilled; } public function getHexColor(): string diff --git a/app/Extensions/OAuth/Schemas/CommonSchema.php b/app/Extensions/OAuth/Schemas/CommonSchema.php index f0874f481..d03fa80db 100644 --- a/app/Extensions/OAuth/Schemas/CommonSchema.php +++ b/app/Extensions/OAuth/Schemas/CommonSchema.php @@ -2,13 +2,15 @@ namespace App\Extensions\OAuth\Schemas; +use BackedEnum; + final class CommonSchema extends OAuthSchema { public function __construct( private readonly string $id, private readonly ?string $name = null, private readonly ?string $configName = null, - private readonly ?string $icon = null, + private readonly null|string|BackedEnum $icon = null, private readonly ?string $hexColor = null, ) {} @@ -27,7 +29,7 @@ final class CommonSchema extends OAuthSchema return $this->configName ?? parent::getConfigKey(); } - public function getIcon(): ?string + public function getIcon(): null|string|BackedEnum { return $this->icon; } diff --git a/app/Extensions/OAuth/Schemas/DiscordSchema.php b/app/Extensions/OAuth/Schemas/DiscordSchema.php index d91ce5581..0b43dd4c1 100644 --- a/app/Extensions/OAuth/Schemas/DiscordSchema.php +++ b/app/Extensions/OAuth/Schemas/DiscordSchema.php @@ -2,6 +2,8 @@ namespace App\Extensions\OAuth\Schemas; +use App\Enums\TablerIcon; +use BackedEnum; use Filament\Forms\Components\TextInput; use Filament\Infolists\Components\TextEntry; use Filament\Schemas\Components\Wizard\Step; @@ -42,9 +44,9 @@ final class DiscordSchema extends OAuthSchema ], parent::getSetupSteps()); } - public function getIcon(): string + public function getIcon(): BackedEnum { - return 'tabler-brand-discord-f'; + return TablerIcon::BrandDiscordFilled; } public function getHexColor(): string diff --git a/app/Extensions/OAuth/Schemas/FacebookSchema.php b/app/Extensions/OAuth/Schemas/FacebookSchema.php index ded300a9b..15e673a7d 100644 --- a/app/Extensions/OAuth/Schemas/FacebookSchema.php +++ b/app/Extensions/OAuth/Schemas/FacebookSchema.php @@ -2,6 +2,8 @@ namespace App\Extensions\OAuth\Schemas; +use App\Enums\TablerIcon; +use BackedEnum; use Filament\Forms\Components\TextInput; use Filament\Infolists\Components\TextEntry; use Filament\Schemas\Components\Wizard\Step; @@ -36,9 +38,9 @@ final class FacebookSchema extends OAuthSchema ], parent::getSetupSteps()); } - public function getIcon(): string + public function getIcon(): BackedEnum { - return 'tabler-brand-facebook-f'; + return TablerIcon::BrandFacebookFilled; } public function getHexColor(): string diff --git a/app/Extensions/OAuth/Schemas/GithubSchema.php b/app/Extensions/OAuth/Schemas/GithubSchema.php index b7258ab4b..089aa185d 100644 --- a/app/Extensions/OAuth/Schemas/GithubSchema.php +++ b/app/Extensions/OAuth/Schemas/GithubSchema.php @@ -2,6 +2,8 @@ namespace App\Extensions\OAuth\Schemas; +use App\Enums\TablerIcon; +use BackedEnum; use Filament\Forms\Components\TextInput; use Filament\Infolists\Components\TextEntry; use Filament\Schemas\Components\Wizard\Step; @@ -42,9 +44,9 @@ final class GithubSchema extends OAuthSchema ], parent::getSetupSteps()); } - public function getIcon(): string + public function getIcon(): BackedEnum { - return 'tabler-brand-github-f'; + return TablerIcon::BrandGithubFilled; } public function getHexColor(): string diff --git a/app/Extensions/OAuth/Schemas/GitlabSchema.php b/app/Extensions/OAuth/Schemas/GitlabSchema.php index c31713cef..692acf786 100644 --- a/app/Extensions/OAuth/Schemas/GitlabSchema.php +++ b/app/Extensions/OAuth/Schemas/GitlabSchema.php @@ -2,6 +2,8 @@ namespace App\Extensions\OAuth\Schemas; +use App\Enums\TablerIcon; +use BackedEnum; use Filament\Forms\Components\TextInput; use Filament\Infolists\Components\TextEntry; use Filament\Schemas\Components\Wizard\Step; @@ -53,9 +55,9 @@ final class GitlabSchema extends OAuthSchema ], parent::getSetupSteps()); } - public function getIcon(): string + public function getIcon(): BackedEnum { - return 'tabler-brand-gitlab'; + return TablerIcon::BrandGitlab; } public function getHexColor(): string diff --git a/app/Extensions/OAuth/Schemas/GoogleSchema.php b/app/Extensions/OAuth/Schemas/GoogleSchema.php index 6cb74d367..0caa3ae9b 100644 --- a/app/Extensions/OAuth/Schemas/GoogleSchema.php +++ b/app/Extensions/OAuth/Schemas/GoogleSchema.php @@ -2,6 +2,8 @@ namespace App\Extensions\OAuth\Schemas; +use App\Enums\TablerIcon; +use BackedEnum; use Filament\Forms\Components\TextInput; use Filament\Infolists\Components\TextEntry; use Filament\Schemas\Components\Wizard\Step; @@ -42,9 +44,9 @@ final class GoogleSchema extends OAuthSchema ], parent::getSetupSteps()); } - public function getIcon(): string + public function getIcon(): BackedEnum { - return 'tabler-brand-google-f'; + return TablerIcon::BrandGoogleFilled; } public function getHexColor(): string diff --git a/app/Extensions/OAuth/Schemas/LinkedinSchema.php b/app/Extensions/OAuth/Schemas/LinkedinSchema.php index 26736c020..b198439c0 100644 --- a/app/Extensions/OAuth/Schemas/LinkedinSchema.php +++ b/app/Extensions/OAuth/Schemas/LinkedinSchema.php @@ -2,6 +2,8 @@ namespace App\Extensions\OAuth\Schemas; +use App\Enums\TablerIcon; +use BackedEnum; use Filament\Forms\Components\TextInput; use Filament\Infolists\Components\TextEntry; use Filament\Schemas\Components\Wizard\Step; @@ -33,9 +35,9 @@ final class LinkedinSchema extends OAuthSchema ], parent::getSetupSteps()); } - public function getIcon(): string + public function getIcon(): BackedEnum { - return 'tabler-brand-linkedin-f'; + return TablerIcon::BrandLinkedinFilled; } public function getHexColor(): string diff --git a/app/Extensions/OAuth/Schemas/OAuthSchema.php b/app/Extensions/OAuth/Schemas/OAuthSchema.php index 99e13d86a..c9f1b38a7 100644 --- a/app/Extensions/OAuth/Schemas/OAuthSchema.php +++ b/app/Extensions/OAuth/Schemas/OAuthSchema.php @@ -2,8 +2,10 @@ namespace App\Extensions\OAuth\Schemas; +use App\Enums\TablerIcon; use App\Extensions\OAuth\OAuthSchemaInterface; use App\Models\User; +use BackedEnum; use Filament\Forms\Components\TextInput; use Filament\Forms\Components\Toggle; use Filament\Schemas\Components\Component; @@ -61,8 +63,8 @@ abstract class OAuthSchema implements OAuthSchemaInterface ->label(trans('admin/setting.oauth.create_missing_users')) ->columnSpan(2) ->inline(false) - ->onIcon('tabler-check') - ->offIcon('tabler-x') + ->onIcon(TablerIcon::Check) + ->offIcon(TablerIcon::X) ->onColor('success') ->offColor('danger') ->formatStateUsing(fn ($state) => (bool) $state) @@ -72,8 +74,8 @@ abstract class OAuthSchema implements OAuthSchemaInterface ->label(trans('admin/setting.oauth.link_missing_users')) ->columnSpan(2) ->inline(false) - ->onIcon('tabler-check') - ->offIcon('tabler-x') + ->onIcon(TablerIcon::Check) + ->offIcon(TablerIcon::X) ->onColor('success') ->offColor('danger') ->formatStateUsing(fn ($state) => (bool) $state) @@ -106,7 +108,7 @@ abstract class OAuthSchema implements OAuthSchemaInterface return "OAUTH_{$id}_ENABLED"; } - public function getIcon(): ?string + public function getIcon(): null|string|BackedEnum { return null; } diff --git a/app/Extensions/OAuth/Schemas/SlackSchema.php b/app/Extensions/OAuth/Schemas/SlackSchema.php index 78ae5445e..2028edfda 100644 --- a/app/Extensions/OAuth/Schemas/SlackSchema.php +++ b/app/Extensions/OAuth/Schemas/SlackSchema.php @@ -2,6 +2,8 @@ namespace App\Extensions\OAuth\Schemas; +use App\Enums\TablerIcon; +use BackedEnum; use Filament\Forms\Components\TextInput; use Filament\Infolists\Components\TextEntry; use Filament\Schemas\Components\Wizard\Step; @@ -33,9 +35,9 @@ final class SlackSchema extends OAuthSchema ], parent::getSetupSteps()); } - public function getIcon(): string + public function getIcon(): BackedEnum { - return 'tabler-brand-slack'; + return TablerIcon::BrandSlack; } public function getHexColor(): string diff --git a/app/Extensions/OAuth/Schemas/SteamSchema.php b/app/Extensions/OAuth/Schemas/SteamSchema.php index 2c0150bcc..29b179a1b 100644 --- a/app/Extensions/OAuth/Schemas/SteamSchema.php +++ b/app/Extensions/OAuth/Schemas/SteamSchema.php @@ -2,6 +2,8 @@ namespace App\Extensions\OAuth\Schemas; +use App\Enums\TablerIcon; +use BackedEnum; use Filament\Forms\Components\TextInput; use Filament\Infolists\Components\TextEntry; use Filament\Schemas\Components\Wizard\Step; @@ -59,9 +61,9 @@ final class SteamSchema extends OAuthSchema ], parent::getSetupSteps()); } - public function getIcon(): string + public function getIcon(): BackedEnum { - return 'tabler-brand-steam-f'; + return TablerIcon::BrandSteamFilled; } public function getHexColor(): string diff --git a/app/Extensions/OAuth/Schemas/XSchema.php b/app/Extensions/OAuth/Schemas/XSchema.php index dfa6b616e..52952bbe6 100644 --- a/app/Extensions/OAuth/Schemas/XSchema.php +++ b/app/Extensions/OAuth/Schemas/XSchema.php @@ -2,6 +2,8 @@ namespace App\Extensions\OAuth\Schemas; +use App\Enums\TablerIcon; +use BackedEnum; use Filament\Forms\Components\TextInput; use Filament\Infolists\Components\TextEntry; use Filament\Schemas\Components\Wizard\Step; @@ -42,9 +44,9 @@ final class XSchema extends OAuthSchema ], parent::getSetupSteps()); } - public function getIcon(): string + public function getIcon(): BackedEnum { - return 'tabler-brand-x'; + return TablerIcon::BrandX; } public function getHexColor(): string diff --git a/app/Filament/Admin/Pages/Dashboard.php b/app/Filament/Admin/Pages/Dashboard.php index 41bd33c1d..48798d416 100644 --- a/app/Filament/Admin/Pages/Dashboard.php +++ b/app/Filament/Admin/Pages/Dashboard.php @@ -2,12 +2,14 @@ namespace App\Filament\Admin\Pages; +use App\Enums\TablerIcon; use App\Services\Helpers\SoftwareVersionService; +use BackedEnum; use Filament\Pages\Dashboard as BaseDashboard; class Dashboard extends BaseDashboard { - protected static string|\BackedEnum|null $navigationIcon = 'tabler-layout-dashboard'; + protected static string|BackedEnum|null $navigationIcon = TablerIcon::LayoutDashboard; private SoftwareVersionService $softwareVersionService; diff --git a/app/Filament/Admin/Pages/Health.php b/app/Filament/Admin/Pages/Health.php index 00ef7a2a3..55b7dd3f7 100644 --- a/app/Filament/Admin/Pages/Health.php +++ b/app/Filament/Admin/Pages/Health.php @@ -2,6 +2,8 @@ namespace App\Filament\Admin\Pages; +use App\Enums\TablerIcon; +use BackedEnum; use Carbon\Carbon; use Filament\Actions\Action; use Filament\Notifications\Notification; @@ -14,7 +16,7 @@ use Spatie\Health\ResultStores\ResultStore; class Health extends Page { - protected static string|\BackedEnum|null $navigationIcon = 'tabler-heart'; + protected static string|BackedEnum|null $navigationIcon = TablerIcon::Heart; protected string $view = 'filament.pages.health'; @@ -49,7 +51,7 @@ class Health extends Page Action::make('refresh') ->label(trans('admin/health.refresh')) ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-refresh') + ->icon(TablerIcon::Refresh) ->action('refresh'), ]; } @@ -128,16 +130,16 @@ class Health extends Page return trans('admin/health.checks.failed', ['checks' => implode(', ', $failedNames)]); } - public static function getNavigationIcon(): string + public static function getNavigationIcon(): BackedEnum { // @phpstan-ignore myCustomRules.forbiddenGlobalFunctions $results = app(ResultStore::class)->latestResults(); if ($results === null) { - return 'tabler-heart-question'; + return TablerIcon::HeartQuestion; } - return $results->containsFailingCheck() ? 'tabler-heart-exclamation' : 'tabler-heart-check'; + return $results->containsFailingCheck() ? TablerIcon::HeartExclamation : TablerIcon::HeartCheck; } public function backgroundColor(string $str): string @@ -162,14 +164,14 @@ class Health extends Page }; } - public function icon(string $str): string + public function icon(string $str): BackedEnum { return match ($str) { - Status::ok()->value => 'tabler-circle-check', - Status::warning()->value => 'tabler-exclamation-circle', - Status::skipped()->value => 'tabler-circle-chevron-right', - Status::failed()->value, Status::crashed()->value => 'tabler-circle-x', - default => 'tabler-help-circle' + Status::ok()->value => TablerIcon::CircleCheck, + Status::warning()->value => TablerIcon::ExclamationCircle, + Status::skipped()->value => TablerIcon::CircleChevronRight, + Status::failed()->value, Status::crashed()->value => TablerIcon::CircleX, + default => TablerIcon::HelpCircle }; } } diff --git a/app/Filament/Admin/Pages/ListLogs.php b/app/Filament/Admin/Pages/ListLogs.php index 7c44194d3..69d2177b7 100644 --- a/app/Filament/Admin/Pages/ListLogs.php +++ b/app/Filament/Admin/Pages/ListLogs.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Pages; +use App\Enums\TablerIcon; use Boquizo\FilamentLogViewer\Actions\DeleteAction; use Boquizo\FilamentLogViewer\Actions\DownloadAction; use Boquizo\FilamentLogViewer\Actions\ViewLogAction; @@ -28,7 +29,7 @@ class ListLogs extends BaseListLogs { return parent::table($table) ->emptyStateHeading(trans('admin/log.empty_table')) - ->emptyStateIcon('tabler-check') + ->emptyStateIcon(TablerIcon::Check) ->columns([ NameColumn::make('date'), LevelColumn::make(Level::ALL) @@ -46,12 +47,12 @@ class ListLogs extends BaseListLogs ]) ->recordActions([ ViewLogAction::make() - ->icon('tabler-file-description')->iconSize(IconSize::Large)->iconButton(), + ->icon(TablerIcon::FileDescription)->iconSize(IconSize::Large)->iconButton(), DownloadAction::make() - ->icon('tabler-file-download')->iconSize(IconSize::Large)->iconButton(), + ->icon(TablerIcon::FileDownload)->iconSize(IconSize::Large)->iconButton(), Action::make('uploadLogs') ->hiddenLabel() - ->icon('tabler-world-upload')->iconSize(IconSize::Large)->iconButton() + ->icon(TablerIcon::WorldUpload)->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'])) diff --git a/app/Filament/Admin/Pages/Settings.php b/app/Filament/Admin/Pages/Settings.php index c5bfa48f9..fbc26f7db 100644 --- a/app/Filament/Admin/Pages/Settings.php +++ b/app/Filament/Admin/Pages/Settings.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Pages; +use App\Enums\TablerIcon; use App\Extensions\Avatar\AvatarService; use App\Extensions\Captcha\CaptchaService; use App\Extensions\OAuth\OAuthService; @@ -58,7 +59,7 @@ class Settings extends Page implements HasSchemas use EnvironmentWriterTrait; use InteractsWithForms; - protected static string|\BackedEnum|null $navigationIcon = 'tabler-settings'; + protected static string|BackedEnum|null $navigationIcon = TablerIcon::Settings; protected string $view = 'filament.pages.settings'; @@ -120,29 +121,29 @@ class Settings extends Page implements HasSchemas return [ Tab::make('general') ->label(trans('admin/setting.navigation.general')) - ->icon('tabler-home') + ->icon(TablerIcon::Home) ->schema($this->generalSettings()), Tab::make('captcha') ->label(trans('admin/setting.navigation.captcha')) - ->icon('tabler-shield') + ->icon(TablerIcon::Shield) ->schema($this->captchaSettings()) ->columns(1), Tab::make('mail') ->label(trans('admin/setting.navigation.mail')) - ->icon('tabler-mail') + ->icon(TablerIcon::Mail) ->schema($this->mailSettings()), Tab::make('backup') ->label(trans('admin/setting.navigation.backup')) - ->icon('tabler-box') + ->icon(TablerIcon::Box) ->schema($this->backupSettings()), Tab::make('oauth') ->label(trans('admin/setting.navigation.oauth')) - ->icon('tabler-brand-oauth') + ->icon(TablerIcon::BrandOauth) ->schema($this->oauthSettings()) ->columns(1), Tab::make('misc') ->label(trans('admin/setting.navigation.misc')) - ->icon('tabler-tool') + ->icon(TablerIcon::Tool) ->schema($this->miscSettings()), ]; } @@ -162,12 +163,12 @@ class Settings extends Page implements HasSchemas ->schema([ TextInput::make('APP_LOGO') ->label(trans('admin/setting.general.app_logo')) - ->hintIcon('tabler-question-mark', trans('admin/setting.general.app_logo_help')) + ->hintIcon(TablerIcon::QuestionMark, trans('admin/setting.general.app_logo_help')) ->default(env('APP_LOGO')) ->placeholder('/pelican.svg'), TextInput::make('APP_FAVICON') ->label(trans('admin/setting.general.app_favicon')) - ->hintIcon('tabler-question-mark', trans('admin/setting.general.app_favicon_help')) + ->hintIcon(TablerIcon::QuestionMark, trans('admin/setting.general.app_favicon_help')) ->required() ->default(env('APP_FAVICON', '/pelican.ico')) ->placeholder('/pelican.ico'), @@ -178,8 +179,8 @@ class Settings extends Page implements HasSchemas Toggle::make('APP_DEBUG') ->label(trans('admin/setting.general.debug_mode')) ->inline(false) - ->onIcon('tabler-check') - ->offIcon('tabler-x') + ->onIcon(TablerIcon::Check) + ->offIcon(TablerIcon::X) ->onColor('success') ->offColor('danger') ->stateCast(new BooleanStateCast(false)) @@ -196,8 +197,8 @@ class Settings extends Page implements HasSchemas Toggle::make('FILAMENT_UPLOADABLE_AVATARS') ->label(trans('admin/setting.general.uploadable_avatars')) ->inline(false) - ->onIcon('tabler-check') - ->offIcon('tabler-x') + ->onIcon(TablerIcon::Check) + ->offIcon(TablerIcon::X) ->onColor('success') ->offColor('danger') ->stateCast(new BooleanStateCast(false)) @@ -247,13 +248,13 @@ class Settings extends Page implements HasSchemas Action::make('clear') ->label(trans('admin/setting.general.clear')) ->color('danger') - ->icon('tabler-trash') + ->icon(TablerIcon::Trash) ->requiresConfirmation() ->authorize(fn () => user()?->can('update settings')) ->action(fn (Set $set) => $set('TRUSTED_PROXIES', [])), Action::make('cloudflare') ->label(trans('admin/setting.general.set_to_cf')) - ->icon('tabler-brand-cloudflare') + ->icon(TablerIcon::BrandCloudflare) ->authorize(fn () => user()?->can('update settings')) ->action(function (Factory $client, Set $set) { $ips = collect(); @@ -295,7 +296,7 @@ class Settings extends Page implements HasSchemas $formFields[] = Section::make($schema->getName()) ->columns(5) - ->icon($schema->getIcon() ?? 'tabler-shield') + ->icon($schema->getIcon() ?? TablerIcon::Shield) ->collapsed(fn () => !$schema->isEnabled()) ->collapsible() ->schema([ @@ -351,7 +352,7 @@ class Settings extends Page implements HasSchemas ->hintAction( Action::make('test') ->label(trans('admin/setting.mail.test_mail')) - ->icon('tabler-send') + ->icon(TablerIcon::Send) ->hidden(fn (Get $get) => $get('MAIL_MAILER') === 'log') ->authorize(fn () => user()?->can('update settings')) ->action(function (Get $get) { @@ -541,8 +542,8 @@ class Settings extends Page implements HasSchemas Toggle::make('AWS_USE_PATH_STYLE_ENDPOINT') ->label(trans('admin/setting.backup.s3.use_path_style_endpoint')) ->inline(false) - ->onIcon('tabler-check') - ->offIcon('tabler-x') + ->onIcon(TablerIcon::Check) + ->offIcon(TablerIcon::X) ->onColor('success') ->offColor('danger') ->live() @@ -567,7 +568,7 @@ class Settings extends Page implements HasSchemas $formFields[] = Section::make($schema->getName()) ->columns(5) - ->icon($schema->getIcon() ?? 'tabler-brand-oauth') + ->icon($schema->getIcon() ?? TablerIcon::BrandOauth) ->collapsed(fn () => !$schema->isEnabled()) ->collapsible() ->schema([ @@ -626,8 +627,8 @@ class Settings extends Page implements HasSchemas ->schema([ Toggle::make('PANEL_CLIENT_ALLOCATIONS_ENABLED') ->label(trans('admin/setting.misc.auto_allocation.question')) - ->onIcon('tabler-check') - ->offIcon('tabler-x') + ->onIcon(TablerIcon::Check) + ->offIcon(TablerIcon::X) ->onColor('success') ->offColor('danger') ->live() @@ -637,8 +638,8 @@ class Settings extends Page implements HasSchemas Toggle::make('PANEL_CLIENT_ALLOCATIONS_CREATE_NEW') ->label(trans('admin/setting.misc.auto_allocation.create_new')) ->helperText(trans('admin/setting.misc.auto_allocation.create_new_help')) - ->onIcon('tabler-check') - ->offIcon('tabler-x') + ->onIcon(TablerIcon::Check) + ->offIcon(TablerIcon::X) ->onColor('success') ->offColor('danger') ->live() @@ -671,8 +672,8 @@ class Settings extends Page implements HasSchemas ->schema([ Toggle::make('PANEL_SEND_INSTALL_NOTIFICATION') ->label(trans('admin/setting.misc.mail_notifications.server_installed')) - ->onIcon('tabler-check') - ->offIcon('tabler-x') + ->onIcon(TablerIcon::Check) + ->offIcon(TablerIcon::X) ->onColor('success') ->offColor('danger') ->live() @@ -681,8 +682,8 @@ class Settings extends Page implements HasSchemas ->default(env('PANEL_SEND_INSTALL_NOTIFICATION', config('panel.email.send_install_notification'))), Toggle::make('PANEL_SEND_REINSTALL_NOTIFICATION') ->label(trans('admin/setting.misc.mail_notifications.server_reinstalled')) - ->onIcon('tabler-check') - ->offIcon('tabler-x') + ->onIcon(TablerIcon::Check) + ->offIcon(TablerIcon::X) ->onColor('success') ->offColor('danger') ->live() @@ -730,8 +731,8 @@ class Settings extends Page implements HasSchemas Toggle::make('APP_ACTIVITY_HIDE_ADMIN') ->label(trans('admin/setting.misc.activity_log.log_admin')) ->inline(false) - ->onIcon('tabler-check') - ->offIcon('tabler-x') + ->onIcon(TablerIcon::Check) + ->offIcon(TablerIcon::X) ->onColor('success') ->offColor('danger') ->live() @@ -767,8 +768,8 @@ class Settings extends Page implements HasSchemas ->schema([ Toggle::make('PANEL_EDITABLE_SERVER_DESCRIPTIONS') ->label(trans('admin/setting.misc.server.edit_server_desc')) - ->onIcon('tabler-check') - ->offIcon('tabler-x') + ->onIcon(TablerIcon::Check) + ->offIcon(TablerIcon::X) ->onColor('success') ->offColor('danger') ->live() @@ -853,7 +854,7 @@ class Settings extends Page implements HasSchemas return [ Action::make('save') ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-device-floppy') + ->icon(TablerIcon::DeviceFloppy) ->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 b8ccef9a7..3d2f5d19d 100644 --- a/app/Filament/Admin/Pages/ViewLogs.php +++ b/app/Filament/Admin/Pages/ViewLogs.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Pages; +use App\Enums\TablerIcon; use App\Traits\ResolvesRecordDate; use Boquizo\FilamentLogViewer\Actions\BackAction; use Boquizo\FilamentLogViewer\Actions\DeleteAction; @@ -20,14 +21,14 @@ class ViewLogs extends BaseViewLog { return [ BackAction::make() - ->icon('tabler-arrow-left')->iconSize(IconSize::ExtraLarge)->iconButton(), + ->icon(TablerIcon::ArrowLeft)->iconSize(IconSize::ExtraLarge)->iconButton(), DeleteAction::make(withTooltip: true) ->iconSize(IconSize::ExtraLarge)->iconButton(), DownloadAction::make(withTooltip: true) - ->icon('tabler-file-download')->iconSize(IconSize::ExtraLarge)->iconButton(), + ->icon(TablerIcon::FileDownload)->iconSize(IconSize::ExtraLarge)->iconButton(), Action::make('uploadLogs') ->hiddenLabel() - ->icon('tabler-world-upload')->iconSize(IconSize::ExtraLarge)->iconButton() + ->icon(TablerIcon::WorldUpload)->iconSize(IconSize::ExtraLarge)->iconButton() ->requiresConfirmation() ->tooltip(trans('admin/log.actions.upload_tooltip', ['url' => 'logs.pelican.dev'])) ->modalHeading(trans('admin/log.actions.upload_logs')) diff --git a/app/Filament/Admin/Resources/ApiKeys/ApiKeyResource.php b/app/Filament/Admin/Resources/ApiKeys/ApiKeyResource.php index dd26a829a..73a72258c 100644 --- a/app/Filament/Admin/Resources/ApiKeys/ApiKeyResource.php +++ b/app/Filament/Admin/Resources/ApiKeys/ApiKeyResource.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\ApiKeys; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\ApiKeys\Pages\CreateApiKey; use App\Filament\Admin\Resources\ApiKeys\Pages\ListApiKeys; use App\Filament\Admin\Resources\Users\Pages\EditUser; @@ -11,6 +12,7 @@ use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizeRelations; use App\Traits\Filament\CanModifyForm; use App\Traits\Filament\CanModifyTable; +use BackedEnum; use Exception; use Filament\Actions\DeleteAction; use Filament\Forms\Components\TagsInput; @@ -34,7 +36,7 @@ class ApiKeyResource extends Resource protected static ?string $model = ApiKey::class; - protected static string|\BackedEnum|null $navigationIcon = 'tabler-key'; + protected static string|BackedEnum|null $navigationIcon = TablerIcon::Key; public static function getNavigationLabel(): string { @@ -77,7 +79,7 @@ class ApiKeyResource extends Resource ->columns([ TextColumn::make('key') ->label(trans('admin/apikey.table.key')) - ->icon('tabler-clipboard-text') + ->icon(TablerIcon::ClipboardText) ->state(fn (ApiKey $key) => $key->identifier . $key->token) ->copyable(), TextColumn::make('memo') @@ -99,7 +101,7 @@ class ApiKeyResource extends Resource DeleteAction::make() ->iconButton()->iconSize(IconSize::ExtraLarge), ]) - ->emptyStateIcon('tabler-key') + ->emptyStateIcon(TablerIcon::Key) ->emptyStateDescription('') ->emptyStateHeading(trans('admin/apikey.empty')); } @@ -122,9 +124,9 @@ class ApiKeyResource extends Resource 3 => trans('admin/apikey.permissions.read_write'), ]) ->icons([ - 0 => 'tabler-book-off', - 1 => 'tabler-book', - 3 => 'tabler-writing', + 0 => TablerIcon::BookOff, + 1 => TablerIcon::Book, + 3 => TablerIcon::Writing, ]) ->colors([ 0 => 'success', diff --git a/app/Filament/Admin/Resources/ApiKeys/Pages/CreateApiKey.php b/app/Filament/Admin/Resources/ApiKeys/Pages/CreateApiKey.php index bc3f2c507..1ad431494 100644 --- a/app/Filament/Admin/Resources/ApiKeys/Pages/CreateApiKey.php +++ b/app/Filament/Admin/Resources/ApiKeys/Pages/CreateApiKey.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\ApiKeys\Pages; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\ApiKeys\ApiKeyResource; use App\Models\ApiKey; use App\Traits\Filament\CanCustomizeHeaderActions; @@ -28,7 +29,7 @@ class CreateApiKey extends CreateRecord return [ $this->getCreateFormAction()->formId('form') ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-file-plus'), + ->icon(TablerIcon::FilePlus), ]; } diff --git a/app/Filament/Admin/Resources/ApiKeys/Pages/ListApiKeys.php b/app/Filament/Admin/Resources/ApiKeys/Pages/ListApiKeys.php index 5a7669ed1..adaa15e20 100644 --- a/app/Filament/Admin/Resources/ApiKeys/Pages/ListApiKeys.php +++ b/app/Filament/Admin/Resources/ApiKeys/Pages/ListApiKeys.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\ApiKeys\Pages; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\ApiKeys\ApiKeyResource; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; @@ -24,7 +25,7 @@ class ListApiKeys extends ListRecords return [ CreateAction::make() ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-file-plus'), + ->icon(TablerIcon::FilePlus), ]; } } diff --git a/app/Filament/Admin/Resources/DatabaseHosts/DatabaseHostResource.php b/app/Filament/Admin/Resources/DatabaseHosts/DatabaseHostResource.php index d3d820886..bd0ef622d 100644 --- a/app/Filament/Admin/Resources/DatabaseHosts/DatabaseHostResource.php +++ b/app/Filament/Admin/Resources/DatabaseHosts/DatabaseHostResource.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\DatabaseHosts; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\DatabaseHosts\Pages\CreateDatabaseHost; use App\Filament\Admin\Resources\DatabaseHosts\Pages\EditDatabaseHost; use App\Filament\Admin\Resources\DatabaseHosts\Pages\ListDatabaseHosts; @@ -12,6 +13,7 @@ use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizeRelations; use App\Traits\Filament\CanModifyForm; use App\Traits\Filament\CanModifyTable; +use BackedEnum; use Exception; use Filament\Actions\DeleteBulkAction; use Filament\Actions\EditAction; @@ -37,7 +39,7 @@ class DatabaseHostResource extends Resource protected static ?string $model = DatabaseHost::class; - protected static string|\BackedEnum|null $navigationIcon = 'tabler-database'; + protected static string|BackedEnum|null $navigationIcon = TablerIcon::Database; protected static ?string $recordTitleAttribute = 'name'; @@ -97,7 +99,7 @@ class DatabaseHostResource extends Resource ->groupedBulkActions([ DeleteBulkAction::make(), ]) - ->emptyStateIcon('tabler-database') + ->emptyStateIcon(TablerIcon::Database) ->emptyStateDescription('') ->emptyStateHeading(trans('admin/databasehost.no_database_hosts')); } diff --git a/app/Filament/Admin/Resources/DatabaseHosts/Pages/CreateDatabaseHost.php b/app/Filament/Admin/Resources/DatabaseHosts/Pages/CreateDatabaseHost.php index 67df0e52c..7280d295d 100644 --- a/app/Filament/Admin/Resources/DatabaseHosts/Pages/CreateDatabaseHost.php +++ b/app/Filament/Admin/Resources/DatabaseHosts/Pages/CreateDatabaseHost.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\DatabaseHosts\Pages; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\DatabaseHosts\DatabaseHostResource; use App\Services\Databases\Hosts\HostCreationService; use App\Traits\Filament\CanCustomizeHeaderActions; @@ -175,7 +176,7 @@ class CreateDatabaseHost extends CreateRecord ->title(trans('admin/databasehost.error')) ->body($exception->getMessage()) ->color('danger') - ->icon('tabler-database') + ->icon(TablerIcon::Database) ->danger() ->send(); diff --git a/app/Filament/Admin/Resources/DatabaseHosts/Pages/EditDatabaseHost.php b/app/Filament/Admin/Resources/DatabaseHosts/Pages/EditDatabaseHost.php index 73822d583..103a73a7d 100644 --- a/app/Filament/Admin/Resources/DatabaseHosts/Pages/EditDatabaseHost.php +++ b/app/Filament/Admin/Resources/DatabaseHosts/Pages/EditDatabaseHost.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\DatabaseHosts\Pages; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\DatabaseHosts\DatabaseHostResource; use App\Models\DatabaseHost; use App\Services\Databases\Hosts\HostUpdateService; @@ -41,7 +42,7 @@ class EditDatabaseHost extends EditRecord ->iconButton()->iconSize(IconSize::ExtraLarge), $this->getSaveFormAction()->formId('form') ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-device-floppy'), + ->icon(TablerIcon::DeviceFloppy), ]; } @@ -63,7 +64,7 @@ class EditDatabaseHost extends EditRecord ->title(trans('admin/databasehost.error')) ->body($exception->getMessage()) ->color('danger') - ->icon('tabler-database') + ->icon(TablerIcon::Database) ->danger() ->send(); diff --git a/app/Filament/Admin/Resources/DatabaseHosts/Pages/ListDatabaseHosts.php b/app/Filament/Admin/Resources/DatabaseHosts/Pages/ListDatabaseHosts.php index 8fc5dc8b9..39737c36d 100644 --- a/app/Filament/Admin/Resources/DatabaseHosts/Pages/ListDatabaseHosts.php +++ b/app/Filament/Admin/Resources/DatabaseHosts/Pages/ListDatabaseHosts.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\DatabaseHosts\Pages; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\DatabaseHosts\DatabaseHostResource; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; @@ -24,7 +25,7 @@ class ListDatabaseHosts extends ListRecords return [ CreateAction::make() ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-file-plus'), + ->icon(TablerIcon::DatabasePlus), ]; } } diff --git a/app/Filament/Admin/Resources/Eggs/EggResource.php b/app/Filament/Admin/Resources/Eggs/EggResource.php index 861288d32..4031b410c 100644 --- a/app/Filament/Admin/Resources/Eggs/EggResource.php +++ b/app/Filament/Admin/Resources/Eggs/EggResource.php @@ -3,6 +3,7 @@ namespace App\Filament\Admin\Resources\Eggs; use App\Enums\CustomizationKey; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Eggs\Pages\CreateEgg; use App\Filament\Admin\Resources\Eggs\Pages\EditEgg; use App\Filament\Admin\Resources\Eggs\Pages\ListEggs; @@ -10,6 +11,7 @@ use App\Filament\Admin\Resources\Eggs\RelationManagers\ServersRelationManager; use App\Models\Egg; use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizeRelations; +use BackedEnum; use Filament\Resources\Pages\PageRegistration; use Filament\Resources\RelationManagers\RelationManager; use Filament\Resources\Resource; @@ -21,7 +23,7 @@ class EggResource extends Resource protected static ?string $model = Egg::class; - protected static string|\BackedEnum|null $navigationIcon = 'tabler-eggs'; + protected static string|BackedEnum|null $navigationIcon = TablerIcon::Eggs; protected static ?string $recordTitleAttribute = 'name'; diff --git a/app/Filament/Admin/Resources/Eggs/Pages/CreateEgg.php b/app/Filament/Admin/Resources/Eggs/Pages/CreateEgg.php index c8523ed64..b5dd8cbb1 100644 --- a/app/Filament/Admin/Resources/Eggs/Pages/CreateEgg.php +++ b/app/Filament/Admin/Resources/Eggs/Pages/CreateEgg.php @@ -3,6 +3,7 @@ namespace App\Filament\Admin\Resources\Eggs\Pages; use App\Enums\EditorLanguages; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Eggs\EggResource; use App\Filament\Components\Forms\Fields\CopyFrom; use App\Filament\Components\Forms\Fields\MonacoEditor; @@ -49,7 +50,7 @@ class CreateEgg extends CreateRecord return [ $this->getCreateFormAction()->formId('form') ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-file-plus'), + ->icon(TablerIcon::FilePlus), ]; } @@ -116,7 +117,7 @@ class CreateEgg extends CreateRecord ->columnSpan(['default' => 1, 'sm' => 1, 'md' => 1, 'lg' => 1]), Toggle::make('force_outgoing_ip') ->label(trans('admin/egg.force_ip')) - ->hintIcon('tabler-question-mark', trans('admin/egg.force_ip_help')), + ->hintIcon(TablerIcon::QuestionMark, trans('admin/egg.force_ip_help')), Hidden::make('script_is_privileged') ->default(1), TagsInput::make('tags') @@ -124,7 +125,7 @@ class CreateEgg extends CreateRecord ->columnSpan(['default' => 1, 'sm' => 1, 'md' => 2, 'lg' => 2]), TextInput::make('update_url') ->label(trans('admin/egg.update_url')) - ->hintIcon('tabler-question-mark', trans('admin/egg.update_url_help')) + ->hintIcon(TablerIcon::QuestionMark, trans('admin/egg.update_url_help')) ->columnSpan(['default' => 1, 'sm' => 1, 'md' => 2, 'lg' => 2]) ->url(), KeyValue::make('docker_images') @@ -214,7 +215,7 @@ class CreateEgg extends CreateRecord ->maxLength(255) ->prefix('{{') ->suffix('}}') - ->hintIcon('tabler-code', fn ($state) => "{{{$state}}}") + ->hintIcon(TablerIcon::Code, fn ($state) => "{{{$state}}}") ->unique(modifyRuleUsing: fn (Unique $rule, Get $get) => $rule->where('egg_id', $get('../../id'))) ->rules(EggVariable::getRulesForField('env_variable')) ->validationMessages([ diff --git a/app/Filament/Admin/Resources/Eggs/Pages/EditEgg.php b/app/Filament/Admin/Resources/Eggs/Pages/EditEgg.php index a7c390ebb..a534e900d 100644 --- a/app/Filament/Admin/Resources/Eggs/Pages/EditEgg.php +++ b/app/Filament/Admin/Resources/Eggs/Pages/EditEgg.php @@ -3,6 +3,7 @@ namespace App\Filament\Admin\Resources\Eggs\Pages; use App\Enums\EditorLanguages; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Eggs\EggResource; use App\Filament\Components\Actions\ExportEggAction; use App\Filament\Components\Actions\ImportEggAction; @@ -70,7 +71,7 @@ class EditEgg extends EditRecord Tab::make('configuration') ->label(trans('admin/egg.tabs.configuration')) ->columns(['default' => 2, 'sm' => 2, 'md' => 4, 'lg' => 6]) - ->icon('tabler-egg') + ->icon(TablerIcon::Egg) ->schema([ Grid::make(2) ->columnSpan(1) @@ -86,7 +87,7 @@ class EditEgg extends EditRecord Action::make('uploadImage') ->iconButton() ->iconSize(IconSize::Large) - ->icon('tabler-photo-up') + ->icon(TablerIcon::PhotoUp) ->modal() ->modalHeading('') ->modalSubmitActionLabel(trans('admin/egg.import.import_image')) @@ -209,7 +210,7 @@ class EditEgg extends EditRecord Action::make('delete_image') ->visible(fn ($record) => $record->image) ->hiddenLabel() - ->icon('tabler-trash') + ->icon(TablerIcon::Trash) ->iconButton() ->iconSize(IconSize::Large) ->color('danger') @@ -262,7 +263,7 @@ class EditEgg extends EditRecord ->inline(false) ->label(trans('admin/egg.force_ip')) ->columnSpan(1) - ->hintIcon('tabler-question-mark', trans('admin/egg.force_ip_help')), + ->hintIcon(TablerIcon::QuestionMark, trans('admin/egg.force_ip_help')), KeyValue::make('startup_commands') ->label(trans('admin/egg.startup_commands')) ->live() @@ -280,7 +281,7 @@ class EditEgg extends EditRecord TextInput::make('update_url') ->label(trans('admin/egg.update_url')) ->url() - ->hintIcon('tabler-question-mark', trans('admin/egg.update_url_help')) + ->hintIcon(TablerIcon::QuestionMark, trans('admin/egg.update_url_help')) ->columnSpan(['default' => 2, 'sm' => 2, 'md' => 2, 'lg' => 3]), TagsInput::make('features') ->label(trans('admin/egg.features')) @@ -303,7 +304,7 @@ class EditEgg extends EditRecord Tab::make('process_management') ->label(trans('admin/egg.tabs.process_management')) ->columns() - ->icon('tabler-server-cog') + ->icon(TablerIcon::ServerCog) ->schema([ CopyFrom::make('copy_process_from') ->process(), @@ -324,7 +325,7 @@ class EditEgg extends EditRecord Tab::make('egg_variables') ->label(trans('admin/egg.tabs.egg_variables')) ->columnSpanFull() - ->icon('tabler-variable') + ->icon(TablerIcon::Variable) ->schema([ Repeater::make('variables') ->hiddenLabel() @@ -372,7 +373,7 @@ class EditEgg extends EditRecord ->maxLength(255) ->prefix('{{') ->suffix('}}') - ->hintIcon('tabler-code', fn ($state) => "{{{$state}}}") + ->hintIcon(TablerIcon::Code, fn ($state) => "{{{$state}}}") ->unique(modifyRuleUsing: fn (Unique $rule, Get $get) => $rule->where('egg_id', $get('../../id'))) ->rules(EggVariable::getRulesForField('env_variable')) ->validationMessages([ @@ -416,7 +417,7 @@ class EditEgg extends EditRecord Tab::make('install_script') ->label(trans('admin/egg.tabs.install_script')) ->columns(3) - ->icon('tabler-file-download') + ->icon(TablerIcon::FileDownload) ->schema([ CopyFrom::make('copy_script_from') ->script(), @@ -465,7 +466,7 @@ class EditEgg extends EditRecord ->multiple(false), $this->getSaveFormAction()->formId('form') ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-device-floppy'), + ->icon(TablerIcon::DeviceFloppy), ]; } diff --git a/app/Filament/Admin/Resources/Eggs/Pages/ListEggs.php b/app/Filament/Admin/Resources/Eggs/Pages/ListEggs.php index 0f4dbe176..f4161fdc3 100644 --- a/app/Filament/Admin/Resources/Eggs/Pages/ListEggs.php +++ b/app/Filament/Admin/Resources/Eggs/Pages/ListEggs.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\Eggs\Pages; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Eggs\EggResource; use App\Filament\Components\Actions\ExportEggAction; use App\Filament\Components\Actions\ImportEggAction; @@ -130,7 +131,7 @@ class ListEggs extends ListRecords } }), ]) - ->emptyStateIcon('tabler-eggs') + ->emptyStateIcon(TablerIcon::Eggs) ->emptyStateDescription('') ->emptyStateHeading(trans('admin/egg.no_eggs')) ->filters([ @@ -148,7 +149,7 @@ class ListEggs extends ListRecords ImportEggAction::make() ->multiple(), CreateAction::make() - ->icon('tabler-file-plus') + ->icon(TablerIcon::FilePlus) ->iconButton()->iconSize(IconSize::ExtraLarge), ]; } diff --git a/app/Filament/Admin/Resources/Mounts/MountResource.php b/app/Filament/Admin/Resources/Mounts/MountResource.php index 42c58bea2..f4b6b05a5 100644 --- a/app/Filament/Admin/Resources/Mounts/MountResource.php +++ b/app/Filament/Admin/Resources/Mounts/MountResource.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\Mounts; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Mounts\Pages\CreateMount; use App\Filament\Admin\Resources\Mounts\Pages\EditMount; use App\Filament\Admin\Resources\Mounts\Pages\ListMounts; @@ -11,6 +12,7 @@ use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizeRelations; use App\Traits\Filament\CanModifyForm; use App\Traits\Filament\CanModifyTable; +use BackedEnum; use Exception; use Filament\Actions\DeleteBulkAction; use Filament\Actions\EditAction; @@ -37,7 +39,7 @@ class MountResource extends Resource protected static ?string $model = Mount::class; - protected static string|\BackedEnum|null $navigationIcon = 'tabler-layers-linked'; + protected static string|BackedEnum|null $navigationIcon = TablerIcon::LayersLinked; protected static ?string $recordTitleAttribute = 'name'; @@ -88,7 +90,7 @@ class MountResource extends Resource TextColumn::make('read_only') ->label(trans('admin/mount.table.read_only')) ->badge() - ->icon(fn ($state) => $state ? 'tabler-writing-off' : 'tabler-writing') + ->icon(fn ($state) => $state ? TablerIcon::WritingOff : TablerIcon::Writing) ->color(fn ($state) => $state ? 'success' : 'warning') ->formatStateUsing(fn ($state) => $state ? trans('admin/mount.toggles.read_only') : trans('admin/mount.toggles.writable')), ]) @@ -100,7 +102,7 @@ class MountResource extends Resource ->groupedBulkActions([ DeleteBulkAction::make(), ]) - ->emptyStateIcon('tabler-layers-linked') + ->emptyStateIcon(TablerIcon::LayersLinked) ->emptyStateDescription('') ->emptyStateHeading(trans('admin/mount.no_mounts')); } @@ -127,8 +129,8 @@ class MountResource extends Resource true => trans('admin/mount.toggles.read_only'), ]) ->icons([ - false => 'tabler-writing', - true => 'tabler-writing-off', + false => TablerIcon::Writing, + true => TablerIcon::WritingOff, ]) ->colors([ false => 'warning', diff --git a/app/Filament/Admin/Resources/Mounts/Pages/CreateMount.php b/app/Filament/Admin/Resources/Mounts/Pages/CreateMount.php index 1ec1d8f27..413c3d87a 100644 --- a/app/Filament/Admin/Resources/Mounts/Pages/CreateMount.php +++ b/app/Filament/Admin/Resources/Mounts/Pages/CreateMount.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\Mounts\Pages; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Mounts\MountResource; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; @@ -27,7 +28,7 @@ class CreateMount extends CreateRecord return [ $this->getCreateFormAction()->formId('form') ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-file-plus'), + ->icon(TablerIcon::FilePlus), ]; } diff --git a/app/Filament/Admin/Resources/Mounts/Pages/EditMount.php b/app/Filament/Admin/Resources/Mounts/Pages/EditMount.php index 08e9c2579..e2c2ddf03 100644 --- a/app/Filament/Admin/Resources/Mounts/Pages/EditMount.php +++ b/app/Filament/Admin/Resources/Mounts/Pages/EditMount.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\Mounts\Pages; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Mounts\MountResource; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; @@ -26,7 +27,7 @@ class EditMount extends EditRecord ->iconButton()->iconSize(IconSize::ExtraLarge), $this->getSaveFormAction()->formId('form') ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-device-floppy'), + ->icon(TablerIcon::DeviceFloppy), ]; } diff --git a/app/Filament/Admin/Resources/Mounts/Pages/ListMounts.php b/app/Filament/Admin/Resources/Mounts/Pages/ListMounts.php index adf78861f..d124e7296 100644 --- a/app/Filament/Admin/Resources/Mounts/Pages/ListMounts.php +++ b/app/Filament/Admin/Resources/Mounts/Pages/ListMounts.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\Mounts\Pages; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Mounts\MountResource; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; @@ -24,7 +25,7 @@ class ListMounts extends ListRecords return [ CreateAction::make() ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-file-plus'), + ->icon(TablerIcon::FilePlus), ]; } } diff --git a/app/Filament/Admin/Resources/Nodes/NodeResource.php b/app/Filament/Admin/Resources/Nodes/NodeResource.php index efc4a3f7f..426a2895f 100644 --- a/app/Filament/Admin/Resources/Nodes/NodeResource.php +++ b/app/Filament/Admin/Resources/Nodes/NodeResource.php @@ -3,6 +3,7 @@ namespace App\Filament\Admin\Resources\Nodes; use App\Enums\CustomizationKey; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Nodes\Pages\CreateNode; use App\Filament\Admin\Resources\Nodes\Pages\EditNode; use App\Filament\Admin\Resources\Nodes\Pages\ListNodes; @@ -11,6 +12,7 @@ use App\Filament\Admin\Resources\Nodes\RelationManagers\ServersRelationManager; use App\Models\Node; use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizeRelations; +use BackedEnum; use Filament\Resources\Pages\PageRegistration; use Filament\Resources\RelationManagers\RelationManager; use Filament\Resources\Resource; @@ -23,7 +25,7 @@ class NodeResource extends Resource protected static ?string $model = Node::class; - protected static string|\BackedEnum|null $navigationIcon = 'tabler-server-2'; + protected static string|BackedEnum|null $navigationIcon = TablerIcon::Server2; protected static ?string $recordTitleAttribute = 'name'; diff --git a/app/Filament/Admin/Resources/Nodes/Pages/CreateNode.php b/app/Filament/Admin/Resources/Nodes/Pages/CreateNode.php index a8b4cb6a9..c79fe14f6 100644 --- a/app/Filament/Admin/Resources/Nodes/Pages/CreateNode.php +++ b/app/Filament/Admin/Resources/Nodes/Pages/CreateNode.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\Nodes\Pages; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Nodes\NodeResource; use App\Models\Node; use App\Traits\Filament\CanCustomizeHeaderActions; @@ -39,8 +40,8 @@ class CreateNode extends CreateRecord ->components([ Wizard::make($this->getSteps()) ->columnSpanFull() - ->nextAction(fn (Action $action) => $action->iconButton()->iconSize(IconSize::ExtraLarge)->icon('tabler-arrow-right')) - ->previousAction(fn (Action $action) => $action->iconButton()->iconSize(IconSize::ExtraLarge)->icon('tabler-arrow-left')) + ->nextAction(fn (Action $action) => $action->iconButton()->iconSize(IconSize::ExtraLarge)->icon(TablerIcon::ArrowRight)) + ->previousAction(fn (Action $action) => $action->iconButton()->iconSize(IconSize::ExtraLarge)->icon(TablerIcon::ArrowLeft)) ->submitAction(new HtmlString(Blade::render(<<<'BLADE' label(trans('admin/node.tabs.basic_settings')) - ->icon('tabler-server') + ->icon(TablerIcon::Server) ->columnSpanFull() ->columns([ 'default' => 2, @@ -203,9 +204,9 @@ class CreateNode extends CreateRecord 'https_proxy' => 'success', ]) ->icons([ - 'http' => 'tabler-lock-open-off', - 'https' => 'tabler-lock', - 'https_proxy' => 'tabler-shield-lock', + 'http' => TablerIcon::LockOpenOff, + 'https' => TablerIcon::Lock, + 'https_proxy' => TablerIcon::ShieldLock, ]) ->default(fn () => request()->isSecure() ? 'https' : 'http') ->live() @@ -231,7 +232,7 @@ class CreateNode extends CreateRecord ]), Step::make('advanced') ->label(trans('admin/node.tabs.advanced_settings')) - ->icon('tabler-server-cog') + ->icon(TablerIcon::ServerCog) ->columnSpanFull() ->columns([ 'default' => 2, @@ -244,7 +245,7 @@ class CreateNode extends CreateRecord ->label(trans('admin/node.maintenance_mode'))->inline() ->columnSpan(1) ->default(false) - ->hintIcon('tabler-question-mark', trans('admin/node.maintenance_mode_help')) + ->hintIcon(TablerIcon::QuestionMark, trans('admin/node.maintenance_mode_help')) ->options([ true => trans('admin/node.enabled'), false => trans('admin/node.disabled'), @@ -270,7 +271,7 @@ class CreateNode extends CreateRecord ->columnSpan(2), TextInput::make('upload_size') ->label(trans('admin/node.upload_limit')) - ->hintIcon('tabler-question-mark', trans('admin/node.upload_limit_help')) + ->hintIcon(TablerIcon::QuestionMark, trans('admin/node.upload_limit_help')) ->columnSpan(1) ->numeric()->required() ->default(256) diff --git a/app/Filament/Admin/Resources/Nodes/Pages/EditNode.php b/app/Filament/Admin/Resources/Nodes/Pages/EditNode.php index 527e6dadf..9e49ed1f3 100644 --- a/app/Filament/Admin/Resources/Nodes/Pages/EditNode.php +++ b/app/Filament/Admin/Resources/Nodes/Pages/EditNode.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\Nodes\Pages; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Nodes\NodeResource; use App\Models\Node; use App\Repositories\Daemon\DaemonSystemRepository; @@ -84,7 +85,7 @@ class EditNode extends EditRecord return [ Tab::make('overview') ->label(trans('admin/node.tabs.overview')) - ->icon('tabler-chart-area-line-filled') + ->icon(TablerIcon::ChartAreaLineFilled) ->columns([ 'default' => 4, 'sm' => 2, @@ -129,7 +130,7 @@ class EditNode extends EditRecord ]), Tab::make('basic_settings') ->label(trans('admin/node.tabs.basic_settings')) - ->icon('tabler-server') + ->icon(TablerIcon::Server) ->schema([ TextInput::make('fqdn') ->columnSpan(2) @@ -253,9 +254,9 @@ class EditNode extends EditRecord 'https_proxy' => 'success', ]) ->icons([ - 'http' => 'tabler-lock-open-off', - 'https' => 'tabler-lock', - 'https_proxy' => 'tabler-shield-lock', + 'http' => TablerIcon::LockOpenOff, + 'https' => TablerIcon::Lock, + 'https_proxy' => TablerIcon::ShieldLock, ]) ->formatStateUsing(fn (Get $get) => $get('scheme') === 'http' ? 'http' : ($get('behind_proxy') ? 'https_proxy' : 'https')) ->live() @@ -286,7 +287,7 @@ class EditNode extends EditRecord 'md' => 4, 'lg' => 6, ]) - ->icon('tabler-server-cog') + ->icon(TablerIcon::ServerCog) ->schema([ TextInput::make('id') ->label(trans('admin/node.node_id')) @@ -324,7 +325,7 @@ class EditNode extends EditRecord 'lg' => 1, ]) ->label(trans('admin/node.upload_limit')) - ->hintIcon('tabler-question-mark', trans('admin/node.upload_limit_help')) + ->hintIcon(TablerIcon::QuestionMark, trans('admin/node.upload_limit_help')) ->numeric() ->required() ->minValue(1) @@ -378,7 +379,7 @@ class EditNode extends EditRecord ]) ->label(trans('admin/node.maintenance_mode')) ->inline() - ->hintIcon('tabler-question-mark', trans('admin/node.maintenance_mode_help')) + ->hintIcon(TablerIcon::QuestionMark, trans('admin/node.maintenance_mode_help')) ->stateCast(new BooleanStateCast(false, true)) ->options([ 1 => trans('admin/node.enabled'), @@ -554,7 +555,7 @@ class EditNode extends EditRecord ]), Tab::make('config_file') ->label(trans('admin/node.tabs.config_file')) - ->icon('tabler-code') + ->icon(TablerIcon::Code) ->schema([ TextEntry::make('instructions') ->label(trans('admin/node.instructions')) @@ -576,7 +577,7 @@ class EditNode extends EditRecord ->label(trans('admin/node.auto_deploy')) ->color('primary') ->modalHeading(trans('admin/node.auto_deploy')) - ->icon('tabler-rocket') + ->icon(TablerIcon::Rocket) ->modalSubmitAction(false) ->modalCancelAction(false) ->modalFooterActionsAlignment(Alignment::Center) @@ -624,7 +625,7 @@ class EditNode extends EditRecord ->title(trans('admin/node.error_connecting', ['node' => $node->name])) ->body(trans('admin/node.error_connecting_description')) ->color('warning') - ->icon('tabler-database') + ->icon(TablerIcon::Database) ->warning() ->send(); @@ -637,7 +638,7 @@ class EditNode extends EditRecord ]), Tab::make('diagnostics') ->label(trans('admin/node.tabs.diagnostics')) - ->icon('tabler-heart-search') + ->icon(TablerIcon::HeartSearch) ->schema([ Section::make('diag') ->heading(trans('admin/node.tabs.diagnostics')) @@ -647,7 +648,7 @@ class EditNode extends EditRecord ->headerActions([ Action::make('pull') ->label(trans('admin/node.diagnostics.pull')) - ->icon('tabler-cloud-download')->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon(TablerIcon::CloudDownload)->iconButton()->iconSize(IconSize::ExtraLarge) ->hidden(fn (Get $get) => $get('pulled')) ->action(function (Get $get, Set $set, Node $node) { $includeEndpoints = $get('include_endpoints') ?? true; @@ -686,7 +687,7 @@ class EditNode extends EditRecord Action::make('upload') ->label(trans('admin/node.diagnostics.upload')) ->visible(fn (Get $get) => $get('pulled') ?? false) - ->icon('tabler-cloud-upload')->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon(TablerIcon::CloudUpload)->iconButton()->iconSize(IconSize::ExtraLarge) ->action(function (Get $get, Set $set) { try { $response = Http::asMultipart() @@ -734,7 +735,7 @@ class EditNode extends EditRecord Action::make('clear') ->label(trans('admin/node.diagnostics.clear')) ->visible(fn (Get $get) => $get('pulled') ?? false) - ->icon('tabler-trash')->iconButton()->iconSize(IconSize::ExtraLarge)->color('danger') + ->icon(TablerIcon::Trash)->iconButton()->iconSize(IconSize::ExtraLarge)->color('danger') ->action(function (Get $get, Set $set) { $set('pulled', false); $set('uploaded', false); @@ -745,13 +746,13 @@ class EditNode extends EditRecord ]) ->schema([ ToggleButtons::make('include_endpoints') - ->hintIcon('tabler-question-mark')->inline() + ->hintIcon(TablerIcon::QuestionMark)->inline() ->hintIconTooltip(trans('admin/node.diagnostics.include_endpoints_hint')) ->formatStateUsing(fn () => 1) ->boolean(), ToggleButtons::make('include_logs') ->live() - ->hintIcon('tabler-question-mark')->inline() + ->hintIcon(TablerIcon::QuestionMark)->inline() ->hintIconTooltip(trans('admin/node.diagnostics.include_logs_hint')) ->formatStateUsing(fn () => 1) ->boolean(), @@ -812,7 +813,7 @@ class EditNode extends EditRecord ->iconButton()->iconSize(IconSize::ExtraLarge), $this->getSaveFormAction()->formId('form') ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-device-floppy'), + ->icon(TablerIcon::DeviceFloppy), ]; } @@ -844,7 +845,7 @@ class EditNode extends EditRecord ->title(trans('admin/node.error_connecting', ['node' => $node->name])) ->body(trans('admin/node.error_connecting_description')) ->color('warning') - ->icon('tabler-database') + ->icon(TablerIcon::Database) ->warning() ->send(); } diff --git a/app/Filament/Admin/Resources/Nodes/Pages/ListNodes.php b/app/Filament/Admin/Resources/Nodes/Pages/ListNodes.php index 9d4fd952f..b7eb0e54d 100644 --- a/app/Filament/Admin/Resources/Nodes/Pages/ListNodes.php +++ b/app/Filament/Admin/Resources/Nodes/Pages/ListNodes.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\Nodes\Pages; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Nodes\NodeResource; use App\Filament\Components\Tables\Columns\NodeHealthColumn; use App\Filament\Components\Tables\Filters\TagsFilter; @@ -48,14 +49,14 @@ class ListNodes extends ListRecords IconColumn::make('scheme') ->visibleFrom('xl') ->label('SSL') - ->trueIcon('tabler-lock') - ->falseIcon('tabler-lock-open-off') + ->trueIcon(TablerIcon::Lock) + ->falseIcon(TablerIcon::LockOpenOff) ->state(fn (Node $node) => $node->scheme === 'https'), IconColumn::make('public') ->label(trans('admin/node.table.public')) ->visibleFrom('lg') - ->trueIcon('tabler-eye-check') - ->falseIcon('tabler-eye-cancel'), + ->trueIcon(TablerIcon::EyeCheck) + ->falseIcon(TablerIcon::EyeCancel), TextColumn::make('servers_count') ->visibleFrom('sm') ->counts('servers') @@ -65,7 +66,7 @@ class ListNodes extends ListRecords ->recordActions([ EditAction::make(), ]) - ->emptyStateIcon('tabler-server-2') + ->emptyStateIcon(TablerIcon::Server2) ->emptyStateDescription('') ->emptyStateHeading(trans('admin/node.no_nodes')) ->filters([ @@ -80,7 +81,7 @@ class ListNodes extends ListRecords return [ CreateAction::make() ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-file-plus'), + ->icon(TablerIcon::FilePlus), ]; } } diff --git a/app/Filament/Admin/Resources/Nodes/RelationManagers/AllocationsRelationManager.php b/app/Filament/Admin/Resources/Nodes/RelationManagers/AllocationsRelationManager.php index 871289b3d..8712e37d7 100644 --- a/app/Filament/Admin/Resources/Nodes/RelationManagers/AllocationsRelationManager.php +++ b/app/Filament/Admin/Resources/Nodes/RelationManagers/AllocationsRelationManager.php @@ -2,11 +2,13 @@ namespace App\Filament\Admin\Resources\Nodes\RelationManagers; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Servers\Pages\CreateServer; use App\Filament\Components\Actions\UpdateNodeAllocations; use App\Models\Allocation; use App\Models\Node; use App\Services\Allocations\AssignmentService; +use BackedEnum; use Exception; use Filament\Actions\Action; use Filament\Actions\DeleteBulkAction; @@ -29,7 +31,7 @@ class AllocationsRelationManager extends RelationManager { protected static string $relationship = 'allocations'; - protected static string|\BackedEnum|null $icon = 'tabler-plug-connected'; + protected static string|BackedEnum|null $icon = TablerIcon::PlugConnected; public function setTitle(): string { @@ -57,7 +59,7 @@ class AllocationsRelationManager extends RelationManager ->label(trans('admin/node.ports')), TextColumn::make('server.name') ->label(trans('admin/node.table.servers')) - ->icon('tabler-brand-docker') + ->icon(TablerIcon::BrandDocker) ->visibleFrom('md') ->searchable() ->url(fn (Allocation $allocation): string => $allocation->server ? route('filament.admin.resources.servers.edit', ['record' => $allocation->server]) : ''), @@ -87,7 +89,7 @@ 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') + ->icon(TablerIcon::WorldPlus) ->iconButton()->iconSize(IconSize::ExtraLarge) ->schema(fn () => [ Select::make('allocation_ip') @@ -101,7 +103,7 @@ class AllocationsRelationManager extends RelationManager ->hintAction( Action::make('refresh') ->iconButton() - ->icon('tabler-refresh') + ->icon(TablerIcon::Refresh) ->tooltip(trans('admin/node.refresh')) ->action(function () { cache()->forget("nodes.{$this->getOwnerRecord()->id}.ips"); diff --git a/app/Filament/Admin/Resources/Nodes/RelationManagers/ServersRelationManager.php b/app/Filament/Admin/Resources/Nodes/RelationManagers/ServersRelationManager.php index e5904d6e3..e6192cd44 100644 --- a/app/Filament/Admin/Resources/Nodes/RelationManagers/ServersRelationManager.php +++ b/app/Filament/Admin/Resources/Nodes/RelationManagers/ServersRelationManager.php @@ -3,7 +3,9 @@ namespace App\Filament\Admin\Resources\Nodes\RelationManagers; use App\Enums\ServerResourceType; +use App\Enums\TablerIcon; use App\Models\Server; +use BackedEnum; use Filament\Resources\RelationManagers\RelationManager; use Filament\Tables\Columns\SelectColumn; use Filament\Tables\Columns\TextColumn; @@ -13,7 +15,7 @@ class ServersRelationManager extends RelationManager { protected static string $relationship = 'servers'; - protected static string|\BackedEnum|null $icon = 'tabler-brand-docker'; + protected static string|BackedEnum|null $icon = TablerIcon::BrandDocker; public function setTitle(): string { diff --git a/app/Filament/Admin/Resources/Plugins/PluginResource.php b/app/Filament/Admin/Resources/Plugins/PluginResource.php index d6c824748..4770b1d2d 100644 --- a/app/Filament/Admin/Resources/Plugins/PluginResource.php +++ b/app/Filament/Admin/Resources/Plugins/PluginResource.php @@ -3,9 +3,11 @@ namespace App\Filament\Admin\Resources\Plugins; use App\Enums\PluginStatus; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Plugins\Pages\ListPlugins; use App\Models\Plugin; use App\Services\Helpers\PluginService; +use BackedEnum; use Exception; use Filament\Actions\Action; use Filament\Actions\ActionGroup; @@ -23,7 +25,7 @@ class PluginResource extends Resource { protected static ?string $model = Plugin::class; - protected static string|\BackedEnum|null $navigationIcon = 'tabler-packages'; + protected static string|BackedEnum|null $navigationIcon = TablerIcon::Packages; protected static ?string $recordTitleAttribute = 'name'; @@ -59,7 +61,7 @@ class PluginResource extends Resource TextColumn::make('name') ->label(trans('admin/plugin.name')) ->description(fn (Plugin $plugin) => (strlen($plugin->description) > 80) ? substr($plugin->description, 0, 80).'...' : $plugin->description) - ->icon(fn (Plugin $plugin) => $plugin->isUpdateAvailable() ? 'tabler-versions-off' : 'tabler-versions') + ->icon(fn (Plugin $plugin) => $plugin->isUpdateAvailable() ? TablerIcon::VersionsOff : TablerIcon::Versions) ->iconColor(fn (Plugin $plugin) => $plugin->isUpdateAvailable() ? 'danger' : 'success') ->tooltip(fn (Plugin $plugin) => $plugin->isUpdateAvailable() ? trans('admin/plugin.update_available') : null) ->sortable() @@ -84,7 +86,7 @@ class PluginResource extends Resource ->recordActions([ Action::make('view') ->label(trans('filament-actions::view.single.label')) - ->icon(fn (Plugin $plugin) => $plugin->getReadme() ? 'tabler-eye' : 'tabler-eye-share') + ->icon(fn (Plugin $plugin) => $plugin->getReadme() ? TablerIcon::Eye : TablerIcon::EyeShare) ->color('gray') ->visible(fn (Plugin $plugin) => $plugin->getReadme() || $plugin->url) ->url(fn (Plugin $plugin) => !$plugin->getReadme() ? $plugin->url : null, true) @@ -105,7 +107,7 @@ class PluginResource extends Resource Action::make('settings') ->label(trans('admin/plugin.settings')) ->authorize(fn (Plugin $plugin) => user()?->can('update', $plugin)) - ->icon('tabler-settings') + ->icon(TablerIcon::Settings) ->color('primary') ->visible(fn (Plugin $plugin) => $plugin->status === PluginStatus::Enabled && $plugin->hasSettings()) ->schema(fn (Plugin $plugin) => $plugin->getSettingsForm()) @@ -115,7 +117,7 @@ class PluginResource extends Resource Action::make('install') ->label(trans('admin/plugin.install')) ->authorize(fn (Plugin $plugin) => user()?->can('update', $plugin)) - ->icon('tabler-terminal') + ->icon(TablerIcon::Terminal) ->color('success') ->hidden(fn (Plugin $plugin) => $plugin->status !== PluginStatus::NotInstalled) ->action(function (Plugin $plugin, $livewire, PluginService $pluginService) { @@ -139,7 +141,7 @@ class PluginResource extends Resource Action::make('update') ->label(trans('admin/plugin.update')) ->authorize(fn (Plugin $plugin) => user()?->can('update', $plugin)) - ->icon('tabler-download') + ->icon(TablerIcon::Download) ->color('success') ->visible(fn (Plugin $plugin) => $plugin->status !== PluginStatus::NotInstalled && $plugin->isUpdateAvailable()) ->action(function (Plugin $plugin, $livewire, PluginService $pluginService) { @@ -163,7 +165,7 @@ class PluginResource extends Resource Action::make('enable') ->label(trans('admin/plugin.enable')) ->authorize(fn (Plugin $plugin) => user()?->can('update', $plugin)) - ->icon('tabler-check') + ->icon(TablerIcon::Check) ->color('success') ->visible(fn (Plugin $plugin) => $plugin->canEnable()) ->requiresConfirmation(fn (Plugin $plugin, PluginService $pluginService) => $plugin->isTheme() && $pluginService->hasThemePluginEnabled()) @@ -182,7 +184,7 @@ class PluginResource extends Resource Action::make('disable') ->label(trans('admin/plugin.disable')) ->authorize(fn (Plugin $plugin) => user()?->can('update', $plugin)) - ->icon('tabler-x') + ->icon(TablerIcon::X) ->color('warning') ->visible(fn (Plugin $plugin) => $plugin->canDisable()) ->action(function (Plugin $plugin, $livewire, PluginService $pluginService) { @@ -198,7 +200,7 @@ class PluginResource extends Resource Action::make('delete') ->label(trans('filament-actions::delete.single.label')) ->authorize(fn (Plugin $plugin) => user()?->can('delete', $plugin)) - ->icon('tabler-trash') + ->icon(TablerIcon::Trash) ->color('danger') ->requiresConfirmation() ->visible(fn (Plugin $plugin) => $plugin->status === PluginStatus::NotInstalled) @@ -215,7 +217,7 @@ class PluginResource extends Resource Action::make('uninstall') ->label(trans('admin/plugin.uninstall')) ->authorize(fn (Plugin $plugin) => user()?->can('update', $plugin)) - ->icon('tabler-terminal') + ->icon(TablerIcon::Terminal) ->color('danger') ->requiresConfirmation() ->hidden(fn (Plugin $plugin) => $plugin->status === PluginStatus::NotInstalled || $plugin->status === PluginStatus::Errored) @@ -243,7 +245,7 @@ class PluginResource extends Resource Action::make('import_from_file') ->label(trans('admin/plugin.import_from_file')) ->authorize(fn () => user()?->can('create', Plugin::class)) - ->icon('tabler-file-download') + ->icon(TablerIcon::FileDownload) ->iconButton() ->iconSize(IconSize::ExtraLarge) ->schema([ @@ -287,7 +289,7 @@ class PluginResource extends Resource Action::make('import_from_url') ->label(trans('admin/plugin.import_from_url')) ->authorize(fn () => user()?->can('create', Plugin::class)) - ->icon('tabler-world-download') + ->icon(TablerIcon::WorldDownload) ->iconButton() ->iconSize(IconSize::ExtraLarge) ->schema([ @@ -323,7 +325,7 @@ class PluginResource extends Resource } }), ]) - ->emptyStateIcon('tabler-packages') + ->emptyStateIcon(TablerIcon::Packages) ->emptyStateDescription('') ->emptyStateHeading(trans('admin/plugin.no_plugins')); } diff --git a/app/Filament/Admin/Resources/Roles/Pages/CreateRole.php b/app/Filament/Admin/Resources/Roles/Pages/CreateRole.php index f1eb87e68..72af628b9 100644 --- a/app/Filament/Admin/Resources/Roles/Pages/CreateRole.php +++ b/app/Filament/Admin/Resources/Roles/Pages/CreateRole.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\Roles\Pages; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Roles\RoleResource; use App\Models\Role; use App\Traits\Filament\CanCustomizeHeaderActions; @@ -34,7 +35,7 @@ class CreateRole extends CreateRecord return [ $this->getCreateFormAction()->formId('form') ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-plus'), + ->icon(TablerIcon::FilePlus), ]; } diff --git a/app/Filament/Admin/Resources/Roles/Pages/EditRole.php b/app/Filament/Admin/Resources/Roles/Pages/EditRole.php index dc6aacf6f..302c38595 100644 --- a/app/Filament/Admin/Resources/Roles/Pages/EditRole.php +++ b/app/Filament/Admin/Resources/Roles/Pages/EditRole.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\Roles\Pages; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Roles\RoleResource; use App\Models\Role; use App\Traits\Filament\CanCustomizeHeaderActions; @@ -63,7 +64,7 @@ class EditRole extends EditRecord ->iconButton()->iconSize(IconSize::ExtraLarge), $this->getSaveFormAction()->formId('form') ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-device-floppy'), + ->icon(TablerIcon::DeviceFloppy), ]; } diff --git a/app/Filament/Admin/Resources/Roles/Pages/ListRoles.php b/app/Filament/Admin/Resources/Roles/Pages/ListRoles.php index 340858f4c..ada967185 100644 --- a/app/Filament/Admin/Resources/Roles/Pages/ListRoles.php +++ b/app/Filament/Admin/Resources/Roles/Pages/ListRoles.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\Roles\Pages; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Roles\RoleResource; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; @@ -23,7 +24,7 @@ class ListRoles extends ListRecords { return [ CreateAction::make() - ->icon('tabler-file-plus') + ->icon(TablerIcon::FilePlus) ->iconButton()->iconSize(IconSize::ExtraLarge), ]; } diff --git a/app/Filament/Admin/Resources/Roles/RoleResource.php b/app/Filament/Admin/Resources/Roles/RoleResource.php index a3baf05e4..f1266c2bb 100644 --- a/app/Filament/Admin/Resources/Roles/RoleResource.php +++ b/app/Filament/Admin/Resources/Roles/RoleResource.php @@ -3,6 +3,7 @@ namespace App\Filament\Admin\Resources\Roles; use App\Enums\CustomizationKey; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Roles\Pages\CreateRole; use App\Filament\Admin\Resources\Roles\Pages\EditRole; use App\Filament\Admin\Resources\Roles\Pages\ListRoles; @@ -43,7 +44,7 @@ class RoleResource extends Resource protected static ?string $model = Role::class; - protected static string|\BackedEnum|null $navigationIcon = 'tabler-users-group'; + protected static string|BackedEnum|null $navigationIcon = TablerIcon::UsersGroup; protected static ?string $recordTitleAttribute = 'name'; diff --git a/app/Filament/Admin/Resources/Servers/Pages/CreateServer.php b/app/Filament/Admin/Resources/Servers/Pages/CreateServer.php index 69f5a95a9..75c31e463 100644 --- a/app/Filament/Admin/Resources/Servers/Pages/CreateServer.php +++ b/app/Filament/Admin/Resources/Servers/Pages/CreateServer.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\Servers\Pages; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Servers\ServerResource; use App\Filament\Components\Forms\Fields\StartupVariable; use App\Models\Allocation; @@ -70,8 +71,8 @@ class CreateServer extends CreateRecord ->components([ Wizard::make($this->getSteps()) ->columnSpanFull() - ->nextAction(fn (Action $action) => $action->iconButton()->iconSize(IconSize::ExtraLarge)->icon('tabler-arrow-right')) - ->previousAction(fn (Action $action) => $action->iconButton()->iconSize(IconSize::ExtraLarge)->icon('tabler-arrow-left')) + ->nextAction(fn (Action $action) => $action->iconButton()->iconSize(IconSize::ExtraLarge)->icon(TablerIcon::ArrowRight)) + ->previousAction(fn (Action $action) => $action->iconButton()->iconSize(IconSize::ExtraLarge)->icon(TablerIcon::ArrowLeft)) ->submitAction(new HtmlString(Blade::render(<<<'BLADE' label(trans('admin/server.tabs.information')) - ->icon('tabler-info-circle') - ->completedIcon('tabler-check') + ->icon(TablerIcon::InfoCircle) + ->completedIcon(TablerIcon::Check) ->columns([ 'default' => 1, 'sm' => 4, @@ -102,7 +103,7 @@ class CreateServer extends CreateRecord ]) ->schema([ TextInput::make('name') - ->prefixIcon('tabler-server') + ->prefixIcon(TablerIcon::Server) ->label(trans('admin/server.name')) ->suffixAction(Action::make('random') ->icon('tabler-dice-' . random_int(1, 6)) @@ -134,7 +135,7 @@ class CreateServer extends CreateRecord Select::make('node_id') ->disabledOn('edit') - ->prefixIcon('tabler-server-2') + ->prefixIcon(TablerIcon::Server2) ->selectablePlaceholder(false) ->default(function () { $lastUsedNode = session()->get('last_utilized_node'); @@ -168,7 +169,7 @@ class CreateServer extends CreateRecord Select::make('owner_id') ->preload() - ->prefixIcon('tabler-user') + ->prefixIcon(TablerIcon::User) ->selectablePlaceholder(false) ->default(user()?->id) ->label(trans('admin/server.owner')) @@ -198,7 +199,7 @@ class CreateServer extends CreateRecord TextInput::make('password') ->label(trans('admin/user.password')) - ->hintIcon('tabler-question-mark', trans('admin/user.password_help')) + ->hintIcon(TablerIcon::QuestionMark, trans('admin/user.password_help')) ->password(), ]) ->createOptionUsing(function ($data, UserCreationService $service) { @@ -211,7 +212,7 @@ class CreateServer extends CreateRecord Select::make('allocation_id') ->preload() ->live() - ->prefixIcon('tabler-network') + ->prefixIcon(TablerIcon::Network) ->label(trans('admin/server.primary_allocation')) ->columnSpan([ 'default' => 1, @@ -256,7 +257,7 @@ class CreateServer extends CreateRecord ->hintAction( Action::make('refresh') ->iconButton() - ->icon('tabler-refresh') + ->icon(TablerIcon::Refresh) ->tooltip(trans('admin/node.refresh')) ->action(function () use ($get) { cache()->forget("nodes.{$get('node_id')}.ips"); @@ -304,7 +305,7 @@ class CreateServer extends CreateRecord ->live() ->preload() ->disableOptionsWhenSelectedInSiblingRepeaterItems() - ->prefixIcon('tabler-network') + ->prefixIcon(TablerIcon::Network) ->label(trans('admin/server.additional_allocations')) ->columnSpan(2) ->disabled(fn (Get $get) => $get('../../allocation_id') === null || $get('../../node_id') === null) @@ -333,8 +334,8 @@ class CreateServer extends CreateRecord ]), Step::make(trans('admin/server.tabs.egg_configuration')) - ->icon('tabler-egg') - ->completedIcon('tabler-check') + ->icon(TablerIcon::Egg) + ->completedIcon(TablerIcon::Check) ->columns([ 'default' => 1, 'sm' => 4, @@ -344,7 +345,7 @@ class CreateServer extends CreateRecord ->schema([ Select::make('egg_id') ->label(trans('admin/server.name')) - ->prefixIcon('tabler-egg') + ->prefixIcon(TablerIcon::Egg) ->relationship('egg', 'name') ->columnSpan([ 'default' => 1, @@ -401,8 +402,8 @@ class CreateServer extends CreateRecord true => 'danger', ]) ->icons([ - false => 'tabler-code', - true => 'tabler-code-off', + false => TablerIcon::Code, + true => TablerIcon::CodeOff, ]) ->inline() ->required(), @@ -426,8 +427,8 @@ class CreateServer extends CreateRecord false => 'danger', ]) ->icons([ - true => 'tabler-code', - false => 'tabler-code-off', + true => TablerIcon::Code, + false => TablerIcon::CodeOff, ]) ->inline(), @@ -475,7 +476,7 @@ class CreateServer extends CreateRecord Hidden::make('environment')->default([]), Section::make(trans('admin/server.variables')) - ->icon('tabler-eggs') + ->icon(TablerIcon::Eggs) ->iconColor('primary') ->hidden(fn (Get $get) => $get('egg_id') === null) ->collapsible() @@ -512,8 +513,8 @@ class CreateServer extends CreateRecord ]), ]), Step::make(trans('admin/server.tabs.environment_configuration')) - ->icon('tabler-brand-docker') - ->completedIcon('tabler-check') + ->icon(TablerIcon::BrandDocker) + ->completedIcon(TablerIcon::Check) ->schema([ Fieldset::make(trans('admin/server.resource_limits')) ->columnSpan(6) @@ -549,7 +550,7 @@ class CreateServer extends CreateRecord ->hidden(fn (Get $get) => $get('unlimited_cpu')) ->label(trans('admin/server.cpu_limit'))->inlineLabel() ->suffix('%') - ->hintIcon('tabler-question-mark', trans('admin/server.cpu_helper')) + ->hintIcon(TablerIcon::QuestionMark, trans('admin/server.cpu_helper')) ->default(0) ->required() ->columnSpan(2) @@ -581,7 +582,7 @@ class CreateServer extends CreateRecord ->hidden(fn (Get $get) => $get('unlimited_mem')) ->label(trans('admin/server.memory_limit'))->inlineLabel() ->suffix(config('panel.use_binary_prefix') ? 'MiB' : 'MB') - ->hintIcon('tabler-question-mark', trans('admin/server.memory_helper')) + ->hintIcon(TablerIcon::QuestionMark, trans('admin/server.memory_helper')) ->default(0) ->required() ->columnSpan(2) @@ -745,21 +746,21 @@ class CreateServer extends CreateRecord ->schema([ TextInput::make('allocation_limit') ->label(trans('admin/server.allocations')) - ->suffixIcon('tabler-network') + ->suffixIcon(TablerIcon::Network) ->required() ->numeric() ->minValue(0) ->default(0), TextInput::make('database_limit') ->label(trans('admin/server.databases')) - ->suffixIcon('tabler-database') + ->suffixIcon(TablerIcon::Database) ->required() ->numeric() ->minValue(0) ->default(0), TextInput::make('backup_limit') ->label(trans('admin/server.backups')) - ->suffixIcon('tabler-copy-check') + ->suffixIcon(TablerIcon::CopyCheck) ->required() ->numeric() ->minValue(0) diff --git a/app/Filament/Admin/Resources/Servers/Pages/EditServer.php b/app/Filament/Admin/Resources/Servers/Pages/EditServer.php index 01179206f..1e6657cee 100644 --- a/app/Filament/Admin/Resources/Servers/Pages/EditServer.php +++ b/app/Filament/Admin/Resources/Servers/Pages/EditServer.php @@ -3,6 +3,7 @@ namespace App\Filament\Admin\Resources\Servers\Pages; use App\Enums\SuspendAction; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Servers\ServerResource; use App\Filament\Components\Actions\DeleteServerIcon; use App\Filament\Components\Actions\PreviewStartupAction; @@ -108,7 +109,7 @@ class EditServer extends EditRecord return [ Tab::make('information') ->label(trans('admin/server.tabs.information')) - ->icon('tabler-info-circle') + ->icon(TablerIcon::InfoCircle) ->schema([ Grid::make() ->columns(2) @@ -122,7 +123,7 @@ class EditServer extends EditRecord ->alignJustify(), Action::make('uploadIcon') ->iconButton()->iconSize(IconSize::Large) - ->icon('tabler-photo-up') + ->icon(TablerIcon::PhotoUp) ->modal() ->modalSubmitActionLabel(trans('server/setting.server_info.icon.upload')) ->schema([ @@ -257,7 +258,7 @@ class EditServer extends EditRecord ]) ->schema([ TextInput::make('name') - ->prefixIcon('tabler-server') + ->prefixIcon(TablerIcon::Server) ->label(trans('admin/server.name')) ->suffixAction(Action::make('random') ->icon('tabler-dice-' . random_int(1, 6)) @@ -278,7 +279,7 @@ class EditServer extends EditRecord ->required() ->maxLength(255), Select::make('owner_id') - ->prefixIcon('tabler-user') + ->prefixIcon(TablerIcon::User) ->label(trans('admin/server.owner')) ->columnSpan([ 'default' => 2, @@ -384,7 +385,7 @@ class EditServer extends EditRecord ]), Tab::make('environment_configuration') ->label(trans('admin/server.tabs.environment_configuration')) - ->icon('tabler-brand-docker') + ->icon(TablerIcon::BrandDocker) ->schema([ Fieldset::make(trans('admin/server.resource_limits')) ->columnSpanFull() @@ -421,7 +422,7 @@ class EditServer extends EditRecord ->hidden(fn (Get $get) => $get('unlimited_cpu')) ->label(trans('admin/server.cpu_limit'))->inlineLabel() ->suffix('%') - ->hintIcon('tabler-question-mark', trans('admin/server.cpu_helper')) + ->hintIcon(TablerIcon::QuestionMark, trans('admin/server.cpu_helper')) ->required() ->columnSpan(2) ->numeric() @@ -453,7 +454,7 @@ class EditServer extends EditRecord ->hidden(fn (Get $get) => $get('unlimited_mem')) ->label(trans('admin/server.memory_limit'))->inlineLabel() ->suffix(config('panel.use_binary_prefix') ? 'MiB' : 'MB') - ->hintIcon('tabler-question-mark', trans('admin/server.memory_helper')) + ->hintIcon(TablerIcon::QuestionMark, trans('admin/server.memory_helper')) ->required() ->columnSpan(2) ->numeric() @@ -623,19 +624,19 @@ class EditServer extends EditRecord ->schema([ TextInput::make('allocation_limit') ->label(trans('admin/server.allocations')) - ->suffixIcon('tabler-network') + ->suffixIcon(TablerIcon::Network) ->required() ->minValue(0) ->numeric(), TextInput::make('database_limit') ->label(trans('admin/server.databases')) - ->suffixIcon('tabler-database') + ->suffixIcon(TablerIcon::Database) ->required() ->minValue(0) ->numeric(), TextInput::make('backup_limit') ->label(trans('admin/server.backups')) - ->suffixIcon('tabler-copy-check') + ->suffixIcon(TablerIcon::CopyCheck) ->required() ->minValue(0) ->numeric(), @@ -705,7 +706,7 @@ class EditServer extends EditRecord ]), Tab::make('egg') ->label(trans('admin/server.egg')) - ->icon('tabler-egg') + ->icon(TablerIcon::Egg) ->columns([ 'default' => 1, 'sm' => 3, @@ -715,7 +716,7 @@ class EditServer extends EditRecord ->schema([ Select::make('egg_id') ->disabled() - ->prefixIcon('tabler-egg') + ->prefixIcon(TablerIcon::Egg) ->columnSpan([ 'default' => 6, 'sm' => 3, @@ -739,7 +740,7 @@ class EditServer extends EditRecord ->schema(fn (Server $server) => [ Select::make('egg_id') ->label(trans('admin/server.new_egg')) - ->prefixIcon('tabler-egg') + ->prefixIcon(TablerIcon::Egg) ->options(fn () => Egg::all()->filter(fn (Egg $egg) => $egg->id !== $server->egg->id)->mapWithKeys(fn (Egg $egg) => [$egg->id => $egg->name])) ->searchable() ->preload() @@ -769,8 +770,8 @@ class EditServer extends EditRecord 1 => 'danger', ]) ->icons([ - 0 => 'tabler-code', - 1 => 'tabler-code-off', + 0 => TablerIcon::Code, + 1 => TablerIcon::CodeOff, ]) ->required(), @@ -841,13 +842,13 @@ class EditServer extends EditRecord ]), Tab::make('mounts') ->label(trans('admin/server.mounts')) - ->icon('tabler-layers-linked') + ->icon(TablerIcon::LayersLinked) ->schema(fn (Get $get) => [ ServerResource::getMountCheckboxList($get), ]), Tab::make('actions') ->label(trans('admin/server.actions')) - ->icon('tabler-settings') + ->icon(TablerIcon::Settings) ->schema([ Fieldset::make(trans('admin/server.actions')) ->columnSpanFull() @@ -1048,7 +1049,7 @@ class EditServer extends EditRecord return [ Select::make('node_id') ->label(trans('admin/server.node')) - ->prefixIcon('tabler-server-2') + ->prefixIcon(TablerIcon::Server2) ->selectablePlaceholder(false) ->default(fn (Server $server) => user()?->accessibleNodes()->whereNot('id', $server->node->id)->first()?->id) ->required() @@ -1058,7 +1059,7 @@ class EditServer extends EditRecord ->label(trans('admin/server.primary_allocation')) ->disabled(fn (Get $get, Server $server) => !$get('node_id') || !$server->allocation_id) ->required(fn (Server $server) => $server->allocation_id) - ->prefixIcon('tabler-network') + ->prefixIcon(TablerIcon::Network) ->options(fn (Get $get) => Allocation::where('node_id', $get('node_id'))->whereNull('server_id')->get()->mapWithKeys(fn (Allocation $allocation) => [$allocation->id => $allocation->address])) ->searchable(['ip', 'port', 'ip_alias']) ->placeholder(trans('admin/server.select_allocation')), @@ -1068,7 +1069,7 @@ class EditServer extends EditRecord ->multiple() ->minItems(fn (Select $select) => $select->getMaxItems()) ->maxItems(fn (Select $select, Server $server) => $select->isDisabled() ? null : $server->allocations->count() - 1) - ->prefixIcon('tabler-network') + ->prefixIcon(TablerIcon::Network) ->required(fn (Server $server) => $server->allocations->count() > 1) ->options(fn (Get $get) => Allocation::where('node_id', $get('node_id'))->whereNull('server_id')->when($get('allocation_id'), fn ($query) => $query->whereNot('id', $get('allocation_id')))->get()->mapWithKeys(fn (Allocation $allocation) => [$allocation->id => $allocation->address])) ->searchable(['ip', 'port', 'ip_alias']) @@ -1116,14 +1117,14 @@ class EditServer extends EditRecord ->title(trans('admin/server.notifications.error_server_delete')) ->body(trans('admin/server.notifications.error_server_delete_body')) ->color('warning') - ->icon('tabler-database') + ->icon(TablerIcon::Database) ->warning() ->send(); } }) ->hidden(fn () => $canForceDelete) ->authorize(fn (Server $server) => user()?->can('delete server', $server)) - ->icon('tabler-trash') + ->icon(TablerIcon::Trash) ->iconButton()->iconSize(IconSize::ExtraLarge), Action::make('ForceDelete') ->color('danger') @@ -1144,12 +1145,12 @@ class EditServer extends EditRecord ->authorize(fn (Server $server) => user()?->can('delete server', $server)), Action::make('console') ->label(trans('admin/server.console')) - ->icon('tabler-terminal') + ->icon(TablerIcon::Terminal) ->iconButton()->iconSize(IconSize::ExtraLarge) ->url(fn (Server $server) => Console::getUrl(panel: 'server', tenant: $server)), $this->getSaveFormAction()->formId('form') ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-device-floppy'), + ->icon(TablerIcon::DeviceFloppy), ]; } @@ -1187,7 +1188,7 @@ class EditServer extends EditRecord ->title(trans('admin/server.notifications.error_connecting', ['node' => $server->node->name])) ->body(trans('admin/server.notifications.error_connecting_description')) ->color('warning') - ->icon('tabler-database') + ->icon(TablerIcon::Database) ->warning() ->send(); } diff --git a/app/Filament/Admin/Resources/Servers/Pages/ListServers.php b/app/Filament/Admin/Resources/Servers/Pages/ListServers.php index ecb366b22..99417d3b9 100644 --- a/app/Filament/Admin/Resources/Servers/Pages/ListServers.php +++ b/app/Filament/Admin/Resources/Servers/Pages/ListServers.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\Servers\Pages; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Servers\ServerResource; use App\Filament\Server\Pages\Console; use App\Models\Server; @@ -94,14 +95,14 @@ class ListServers extends ListRecords Action::make('View') ->label(trans('admin/server.view')) ->iconButton() - ->icon('tabler-terminal') + ->icon(TablerIcon::Terminal) ->iconSize(IconSize::Large) ->url(fn (Server $server) => Console::getUrl(panel: 'server', tenant: $server)) ->authorize(fn (Server $server) => user()?->canAccessTenant($server)), EditAction::make(), ]) - ->emptyStateIcon('tabler-brand-docker') ->searchable() + ->emptyStateIcon(TablerIcon::BrandDocker) ->emptyStateDescription('') ->emptyStateHeading(trans('admin/server.no_servers')); } @@ -112,7 +113,7 @@ class ListServers extends ListRecords return [ CreateAction::make() ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-file-plus'), + ->icon(TablerIcon::FilePlus), ]; } } diff --git a/app/Filament/Admin/Resources/Servers/RelationManagers/AllocationsRelationManager.php b/app/Filament/Admin/Resources/Servers/RelationManagers/AllocationsRelationManager.php index b7ad65ee2..c9fbcc10b 100644 --- a/app/Filament/Admin/Resources/Servers/RelationManagers/AllocationsRelationManager.php +++ b/app/Filament/Admin/Resources/Servers/RelationManagers/AllocationsRelationManager.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\Servers\RelationManagers; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Servers\Pages\CreateServer; use App\Models\Allocation; use App\Models\Server; @@ -51,8 +52,8 @@ class AllocationsRelationManager extends RelationManager ->placeholder(trans('admin/server.no_notes')), IconColumn::make('primary') ->icon(fn ($state) => match ($state) { - true => 'tabler-star-filled', - default => 'tabler-star', + true => TablerIcon::StarFilled, + default => TablerIcon::Star, }) ->color(fn ($state) => match ($state) { true => 'warning', @@ -65,8 +66,8 @@ class AllocationsRelationManager extends RelationManager IconColumn::make('is_locked') ->label(trans('admin/server.locked')) ->tooltip(trans('admin/server.locked_helper')) - ->trueIcon('tabler-lock') - ->falseIcon('tabler-lock-open'), + ->trueIcon(TablerIcon::Lock) + ->falseIcon(TablerIcon::LockOpen), ]) ->recordActions([ Action::make('make-primary') @@ -107,7 +108,7 @@ class AllocationsRelationManager extends RelationManager }), CreateAction::make() ->label(trans('admin/server.create_allocation')) - ->icon('tabler-network') + ->icon(TablerIcon::Network) ->iconButton()->iconSize(IconSize::ExtraLarge) ->createAnother(false) ->schema(fn () => [ @@ -120,7 +121,7 @@ class AllocationsRelationManager extends RelationManager ->hintAction( Action::make('refresh') ->iconButton() - ->icon('tabler-refresh') + ->icon(TablerIcon::Refresh) ->tooltip(trans('admin/node.refresh')) ->action(function () { cache()->forget("nodes.{$this->getOwnerRecord()->node->id}.ips"); @@ -147,7 +148,7 @@ class AllocationsRelationManager extends RelationManager ]) ->action(fn (array $data, AssignmentService $service) => $service->handle($this->getOwnerRecord()->node, $data, $this->getOwnerRecord())), AssociateAction::make() - ->icon('tabler-file-plus') + ->icon(TablerIcon::FilePlus) ->iconButton()->iconSize(IconSize::ExtraLarge) ->multiple() ->associateAnother(false) diff --git a/app/Filament/Admin/Resources/Servers/RelationManagers/DatabasesRelationManager.php b/app/Filament/Admin/Resources/Servers/RelationManagers/DatabasesRelationManager.php index b78d365f6..24266f328 100644 --- a/app/Filament/Admin/Resources/Servers/RelationManagers/DatabasesRelationManager.php +++ b/app/Filament/Admin/Resources/Servers/RelationManagers/DatabasesRelationManager.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\Servers\RelationManagers; +use App\Enums\TablerIcon; use App\Filament\Components\Actions\RotateDatabasePasswordAction; use App\Filament\Components\Tables\Columns\DateTimeColumn; use App\Models\Database; @@ -108,7 +109,7 @@ class DatabasesRelationManager extends RelationManager ->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') + ->icon(fn () => DatabaseHost::count() < 1 ? TablerIcon::DatabaseX : TablerIcon::DatabasePlus) ->iconButton()->iconSize(IconSize::ExtraLarge) ->createAnother(false) ->action(function (array $data, DatabaseManagementService $service, RandomWordService $randomWordService) { @@ -143,13 +144,13 @@ class DatabasesRelationManager extends RelationManager ->label(trans('admin/server.name')) ->alphaDash() ->prefix(fn () => 's' . $this->getOwnerRecord()->id . '_') - ->hintIcon('tabler-question-mark', trans('admin/databasehost.table.name_helper')), + ->hintIcon(TablerIcon::QuestionMark, trans('admin/databasehost.table.name_helper')), TextInput::make('remote') ->columnSpan(1) ->regex('/^[\w\-\/.%:]+$/') ->label(trans('admin/databasehost.table.remote')) ->default('%') - ->hintIcon('tabler-question-mark', trans('admin/databasehost.table.remote_helper')), + ->hintIcon(TablerIcon::QuestionMark, trans('admin/databasehost.table.remote_helper')), ]), ]); } diff --git a/app/Filament/Admin/Resources/Servers/ServerResource.php b/app/Filament/Admin/Resources/Servers/ServerResource.php index bd4648286..cc0adea0d 100644 --- a/app/Filament/Admin/Resources/Servers/ServerResource.php +++ b/app/Filament/Admin/Resources/Servers/ServerResource.php @@ -3,6 +3,7 @@ namespace App\Filament\Admin\Resources\Servers; use App\Enums\CustomizationKey; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Servers\Pages\CreateServer; use App\Filament\Admin\Resources\Servers\Pages\EditServer; use App\Filament\Admin\Resources\Servers\Pages\ListServers; @@ -12,6 +13,7 @@ use App\Models\Mount; use App\Models\Server; use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizeRelations; +use BackedEnum; use Exception; use Filament\Forms\Components\CheckboxList; use Filament\Resources\Pages\PageRegistration; @@ -27,7 +29,7 @@ class ServerResource extends Resource protected static ?string $model = Server::class; - protected static string|\BackedEnum|null $navigationIcon = 'tabler-brand-docker'; + protected static string|BackedEnum|null $navigationIcon = TablerIcon::BrandDocker; protected static ?string $recordTitleAttribute = 'name'; diff --git a/app/Filament/Admin/Resources/Users/Pages/CreateUser.php b/app/Filament/Admin/Resources/Users/Pages/CreateUser.php index d648ff0b2..3f282c7e7 100644 --- a/app/Filament/Admin/Resources/Users/Pages/CreateUser.php +++ b/app/Filament/Admin/Resources/Users/Pages/CreateUser.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\Users\Pages; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Users\UserResource; use App\Models\Role; use App\Services\Users\UserCreationService; @@ -35,7 +36,7 @@ class CreateUser extends CreateRecord return [ $this->getCreateFormAction()->formId('form') ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-user-plus'), + ->icon(TablerIcon::UserPlus), ]; } diff --git a/app/Filament/Admin/Resources/Users/Pages/EditUser.php b/app/Filament/Admin/Resources/Users/Pages/EditUser.php index 2b8e25c9e..0d5accc23 100644 --- a/app/Filament/Admin/Resources/Users/Pages/EditUser.php +++ b/app/Filament/Admin/Resources/Users/Pages/EditUser.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\Users\Pages; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Users\UserResource; use App\Models\User; use App\Services\Users\UserUpdateService; @@ -38,7 +39,7 @@ class EditUser extends EditRecord ->iconButton()->iconSize(IconSize::ExtraLarge), $this->getSaveFormAction()->formId('form') ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-device-floppy'), + ->icon(TablerIcon::DeviceFloppy), ]; } diff --git a/app/Filament/Admin/Resources/Users/Pages/ListUsers.php b/app/Filament/Admin/Resources/Users/Pages/ListUsers.php index 44630c7ec..9942e8698 100644 --- a/app/Filament/Admin/Resources/Users/Pages/ListUsers.php +++ b/app/Filament/Admin/Resources/Users/Pages/ListUsers.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\Users\Pages; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Users\UserResource; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; @@ -24,7 +25,7 @@ class ListUsers extends ListRecords return [ CreateAction::make() ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-user-plus'), + ->icon(TablerIcon::UserPlus), ]; } } diff --git a/app/Filament/Admin/Resources/Users/UserResource.php b/app/Filament/Admin/Resources/Users/UserResource.php index b1afe967e..0cc78be68 100644 --- a/app/Filament/Admin/Resources/Users/UserResource.php +++ b/app/Filament/Admin/Resources/Users/UserResource.php @@ -3,6 +3,7 @@ namespace App\Filament\Admin\Resources\Users; use App\Enums\CustomizationKey; +use App\Enums\TablerIcon; use App\Extensions\OAuth\OAuthService; use App\Facades\Activity; use App\Filament\Admin\Resources\Users\Pages\CreateUser; @@ -21,6 +22,7 @@ use App\Traits\Filament\CanCustomizeRelations; use App\Traits\Filament\CanCustomizeStaticTabs; use App\Traits\Filament\CanModifyForm; use App\Traits\Filament\CanModifyTable; +use BackedEnum; use DateTimeZone; use Exception; use Filament\Actions\Action; @@ -66,7 +68,7 @@ class UserResource extends Resource protected static ?string $model = User::class; - protected static string|\BackedEnum|null $navigationIcon = 'tabler-users'; + protected static string|BackedEnum|null $navigationIcon = TablerIcon::Users; protected static ?string $recordTitleAttribute = 'username'; @@ -117,7 +119,7 @@ class UserResource extends Resource IconColumn::make('mfa_email_enabled') ->label(trans('profile.tabs.2fa')) ->visibleFrom('lg') - ->icon(fn (User $user) => filled($user->mfa_app_secret) ? 'tabler-qrcode' : ($user->mfa_email_enabled ? 'tabler-mail' : 'tabler-lock-open-off')) + ->icon(fn (User $user) => filled($user->mfa_app_secret) ? TablerIcon::Qrcode : ($user->mfa_email_enabled ? TablerIcon::Mail : TablerIcon::LockOpenOff)) ->tooltip(fn (User $user) => filled($user->mfa_app_secret) ? 'App' : ($user->mfa_email_enabled ? 'E-Mail' : 'None')), TextColumn::make('roles.name') ->label(trans('admin/user.roles')) @@ -159,7 +161,7 @@ class UserResource extends Resource return [ Tab::make('account') ->label(trans('profile.tabs.account')) - ->icon('tabler-user-cog') + ->icon(TablerIcon::UserCog) ->columns([ 'default' => 1, 'md' => 3, @@ -194,13 +196,13 @@ class UserResource extends Resource 'md' => 1, 'lg' => 1, ]) - ->hintIcon(fn ($operation) => $operation === 'create' ? 'tabler-question-mark' : null, fn ($operation) => $operation === 'create' ? trans('admin/user.password_help') : null) + ->hintIcon(fn ($operation) => $operation === 'create' ? TablerIcon::QuestionMark : null, fn ($operation) => $operation === 'create' ? trans('admin/user.password_help') : null) ->password() ->hintAction( Action::make('password_reset') ->label(trans('admin/user.password_reset')) ->hidden(fn (string $operation) => $operation === 'create' || config('mail.default', 'log') === 'log') - ->icon('tabler-send') + ->icon(TablerIcon::Send) ->action(function (User $user) { $status = Password::broker(Filament::getPanel('app')->getAuthPasswordBroker())->sendResetLink([ 'email' => $user->email, @@ -237,7 +239,7 @@ class UserResource extends Resource ]), Toggle::make('is_managed_externally') ->label(trans('admin/user.is_managed_externally')) - ->hintIcon('tabler-question-mark', trans('admin/user.is_managed_externally_helper')) + ->hintIcon(TablerIcon::QuestionMark, trans('admin/user.is_managed_externally_helper')) ->inline(false) ->columnSpan([ 'default' => 1, @@ -252,7 +254,7 @@ class UserResource extends Resource Select::make('timezone') ->label(trans('profile.timezone')) ->required() - ->prefixIcon('tabler-clock-pin') + ->prefixIcon(TablerIcon::ClockPin) ->default(fn () => config('app.timezone', 'UTC')) ->selectablePlaceholder(false) ->options(fn () => collect(DateTimeZone::listIdentifiers())->mapWithKeys(fn ($tz) => [$tz => $tz])) @@ -260,7 +262,7 @@ class UserResource extends Resource Select::make('language') ->label(trans('profile.language')) ->required() - ->prefixIcon('tabler-flag') + ->prefixIcon(TablerIcon::Flag) ->live() ->default('en') ->searchable() @@ -315,7 +317,7 @@ class UserResource extends Resource $actions[] = Action::make("oauth_$id") ->label(trans('profile.unlink', ['name' => $name])) - ->icon('tabler-unlink') + ->icon(TablerIcon::Unlink) ->requiresConfirmation() ->color($color) ->action(function ($livewire) use ($oauthService, $user, $name, $schema) { @@ -341,7 +343,7 @@ class UserResource extends Resource ]), Tab::make('roles') ->label(trans('admin/user.roles')) - ->icon('tabler-users-group') + ->icon(TablerIcon::UsersGroup) ->schema([ CheckboxList::make('roles') ->hidden(fn (?User $user) => $user && $user->isRootAdmin()) @@ -368,7 +370,7 @@ class UserResource extends Resource Tab::make('keys') ->visible(fn (?User $user) => $user) ->label(trans('profile.tabs.keys')) - ->icon('tabler-key') + ->icon(TablerIcon::Key) ->schema([ Section::make(trans('profile.api_keys')) ->columnSpan(2) @@ -464,7 +466,7 @@ class UserResource extends Resource ->visible(fn (?User $user) => $user) ->disabledOn('create') ->label(trans('profile.tabs.activity')) - ->icon('tabler-history') + ->icon(TablerIcon::History) ->schema([ Repeater::make('activity') ->hiddenLabel() diff --git a/app/Filament/Admin/Resources/Webhooks/Pages/CreateWebhookConfiguration.php b/app/Filament/Admin/Resources/Webhooks/Pages/CreateWebhookConfiguration.php index f71a79add..3f52d912d 100644 --- a/app/Filament/Admin/Resources/Webhooks/Pages/CreateWebhookConfiguration.php +++ b/app/Filament/Admin/Resources/Webhooks/Pages/CreateWebhookConfiguration.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\Webhooks\Pages; +use App\Enums\TablerIcon; use App\Enums\WebhookType; use App\Filament\Admin\Resources\Webhooks\WebhookResource; use App\Traits\Filament\CanCustomizeHeaderActions; @@ -26,10 +27,10 @@ class CreateWebhookConfiguration extends CreateRecord return [ $this->getCancelFormAction()->formId('form') ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-arrow-left'), + ->icon(TablerIcon::ArrowLeft), $this->getCreateFormAction()->formId('form') ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-file-plus'), + ->icon(TablerIcon::FilePlus), ]; } diff --git a/app/Filament/Admin/Resources/Webhooks/Pages/EditWebhookConfiguration.php b/app/Filament/Admin/Resources/Webhooks/Pages/EditWebhookConfiguration.php index a8b65d981..fe08e7db4 100644 --- a/app/Filament/Admin/Resources/Webhooks/Pages/EditWebhookConfiguration.php +++ b/app/Filament/Admin/Resources/Webhooks/Pages/EditWebhookConfiguration.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\Webhooks\Pages; +use App\Enums\TablerIcon; use App\Enums\WebhookType; use App\Filament\Admin\Resources\Webhooks\WebhookResource; use App\Models\WebhookConfiguration; @@ -34,7 +35,7 @@ class EditWebhookConfiguration extends EditRecord ->tooltip(trans('admin/webhook.test_now_help')), $this->getSaveFormAction()->formId('form') ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-device-floppy'), + ->icon(TablerIcon::DeviceFloppy), ]; } diff --git a/app/Filament/Admin/Resources/Webhooks/Pages/ListWebhookConfigurations.php b/app/Filament/Admin/Resources/Webhooks/Pages/ListWebhookConfigurations.php index 7a5267b26..cfe2f186b 100644 --- a/app/Filament/Admin/Resources/Webhooks/Pages/ListWebhookConfigurations.php +++ b/app/Filament/Admin/Resources/Webhooks/Pages/ListWebhookConfigurations.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\Webhooks\Pages; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Webhooks\WebhookResource; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; @@ -24,7 +25,7 @@ class ListWebhookConfigurations extends ListRecords return [ CreateAction::make() ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-file-plus'), + ->icon(TablerIcon::FilePlus), ]; } } diff --git a/app/Filament/Admin/Resources/Webhooks/WebhookResource.php b/app/Filament/Admin/Resources/Webhooks/WebhookResource.php index a02cec609..64c8505ce 100644 --- a/app/Filament/Admin/Resources/Webhooks/WebhookResource.php +++ b/app/Filament/Admin/Resources/Webhooks/WebhookResource.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Resources\Webhooks; +use App\Enums\TablerIcon; use App\Enums\WebhookType; use App\Filament\Admin\Resources\Webhooks\Pages\CreateWebhookConfiguration; use App\Filament\Admin\Resources\Webhooks\Pages\EditWebhookConfiguration; @@ -13,6 +14,7 @@ use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizeRelations; use App\Traits\Filament\CanModifyForm; use App\Traits\Filament\CanModifyTable; +use BackedEnum; use Exception; use Filament\Actions\Action; use Filament\Actions\DeleteBulkAction; @@ -51,7 +53,7 @@ class WebhookResource extends Resource protected static ?string $model = WebhookConfiguration::class; - protected static string|\BackedEnum|null $navigationIcon = 'tabler-webhook'; + protected static string|BackedEnum|null $navigationIcon = TablerIcon::Webhook; protected static ?string $recordTitleAttribute = 'description'; @@ -110,7 +112,7 @@ class WebhookResource extends Resource ->groupedBulkActions([ DeleteBulkAction::make(), ]) - ->emptyStateIcon('tabler-webhook') + ->emptyStateIcon(TablerIcon::Webhook) ->emptyStateDescription('') ->emptyStateHeading(trans('admin/webhook.no_webhooks')) ->persistFiltersInSession() @@ -330,7 +332,7 @@ class WebhookResource extends Resource AlertBanner::make('discord_webhook_help') ->title(trans('admin/webhook.help')) ->body(trans('admin/webhook.help_text')) - ->icon('tabler-question-mark') + ->icon(TablerIcon::QuestionMark) ->info() ->send(); } diff --git a/app/Filament/Admin/Widgets/CanaryWidget.php b/app/Filament/Admin/Widgets/CanaryWidget.php index 1f19c083b..3606dcdff 100644 --- a/app/Filament/Admin/Widgets/CanaryWidget.php +++ b/app/Filament/Admin/Widgets/CanaryWidget.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Widgets; +use App\Enums\TablerIcon; use Exception; use Filament\Actions\Action; use Filament\Infolists\Components\TextEntry; @@ -25,7 +26,7 @@ class CanaryWidget extends FormWidget return $schema ->components([ Section::make(trans('admin/dashboard.sections.intro-developers.heading')) - ->icon('tabler-code') + ->icon(TablerIcon::Code) ->iconColor('primary') ->collapsible() ->collapsed() @@ -41,7 +42,7 @@ class CanaryWidget extends FormWidget ->headerActions([ Action::make('issues') ->label(trans('admin/dashboard.sections.intro-developers.button_issues')) - ->icon('tabler-brand-github') + ->icon(TablerIcon::BrandGithub) ->url('https://github.com/pelican-dev/panel/issues', true), ]), ]); diff --git a/app/Filament/Admin/Widgets/HelpWidget.php b/app/Filament/Admin/Widgets/HelpWidget.php index af4ff08b6..66f441405 100644 --- a/app/Filament/Admin/Widgets/HelpWidget.php +++ b/app/Filament/Admin/Widgets/HelpWidget.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Widgets; +use App\Enums\TablerIcon; use Exception; use Filament\Actions\Action; use Filament\Infolists\Components\TextEntry; @@ -20,7 +21,7 @@ class HelpWidget extends FormWidget return $schema ->components([ Section::make(trans('admin/dashboard.sections.intro-help.heading')) - ->icon('tabler-question-mark') + ->icon(TablerIcon::QuestionMark) ->iconColor('info') ->collapsible() ->persistCollapsed() @@ -32,7 +33,7 @@ class HelpWidget extends FormWidget ->headerActions([ Action::make('docs') ->label(trans('admin/dashboard.sections.intro-help.button_docs')) - ->icon('tabler-speedboat') + ->icon(TablerIcon::Speedboat) ->url('https://pelican.dev/docs', true), ]), ]); diff --git a/app/Filament/Admin/Widgets/NoNodesWidget.php b/app/Filament/Admin/Widgets/NoNodesWidget.php index bdb948f7c..87358c426 100644 --- a/app/Filament/Admin/Widgets/NoNodesWidget.php +++ b/app/Filament/Admin/Widgets/NoNodesWidget.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Widgets; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Nodes\Pages\CreateNode; use App\Models\Node; use Exception; @@ -27,7 +28,7 @@ class NoNodesWidget extends FormWidget return $schema ->components([ Section::make(trans('admin/dashboard.sections.intro-first-node.heading')) - ->icon('tabler-server-2') + ->icon(TablerIcon::Server2) ->iconColor('primary') ->collapsible() ->persistCollapsed() @@ -39,7 +40,7 @@ class NoNodesWidget extends FormWidget ->headerActions([ Action::make('create-node') ->label(trans('admin/dashboard.sections.intro-first-node.button_label')) - ->icon('tabler-server-2') + ->icon(TablerIcon::Server2) ->url(CreateNode::getUrl()), ]), ]); diff --git a/app/Filament/Admin/Widgets/SupportWidget.php b/app/Filament/Admin/Widgets/SupportWidget.php index 47cf35c67..ba7d7bd41 100644 --- a/app/Filament/Admin/Widgets/SupportWidget.php +++ b/app/Filament/Admin/Widgets/SupportWidget.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Widgets; +use App\Enums\TablerIcon; use Exception; use Filament\Actions\Action; use Filament\Infolists\Components\TextEntry; @@ -20,7 +21,7 @@ class SupportWidget extends FormWidget return $schema ->components([ Section::make(trans('admin/dashboard.sections.intro-support.heading')) - ->icon('tabler-heart-filled') + ->icon(TablerIcon::HeartFilled) ->iconColor('danger') ->collapsible() ->persistCollapsed() @@ -35,7 +36,7 @@ class SupportWidget extends FormWidget ->headerActions([ Action::make('donate') ->label(trans('admin/dashboard.sections.intro-support.button_donate')) - ->icon('tabler-cash') + ->icon(TablerIcon::Cash) ->url('https://pelican.dev/donate', true) ->color('success'), ]), diff --git a/app/Filament/Admin/Widgets/UpdateWidget.php b/app/Filament/Admin/Widgets/UpdateWidget.php index 35a0b1817..cb2312570 100644 --- a/app/Filament/Admin/Widgets/UpdateWidget.php +++ b/app/Filament/Admin/Widgets/UpdateWidget.php @@ -2,6 +2,7 @@ namespace App\Filament\Admin\Widgets; +use App\Enums\TablerIcon; use App\Services\Helpers\SoftwareVersionService; use Exception; use Filament\Actions\Action; @@ -31,7 +32,7 @@ class UpdateWidget extends FormWidget ->components([ $isLatest ? Section::make(trans('admin/dashboard.sections.intro-no-update.heading')) - ->icon('tabler-checkbox') + ->icon(TablerIcon::Checkbox) ->iconColor('success') ->schema([ TextEntry::make('info') @@ -39,14 +40,14 @@ class UpdateWidget extends FormWidget ->state(trans('admin/dashboard.sections.intro-no-update.content', ['version' => $this->softwareVersionService->currentPanelVersion()])), ]) : Section::make(trans('admin/dashboard.sections.intro-update-available.heading')) - ->icon('tabler-info-circle') + ->icon(TablerIcon::InfoCircle) ->iconColor('warning') ->schema([ TextEntry::make('info') ->hiddenLabel() ->state(trans('admin/dashboard.sections.intro-update-available.content', ['latestVersion' => $this->softwareVersionService->latestPanelVersion()])), Section::make(trans('admin/dashboard.sections.intro-update-available.button_changelog')) - ->icon('tabler-script') + ->icon(TablerIcon::Script) ->collapsible() ->collapsed() ->schema([ @@ -59,7 +60,7 @@ class UpdateWidget extends FormWidget ->headerActions([ Action::make('update') ->label(trans('admin/dashboard.sections.intro-update-available.heading')) - ->icon('tabler-clipboard-text') + ->icon(TablerIcon::ClipboardText) ->url('https://pelican.dev/docs/panel/update', true) ->color('warning'), ]), diff --git a/app/Filament/App/Resources/Servers/Pages/ListServers.php b/app/Filament/App/Resources/Servers/Pages/ListServers.php index e3acbcd34..a5854ba6a 100644 --- a/app/Filament/App/Resources/Servers/Pages/ListServers.php +++ b/app/Filament/App/Resources/Servers/Pages/ListServers.php @@ -5,6 +5,7 @@ namespace App\Filament\App\Resources\Servers\Pages; use App\Enums\CustomizationKey; use App\Enums\ServerResourceType; use App\Enums\SubuserPermission; +use App\Enums\TablerIcon; use App\Filament\App\Resources\Servers\ServerResource; use App\Filament\Components\Tables\Columns\ProgressBarColumn; use App\Filament\Components\Tables\Columns\ServerEntryColumn; @@ -127,7 +128,7 @@ class ListServers extends ListRecords ->recordActions(!$usingGrid ? static::getPowerActionGroup() : []) ->recordActionsAlignment(Alignment::Center->value) ->contentGrid($usingGrid ? ['default' => 1, 'md' => 2] : null) - ->emptyStateIcon('tabler-brand-docker') + ->emptyStateIcon(TablerIcon::BrandDocker) ->emptyStateDescription('') ->emptyStateHeading(fn () => $this->activeTab === 'my' ? 'You don\'t own any servers!' : 'You don\'t have access to any servers!') ->persistFiltersInSession() @@ -243,34 +244,34 @@ class ListServers extends ListRecords Action::make('start') ->label(trans('server/console.power_actions.start')) ->color('primary') - ->icon('tabler-player-play-filled') + ->icon(TablerIcon::PlayerPlayFilled) ->authorize(fn (Server $server) => user()?->can(SubuserPermission::ControlStart, $server)) ->visible(fn (Server $server) => $server->retrieveStatus()->isStartable()) ->dispatch('powerAction', fn (Server $server) => ['server' => $server, 'action' => 'start']), Action::make('restart') ->label(trans('server/console.power_actions.restart')) ->color('gray') - ->icon('tabler-reload') + ->icon(TablerIcon::Reload) ->authorize(fn (Server $server) => user()?->can(SubuserPermission::ControlRestart, $server)) ->visible(fn (Server $server) => $server->retrieveStatus()->isRestartable()) ->dispatch('powerAction', fn (Server $server) => ['server' => $server, 'action' => 'restart']), Action::make('stop') ->label(trans('server/console.power_actions.stop')) ->color('danger') - ->icon('tabler-player-stop-filled') + ->icon(TablerIcon::PlayerStopFilled) ->authorize(fn (Server $server) => user()?->can(SubuserPermission::ControlStop, $server)) ->visible(fn (Server $server) => $server->retrieveStatus()->isStoppable() && !$server->retrieveStatus()->isKillable()) ->dispatch('powerAction', fn (Server $server) => ['server' => $server, 'action' => 'stop']), Action::make('kill') ->label(trans('server/console.power_actions.kill')) ->color('danger') - ->icon('tabler-alert-square') + ->icon(TablerIcon::AlertSquare) ->tooltip(trans('server/console.power_actions.kill_tooltip')) ->authorize(fn (Server $server) => user()?->can(SubuserPermission::ControlStop, $server)) ->visible(fn (Server $server) => $server->retrieveStatus()->isKillable()) ->dispatch('powerAction', fn (Server $server) => ['server' => $server, 'action' => 'kill']), ]) - ->icon('tabler-power') + ->icon(TablerIcon::Power) ->color('primary') ->tooltip(trans('server/dashboard.power_actions')) ->hidden(fn (Server $server) => $server->isInConflictState()) diff --git a/app/Filament/App/Resources/Servers/ServerResource.php b/app/Filament/App/Resources/Servers/ServerResource.php index 79b9b4ccb..f82a0906f 100644 --- a/app/Filament/App/Resources/Servers/ServerResource.php +++ b/app/Filament/App/Resources/Servers/ServerResource.php @@ -2,15 +2,17 @@ namespace App\Filament\App\Resources\Servers; +use App\Enums\TablerIcon; use App\Filament\App\Resources\Servers\Pages\ListServers; use App\Models\Server; +use BackedEnum; use Filament\Resources\Resource; class ServerResource extends Resource { protected static ?string $model = Server::class; - protected static string|\BackedEnum|null $navigationIcon = 'tabler-brand-docker'; + protected static string|BackedEnum|null $navigationIcon = TablerIcon::BrandDocker; protected static ?string $slug = '/'; diff --git a/app/Filament/Components/Actions/DeleteServerIcon.php b/app/Filament/Components/Actions/DeleteServerIcon.php index dd5c26d34..a85eedb55 100644 --- a/app/Filament/Components/Actions/DeleteServerIcon.php +++ b/app/Filament/Components/Actions/DeleteServerIcon.php @@ -2,6 +2,7 @@ namespace App\Filament\Components\Actions; +use App\Enums\TablerIcon; use App\Models\Server; use Filament\Actions\Action; use Filament\Notifications\Notification; @@ -23,7 +24,7 @@ class DeleteServerIcon extends Action $this->hiddenLabel(); - $this->icon('tabler-trash'); + $this->icon(TablerIcon::Trash); $this->iconButton(); diff --git a/app/Filament/Components/Actions/ExportEggAction.php b/app/Filament/Components/Actions/ExportEggAction.php index 1b07fd8c9..9006b0fed 100644 --- a/app/Filament/Components/Actions/ExportEggAction.php +++ b/app/Filament/Components/Actions/ExportEggAction.php @@ -3,6 +3,7 @@ namespace App\Filament\Components\Actions; use App\Enums\EggFormat; +use App\Enums\TablerIcon; use App\Models\Egg; use Filament\Actions\Action; use Filament\Infolists\Components\TextEntry; @@ -24,9 +25,9 @@ class ExportEggAction extends Action $this->iconButton(); - $this->icon('tabler-download'); + $this->icon(TablerIcon::Download); - $this->tableIcon('tabler-download'); + $this->tableIcon(TablerIcon::Download); $this->iconSize(IconSize::ExtraLarge); diff --git a/app/Filament/Components/Actions/ExportScheduleAction.php b/app/Filament/Components/Actions/ExportScheduleAction.php index 764c2fff6..ea7092fb2 100644 --- a/app/Filament/Components/Actions/ExportScheduleAction.php +++ b/app/Filament/Components/Actions/ExportScheduleAction.php @@ -3,6 +3,7 @@ namespace App\Filament\Components\Actions; use App\Enums\SubuserPermission; +use App\Enums\TablerIcon; use App\Models\Schedule; use App\Models\Server; use App\Services\Schedules\Sharing\ScheduleExporterService; @@ -27,7 +28,7 @@ class ExportScheduleAction extends Action $this->iconSize(IconSize::ExtraLarge); - $this->icon('tabler-download'); + $this->icon(TablerIcon::Download); $this->tooltip(trans('server/schedule.export')); diff --git a/app/Filament/Components/Actions/ImportEggAction.php b/app/Filament/Components/Actions/ImportEggAction.php index f363e07a4..0d53b62bf 100644 --- a/app/Filament/Components/Actions/ImportEggAction.php +++ b/app/Filament/Components/Actions/ImportEggAction.php @@ -3,6 +3,7 @@ namespace App\Filament\Components\Actions; use App\Console\Commands\Egg\UpdateEggIndexCommand; +use App\Enums\TablerIcon; use App\Jobs\InstallEgg; use App\Models\Egg; use App\Services\Eggs\Sharing\EggImporterService; @@ -38,7 +39,7 @@ class ImportEggAction extends Action $this->iconButton(); - $this->icon('tabler-file-import'); + $this->icon(TablerIcon::FileImport); $this->iconSize(IconSize::ExtraLarge); @@ -139,7 +140,7 @@ class ImportEggAction extends Action $this->importEggsFromGitHub(), Tab::make('file') ->label(trans('admin/egg.import.file')) - ->icon('tabler-file-upload') + ->icon(TablerIcon::FileUpload) ->schema([ FileUpload::make('files') ->label(trans('admin/egg.model_label')) @@ -152,7 +153,7 @@ class ImportEggAction extends Action ]), Tab::make('url') ->label(trans('admin/egg.import.url')) - ->icon('tabler-world-upload') + ->icon(TablerIcon::WorldUpload) ->schema([ Repeater::make('urls') ->hiddenLabel() @@ -217,7 +218,7 @@ class ImportEggAction extends Action return Tab::make('github') ->label(trans('admin/egg.import.github')) - ->icon('tabler-brand-github') + ->icon(TablerIcon::BrandGithub) ->columnSpanFull() ->schema([ Tabs::make('egg_tabs') diff --git a/app/Filament/Components/Actions/ImportScheduleAction.php b/app/Filament/Components/Actions/ImportScheduleAction.php index d3b3deede..82380fe9f 100644 --- a/app/Filament/Components/Actions/ImportScheduleAction.php +++ b/app/Filament/Components/Actions/ImportScheduleAction.php @@ -3,6 +3,7 @@ namespace App\Filament\Components\Actions; use App\Enums\SubuserPermission; +use App\Enums\TablerIcon; use App\Models\Server; use App\Services\Schedules\Sharing\ScheduleImporterService; use Exception; @@ -41,7 +42,7 @@ class ImportScheduleAction extends Action ->tabs([ Tab::make('file') ->label(trans('server/schedule.import_action.file')) - ->icon('tabler-file-upload') + ->icon(TablerIcon::FileUpload) ->schema([ FileUpload::make('files') ->hiddenLabel() @@ -54,7 +55,7 @@ class ImportScheduleAction extends Action ]), Tab::make('url') ->label(trans('server/schedule.import_action.url')) - ->icon('tabler-world-upload') + ->icon(TablerIcon::WorldUpload) ->schema([ Repeater::make('urls') ->hiddenLabel() diff --git a/app/Filament/Components/Actions/RotateDatabasePasswordAction.php b/app/Filament/Components/Actions/RotateDatabasePasswordAction.php index 750b69dba..c893f7da8 100644 --- a/app/Filament/Components/Actions/RotateDatabasePasswordAction.php +++ b/app/Filament/Components/Actions/RotateDatabasePasswordAction.php @@ -2,6 +2,7 @@ namespace App\Filament\Components\Actions; +use App\Enums\TablerIcon; use App\Facades\Activity; use App\Models\Database; use App\Services\Databases\DatabaseManagementService; @@ -24,7 +25,7 @@ class RotateDatabasePasswordAction extends Action $this->label(trans('admin/databasehost.rotate')); - $this->icon('tabler-refresh'); + $this->icon(TablerIcon::Refresh); $this->authorize(fn (Database $database) => user()?->can('update', $database)); diff --git a/app/Filament/Components/Actions/UpdateEggAction.php b/app/Filament/Components/Actions/UpdateEggAction.php index a315831d7..22a0b35f9 100644 --- a/app/Filament/Components/Actions/UpdateEggAction.php +++ b/app/Filament/Components/Actions/UpdateEggAction.php @@ -2,6 +2,7 @@ namespace App\Filament\Components\Actions; +use App\Enums\TablerIcon; use App\Models\Egg; use App\Services\Eggs\Sharing\EggImporterService; use Exception; @@ -24,7 +25,7 @@ class UpdateEggAction extends Action $this->iconButton(); - $this->icon('tabler-cloud-download'); + $this->icon(TablerIcon::CloudDownload); $this->iconSize(IconSize::ExtraLarge); diff --git a/app/Filament/Components/Actions/UpdateEggBulkAction.php b/app/Filament/Components/Actions/UpdateEggBulkAction.php index 7b16626d7..702300f9d 100644 --- a/app/Filament/Components/Actions/UpdateEggBulkAction.php +++ b/app/Filament/Components/Actions/UpdateEggBulkAction.php @@ -2,6 +2,7 @@ namespace App\Filament\Components\Actions; +use App\Enums\TablerIcon; use App\Models\Egg; use App\Services\Eggs\Sharing\EggImporterService; use Exception; @@ -23,7 +24,7 @@ class UpdateEggBulkAction extends BulkAction $this->label(trans_choice('admin/egg.update', 2)); - $this->icon('tabler-cloud-download'); + $this->icon(TablerIcon::CloudDownload); $this->color('success'); diff --git a/app/Filament/Components/Actions/UpdateNodeAllocations.php b/app/Filament/Components/Actions/UpdateNodeAllocations.php index 8108c06a4..3dfeb5b27 100644 --- a/app/Filament/Components/Actions/UpdateNodeAllocations.php +++ b/app/Filament/Components/Actions/UpdateNodeAllocations.php @@ -2,6 +2,7 @@ namespace App\Filament\Components\Actions; +use App\Enums\TablerIcon; use App\Models\Allocation; use App\Models\Node; use Exception; @@ -23,8 +24,10 @@ class UpdateNodeAllocations extends Action $this->label(trans('admin/node.bulk_update_ip')); - $this->icon('tabler-replace'); + $this->icon(TablerIcon::Replace); + $this->iconSize(IconSize::ExtraLarge); + $this->iconButton(); $this->color('warning'); diff --git a/app/Filament/Components/Forms/Fields/StartupVariable.php b/app/Filament/Components/Forms/Fields/StartupVariable.php index ebe2fdf44..6d277fa07 100644 --- a/app/Filament/Components/Forms/Fields/StartupVariable.php +++ b/app/Filament/Components/Forms/Fields/StartupVariable.php @@ -3,6 +3,7 @@ namespace App\Filament\Components\Forms\Fields; use App\Enums\StartupVariableType; +use App\Enums\TablerIcon; use App\Models\ServerVariable; use Closure; use Filament\Forms\Components\Concerns\HasAffixes; @@ -46,7 +47,7 @@ class StartupVariable extends Field $this->prefix(fn (StartupVariable $component) => '{{' . $component->getVariableEnv() . '}}'); - $this->hintIcon('tabler-code', fn (StartupVariable $component) => implode('|', $component->getVariableRules())); + $this->hintIcon(TablerIcon::Code, fn (StartupVariable $component) => implode('|', $component->getVariableRules())); $this->helperText(fn (StartupVariable $component) => !$component->getVariableDesc() ? '—' : $component->getVariableDesc()); diff --git a/app/Filament/Pages/Auth/EditProfile.php b/app/Filament/Pages/Auth/EditProfile.php index 1d29c5e5c..10f754f6e 100644 --- a/app/Filament/Pages/Auth/EditProfile.php +++ b/app/Filament/Pages/Auth/EditProfile.php @@ -3,6 +3,7 @@ namespace App\Filament\Pages\Auth; use App\Enums\CustomizationKey; +use App\Enums\TablerIcon; use App\Extensions\OAuth\OAuthService; use App\Facades\Activity; use App\Models\ActivityLog; @@ -104,18 +105,18 @@ class EditProfile extends BaseEditProfile return [ Tab::make('account') ->label(trans('profile.tabs.account')) - ->icon('tabler-user-cog') + ->icon(TablerIcon::UserCog) ->schema([ TextInput::make('username') ->disabled(fn (User $user) => $user->is_managed_externally) - ->prefixIcon('tabler-user') + ->prefixIcon(TablerIcon::User) ->label(trans('profile.username')) ->required() ->maxLength(255) ->unique(), TextInput::make('email') ->disabled(fn (User $user) => $user->is_managed_externally) - ->prefixIcon('tabler-mail') + ->prefixIcon(TablerIcon::Mail) ->label(trans('profile.email')) ->email() ->required() @@ -125,7 +126,7 @@ class EditProfile extends BaseEditProfile ->hidden(fn (User $user) => $user->is_managed_externally) ->label(trans('profile.password')) ->password() - ->prefixIcon('tabler-password') + ->prefixIcon(TablerIcon::Password) ->revealable(filament()->arePasswordsRevealable()) ->rule(Password::default()) ->autocomplete('new-password') @@ -136,7 +137,7 @@ class EditProfile extends BaseEditProfile TextInput::make('passwordConfirmation') ->label(trans('profile.password_confirmation')) ->password() - ->prefixIcon('tabler-password-fingerprint') + ->prefixIcon(TablerIcon::PasswordFingerprint) ->revealable(filament()->arePasswordsRevealable()) ->required() ->visible(fn (Get $get) => filled($get('password'))) @@ -144,7 +145,7 @@ class EditProfile extends BaseEditProfile Select::make('timezone') ->label(trans('profile.timezone')) ->required() - ->prefixIcon('tabler-clock-pin') + ->prefixIcon(TablerIcon::ClockPin) ->default(config('app.timezone', 'UTC')) ->selectablePlaceholder(false) ->options(fn () => collect(DateTimeZone::listIdentifiers())->mapWithKeys(fn ($tz) => [$tz => $tz])) @@ -152,7 +153,7 @@ class EditProfile extends BaseEditProfile Select::make('language') ->label(trans('profile.language')) ->required() - ->prefixIcon('tabler-flag') + ->prefixIcon(TablerIcon::Flag) ->live() ->default('en') ->selectablePlaceholder(false) @@ -185,7 +186,7 @@ class EditProfile extends BaseEditProfile ]), Tab::make('oauth') ->label(trans('profile.tabs.oauth')) - ->icon('tabler-brand-oauth') + ->icon(TablerIcon::BrandOauth) ->visible(count($oauthSchemas) > 0) ->schema(function () use ($oauthSchemas) { $actions = []; @@ -202,7 +203,7 @@ class EditProfile extends BaseEditProfile $actions[] = Action::make("oauth_$id") ->label(trans('profile.' . ($unlink ? 'unlink' : 'link'), ['name' => $name])) - ->icon($unlink ? 'tabler-unlink' : 'tabler-link') + ->icon($unlink ? TablerIcon::Unlink : TablerIcon::Link) ->color($color) ->action(function (UserUpdateService $updateService) use ($id, $name, $unlink) { if ($unlink) { @@ -227,7 +228,7 @@ class EditProfile extends BaseEditProfile }), Tab::make('2fa') ->label(trans('profile.tabs.2fa')) - ->icon('tabler-shield-lock') + ->icon(TablerIcon::ShieldLock) ->visible(fn () => Filament::hasMultiFactorAuthentication()) ->schema(collect(Filament::getMultiFactorAuthenticationProviders()) ->sort(fn (MultiFactorAuthenticationProvider $multiFactorAuthenticationProvider) => $multiFactorAuthenticationProvider->isEnabled(Filament::auth()->user()) ? 0 : 1) @@ -236,7 +237,7 @@ class EditProfile extends BaseEditProfile ->all()), Tab::make('api_keys') ->label(trans('profile.tabs.api_keys')) - ->icon('tabler-key') + ->icon(TablerIcon::Key) ->schema([ Grid::make(5) ->schema([ @@ -329,7 +330,7 @@ class EditProfile extends BaseEditProfile ]), Tab::make('ssh_keys') ->label(trans('profile.tabs.ssh_keys')) - ->icon('tabler-lock-code') + ->icon(TablerIcon::LockCode) ->schema([ Grid::make(5)->schema([ Section::make(trans('profile.create_ssh_key'))->columnSpan(3) @@ -424,7 +425,7 @@ class EditProfile extends BaseEditProfile ]), Tab::make('activity') ->label(trans('profile.tabs.activity')) - ->icon('tabler-history') + ->icon(TablerIcon::History) ->schema([ Repeater::make('activity') ->hiddenLabel() @@ -442,11 +443,11 @@ class EditProfile extends BaseEditProfile ]), Tab::make('customization') ->label(trans('profile.tabs.customization')) - ->icon('tabler-adjustments') + ->icon(TablerIcon::Adjustments) ->schema([ Section::make(trans('profile.dashboard')) ->collapsible() - ->icon('tabler-dashboard') + ->icon(TablerIcon::Dashboard) ->schema([ ToggleButtons::make('dashboard_layout') ->label(trans('profile.dashboard_layout')) @@ -467,7 +468,7 @@ class EditProfile extends BaseEditProfile ]), Section::make(trans('profile.console')) ->collapsible() - ->icon('tabler-brand-tabler') + ->icon(TablerIcon::Terminal2) ->columns(4) ->schema([ TextInput::make('console_font_size') @@ -538,7 +539,7 @@ class EditProfile extends BaseEditProfile TextInput::make('console_graph_period') ->label(trans('profile.graph_period')) ->suffix(trans('profile.seconds')) - ->hintIcon('tabler-question-mark', trans('profile.graph_period_helper')) + ->hintIcon(TablerIcon::QuestionMark, trans('profile.graph_period_helper')) ->columnSpan(2) ->numeric() ->default(30) @@ -568,10 +569,10 @@ class EditProfile extends BaseEditProfile return [ $this->getCancelFormAction()->formId('form') ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-arrow-left'), + ->icon(TablerIcon::ArrowLeft), $this->getSaveFormAction()->formId('form') ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-device-floppy'), + ->icon(TablerIcon::DeviceFloppy), ]; } diff --git a/app/Filament/Server/Pages/Console.php b/app/Filament/Server/Pages/Console.php index f149b7a84..d0cbaef62 100644 --- a/app/Filament/Server/Pages/Console.php +++ b/app/Filament/Server/Pages/Console.php @@ -5,6 +5,7 @@ namespace App\Filament\Server\Pages; use App\Enums\ConsoleWidgetPosition; use App\Enums\ContainerStatus; use App\Enums\SubuserPermission; +use App\Enums\TablerIcon; use App\Exceptions\Http\Server\ServerStateConflictException; use App\Extensions\Features\FeatureService; use App\Filament\Server\Widgets\ServerConsole; @@ -15,6 +16,7 @@ use App\Filament\Server\Widgets\ServerOverview; use App\Livewire\AlertBanner; use App\Models\Server; use App\Traits\Filament\CanCustomizeHeaderActions; +use BackedEnum; use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Actions\Concerns\InteractsWithActions; @@ -35,7 +37,7 @@ class Console extends Page protected static ?int $navigationSort = 1; - protected static string|\BackedEnum|null $navigationIcon = 'tabler-brand-tabler'; + protected static string|BackedEnum|null $navigationIcon = TablerIcon::Terminal2; protected string $view = 'filament.server.pages.console'; @@ -163,7 +165,7 @@ class Console extends Page Action::make('start') ->label(trans('server/console.power_actions.start')) ->color('primary') - ->icon('tabler-player-play-filled') + ->icon(TablerIcon::PlayerPlayFilled) ->authorize(fn (Server $server) => user()?->can(SubuserPermission::ControlStart, $server)) ->disabled(fn (Server $server) => $server->isInConflictState() || !$this->status->isStartable()) ->action(fn (Server $server) => $this->dispatch('setServerState', uuid: $server->uuid, state: 'start')) @@ -171,7 +173,7 @@ class Console extends Page Action::make('restart') ->label(trans('server/console.power_actions.restart')) ->color('gray') - ->icon('tabler-reload') + ->icon(TablerIcon::Reload) ->authorize(fn (Server $server) => user()?->can(SubuserPermission::ControlRestart, $server)) ->disabled(fn (Server $server) => $server->isInConflictState() || !$this->status->isRestartable()) ->action(fn (Server $server) => $this->dispatch('setServerState', uuid: $server->uuid, state: 'restart')) @@ -179,7 +181,7 @@ class Console extends Page Action::make('stop') ->label(trans('server/console.power_actions.stop')) ->color('danger') - ->icon('tabler-player-stop-filled') + ->icon(TablerIcon::PlayerStopFilled) ->authorize(fn (Server $server) => user()?->can(SubuserPermission::ControlStop, $server)) ->visible(fn () => !$this->status->isKillable()) ->disabled(fn (Server $server) => $server->isInConflictState() || !$this->status->isStoppable()) @@ -188,7 +190,7 @@ class Console extends Page Action::make('kill') ->label(trans('server/console.power_actions.kill')) ->color('danger') - ->icon('tabler-alert-square') + ->icon(TablerIcon::AlertSquare) ->tooltip(trans('server/console.power_actions.kill_tooltip')) ->requiresConfirmation() ->authorize(fn (Server $server) => user()?->can(SubuserPermission::ControlStop, $server)) diff --git a/app/Filament/Server/Pages/Settings.php b/app/Filament/Server/Pages/Settings.php index f2b7e8ef5..430930e6a 100644 --- a/app/Filament/Server/Pages/Settings.php +++ b/app/Filament/Server/Pages/Settings.php @@ -3,10 +3,12 @@ namespace App\Filament\Server\Pages; use App\Enums\SubuserPermission; +use App\Enums\TablerIcon; use App\Facades\Activity; use App\Filament\Components\Actions\DeleteServerIcon; use App\Models\Server; use App\Services\Servers\ReinstallServerService; +use BackedEnum; use Exception; use Filament\Actions\Action; use Filament\Forms\Components\FileUpload; @@ -31,7 +33,7 @@ use Livewire\Features\SupportFileUploads\TemporaryUploadedFile; class Settings extends ServerFormPage { - protected static string|\BackedEnum|null $navigationIcon = 'tabler-settings'; + protected static string|BackedEnum|null $navigationIcon = TablerIcon::Settings; protected static ?int $navigationSort = 10; @@ -89,7 +91,7 @@ class Settings extends ServerFormPage ->alignJustify(), Action::make('uploadIcon') ->iconButton()->iconSize(IconSize::Large) - ->icon('tabler-photo-up') + ->icon(TablerIcon::PhotoUp) ->modal() ->modalSubmitActionLabel(trans('server/setting.server_info.icon.upload')) ->schema([ @@ -249,42 +251,42 @@ class Settings extends ServerFormPage TextInput::make('cpu') ->hiddenLabel() ->prefix(trans('server/setting.server_info.limits.cpu')) - ->prefixIcon('tabler-cpu') + ->prefixIcon(TablerIcon::Cpu) ->columnSpan(1) ->disabled() ->formatStateUsing(fn ($state, Server $server) => !$state ? trans('server/setting.server_info.limits.unlimited') : format_number($server->cpu) . '%'), TextInput::make('memory') ->hiddenLabel() ->prefix(trans('server/setting.server_info.limits.memory')) - ->prefixIcon('tabler-device-desktop-analytics') + ->prefixIcon(TablerIcon::DeviceDesktopAnalytics) ->columnSpan(1) ->disabled() ->formatStateUsing(fn ($state, Server $server) => !$state ? trans('server/setting.server_info.limits.unlimited') : convert_bytes_to_readable($server->memory * 2 ** 20)), TextInput::make('disk') ->hiddenLabel() ->prefix(trans('server/setting.server_info.limits.disk')) - ->prefixIcon('tabler-device-sd-card') + ->prefixIcon(TablerIcon::DeviceSdCard) ->columnSpan(1) ->disabled() ->formatStateUsing(fn ($state, Server $server) => !$state ? trans('server/setting.server_info.limits.unlimited') : convert_bytes_to_readable($server->disk * 2 ** 20)), TextInput::make('backup_limit') ->hiddenLabel() ->prefix(trans('server/setting.server_info.limits.backups')) - ->prefixIcon('tabler-file-zip') + ->prefixIcon(TablerIcon::FileZip) ->columnSpan(1) ->disabled() ->formatStateUsing(fn ($state, Server $server) => !$state ? trans('server/backup.empty') : $server->backups->count() . ' ' .trans('server/setting.server_info.limits.of', ['max' => $state])), TextInput::make('database_limit') ->hiddenLabel() ->prefix(trans('server/setting.server_info.limits.databases')) - ->prefixIcon('tabler-database') + ->prefixIcon(TablerIcon::Database) ->columnSpan(1) ->disabled() ->formatStateUsing(fn ($state, Server $server) => !$state ? trans('server/database.empty') : $server->databases->count() . ' ' . trans('server/setting.server_info.limits.of', ['max' => $state])), TextInput::make('allocation_limit') ->hiddenLabel() ->prefix(trans('server/setting.server_info.limits.allocations')) - ->prefixIcon('tabler-network') + ->prefixIcon(TablerIcon::Network) ->columnSpan(1) ->disabled() ->formatStateUsing(fn ($state, Server $server) => !$state ? trans('server/setting.server_info.limits.no_allocations') : $server->allocations->count() . ' ' .trans('server/setting.server_info.limits.of', ['max' => $state])), @@ -308,7 +310,7 @@ class Settings extends ServerFormPage Action::make('connect_sftp') ->label(trans('server/setting.server_info.sftp.action')) ->color('success') - ->icon('tabler-plug') + ->icon(TablerIcon::Plug) ->url(function (Server $server) { $fqdn = $server->node->daemon_sftp_alias ?? $server->node->fqdn; diff --git a/app/Filament/Server/Pages/Startup.php b/app/Filament/Server/Pages/Startup.php index e3cca608e..3bd714f51 100644 --- a/app/Filament/Server/Pages/Startup.php +++ b/app/Filament/Server/Pages/Startup.php @@ -3,11 +3,13 @@ namespace App\Filament\Server\Pages; use App\Enums\SubuserPermission; +use App\Enums\TablerIcon; use App\Facades\Activity; use App\Filament\Components\Actions\PreviewStartupAction; use App\Filament\Components\Forms\Fields\StartupVariable; use App\Models\Server; use App\Models\ServerVariable; +use BackedEnum; use Exception; use Filament\Facades\Filament; use Filament\Forms\Components\Hidden; @@ -24,7 +26,7 @@ use Illuminate\Support\Facades\Validator; class Startup extends ServerFormPage { - protected static string|\BackedEnum|null $navigationIcon = 'tabler-player-play'; + protected static string|BackedEnum|null $navigationIcon = TablerIcon::PlayerPlay; protected static ?int $navigationSort = 9; diff --git a/app/Filament/Server/Resources/Activities/ActivityResource.php b/app/Filament/Server/Resources/Activities/ActivityResource.php index 3c5b0eaf7..d876ae8ab 100644 --- a/app/Filament/Server/Resources/Activities/ActivityResource.php +++ b/app/Filament/Server/Resources/Activities/ActivityResource.php @@ -2,6 +2,7 @@ namespace App\Filament\Server\Resources\Activities; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Users\Pages\EditUser; use App\Filament\Components\Tables\Columns\DateTimeColumn; use App\Filament\Server\Resources\Activities\Pages\ListActivities; @@ -12,6 +13,7 @@ use App\Models\User; use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizeRelations; use App\Traits\Filament\CanModifyTable; +use BackedEnum; use Exception; use Filament\Actions\Action; use Filament\Actions\ViewAction; @@ -40,7 +42,7 @@ class ActivityResource extends Resource protected static ?int $navigationSort = 8; - protected static string|\BackedEnum|null $navigationIcon = 'tabler-stack'; + protected static string|BackedEnum|null $navigationIcon = TablerIcon::Stack; protected static bool $isScopedToTenant = false; @@ -118,7 +120,7 @@ class ActivityResource extends Resource ->hintAction( Action::make('edit') ->label(trans('filament-actions::edit.single.label')) - ->icon('tabler-edit') + ->icon(TablerIcon::Edit) ->visible(fn (ActivityLog $activityLog) => $activityLog->actor instanceof User && user()?->can('update', $activityLog->actor)) ->url(fn (ActivityLog $activityLog) => EditUser::getUrl(['record' => $activityLog->actor], panel: 'admin')) ), diff --git a/app/Filament/Server/Resources/Allocations/AllocationResource.php b/app/Filament/Server/Resources/Allocations/AllocationResource.php index 83ec5fd78..05b3462ec 100644 --- a/app/Filament/Server/Resources/Allocations/AllocationResource.php +++ b/app/Filament/Server/Resources/Allocations/AllocationResource.php @@ -3,6 +3,7 @@ namespace App\Filament\Server\Resources\Allocations; use App\Enums\SubuserPermission; +use App\Enums\TablerIcon; use App\Facades\Activity; use App\Filament\Server\Resources\Allocations\Pages\ListAllocations; use App\Models\Allocation; @@ -12,6 +13,7 @@ use App\Traits\Filament\BlockAccessInConflict; use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizeRelations; use App\Traits\Filament\CanModifyTable; +use BackedEnum; use Exception; use Filament\Actions\Action; use Filament\Actions\DetachAction; @@ -35,7 +37,7 @@ class AllocationResource extends Resource protected static ?int $navigationSort = 7; - protected static string|\BackedEnum|null $navigationIcon = 'tabler-network'; + protected static string|BackedEnum|null $navigationIcon = TablerIcon::Network; /** * @throws Exception @@ -61,8 +63,8 @@ class AllocationResource extends Resource ->placeholder(trans('server/network.no_notes')), IconColumn::make('primary') ->icon(fn ($state) => match ($state) { - true => 'tabler-star-filled', - default => 'tabler-star', + true => TablerIcon::StarFilled, + default => TablerIcon::Star, }) ->color(fn ($state) => match ($state) { true => 'warning', @@ -75,8 +77,8 @@ class AllocationResource extends Resource IconColumn::make('is_locked') ->label(trans('server/network.locked')) ->tooltip(trans('server/network.locked_helper')) - ->trueIcon('tabler-lock') - ->falseIcon('tabler-lock-open'), + ->trueIcon(TablerIcon::Lock) + ->falseIcon(TablerIcon::LockOpen), ]) ->recordActions([ DetachAction::make() @@ -100,7 +102,7 @@ class AllocationResource extends Resource ->toolbarActions([ Action::make('add_allocation') ->hiddenLabel()->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon(fn () => $server->allocations()->count() >= $server->allocation_limit ? 'tabler-network-off' : 'tabler-network') + ->icon(fn () => $server->allocations()->count() >= $server->allocation_limit ? TablerIcon::NetworkOff : TablerIcon::Network) ->authorize(fn () => user()?->can(SubuserPermission::AllocationCreate, $server)) ->tooltip(fn () => $server->allocations()->count() >= $server->allocation_limit ? trans('server/network.limit') : trans('server/network.add')) ->hidden(fn () => !config('panel.client_features.allocations.enabled') || $server->allocation === null) diff --git a/app/Filament/Server/Resources/Backups/BackupResource.php b/app/Filament/Server/Resources/Backups/BackupResource.php index 320aafb32..148172d02 100644 --- a/app/Filament/Server/Resources/Backups/BackupResource.php +++ b/app/Filament/Server/Resources/Backups/BackupResource.php @@ -5,6 +5,7 @@ namespace App\Filament\Server\Resources\Backups; use App\Enums\BackupStatus; use App\Enums\ServerState; use App\Enums\SubuserPermission; +use App\Enums\TablerIcon; use App\Facades\Activity; use App\Filament\Components\Tables\Columns\BytesColumn; use App\Filament\Components\Tables\Columns\DateTimeColumn; @@ -22,6 +23,7 @@ use App\Traits\Filament\CanCustomizeRelations; use App\Traits\Filament\CanModifyForm; use App\Traits\Filament\CanModifyTable; use App\Traits\Filament\HasLimitBadge; +use BackedEnum; use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Actions\CreateAction; @@ -58,7 +60,7 @@ class BackupResource extends Resource protected static ?int $navigationSort = 3; - protected static string|\BackedEnum|null $navigationIcon = 'tabler-file-zip'; + protected static string|BackedEnum|null $navigationIcon = TablerIcon::FileZip; protected static bool $canCreateAnother = false; @@ -121,13 +123,13 @@ class BackupResource extends Resource IconColumn::make('is_locked') ->label(trans('server/backup.is_locked')) ->visibleFrom('md') - ->trueIcon('tabler-lock') - ->falseIcon('tabler-lock-open'), + ->trueIcon(TablerIcon::Lock) + ->falseIcon(TablerIcon::LockOpen), ]) ->recordActions([ ActionGroup::make([ Action::make('rename') - ->icon('tabler-pencil') + ->icon(TablerIcon::Pencil) ->authorize(fn () => user()?->can(SubuserPermission::BackupDelete, $server)) ->label(trans('server/backup.actions.rename.title')) ->schema([ @@ -158,7 +160,7 @@ class BackupResource extends Resource ->visible(fn (Backup $backup) => $backup->status === BackupStatus::Successful), Action::make('lock') ->iconSize(IconSize::Large) - ->icon(fn (Backup $backup) => !$backup->is_locked ? 'tabler-lock' : 'tabler-lock-open') + ->icon(fn (Backup $backup) => !$backup->is_locked ? TablerIcon::Lock : TablerIcon::LockOpen) ->authorize(fn () => user()?->can(SubuserPermission::BackupDelete, $server)) ->label(fn (Backup $backup) => !$backup->is_locked ? trans('server/backup.actions.lock.lock') : trans('server/backup.actions.lock.unlock')) ->action(fn (BackupController $backupController, Backup $backup, Request $request) => $backupController->toggleLock($request, $server, $backup)) @@ -167,7 +169,7 @@ class BackupResource extends Resource ->label(trans('server/backup.actions.download')) ->iconSize(IconSize::Large) ->color('primary') - ->icon('tabler-download') + ->icon(TablerIcon::Download) ->authorize(fn () => user()?->can(SubuserPermission::BackupDownload, $server)) ->url(fn (DownloadLinkService $downloadLinkService, Backup $backup, Request $request) => $downloadLinkService->handle($backup, $request->user()), true) ->visible(fn (Backup $backup) => $backup->status === BackupStatus::Successful), @@ -175,7 +177,7 @@ class BackupResource extends Resource ->label(trans('server/backup.actions.restore.title')) ->iconSize(IconSize::Large) ->color('success') - ->icon('tabler-folder-up') + ->icon(TablerIcon::FolderUp) ->authorize(fn () => user()?->can(SubuserPermission::BackupRestore, $server)) ->schema([ TextEntry::make('stop_info') @@ -259,7 +261,7 @@ class BackupResource extends Resource ->toolbarActions([ CreateAction::make() ->authorize(fn () => user()?->can(SubuserPermission::BackupCreate, $server)) - ->icon('tabler-file-zip') + ->icon(TablerIcon::FileZip) ->tooltip(fn () => $server->backups()->count() >= $server->backup_limit ? trans('server/backup.actions.create.limit') : trans('server/backup.actions.create.title')) ->disabled(fn () => $server->backups()->count() >= $server->backup_limit) ->color(fn () => $server->backups()->count() >= $server->backup_limit ? 'danger' : 'primary') diff --git a/app/Filament/Server/Resources/Databases/DatabaseResource.php b/app/Filament/Server/Resources/Databases/DatabaseResource.php index 7d0eed5eb..56d15bc3c 100644 --- a/app/Filament/Server/Resources/Databases/DatabaseResource.php +++ b/app/Filament/Server/Resources/Databases/DatabaseResource.php @@ -3,6 +3,7 @@ namespace App\Filament\Server\Resources\Databases; use App\Enums\SubuserPermission; +use App\Enums\TablerIcon; use App\Filament\Components\Actions\RotateDatabasePasswordAction; use App\Filament\Components\Tables\Columns\DateTimeColumn; use App\Filament\Server\Resources\Databases\Pages\ListDatabases; @@ -16,6 +17,7 @@ use App\Traits\Filament\CanCustomizeRelations; use App\Traits\Filament\CanModifyForm; use App\Traits\Filament\CanModifyTable; use App\Traits\Filament\HasLimitBadge; +use BackedEnum; use Exception; use Filament\Actions\CreateAction; use Filament\Actions\DeleteAction; @@ -46,7 +48,7 @@ class DatabaseResource extends Resource protected static ?int $navigationSort = 6; - protected static string|\BackedEnum|null $navigationIcon = 'tabler-database'; + protected static string|BackedEnum|null $navigationIcon = TablerIcon::Database; protected static function getBadgeCount(): int { @@ -159,7 +161,7 @@ class DatabaseResource extends Resource ->toolbarActions([ CreateAction::make('new') ->hiddenLabel()->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon(fn () => $server->databases()->count() >= $server->database_limit ? 'tabler-database-x' : 'tabler-database-plus') + ->icon(fn () => $server->databases()->count() >= $server->database_limit ? TablerIcon::DatabaseX : TablerIcon::DatabasePlus) ->tooltip(fn () => $server->databases()->count() >= $server->database_limit ? trans('server/database.limit') : trans('server/database.create_database')) ->disabled(fn () => $server->databases()->count() >= $server->database_limit) ->color(fn () => $server->databases()->count() >= $server->database_limit ? 'danger' : 'primary') @@ -179,7 +181,7 @@ class DatabaseResource extends Resource ->label(trans('server/database.name')) ->columnSpan(1) ->prefix('s'. $server->id . '_') - ->hintIcon('tabler-question-mark', trans('server/database.name_hint')), + ->hintIcon(TablerIcon::QuestionMark, trans('server/database.name_hint')), TextInput::make('remote') ->label(trans('server/database.connections_from')) ->columnSpan(1) diff --git a/app/Filament/Server/Resources/Files/FileResource.php b/app/Filament/Server/Resources/Files/FileResource.php index 2870ba565..91ae92155 100644 --- a/app/Filament/Server/Resources/Files/FileResource.php +++ b/app/Filament/Server/Resources/Files/FileResource.php @@ -2,6 +2,7 @@ namespace App\Filament\Server\Resources\Files; +use App\Enums\TablerIcon; use App\Filament\Server\Resources\Files\Pages\DownloadFiles; use App\Filament\Server\Resources\Files\Pages\EditFiles; use App\Filament\Server\Resources\Files\Pages\ListFiles; @@ -10,6 +11,7 @@ use App\Models\File; use App\Traits\Filament\BlockAccessInConflict; use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizeRelations; +use BackedEnum; use Filament\Resources\Pages\PageRegistration; use Filament\Resources\Resource; @@ -23,7 +25,7 @@ class FileResource extends Resource protected static ?int $navigationSort = 2; - protected static string|\BackedEnum|null $navigationIcon = 'tabler-files'; + protected static string|BackedEnum|null $navigationIcon = TablerIcon::Files; protected static bool $isScopedToTenant = false; diff --git a/app/Filament/Server/Resources/Files/Pages/EditFiles.php b/app/Filament/Server/Resources/Files/Pages/EditFiles.php index bb6cff1cb..18645e528 100644 --- a/app/Filament/Server/Resources/Files/Pages/EditFiles.php +++ b/app/Filament/Server/Resources/Files/Pages/EditFiles.php @@ -4,6 +4,7 @@ namespace App\Filament\Server\Resources\Files\Pages; use App\Enums\EditorLanguages; use App\Enums\SubuserPermission; +use App\Enums\TablerIcon; use App\Exceptions\Http\Server\FileSizeTooLargeException; use App\Exceptions\Repository\FileNotEditableException; use App\Facades\Activity; @@ -84,7 +85,7 @@ class EditFiles extends Page Action::make('save_and_close') ->label(trans('server/file.actions.edit.save_close')) ->authorize(fn () => user()?->can(SubuserPermission::FileUpdate, $server)) - ->icon('tabler-device-floppy') + ->icon(TablerIcon::DeviceFloppy) ->keyBindings('mod+shift+s') ->action(function () { $this->getDaemonFileRepository()->putContent($this->path, $this->data['editor'] ?? ''); @@ -104,7 +105,7 @@ class EditFiles extends Page Action::make('save') ->label(trans('server/file.actions.edit.save')) ->authorize(fn () => user()?->can(SubuserPermission::FileUpdate, $server)) - ->icon('tabler-device-floppy') + ->icon(TablerIcon::DeviceFloppy) ->keyBindings('mod+s') ->action(function () { $this->getDaemonFileRepository()->putContent($this->path, $this->data['editor'] ?? ''); @@ -122,7 +123,7 @@ class EditFiles extends Page Action::make('cancel') ->label(trans('server/file.actions.edit.cancel')) ->color('danger') - ->icon('tabler-x') + ->icon(TablerIcon::X) ->alpineClickHandler(function () { $url = $this->previousUrl ?? ListFiles::getUrl(['path' => dirname($this->path)]); diff --git a/app/Filament/Server/Resources/Files/Pages/ListFiles.php b/app/Filament/Server/Resources/Files/Pages/ListFiles.php index 6143aea53..6fdd36da8 100644 --- a/app/Filament/Server/Resources/Files/Pages/ListFiles.php +++ b/app/Filament/Server/Resources/Files/Pages/ListFiles.php @@ -4,6 +4,7 @@ namespace App\Filament\Server\Resources\Files\Pages; use App\Enums\EditorLanguages; use App\Enums\SubuserPermission; +use App\Enums\TablerIcon; use App\Exceptions\Repository\FileExistsException; use App\Facades\Activity; use App\Filament\Components\Forms\Fields\MonacoEditor; @@ -133,7 +134,7 @@ class ListFiles extends ListRecords Action::make('view') ->authorize(fn () => user()?->can(SubuserPermission::FileRead, $server)) ->label(trans('server/file.actions.open')) - ->icon('tabler-eye')->iconSize(IconSize::Large) + ->icon(TablerIcon::Eye)->iconSize(IconSize::Large) ->visible(fn (File $file) => $file->is_directory) ->url(fn (File $file) => self::getUrl(['path' => encode_path(join_paths($this->path, $file->name))])), EditAction::make('edit') @@ -144,7 +145,7 @@ class ListFiles extends ListRecords Action::make('rename') ->authorize(fn () => user()?->can(SubuserPermission::FileUpdate, $server)) ->label(trans('server/file.actions.rename.title')) - ->icon('tabler-forms')->iconSize(IconSize::Large) + ->icon(TablerIcon::Forms)->iconSize(IconSize::Large) ->schema([ TextInput::make('name') ->label(trans('server/file.actions.rename.file_name')) @@ -174,7 +175,7 @@ class ListFiles extends ListRecords Action::make('copy') ->authorize(fn () => user()?->can(SubuserPermission::FileCreate, $server)) ->label(trans('server/file.actions.copy.title')) - ->icon('tabler-copy')->iconSize(IconSize::Large) + ->icon(TablerIcon::Copy)->iconSize(IconSize::Large) ->visible(fn (File $file) => $file->is_file) ->action(function (File $file) { $this->getDaemonFileRepository()->copyFile(join_paths($this->path, $file->name)); @@ -193,13 +194,13 @@ class ListFiles extends ListRecords Action::make('download') ->authorize(fn () => user()?->can(SubuserPermission::FileReadContent, $server)) ->label(trans('server/file.actions.download')) - ->icon('tabler-download')->iconSize(IconSize::Large) + ->icon(TablerIcon::Download)->iconSize(IconSize::Large) ->visible(fn (File $file) => $file->is_file) ->url(fn (File $file) => DownloadFiles::getUrl(['path' => encode_path(join_paths($this->path, $file->name))]), true), Action::make('move') ->authorize(fn () => user()?->can(SubuserPermission::FileUpdate, $server)) ->label(trans('server/file.actions.move.title')) - ->icon('tabler-replace')->iconSize(IconSize::Large) + ->icon(TablerIcon::Replace)->iconSize(IconSize::Large) ->schema([ TextInput::make('location') ->label(trans('server/file.actions.move.new_location')) @@ -236,7 +237,7 @@ class ListFiles extends ListRecords Action::make('permissions') ->authorize(fn () => user()?->can(SubuserPermission::FileUpdate, $server)) ->label(trans('server/file.actions.permissions.title')) - ->icon('tabler-license')->iconSize(IconSize::Large) + ->icon(TablerIcon::License)->iconSize(IconSize::Large) ->schema([ CheckboxList::make('owner') ->label(trans('server/file.actions.permissions.owner')) @@ -298,7 +299,7 @@ class ListFiles extends ListRecords Action::make('archive') ->authorize(fn () => user()?->can(SubuserPermission::FileArchive, $server)) ->label(trans('server/file.actions.archive.title')) - ->icon('tabler-archive')->iconSize(IconSize::Large) + ->icon(TablerIcon::Archive)->iconSize(IconSize::Large) ->schema([ Grid::make(3) ->schema([ @@ -338,7 +339,7 @@ class ListFiles extends ListRecords Action::make('unarchive') ->authorize(fn () => user()?->can(SubuserPermission::FileArchive, $server)) ->label(trans('server/file.actions.unarchive.title')) - ->icon('tabler-archive')->iconSize(IconSize::Large) + ->icon(TablerIcon::Archive)->iconSize(IconSize::Large) ->visible(fn (File $file) => $file->isArchive()) ->action(function (File $file) { $this->getDaemonFileRepository()->decompressFile($this->path, $file->name); @@ -469,7 +470,7 @@ class ListFiles extends ListRecords Action::make('new_file') ->authorize(fn () => user()?->can(SubuserPermission::FileCreate, $server)) ->tooltip(trans('server/file.actions.new_file.title')) - ->hiddenLabel()->icon('tabler-file-plus')->iconButton()->iconSize(IconSize::ExtraLarge) + ->hiddenLabel()->icon(TablerIcon::FilePlus)->iconButton()->iconSize(IconSize::ExtraLarge) ->color('primary') ->modalSubmitActionLabel(trans('server/file.actions.new_file.create')) ->action(function ($data) { @@ -510,7 +511,7 @@ class ListFiles extends ListRecords ]), Action::make('new_folder') ->authorize(fn () => user()?->can(SubuserPermission::FileCreate, $server)) - ->hiddenLabel()->icon('tabler-folder-plus')->iconButton()->iconSize(IconSize::ExtraLarge) + ->hiddenLabel()->icon(TablerIcon::FolderPlus)->iconButton()->iconSize(IconSize::ExtraLarge) ->tooltip(trans('server/file.actions.new_folder.title')) ->color('primary') ->action(function ($data) { @@ -544,7 +545,7 @@ class ListFiles extends ListRecords ->view('filament.server.pages.file-upload'), Action::make('uploadURL') ->authorize(fn () => user()?->can(SubuserPermission::FileCreate, $server)) - ->hiddenLabel()->icon('tabler-download')->iconButton()->iconSize(IconSize::ExtraLarge) + ->hiddenLabel()->icon(TablerIcon::Download)->iconButton()->iconSize(IconSize::ExtraLarge) ->tooltip(trans('server/file.actions.upload.from_url')) ->modalHeading(trans('server/file.actions.upload.from_url')) ->color('success') @@ -569,7 +570,7 @@ class ListFiles extends ListRecords ->hiddenLabel()->iconButton()->iconSize(IconSize::ExtraLarge) ->tooltip(trans('server/file.actions.nested_search.title')) ->color('primary') - ->icon('tabler-world-search') + ->icon(TablerIcon::WorldSearch) ->modalHeading(trans('server/file.actions.nested_search.title')) ->modalSubmitActionLabel(trans('server/file.actions.nested_search.search')) ->schema([ diff --git a/app/Filament/Server/Resources/Schedules/Pages/EditSchedule.php b/app/Filament/Server/Resources/Schedules/Pages/EditSchedule.php index 688c5d523..c05ee6179 100644 --- a/app/Filament/Server/Resources/Schedules/Pages/EditSchedule.php +++ b/app/Filament/Server/Resources/Schedules/Pages/EditSchedule.php @@ -4,6 +4,7 @@ namespace App\Filament\Server\Resources\Schedules\Pages; use App\Enums\ScheduleStatus; use App\Enums\SubuserPermission; +use App\Enums\TablerIcon; use App\Facades\Activity; use App\Filament\Components\Actions\ExportScheduleAction; use App\Filament\Server\Resources\Schedules\ScheduleResource; @@ -63,7 +64,7 @@ class EditSchedule extends EditRecord }), Action::make('run_now') ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-run') + ->icon(TablerIcon::Run) ->authorize(fn () => user()?->can(SubuserPermission::ScheduleUpdate, Filament::getTenant())) ->tooltip(fn (Schedule $schedule) => $schedule->tasks->count() === 0 ? trans('server/schedule.no_tasks') : ($schedule->status === ScheduleStatus::Processing ? ScheduleStatus::Processing->getLabel() : trans('server/schedule.run_now'))) ->color(fn (Schedule $schedule) => $schedule->tasks->count() === 0 || $schedule->status === ScheduleStatus::Processing ? 'warning' : 'primary') @@ -81,7 +82,7 @@ class EditSchedule extends EditRecord ExportScheduleAction::make(), $this->getSaveFormAction()->formId('form') ->hiddenLabel()->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-device-floppy') + ->icon(TablerIcon::DeviceFloppy) ->tooltip(trans('server/schedule.save')), ]; } diff --git a/app/Filament/Server/Resources/Schedules/Pages/ViewSchedule.php b/app/Filament/Server/Resources/Schedules/Pages/ViewSchedule.php index 7e32d947f..82ddd2eda 100644 --- a/app/Filament/Server/Resources/Schedules/Pages/ViewSchedule.php +++ b/app/Filament/Server/Resources/Schedules/Pages/ViewSchedule.php @@ -2,6 +2,7 @@ namespace App\Filament\Server\Resources\Schedules\Pages; +use App\Enums\TablerIcon; use App\Filament\Server\Resources\Schedules\ScheduleResource; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; @@ -24,7 +25,7 @@ class ViewSchedule extends ViewRecord return [ EditAction::make() ->hiddenLabel()->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-calendar-code') + ->icon(TablerIcon::CalendarCode) ->tooltip(trans('server/schedule.edit')), ]; } diff --git a/app/Filament/Server/Resources/Schedules/ScheduleResource.php b/app/Filament/Server/Resources/Schedules/ScheduleResource.php index bc708c0dd..c9a9e9cd2 100644 --- a/app/Filament/Server/Resources/Schedules/ScheduleResource.php +++ b/app/Filament/Server/Resources/Schedules/ScheduleResource.php @@ -3,6 +3,7 @@ namespace App\Filament\Server\Resources\Schedules; use App\Enums\ScheduleStatus; +use App\Enums\TablerIcon; use App\Facades\Activity; use App\Filament\Components\Actions\ImportScheduleAction; use App\Filament\Components\Forms\Actions\CronPresetAction; @@ -19,6 +20,7 @@ use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizeRelations; use App\Traits\Filament\CanModifyForm; use App\Traits\Filament\CanModifyTable; +use BackedEnum; use Carbon\Carbon; use Exception; use Filament\Actions\CreateAction; @@ -59,7 +61,7 @@ class ScheduleResource extends Resource protected static ?int $navigationSort = 4; - protected static string|\BackedEnum|null $navigationIcon = 'tabler-clock'; + protected static string|BackedEnum|null $navigationIcon = TablerIcon::Clock; /** * @throws Exception @@ -80,13 +82,13 @@ class ScheduleResource extends Resource ->required(), Toggle::make('only_when_online') ->label(trans('server/schedule.only_online')) - ->hintIcon('tabler-question-mark', trans('server/schedule.only_online_hint')) + ->hintIcon(TablerIcon::QuestionMark, trans('server/schedule.only_online_hint')) ->inline(false) ->required() ->default(1), Toggle::make('is_active') ->label(trans('server/schedule.enabled')) - ->hintIcon('tabler-question-mark', trans('server/schedule.enabled_hint')) + ->hintIcon(TablerIcon::QuestionMark, trans('server/schedule.enabled_hint')) ->inline(false) ->hiddenOn('view') ->required() @@ -348,12 +350,12 @@ class ScheduleResource extends Resource ->toolbarActions([ CreateAction::make() ->hiddenLabel()->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-calendar-plus') + ->icon(TablerIcon::CalendarPlus) ->color('primary') ->tooltip(trans('server/schedule.new')), ImportScheduleAction::make() ->hiddenLabel()->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-file-import') + ->icon(TablerIcon::FileImport) ->color('success') ->tooltip(trans('server/schedule.import')), ]); diff --git a/app/Filament/Server/Resources/Subusers/SubuserResource.php b/app/Filament/Server/Resources/Subusers/SubuserResource.php index bdb4ac87f..0d6cf0990 100644 --- a/app/Filament/Server/Resources/Subusers/SubuserResource.php +++ b/app/Filament/Server/Resources/Subusers/SubuserResource.php @@ -3,6 +3,7 @@ namespace App\Filament\Server\Resources\Subusers; use App\Enums\SubuserPermission; +use App\Enums\TablerIcon; use App\Facades\Activity; use App\Filament\Server\Resources\Subusers\Pages\ListSubusers; use App\Models\Server; @@ -15,6 +16,7 @@ use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizeRelations; use App\Traits\Filament\CanModifyTable; use App\Traits\Filament\HasLimitBadge; +use BackedEnum; use Exception; use Filament\Actions\Action; use Filament\Actions\CreateAction; @@ -50,7 +52,7 @@ class SubuserResource extends Resource protected static ?int $navigationSort = 5; - protected static string|\BackedEnum|null $navigationIcon = 'tabler-users'; + protected static string|BackedEnum|null $navigationIcon = TablerIcon::Users; protected static function getBadgeCount(): int { @@ -217,7 +219,7 @@ class SubuserResource extends Resource ->toolbarActions([ CreateAction::make('invite') ->hiddenLabel()->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon('tabler-user-plus') + ->icon(TablerIcon::UserPlus) ->tooltip(trans('server/user.invite_user')) ->createAnother(false) ->authorize(fn () => user()?->can(SubuserPermission::UserCreate, $server)) @@ -264,7 +266,7 @@ class SubuserResource extends Resource ]), ]) ->modalHeading(trans('server/user.invite_user')) - ->modalIcon('tabler-user-plus') + ->modalIcon(TablerIcon::UserPlus) ->modalSubmitActionLabel(trans('server/user.action')) ->successNotificationTitle(null) ->failureNotificationTitle(null) diff --git a/app/Livewire/Installer/PanelInstaller.php b/app/Livewire/Installer/PanelInstaller.php index 1874e997d..d79f1cd35 100644 --- a/app/Livewire/Installer/PanelInstaller.php +++ b/app/Livewire/Installer/PanelInstaller.php @@ -2,6 +2,7 @@ namespace App\Livewire\Installer; +use App\Enums\TablerIcon; use App\Jobs\InstallEgg; use App\Livewire\Installer\Steps\CacheStep; use App\Livewire\Installer\Steps\DatabaseStep; @@ -120,7 +121,7 @@ class PanelInstaller extends SimplePage implements HasForms return Select::make('language') ->hiddenLabel() ->prefix(trans('profile.language')) - ->prefixIcon('tabler-flag') + ->prefixIcon(TablerIcon::Flag) ->required() ->live() ->default('en') diff --git a/app/Livewire/Installer/Steps/CacheStep.php b/app/Livewire/Installer/Steps/CacheStep.php index 4817a5ea6..0e0c5239f 100644 --- a/app/Livewire/Installer/Steps/CacheStep.php +++ b/app/Livewire/Installer/Steps/CacheStep.php @@ -2,6 +2,7 @@ namespace App\Livewire\Installer\Steps; +use App\Enums\TablerIcon; use App\Livewire\Installer\PanelInstaller; use Exception; use Filament\Forms\Components\TextInput; @@ -29,7 +30,7 @@ class CacheStep ->schema([ ToggleButtons::make('env_cache.CACHE_STORE') ->label(trans('installer.cache.driver')) - ->hintIcon('tabler-question-mark', trans('installer.cache.driver_help')) + ->hintIcon(TablerIcon::QuestionMark, trans('installer.cache.driver_help')) ->required() ->inline() ->options(self::CACHE_DRIVERS) @@ -51,25 +52,25 @@ class CacheStep TextInput::make('env_cache.REDIS_HOST') ->label(trans('installer.cache.fields.host')) ->placeholder('127.0.0.1') - ->hintIcon('tabler-question-mark', trans('installer.cache.fields.host_help')) + ->hintIcon(TablerIcon::QuestionMark, trans('installer.cache.fields.host_help')) ->required(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis') ->default(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis' ? config('database.redis.default.host') : null) ->visible(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis'), TextInput::make('env_cache.REDIS_PORT') ->label(trans('installer.cache.fields.port')) ->placeholder('6379') - ->hintIcon('tabler-question-mark', trans('installer.cache.fields.port_help')) + ->hintIcon(TablerIcon::QuestionMark, trans('installer.cache.fields.port_help')) ->required(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis') ->default(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis' ? config('database.redis.default.port') : null) ->visible(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis'), TextInput::make('env_cache.REDIS_USERNAME') ->label(trans('installer.cache.fields.username')) - ->hintIcon('tabler-question-mark', trans('installer.cache.fields.username_help')) + ->hintIcon(TablerIcon::QuestionMark, trans('installer.cache.fields.username_help')) ->default(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis' ? config('database.redis.default.username') : null) ->visible(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis'), TextInput::make('env_cache.REDIS_PASSWORD') ->label(trans('installer.cache.fields.password')) - ->hintIcon('tabler-question-mark', trans('installer.cache.fields.password_help')) + ->hintIcon(TablerIcon::QuestionMark, trans('installer.cache.fields.password_help')) ->password() ->revealable() ->default(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis' ? config('database.redis.default.password') : null) diff --git a/app/Livewire/Installer/Steps/DatabaseStep.php b/app/Livewire/Installer/Steps/DatabaseStep.php index 086a5d7fe..ef5606ab9 100644 --- a/app/Livewire/Installer/Steps/DatabaseStep.php +++ b/app/Livewire/Installer/Steps/DatabaseStep.php @@ -2,6 +2,7 @@ namespace App\Livewire\Installer\Steps; +use App\Enums\TablerIcon; use App\Livewire\Installer\PanelInstaller; use Exception; use Filament\Forms\Components\TextInput; @@ -30,7 +31,7 @@ class DatabaseStep ->schema([ ToggleButtons::make('env_database.DB_CONNECTION') ->label(trans('installer.database.driver')) - ->hintIcon('tabler-question-mark', trans('installer.database.driver_help')) + ->hintIcon(TablerIcon::QuestionMark, trans('installer.database.driver_help')) ->required() ->inline() ->options(self::DATABASE_DRIVERS) @@ -62,19 +63,19 @@ class DatabaseStep TextInput::make('env_database.DB_DATABASE') ->label(fn (Get $get) => $get('env_database.DB_CONNECTION') === 'sqlite' ? trans('installer.database.fields.path') : trans('installer.database.fields.name')) ->placeholder(fn (Get $get) => $get('env_database.DB_CONNECTION') === 'sqlite' ? 'database.sqlite' : 'panel') - ->hintIcon('tabler-question-mark', fn (Get $get) => $get('env_database.DB_CONNECTION') === 'sqlite' ? trans('installer.database.fields.path_help') : trans('installer.database.fields.name_help')) + ->hintIcon(TablerIcon::QuestionMark, fn (Get $get) => $get('env_database.DB_CONNECTION') === 'sqlite' ? trans('installer.database.fields.path_help') : trans('installer.database.fields.name_help')) ->required() ->default('database.sqlite'), TextInput::make('env_database.DB_HOST') ->label(trans('installer.database.fields.host')) ->placeholder('127.0.0.1') - ->hintIcon('tabler-question-mark', trans('installer.database.fields.host_help')) + ->hintIcon(TablerIcon::QuestionMark, trans('installer.database.fields.host_help')) ->required(fn (Get $get) => $get('env_database.DB_CONNECTION') !== 'sqlite') ->hidden(fn (Get $get) => $get('env_database.DB_CONNECTION') === 'sqlite'), TextInput::make('env_database.DB_PORT') ->label(trans('installer.database.fields.port')) ->placeholder('3306') - ->hintIcon('tabler-question-mark', trans('installer.database.fields.port_help')) + ->hintIcon(TablerIcon::QuestionMark, trans('installer.database.fields.port_help')) ->numeric() ->minValue(1) ->maxValue(65535) @@ -83,12 +84,12 @@ class DatabaseStep TextInput::make('env_database.DB_USERNAME') ->label(trans('installer.database.fields.username')) ->placeholder('pelican') - ->hintIcon('tabler-question-mark', trans('installer.database.fields.username_help')) + ->hintIcon(TablerIcon::QuestionMark, trans('installer.database.fields.username_help')) ->required(fn (Get $get) => $get('env_database.DB_CONNECTION') !== 'sqlite') ->hidden(fn (Get $get) => $get('env_database.DB_CONNECTION') === 'sqlite'), TextInput::make('env_database.DB_PASSWORD') ->label(trans('installer.database.fields.password')) - ->hintIcon('tabler-question-mark', trans('installer.database.fields.password_help')) + ->hintIcon(TablerIcon::QuestionMark, trans('installer.database.fields.password_help')) ->password() ->revealable() ->hidden(fn (Get $get) => $get('env_database.DB_CONNECTION') === 'sqlite'), diff --git a/app/Livewire/Installer/Steps/EggSelectionStep.php b/app/Livewire/Installer/Steps/EggSelectionStep.php index 708591cf5..9381d8bd1 100644 --- a/app/Livewire/Installer/Steps/EggSelectionStep.php +++ b/app/Livewire/Installer/Steps/EggSelectionStep.php @@ -3,6 +3,7 @@ namespace App\Livewire\Installer\Steps; use App\Console\Commands\Egg\UpdateEggIndexCommand; +use App\Enums\TablerIcon; use Exception; use Filament\Forms\Components\CheckboxList; use Filament\Infolists\Components\TextEntry; @@ -21,7 +22,7 @@ class EggSelectionStep } catch (Exception $exception) { Notification::make() ->title(trans('installer.egg.exceptions.failed_to_update')) - ->icon('tabler-egg') + ->icon(TablerIcon::Egg) ->body($exception->getMessage()) ->danger() ->persistent() diff --git a/app/Livewire/Installer/Steps/EnvironmentStep.php b/app/Livewire/Installer/Steps/EnvironmentStep.php index 3c9cdad70..760f4896c 100644 --- a/app/Livewire/Installer/Steps/EnvironmentStep.php +++ b/app/Livewire/Installer/Steps/EnvironmentStep.php @@ -2,6 +2,7 @@ namespace App\Livewire\Installer\Steps; +use App\Enums\TablerIcon; use App\Livewire\Installer\PanelInstaller; use Filament\Forms\Components\TextInput; use Filament\Schemas\Components\Fieldset; @@ -17,12 +18,12 @@ class EnvironmentStep ->schema([ TextInput::make('env_general.APP_NAME') ->label(trans('installer.environment.fields.app_name')) - ->hintIcon('tabler-question-mark', trans('installer.environment.fields.app_name_help')) + ->hintIcon(TablerIcon::QuestionMark, trans('installer.environment.fields.app_name_help')) ->required() ->default(config('app.name')), TextInput::make('env_general.APP_URL') ->label(trans('installer.environment.fields.app_url')) - ->hintIcon('tabler-question-mark', trans('installer.environment.fields.app_url_help')) + ->hintIcon(TablerIcon::QuestionMark, trans('installer.environment.fields.app_url_help')) ->required() ->default(url('')), Fieldset::make('admin_user') diff --git a/app/Livewire/Installer/Steps/QueueStep.php b/app/Livewire/Installer/Steps/QueueStep.php index 661412816..8a5ae2d78 100644 --- a/app/Livewire/Installer/Steps/QueueStep.php +++ b/app/Livewire/Installer/Steps/QueueStep.php @@ -2,6 +2,7 @@ namespace App\Livewire\Installer\Steps; +use App\Enums\TablerIcon; use App\Livewire\Installer\PanelInstaller; use Exception; use Filament\Forms\Components\TextInput; @@ -30,7 +31,7 @@ class QueueStep ->schema([ ToggleButtons::make('env_queue.QUEUE_CONNECTION') ->label(trans('installer.queue.driver')) - ->hintIcon('tabler-question-mark', trans('installer.queue.driver_help')) + ->hintIcon(TablerIcon::QuestionMark, trans('installer.queue.driver_help')) ->required() ->inline() ->options(self::QUEUE_DRIVERS) diff --git a/app/Livewire/Installer/Steps/RequirementsStep.php b/app/Livewire/Installer/Steps/RequirementsStep.php index 46d712c7d..a038f2395 100644 --- a/app/Livewire/Installer/Steps/RequirementsStep.php +++ b/app/Livewire/Installer/Steps/RequirementsStep.php @@ -2,6 +2,7 @@ namespace App\Livewire\Installer\Steps; +use App\Enums\TablerIcon; use Filament\Infolists\Components\TextEntry; use Filament\Notifications\Notification; use Filament\Schemas\Components\Section; @@ -20,7 +21,7 @@ class RequirementsStep $fields = [ Section::make(trans('installer.requirements.sections.version.title')) ->description(trans('installer.requirements.sections.version.or_newer', ['version' => self::MIN_PHP_VERSION])) - ->icon($correctPhpVersion ? 'tabler-check' : 'tabler-x') + ->icon($correctPhpVersion ? TablerIcon::Check : TablerIcon::X) ->iconColor($correctPhpVersion ? 'success' : 'danger') ->schema([ TextEntry::make('php_version') @@ -44,7 +45,7 @@ class RequirementsStep $fields[] = Section::make(trans('installer.requirements.sections.extensions.title')) ->description(implode(', ', array_keys($phpExtensions))) - ->icon($allExtensionsInstalled ? 'tabler-check' : 'tabler-x') + ->icon($allExtensionsInstalled ? TablerIcon::Check : TablerIcon::X) ->iconColor($allExtensionsInstalled ? 'success' : 'danger') ->schema([ TextEntry::make('all_extensions_installed') @@ -65,7 +66,7 @@ class RequirementsStep $fields[] = Section::make(trans('installer.requirements.sections.permissions.title')) ->description(implode(', ', array_keys($folderPermissions))) - ->icon($correctFolderPermissions ? 'tabler-check' : 'tabler-x') + ->icon($correctFolderPermissions ? TablerIcon::Check : TablerIcon::X) ->iconColor($correctFolderPermissions ? 'success' : 'danger') ->schema([ TextEntry::make('correct_folder_permissions') diff --git a/app/Livewire/Installer/Steps/SessionStep.php b/app/Livewire/Installer/Steps/SessionStep.php index 458721f05..e6a31d4ec 100644 --- a/app/Livewire/Installer/Steps/SessionStep.php +++ b/app/Livewire/Installer/Steps/SessionStep.php @@ -2,6 +2,7 @@ namespace App\Livewire\Installer\Steps; +use App\Enums\TablerIcon; use Filament\Forms\Components\TextInput; use Filament\Forms\Components\ToggleButtons; use Filament\Schemas\Components\Utilities\Get; @@ -23,7 +24,7 @@ class SessionStep ->schema([ ToggleButtons::make('env_session.SESSION_DRIVER') ->label(trans('installer.session.driver')) - ->hintIcon('tabler-question-mark', trans('installer.session.driver_help')) + ->hintIcon(TablerIcon::QuestionMark, trans('installer.session.driver_help')) ->required() ->inline() ->options(self::SESSION_DRIVERS) diff --git a/app/Livewire/NodeSystemInformation.php b/app/Livewire/NodeSystemInformation.php index e2545bd63..85c4ad45d 100644 --- a/app/Livewire/NodeSystemInformation.php +++ b/app/Livewire/NodeSystemInformation.php @@ -2,6 +2,7 @@ namespace App\Livewire; +use App\Enums\TablerIcon; use App\Models\Node; use Filament\Support\Enums\IconSize; use Filament\Tables\View\Components\Columns\IconColumnComponent\IconComponent; @@ -28,7 +29,7 @@ class NodeSystemInformation extends Component $tooltip = $exception ? 'Error connecting to node!
Check browser console for details.' : $version; - $icon = 'tabler-heart' . ($exception ? '-off' : 'beat'); + $icon = $exception ? TablerIcon::HeartOff : TablerIcon::Heartbeat; $color = $exception ? 'danger' : 'success'; return generate_icon_html($icon, attributes: (new ComponentAttributeBag()) @@ -46,7 +47,7 @@ class NodeSystemInformation extends Component public function placeholder(): string { - return generate_icon_html('tabler-heart-question', attributes: (new ComponentAttributeBag()) + return generate_icon_html(TablerIcon::HeartQuestion, attributes: (new ComponentAttributeBag()) ->color(IconComponent::class, 'warning'), size: IconSize::Large) ->toHtml(); } diff --git a/app/Models/ActivityLog.php b/app/Models/ActivityLog.php index 8947e83bd..31d2cc094 100644 --- a/app/Models/ActivityLog.php +++ b/app/Models/ActivityLog.php @@ -2,8 +2,10 @@ namespace App\Models; +use App\Enums\TablerIcon; use App\Events\ActivityLogged; use App\Traits\HasValidation; +use BackedEnum; use Carbon\Carbon; use Filament\Facades\Filament; use Filament\Support\Contracts\HasIcon; @@ -143,17 +145,17 @@ class ActivityLog extends Model implements HasIcon, HasLabel }); } - public function getIcon(): string + public function getIcon(): BackedEnum { if ($this->apiKey) { - return 'tabler-api'; + return TablerIcon::Api; } if ($this->actor instanceof User) { - return 'tabler-user'; + return TablerIcon::User; } - return $this->actor_id === null ? 'tabler-device-desktop' : 'tabler-user-off'; + return $this->actor_id === null ? TablerIcon::DeviceDesktop : TablerIcon::UserOff; } public function getLabel(): string diff --git a/app/Models/File.php b/app/Models/File.php index b5edced62..2e3170eb9 100644 --- a/app/Models/File.php +++ b/app/Models/File.php @@ -2,8 +2,10 @@ namespace App\Models; +use App\Enums\TablerIcon; use App\Livewire\AlertBanner; use App\Repositories\Daemon\DaemonFileRepository; +use BackedEnum; use Carbon\Carbon; use Closure; use Exception; @@ -100,21 +102,21 @@ class File extends Model return preg_match('/^image\/(?!svg\+xml)/', $this->mime_type); } - public function getIcon(): string + public function getIcon(): BackedEnum { if ($this->is_directory) { - return 'tabler-folder'; + return TablerIcon::Folder; } if ($this->isArchive()) { - return 'tabler-file-zip'; + return TablerIcon::FileZip; } if ($this->isImage()) { - return 'tabler-photo'; + return TablerIcon::Photo; } - return $this->is_symlink ? 'tabler-file-symlink' : 'tabler-file'; + return $this->is_symlink ? TablerIcon::FileSymlink : TablerIcon::File; } public function canEdit(): bool diff --git a/app/Models/Role.php b/app/Models/Role.php index baede714e..00afe267c 100644 --- a/app/Models/Role.php +++ b/app/Models/Role.php @@ -4,6 +4,8 @@ namespace App\Models; use App\Enums\RolePermissionModels; use App\Enums\RolePermissionPrefixes; +use App\Enums\TablerIcon; +use BackedEnum; use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Relations\BelongsToMany; @@ -61,9 +63,9 @@ class Role extends BaseRole ]; public const MODEL_ICONS = [ - 'health' => 'tabler-heart', - 'activityLog' => 'tabler-stack', - 'panelLog' => 'tabler-file-info', + 'health' => TablerIcon::Heart, + 'activityLog' => TablerIcon::Stack, + 'panelLog' => TablerIcon::FileInfo, ]; /** @var array> */ @@ -91,10 +93,10 @@ class Role extends BaseRole ]); } - /** @var array */ + /** @var array */ protected static array $customModelIcons = []; - public static function registerCustomModelIcon(string $model, string $icon): void + public static function registerCustomModelIcon(string $model, string|BackedEnum $icon): void { static::$customModelIcons[$model] = $icon; } @@ -144,7 +146,7 @@ class Role extends BaseRole return $allPermissions; } - public static function getModelIcon(string $model): ?string + public static function getModelIcon(string $model): null|string|BackedEnum { $customModels = array_merge(static::MODEL_ICONS, static::$customModelIcons); diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php index 4dc1deff3..4512c95a5 100644 --- a/app/Providers/Filament/AdminPanelProvider.php +++ b/app/Providers/Filament/AdminPanelProvider.php @@ -2,6 +2,7 @@ namespace App\Providers\Filament; +use App\Enums\TablerIcon; use App\Filament\Admin\Pages\ListLogs; use App\Filament\Admin\Pages\ViewLogs; use App\Services\Helpers\PluginService; @@ -25,7 +26,7 @@ class AdminPanelProvider extends PanelProvider Action::make('exit_admin') ->label(fn () => trans('profile.exit_admin')) ->url(fn () => Filament::getPanel('app')->getUrl()) - ->icon('tabler-arrow-back'), + ->icon(TablerIcon::ArrowBack), ]) ->navigationGroups([ NavigationGroup::make(fn () => trans('admin/dashboard.server')) @@ -44,7 +45,7 @@ class AdminPanelProvider extends PanelProvider ->viewLog(ViewLogs::class) ->navigationLabel(fn () => trans('admin/log.navigation.panel_logs')) ->navigationGroup(fn () => trans('admin/dashboard.advanced')) - ->navigationIcon('tabler-file-info'), + ->navigationIcon(TablerIcon::FileInfo), ]); /** @var PluginService $pluginService */ diff --git a/app/Providers/Filament/AppPanelProvider.php b/app/Providers/Filament/AppPanelProvider.php index e991a124b..84405c0c1 100644 --- a/app/Providers/Filament/AppPanelProvider.php +++ b/app/Providers/Filament/AppPanelProvider.php @@ -2,6 +2,7 @@ namespace App\Providers\Filament; +use App\Enums\TablerIcon; use App\Services\Helpers\PluginService; use Boquizo\FilamentLogViewer\FilamentLogViewerPlugin; use Filament\Actions\Action; @@ -22,7 +23,7 @@ class AppPanelProvider extends PanelProvider Action::make('to_admin') ->label(trans('profile.admin')) ->url(fn () => Filament::getPanel('admin')->getUrl()) - ->icon('tabler-arrow-forward') + ->icon(TablerIcon::ArrowForward) ->visible(fn () => user()?->canAccessPanel(Filament::getPanel('admin'))), ]) ->discoverResources(in: app_path('Filament/App/Resources'), for: 'App\\Filament\\App\\Resources') diff --git a/app/Providers/Filament/FilamentServiceProvider.php b/app/Providers/Filament/FilamentServiceProvider.php index cb793722b..788172eba 100644 --- a/app/Providers/Filament/FilamentServiceProvider.php +++ b/app/Providers/Filament/FilamentServiceProvider.php @@ -2,6 +2,7 @@ namespace App\Providers\Filament; +use App\Enums\TablerIcon; use Filament\Actions\DeleteAction; use Filament\Actions\View\ActionsIconAlias; use Filament\Forms\Components\Field; @@ -85,51 +86,51 @@ class FilamentServiceProvider extends ServiceProvider }); Select::configureUsing(fn (Select $select) => $select->native(false)); - DeleteAction::configureUsing(fn (DeleteAction $action) => $action->icon('tabler-trash')); + DeleteAction::configureUsing(fn (DeleteAction $action) => $action->icon(TablerIcon::Trash)); FilamentIcon::register([ - ActionsIconAlias::DELETE_ACTION => 'tabler-trash', - ActionsIconAlias::DETACH_ACTION => 'tabler-trash', - ActionsIconAlias::EDIT_ACTION => 'tabler-pencil', - ActionsIconAlias::VIEW_ACTION => 'tabler-eye', - ActionsIconAlias::REPLICATE_ACTION => 'tabler-copy-plus', + ActionsIconAlias::DELETE_ACTION => TablerIcon::Trash, + ActionsIconAlias::DETACH_ACTION => TablerIcon::Trash, + ActionsIconAlias::EDIT_ACTION => TablerIcon::Pencil, + ActionsIconAlias::VIEW_ACTION => TablerIcon::Eye, + ActionsIconAlias::REPLICATE_ACTION => TablerIcon::CopyPlus, - 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', + PanelsIconAlias::USER_MENU_LOGOUT_BUTTON => TablerIcon::Logout2, + PanelsIconAlias::USER_MENU_PROFILE_ITEM => TablerIcon::User, + PanelsIconAlias::THEME_SWITCHER_LIGHT_BUTTON => TablerIcon::Sun, + PanelsIconAlias::THEME_SWITCHER_DARK_BUTTON => TablerIcon::Moon, + PanelsIconAlias::THEME_SWITCHER_SYSTEM_BUTTON => TablerIcon::DeviceDesktop, + PanelsIconAlias::SIDEBAR_OPEN_DATABASE_NOTIFICATIONS_BUTTON => TablerIcon::Bell, + PanelsIconAlias::TOPBAR_OPEN_DATABASE_NOTIFICATIONS_BUTTON => TablerIcon::Bell, + PanelsIconAlias::GLOBAL_SEARCH_FIELD => TablerIcon::Search, + PanelsIconAlias::SIDEBAR_EXPAND_BUTTON => TablerIcon::ArrowRightDashed, + PanelsIconAlias::SIDEBAR_COLLAPSE_BUTTON => TablerIcon::ArrowLeftDashed, - TablesIconAlias::ACTIONS_FILTER => 'tabler-filters', - TablesIconAlias::SEARCH_FIELD => 'tabler-search', - TablesIconAlias::ACTIONS_COLUMN_MANAGER => 'tabler-columns', - TablesIconAlias::ACTIONS_OPEN_BULK_ACTIONS => 'tabler-box-multiple', + TablesIconAlias::ACTIONS_FILTER => TablerIcon::Filters, + TablesIconAlias::SEARCH_FIELD => TablerIcon::Search, + TablesIconAlias::ACTIONS_COLUMN_MANAGER => TablerIcon::Columns, + TablesIconAlias::ACTIONS_OPEN_BULK_ACTIONS => TablerIcon::BoxMultiple, - NotificationsIconAlias::DATABASE_MODAL_EMPTY_STATE => 'tabler-bell-off', - NotificationsIconAlias::NOTIFICATION_CLOSE_BUTTON => 'tabler-x', - NotificationsIconAlias::NOTIFICATION_INFO => 'tabler-info-circle', - NotificationsIconAlias::NOTIFICATION_SUCCESS => 'tabler-circle-check', - NotificationsIconAlias::NOTIFICATION_WARNING => 'tabler-alert-triangle', - NotificationsIconAlias::NOTIFICATION_DANGER => 'tabler-alert-circle', + NotificationsIconAlias::DATABASE_MODAL_EMPTY_STATE => TablerIcon::BellOff, + NotificationsIconAlias::NOTIFICATION_CLOSE_BUTTON => TablerIcon::X, + NotificationsIconAlias::NOTIFICATION_INFO => TablerIcon::InfoCircle, + NotificationsIconAlias::NOTIFICATION_SUCCESS => TablerIcon::CircleCheck, + NotificationsIconAlias::NOTIFICATION_WARNING => TablerIcon::AlertTriangle, + NotificationsIconAlias::NOTIFICATION_DANGER => TablerIcon::AlertCircle, - 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', + SupportIconAlias::MODAL_CLOSE_BUTTON => TablerIcon::X, + SupportIconAlias::BREADCRUMBS_SEPARATOR => TablerIcon::ChevronsRight, + SupportIconAlias::PAGINATION_NEXT_BUTTON => TablerIcon::ArrowRight, + SupportIconAlias::PAGINATION_PREVIOUS_BUTTON => TablerIcon::ArrowLeft, + SupportIconAlias::SECTION_COLLAPSE_BUTTON => TablerIcon::ChevronUp, - 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', + FormsIconAlias::COMPONENTS_KEY_VALUE_ACTIONS_DELETE => TablerIcon::Trash, + FormsIconAlias::COMPONENTS_REPEATER_ACTIONS_DELETE => TablerIcon::Trash, + FormsIconAlias::COMPONENTS_REPEATER_ACTIONS_EXPAND => TablerIcon::ChevronDown, + FormsIconAlias::COMPONENTS_REPEATER_ACTIONS_COLLAPSE => TablerIcon::ChevronUp, + FormsIconAlias::COMPONENTS_REPEATER_ACTIONS_REORDER => TablerIcon::ArrowsSort, - SchemaIconAlias::COMPONENTS_WIZARD_COMPLETED_STEP => 'tabler-check', + SchemaIconAlias::COMPONENTS_WIZARD_COMPLETED_STEP => TablerIcon::Check, ]); } diff --git a/app/Providers/Filament/ServerPanelProvider.php b/app/Providers/Filament/ServerPanelProvider.php index 55574d87b..cb543c15f 100644 --- a/app/Providers/Filament/ServerPanelProvider.php +++ b/app/Providers/Filament/ServerPanelProvider.php @@ -2,6 +2,7 @@ namespace App\Providers\Filament; +use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Servers\Pages\EditServer; use App\Filament\App\Resources\Servers\Pages\ListServers; use App\Http\Middleware\Activity\ServerSubject; @@ -24,11 +25,11 @@ class ServerPanelProvider extends PanelProvider ->userMenuItems([ Action::make('to_serverList') ->label(trans('profile.server_list')) - ->icon('tabler-brand-docker') + ->icon(TablerIcon::BrandDocker) ->url(fn () => ListServers::getUrl(panel: 'app')), Action::make('to_admin') ->label(trans('profile.admin')) - ->icon('tabler-arrow-forward') + ->icon(TablerIcon::ArrowForward) ->url(fn () => Filament::getPanel('admin')->getUrl()) ->visible(fn () => user()?->canAccessPanel(Filament::getPanel('admin'))), ]) @@ -36,7 +37,7 @@ class ServerPanelProvider extends PanelProvider NavigationItem::make(trans('server/console.open_in_admin')) ->url(fn () => EditServer::getUrl(['record' => Filament::getTenant()], panel: 'admin')) ->visible(fn () => user()?->canAccessPanel(Filament::getPanel('admin')) && user()->can('view server', Filament::getTenant())) - ->icon('tabler-arrow-back') + ->icon(TablerIcon::ArrowBack) ->sort(99), ]) ->discoverResources(in: app_path('Filament/Server/Resources'), for: 'App\\Filament\\Server\\Resources')