ui-lab-theme-onyx 0.3.45 → 0.3.47

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/styles.css +559 -383
package/styles.css CHANGED
@@ -1,4 +1,3 @@
1
- /* Onyx Theme - Button Styles */
2
1
 
3
2
  :root {
4
3
  --spacing: 0.25rem;
@@ -17,7 +16,6 @@
17
16
 
18
17
 
19
18
  @layer components {
20
- /* Universal variants (token presets) */
21
19
  [data-ring="true"] {
22
20
  --ring: #0f74c5;
23
21
  --ring-width: 2px;
@@ -31,15 +29,21 @@
31
29
  --background: var(--background-800);
32
30
  --foreground: var(--foreground-200);
33
31
  --background-border: var(--background-700);
34
- --background-hover: color-mix(in srgb, var(--background-600) 50%, var(--background-950));
35
- --background-hover-border: var(--background-600);
36
- --background-pressed: color-mix(in srgb, var(--background-600) 60%, var(--background-950));
37
- --background-pressed-border: var(--background-600);
38
32
  --focus-visible: var(--accent-400);
39
33
  font-size: var(--text-xs);
40
34
  }
41
35
 
42
- .button.sq { @apply aspect-square inline-flex items-center justify-center }
36
+ .button[data-hovered="true"]:not([data-disabled="true"]) {
37
+ --background: color-mix(in srgb, var(--background-600) 50%, var(--background-950));
38
+ --background-border: var(--background-600);
39
+ }
40
+
41
+ .button[data-pressed="true"]:not([data-disabled="true"]) {
42
+ --background: color-mix(in srgb, var(--background-600) 60%, var(--background-950));
43
+ --background-border: var(--background-600);
44
+ }
45
+
46
+ .button.icon { @apply p-[5px] aspect-square inline-flex items-center justify-center }
43
47
  .button.sm { @apply px-2.5 py-1.5 text-xs font-semibold }
44
48
  .button.md { @apply px-3 py-1.5 }
45
49
  .button.lg { @apply px-10 py-2 }
@@ -62,17 +66,20 @@
62
66
  --foreground-muted: var(--foreground-300);
63
67
  }
64
68
 
65
- /* Expand Styles */
69
+ .expand > .trigger {
70
+ --background: transparent;
71
+ --foreground: var(--foreground-50);
72
+ }
66
73
 
67
- .expand {
68
- --trigger-background: transparent;
69
- --trigger-background-hover: var(--background-900);
70
- --trigger-foreground: var(--foreground-50);
71
- --content-background: transparent;
72
- --content-foreground: var(--foreground-300);
74
+ .expand > .trigger[data-hovered="true"]:not([data-disabled="true"]),
75
+ .expand > .trigger:hover:not([data-disabled="true"]) {
76
+ --background: var(--background-900);
73
77
  }
74
78
 
75
- /* Card Styles */
79
+ .expand > .content {
80
+ --background: transparent;
81
+ --foreground: var(--foreground-300);
82
+ }
76
83
 
77
84
  .card {
78
85
  --background: var(--background-900);
@@ -90,57 +97,91 @@
90
97
  --background-border: var(--background-700);
91
98
  }
92
99
 
93
- /* List Styles */
94
-
95
100
  .list {
96
101
  --foreground: var(--foreground-50);
97
- --background-hover: color-mix(in srgb, var(--background-500) 6%, transparent);
98
- --background-highlighted: color-mix(in srgb, var(--background-500) 6%, transparent);
99
- --item-background: transparent;
100
- --item-background-hover: var(--background-hover);
101
- --item-background-highlighted: var(--background-highlighted);
102
102
  --header-title-foreground: var(--foreground-50);
103
103
  --header-subtitle-foreground: var(--foreground-400);
104
104
  --desc-foreground: var(--foreground-400);
105
- --action-foreground: var(--foreground-400);
106
- --action-foreground-hover: var(--foreground-50);
107
- --action-background-hover: var(--background-hover);
108
105
  }
109
106
 
110
- /* Group Styles */
107
+ .list > [role="listitem"] {
108
+ --background: transparent;
109
+ --foreground: var(--foreground-50);
110
+ }
111
+
112
+ .list > [role="listitem"]:hover:not([data-disabled="true"]) {
113
+ --background: color-mix(in srgb, var(--background-500) 6%, transparent);
114
+ }
115
+
116
+ .list[data-keyboard-mode="true"] > [role="listitem"][data-highlighted="true"] {
117
+ --background: color-mix(in srgb, var(--background-500) 6%, transparent);
118
+ }
119
+
120
+ .list > [role="listitem"][data-selected="true"] {
121
+ --background: color-mix(in srgb, var(--background-500) 10%, transparent);
122
+ }
123
+
124
+ .list > [role="listitem"][data-selected="true"]:hover:not([data-disabled="true"]),
125
+ .list[data-keyboard-mode="true"] > [role="listitem"][data-selected="true"][data-highlighted="true"] {
126
+ --background: color-mix(in srgb, var(--background-500) 14%, transparent);
127
+ }
128
+
129
+ .list > [role="listitem"] > [data-actions] button {
130
+ --background: transparent;
131
+ --foreground: var(--foreground-400);
132
+ }
133
+
134
+ .list > [role="listitem"] > [data-actions] button:hover:not([data-disabled="true"]) {
135
+ --background: color-mix(in srgb, var(--background-500) 6%, transparent);
136
+ --foreground: var(--foreground-50);
137
+ }
111
138
 
112
139
  .group {
113
140
  --background: var(--background-950);
114
141
  --background-border: var(--background-700);
115
- --group-background: var(--background);
116
- --group-foreground: var(--foreground);
117
- --group-border: var(--background-border);
118
- --group-hover: var(--background-hover, var(--group-background));
119
- --group-pressed: var(--background-pressed, var(--group-hover));
120
- --group-divider-background: var(--group-border);
121
- --group-input-background: var(--group-background);
122
- --group-input-foreground: var(--group-foreground);
123
- --group-input-border-width: 0px;
124
- --group-input-border: transparent;
125
- --group-input-hover-border: var(--group-input-border);
126
- --group-input-focused-border: var(--group-input-border);
127
- }
128
-
129
- .group.outline {
130
- --group-divider-background: var(--background-border);
131
- --group-input-background: transparent;
132
- }
133
-
134
- .group .button {
142
+ }
143
+
144
+ .group > .input,
145
+ .group > .item > .input {
146
+ --background: var(--background-950);
147
+ --background-border: var(--background-700);
148
+ }
149
+
150
+ .group > .divider,
151
+ .group > .item > .divider {
152
+ --background: var(--background-border);
153
+ }
154
+
155
+ .group.outline > .divider,
156
+ .group.outline > .item > .divider {
157
+ --background: var(--background-border);
158
+ }
159
+
160
+ .group.outline > .input,
161
+ .group.outline > .item > .input {
162
+ --background: transparent;
163
+ }
164
+
165
+ .group > .button,
166
+ .group > .item > .button {
135
167
  --button-selected-background: var(--background-800);
136
168
  --button-selected-foreground: var(--foreground-100);
137
169
  }
138
170
 
139
- /* Command Styles */
171
+ .group > .select > .value > .button,
172
+ .group > .item > .select > .value > .button {
173
+ height: 100%;
174
+ padding-inline: calc(var(--spacing) * 3) !important;
175
+ border-radius: var(--background-inner-radius) 0 0 var(--background-inner-radius);
176
+ }
177
+
178
+ .group > .select > .value,
179
+ .group > .item > .select > .value {
180
+ padding-inline: calc(var(--spacing) * 1.5);
181
+ }
182
+
140
183
  .command {
141
184
  --background: var(--background-900);
142
- --background-hover: var(--background-800);
143
- --background-pressed: var(--background-800);
144
185
  --background-list: var(--background-950);
145
186
  --background-footer: var(--background-800);
146
187
  --border: var(--background-700);
@@ -151,8 +192,19 @@
151
192
  --shadow: 0 20px 25px -5px rgb(0 0 0 / 0.35);
152
193
  }
153
194
 
195
+ .command > .content .scroll [role="listbox"] > .item,
196
+ .command > .content .scroll [role="listbox"] > div > div > .item {
197
+ --background: transparent;
198
+ --foreground: var(--foreground-300);
199
+ }
200
+
201
+ .command > .content .scroll [role="listbox"] > .item:hover,
202
+ .command > .content .scroll [role="listbox"] > .item[data-highlighted="true"],
203
+ .command > .content .scroll [role="listbox"] > div > div > .item:hover,
204
+ .command > .content .scroll [role="listbox"] > div > div > .item[data-highlighted="true"] {
205
+ --background: var(--background-800);
206
+ }
154
207
 
155
- /* Date Styles */
156
208
 
157
209
  .date {
158
210
  --background: var(--background-950);
@@ -160,123 +212,151 @@
160
212
  --focus-ring: var(--foreground-300);
161
213
  }
162
214
 
163
- .date .date-header {
164
- --header-color: var(--foreground-300);
215
+ .date > .header {
216
+ --foreground: var(--foreground-300);
165
217
  }
166
218
 
167
- .date .date-day-headers {
168
- --day-headers-background: var(--background-900);
219
+ .date > .day-headers {
220
+ --background: var(--background-900);
169
221
  }
170
222
 
171
- .date .date-day-header {
172
- --day-header-color: var(--foreground-400);
223
+ .date > .day-headers > .day-header,
224
+ .date > .grid > .day-header {
225
+ --foreground: var(--foreground-400);
173
226
  }
174
227
 
175
- .date .date-nav-button {
176
- --nav-button-color: var(--foreground-400);
177
- --nav-button-background-hover: var(--background-800);
228
+ .date > .header > div > .nav-button {
229
+ --background: transparent;
230
+ --foreground: var(--foreground-400);
178
231
  }
179
232
 
180
- .date .date-grid {
181
- --grid-background: var(--background-900);
233
+ .date > .header > div > .nav-button:hover:not([data-disabled="true"]) {
234
+ --background: var(--background-800);
182
235
  }
183
236
 
184
- .date .date-day {
185
- --cell-text: var(--foreground-300);
237
+ .date > .grid {
238
+ --background: var(--background-900);
239
+ }
240
+
241
+ .date > .grid > .day {
242
+ --background: transparent;
243
+ --foreground: var(--foreground-300);
186
244
  }
187
245
 
188
- .date .date-day[data-selected="true"] {
189
- --cell-background: var(--background-800);
190
- --cell-text: var(--foreground-50);
246
+ .date > .grid > .day[data-selected="true"] {
247
+ --background: var(--background-800);
248
+ --foreground: var(--foreground-50);
191
249
  }
192
250
 
193
- .date .date-day[data-today="true"] {
194
- --cell-background: var(--background-800);
195
- --cell-text: var(--foreground-50);
251
+ .date > .grid > .day[data-today="true"] {
252
+ --background: var(--background-800);
253
+ --foreground: var(--foreground-50);
196
254
  }
197
255
 
198
- .date .date-day[data-disabled="true"],
199
- .date .date-day[data-out-of-range="true"] {
200
- --cell-text: var(--foreground-400);
256
+ .date > .grid > .day[data-disabled="true"],
257
+ .date > .grid > .day[data-out-of-range="true"] {
258
+ --foreground: var(--foreground-400);
201
259
  }
202
260
 
203
- .date .date-day:hover:not([data-disabled="true"]):not([data-out-of-range="true"]) {
204
- --hover-transition-duration: var(--hover-transition-enter-duration, 0ms);
205
- --cell-background: var(--background-800);
261
+ .date > .grid > .day[data-hovered="true"]:not([data-disabled="true"]):not([data-out-of-range="true"]),
262
+ .date > .grid > .day:hover:not([data-disabled="true"]):not([data-out-of-range="true"]) {
263
+ --background: var(--background-800);
206
264
  }
207
265
 
208
- /* Table Styles */
266
+ .date > .grid > .day[data-selected="true"][data-hovered="true"]:not([data-disabled="true"]):not([data-out-of-range="true"]),
267
+ .date > .grid > .day[data-selected="true"]:hover:not([data-disabled="true"]):not([data-out-of-range="true"]) {
268
+ --background: var(--background-800);
269
+ --foreground: var(--foreground-50);
270
+ }
209
271
 
210
272
  .table {
211
273
  --background: var(--background-950);
212
274
  --foreground: var(--foreground-300);
213
275
  --border: var(--background-700);
214
- --background-hover: var(--background-800);
215
- --background-selected: var(--background-800);
216
- --body-background-hover: var(--background-hover);
217
- --row-selected-background: var(--background-selected);
218
- --cell-background: transparent;
219
- --cell-foreground: var(--foreground-300);
220
- --filter-background: var(--background-900);
221
- --filter-border: var(--border);
222
- --empty-foreground: var(--foreground-400);
223
276
  --focus-ring: var(--foreground-300);
224
277
  }
225
278
 
226
- .table .header,
227
- .table .header-cell {
228
- --header-background: var(--background-900);
229
- --header-foreground: var(--foreground-400);
279
+ .table > .container > .element > .header,
280
+ .table > .container > .element > .header > .header-row > .header-cell {
281
+ --background: var(--background-900);
282
+ --foreground: var(--foreground-400);
283
+ }
284
+
285
+ .table > .container > .element > .body,
286
+ .table > .container > .element {
287
+ --background: var(--background-900);
288
+ }
289
+
290
+ .table > .container > .element > .body > .row > .cell {
291
+ --background: transparent;
292
+ --foreground: var(--foreground-300);
230
293
  }
231
294
 
232
- .table .body,
233
- .table .element {
234
- --body-background: var(--background-900);
295
+ .table > .container > .element > .body > .row:hover:not([data-disabled="true"]) > .cell {
296
+ --background: var(--background-800);
235
297
  }
236
298
 
237
- .table .filter-grid {
238
- --filter-grid-background: var(--background-900);
299
+ .table > .container > .element > .body > .row[data-selected="true"] > .cell {
300
+ --background: var(--background-800);
239
301
  }
240
302
 
241
- .table .filter-label {
242
- --filter-label-foreground: var(--foreground-400);
303
+ .table > .container > .element > .body > .row[data-selected="true"]:hover:not([data-disabled="true"]) > .cell {
304
+ --background: var(--background-800);
243
305
  }
244
306
 
245
- /* Checkbox Styles */
307
+ .table > .filter-bar {
308
+ --background: var(--background-900);
309
+ }
310
+
311
+ .table > .filter-bar > .filter-grid {
312
+ --background: var(--background-900);
313
+ }
314
+
315
+ .table > .filter-bar > .filter-grid > div > .filter-label {
316
+ --foreground: var(--foreground-400);
317
+ }
318
+
319
+ .table > .container > .element > .body > .empty-row > .empty-state {
320
+ --foreground: var(--foreground-400);
321
+ }
246
322
 
247
323
  .checkbox {
248
324
  --background: var(--background-900);
249
325
  --background-border: var(--background-700);
250
- --background-hover: color-mix(in srgb, var(--background-500) 10%, var(--background-900));
251
- --background-hover-border: var(--background-600);
252
326
  --ring: var(--accent-500);
327
+ --helper-foreground: var(--foreground-400);
328
+ --helper-error-foreground: var(--danger-600);
329
+ }
330
+
331
+ .checkbox:hover:not([data-disabled="true"]) {
332
+ --background: color-mix(in srgb, var(--background-500) 10%, var(--background-900));
333
+ --background-border: var(--background-600);
253
334
  }
254
335
 
255
336
  .checkbox[data-selected="true"] {
256
- --background-selected: var(--foreground-200);
257
- --background-selected-border: var(--foreground-200);
258
- --background-hover: var(--foreground-300);
259
- --background-hover-border: var(--foreground-300);
337
+ --background: var(--background-900);
338
+ --background-border: var(--background-700);
260
339
  }
261
340
 
262
- .checkbox[data-indeterminate="true"] {
263
- --background-indeterminate: var(--foreground-200);
264
- --background-indeterminate-border: var(--foreground-200);
265
- --background-hover: var(--foreground-300);
266
- --background-hover-border: var(--foreground-300);
341
+ .checkbox[data-selected="true"]:hover:not([data-disabled="true"]) {
342
+ --background: var(--background-800);
343
+ --background-border: var(--background-600);
267
344
  }
268
345
 
269
- .checkbox .checkmark,
270
- .checkbox .indeterminate {
271
- --icon-foreground: color-mix(in srgb, var(--accent-500) 20%, var(--background-950));
346
+ .checkbox[data-indeterminate="true"] {
347
+ --background: var(--foreground-200);
348
+ --background-border: var(--foreground-200);
272
349
  }
273
350
 
274
- .checkbox-root {
275
- --helper-foreground: var(--foreground-400);
276
- --helper-error-foreground: var(--danger-600);
351
+ .checkbox[data-indeterminate="true"]:hover:not([data-disabled="true"]) {
352
+ --background: var(--foreground-300);
353
+ --background-border: var(--foreground-300);
277
354
  }
278
355
 
279
- /* Color Styles */
356
+ .checkbox > div > .checkmark,
357
+ .checkbox > div > .indeterminate {
358
+ --foreground: var(--foreground-300)
359
+ }
280
360
 
281
361
  .color {
282
362
  --background: color-mix(in srgb, var(--background-800) 30%, transparent);
@@ -284,53 +364,49 @@
284
364
  --focus-visible: var(--accent-500);
285
365
  }
286
366
 
287
- .color .canvas-pointer {
367
+ .color > .canvas > .canvas-pointer {
288
368
  --pointer-border: color-mix(in srgb, var(--foreground-200) 50%, transparent);
289
369
  }
290
370
 
291
- .color .hue-thumb,
292
- .color .opacity-thumb {
371
+ .color > .controls > .hue-slider > .hue-track > .hue-thumb,
372
+ .color > .controls > .opacity-slider > .opacity-track > .opacity-thumb {
293
373
  --thumb-border: white;
294
374
  --thumb-background: white;
295
375
  }
296
376
 
297
- .color .opacity-track {
377
+ .color > .controls > .opacity-slider > .opacity-track {
298
378
  --checkerboard-dark: var(--background-800);
299
379
  --checkerboard-light: var(--background-700);
300
380
  }
301
381
 
302
- .color .preview-swatch,
303
- .color .preview {
382
+ .color > .controls > .group-scope > .group > .preview-swatch,
383
+ .color > .controls > .group-scope > .group > .preview {
304
384
  --checkerboard-dark: var(--background-700);
305
385
  --checkerboard-light: var(--background-800);
306
386
  }
307
387
 
308
- /* Label Styles */
309
-
310
388
  .label {
311
389
  --foreground: var(--foreground-300);
312
390
  --disabled-foreground: var(--foreground-400);
313
391
  --error-foreground: var(--danger-600);
314
392
  }
315
393
 
316
- .label .required-indicator {
394
+ .label > label > .required-indicator {
317
395
  --required-color: var(--danger-600);
318
396
  }
319
397
 
320
- .label .helper-text {
398
+ .label > .helper-text {
321
399
  --helper-color: var(--foreground-400);
322
400
  }
323
401
 
324
- .label .helper-text[data-error] {
402
+ .label > .helper-text[data-error] {
325
403
  --helper-error-color: var(--danger-600);
326
404
  }
327
405
 
328
- /* Input Styles */
329
-
330
406
  .input {
331
407
  --background: var(--background-950);
332
- --foreground: var(--foreground-50);
333
- --placeholder: var(--foreground-400);
408
+ --foreground: var(--foreground-300);
409
+ --placeholder: color-mix(in srgb, var(--foreground-400) 80%, transparent);
334
410
  --background-border: var(--background-700);
335
411
  --ring: var(--accent-500);
336
412
  --ring-border: var(--ring);
@@ -341,42 +417,6 @@
341
417
  font-weight: var(--font-weight-medium)
342
418
  }
343
419
 
344
- .input input {
345
- height: fit-content;
346
- flex: 1;
347
- min-width: 0;
348
- @apply py-1.5 px-3;
349
- font-family: inherit;
350
- font-size: var(--text-sm);
351
- font-weight: var(--font-weight-medium);
352
- line-height: var(--leading-snug);
353
- color: var(--foreground);
354
- background-color: transparent;
355
- border: none;
356
- outline: none;
357
- box-sizing: border-box;
358
- }
359
-
360
- .input input::placeholder {
361
- color: var(--placeholder);
362
- }
363
-
364
- .input input[data-disabled] {
365
- color: var(--disabled-foreground);
366
- cursor: not-allowed;
367
- }
368
-
369
- .input input[type="number"]::-webkit-outer-spin-button,
370
- .input input[type="number"]::-webkit-inner-spin-button {
371
- -webkit-appearance: none;
372
- margin: 0;
373
- display: none;
374
- }
375
-
376
- .input input[type="number"] {
377
- -moz-appearance: textfield;
378
- }
379
-
380
420
  .input[data-error] {
381
421
  --ring: var(--danger-600);
382
422
  --ring-border: var(--ring);
@@ -392,73 +432,105 @@
392
432
  box-shadow: none;
393
433
  }
394
434
 
395
- .input .icon {
396
- --foreground: var(--foreground-400);
435
+ .input > [data-start-adornments] > .icon-wrapper > .icon,
436
+ .input > [data-end-adornments] > .icon-wrapper > .icon {
437
+ --foreground: var(--foreground-300);
397
438
  }
398
439
 
399
- .input .stepper {
440
+ .input > [data-end-adornments] > div > .stepper {
400
441
  --foreground: var(--foreground-400);
401
442
  --hover-background: var(--background-800);
402
443
  --hover-color: var(--foreground-200);
403
444
  --active-background: var(--background-700);
404
- --active-color: var(--accent-500);
445
+ --active-color: var(--foreground-100);
405
446
  }
406
447
 
407
- /* Radio Styles */
408
-
409
448
  .radio {
410
- --background: var(--background-800);
449
+ --background: var(--background-900);
411
450
  --background-border: var(--background-700);
412
- --background-selected: var(--accent-500);
413
- --background-selected-border: var(--accent-500);
414
- --background-hover: var(--background-900);
415
- --background-hover-border: var(--background-500);
416
- --background-error-border: var(--danger-500);
417
- --dot-color: transparent;
418
- --dot-selected-color: var(--foreground-400);
419
451
  --focus-visible: rgb(59, 130, 246);
420
452
  }
421
453
 
422
- .radio-group .radio-label,
423
- .radio-item .radio-label {
454
+ .radio.secondary {
455
+ --background: var(--background-900);
456
+ --background-border: var(--background-700);
457
+ }
458
+
459
+ .radio.outline {
460
+ --background: transparent;
461
+ --background-border: var(--background-700);
462
+ }
463
+
464
+ .radio[data-hovered="true"]:not([data-disabled="true"]),
465
+ .radio:hover:not([data-disabled="true"]) {
466
+ --background: color-mix(in srgb, var(--background-500) 10%, var(--background-900));
467
+ --background-border: var(--background-600);
468
+ }
469
+
470
+ .radio[data-selected="true"] {
471
+ --background: var(--background-900);
472
+ --background-border: var(--background-700);
473
+ }
474
+
475
+ .radio.outline[data-selected="true"] {
476
+ --background: var(--background-600);
477
+ --background-border: var(--background-600);
478
+ }
479
+
480
+ .radio[data-selected="true"][data-hovered="true"]:not([data-disabled="true"]),
481
+ .radio[data-selected="true"]:hover:not([data-disabled="true"]) {
482
+ --background: var(--background-800);
483
+ --background-border: var(--background-600);
484
+ }
485
+
486
+ .radio[data-error="true"] {
487
+ --background-border: var(--danger-500);
488
+ }
489
+
490
+ .radio[data-error="true"][data-selected="true"] {
491
+ --background-border: var(--background-600);
492
+ }
493
+
494
+ .radio > .dot {
495
+ --background: var(--foreground-300);
496
+ }
497
+
498
+ .radio[data-selected="true"] > .dot {
499
+ --background: var(--foreground-400);
500
+ }
501
+
502
+ .radio-group > .radio-label,
503
+ .radio-item > div > .radio-label {
424
504
  --foreground: var(--foreground-300);
425
- --foreground-disabled: var(--foreground-400);
426
505
  }
427
506
 
428
- .radio-group .radio-description,
429
- .radio-item .radio-description {
507
+ .radio-group > .radio-label[data-disabled="true"],
508
+ .radio-item > div > .radio-label[data-disabled="true"] {
430
509
  --foreground: var(--foreground-400);
431
- --foreground-error: var(--danger-500);
432
510
  }
433
511
 
434
- .radio-item .helper-text {
512
+ .radio-group > .radio-description,
513
+ .radio-item > div > .radio-description {
435
514
  --foreground: var(--foreground-400);
436
- --foreground-error: var(--danger-500);
437
515
  }
438
516
 
439
- .radio.primary[data-selected="true"] {
440
- --background-selected: var(--accent-500);
441
- --background-selected-border: var(--accent-500);
517
+ .radio-group > .radio-description[data-error="true"],
518
+ .radio-item > div > .radio-description[data-error="true"] {
519
+ --foreground: var(--danger-500);
442
520
  }
443
521
 
444
- .radio.secondary {
445
- --background: var(--background-800);
446
- --background-border: var(--background-700);
522
+ .radio-item > .helper-text {
523
+ --foreground: var(--foreground-400);
447
524
  }
448
525
 
449
- .radio.outline {
450
- --background: transparent;
451
- --background-border: var(--background-700);
526
+ .radio-item > .helper-text[data-error="true"] {
527
+ --foreground: var(--danger-500);
452
528
  }
453
529
 
454
- .radio.outline[data-selected="true"] {
455
- --background-selected: color-mix(in srgb, var(--accent-500) 15%, transparent);
456
- --background-selected-border: var(--accent-500);
457
- --dot-selected-color: var(--accent-500);
530
+ .radio.outline[data-selected="true"] > .dot {
531
+ --background: var(--accent-500);
458
532
  }
459
533
 
460
- /* Select Styles */
461
-
462
534
  .select {
463
535
  --background: color-mix(in srgb, var(--background-800) 50%, transparent);
464
536
  --foreground: var(--foreground-300);
@@ -470,127 +542,136 @@
470
542
  --foreground-size: var(--text-xs)
471
543
  }
472
544
 
473
- .select .ghost {
545
+ .select.ghost,
546
+ .select > .ghost {
474
547
  --background: transparent;
475
548
  --background-border: transparent;
476
549
  --background-hover: color-mix(in srgb, var(--background-700) 50%, transparent);
477
550
  --background-pressed: color-mix(in srgb, var(--background-700) 50%, transparent);
478
551
  }
479
552
 
480
- .select .content,
481
- .select .sub-content {
553
+ .select > .content,
554
+ .select > .sub-content {
482
555
  --background: var(--background-900);
483
556
  --background-border: var(--background-700);
484
557
  }
485
558
 
486
- .select .item,
487
- .select .sub-trigger {
559
+ .select > .content [role="option"].item,
560
+ .select > .content [role="option"].sub-trigger,
561
+ .select > .sub-content [role="option"].item,
562
+ .select > .sub-content [role="option"].sub-trigger {
563
+ --background: transparent;
488
564
  --foreground: var(--foreground-300);
489
565
  --foreground-muted: var(--foreground-400);
490
566
  --icon-foreground: var(--foreground-300);
491
567
  --indicator-foreground: var(--accent-300);
492
- --background-highlighted: color-mix(in srgb, var(--background-700) 50%, transparent);
493
- --item-background: transparent;
494
- --item-background-hover: var(--background-highlighted);
495
- --item-background-highlighted: var(--background-highlighted);
496
568
  }
497
569
 
498
- .select .placeholder {
570
+ .select > .content [role="option"].item[data-highlighted="true"],
571
+ .select > .content [role="option"].sub-trigger[data-highlighted="true"],
572
+ .select > .sub-content [role="option"].item[data-highlighted="true"],
573
+ .select > .sub-content [role="option"].sub-trigger[data-highlighted="true"],
574
+ .select > .content [role="option"].sub-trigger[data-open="true"]:not([data-highlighted="true"]),
575
+ .select > .sub-content [role="option"].sub-trigger[data-open="true"]:not([data-highlighted="true"]) {
576
+ --background: color-mix(in srgb, var(--background-700) 50%, transparent);
577
+ }
578
+
579
+ .select > .placeholder {
499
580
  --foreground-muted: var(--foreground-400);
500
581
  }
501
582
 
502
- .select .empty-state {
583
+ .select > .content > .empty-state {
503
584
  font-size: var(--text-xs);
504
585
  }
505
586
 
506
- .select .search-trigger {
587
+ .select.search-trigger {
507
588
  --focus-visible: var(--accent-500);
508
589
  }
509
590
 
510
- /* Slider Styles */
511
-
512
- .slider .track {
591
+ .slider > .track {
513
592
  --background: var(--background-800);
514
593
  }
515
594
 
516
- .slider .range {
595
+ .slider > .track > .range {
517
596
  --background: color-mix(in srgb, var(--accent-500) 60%, transparent);
518
597
  --background-disabled: var(--background-600);
519
598
  }
520
599
 
521
- .slider .thumb {
600
+ .slider > .track > .thumb {
522
601
  --background: white;
523
- --background-border: color-mix(in srgb, var(--background-500) 40%, transparent);;
602
+ --background-border: color-mix(in srgb, var(--background-500) 40%, transparent);
524
603
  --background-focused: var(--accent-400);
525
604
  --background-disabled: var(--background-500);
526
605
  --focus-visible: color-mix(in srgb, var(--accent-500) 40%, transparent);
527
606
  }
528
607
 
529
- /* Switch Styles */
530
-
531
608
  .switch {
532
609
  --background: var(--background-700);
533
- --background-active: color-mix(in srgb, var(--accent-500) 80%, var(--background-500));
534
610
  --foreground: var(--background-500);
535
- --foreground-active: white;
611
+ --background-border: var(--background-600);
612
+ --focus-visible: 0 0 0 3px color-mix(in srgb, var(--accent-500) 40%, transparent);
613
+ }
536
614
 
537
- --border: var(--background-600);
538
- --border-hover: transparent;
539
- --border-pressed: transparent;
540
- --border-active: transparent;
615
+ .switch[data-selected="true"] {
616
+ --background: color-mix(in srgb, var(--background-500) 90%, transparent);
617
+ --background-border: color-mix(in srgb, var(--background-500) 20%, transparent);
618
+ --foreground: color-mix(in srgb, var(--foreground-400) 20%, white);
619
+ }
541
620
 
542
- --focus-visible: 0 0 0 3px color-mix(in srgb, var(--accent-500) 40%, transparent);
621
+ .switch[data-selected="true"][data-hovered="true"]:not([data-disabled="true"]) {
622
+ --background-border: color-mix(in srgb, var(--background-500) 30%, transparent);
623
+ }
624
+
625
+ .switch:active:not([data-disabled="true"]) {
626
+ --background-border: color-mix(in srgb, var(--background-500) 30%, transparent);
543
627
  }
544
628
 
545
- /* Textarea Styles */
629
+ .switch[data-selected="true"]:active:not([data-disabled="true"]) {
630
+ --background: var(--background-600);
631
+ }
546
632
 
547
633
  .textarea {
548
634
  --background: var(--background-950);
549
635
  --foreground: var(--foreground-50);
550
636
  --placeholder: var(--foreground-400);
551
637
  --background-border: var(--background-700);
552
- --background-hover: var(--background-900);
553
- --background-disabled: var(--background-900);
554
- --foreground-disabled: var(--foreground-400);
555
638
  --disabled-opacity: 0.6;
556
639
  }
557
640
 
558
- .textarea[data-error] {
559
- --background-error-border: var(--danger-600);
641
+ .textarea[data-disabled="true"] {
642
+ --background: var(--background-900);
643
+ --foreground: var(--foreground-400);
644
+ }
645
+
646
+ .textarea[data-error="true"] {
647
+ --background-border: var(--danger-600);
560
648
  }
561
649
 
562
- .textarea-scope .scroll-wrapper {
650
+ .textarea-scope > .container > .surface > .scroll-wrapper {
563
651
  --background: var(--background-950);
564
652
  --background-border: var(--background-700);
565
- --background-hover: var(--background-900);
566
- --background-disabled: var(--background-900);
567
653
  --disabled-opacity: 0.6;
568
654
  }
569
655
 
570
- .textarea-scope .scroll-wrapper[data-error] {
571
- --background-error-border: var(--danger-600);
656
+ .textarea-scope > .container > .surface > .resize-handle {
657
+ --background: color-mix(in srgb, var(--foreground-400) 72%, transparent);
572
658
  }
573
659
 
574
- .textarea-scope .resize-handle {
575
- --handle-background: color-mix(in srgb, var(--foreground-400) 72%, transparent);
576
- --handle-hover-background: color-mix(in srgb, var(--foreground-200) 90%, transparent);
660
+ .textarea-scope > .container > .surface > .resize-handle:hover {
661
+ --background: color-mix(in srgb, var(--foreground-200) 90%, transparent);
577
662
  }
578
663
 
579
- .textarea-scope .character-count {
580
- --count-foreground: var(--foreground-400);
581
- --count-over-limit-foreground: var(--danger-600);
664
+ .textarea-scope > .container > .character-count {
665
+ --foreground: var(--foreground-400);
666
+ --foreground-error: var(--danger-600);
582
667
  }
583
668
 
584
- /* Banner Styles */
585
-
586
669
  .banner {
587
670
  --background: var(--background-900);
588
671
  --foreground: var(--info-50);
589
672
  --border: var(--info-600);
590
673
  }
591
674
 
592
- /* Badge Styles */
593
-
594
675
  .badge.sm {
595
676
  @apply px-1.5 py-0.5 font-semibold
596
677
  }
@@ -611,28 +692,24 @@
611
692
  font-size: var(--text-xs)
612
693
  }
613
694
 
614
- .badge .dismiss {
615
- --dismiss-foreground: var(--foreground-400);
616
- --dismiss-hover-background: color-mix(in srgb, var(--background-700) 80%, var(--background-900));
617
- --dismiss-pressed-background: var(--background-700);
618
- --dismiss-focus-visible: var(--accent-400);
695
+ .badge > .dismiss {
696
+ --foreground: var(--foreground-400);
697
+ --background-hover: color-mix(in srgb, var(--background-700) 80%, var(--background-900));
698
+ --background-pressed: var(--background-700);
699
+ --focus-visible: var(--accent-400);
619
700
  }
620
701
 
621
- /* Popover Styles */
622
-
623
- .popover .content {
702
+ .popover > .content {
624
703
  --background: var(--background-900);
625
704
  --background-hover: var(--background-900);
626
705
  --background-border: var(--background-700);
627
706
  }
628
707
 
629
- .popover .frame {
708
+ .popover > .content > div > div > .frame {
630
709
  --foreground: var(--foreground-200);
631
710
  }
632
711
 
633
- /* Tooltip Styles */
634
-
635
- .tooltip .content {
712
+ .tooltip > .content {
636
713
  --background: var(--background-900);
637
714
  --background-hover: var(--background-900);
638
715
  --background-border: var(--background-700);
@@ -640,38 +717,37 @@
640
717
  font-weight: var(--font-weight-medium);
641
718
  }
642
719
 
643
- .tooltip .frame {
720
+ .tooltip > .content > div > div > .frame {
644
721
  --foreground: var(--foreground-200);
645
722
  }
646
723
 
647
- /* Progress Styles */
648
-
649
724
  .progress {
650
725
  --background: var(--background-700);
651
- --fill-background: color-mix(in srgb, var(--accent-600) 60%, var(--background-500));
652
726
  }
653
727
 
654
- .progress .label-row {
655
- --foreground: var(--foreground-400);
728
+ .progress > .fill {
729
+ --background: color-mix(in srgb, var(--accent-600) 60%, var(--background-500));
656
730
  }
657
731
 
658
- .progress .bar[data-variant="default"] .fill {
659
- --fill-background: var(--accent-500);
732
+ .progress > .label-row {
733
+ --foreground: var(--foreground-400);
660
734
  }
661
735
 
662
- .progress .bar[data-variant="success"] .fill {
663
- --fill-background: var(--success-500);
736
+ .progress > .bar[data-variant="default"] > .fill {
737
+ --background: var(--accent-500);
664
738
  }
665
739
 
666
- .progress .bar[data-variant="warning"] .fill {
667
- --fill-background: var(--warning-500);
740
+ .progress > .bar[data-variant="success"] > .fill {
741
+ --background: var(--success-500);
668
742
  }
669
743
 
670
- .progress .bar[data-variant="error"] .fill {
671
- --fill-background: var(--danger-500);
744
+ .progress > .bar[data-variant="warning"] > .fill {
745
+ --background: var(--warning-500);
672
746
  }
673
747
 
674
- /* Toast Styles */
748
+ .progress > .bar[data-variant="error"] > .fill {
749
+ --background: var(--danger-500);
750
+ }
675
751
 
676
752
  .toast {
677
753
  --background: var(--background-900);
@@ -686,120 +762,140 @@
686
762
  --background-border: var(--background-600);
687
763
  }
688
764
 
689
- .toast .icon {
765
+ .toast > .icon-wrap > .icon {
690
766
  --foreground: currentColor;
691
767
  }
692
768
 
693
- .toast .title {
769
+ .toast > .content > .title {
694
770
  --foreground: var(--foreground-100);
695
771
  }
696
772
 
697
- .toast .description {
773
+ .toast > .content > .description {
698
774
  --foreground: var(--foreground-300);
699
775
  }
700
776
 
701
- .toast.danger .icon {
777
+ .toast.danger > .icon-wrap > .icon {
702
778
  --foreground: var(--danger-600);
703
779
  }
704
780
 
705
- .toast.success .icon {
781
+ .toast.success > .icon-wrap > .icon {
706
782
  --foreground: var(--success-600);
707
783
  }
708
784
 
709
- .toast.info .icon {
785
+ .toast.info > .icon-wrap > .icon {
710
786
  --foreground: var(--info-600);
711
787
  }
712
788
 
713
- .toast.warning .icon {
789
+ .toast.warning > .icon-wrap > .icon {
714
790
  --foreground: var(--warning-600);
715
791
  }
716
792
 
717
- .toast .close {
793
+ .toast > .close {
794
+ --background: transparent;
718
795
  --foreground: currentColor;
719
- --background-hover: transparent;
720
796
  --focus-visible: var(--accent-400);
721
797
  }
722
798
 
723
-
724
-
725
- .toast.danger .close {
799
+ .toast.danger > .close {
726
800
  --foreground: color-mix(in srgb, var(--danger-600) 60%, var(--foreground-50));
727
- --background-hover: color-mix(in srgb, var(--danger-500) 20%, var(--background-900));
728
801
  --focus-visible: var(--danger-400);
729
802
  }
730
803
 
731
- .toast.success .close {
804
+ .toast.danger > .close[data-hovered="true"]:not([data-disabled="true"]) {
805
+ --background: color-mix(in srgb, var(--danger-500) 20%, var(--background-900));
806
+ }
807
+
808
+ .toast.success > .close {
732
809
  --foreground: color-mix(in srgb, var(--success-600) 60%, var(--foreground-50));
733
- --background-hover: color-mix(in srgb, var(--success-500) 20%, var(--background-900));
734
810
  --focus-visible: var(--success-400);
735
811
  }
736
812
 
737
- .toast.info .close {
813
+ .toast.success > .close[data-hovered="true"]:not([data-disabled="true"]) {
814
+ --background: color-mix(in srgb, var(--success-500) 20%, var(--background-900));
815
+ }
816
+
817
+ .toast.info > .close {
738
818
  --foreground: color-mix(in srgb, var(--info-600) 60%, var(--foreground-50));
739
- --background-hover: color-mix(in srgb, var(--info-500) 20%, var(--background-900));
740
819
  --focus-visible: var(--info-400);
741
820
  }
742
821
 
743
- .toast.warning .close {
822
+ .toast.info > .close[data-hovered="true"]:not([data-disabled="true"]) {
823
+ --background: color-mix(in srgb, var(--info-500) 20%, var(--background-900));
824
+ }
825
+
826
+ .toast.warning > .close {
744
827
  --foreground: color-mix(in srgb, var(--warning-600) 60%, var(--foreground-50));
745
- --background-hover: color-mix(in srgb, var(--warning-500) 20%, var(--background-900));
746
828
  --focus-visible: var(--warning-400);
747
829
  }
748
830
 
749
- /* Menu Styles */
831
+ .toast.warning > .close[data-hovered="true"]:not([data-disabled="true"]) {
832
+ --background: color-mix(in srgb, var(--warning-500) 20%, var(--background-900));
833
+ }
750
834
 
751
- .menu .content,
752
- .menu .sub-content {
835
+ .menu > .content,
836
+ .menu > .sub-content {
753
837
  --background: var(--background-900);
754
838
  --background-border: var(--background-700);
755
- --content-open-animation: slide-in-from-top 0.15s var(--ease-snappy-pop);
756
- --content-closed-animation: slide-out-to-top 0.15s var(--ease-snappy-pop);
839
+ --open-animation: slide-in-from-top 0.15s var(--ease-snappy-pop);
840
+ --closed-animation: slide-out-to-top 0.15s var(--ease-snappy-pop);
757
841
  font-size: var(--text-xs)
758
842
  }
759
843
 
760
- .menu .trigger {
844
+ .menu.trigger {
761
845
  --background-pressed: var(--background-700);
762
846
  }
763
847
 
764
- .menu .item,
765
- .menu .checkbox-item,
766
- .menu .radio-item,
767
- .menu .sub-trigger {
848
+ .menu > :is(.content, .sub-content) .item {
849
+ --background: transparent;
768
850
  --foreground: var(--foreground-300);
769
851
  --background-focused: color-mix(in srgb, var(--background-700) 50%, transparent);
770
852
  }
771
853
 
772
- .menu .item-indicator {
773
- --indicator-foreground: var(--accent-300);
854
+ .menu > :is(.content, .sub-content) .item-indicator {
855
+ --foreground: var(--accent-300);
774
856
  }
775
857
 
776
- .menu .label,
777
- .menu .shortcut {
858
+ .menu > :is(.content, .sub-content) :is(.label, .shortcut) {
778
859
  --foreground-muted: var(--foreground-400);
779
860
  }
780
861
 
781
- /* Path Styles */
782
-
783
- .path.link {
862
+ .path-link {
863
+ --background: transparent;
784
864
  --foreground: var(--foreground-300);
785
- --foreground-hover: var(--accent-300);
786
- --foreground-selected: var(--foreground-400);
787
- --foreground-disabled: var(--foreground-400);
788
- --background-hover: color-mix(in srgb, var(--background-700) 50%, transparent);
789
- --background-pressed: color-mix(in srgb, var(--background-700) 70%, transparent);
790
865
  --focus-visible: var(--accent-500);
791
866
  --disabled-opacity: 0.6;
792
867
  }
793
868
 
794
- .path.separator {
795
- --separator-foreground: var(--background-700);
869
+ .path-link[data-hovered="true"]:not([data-disabled="true"]):not([data-selected="true"]) {
870
+ --background: color-mix(in srgb, var(--background-700) 50%, transparent);
871
+ --foreground: var(--foreground-200);
872
+ }
873
+
874
+ .path-link[data-pressed="true"]:not([data-disabled="true"]):not([data-selected="true"]) {
875
+ --background: color-mix(in srgb, var(--background-700) 70%, transparent);
876
+ }
877
+
878
+ .path-link[data-selected="true"] {
879
+ --background: transparent;
880
+ --foreground: var(--foreground-100);
881
+ }
882
+
883
+ .path-link[data-selected="true"][data-hovered="true"]:not([data-disabled="true"]) {
884
+ --background: transparent;
796
885
  }
797
886
 
798
- .path.item {
799
- --separator-foreground: var(--background-700);
887
+ .path-link[data-disabled="true"] {
888
+ --background: transparent;
889
+ --foreground: var(--foreground-400);
890
+ }
891
+
892
+ .path-separator {
893
+ --foreground: var(--foreground-400);
800
894
  }
801
895
 
802
- /* Tabs Styles */
896
+ .path-item {
897
+ --foreground: var(--foreground-400);
898
+ }
803
899
 
804
900
  .tabs.indicator {
805
901
  --background: color-mix(in srgb, var(--background-700) 50%, transparent);
@@ -815,57 +911,80 @@
815
911
 
816
912
  .tabs.trigger {
817
913
  --background: transparent;
818
- --background-hover: var(--background-900);
819
- --background-pressed: var(--background-800);
820
- --background-selected: transparent;
821
- --background-focused: var(--background-800);
822
914
  --foreground: var(--foreground-400);
823
- --foreground-hover: var(--foreground-200);
824
- --foreground-pressed: var(--foreground-50);
825
- --foreground-selected: var(--foreground-50);
826
915
  --underline-border: var(--accent-500);
827
916
  font-size: var(--text-xs);
828
917
  }
829
918
 
919
+ .tabs.trigger[data-hovered="true"]:not([data-disabled="true"]):not([data-selected="true"]) {
920
+ --background: var(--background-900);
921
+ --foreground: var(--foreground-200);
922
+ }
923
+
924
+ .tabs.trigger[data-pressed="true"]:not([data-disabled="true"]):not([data-selected="true"]) {
925
+ --background: var(--background-800);
926
+ --foreground: var(--foreground-50);
927
+ }
928
+
929
+ .tabs.trigger[data-selected="true"] {
930
+ --background: transparent;
931
+ --foreground: var(--foreground-50);
932
+ }
933
+
934
+ .tabs.trigger[data-selected="true"][data-hovered="true"]:not([data-disabled="true"]) {
935
+ --background: transparent;
936
+ --foreground: var(--foreground-50);
937
+ }
938
+
830
939
  .tabs.content {
831
940
  --focus-visible: var(--accent-500);
832
941
  }
833
942
 
834
- /* Anchor Styles */
835
-
943
+ .anchor,
836
944
  .anchor.trigger {
837
945
  --foreground: var(--foreground-200);
838
946
  --underline-background: var(--background-600);
839
- --underline-background-hover: var(--foreground-400);
840
947
  --focus-ring: var(--color-background-600);
841
948
  }
842
949
 
843
- /* Modal Styles */
950
+ .anchor[data-hovered="true"]:not([data-disabled="true"]),
951
+ .anchor.trigger[data-hovered="true"]:not([data-disabled="true"]) {
952
+ --underline-background: var(--foreground-400);
953
+ }
844
954
 
845
955
  .modal {
846
956
  --background: var(--background-900);
847
957
  --background-border: var(--background-700);
848
958
  --foreground: var(--foreground-300);
849
959
  --focus-visible: var(--accent-500);
850
- --scrollbar-thumb-background: var(--background-700);
851
- --scrollbar-thumb-hover-background: var(--foreground-400);
852
960
  }
853
961
 
854
- .modal .title {
962
+ .modal > .panel > .header > .title {
855
963
  --title-foreground: var(--foreground-100);
856
964
  }
857
965
 
858
- .modal .close {
859
- --close-foreground: var(--foreground-400);
860
- --close-hover-foreground: var(--foreground-200);
966
+ .modal > .panel > .header > .close {
967
+ --foreground: var(--foreground-400);
861
968
  --focus-visible: var(--accent-500);
862
969
  }
863
970
 
864
- .modal .footer {
971
+ .modal > .panel > .header > .close[data-hovered="true"] {
972
+ --foreground: var(--foreground-200);
973
+ }
974
+
975
+ .modal > .panel > .content::-webkit-scrollbar-thumb {
976
+ --background: var(--background-700);
977
+ }
978
+
979
+ .modal > .panel > .content::-webkit-scrollbar-thumb:hover {
980
+ --background: var(--foreground-400);
981
+ }
982
+
983
+ .modal > .panel > .footer {
865
984
  --footer-background: var(--background-900);
866
985
  }
867
986
 
868
- .modal .backdrop {
987
+ .modal > .backdrop {
869
988
  --backdrop-background: rgb(0 0 0 / 50%);
870
989
  }
871
990
 
@@ -874,14 +993,20 @@
874
993
  }
875
994
 
876
995
  /* Scroll Component */
877
- .scroll .track {
878
- --track-background: transparent;
996
+ .scroll > .track {
997
+ --background: transparent;
879
998
  }
880
999
 
881
- .scroll .thumb {
882
- --thumb-background: var(--background-700);
883
- --thumb-background-hover: var(--background-600);
884
- --thumb-background-pressed: color-mix(in srgb, var(--background-500) 40%, var(--background-900));
1000
+ .scroll > .track > .thumb {
1001
+ --background: var(--background-700);
1002
+ }
1003
+
1004
+ .scroll > .track > .thumb:hover {
1005
+ --background: var(--background-600);
1006
+ }
1007
+
1008
+ .scroll[data-pressed="true"] > .track > .thumb {
1009
+ --background: color-mix(in srgb, var(--background-500) 40%, var(--background-900));
885
1010
  }
886
1011
  }
887
1012
 
@@ -890,96 +1015,147 @@
890
1015
  --background: var(--foreground-100);
891
1016
  --foreground: var(--background-900);
892
1017
  --background-border: var(--foreground-200);
893
- --background-hover: color-mix(in srgb, var(--foreground-100) 90%, var(--background-600));
894
- --background-hover-border: color-mix(in srgb, var(--foreground-100) 90%, var(--background-600));
895
- --background-pressed: color-mix(in srgb, var(--foreground-100) 85%, var(--background-600));
896
- --background-pressed-border: color-mix(in srgb, var(--foreground-100) 85%, var(--background-600));
1018
+ }
1019
+
1020
+ .primary[data-hovered="true"]:not([data-disabled="true"]) {
1021
+ --background: color-mix(in srgb, var(--foreground-100) 90%, var(--background-600));
1022
+ --background-border: color-mix(in srgb, var(--foreground-100) 90%, var(--background-600));
1023
+ }
1024
+
1025
+ .primary[data-pressed="true"]:not([data-disabled="true"]) {
1026
+ --background: color-mix(in srgb, var(--foreground-100) 85%, var(--background-600));
1027
+ --background-border: color-mix(in srgb, var(--foreground-100) 85%, var(--background-600));
897
1028
  }
898
1029
 
899
1030
  .secondary {
900
1031
  --background: var(--background-900);
901
1032
  --foreground: var(--foreground-200);
902
1033
  --background-border: var(--background-700);
903
- --background-hover: color-mix(in srgb, var(--background-700) 50%, var(--background-950));
904
- --background-hover-border: var(--background-700);
905
- --background-pressed: color-mix(in srgb, var(--background-700) 60%, var(--background-950));
906
- --background-pressed-border: var(--background-700);
1034
+ }
1035
+
1036
+ .secondary[data-hovered="true"]:not([data-disabled="true"]) {
1037
+ --background: color-mix(in srgb, var(--background-700) 50%, var(--background-950));
1038
+ --background-border: var(--background-700);
1039
+ }
1040
+
1041
+ .secondary[data-pressed="true"]:not([data-disabled="true"]) {
1042
+ --background: color-mix(in srgb, var(--background-700) 60%, var(--background-950));
1043
+ --background-border: var(--background-700);
907
1044
  }
908
1045
 
909
1046
  .outline {
910
1047
  --background: transparent;
911
1048
  --foreground: var(--foreground-300);
912
1049
  --background-border: var(--background-700);
913
- --background-hover: color-mix(in srgb, var(--background-950) 90%, var(--background-500));
914
- --background-hover-border: var(--background-600);
915
- --background-pressed: color-mix(in srgb, var(--background-900) 90%, var(--background-500));
916
- --background-pressed-border: var(--background-600);
917
1050
  outline: unset !important /* override tailwindcss */
918
1051
  }
919
1052
 
1053
+ .outline[data-hovered="true"]:not([data-disabled="true"]) {
1054
+ --background: color-mix(in srgb, var(--background-950) 90%, var(--background-500));
1055
+ --background-border: var(--background-600);
1056
+ }
1057
+
1058
+ .outline[data-pressed="true"]:not([data-disabled="true"]) {
1059
+ --background: color-mix(in srgb, var(--background-900) 90%, var(--background-500));
1060
+ --background-border: var(--background-600);
1061
+ }
1062
+
920
1063
  .danger {
921
1064
  --background: color-mix(in srgb, var(--danger-500) 15%, transparent);
922
1065
  --foreground: var(--danger-600);
923
1066
  --background-border: transparent;
924
1067
  --focus-visible: var(--danger-400);
925
- --background-hover: color-mix(in srgb, var(--danger-500) 25%, transparent);
926
- --background-hover-border: transparent;
927
- --background-pressed: color-mix(in srgb, var(--danger-500) 30%, transparent);
928
- --background-pressed-border: transparent;
1068
+ }
1069
+
1070
+ .danger[data-hovered="true"]:not([data-disabled="true"]) {
1071
+ --background: color-mix(in srgb, var(--danger-500) 25%, transparent);
1072
+ --background-border: transparent;
1073
+ }
1074
+
1075
+ .danger[data-pressed="true"]:not([data-disabled="true"]) {
1076
+ --background: color-mix(in srgb, var(--danger-500) 30%, transparent);
1077
+ --background-border: transparent;
929
1078
  }
930
1079
 
931
1080
  .ghost {
932
1081
  --background: transparent;
933
1082
  --foreground: var(--foreground-300);
934
1083
  --background-border: transparent;
935
- --background-hover: var(--background-800);
936
- --background-hover-border: transparent;
1084
+ }
1085
+
1086
+ .ghost[data-hovered="true"]:not([data-disabled="true"]) {
1087
+ --background: var(--background-800);
1088
+ --background-border: transparent;
937
1089
  }
938
1090
 
939
1091
  .default {
940
1092
  --background: color-mix(in srgb, var(--background-600) 10%, var(--background-900));
941
1093
  --foreground: var(--foreground-200);
942
1094
  --background-border: var(--background-700);
943
- --background-hover: color-mix(in srgb, var(--background-500) 20%, var(--background-900));
944
- --background-hover-border: var(--background-600);
945
- --background-pressed: color-mix(in srgb, var(--background-500) 30%, var(--background-900));
946
- --background-pressed-border: var(--background-600);
947
1095
  --focus-visible: var(--accent-400);
948
1096
  }
949
1097
 
1098
+ .default[data-hovered="true"]:not([data-disabled="true"]) {
1099
+ --background: color-mix(in srgb, var(--background-500) 20%, var(--background-900));
1100
+ --background-border: var(--background-600);
1101
+ }
1102
+
1103
+ .default[data-pressed="true"]:not([data-disabled="true"]) {
1104
+ --background: color-mix(in srgb, var(--background-500) 30%, var(--background-900));
1105
+ --background-border: var(--background-600);
1106
+ }
1107
+
950
1108
  .success {
951
1109
  --background: color-mix(in srgb, var(--success-600) 10%, var(--background-900));
952
1110
  --foreground: var(--success-600);
953
1111
  --background-border: color-mix(in srgb, var(--success-600) 20%, var(--background-900));
954
- --background-hover: color-mix(in srgb, var(--success-600) 15%, var(--background-900));
955
- --background-hover-border: color-mix(in srgb, var(--success-600) 30%, var(--background-900));
956
- --background-pressed: color-mix(in srgb, var(--success-600) 20%, var(--background-900));
957
- --background-pressed-border: color-mix(in srgb, var(--success-600) 30%, var(--background-900));
958
1112
  --focus-visible: var(--success-400);
959
1113
  }
960
1114
 
1115
+ .success[data-hovered="true"]:not([data-disabled="true"]) {
1116
+ --background: color-mix(in srgb, var(--success-600) 15%, var(--background-900));
1117
+ --background-border: color-mix(in srgb, var(--success-600) 30%, var(--background-900));
1118
+ }
1119
+
1120
+ .success[data-pressed="true"]:not([data-disabled="true"]) {
1121
+ --background: color-mix(in srgb, var(--success-600) 20%, var(--background-900));
1122
+ --background-border: color-mix(in srgb, var(--success-600) 30%, var(--background-900));
1123
+ }
1124
+
961
1125
  .warning {
962
1126
  --background: color-mix(in srgb, var(--warning-600) 10%, var(--background-900));
963
1127
  --foreground: var(--warning-600);
964
1128
  --background-border: color-mix(in srgb, var(--warning-600) 20%, var(--background-900));
965
- --background-hover: color-mix(in srgb, var(--warning-600) 15%, var(--background-900));
966
- --background-hover-border: color-mix(in srgb, var(--warning-600) 30%, var(--background-900));
967
- --background-pressed: color-mix(in srgb, var(--warning-600) 20%, var(--background-900));
968
- --background-pressed-border: color-mix(in srgb, var(--warning-600) 30%, var(--background-900));
969
1129
  --focus-visible: var(--warning-400);
970
1130
  }
971
1131
 
1132
+ .warning[data-hovered="true"]:not([data-disabled="true"]) {
1133
+ --background: color-mix(in srgb, var(--warning-600) 15%, var(--background-900));
1134
+ --background-border: color-mix(in srgb, var(--warning-600) 30%, var(--background-900));
1135
+ }
1136
+
1137
+ .warning[data-pressed="true"]:not([data-disabled="true"]) {
1138
+ --background: color-mix(in srgb, var(--warning-600) 20%, var(--background-900));
1139
+ --background-border: color-mix(in srgb, var(--warning-600) 30%, var(--background-900));
1140
+ }
1141
+
972
1142
  .info {
973
1143
  --background: color-mix(in srgb, var(--info-600) 10%, var(--background-900));
974
1144
  --foreground: var(--info-600);
975
1145
  --background-border: color-mix(in srgb, var(--info-600) 20%, var(--background-900));
976
- --background-hover: color-mix(in srgb, var(--info-600) 15%, var(--background-900));
977
- --background-hover-border: color-mix(in srgb, var(--info-600) 30%, var(--background-900));
978
- --background-pressed: color-mix(in srgb, var(--info-600) 20%, var(--background-900));
979
- --background-pressed-border: color-mix(in srgb, var(--info-600) 30%, var(--background-900));
980
1146
  --focus-visible: var(--info-400);
981
1147
  }
982
1148
 
1149
+ .info[data-hovered="true"]:not([data-disabled="true"]) {
1150
+ --background: color-mix(in srgb, var(--info-600) 15%, var(--background-900));
1151
+ --background-border: color-mix(in srgb, var(--info-600) 30%, var(--background-900));
1152
+ }
1153
+
1154
+ .info[data-pressed="true"]:not([data-disabled="true"]) {
1155
+ --background: color-mix(in srgb, var(--info-600) 20%, var(--background-900));
1156
+ --background-border: color-mix(in srgb, var(--info-600) 30%, var(--background-900));
1157
+ }
1158
+
983
1159
  .banner.note {
984
1160
  --background: var(--background-900);
985
1161
  --foreground: var(--foreground-200);