<?php namespace App\Enums; use Filament\Support\Contracts\HasColor; use Filament\Support\Contracts\HasIcon; use Filament\Support\Contracts\HasLabel; enum OrderStatus: string implements HasColor, HasIcon, HasLabel { case DRAFT = 'Draft'; case APPROVED = 'Approved'; case PRODUCTION = 'Production'; case SHIPPED = 'Shipped'; case READY_FOR_INVOICE = 'Ready for Invoice'; case INVOICED = 'Invoiced'; public function getLabel(): ?string { return $this->value; } public function getColor(): string|array|null { return match ($this) { self::DRAFT => 'gray', self::APPROVED => 'success', self::PRODUCTION => 'primary', self::SHIPPED => 'warning', self::READY_FOR_INVOICE => 'invoicing', self::INVOICED => 'invoiced', }; } public function getIcon(): ?string { return match ($this) { self::DRAFT => IconEnum::DRAFT->value, self::APPROVED => IconEnum::APPROVED->value, self::PRODUCTION => IconEnum::PRODUCTION->value, self::SHIPPED => IconEnum::SHIPPED->value, self::READY_FOR_INVOICE => IconEnum::INVOICING->value, self::INVOICED => IconEnum::INVOICED->value, }; } }