ui-lab-theme-onyx 0.3.44 → 0.3.45

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 +393 -271
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ui-lab-theme-onyx",
3
- "version": "0.3.44",
3
+ "version": "0.3.45",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "main": "./styles.css",
package/styles.css CHANGED
@@ -1,6 +1,23 @@
1
1
  /* Onyx Theme - Button Styles */
2
2
 
3
+ :root {
4
+ --spacing: 0.25rem;
5
+ --spacing-xs: calc(var(--spacing) * 1);
6
+ --spacing-sm: calc(var(--spacing) * 2);
7
+ --spacing-md: calc(var(--spacing) * 4);
8
+ --spacing-lg: calc(var(--spacing) * 6);
9
+ --spacing-xl: calc(var(--spacing) * 8);
10
+
11
+ --hover-transition-enter-duration: 0ms;
12
+ --hover-transition-leave-duration: 300ms;
13
+
14
+ --hover-transition-duration: var(--hover-transition-leave-duration);
15
+ --hover-transition-timing-function: var(--ease-snappy-pop, ease-out);
16
+ }
17
+
18
+
3
19
  @layer components {
20
+ /* Universal variants (token presets) */
4
21
  [data-ring="true"] {
5
22
  --ring: #0f74c5;
6
23
  --ring-width: 2px;
@@ -22,64 +39,11 @@
22
39
  font-size: var(--text-xs);
23
40
  }
24
41
 
25
- .button.icon { @apply aspect-square }
26
- .button.sm { @apply px-2 py-1.5 text-xs font-semibold }
42
+ .button.sq { @apply aspect-square inline-flex items-center justify-center }
43
+ .button.sm { @apply px-2.5 py-1.5 text-xs font-semibold }
27
44
  .button.md { @apply px-3 py-1.5 }
28
45
  .button.lg { @apply px-10 py-2 }
29
46
 
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;
71
- }
72
-
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;
79
- }
80
-
81
- /* Gallery Styles */
82
-
83
47
  .gallery.item,
84
48
  [data-focus-surface="true"] {
85
49
  --background: var(--background-950);
@@ -111,18 +75,19 @@
111
75
  /* Card Styles */
112
76
 
113
77
  .card {
114
- --background: var(--background-800);
115
- --border: var(--background-700);
116
- --focus-ring: var(--accent-400);
78
+ --background: var(--background-900);
79
+ --foreground: var(--foreground-200);
80
+ --background-border: var(--background-700);
81
+ --focus-visible: var(--accent-400);
117
82
  }
118
83
 
119
84
  .card.header {
120
- --border: var(--background-700);
85
+ --background-border: var(--background-700);
121
86
  }
122
87
 
123
88
  .card.footer {
124
89
  --background: color-mix(in srgb, var(--background-900) 50%, transparent);
125
- --border: var(--background-700);
90
+ --background-border: var(--background-700);
126
91
  }
127
92
 
128
93
  /* List Styles */
@@ -147,17 +112,30 @@
147
112
  .group {
148
113
  --background: var(--background-950);
149
114
  --background-border: var(--background-700);
150
- }
151
-
152
- .group.button {
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 {
153
135
  --button-selected-background: var(--background-800);
154
136
  --button-selected-foreground: var(--foreground-100);
155
137
  }
156
138
 
157
- .group.ghost {
158
- --background: transparent;
159
- }
160
-
161
139
  /* Command Styles */
162
140
  .command {
163
141
  --background: var(--background-900);
@@ -165,7 +143,7 @@
165
143
  --background-pressed: var(--background-800);
166
144
  --background-list: var(--background-950);
167
145
  --background-footer: var(--background-800);
168
- --border-color: var(--background-700);
146
+ --border: var(--background-700);
169
147
  --foreground: var(--foreground-300);
170
148
  --foreground-muted: var(--foreground-400);
171
149
  --overlay: rgb(0 0 0 / 0.2);
@@ -182,82 +160,120 @@
182
160
  --focus-ring: var(--foreground-300);
183
161
  }
184
162
 
185
- .date.date-header {
163
+ .date .date-header {
186
164
  --header-color: var(--foreground-300);
187
165
  }
188
166
 
189
- .date.date-day-headers {
167
+ .date .date-day-headers {
190
168
  --day-headers-background: var(--background-900);
191
169
  }
192
170
 
193
- .date.date-day-header {
171
+ .date .date-day-header {
194
172
  --day-header-color: var(--foreground-400);
195
173
  }
196
174
 
197
- .date.date-nav-button {
175
+ .date .date-nav-button {
198
176
  --nav-button-color: var(--foreground-400);
199
177
  --nav-button-background-hover: var(--background-800);
200
178
  }
201
179
 
202
- .date.date-grid {
180
+ .date .date-grid {
203
181
  --grid-background: var(--background-900);
204
182
  }
205
183
 
206
- .date.date-day {
184
+ .date .date-day {
207
185
  --cell-text: var(--foreground-300);
208
186
  }
209
187
 
210
- .date.date-day[data-selected="true"] {
188
+ .date .date-day[data-selected="true"] {
211
189
  --cell-background: var(--background-800);
212
190
  --cell-text: var(--foreground-50);
213
191
  }
214
192
 
215
- .date.date-day[data-today="true"] {
193
+ .date .date-day[data-today="true"] {
216
194
  --cell-background: var(--background-800);
217
195
  --cell-text: var(--foreground-50);
218
196
  }
219
197
 
220
- .date.date-day[data-disabled="true"],
221
- .date.date-day[data-out-of-range="true"] {
198
+ .date .date-day[data-disabled="true"],
199
+ .date .date-day[data-out-of-range="true"] {
222
200
  --cell-text: var(--foreground-400);
223
201
  }
224
202
 
225
- .date.date-day:hover:not([data-disabled="true"]):not([data-out-of-range="true"]) {
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);
226
205
  --cell-background: var(--background-800);
227
206
  }
228
207
 
208
+ /* Table Styles */
209
+
210
+ .table {
211
+ --background: var(--background-950);
212
+ --foreground: var(--foreground-300);
213
+ --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
+ --focus-ring: var(--foreground-300);
224
+ }
225
+
226
+ .table .header,
227
+ .table .header-cell {
228
+ --header-background: var(--background-900);
229
+ --header-foreground: var(--foreground-400);
230
+ }
231
+
232
+ .table .body,
233
+ .table .element {
234
+ --body-background: var(--background-900);
235
+ }
236
+
237
+ .table .filter-grid {
238
+ --filter-grid-background: var(--background-900);
239
+ }
240
+
241
+ .table .filter-label {
242
+ --filter-label-foreground: var(--foreground-400);
243
+ }
244
+
229
245
  /* Checkbox Styles */
230
246
 
231
247
  .checkbox {
232
248
  --background: var(--background-900);
233
249
  --background-border: var(--background-700);
234
- --background-hover: color-mix(in srgb, var(--background-500) 10%, transparent);
250
+ --background-hover: color-mix(in srgb, var(--background-500) 10%, var(--background-900));
235
251
  --background-hover-border: var(--background-600);
236
252
  --ring: var(--accent-500);
237
253
  }
238
254
 
239
255
  .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);
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);
244
260
  }
245
261
 
246
262
  .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);
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);
251
267
  }
252
268
 
253
- .checkbox.checkmark,
254
- .checkbox.indeterminate {
255
- --icon-foreground: white;
269
+ .checkbox .checkmark,
270
+ .checkbox .indeterminate {
271
+ --icon-foreground: color-mix(in srgb, var(--accent-500) 20%, var(--background-950));
256
272
  }
257
273
 
258
- .checkbox-root.helper-text {
259
- --helper-text-foreground: currentColor;
260
- --helper-text-error-foreground: white;
274
+ .checkbox-root {
275
+ --helper-foreground: var(--foreground-400);
276
+ --helper-error-foreground: var(--danger-600);
261
277
  }
262
278
 
263
279
  /* Color Styles */
@@ -268,23 +284,23 @@
268
284
  --focus-visible: var(--accent-500);
269
285
  }
270
286
 
271
- .color.canvas-pointer {
287
+ .color .canvas-pointer {
272
288
  --pointer-border: color-mix(in srgb, var(--foreground-200) 50%, transparent);
273
289
  }
274
290
 
275
- .color.hue-thumb,
276
- .color.opacity-thumb {
291
+ .color .hue-thumb,
292
+ .color .opacity-thumb {
277
293
  --thumb-border: white;
278
294
  --thumb-background: white;
279
295
  }
280
296
 
281
- .color.opacity-track {
297
+ .color .opacity-track {
282
298
  --checkerboard-dark: var(--background-800);
283
299
  --checkerboard-light: var(--background-700);
284
300
  }
285
301
 
286
- .color.preview-swatch,
287
- .color.preview {
302
+ .color .preview-swatch,
303
+ .color .preview {
288
304
  --checkerboard-dark: var(--background-700);
289
305
  --checkerboard-light: var(--background-800);
290
306
  }
@@ -297,15 +313,15 @@
297
313
  --error-foreground: var(--danger-600);
298
314
  }
299
315
 
300
- .label.required-indicator {
316
+ .label .required-indicator {
301
317
  --required-color: var(--danger-600);
302
318
  }
303
319
 
304
- .label.helper-text {
320
+ .label .helper-text {
305
321
  --helper-color: var(--foreground-400);
306
322
  }
307
323
 
308
- .label.helper-text[data-error] {
324
+ .label .helper-text[data-error] {
309
325
  --helper-error-color: var(--danger-600);
310
326
  }
311
327
 
@@ -325,6 +341,42 @@
325
341
  font-weight: var(--font-weight-medium)
326
342
  }
327
343
 
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
+
328
380
  .input[data-error] {
329
381
  --ring: var(--danger-600);
330
382
  --ring-border: var(--ring);
@@ -340,16 +392,16 @@
340
392
  box-shadow: none;
341
393
  }
342
394
 
343
- .input.icon-wrapper {
344
- color: var(--foreground-400);
395
+ .input .icon {
396
+ --foreground: var(--foreground-400);
345
397
  }
346
398
 
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);
399
+ .input .stepper {
400
+ --foreground: var(--foreground-400);
401
+ --hover-background: var(--background-800);
402
+ --hover-color: var(--foreground-200);
403
+ --active-background: var(--background-700);
404
+ --active-color: var(--accent-500);
353
405
  }
354
406
 
355
407
  /* Radio Styles */
@@ -359,25 +411,27 @@
359
411
  --background-border: var(--background-700);
360
412
  --background-selected: var(--accent-500);
361
413
  --background-selected-border: var(--accent-500);
362
- --background-hover: var(--accent-500);
414
+ --background-hover: var(--background-900);
363
415
  --background-hover-border: var(--background-500);
364
416
  --background-error-border: var(--danger-500);
365
417
  --dot-color: transparent;
366
- --dot-selected-color: var(--accent-50);
418
+ --dot-selected-color: var(--foreground-400);
367
419
  --focus-visible: rgb(59, 130, 246);
368
420
  }
369
421
 
370
- .radio.radio-label {
422
+ .radio-group .radio-label,
423
+ .radio-item .radio-label {
371
424
  --foreground: var(--foreground-300);
372
425
  --foreground-disabled: var(--foreground-400);
373
426
  }
374
427
 
375
- .radio.radio-description {
428
+ .radio-group .radio-description,
429
+ .radio-item .radio-description {
376
430
  --foreground: var(--foreground-400);
377
431
  --foreground-error: var(--danger-500);
378
432
  }
379
433
 
380
- .radio.helper-text {
434
+ .radio-item .helper-text {
381
435
  --foreground: var(--foreground-400);
382
436
  --foreground-error: var(--danger-500);
383
437
  }
@@ -416,21 +470,21 @@
416
470
  --foreground-size: var(--text-xs)
417
471
  }
418
472
 
419
- .select.ghost {
473
+ .select .ghost {
420
474
  --background: transparent;
421
475
  --background-border: transparent;
422
476
  --background-hover: color-mix(in srgb, var(--background-700) 50%, transparent);
423
477
  --background-pressed: color-mix(in srgb, var(--background-700) 50%, transparent);
424
478
  }
425
479
 
426
- .select.content,
427
- .select.sub-content {
480
+ .select .content,
481
+ .select .sub-content {
428
482
  --background: var(--background-900);
429
483
  --background-border: var(--background-700);
430
484
  }
431
485
 
432
- .select.item,
433
- .select.sub-trigger {
486
+ .select .item,
487
+ .select .sub-trigger {
434
488
  --foreground: var(--foreground-300);
435
489
  --foreground-muted: var(--foreground-400);
436
490
  --icon-foreground: var(--foreground-300);
@@ -441,11 +495,15 @@
441
495
  --item-background-highlighted: var(--background-highlighted);
442
496
  }
443
497
 
444
- .select.placeholder {
498
+ .select .placeholder {
445
499
  --foreground-muted: var(--foreground-400);
446
500
  }
447
501
 
448
- .select.search-trigger {
502
+ .select .empty-state {
503
+ font-size: var(--text-xs);
504
+ }
505
+
506
+ .select .search-trigger {
449
507
  --focus-visible: var(--accent-500);
450
508
  }
451
509
 
@@ -461,7 +519,8 @@
461
519
  }
462
520
 
463
521
  .slider .thumb {
464
- --background: var(--accent-500);
522
+ --background: white;
523
+ --background-border: color-mix(in srgb, var(--background-500) 40%, transparent);;
465
524
  --background-focused: var(--accent-400);
466
525
  --background-disabled: var(--background-500);
467
526
  --focus-visible: color-mix(in srgb, var(--accent-500) 40%, transparent);
@@ -475,10 +534,10 @@
475
534
  --foreground: var(--background-500);
476
535
  --foreground-active: white;
477
536
 
478
- --border-color: var(--background-600);
479
- --border-color-hover: transparent;
480
- --border-color-pressed: transparent;
481
- --border-color-active: transparent;
537
+ --border: var(--background-600);
538
+ --border-hover: transparent;
539
+ --border-pressed: transparent;
540
+ --border-active: transparent;
482
541
 
483
542
  --focus-visible: 0 0 0 3px color-mix(in srgb, var(--accent-500) 40%, transparent);
484
543
  }
@@ -500,7 +559,7 @@
500
559
  --background-error-border: var(--danger-600);
501
560
  }
502
561
 
503
- .textarea.scroll-wrapper {
562
+ .textarea-scope .scroll-wrapper {
504
563
  --background: var(--background-950);
505
564
  --background-border: var(--background-700);
506
565
  --background-hover: var(--background-900);
@@ -508,16 +567,16 @@
508
567
  --disabled-opacity: 0.6;
509
568
  }
510
569
 
511
- .textarea.scroll-wrapper[data-error] {
570
+ .textarea-scope .scroll-wrapper[data-error] {
512
571
  --background-error-border: var(--danger-600);
513
572
  }
514
573
 
515
- .textarea.resize-handle {
574
+ .textarea-scope .resize-handle {
516
575
  --handle-background: color-mix(in srgb, var(--foreground-400) 72%, transparent);
517
576
  --handle-hover-background: color-mix(in srgb, var(--foreground-200) 90%, transparent);
518
577
  }
519
578
 
520
- .textarea.character-count {
579
+ .textarea-scope .character-count {
521
580
  --count-foreground: var(--foreground-400);
522
581
  --count-over-limit-foreground: var(--danger-600);
523
582
  }
@@ -530,41 +589,6 @@
530
589
  --border: var(--info-600);
531
590
  }
532
591
 
533
- .banner.note {
534
- --background: var(--background-900);
535
- --foreground: var(--foreground-200);
536
- --border: var(--background-700);
537
- --icon-color: var(--background-500);
538
- }
539
-
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
592
  /* Badge Styles */
569
593
 
570
594
  .badge.sm {
@@ -587,63 +611,28 @@
587
611
  font-size: var(--text-xs)
588
612
  }
589
613
 
590
- .badge.dismiss {
614
+ .badge .dismiss {
591
615
  --dismiss-foreground: var(--foreground-400);
592
616
  --dismiss-hover-background: color-mix(in srgb, var(--background-700) 80%, var(--background-900));
593
617
  --dismiss-pressed-background: var(--background-700);
594
618
  --dismiss-focus-visible: var(--accent-400);
595
619
  }
596
620
 
597
- .badge.default {
598
- --background: color-mix(in srgb, var(--background-600) 10%, var(--background-900));
599
- --foreground: var(--foreground-200);
600
- --background-border: var(--background-700);
601
- }
602
-
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
621
  /* Popover Styles */
634
622
 
635
- .popover.content {
636
- --popover-fill: var(--background-900);
637
- --popover-border-color: var(--background-700);
623
+ .popover .content {
624
+ --background: var(--background-900);
625
+ --background-hover: var(--background-900);
626
+ --background-border: var(--background-700);
638
627
  }
639
628
 
640
- .popover.frame {
629
+ .popover .frame {
641
630
  --foreground: var(--foreground-200);
642
631
  }
643
632
 
644
633
  /* Tooltip Styles */
645
634
 
646
- .tooltip.content {
635
+ .tooltip .content {
647
636
  --background: var(--background-900);
648
637
  --background-hover: var(--background-900);
649
638
  --background-border: var(--background-700);
@@ -651,7 +640,7 @@
651
640
  font-weight: var(--font-weight-medium);
652
641
  }
653
642
 
654
- .tooltip.frame {
643
+ .tooltip .frame {
655
644
  --foreground: var(--foreground-200);
656
645
  }
657
646
 
@@ -662,23 +651,23 @@
662
651
  --fill-background: color-mix(in srgb, var(--accent-600) 60%, var(--background-500));
663
652
  }
664
653
 
665
- .progress.label-row {
654
+ .progress .label-row {
666
655
  --foreground: var(--foreground-400);
667
656
  }
668
657
 
669
- .progress[data-variant="default"] .fill {
658
+ .progress .bar[data-variant="default"] .fill {
670
659
  --fill-background: var(--accent-500);
671
660
  }
672
661
 
673
- .progress[data-variant="success"] .fill {
662
+ .progress .bar[data-variant="success"] .fill {
674
663
  --fill-background: var(--success-500);
675
664
  }
676
665
 
677
- .progress[data-variant="warning"] .fill {
666
+ .progress .bar[data-variant="warning"] .fill {
678
667
  --fill-background: var(--warning-500);
679
668
  }
680
669
 
681
- .progress[data-variant="error"] .fill {
670
+ .progress .bar[data-variant="error"] .fill {
682
671
  --fill-background: var(--danger-500);
683
672
  }
684
673
 
@@ -697,83 +686,61 @@
697
686
  --background-border: var(--background-600);
698
687
  }
699
688
 
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));
689
+ .toast .icon {
690
+ --foreground: currentColor;
716
691
  }
717
692
 
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));
693
+ .toast .title {
694
+ --foreground: var(--foreground-100);
722
695
  }
723
696
 
724
- .toast.icon {
725
- --foreground: currentColor;
697
+ .toast .description {
698
+ --foreground: var(--foreground-300);
726
699
  }
727
700
 
728
- .toast.danger.icon {
701
+ .toast.danger .icon {
729
702
  --foreground: var(--danger-600);
730
703
  }
731
704
 
732
- .toast.success.icon {
705
+ .toast.success .icon {
733
706
  --foreground: var(--success-600);
734
707
  }
735
708
 
736
- .toast.info.icon {
709
+ .toast.info .icon {
737
710
  --foreground: var(--info-600);
738
711
  }
739
712
 
740
- .toast.warning.icon {
713
+ .toast.warning .icon {
741
714
  --foreground: var(--warning-600);
742
715
  }
743
716
 
744
- .toast.title {
745
- --foreground: var(--foreground-100);
746
- }
747
-
748
- .toast.description {
749
- --foreground: var(--foreground-300);
750
- }
751
-
752
- .toast.close {
717
+ .toast .close {
753
718
  --foreground: currentColor;
754
719
  --background-hover: transparent;
755
720
  --focus-visible: var(--accent-400);
756
721
  }
757
722
 
758
- .toast.danger.close {
723
+
724
+
725
+ .toast.danger .close {
759
726
  --foreground: color-mix(in srgb, var(--danger-600) 60%, var(--foreground-50));
760
727
  --background-hover: color-mix(in srgb, var(--danger-500) 20%, var(--background-900));
761
728
  --focus-visible: var(--danger-400);
762
729
  }
763
730
 
764
- .toast.success.close {
731
+ .toast.success .close {
765
732
  --foreground: color-mix(in srgb, var(--success-600) 60%, var(--foreground-50));
766
733
  --background-hover: color-mix(in srgb, var(--success-500) 20%, var(--background-900));
767
734
  --focus-visible: var(--success-400);
768
735
  }
769
736
 
770
- .toast.info.close {
737
+ .toast.info .close {
771
738
  --foreground: color-mix(in srgb, var(--info-600) 60%, var(--foreground-50));
772
739
  --background-hover: color-mix(in srgb, var(--info-500) 20%, var(--background-900));
773
740
  --focus-visible: var(--info-400);
774
741
  }
775
742
 
776
- .toast.warning.close {
743
+ .toast.warning .close {
777
744
  --foreground: color-mix(in srgb, var(--warning-600) 60%, var(--foreground-50));
778
745
  --background-hover: color-mix(in srgb, var(--warning-500) 20%, var(--background-900));
779
746
  --focus-visible: var(--warning-400);
@@ -781,8 +748,8 @@
781
748
 
782
749
  /* Menu Styles */
783
750
 
784
- .menu.content,
785
- .menu.sub-content {
751
+ .menu .content,
752
+ .menu .sub-content {
786
753
  --background: var(--background-900);
787
754
  --background-border: var(--background-700);
788
755
  --content-open-animation: slide-in-from-top 0.15s var(--ease-snappy-pop);
@@ -790,24 +757,24 @@
790
757
  font-size: var(--text-xs)
791
758
  }
792
759
 
793
- .menu.trigger {
760
+ .menu .trigger {
794
761
  --background-pressed: var(--background-700);
795
762
  }
796
763
 
797
- .menu.item,
798
- .menu.checkbox-item,
799
- .menu.radio-item,
800
- .menu.sub-trigger {
764
+ .menu .item,
765
+ .menu .checkbox-item,
766
+ .menu .radio-item,
767
+ .menu .sub-trigger {
801
768
  --foreground: var(--foreground-300);
802
769
  --background-focused: color-mix(in srgb, var(--background-700) 50%, transparent);
803
770
  }
804
771
 
805
- .menu.item-indicator {
772
+ .menu .item-indicator {
806
773
  --indicator-foreground: var(--accent-300);
807
774
  }
808
775
 
809
- .menu.label,
810
- .menu.shortcut {
776
+ .menu .label,
777
+ .menu .shortcut {
811
778
  --foreground-muted: var(--foreground-400);
812
779
  }
813
780
 
@@ -843,7 +810,7 @@
843
810
  }
844
811
 
845
812
  .tabs.list[data-variant="underline"][data-orientation="vertical"] {
846
- --border-color: var(--background-700);
813
+ --border: var(--background-700);
847
814
  }
848
815
 
849
816
  .tabs.trigger {
@@ -884,21 +851,21 @@
884
851
  --scrollbar-thumb-hover-background: var(--foreground-400);
885
852
  }
886
853
 
887
- .modal.title {
854
+ .modal .title {
888
855
  --title-foreground: var(--foreground-100);
889
856
  }
890
857
 
891
- .modal.close {
858
+ .modal .close {
892
859
  --close-foreground: var(--foreground-400);
893
860
  --close-hover-foreground: var(--foreground-200);
894
861
  --focus-visible: var(--accent-500);
895
862
  }
896
863
 
897
- .modal.footer {
864
+ .modal .footer {
898
865
  --footer-background: var(--background-900);
899
866
  }
900
867
 
901
- .modal.backdrop {
868
+ .modal .backdrop {
902
869
  --backdrop-background: rgb(0 0 0 / 50%);
903
870
  }
904
871
 
@@ -907,13 +874,168 @@
907
874
  }
908
875
 
909
876
  /* Scroll Component */
910
- .scroll.track {
877
+ .scroll .track {
911
878
  --track-background: transparent;
912
879
  }
913
880
 
914
- .scroll.thumb {
881
+ .scroll .thumb {
915
882
  --thumb-background: var(--background-700);
916
883
  --thumb-background-hover: var(--background-600);
917
884
  --thumb-background-pressed: color-mix(in srgb, var(--background-500) 40%, var(--background-900));
918
885
  }
919
886
  }
887
+
888
+ @layer utilities {
889
+ .primary {
890
+ --background: var(--foreground-100);
891
+ --foreground: var(--background-900);
892
+ --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));
897
+ }
898
+
899
+ .secondary {
900
+ --background: var(--background-900);
901
+ --foreground: var(--foreground-200);
902
+ --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);
907
+ }
908
+
909
+ .outline {
910
+ --background: transparent;
911
+ --foreground: var(--foreground-300);
912
+ --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
+ outline: unset !important /* override tailwindcss */
918
+ }
919
+
920
+ .danger {
921
+ --background: color-mix(in srgb, var(--danger-500) 15%, transparent);
922
+ --foreground: var(--danger-600);
923
+ --background-border: transparent;
924
+ --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;
929
+ }
930
+
931
+ .ghost {
932
+ --background: transparent;
933
+ --foreground: var(--foreground-300);
934
+ --background-border: transparent;
935
+ --background-hover: var(--background-800);
936
+ --background-hover-border: transparent;
937
+ }
938
+
939
+ .default {
940
+ --background: color-mix(in srgb, var(--background-600) 10%, var(--background-900));
941
+ --foreground: var(--foreground-200);
942
+ --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
+ --focus-visible: var(--accent-400);
948
+ }
949
+
950
+ .success {
951
+ --background: color-mix(in srgb, var(--success-600) 10%, var(--background-900));
952
+ --foreground: var(--success-600);
953
+ --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
+ --focus-visible: var(--success-400);
959
+ }
960
+
961
+ .warning {
962
+ --background: color-mix(in srgb, var(--warning-600) 10%, var(--background-900));
963
+ --foreground: var(--warning-600);
964
+ --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
+ --focus-visible: var(--warning-400);
970
+ }
971
+
972
+ .info {
973
+ --background: color-mix(in srgb, var(--info-600) 10%, var(--background-900));
974
+ --foreground: var(--info-600);
975
+ --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
+ --focus-visible: var(--info-400);
981
+ }
982
+
983
+ .banner.note {
984
+ --background: var(--background-900);
985
+ --foreground: var(--foreground-200);
986
+ --border: var(--background-600);
987
+ --icon-color: currentColor;
988
+ }
989
+
990
+ .banner.info {
991
+ --background: color-mix(in srgb, var(--info-600) 10%, var(--background-900));
992
+ --foreground: var(--foreground-200);
993
+ --border: color-mix(in srgb, var(--info-600) 20%, var(--background-900));
994
+ --icon-color: var(--info-600);
995
+ }
996
+
997
+ .banner.success {
998
+ --background: color-mix(in srgb, var(--success-600) 10%, var(--background-900));
999
+ --foreground: var(--foreground-200);
1000
+ --border: color-mix(in srgb, var(--success-600) 20%, var(--background-900));
1001
+ --icon-color: var(--success-600);
1002
+ }
1003
+
1004
+ .banner.warning {
1005
+ --background: color-mix(in srgb, var(--warning-600) 10%, var(--background-900));
1006
+ --foreground: var(--foreground-200);
1007
+ --border: color-mix(in srgb, var(--warning-600) 20%, var(--background-900));
1008
+ --icon-color: var(--warning-600);
1009
+ }
1010
+
1011
+ .banner.danger {
1012
+ --background: color-mix(in srgb, var(--danger-600) 10%, var(--background-900));
1013
+ --foreground: var(--foreground-200);
1014
+ --border: color-mix(in srgb, var(--danger-600) 20%, var(--background-900));
1015
+ --icon-color: var(--danger-600);
1016
+ }
1017
+
1018
+ .toast.danger {
1019
+ --background: color-mix(in srgb, var(--danger-600) 10%, var(--background-900));
1020
+ --foreground: var(--foreground-200);
1021
+ --background-border: color-mix(in srgb, var(--danger-600) 20%, var(--background-900));
1022
+ }
1023
+
1024
+ .toast.success {
1025
+ --background: color-mix(in srgb, var(--success-600) 10%, var(--background-900));
1026
+ --foreground: var(--foreground-200);
1027
+ --background-border: color-mix(in srgb, var(--success-600) 20%, var(--background-900));
1028
+ }
1029
+
1030
+ .toast.info {
1031
+ --background: color-mix(in srgb, var(--info-600) 10%, var(--background-900));
1032
+ --foreground: var(--foreground-200);
1033
+ --background-border: color-mix(in srgb, var(--info-600) 20%, var(--background-900));
1034
+ }
1035
+
1036
+ .toast.warning {
1037
+ --background: color-mix(in srgb, var(--warning-600) 10%, var(--background-900));
1038
+ --foreground: var(--foreground-200);
1039
+ --background-border: color-mix(in srgb, var(--warning-600) 20%, var(--background-900));
1040
+ }
1041
+ }