@vireo-ai/trellis-ui 0.1.0 → 0.1.2

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 (51) hide show
  1. package/package.json +4 -1
  2. package/src/components/accordion/styles.css +16 -0
  3. package/src/components/brand/styles.css +8 -0
  4. package/src/components/button/styles.css +178 -0
  5. package/src/components/date-picker/styles.css +426 -0
  6. package/src/components/field/styles.css +12 -0
  7. package/src/components/file-upload/styles.css +28 -0
  8. package/src/components/input/styles.css +11 -0
  9. package/src/components/radio/styles.css +112 -0
  10. package/src/components/scroll-area/styles.css +27 -0
  11. package/src/components/select/styles.css +51 -0
  12. package/src/components/sidebar/styles.css +10 -0
  13. package/src/components/toast/styles.css +43 -0
  14. package/src/components.css +20 -0
  15. package/src/theme.css +332 -46
  16. package/trellis_ui/static/trellis_ui/css/styles.css +955 -214
  17. package/trellis_ui/static/trellis_ui/js/esm/index.js +1149 -910
  18. package/trellis_ui/static/trellis_ui/js/esm/index.js.map +1 -1
  19. package/trellis_ui/static/trellis_ui/js/index.js +7 -7
  20. package/types/components/app/contract.d.ts +7 -2
  21. package/types/components/badge/contract.d.ts +8 -6
  22. package/types/components/box/contract.d.ts +29 -21
  23. package/types/components/box/index.d.ts +1 -1
  24. package/types/components/button/contract.d.ts +10 -7
  25. package/types/components/card/contract.d.ts +25 -11
  26. package/types/components/combobox/contract.d.ts +6 -3
  27. package/types/components/common.d.ts +239 -2
  28. package/types/components/date-picker/contract.d.ts +7 -4
  29. package/types/components/file-upload/index.d.ts +1 -0
  30. package/types/components/frame/contract.d.ts +43 -18
  31. package/types/components/frame/index.d.ts +2 -2
  32. package/types/components/heading/contract.d.ts +3 -2
  33. package/types/components/input/contract.d.ts +7 -3
  34. package/types/components/menu/contract.d.ts +1 -1
  35. package/types/components/modal/contract.d.ts +12 -6
  36. package/types/components/select/contract.d.ts +10 -7
  37. package/types/components/sidebar/contract.d.ts +1 -1
  38. package/types/components/table/contract.d.ts +1 -1
  39. package/types/components/tabs/index.d.ts +1 -0
  40. package/types/components/text/contract.d.ts +3 -2
  41. package/types/components/textarea/contract.d.ts +1 -0
  42. package/types/components/toast/contract.d.ts +11 -5
  43. package/types/components/toast/index.d.ts +2 -1
  44. package/types/index.d.ts +4 -4
  45. package/types/motion/animate.d.ts +4 -0
  46. package/types/motion/presence.d.ts +1 -1
  47. package/types/runtime/index.d.ts +4 -4
  48. package/types/runtime/manifest.d.ts +5 -1
  49. package/types/runtime/merge-bindings.d.ts +9 -0
  50. package/types/runtime/theme.d.ts +8 -3
  51. package/types/runtime/props.d.ts +0 -9
package/src/theme.css CHANGED
@@ -7,7 +7,7 @@
7
7
  @source not "../docs/static/**";
8
8
  @source not "../trellis_ui/static/**";
9
9
 
10
- @custom-variant dark (&:where(.dark, .dark *));
10
+ @custom-variant dark (&:where(.dark, .dark *):not(:where(.light, .light *)));
11
11
  @custom-variant ui-interactive (&:is([data-ui-interactive]));
12
12
  @custom-variant ui-interactive-surface (&:is([data-ui-interactive="surface"]));
13
13
  @custom-variant ui-active (&:is(:active, :focus-visible, [data-active], [data-highlighted]));
@@ -62,7 +62,9 @@
62
62
  --spacing-4: 1rem;
63
63
  --spacing-5: 1.25rem;
64
64
  --spacing-6: 1.5rem;
65
+ --spacing-7: 1.75rem;
65
66
  --spacing-8: 2rem;
67
+ --spacing-9: 2.25rem;
66
68
  --spacing-10: 2.5rem;
67
69
  --spacing-12: 3rem;
68
70
  --spacing-popover: var(--ui-popover-padding);
@@ -93,13 +95,25 @@
93
95
  --spacing-control-lg: 2rem;
94
96
  --spacing-control-xlg: 2.25rem;
95
97
 
98
+ --color-black-a1: rgb(0 0 0 / 0.04);
99
+ --color-black-a2: rgb(0 0 0 / 0.08);
100
+ --color-black-a3: rgb(0 0 0 / 0.12);
101
+ --color-black-a4: rgb(0 0 0 / 0.18);
102
+ --color-black-a5: rgb(0 0 0 / 0.28);
103
+ --color-black-a6: rgb(0 0 0 / 0.40);
104
+
96
105
  --shadow-border: var(--ui-shadow-border);
97
106
  --shadow-border-hover: var(--ui-shadow-border-hover);
98
- --shadow-1: 0 1px 2px rgb(0 0 0 / 0.04);
99
- --shadow-2: 0 1px 2px rgb(0 0 0 / 0.05), 0 8px 24px rgb(0 0 0 / 0.08);
100
- --shadow-3: 0 2px 4px rgb(0 0 0 / 0.05), 0 16px 48px rgb(0 0 0 / 0.14);
107
+ --shadow-1: var(--ui-shadow-1);
108
+ --shadow-2: var(--ui-shadow-2);
109
+ --shadow-3: var(--ui-shadow-3);
110
+ --shadow-4: var(--ui-shadow-4);
111
+ --shadow-5: var(--ui-shadow-5);
112
+ --shadow-6: var(--ui-shadow-6);
101
113
  --shadow-popover: var(--ui-popover-shadow);
102
114
  --shadow-panel: var(--ui-panel-shadow);
115
+ --shadow-dialog: var(--ui-dialog-shadow);
116
+ --shadow-modal: var(--ui-modal-shadow);
103
117
  --shadow-inset: inset 0 1px 1px rgb(0 0 0 / 0.04);
104
118
  --shadow-control: var(--ui-control-shadow);
105
119
  --shadow-focus: 0 0 0 3px var(--color-focus-a4);
@@ -249,13 +263,22 @@
249
263
  @theme {
250
264
  /* Semantic aliases that produce Tailwind utilities. */
251
265
  --color-app: var(--color-base-1);
252
- --color-app-subtle: var(--color-base-2);
253
- --color-surface: #ffffff;
254
- --color-surface-muted: var(--color-base-2);
255
- --color-surface-raised: #ffffff;
266
+ --color-chrome: var(--color-base-2);
267
+ --color-chrome-alpha: color-mix(in srgb, var(--color-chrome) 86%, transparent);
268
+ --color-surface-subtle: var(--color-base-2);
269
+ --color-surface-panel: var(--color-base-1);
270
+ --color-surface-panel-alpha: color-mix(in srgb, var(--color-surface-panel) 88%, transparent);
271
+ --color-surface-raised: var(--color-base-1);
272
+ --color-surface-overlay: var(--color-base-1);
273
+ --color-surface-overlay-alpha: color-mix(in srgb, var(--color-surface-overlay) 92%, transparent);
274
+ --color-surface-accent: var(--color-accent-9);
275
+ --color-surface-accent-hover: var(--color-accent-10);
276
+ --color-surface-accent-fg: var(--color-accent-contrast);
277
+ --color-surface-inverse: var(--color-base-12);
278
+ --color-surface-inverse-fg: var(--color-base-1);
256
279
  --color-foreground: var(--color-base-12);
257
280
  --color-foreground-muted: var(--color-base-11);
258
- --color-foreground-subtle: var(--color-base-10);
281
+ --color-foreground-subtle: var(--color-base-11);
259
282
  --color-border: var(--color-base-a5);
260
283
  --color-border-interactive: var(--color-base-a6);
261
284
  --color-border-strong: var(--color-base-a7);
@@ -274,8 +297,8 @@
274
297
  --color-accent-solid: var(--color-accent-11);
275
298
  --color-accent-solid-hover: var(--color-accent-12);
276
299
  --color-accent-contrast: white;
277
- --color-accent-surface: color-mix(in srgb, var(--color-accent-9) var(--ui-accent-strength), var(--color-surface));
278
- --color-accent-surface-hover: color-mix(in srgb, var(--color-accent-9) var(--ui-accent-hover-strength), var(--color-surface));
300
+ --color-accent-surface: color-mix(in srgb, var(--color-accent-9) var(--ui-accent-strength), var(--color-surface-panel));
301
+ --color-accent-surface-hover: color-mix(in srgb, var(--color-accent-9) var(--ui-accent-hover-strength), var(--color-surface-panel));
279
302
  --color-accent-border: color-mix(in srgb, var(--color-accent-9) var(--ui-accent-border-strength), var(--color-border));
280
303
  --color-accent-text: var(--color-accent-11);
281
304
  --color-danger-solid: var(--color-danger-11);
@@ -320,14 +343,16 @@
320
343
  --color-scrollbar-thumb-hover: var(--ui-scrollbar-thumb-bg-hover);
321
344
  --shadow-interactive-hover: var(--ui-interactive-shadow-hover);
322
345
  --shadow-interactive-selected: var(--ui-interactive-shadow-selected);
323
- --shadow-interactive-focus: var(--shadow-focus), var(--shadow-border-hover);
346
+ --shadow-interactive-focus: var(--ui-interactive-shadow-focus);
324
347
  }
325
348
 
326
- :root {
349
+ :root,
350
+ .light,
351
+ .dark {
327
352
  color-scheme: light;
328
353
 
329
354
  --ui-bg: var(--color-app);
330
- --ui-bg-subtle: var(--color-app-subtle);
355
+ --ui-bg-subtle: var(--color-surface-subtle);
331
356
  --ui-fg: var(--color-foreground);
332
357
  --ui-fg-muted: var(--color-foreground-muted);
333
358
  --ui-fg-subtle: var(--color-foreground-subtle);
@@ -339,17 +364,50 @@
339
364
  --ui-interactive-bg-selected-hover: var(--color-accent-surface-hover);
340
365
  --ui-interactive-shadow-hover: var(--shadow-border-hover);
341
366
  --ui-interactive-shadow-selected: 0 0 0 1px var(--color-accent-border);
367
+ --ui-interactive-shadow-focus: var(--shadow-focus), var(--shadow-border-hover);
342
368
  --ui-focus: var(--color-focus);
343
369
  --ui-focus-ring: var(--shadow-focus);
344
370
  --ui-overlay: var(--color-overlay);
371
+ --color-black-a1: rgb(0 0 0 / 0.04);
372
+ --color-black-a2: rgb(0 0 0 / 0.08);
373
+ --color-black-a3: rgb(0 0 0 / 0.12);
374
+ --color-black-a4: rgb(0 0 0 / 0.18);
375
+ --color-black-a5: rgb(0 0 0 / 0.28);
376
+ --color-black-a6: rgb(0 0 0 / 0.40);
377
+ --shadow-ring-weak: var(--color-base-a3);
378
+ --shadow-ring: var(--color-base-a5);
379
+ --shadow-ring-strong: var(--color-base-a6);
345
380
  --ui-shadow-border:
346
- 0px 0px 0px 1px rgb(0 0 0 / 0.06),
347
- 0px 1px 2px -1px rgb(0 0 0 / 0.06),
348
- 0px 2px 4px 0px rgb(0 0 0 / 0.04);
381
+ 0 0 0 1px var(--shadow-ring),
382
+ 0 1px 2px -1px var(--color-black-a1),
383
+ 0 2px 4px 0 var(--color-black-a1);
349
384
  --ui-shadow-border-hover:
350
- 0px 0px 0px 1px rgb(0 0 0 / 0.08),
351
- 0px 1px 2px -1px rgb(0 0 0 / 0.08),
352
- 0px 2px 4px 0px rgb(0 0 0 / 0.06);
385
+ 0 0 0 1px var(--shadow-ring-strong),
386
+ 0 1px 2px -1px var(--color-black-a2),
387
+ 0 2px 4px 0 var(--color-black-a2);
388
+ --ui-shadow-1: var(--shadow-border);
389
+ --ui-shadow-2:
390
+ 0 0 0 1px var(--shadow-ring),
391
+ 0 1px 1px var(--color-base-a2),
392
+ 0 2px 4px -2px var(--color-black-a2),
393
+ 0 4px 8px -4px var(--color-black-a1);
394
+ --ui-shadow-3:
395
+ 0 0 0 1px var(--shadow-ring),
396
+ 0 2px 4px -2px var(--color-base-a3),
397
+ 0 6px 16px -6px var(--color-black-a2),
398
+ 0 8px 24px -12px var(--color-black-a2);
399
+ --ui-shadow-4:
400
+ 0 0 0 1px var(--shadow-ring),
401
+ 0 8px 24px -8px var(--color-black-a2),
402
+ 0 12px 32px -16px var(--color-black-a3);
403
+ --ui-shadow-5:
404
+ 0 0 0 1px var(--shadow-ring),
405
+ 0 12px 40px -12px var(--color-black-a3),
406
+ 0 20px 64px -24px var(--color-black-a4);
407
+ --ui-shadow-6:
408
+ 0 0 0 1px var(--shadow-ring),
409
+ 0 16px 48px -12px var(--color-black-a4),
410
+ 0 24px 80px -24px var(--color-black-a5);
353
411
  --ui-accent-strength: 12%;
354
412
  --ui-accent-hover-strength: 16%;
355
413
  --ui-accent-border-strength: 38%;
@@ -371,34 +429,38 @@
371
429
  --ui-control-padding-x: 0.75rem;
372
430
  --ui-control-gap: 0.5rem;
373
431
  --ui-control-radius: var(--radius-3);
374
- --ui-control-bg: var(--color-surface);
432
+ --ui-control-bg: var(--color-surface-panel);
375
433
  --ui-control-bg-hover: var(--color-base-a2);
376
434
  --ui-control-bg-active: var(--color-base-a3);
377
435
  --ui-control-fg: var(--color-foreground);
378
436
  --ui-control-placeholder: var(--color-foreground-subtle);
379
437
  --ui-control-border: var(--color-border);
380
- --ui-control-border-hover: color-mix(in srgb, var(--ui-control-border) 88%, var(--ui-fg) 12%);
438
+ --ui-control-border-hover: color-mix(in srgb, var(--ui-control-border) 90%, var(--ui-fg) 10%);
381
439
  --ui-control-border-focus: var(--color-accent-9);
382
440
  --ui-control-border-invalid: var(--color-danger-border);
383
441
  --ui-control-border-invalid-hover: color-mix(in srgb, var(--ui-control-border-invalid) 84%, var(--color-danger-text) 16%);
384
442
  --ui-control-border-invalid-focus: var(--color-danger-9);
385
- --ui-control-shadow: var(--shadow-inset);
386
- --ui-panel-shadow:
387
- var(--ui-shadow-border),
388
- 0px 2px 4px rgb(0 0 0 / 0.05),
389
- 0px 16px 48px rgb(0 0 0 / 0.14);
390
-
391
- --ui-popover-bg: var(--color-surface-raised);
443
+ --ui-control-shadow: var(--ui-shadow-border);
444
+ --ui-control-shadow-hover: 0 0 0 1px var(--ui-control-border-hover);
445
+ --ui-control-shadow-focus: 0 0 0 1px var(--ui-control-border-focus);
446
+ --ui-control-shadow-invalid: 0 0 0 1px var(--ui-control-border-invalid);
447
+ --ui-control-shadow-invalid-hover: 0 0 0 1px var(--ui-control-border-invalid-hover);
448
+ --ui-control-shadow-invalid-focus: 0 0 0 1px var(--ui-control-border-invalid-focus);
449
+ --ui-panel-shadow: var(--shadow-2);
450
+
451
+ --ui-popover-bg: var(--color-surface-overlay);
392
452
  --ui-popover-fg: var(--color-foreground);
393
453
  --ui-popover-border: var(--color-border);
394
454
  --ui-popover-radius: var(--radius-4);
395
455
  --ui-popover-shadow:
396
- var(--ui-shadow-border),
397
- 0px 1px 2px rgb(0 0 0 / 0.05),
398
- 0px 8px 24px rgb(0 0 0 / 0.08);
456
+ var(--shadow-border),
457
+ 0 8px 24px -8px var(--color-black-a2),
458
+ 0 12px 32px -16px var(--color-black-a3);
459
+ --ui-dialog-shadow: var(--shadow-5);
460
+ --ui-modal-shadow: var(--shadow-6);
399
461
  --ui-popover-padding: 0.375rem;
400
462
  --ui-popover-z: var(--z-index-popover);
401
- --ui-toast-bg: var(--color-surface-raised);
463
+ --ui-toast-bg: var(--color-surface-overlay);
402
464
  --ui-toast-stack-peek: 8px;
403
465
 
404
466
  --ui-combobox-listbox-max-height: 16rem;
@@ -425,6 +487,166 @@
425
487
  --ui-scrollbar-thumb-bg-hover: var(--color-base-a7);
426
488
  --ui-scrollbar-thumb-radius: var(--radius-full);
427
489
 
490
+ --color-control: var(--ui-control-bg);
491
+ --color-control-hover: var(--ui-control-bg-hover);
492
+ --color-control-active: var(--ui-control-bg-active);
493
+ --color-control-fg: var(--ui-control-fg);
494
+ --color-control-placeholder: var(--ui-control-placeholder);
495
+ --color-control-border: var(--ui-control-border);
496
+ --color-control-border-focus: var(--ui-control-border-focus);
497
+ --color-control-border-invalid: var(--ui-control-border-invalid);
498
+ --color-control-border-invalid-focus: var(--ui-control-border-invalid-focus);
499
+ --color-focus: var(--color-accent-8);
500
+ --color-focus-a4: color-mix(in srgb, var(--color-focus) var(--ui-focus-strength), transparent);
501
+ --color-accent-solid: var(--color-accent-11);
502
+ --color-accent-solid-hover: var(--color-accent-12);
503
+ --color-accent-surface: color-mix(in srgb, var(--color-accent-9) var(--ui-accent-strength), var(--color-surface-panel));
504
+ --color-accent-surface-hover: color-mix(in srgb, var(--color-accent-9) var(--ui-accent-hover-strength), var(--color-surface-panel));
505
+ --color-accent-border: color-mix(in srgb, var(--color-accent-9) var(--ui-accent-border-strength), var(--color-border));
506
+ --color-danger-solid: var(--color-danger-11);
507
+ --color-danger-solid-hover: var(--color-danger-12);
508
+ --color-danger-contrast: white;
509
+ --color-success-solid: var(--color-success-9);
510
+ --color-success-solid-hover: var(--color-success-10);
511
+ --color-success-contrast: white;
512
+ --color-success-surface: var(--color-success-3);
513
+ --color-success-surface-hover: var(--color-success-4);
514
+ --color-success-border: var(--color-success-7);
515
+ --color-warning-solid: var(--color-warning-9);
516
+ --color-warning-solid-hover: var(--color-warning-10);
517
+ --color-warning-contrast: var(--color-warning-12);
518
+ --color-warning-surface: var(--color-warning-3);
519
+ --color-warning-surface-hover: var(--color-warning-4);
520
+ --color-warning-border: var(--color-warning-7);
521
+ --color-popover: var(--ui-popover-bg);
522
+ --color-popover-fg: var(--ui-popover-fg);
523
+ --color-popover-border: var(--ui-popover-border);
524
+ --color-toast: var(--ui-toast-bg);
525
+ --color-menu-item-hover: var(--ui-menu-item-bg-hover);
526
+ --color-menu-item-active: var(--ui-menu-item-bg-active);
527
+ --color-menu-item-fg: var(--ui-menu-item-fg);
528
+ --color-menu-item-muted: var(--ui-menu-item-fg-muted);
529
+ --color-menu-item-danger-hover: var(--ui-menu-item-danger-bg-hover);
530
+ --color-menu-item-danger-fg: var(--ui-menu-item-danger-fg);
531
+ --color-menu-separator: var(--ui-menu-separator);
532
+ --color-menu-heading-fg: var(--ui-menu-heading-fg);
533
+ --color-interactive-hover: var(--ui-interactive-bg-hover);
534
+ --color-interactive-active: var(--ui-interactive-bg-active);
535
+ --color-interactive-selected: var(--ui-interactive-bg-selected);
536
+ --color-interactive-selected-hover: var(--ui-interactive-bg-selected-hover);
537
+ --color-icon: var(--ui-icon-fg);
538
+ --color-scrollbar-thumb: var(--ui-scrollbar-thumb-bg);
539
+ --color-scrollbar-thumb-hover: var(--ui-scrollbar-thumb-bg-hover);
540
+ --shadow-interactive-hover: var(--ui-interactive-shadow-hover);
541
+ --shadow-interactive-selected: var(--ui-interactive-shadow-selected);
542
+ --shadow-interactive-focus: var(--ui-interactive-shadow-focus);
543
+ }
544
+
545
+ .light {
546
+ --color-base-1: #fcfcfd;
547
+ --color-base-2: #f9f9fb;
548
+ --color-base-3: #f0f0f3;
549
+ --color-base-4: #e8e8ec;
550
+ --color-base-5: #e0e1e6;
551
+ --color-base-6: #d9d9e0;
552
+ --color-base-7: #cdced6;
553
+ --color-base-8: #b9bbc6;
554
+ --color-base-9: #8b8d98;
555
+ --color-base-10: #80838d;
556
+ --color-base-11: #60646c;
557
+ --color-base-12: #1c2024;
558
+
559
+ --color-base-a1: #00005503;
560
+ --color-base-a2: #00005506;
561
+ --color-base-a3: #0000330f;
562
+ --color-base-a4: #00002d17;
563
+ --color-base-a5: #0009321f;
564
+ --color-base-a6: #00002f26;
565
+ --color-base-a7: #00062e32;
566
+ --color-base-a8: #00083046;
567
+ --color-base-a9: #00051d74;
568
+ --color-base-a10: #00071b7f;
569
+ --color-base-a11: #0007149f;
570
+ --color-base-a12: #000509e3;
571
+
572
+ --color-app: var(--color-base-1);
573
+ --color-chrome: var(--color-base-2);
574
+ --color-chrome-alpha: color-mix(in srgb, var(--color-chrome) 86%, transparent);
575
+ --color-surface-subtle: var(--color-base-2);
576
+ --color-surface-panel: var(--color-base-1);
577
+ --color-surface-panel-alpha: color-mix(in srgb, var(--color-surface-panel) 88%, transparent);
578
+ --color-surface-raised: var(--color-base-1);
579
+ --color-surface-overlay: var(--color-base-1);
580
+ --color-surface-overlay-alpha: color-mix(in srgb, var(--color-surface-overlay) 92%, transparent);
581
+ --color-surface-inverse: var(--color-base-12);
582
+ --color-surface-inverse-fg: var(--color-base-1);
583
+ --color-foreground: var(--color-base-12);
584
+ --color-foreground-muted: var(--color-base-11);
585
+ --color-foreground-subtle: var(--color-base-11);
586
+ --color-border: var(--color-base-a5);
587
+ --color-border-interactive: var(--color-base-a6);
588
+ --color-border-strong: var(--color-base-a7);
589
+ --color-overlay: rgb(0 0 0 / 0.35);
590
+ --ui-accent-strength: 12%;
591
+ --ui-accent-hover-strength: 16%;
592
+ --ui-accent-border-strength: 38%;
593
+ --ui-focus-strength: 24%;
594
+ --color-accent-contrast: white;
595
+ --color-accent-text: var(--color-accent-11);
596
+ --color-danger-surface: var(--color-danger-3);
597
+ --color-danger-surface-hover: var(--color-danger-4);
598
+ --color-danger-border: var(--color-danger-7);
599
+ --color-danger-text: var(--color-danger-11);
600
+ --color-success-text: var(--color-success-11);
601
+ --color-warning-text: var(--color-warning-11);
602
+ --color-black-a1: rgb(0 0 0 / 0.04);
603
+ --color-black-a2: rgb(0 0 0 / 0.08);
604
+ --color-black-a3: rgb(0 0 0 / 0.12);
605
+ --color-black-a4: rgb(0 0 0 / 0.18);
606
+ --color-black-a5: rgb(0 0 0 / 0.28);
607
+ --color-black-a6: rgb(0 0 0 / 0.40);
608
+ --shadow-ring-weak: var(--color-base-a3);
609
+ --shadow-ring: var(--color-base-a5);
610
+ --shadow-ring-strong: var(--color-base-a6);
611
+ --ui-shadow-border:
612
+ 0 0 0 1px var(--shadow-ring),
613
+ 0 1px 2px -1px var(--color-black-a1),
614
+ 0 2px 4px 0 var(--color-black-a1);
615
+ --ui-shadow-border-hover:
616
+ 0 0 0 1px var(--shadow-ring-strong),
617
+ 0 1px 2px -1px var(--color-black-a2),
618
+ 0 2px 4px 0 var(--color-black-a2);
619
+ --ui-shadow-1: var(--shadow-border);
620
+ --ui-shadow-2:
621
+ 0 0 0 1px var(--shadow-ring),
622
+ 0 1px 1px var(--color-base-a2),
623
+ 0 2px 4px -2px var(--color-black-a2),
624
+ 0 4px 8px -4px var(--color-black-a1);
625
+ --ui-shadow-3:
626
+ 0 0 0 1px var(--shadow-ring),
627
+ 0 2px 4px -2px var(--color-base-a3),
628
+ 0 6px 16px -6px var(--color-black-a2),
629
+ 0 8px 24px -12px var(--color-black-a2);
630
+ --ui-shadow-4:
631
+ 0 0 0 1px var(--shadow-ring),
632
+ 0 8px 24px -8px var(--color-black-a2),
633
+ 0 12px 32px -16px var(--color-black-a3);
634
+ --ui-shadow-5:
635
+ 0 0 0 1px var(--shadow-ring),
636
+ 0 12px 40px -12px var(--color-black-a3),
637
+ 0 20px 64px -24px var(--color-black-a4);
638
+ --ui-shadow-6:
639
+ 0 0 0 1px var(--shadow-ring),
640
+ 0 16px 48px -12px var(--color-black-a4),
641
+ 0 24px 80px -24px var(--color-black-a5);
642
+ --ui-panel-shadow: var(--shadow-2);
643
+ --ui-popover-shadow:
644
+ var(--shadow-border),
645
+ 0 8px 24px -8px var(--color-black-a2),
646
+ 0 12px 32px -16px var(--color-black-a3);
647
+ --ui-dialog-shadow: var(--shadow-5);
648
+ --ui-modal-shadow: var(--shadow-6);
649
+ --ui-toast-bg: var(--color-surface-overlay);
428
650
  }
429
651
 
430
652
  @utility max-h-xs {
@@ -453,22 +675,26 @@
453
675
 
454
676
  @layer components {
455
677
  [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"]):is(:hover, :active):not(:focus-within):not([data-state="open"]):not([data-disabled]):not([data-invalid]) {
456
- border-color: var(--ui-control-border-hover);
678
+ --ui-control-shadow: var(--ui-control-shadow-hover);
457
679
  }
458
680
 
459
681
  [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"]):focus-within:not([data-invalid]),
460
682
  [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"])[data-state="open"]:not([data-invalid]) {
461
- border-color: var(--ui-control-border-focus);
683
+ --ui-control-shadow: var(--ui-control-shadow-focus);
684
+ }
685
+
686
+ [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"])[data-invalid] {
687
+ --ui-control-shadow: var(--ui-control-shadow-invalid);
462
688
  }
463
689
 
464
690
  [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"])[data-invalid]:is(:hover, :active):not(:focus-within):not([data-state="open"]):not([data-disabled]) {
465
- border-color: var(--ui-control-border-invalid-hover);
691
+ --ui-control-shadow: var(--ui-control-shadow-invalid-hover);
466
692
  }
467
693
 
468
694
  [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"])[data-invalid]:focus-within:not([data-disabled]),
469
695
  [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"])[data-invalid][data-state="open"]:not([data-disabled]) {
470
- border-color: var(--ui-control-border-invalid-focus);
471
- box-shadow: var(--shadow-control), 0 0 0 3px var(--color-danger-a4);
696
+ --ui-control-shadow: var(--ui-control-shadow-invalid-focus);
697
+ box-shadow: var(--shadow-danger-focus);
472
698
  }
473
699
 
474
700
  [data-ui-control]:where([data-variant="outline"], [data-variant="enhanced"]):has(:focus-visible):not([data-invalid]) {
@@ -505,11 +731,17 @@
505
731
  --color-base-a12: #ffffffed;
506
732
 
507
733
  --color-app: var(--color-base-2);
508
- --color-app-subtle: var(--color-base-1);
509
- --color-surface: var(--color-base-2);
510
- --color-surface-muted: var(--color-base-1);
734
+ --color-chrome: var(--color-base-1);
735
+ --color-chrome-alpha: color-mix(in srgb, var(--color-chrome) 86%, transparent);
736
+ --color-surface-subtle: var(--color-base-1);
737
+ --color-surface-panel: var(--color-base-2);
738
+ --color-surface-panel-alpha: color-mix(in srgb, var(--color-surface-panel) 88%, transparent);
511
739
  --color-surface-raised: var(--color-base-3);
512
- --ui-toast-bg: var(--color-base-4);
740
+ --color-surface-overlay: var(--color-base-4);
741
+ --color-surface-overlay-alpha: color-mix(in srgb, var(--color-surface-overlay) 92%, transparent);
742
+ --color-surface-inverse: var(--color-base-12);
743
+ --color-surface-inverse-fg: var(--color-base-1);
744
+ --ui-toast-bg: var(--color-surface-overlay);
513
745
  --color-foreground: var(--color-base-12);
514
746
  --color-foreground-muted: var(--color-base-11);
515
747
  --color-foreground-subtle: var(--color-base-10);
@@ -529,8 +761,62 @@
529
761
  --color-danger-text: var(--color-danger-8);
530
762
  --color-success-text: var(--color-success-8);
531
763
  --color-warning-text: var(--color-warning-8);
532
- --ui-shadow-border: 0 0 0 1px rgb(255 255 255 / 0.07);
533
- --ui-shadow-border-hover: 0 0 0 1px rgb(255 255 255 / 0.11);
534
- --ui-popover-shadow: var(--ui-shadow-border);
535
- --ui-panel-shadow: var(--ui-shadow-border);
764
+ --color-black-a1: rgb(0 0 0 / 0.20);
765
+ --color-black-a2: rgb(0 0 0 / 0.32);
766
+ --color-black-a3: rgb(0 0 0 / 0.44);
767
+ --color-black-a4: rgb(0 0 0 / 0.56);
768
+ --color-black-a5: rgb(0 0 0 / 0.68);
769
+ --color-black-a6: rgb(0 0 0 / 0.76);
770
+ --shadow-ring-weak: var(--color-base-a3);
771
+ --shadow-ring: var(--color-base-a4);
772
+ --shadow-ring-strong: var(--color-base-a5);
773
+ --ui-shadow-border: 0 0 0 1px var(--shadow-ring-weak);
774
+ --ui-shadow-border-hover: 0 0 0 1px var(--shadow-ring);
775
+ --ui-control-shadow-hover: 0 0 0 1px var(--color-base-a7);
776
+ --ui-shadow-1: var(--shadow-border);
777
+ --ui-shadow-2:
778
+ 0 0 0 1px var(--shadow-ring-weak),
779
+ 0 1px 1px var(--color-black-a2),
780
+ 0 2px 4px -2px var(--color-black-a2),
781
+ 0 4px 8px -4px var(--color-black-a2);
782
+ --ui-shadow-3:
783
+ 0 0 0 1px var(--shadow-ring),
784
+ 0 2px 4px -2px var(--color-black-a2),
785
+ 0 6px 16px -6px var(--color-black-a3),
786
+ 0 8px 24px -12px var(--color-black-a3);
787
+ --ui-shadow-4:
788
+ 0 0 0 1px var(--shadow-ring),
789
+ 0 8px 24px -8px var(--color-black-a3),
790
+ 0 12px 32px -16px var(--color-black-a4);
791
+ --ui-shadow-5:
792
+ 0 0 0 1px var(--shadow-ring-strong),
793
+ 0 12px 40px -12px var(--color-black-a4),
794
+ 0 20px 64px -24px var(--color-black-a5);
795
+ --ui-shadow-6:
796
+ 0 0 0 1px var(--shadow-ring-strong),
797
+ 0 16px 48px -12px var(--color-black-a5),
798
+ 0 24px 80px -24px var(--color-black-a6);
799
+ --ui-panel-shadow: var(--shadow-2);
800
+ --ui-popover-shadow: var(--shadow-border);
801
+ --ui-dialog-shadow: var(--shadow-5);
802
+ --ui-modal-shadow: var(--shadow-6);
803
+ }
804
+
805
+ @supports (color: color-mix(in oklab, white, black)) {
806
+ :root,
807
+ .light {
808
+ --shadow-ring-weak: color-mix(in oklab, var(--color-base-a3), var(--color-base-3) 25%);
809
+ --shadow-ring: color-mix(in oklab, var(--color-base-a5), var(--color-base-5) 20%);
810
+ --shadow-ring-strong: color-mix(in oklab, var(--color-base-a6), var(--color-base-6) 20%);
811
+ }
812
+
813
+ .dark {
814
+ --shadow-ring-weak: var(--color-base-a3);
815
+ --shadow-ring: var(--color-base-a4);
816
+ --shadow-ring-strong: var(--color-base-a5);
817
+ }
818
+ }
819
+
820
+ html, body {
821
+ overscroll-behavior-y: none;
536
822
  }