53 lines
1.3 KiB
PHP
53 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Enums;
|
|
|
|
use App\Traits\Enum\WithComment;
|
|
use Filament\Support\Contracts\HasLabel;
|
|
|
|
enum Channel: string implements HasLabel
|
|
{
|
|
use WithComment;
|
|
|
|
case WEBSITE = 'website';
|
|
case TIKTOK = 'tiktok';
|
|
case YOUTUBE = 'youtube';
|
|
case FACEBOOK = 'facebook';
|
|
case INSTAGRAM = 'instagram';
|
|
case TWITTER = 'twitter';
|
|
case OTHER = 'other';
|
|
|
|
public function getLabel(): ?string
|
|
{
|
|
return match ($this) {
|
|
self::WEBSITE => 'Website',
|
|
self::TIKTOK => 'Tiktok',
|
|
self::YOUTUBE => 'Youtube',
|
|
self::FACEBOOK => 'Facebook',
|
|
self::INSTAGRAM => 'Instagram',
|
|
self::TWITTER => 'Twitter',
|
|
self::OTHER => 'Other',
|
|
};
|
|
}
|
|
|
|
public function getColor(): string
|
|
{
|
|
return match ($this) {
|
|
self::WEBSITE => 'info',
|
|
self::TIKTOK => 'success',
|
|
self::YOUTUBE => 'warning',
|
|
self::FACEBOOK => 'danger',
|
|
self::INSTAGRAM => 'primary',
|
|
self::TWITTER => 'secondary',
|
|
self::OTHER => 'gray',
|
|
};
|
|
}
|
|
|
|
public static function options(): array
|
|
{
|
|
return collect(self::cases())
|
|
->mapWithKeys(fn ($case) => [$case->value => $case->getLabel()])
|
|
->toArray();
|
|
}
|
|
}
|