ui-lab-theme-onyx 0.3.44 → 0.3.46

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