@radioactive-labs/plutonium 0.4.2 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,313 +1,311 @@
1
1
  /**
2
- * Slim Select Styles
3
- * Based on https://cdn.jsdelivr.net/npm/slim-select@2.10.0/dist/slimselect.min.css
4
- * Adapted for Flowbite with dark mode support
5
- */
6
-
7
- @layer components {
8
- :root {
9
- --ss-primary-color: theme('colors.primary.500');
10
- --ss-bg-color: theme('colors.white');
11
- --ss-font-color: theme('colors.gray.900');
12
- --ss-font-placeholder-color: theme('colors.gray.500');
13
- --ss-disabled-color: theme('colors.gray.100');
14
- --ss-border-color: theme('colors.gray.300');
15
- --ss-highlight-color: theme('colors.yellow.200');
16
- --ss-success-color: theme('colors.green.500');
17
- --ss-error-color: theme('colors.red.500');
18
- --ss-focus-color: theme('colors.primary.500');
2
+ * Slim Select with Tailwind CSS
3
+ * Overrides for theming with Tailwind colors and dark mode support
4
+ * Import this AFTER the original slim_select.css
5
+ */
6
+
7
+ /* Animation keyframes */
8
+ @keyframes ss-valueIn {
9
+ 0% {
10
+ transform: scale(0);
11
+ opacity: 0;
19
12
  }
20
13
 
21
- .dark {
22
- --ss-primary-color: theme('colors.primary.400');
23
- --ss-bg-color: theme('colors.gray.700');
24
- --ss-font-color: theme('colors.white');
25
- --ss-font-placeholder-color: theme('colors.gray.400');
26
- --ss-disabled-color: theme('colors.gray.800');
27
- --ss-border-color: theme('colors.gray.600');
28
- --ss-highlight-color: theme('colors.yellow.300');
29
- --ss-success-color: theme('colors.green.400');
30
- --ss-error-color: theme('colors.red.400');
31
- --ss-focus-color: theme('colors.primary.400');
14
+ 100% {
15
+ transform: scale(1);
16
+ opacity: 1;
32
17
  }
18
+ }
33
19
 
34
- @keyframes ss-valueIn {
35
- 0% {
36
- transform: scale(0);
37
- opacity: 0;
38
- }
20
+ @keyframes ss-valueOut {
21
+ 0% {
22
+ transform: scale(1);
23
+ opacity: 1;
24
+ }
39
25
 
40
- 100% {
41
- transform: scale(1);
42
- opacity: 1;
43
- }
26
+ 100% {
27
+ transform: scale(0);
28
+ opacity: 0;
44
29
  }
30
+ }
45
31
 
46
- @keyframes ss-valueOut {
47
- 0% {
48
- transform: scale(1);
49
- opacity: 1;
50
- }
32
+ /* Hide utility */
33
+ .ss-hide {
34
+ @apply !hidden;
35
+ }
51
36
 
52
- 100% {
53
- transform: scale(0);
54
- opacity: 0;
55
- }
56
- }
37
+ /* Main container - Updated to match form input theme */
38
+ .ss-main {
39
+ @apply flex flex-row relative select-none w-full min-h-8 p-2 cursor-pointer border border-gray-300 rounded-md shadow-sm font-medium text-sm bg-white text-gray-700 outline-none transition-colors duration-200 overflow-hidden focus:ring-2 focus:ring-primary-500 focus:border-primary-500 dark:bg-gray-700 dark:border-gray-600 dark:text-white dark:placeholder-gray-400;
40
+ }
57
41
 
58
- .ss-hide {
59
- display: none;
60
- }
42
+ .ss-main.ss-disabled {
43
+ @apply cursor-not-allowed bg-gray-100 text-gray-500 dark:bg-gray-900 dark:text-gray-400;
44
+ }
61
45
 
62
- .ss-main {
63
- @apply flex flex-row relative select-none w-full p-2 border rounded-md shadow-sm font-medium text-sm border-gray-300 bg-white text-gray-900 dark:bg-gray-700 dark:border-gray-600 dark:text-white focus:ring-primary-500 focus:border-primary-500 focus:outline-none cursor-pointer transition-colors duration-200 overflow-hidden;
64
- }
46
+ .ss-main.ss-disabled .ss-values .ss-value .ss-value-delete {
47
+ @apply cursor-not-allowed;
48
+ }
65
49
 
66
- .ss-main:focus {
67
- @apply ring-1 ring-primary-500 border-primary-500;
68
- }
50
+ .ss-main.ss-open-above {
51
+ @apply rounded-t-none;
52
+ }
69
53
 
70
- .ss-main.ss-disabled {
71
- @apply cursor-not-allowed bg-gray-100 dark:bg-gray-800 text-gray-500 dark:text-gray-400;
72
- }
54
+ .ss-main.ss-open-below {
55
+ @apply rounded-b-none;
56
+ }
73
57
 
74
- .ss-main.ss-open-above {
75
- @apply rounded-b-md rounded-t-none;
76
- }
58
+ /* Values container */
59
+ .ss-main .ss-values {
60
+ @apply inline-flex flex-wrap gap-1 flex-1;
61
+ }
77
62
 
78
- .ss-main.ss-open-below {
79
- @apply rounded-t-md rounded-b-none;
80
- }
63
+ .ss-main .ss-values .ss-placeholder {
64
+ @apply flex px-0 py-0 my-auto leading-none items-center w-full text-gray-400 overflow-hidden text-ellipsis whitespace-nowrap dark:text-gray-400;
65
+ }
81
66
 
82
- .ss-main .ss-values {
83
- @apply inline-flex flex-wrap gap-[5px] flex-1;
84
- }
67
+ .ss-main .ss-values .ss-max {
68
+ @apply flex select-none items-center w-fit text-xs text-white leading-none px-2 py-1 bg-primary-500 rounded;
69
+ }
85
70
 
86
- .ss-main .ss-values .ss-placeholder {
87
- @apply flex p-0 m-0 leading-normal items-center w-full text-gray-500 dark:text-gray-400 overflow-hidden truncate whitespace-nowrap;
88
- }
71
+ .ss-main .ss-values .ss-single {
72
+ @apply flex my-auto;
73
+ }
89
74
 
90
- .ss-main .ss-values .ss-max {
91
- @apply flex select-none items-center w-fit text-xs text-white dark:text-gray-900 leading-normal p-[3px_5px] bg-primary-500 rounded-md;
92
- }
75
+ .ss-main .ss-values .ss-value {
76
+ @apply flex select-none items-center w-fit bg-primary-500 rounded text-white;
77
+ animation: ss-valueIn 0.2s ease-out forwards;
78
+ }
93
79
 
94
- .ss-main .ss-values .ss-single {
95
- @apply flex m-0;
96
- }
80
+ .ss-main .ss-values .ss-value.ss-value-out {
81
+ animation: ss-valueOut 0.2s ease-out forwards;
82
+ }
97
83
 
98
- .ss-main .ss-values .ss-value {
99
- @apply flex select-none items-center w-fit bg-primary-500 rounded-md text-white;
100
- animation: ss-valueIn 0.2s ease-out forwards;
101
- }
84
+ .ss-main .ss-values .ss-value .ss-value-text {
85
+ @apply text-xs leading-none px-2 py-1;
86
+ }
102
87
 
103
- .ss-main .ss-values .ss-value.ss-value-out {
104
- animation: ss-valueOut 0.2s ease-out forwards;
105
- }
88
+ .ss-main .ss-values .ss-value .ss-value-delete {
89
+ @apply flex items-center h-2 w-2 px-2 py-1 cursor-pointer border-l border-solid border-white;
90
+ box-sizing: content-box;
91
+ }
106
92
 
107
- .ss-main .ss-values .ss-value .ss-value-text {
108
- @apply text-xs leading-normal p-[3px_5px];
109
- }
93
+ .ss-main .ss-values .ss-value .ss-value-delete svg {
94
+ @apply h-2 w-2;
95
+ }
110
96
 
111
- .ss-main .ss-values .ss-value .ss-value-delete {
112
- @apply flex items-center h-[7px] w-[7px] p-[3px_5px] cursor-pointer border-l border-solid border-white box-content;
113
- }
97
+ .ss-main .ss-values .ss-value .ss-value-delete svg path {
98
+ @apply fill-none stroke-white;
99
+ stroke-width: 18;
100
+ stroke-linecap: round;
101
+ stroke-linejoin: round;
102
+ }
114
103
 
115
- .ss-main .ss-values .ss-value .ss-value-delete svg {
116
- @apply h-[7px] w-[7px];
117
- }
104
+ /* Deselect button - Updated colors to match theme */
105
+ .ss-main .ss-deselect {
106
+ @apply flex-none flex items-center justify-center w-fit h-auto px-2;
107
+ }
118
108
 
119
- .ss-main .ss-values .ss-value .ss-value-delete svg path {
120
- @apply fill-none stroke-white;
121
- stroke-width: 18;
122
- stroke-linecap: round;
123
- stroke-linejoin: round;
124
- }
109
+ .ss-main .ss-deselect svg {
110
+ @apply w-2 h-2;
111
+ }
125
112
 
126
- .ss-main .ss-deselect {
127
- @apply flex-none flex items-center justify-center w-fit h-auto p-[0_5px];
128
- }
113
+ .ss-main .ss-deselect svg path {
114
+ @apply fill-none stroke-gray-700 dark:stroke-white;
115
+ stroke-width: 20;
116
+ stroke-linecap: round;
117
+ stroke-linejoin: round;
118
+ }
129
119
 
130
- .ss-main .ss-deselect svg {
131
- @apply w-[8px] h-[8px];
132
- }
120
+ /* Arrow - Updated colors */
121
+ .ss-main .ss-arrow {
122
+ @apply flex-none flex items-center justify-end w-3 h-3 mx-2 my-auto;
123
+ }
133
124
 
134
- .ss-main .ss-deselect svg path {
135
- @apply fill-none stroke-gray-500 dark:stroke-gray-400;
136
- stroke-width: 20;
137
- stroke-linecap: round;
138
- stroke-linejoin: round;
139
- }
125
+ .ss-main .ss-arrow path {
126
+ @apply fill-none stroke-gray-700 transition-transform duration-200 dark:stroke-white;
127
+ stroke-width: 18;
128
+ stroke-linecap: round;
129
+ stroke-linejoin: round;
130
+ }
140
131
 
141
- .ss-main .ss-arrow {
142
- @apply flex-none flex items-center justify-end w-4 h-4 m-auto;
143
- }
132
+ /* Content container - Updated to match shadow and borders */
133
+ .ss-content {
134
+ @apply absolute flex h-auto flex-col w-auto max-h-72 border border-gray-300 bg-white shadow-sm transition-all duration-200 opacity-0 z-[10000] overflow-hidden dark:bg-gray-700 dark:border-gray-600;
135
+ transform: scaleY(0);
136
+ transform-origin: top;
137
+ }
144
138
 
145
- .ss-main .ss-arrow path {
146
- @apply fill-none stroke-gray-500 dark:stroke-gray-400 transition-transform duration-200;
147
- stroke-width: 2;
148
- stroke-linecap: round;
149
- stroke-linejoin: round;
150
- }
139
+ .ss-content.ss-relative {
140
+ @apply relative h-full;
141
+ }
151
142
 
152
- .ss-content {
153
- @apply absolute flex h-auto flex-col w-auto max-h-[300px] box-border border rounded-b-md shadow-lg border-gray-300 bg-white dark:bg-gray-700 dark:border-gray-600 transition-all duration-200 opacity-0 z-[10000];
154
- transform: scaleY(0);
155
- transform-origin: top;
156
- }
143
+ .ss-content.ss-fixed {
144
+ @apply fixed;
145
+ }
157
146
 
158
- .ss-content.ss-relative {
159
- @apply relative h-full;
160
- }
147
+ .ss-content.ss-open-above {
148
+ @apply flex-col-reverse opacity-100 rounded-t-md;
149
+ transform: scaleY(1);
150
+ transform-origin: bottom;
151
+ }
161
152
 
162
- .ss-content.ss-fixed {
163
- @apply fixed;
164
- }
153
+ .ss-content.ss-open-below {
154
+ @apply opacity-100 rounded-b-md;
155
+ transform: scaleY(1);
156
+ transform-origin: top;
157
+ }
165
158
 
166
- .ss-content.ss-open-above {
167
- @apply flex-col-reverse opacity-100 rounded-t-md;
168
- transform: scaleY(1);
169
- transform-origin: bottom;
170
- }
159
+ /* Search - Updated to match form input styling */
160
+ .ss-content .ss-search {
161
+ @apply flex-none flex flex-row p-2;
162
+ }
171
163
 
172
- .ss-content.ss-open-below {
173
- @apply opacity-100 rounded-b-md;
174
- transform: scaleY(1);
175
- transform-origin: top;
176
- }
164
+ .ss-content .ss-search input {
165
+ @apply inline-flex flex-auto w-full min-w-0 p-2 m-0 border border-gray-300 rounded-md shadow-sm font-medium text-sm bg-white outline-none text-left placeholder:text-gray-400 focus:ring-2 focus:ring-primary-500 focus:border-primary-500 dark:bg-gray-700 dark:border-gray-600 dark:text-white dark:placeholder-gray-400;
166
+ box-sizing: border-box;
167
+ font-size: inherit;
168
+ line-height: inherit;
169
+ }
177
170
 
178
- .ss-content .ss-search {
179
- @apply flex-none flex flex-row p-2;
180
- }
171
+ .ss-content .ss-search .ss-addable {
172
+ @apply inline-flex justify-center items-center cursor-pointer flex-none h-auto ml-2 border border-gray-300 rounded-md shadow-sm dark:border-gray-600;
173
+ }
181
174
 
182
- .ss-content .ss-search input {
183
- @apply inline-flex text-base leading-normal flex-auto w-full min-w-0 p-2 m-0 border rounded-md shadow-sm font-medium text-sm border-gray-300 bg-gray-100 text-gray-900 placeholder-gray-400 dark:bg-gray-800 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white focus:ring-primary-500 focus:border-primary-500 focus:outline-none text-left box-border;
184
- }
175
+ .ss-content .ss-search .ss-addable svg {
176
+ @apply flex items-center justify-end flex-none w-3 h-3 mx-2 my-auto;
177
+ }
185
178
 
186
- .ss-content .ss-search .ss-addable {
187
- @apply inline-flex justify-center items-center cursor-pointer flex-none h-auto ml-2 border shadow-sm border-gray-300 dark:border-gray-600;
188
- }
179
+ .ss-content .ss-search .ss-addable svg path {
180
+ @apply fill-none stroke-gray-700 dark:stroke-white;
181
+ stroke-width: 18;
182
+ stroke-linecap: round;
183
+ stroke-linejoin: round;
184
+ }
189
185
 
190
- .ss-content .ss-search .ss-addable svg {
191
- @apply flex items-center justify-end flex-none w-4 h-4 m-2;
192
- }
186
+ /* List */
187
+ .ss-content .ss-list {
188
+ @apply flex-auto h-auto overflow-x-hidden overflow-y-auto;
189
+ }
193
190
 
194
- .ss-content .ss-search .ss-addable svg path {
195
- @apply fill-none stroke-gray-500 dark:stroke-gray-400;
196
- stroke-width: 2;
197
- stroke-linecap: round;
198
- stroke-linejoin: round;
199
- }
191
+ .ss-content .ss-list .ss-error {
192
+ @apply text-red-500 p-2 dark:text-red-400;
193
+ }
200
194
 
201
- .ss-content .ss-list {
202
- @apply flex-auto h-auto overflow-x-hidden overflow-y-auto;
203
- }
195
+ .ss-content .ss-list .ss-searching {
196
+ @apply text-gray-700 p-2 dark:text-white;
197
+ }
204
198
 
205
- .ss-content .ss-list .ss-error {
206
- @apply text-red-500 dark:text-red-400 p-2;
207
- }
199
+ .ss-content .ss-list .ss-optgroup.ss-close .ss-option {
200
+ @apply !hidden;
201
+ }
208
202
 
209
- .ss-content .ss-list .ss-searching {
210
- @apply text-gray-900 dark:text-white p-2;
211
- }
203
+ /* Option groups - Updated colors */
204
+ .ss-content .ss-list .ss-optgroup .ss-optgroup-label {
205
+ @apply flex flex-row items-center justify-between p-2 bg-gray-50 dark:bg-gray-600;
206
+ }
212
207
 
213
- .ss-content .ss-list .ss-optgroup.ss-close .ss-option {
214
- display: none;
215
- }
208
+ .ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-label-text {
209
+ @apply flex-auto font-bold text-gray-700 dark:text-white;
210
+ }
216
211
 
217
- /* Update the specific no results style */
218
- .ss-content .ss-list .ss-search {
219
- @apply flex-none text-sm text-gray-500 dark:text-gray-400 p-2 font-medium;
220
- }
212
+ .ss-content .ss-list .ss-optgroup .ss-optgroup-label:has(.ss-arrow) {
213
+ @apply cursor-pointer;
214
+ }
221
215
 
222
- /* The original search container styles should be scoped properly */
223
- .ss-content>.ss-search {
224
- @apply flex-none flex flex-row p-2;
225
- }
216
+ .ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions {
217
+ @apply flex-none flex flex-row items-center justify-center gap-1;
218
+ }
226
219
 
227
- .ss-content .ss-list .ss-optgroup .ss-optgroup-label {
228
- @apply flex flex-row items-center justify-between p-2 bg-gray-50 dark:bg-gray-800;
229
- }
220
+ .ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-selectall {
221
+ @apply flex-none flex flex-row cursor-pointer hover:opacity-50;
222
+ }
230
223
 
231
- .ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-label-text {
232
- @apply flex-auto font-bold text-gray-900 dark:text-white;
233
- }
224
+ .ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-selectall.ss-selected svg path {
225
+ @apply stroke-red-500 dark:stroke-red-400;
226
+ }
234
227
 
235
- .ss-content .ss-list .ss-optgroup .ss-optgroup-label:has(.ss-arrow) {
236
- @apply cursor-pointer;
237
- }
228
+ .ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-selectall span {
229
+ @apply flex-none flex items-center justify-center text-[60%] text-center pr-1;
230
+ }
238
231
 
239
- .ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions {
240
- @apply flex-none flex flex-row items-center justify-center gap-2;
241
- }
232
+ .ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-selectall svg {
233
+ @apply flex-none w-3 h-3;
234
+ }
242
235
 
243
- .ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-selectall {
244
- @apply flex-none flex flex-row cursor-pointer hover:opacity-50;
245
- }
236
+ .ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-selectall svg path {
237
+ @apply fill-none stroke-green-500 dark:stroke-green-400;
238
+ stroke-linecap: round;
239
+ stroke-linejoin: round;
240
+ }
246
241
 
247
- .ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-selectall.ss-selected svg path {
248
- @apply stroke-red-500 dark:stroke-red-400;
249
- }
242
+ .ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-selectall svg:first-child {
243
+ stroke-width: 5;
244
+ }
250
245
 
251
- .ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-selectall span {
252
- @apply flex-none flex items-center justify-center text-[60%] text-center pr-1;
253
- }
246
+ .ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-selectall svg:last-child {
247
+ stroke-width: 11;
248
+ }
254
249
 
255
- .ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-selectall svg {
256
- @apply flex-none w-[13px] h-[13px];
257
- }
250
+ .ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-closable {
251
+ @apply flex-none flex flex-row cursor-pointer;
252
+ }
258
253
 
259
- .ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-selectall svg path {
260
- @apply fill-none stroke-green-500 dark:stroke-green-400;
261
- stroke-linecap: round;
262
- stroke-linejoin: round;
263
- }
254
+ .ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-closable .ss-arrow {
255
+ @apply flex-auto w-2.5 h-2.5;
256
+ }
264
257
 
265
- .ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-selectall svg:first-child {
266
- stroke-width: 5;
267
- }
258
+ .ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-closable .ss-arrow path {
259
+ @apply fill-none stroke-gray-700 transition-transform duration-200 dark:stroke-white;
260
+ stroke-width: 18;
261
+ stroke-linecap: round;
262
+ stroke-linejoin: round;
263
+ }
268
264
 
269
- .ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-selectall svg:last-child {
270
- stroke-width: 11;
271
- }
265
+ .ss-content .ss-list .ss-optgroup .ss-option {
266
+ @apply p-1 pl-6;
267
+ }
272
268
 
273
- .ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-closable {
274
- @apply flex-none flex flex-row cursor-pointer;
275
- }
269
+ /* Options - Updated text colors to match theme */
270
+ .ss-content .ss-list .ss-option {
271
+ @apply block p-2 whitespace-normal text-gray-700 cursor-pointer select-none hover:bg-primary-500 hover:text-white dark:text-white dark:hover:bg-primary-500 dark:hover:text-white;
272
+ min-height: 0;
273
+ }
276
274
 
277
- .ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-closable .ss-arrow {
278
- @apply flex-auto w-[10px] h-[10px];
279
- }
275
+ .ss-content .ss-list .ss-option:empty {
276
+ @apply hidden p-0 m-0;
277
+ }
280
278
 
281
- .ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-closable .ss-arrow path {
282
- @apply fill-none stroke-gray-500 dark:stroke-gray-400 transition-transform duration-200;
283
- stroke-width: 2;
284
- stroke-linecap: round;
285
- stroke-linejoin: round;
286
- }
279
+ .ss-content .ss-list .ss-option.ss-highlighted,
280
+ .ss-content .ss-list .ss-option:not(.ss-disabled).ss-selected {
281
+ @apply text-white bg-primary-500;
282
+ }
287
283
 
288
- .ss-content .ss-list .ss-optgroup .ss-option {
289
- @apply p-2 pl-6;
290
- }
284
+ .ss-content .ss-list .ss-option.ss-disabled {
285
+ @apply cursor-not-allowed bg-gray-100 text-gray-500 dark:bg-gray-800 dark:text-gray-400;
286
+ }
291
287
 
292
- .ss-content .ss-list .ss-option {
293
- @apply block p-2 whitespace-normal text-gray-900 dark:text-white cursor-pointer select-none hover:bg-gray-100 dark:hover:bg-gray-600;
294
- min-height: 0;
295
- }
288
+ .ss-content .ss-list .ss-option.ss-disabled:hover {
289
+ @apply text-gray-500 bg-gray-100 dark:text-gray-400 dark:bg-gray-800;
290
+ }
296
291
 
297
- .ss-content .ss-list .ss-option:empty {
298
- @apply hidden p-0 m-0;
299
- }
292
+ .ss-content .ss-list .ss-option .ss-search-highlight {
293
+ @apply inline-block bg-yellow-200 dark:bg-yellow-300;
294
+ }
300
295
 
301
- .ss-content .ss-list .ss-option.ss-highlighted,
302
- .ss-content .ss-list .ss-option:not(.ss-disabled).ss-selected {
303
- @apply text-white dark:text-gray-900 bg-primary-500;
304
- }
296
+ /* Additional state classes to match form validation states */
297
+ .ss-main.ss-invalid {
298
+ @apply bg-red-50 border-red-500 dark:border-red-500 text-red-900 dark:text-red-500 focus:ring-red-500 focus:border-red-500;
299
+ }
305
300
 
306
- .ss-content .ss-list .ss-option.ss-disabled {
307
- @apply cursor-not-allowed bg-gray-100 dark:bg-gray-800 text-gray-500 dark:text-gray-400;
308
- }
301
+ .ss-main.ss-invalid .ss-values .ss-placeholder {
302
+ @apply text-red-700 dark:text-red-500;
303
+ }
309
304
 
310
- .ss-content .ss-list .ss-option .ss-search-highlight {
311
- @apply inline-block bg-yellow-200 dark:bg-yellow-300;
312
- }
305
+ .ss-main.ss-valid {
306
+ @apply bg-green-50 border-green-500 dark:border-green-500 text-green-900 dark:text-green-400 focus:ring-green-500 focus:border-green-500;
307
+ }
308
+
309
+ .ss-main.ss-valid .ss-values .ss-placeholder {
310
+ @apply text-green-700 dark:text-green-500;
313
311
  }