|
2 | 2 |
|
3 | 3 | namespace Elegantly\Kit\Ui; |
4 | 4 |
|
5 | | -use Stringable; |
6 | | - |
7 | | -class Base implements Stringable |
| 5 | +class Base extends Ui |
8 | 6 | { |
9 | | - public string $class; |
10 | | - |
11 | 7 | public ?string $color = null; |
12 | 8 |
|
13 | 9 | public ?string $size = null; |
14 | 10 |
|
15 | | - final public function __construct( |
16 | | - ?string $class = null |
17 | | - ) { |
18 | | - $this->class = $class ?? ''; |
19 | | - } |
20 | | - |
21 | | - public static function make( |
22 | | - ?string $class = null |
23 | | - ): static { |
24 | | - return new static($class); |
25 | | - } |
26 | | - |
27 | | - /** |
28 | | - * @return $this |
29 | | - */ |
30 | | - public function append(string $value): static |
31 | | - { |
32 | | - |
33 | | - if ($value) { |
34 | | - $this->class .= " {$value}"; |
35 | | - } |
36 | | - |
37 | | - return $this; |
38 | | - } |
39 | | - |
40 | 11 | /** |
41 | 12 | * @return $this |
42 | 13 | */ |
@@ -64,21 +35,21 @@ public function background(): static |
64 | 35 | { |
65 | 36 | return $this->append(match ($this->color) { |
66 | 37 | 'white' => 'bg-white text-black ring-gray-200 ring-1 ring-inset dark:bg-zinc-800 dark:text-white dark:ring-zinc-700', |
67 | | - 'black' => 'bg-black text-white ring-black dark:bg-white dark:text-black', |
| 38 | + 'black' => 'bg-black text-white ring-black dark:bg-white dark:text-black placeholder:text-white/60', |
68 | 39 | 'gray' => 'bg-gray-100 text-gray-600 ring-gray-100', |
69 | 40 | 'gray-light' => 'bg-gray-400/20 text-gray-800 ring-gray-400/20', |
70 | | - 'sky' => 'bg-sky-500 text-white ring-sky-500', |
71 | | - 'sky-light' => 'bg-sky-400/20 text-sky-800 ring-sky-400/20', |
72 | | - 'emerald' => 'bg-emerald-500 text-white ring-emerald-500', |
73 | | - 'emerald-light' => 'bg-emerald-400/20 text-emerald-800 ring-emerald-400/20', |
74 | | - 'rose' => 'bg-rose-500 text-white ring-rose-500', |
75 | | - 'rose-light' => 'bg-rose-400/20 text-rose-800 ring-rose-400/20', |
76 | | - 'purple' => 'bg-purple-500 text-white ring-purple-500', |
77 | | - 'purple-light' => 'bg-purple-400/20 text-purple-800 ring-purple-400/20', |
78 | | - 'yellow' => 'bg-yellow-500 text-white ring-yellow-400/20', |
79 | | - 'yellow-light' => 'bg-yellow-400/20 text-yellow-800 ring-yellow-400/20', |
80 | | - 'amber' => 'bg-amber-500 text-white ring-amber-400/20', |
81 | | - 'amber-light' => 'bg-amber-400/20 text-amber-800 ring-amber-400/20', |
| 41 | + 'sky' => 'bg-sky-500 text-white ring-sky-500 placeholder:text-white/60', |
| 42 | + 'sky-light' => 'bg-sky-400/20 text-sky-800 ring-sky-400/20 placeholder:text-sky-800/40', |
| 43 | + 'emerald' => 'bg-emerald-500 text-white ring-emerald-500 placeholder:text-white/60', |
| 44 | + 'emerald-light' => 'bg-emerald-400/20 text-emerald-800 ring-emerald-400/20 placeholder:text-emerald-800/40', |
| 45 | + 'rose' => 'bg-rose-500 text-white ring-rose-500 placeholder:text-white/60', |
| 46 | + 'rose-light' => 'bg-rose-400/20 text-rose-800 ring-rose-400/20 placeholder:text-rose-800/40', |
| 47 | + 'purple' => 'bg-purple-500 text-white ring-purple-500 placeholder:text-white/60', |
| 48 | + 'purple-light' => 'bg-purple-400/20 text-purple-800 ring-purple-400/20 placeholder:text-purple-800/40', |
| 49 | + 'yellow' => 'bg-yellow-500 text-white ring-yellow-400/20 placeholder:text-white/60', |
| 50 | + 'yellow-light' => 'bg-yellow-400/20 text-yellow-800 ring-yellow-400/20 placeholder:text-yellow-800/40', |
| 51 | + 'amber' => 'bg-amber-500 text-white ring-amber-400/20 placeholder:text-white/60', |
| 52 | + 'amber-light' => 'bg-amber-400/20 text-amber-800 ring-amber-400/20 placeholder:text-amber-800/40', |
82 | 53 | 'glass' => 'bg-white/50 text-black ring-white ring-1 ring-inset', |
83 | 54 | 'transparent' => 'bg-transparent text-inherit border-transparent', |
84 | 55 | default => '' |
@@ -113,6 +84,62 @@ public function outline(): static |
113 | 84 | }); |
114 | 85 | } |
115 | 86 |
|
| 87 | + /** |
| 88 | + * @return $this |
| 89 | + */ |
| 90 | + public function border(): static |
| 91 | + { |
| 92 | + return $this->append(match ($this->color) { |
| 93 | + 'white' => '', |
| 94 | + 'black' => 'border-black', |
| 95 | + 'gray' => 'border-gray-200', |
| 96 | + 'gray-light' => 'border-gray-100', |
| 97 | + 'sky' => 'border-sky-600', |
| 98 | + 'sky-light' => 'border-sky-500', |
| 99 | + 'emerald' => 'border-emerald-600', |
| 100 | + 'emerald-light' => 'border-emerald-500', |
| 101 | + 'rose' => 'border-rose-600', |
| 102 | + 'rose-light' => 'border-rose-500', |
| 103 | + 'purple' => 'border-purple-600', |
| 104 | + 'purple-light' => 'border-purple-500', |
| 105 | + 'yellow' => 'border-yellow-600', |
| 106 | + 'yellow-light' => 'border-yellow-500', |
| 107 | + 'amber' => 'border-amber-600', |
| 108 | + 'amber-light' => 'border-amber-500', |
| 109 | + 'glass' => 'border-white', |
| 110 | + 'transparent' => 'border-transparent', |
| 111 | + default => '' |
| 112 | + }); |
| 113 | + } |
| 114 | + |
| 115 | + /** |
| 116 | + * @return $this |
| 117 | + */ |
| 118 | + public function ring(): static |
| 119 | + { |
| 120 | + return $this->append(match ($this->color) { |
| 121 | + 'white' => '', |
| 122 | + 'black' => 'ring-black', |
| 123 | + 'gray' => 'ring-gray-300', |
| 124 | + 'gray-light' => 'ring-gray-100', |
| 125 | + 'sky' => 'ring-sky-600', |
| 126 | + 'sky-light' => 'ring-sky-500', |
| 127 | + 'emerald' => 'ring-emerald-600', |
| 128 | + 'emerald-light' => 'ring-emerald-500', |
| 129 | + 'rose' => 'ring-rose-600', |
| 130 | + 'rose-light' => 'ring-rose-500', |
| 131 | + 'purple' => 'ring-purple-600', |
| 132 | + 'purple-light' => 'ring-purple-500', |
| 133 | + 'yellow' => 'ring-yellow-600', |
| 134 | + 'yellow-light' => 'ring-yellow-500', |
| 135 | + 'amber' => 'ring-amber-600', |
| 136 | + 'amber-light' => 'ring-amber-500', |
| 137 | + 'glass' => 'ring-white', |
| 138 | + 'transparent' => 'ring-transparent', |
| 139 | + default => '' |
| 140 | + }); |
| 141 | + } |
| 142 | + |
116 | 143 | /** |
117 | 144 | * @return $this |
118 | 145 | */ |
@@ -144,9 +171,4 @@ public function spacing(): static |
144 | 171 | default => '' |
145 | 172 | }); |
146 | 173 | } |
147 | | - |
148 | | - public function __toString(): string |
149 | | - { |
150 | | - return (string) $this->class; |
151 | | - } |
152 | 174 | } |
0 commit comments