You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

PrimaryColor.php 2.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. namespace App\Enums;
  3. use App\Enums\Concerns\Utilities;
  4. use Filament\Support\Colors\Color;
  5. use Filament\Support\Contracts\HasColor;
  6. use Spatie\Color\Rgb;
  7. use UnexpectedValueException;
  8. enum PrimaryColor: string implements HasColor
  9. {
  10. use Utilities;
  11. case Slate = 'slate';
  12. case Gray = 'gray';
  13. case Zinc = 'zinc';
  14. case Neutral = 'neutral';
  15. case Stone = 'stone';
  16. case Red = 'red';
  17. case Orange = 'orange';
  18. case Amber = 'amber';
  19. case Yellow = 'yellow';
  20. case Lime = 'lime';
  21. case Green = 'green';
  22. case Emerald = 'emerald';
  23. case Teal = 'teal';
  24. case Cyan = 'cyan';
  25. case Sky = 'sky';
  26. case Blue = 'blue';
  27. case Indigo = 'indigo';
  28. case Violet = 'violet';
  29. case Purple = 'purple';
  30. case Fuchsia = 'fuchsia';
  31. case Pink = 'pink';
  32. case Rose = 'rose';
  33. public const DEFAULT = self::Indigo->value;
  34. public function getColor(): string|array|null
  35. {
  36. return match ($this) {
  37. self::Slate => Color::Slate,
  38. self::Gray => Color::Gray,
  39. self::Zinc => Color::Zinc,
  40. self::Neutral => Color::Neutral,
  41. self::Stone => Color::Stone,
  42. self::Red => Color::Red,
  43. self::Orange => Color::Orange,
  44. self::Amber => Color::Amber,
  45. self::Yellow => Color::Yellow,
  46. self::Lime => Color::Lime,
  47. self::Green => Color::Green,
  48. self::Emerald => Color::Emerald,
  49. self::Teal => Color::Teal,
  50. self::Cyan => Color::Cyan,
  51. self::Sky => Color::Sky,
  52. self::Blue => Color::Blue,
  53. self::Indigo => Color::Indigo,
  54. self::Violet => Color::Violet,
  55. self::Purple => Color::Purple,
  56. self::Fuchsia => Color::Fuchsia,
  57. self::Pink => Color::Pink,
  58. self::Rose => Color::Rose,
  59. };
  60. }
  61. /**
  62. * @throws UnexpectedValueException
  63. */
  64. public function getHexCode(): string
  65. {
  66. $colorArray = $this->getColor();
  67. if ($colorArray !== null && isset($colorArray[600])) {
  68. $rgbToString = $colorArray[600];
  69. return Rgb::fromString("rgb({$rgbToString})")->toHex();
  70. }
  71. throw new UnexpectedValueException("The color {$this->value} does not have a hex code.");
  72. }
  73. }