@zvk/ui 0.1.8 → 0.1.9

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 (59) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +1 -1
  3. package/dist/components/alert-dialog/alert-dialog.d.ts +1 -1
  4. package/dist/components/alert-dialog/alert-dialog.js +18 -10
  5. package/dist/components/combobox/combobox.js +3 -1
  6. package/dist/components/command/command-filter.js +1 -1
  7. package/dist/components/command/command.d.ts +5 -0
  8. package/dist/components/command/command.js +9 -2
  9. package/dist/components/command/index.d.ts +1 -1
  10. package/dist/components/context-menu/context-menu.js +1 -1
  11. package/dist/components/date-range-picker/date-range-picker.d.ts +27 -0
  12. package/dist/components/date-range-picker/date-range-picker.js +193 -0
  13. package/dist/components/date-range-picker/index.d.ts +2 -0
  14. package/dist/components/date-range-picker/index.js +2 -0
  15. package/dist/components/dialog/dialog.d.ts +1 -1
  16. package/dist/components/dialog/dialog.js +19 -14
  17. package/dist/components/dropdown-menu/dropdown-menu.d.ts +2 -2
  18. package/dist/components/dropdown-menu/dropdown-menu.js +24 -19
  19. package/dist/components/file-dropzone/file-dropzone.d.ts +25 -0
  20. package/dist/components/file-dropzone/file-dropzone.js +171 -0
  21. package/dist/components/file-dropzone/index.d.ts +2 -0
  22. package/dist/components/file-dropzone/index.js +2 -0
  23. package/dist/components/form/form.d.ts +16 -1
  24. package/dist/components/form/form.js +13 -2
  25. package/dist/components/form/index.d.ts +1 -1
  26. package/dist/components/hover-card/hover-card.d.ts +1 -1
  27. package/dist/components/hover-card/hover-card.js +12 -3
  28. package/dist/components/index.d.ts +6 -0
  29. package/dist/components/index.js +3 -0
  30. package/dist/components/kbd/index.d.ts +2 -0
  31. package/dist/components/kbd/index.js +1 -0
  32. package/dist/components/kbd/kbd.d.ts +15 -0
  33. package/dist/components/kbd/kbd.js +10 -0
  34. package/dist/components/menubar/menubar.js +1 -1
  35. package/dist/components/popover/popover.d.ts +1 -1
  36. package/dist/components/popover/popover.js +14 -24
  37. package/dist/components/select/select.d.ts +1 -1
  38. package/dist/components/select/select.js +88 -8
  39. package/dist/components/sheet/sheet.d.ts +1 -1
  40. package/dist/components/sheet/sheet.js +17 -12
  41. package/dist/components/table/index.d.ts +1 -1
  42. package/dist/components/table/table.d.ts +37 -0
  43. package/dist/components/table/table.js +30 -2
  44. package/dist/components/toast/index.d.ts +1 -1
  45. package/dist/components/toast/toast.d.ts +18 -0
  46. package/dist/components/toast/toast.js +60 -0
  47. package/dist/components/tooltip/tooltip.d.ts +1 -1
  48. package/dist/components/tooltip/tooltip.js +12 -3
  49. package/dist/internal/floating/transform-origin.d.ts +2 -0
  50. package/dist/internal/floating/transform-origin.js +22 -0
  51. package/dist/internal/presence/index.d.ts +2 -0
  52. package/dist/internal/presence/index.js +2 -0
  53. package/dist/internal/presence/use-presence.d.ts +18 -0
  54. package/dist/internal/presence/use-presence.js +119 -0
  55. package/dist/styles.css +1710 -224
  56. package/dist/tokens/token-types.d.ts +4 -0
  57. package/dist/tokens/tokens.d.ts +41 -5
  58. package/dist/tokens/tokens.js +45 -9
  59. package/package.json +135 -61
package/dist/styles.css CHANGED
@@ -6,6 +6,9 @@
6
6
  :root {
7
7
  --zvk-ui-font-family-sans: "Aptos", "SF Pro Text", "Segoe UI Variable", ui-sans-serif, system-ui, sans-serif;
8
8
  --zvk-ui-font-family-mono: "SF Mono", "Cascadia Code", ui-monospace, monospace;
9
+ --zvk-ui-font-family-primary: var(--zvk-ui-font-family-sans);
10
+ --zvk-ui-font-family-secondary: var(--zvk-ui-font-family-sans);
11
+ --zvk-ui-font-family-tertiary: var(--zvk-ui-font-family-mono);
9
12
  --zvk-ui-font-size-xs: 0.75rem;
10
13
  --zvk-ui-font-size-sm: 0.875rem;
11
14
  --zvk-ui-font-size-md: 0.9375rem;
@@ -25,6 +28,7 @@
25
28
  --zvk-ui-space-5: 1.25rem;
26
29
  --zvk-ui-space-6: 1.5rem;
27
30
  --zvk-ui-space-8: 2rem;
31
+ --zvk-ui-space-10: 2.5rem;
28
32
 
29
33
  --zvk-ui-radius-xs: 0.25rem;
30
34
  --zvk-ui-radius-sm: 0.375rem;
@@ -42,18 +46,36 @@
42
46
  --zvk-ui-container-lg: 64rem;
43
47
  --zvk-ui-container-xl: 80rem;
44
48
 
49
+ --zvk-ui-material-surface-backdrop-filter: none;
50
+ --zvk-ui-material-floating-backdrop-filter: none;
51
+ --zvk-ui-material-control-backdrop-filter: none;
52
+ --zvk-ui-material-glass-highlight: 0 0 0 0 transparent;
53
+ --zvk-ui-material-glass-shadow: var(--zvk-ui-shadow-sm);
54
+ --zvk-ui-material-overlay-background: color-mix(in srgb, var(--zvk-ui-color-foreground) 28%, transparent);
55
+ --zvk-ui-material-reduced-transparency-surface: var(--zvk-ui-color-surface);
56
+ --zvk-ui-material-reduced-transparency-surface-raised: var(--zvk-ui-color-surface-raised);
57
+ --zvk-ui-material-reduced-transparency-control: var(--zvk-ui-control-background);
58
+
59
+ --zvk-ui-z-index-base: 0;
45
60
  --zvk-ui-z-index-overlay: 1000;
61
+ --zvk-ui-z-index-modal: calc(var(--zvk-ui-z-index-overlay) + 1);
46
62
  --zvk-ui-z-index-popover: 1100;
47
63
  --zvk-ui-z-popover: var(--zvk-ui-z-index-popover);
48
64
  --zvk-ui-z-index-tooltip: 1200;
49
65
  --zvk-ui-z-index-toast: 1300;
50
66
 
51
67
  --zvk-ui-opacity-disabled: 0.56;
68
+ --zvk-ui-duration-instant: 80ms;
52
69
  --zvk-ui-duration-fast: 120ms;
53
70
  --zvk-ui-duration-normal: 180ms;
71
+ --zvk-ui-duration-slow: 240ms;
54
72
  --zvk-ui-ease-standard: cubic-bezier(0.2, 0, 0, 1);
73
+ --zvk-ui-ease-enter: cubic-bezier(0.16, 1, 0.3, 1);
74
+ --zvk-ui-ease-exit: cubic-bezier(0.7, 0, 0.84, 0);
75
+ --zvk-ui-ease-emphasized: cubic-bezier(0.2, 0.8, 0.2, 1);
55
76
  --zvk-ui-focus-ring: 0 0 0 3px color-mix(in srgb, var(--zvk-ui-color-ring) 24%, transparent);
56
77
  }
78
+
57
79
  }
58
80
 
59
81
 
@@ -92,6 +114,21 @@
92
114
  --zvk-ui-control-hover: #f8fafc;
93
115
  --zvk-ui-control-active: #eef4ff;
94
116
  --zvk-ui-card-border: #7f8ea3;
117
+ --zvk-ui-material-overlay-background: rgb(255 255 255 / 0.96);
118
+ --zvk-ui-button-backdrop-filter: var(--zvk-ui-material-control-backdrop-filter);
119
+ --zvk-ui-select-content-backdrop-filter: var(--zvk-ui-material-floating-backdrop-filter);
120
+ --zvk-ui-dialog-content-backdrop-filter: var(--zvk-ui-material-floating-backdrop-filter);
121
+ --zvk-ui-alert-dialog-content-backdrop-filter: var(--zvk-ui-material-floating-backdrop-filter);
122
+ --zvk-ui-sheet-content-backdrop-filter: var(--zvk-ui-material-floating-backdrop-filter);
123
+ --zvk-ui-popover-content-backdrop-filter: var(--zvk-ui-material-floating-backdrop-filter);
124
+ --zvk-ui-hover-card-content-backdrop-filter: var(--zvk-ui-material-floating-backdrop-filter);
125
+ --zvk-ui-tooltip-backdrop-filter: var(--zvk-ui-material-floating-backdrop-filter);
126
+ --zvk-ui-dropdown-menu-content-backdrop-filter: var(--zvk-ui-material-floating-backdrop-filter);
127
+ --zvk-ui-combobox-popup-backdrop-filter: var(--zvk-ui-material-floating-backdrop-filter);
128
+ --zvk-ui-context-menu-content-backdrop-filter: var(--zvk-ui-material-floating-backdrop-filter);
129
+ --zvk-ui-menubar-content-backdrop-filter: var(--zvk-ui-material-floating-backdrop-filter);
130
+ --zvk-ui-sidebar-shell-sidebar-backdrop-filter: var(--zvk-ui-material-surface-backdrop-filter);
131
+ --zvk-ui-toast-backdrop-filter: var(--zvk-ui-material-floating-backdrop-filter);
95
132
  }
96
133
 
97
134
  [data-zvk-ui-theme="dark"] {
@@ -126,6 +163,28 @@
126
163
  --zvk-ui-control-hover: #172233;
127
164
  --zvk-ui-control-active: #1b2f50;
128
165
  --zvk-ui-card-border: #5c708a;
166
+ --zvk-ui-material-overlay-background: rgb(17 24 33 / 0.96);
167
+ }
168
+
169
+ @media (prefers-reduced-transparency: reduce) {
170
+ :root,
171
+ .zvk-ui-root {
172
+ --zvk-ui-color-surface: var(--zvk-ui-material-reduced-transparency-surface);
173
+ --zvk-ui-color-surface-raised: var(--zvk-ui-material-reduced-transparency-surface-raised);
174
+ --zvk-ui-control-background: var(--zvk-ui-material-reduced-transparency-control);
175
+ --zvk-ui-material-surface-backdrop-filter: none;
176
+ --zvk-ui-material-floating-backdrop-filter: none;
177
+ --zvk-ui-material-control-backdrop-filter: none;
178
+ }
179
+ }
180
+
181
+ [data-zvk-ui-transparency="reduced"] {
182
+ --zvk-ui-color-surface: var(--zvk-ui-material-reduced-transparency-surface);
183
+ --zvk-ui-color-surface-raised: var(--zvk-ui-material-reduced-transparency-surface-raised);
184
+ --zvk-ui-control-background: var(--zvk-ui-material-reduced-transparency-control);
185
+ --zvk-ui-material-surface-backdrop-filter: none;
186
+ --zvk-ui-material-floating-backdrop-filter: none;
187
+ --zvk-ui-material-control-backdrop-filter: none;
129
188
  }
130
189
  }
131
190
 
@@ -180,7 +239,7 @@
180
239
  :where(.zvk-ui-root, [data-zvk-ui-scope]) {
181
240
  background: var(--zvk-ui-color-background);
182
241
  color: var(--zvk-ui-color-foreground);
183
- font-family: var(--zvk-ui-font-family-sans);
242
+ font-family: var(--zvk-ui-font-family-primary);
184
243
  line-height: var(--zvk-ui-line-height-normal);
185
244
  }
186
245
  }
@@ -197,14 +256,15 @@
197
256
  --zvk-ui-button-shadow: var(--zvk-ui-shadow-xs);
198
257
  align-items: center;
199
258
  appearance: none;
259
+ backdrop-filter: var(--zvk-ui-button-backdrop-filter, var(--zvk-ui-material-control-backdrop-filter));
200
260
  background: var(--zvk-ui-button-bg);
201
261
  border: 1px solid var(--zvk-ui-button-border);
202
262
  border-radius: var(--zvk-ui-radius-md);
203
- box-shadow: var(--zvk-ui-button-shadow);
263
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-button-shadow);
204
264
  color: var(--zvk-ui-button-fg);
205
265
  cursor: pointer;
206
266
  display: inline-flex;
207
- font-family: var(--zvk-ui-font-family-sans);
267
+ font-family: var(--zvk-ui-font-family-primary);
208
268
  font-size: var(--zvk-ui-font-size-sm);
209
269
  font-weight: 600;
210
270
  gap: var(--zvk-ui-control-gap);
@@ -229,7 +289,7 @@
229
289
  }
230
290
 
231
291
  :where(.zvk-ui-button:focus-visible) {
232
- box-shadow: var(--zvk-ui-button-shadow), var(--zvk-ui-focus-ring);
292
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-button-shadow), var(--zvk-ui-focus-ring);
233
293
  outline: 0;
234
294
  }
235
295
 
@@ -297,6 +357,16 @@
297
357
  :where(.zvk-ui-button__content) {
298
358
  min-width: 0;
299
359
  }
360
+
361
+ @media (prefers-reduced-motion: reduce) {
362
+ :where(.zvk-ui-button) {
363
+ transition: background var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), border-color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), box-shadow var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
364
+ }
365
+
366
+ :where(.zvk-ui-button:active:not(:disabled, [data-disabled="true"])) {
367
+ transform: none;
368
+ }
369
+ }
300
370
  }
301
371
 
302
372
 
@@ -306,10 +376,11 @@
306
376
  align-items: center;
307
377
  aspect-ratio: 1;
308
378
  appearance: none;
379
+ backdrop-filter: var(--zvk-ui-material-control-backdrop-filter);
309
380
  background: var(--zvk-ui-control-background);
310
381
  border: 1px solid var(--zvk-ui-color-border);
311
382
  border-radius: var(--zvk-ui-radius-md);
312
- box-shadow: var(--zvk-ui-shadow-xs);
383
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-shadow-xs);
313
384
  color: var(--zvk-ui-color-foreground);
314
385
  cursor: pointer;
315
386
  display: inline-flex;
@@ -325,7 +396,7 @@
325
396
  }
326
397
 
327
398
  :where(.zvk-ui-icon-button:focus-visible) {
328
- box-shadow: var(--zvk-ui-shadow-xs), var(--zvk-ui-focus-ring);
399
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-shadow-xs), var(--zvk-ui-focus-ring);
329
400
  outline: 0;
330
401
  }
331
402
 
@@ -372,6 +443,16 @@
372
443
  border-color: color-mix(in srgb, var(--zvk-ui-color-destructive) 82%, black);
373
444
  color: white;
374
445
  }
446
+
447
+ @media (prefers-reduced-motion: reduce) {
448
+ :where(.zvk-ui-icon-button) {
449
+ transition: background var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), border-color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), box-shadow var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
450
+ }
451
+
452
+ :where(.zvk-ui-icon-button:active:not(:disabled, [data-disabled="true"])) {
453
+ transform: none;
454
+ }
455
+ }
375
456
  }
376
457
 
377
458
 
@@ -384,7 +465,7 @@
384
465
  border-radius: var(--zvk-ui-radius-full);
385
466
  color: var(--zvk-ui-badge-color, var(--zvk-ui-color-foreground));
386
467
  display: inline-flex;
387
- font-family: var(--zvk-ui-font-family-sans);
468
+ font-family: var(--zvk-ui-font-family-primary);
388
469
  font-size: var(--zvk-ui-font-size-xs);
389
470
  font-weight: 650;
390
471
  gap: var(--zvk-ui-space-1);
@@ -434,6 +515,7 @@
434
515
  /* src/components/card/card.css */
435
516
  @layer zvk-ui-components {
436
517
  :where(.zvk-ui-card) {
518
+ backdrop-filter: var(--zvk-ui-card-backdrop-filter, var(--zvk-ui-material-surface-backdrop-filter));
437
519
  background: var(--zvk-ui-color-surface);
438
520
  border: 1px solid var(--zvk-ui-card-border);
439
521
  border-radius: var(--zvk-ui-radius-lg);
@@ -443,8 +525,9 @@
443
525
  }
444
526
 
445
527
  :where(.zvk-ui-card[data-variant="elevated"]) {
528
+ --zvk-ui-card-backdrop-filter: var(--zvk-ui-material-floating-backdrop-filter);
446
529
  background: var(--zvk-ui-color-surface-raised);
447
- box-shadow: var(--zvk-ui-shadow-sm);
530
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-material-glass-shadow);
448
531
  }
449
532
 
450
533
  :where(.zvk-ui-card[data-variant="ghost"]) {
@@ -490,7 +573,7 @@
490
573
 
491
574
  :where(.zvk-ui-card__title) {
492
575
  color: var(--zvk-ui-color-foreground);
493
- font-family: var(--zvk-ui-font-family-sans);
576
+ font-family: var(--zvk-ui-font-family-secondary);
494
577
  font-size: var(--zvk-ui-font-size-lg);
495
578
  font-weight: 700;
496
579
  line-height: var(--zvk-ui-line-height-tight);
@@ -573,7 +656,7 @@
573
656
 
574
657
  @media (prefers-reduced-motion: reduce) {
575
658
  .zvk-ui-spinner::before {
576
- animation-duration: 1.2s;
659
+ animation: none;
577
660
  }
578
661
  }
579
662
  }
@@ -590,7 +673,7 @@
590
673
  }
591
674
 
592
675
  :where(.zvk-ui-skeleton[data-animate="true"]) {
593
- animation: zvk-ui-skeleton-shimmer 1.4s var(--zvk-ui-ease-standard) infinite;
676
+ animation: zvk-ui-skeleton-shimmer calc(var(--zvk-ui-duration-normal) * 8) var(--zvk-ui-ease-standard) infinite;
594
677
  }
595
678
 
596
679
  :where(.zvk-ui-skeleton[data-rounded="sm"]) {
@@ -624,7 +707,7 @@
624
707
  :where(.zvk-ui-label) {
625
708
  color: var(--zvk-ui-color-foreground);
626
709
  display: inline-flex;
627
- font-family: var(--zvk-ui-font-family-sans);
710
+ font-family: var(--zvk-ui-font-family-secondary);
628
711
  font-size: var(--zvk-ui-label-font-size, var(--zvk-ui-font-size-sm));
629
712
  font-weight: 650;
630
713
  gap: var(--zvk-ui-space-1);
@@ -658,7 +741,7 @@
658
741
  :where(.zvk-ui-progress__label),
659
742
  :where(.zvk-ui-progress__value) {
660
743
  color: var(--zvk-ui-color-muted-foreground);
661
- font-family: var(--zvk-ui-font-family-sans);
744
+ font-family: var(--zvk-ui-font-family-secondary);
662
745
  font-size: var(--zvk-ui-font-size-xs);
663
746
  font-weight: 600;
664
747
  line-height: var(--zvk-ui-line-height-tight);
@@ -711,7 +794,7 @@
711
794
  }
712
795
 
713
796
  :where(.zvk-ui-progress[data-indeterminate="true"] .zvk-ui-progress__indicator) {
714
- animation: zvk-ui-progress-indeterminate 1.2s var(--zvk-ui-ease-standard) infinite;
797
+ animation: zvk-ui-progress-indeterminate calc(var(--zvk-ui-duration-normal) * 7) var(--zvk-ui-ease-standard) infinite;
715
798
  width: 40%;
716
799
  }
717
800
 
@@ -783,7 +866,7 @@
783
866
 
784
867
  :where(.zvk-ui-alert__title) {
785
868
  color: var(--zvk-ui-color-foreground);
786
- font-family: var(--zvk-ui-font-family-sans);
869
+ font-family: var(--zvk-ui-font-family-secondary);
787
870
  font-size: var(--zvk-ui-font-size-sm);
788
871
  font-weight: 700;
789
872
  line-height: var(--zvk-ui-line-height-tight);
@@ -816,7 +899,7 @@
816
899
  border-radius: var(--zvk-ui-radius-full);
817
900
  color: var(--zvk-ui-color-muted-foreground);
818
901
  display: inline-flex;
819
- font-family: var(--zvk-ui-font-family-sans);
902
+ font-family: var(--zvk-ui-font-family-primary);
820
903
  font-size: var(--zvk-ui-avatar-font-size, var(--zvk-ui-font-size-sm));
821
904
  font-weight: 700;
822
905
  height: var(--zvk-ui-avatar-size);
@@ -869,14 +952,14 @@
869
952
  color: var(--zvk-ui-color-foreground);
870
953
  cursor: pointer;
871
954
  display: inline-flex;
872
- font-family: var(--zvk-ui-font-family-sans);
955
+ font-family: var(--zvk-ui-font-family-primary);
873
956
  font-size: var(--zvk-ui-font-size-xs);
874
957
  font-weight: 650;
875
958
  height: var(--zvk-ui-copy-button-height, var(--zvk-ui-control-height-sm));
876
959
  justify-content: center;
877
960
  line-height: 1;
878
961
  padding-inline: var(--zvk-ui-space-3);
879
- transition: background var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), border-color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), box-shadow var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
962
+ transition: background var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), border-color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), box-shadow var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
880
963
  white-space: nowrap;
881
964
  }
882
965
 
@@ -924,7 +1007,7 @@
924
1007
 
925
1008
  :where(.zvk-ui-copyable-text__label) {
926
1009
  color: var(--zvk-ui-color-muted-foreground);
927
- font-family: var(--zvk-ui-font-family-sans);
1010
+ font-family: var(--zvk-ui-font-family-primary);
928
1011
  font-size: var(--zvk-ui-font-size-xs);
929
1012
  font-weight: 650;
930
1013
  line-height: var(--zvk-ui-line-height-tight);
@@ -933,7 +1016,7 @@
933
1016
  :where(.zvk-ui-copyable-text__value) {
934
1017
  color: var(--zvk-ui-color-foreground);
935
1018
  flex: 1 1 auto;
936
- font-family: var(--zvk-ui-font-family-mono);
1019
+ font-family: var(--zvk-ui-font-family-tertiary);
937
1020
  font-size: var(--zvk-ui-font-size-sm);
938
1021
  line-height: var(--zvk-ui-line-height-tight);
939
1022
  min-width: 0;
@@ -976,7 +1059,7 @@
976
1059
  color: var(--zvk-ui-color-foreground);
977
1060
  display: inline-flex;
978
1061
  flex: 0 0 auto;
979
- font-family: var(--zvk-ui-font-family-sans);
1062
+ font-family: var(--zvk-ui-font-family-primary);
980
1063
  font-size: var(--zvk-ui-font-size-xs);
981
1064
  font-weight: 650;
982
1065
  min-height: var(--zvk-ui-control-height-sm);
@@ -995,7 +1078,7 @@
995
1078
  :where(.zvk-ui-file-upload-input__control) {
996
1079
  color: var(--zvk-ui-color-foreground);
997
1080
  flex: 0 1 auto;
998
- font-family: var(--zvk-ui-font-family-sans);
1081
+ font-family: var(--zvk-ui-font-family-primary);
999
1082
  font-size: var(--zvk-ui-font-size-sm);
1000
1083
  min-width: 0;
1001
1084
  }
@@ -1032,6 +1115,187 @@
1032
1115
  text-overflow: ellipsis;
1033
1116
  white-space: nowrap;
1034
1117
  }
1118
+
1119
+ @media (max-width: 40rem) {
1120
+ :where(.zvk-ui-file-upload-input) {
1121
+ align-items: stretch;
1122
+ flex-wrap: wrap;
1123
+ row-gap: var(--zvk-ui-space-2);
1124
+ }
1125
+
1126
+ :where(.zvk-ui-file-upload-input__button, .zvk-ui-file-upload-input__control) {
1127
+ min-height: max(var(--zvk-ui-file-upload-input-height, var(--zvk-ui-control-height-md)), var(--zvk-ui-control-height-md));
1128
+ }
1129
+
1130
+ :where(.zvk-ui-file-upload-input__control) {
1131
+ flex: 1 1 12rem;
1132
+ max-inline-size: 100%;
1133
+ }
1134
+
1135
+ :where(.zvk-ui-file-upload-input__summary) {
1136
+ flex-basis: 100%;
1137
+ overflow: visible;
1138
+ overflow-wrap: anywhere;
1139
+ text-overflow: clip;
1140
+ white-space: normal;
1141
+ }
1142
+ }
1143
+ }
1144
+
1145
+
1146
+ /* src/components/file-dropzone/file-dropzone.css */
1147
+ @layer zvk-ui-components {
1148
+ :where(.zvk-ui-file-dropzone) {
1149
+ display: grid;
1150
+ gap: var(--zvk-ui-field-gap);
1151
+ }
1152
+
1153
+ :where(.zvk-ui-file-dropzone__surface) {
1154
+ background: var(--zvk-ui-control-background);
1155
+ border: 1px dashed var(--zvk-ui-file-dropzone-border-color, var(--zvk-ui-control-border));
1156
+ border-radius: var(--zvk-ui-radius-lg);
1157
+ box-shadow: var(--zvk-ui-shadow-xs);
1158
+ color: var(--zvk-ui-color-foreground);
1159
+ display: grid;
1160
+ min-height: 7rem;
1161
+ overflow: hidden;
1162
+ position: relative;
1163
+ transition:
1164
+ background-color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard),
1165
+ border-color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard),
1166
+ box-shadow var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
1167
+ }
1168
+
1169
+ :where(.zvk-ui-file-dropzone__surface:hover) {
1170
+ --zvk-ui-file-dropzone-border-color: var(--zvk-ui-control-border-strong);
1171
+ }
1172
+
1173
+ :where(.zvk-ui-file-dropzone:focus-within .zvk-ui-file-dropzone__surface) {
1174
+ --zvk-ui-file-dropzone-border-color: var(--zvk-ui-color-ring);
1175
+ box-shadow: var(--zvk-ui-shadow-xs), var(--zvk-ui-focus-ring);
1176
+ }
1177
+
1178
+ :where(.zvk-ui-file-dropzone[data-dragging="true"] .zvk-ui-file-dropzone__surface) {
1179
+ --zvk-ui-file-dropzone-border-color: var(--zvk-ui-color-primary);
1180
+ background: var(--zvk-ui-color-primary-soft);
1181
+ }
1182
+
1183
+ :where(.zvk-ui-file-dropzone[data-invalid="true"] .zvk-ui-file-dropzone__surface) {
1184
+ --zvk-ui-file-dropzone-border-color: var(--zvk-ui-color-destructive);
1185
+ }
1186
+
1187
+ :where(.zvk-ui-file-dropzone[data-disabled="true"] .zvk-ui-file-dropzone__surface) {
1188
+ cursor: not-allowed;
1189
+ }
1190
+
1191
+ :where(.zvk-ui-file-dropzone__panel) {
1192
+ align-items: center;
1193
+ display: grid;
1194
+ justify-items: center;
1195
+ padding: var(--zvk-ui-space-5);
1196
+ pointer-events: none;
1197
+ text-align: center;
1198
+ }
1199
+
1200
+ :where(.zvk-ui-file-dropzone__prompt) {
1201
+ color: var(--zvk-ui-color-muted-foreground);
1202
+ font-family: var(--zvk-ui-font-family-secondary);
1203
+ font-size: var(--zvk-ui-font-size-sm);
1204
+ font-weight: 650;
1205
+ line-height: var(--zvk-ui-line-height-tight);
1206
+ }
1207
+
1208
+ :where(.zvk-ui-file-dropzone__input) {
1209
+ cursor: pointer;
1210
+ inset: 0;
1211
+ opacity: 0;
1212
+ position: absolute;
1213
+ }
1214
+
1215
+ :where(.zvk-ui-file-dropzone__input:disabled) {
1216
+ cursor: not-allowed;
1217
+ }
1218
+
1219
+ :where(.zvk-ui-file-dropzone__list) {
1220
+ display: grid;
1221
+ gap: var(--zvk-ui-space-2);
1222
+ list-style: none;
1223
+ margin: 0;
1224
+ padding: 0;
1225
+ }
1226
+
1227
+ :where(.zvk-ui-file-dropzone__item) {
1228
+ align-items: center;
1229
+ background: var(--zvk-ui-color-surface);
1230
+ border: 1px solid var(--zvk-ui-color-border);
1231
+ border-radius: var(--zvk-ui-radius-md);
1232
+ color: var(--zvk-ui-color-foreground);
1233
+ display: grid;
1234
+ gap: var(--zvk-ui-space-1) var(--zvk-ui-space-3);
1235
+ grid-template-columns: minmax(0, 1fr) auto;
1236
+ padding: var(--zvk-ui-space-2) var(--zvk-ui-space-3);
1237
+ }
1238
+
1239
+ :where(.zvk-ui-file-dropzone__item-name) {
1240
+ font-size: var(--zvk-ui-font-size-sm);
1241
+ font-weight: 650;
1242
+ line-height: var(--zvk-ui-line-height-tight);
1243
+ min-width: 0;
1244
+ overflow: hidden;
1245
+ text-overflow: ellipsis;
1246
+ white-space: nowrap;
1247
+ }
1248
+
1249
+ :where(.zvk-ui-file-dropzone__item-meta) {
1250
+ color: var(--zvk-ui-color-muted-foreground);
1251
+ font-size: var(--zvk-ui-font-size-xs);
1252
+ line-height: var(--zvk-ui-line-height-tight);
1253
+ min-width: 0;
1254
+ }
1255
+
1256
+ :where(.zvk-ui-file-dropzone__remove) {
1257
+ align-items: center;
1258
+ align-self: center;
1259
+ background: transparent;
1260
+ border: 0;
1261
+ border-radius: var(--zvk-ui-radius-sm);
1262
+ color: var(--zvk-ui-color-primary);
1263
+ cursor: pointer;
1264
+ display: inline-flex;
1265
+ font-family: var(--zvk-ui-font-family-primary);
1266
+ font-size: var(--zvk-ui-font-size-xs);
1267
+ font-weight: 650;
1268
+ grid-column: 2;
1269
+ grid-row: 1 / span 2;
1270
+ min-height: var(--zvk-ui-control-height-sm);
1271
+ padding-inline: var(--zvk-ui-space-2);
1272
+ }
1273
+
1274
+ :where(.zvk-ui-file-dropzone__remove:hover:not(:disabled)) {
1275
+ background: var(--zvk-ui-color-primary-soft);
1276
+ }
1277
+
1278
+ :where(.zvk-ui-file-dropzone__remove:focus-visible) {
1279
+ box-shadow: var(--zvk-ui-focus-ring);
1280
+ outline: 0;
1281
+ }
1282
+
1283
+ :where(.zvk-ui-file-dropzone__remove:disabled) {
1284
+ cursor: not-allowed;
1285
+ opacity: var(--zvk-ui-opacity-disabled);
1286
+ }
1287
+
1288
+ @media (max-width: 40rem) {
1289
+ :where(.zvk-ui-file-dropzone__item) {
1290
+ grid-template-columns: minmax(0, 1fr);
1291
+ }
1292
+
1293
+ :where(.zvk-ui-file-dropzone__remove) {
1294
+ grid-column: 1;
1295
+ grid-row: auto;
1296
+ justify-self: start;
1297
+ }
1298
+ }
1035
1299
  }
1036
1300
 
1037
1301
 
@@ -1049,7 +1313,7 @@
1049
1313
 
1050
1314
  :where(.zvk-ui-error-fallback__title) {
1051
1315
  color: var(--zvk-ui-color-foreground);
1052
- font-family: var(--zvk-ui-font-family-sans);
1316
+ font-family: var(--zvk-ui-font-family-primary);
1053
1317
  font-size: var(--zvk-ui-font-size-sm);
1054
1318
  font-weight: 700;
1055
1319
  line-height: var(--zvk-ui-line-height-tight);
@@ -1082,7 +1346,7 @@
1082
1346
 
1083
1347
  :where(.zvk-ui-field__label) {
1084
1348
  color: var(--zvk-ui-color-foreground);
1085
- font-family: var(--zvk-ui-font-family-sans);
1349
+ font-family: var(--zvk-ui-font-family-secondary);
1086
1350
  font-size: var(--zvk-ui-font-size-sm);
1087
1351
  font-weight: 650;
1088
1352
  line-height: var(--zvk-ui-line-height-tight);
@@ -1117,7 +1381,7 @@
1117
1381
 
1118
1382
  :where(.zvk-ui-form-label) {
1119
1383
  color: var(--zvk-ui-color-foreground);
1120
- font-family: var(--zvk-ui-font-family-sans);
1384
+ font-family: var(--zvk-ui-font-family-secondary);
1121
1385
  font-size: var(--zvk-ui-font-size-sm);
1122
1386
  font-weight: 650;
1123
1387
  line-height: var(--zvk-ui-line-height-tight);
@@ -1135,6 +1399,45 @@
1135
1399
  font-weight: 600;
1136
1400
  }
1137
1401
 
1402
+ :where(.zvk-ui-form-validation-summary) {
1403
+ background: color-mix(in srgb, var(--zvk-ui-color-destructive) 8%, var(--zvk-ui-color-surface));
1404
+ border: 1px solid color-mix(in srgb, var(--zvk-ui-color-destructive) 24%, var(--zvk-ui-color-border));
1405
+ border-radius: var(--zvk-ui-radius-md);
1406
+ color: var(--zvk-ui-color-foreground);
1407
+ display: grid;
1408
+ gap: var(--zvk-ui-space-3);
1409
+ padding: var(--zvk-ui-space-4);
1410
+ }
1411
+
1412
+ :where(.zvk-ui-form-validation-summary__title) {
1413
+ color: var(--zvk-ui-color-foreground);
1414
+ font-family: var(--zvk-ui-font-family-secondary);
1415
+ font-size: var(--zvk-ui-font-size-sm);
1416
+ font-weight: 700;
1417
+ line-height: var(--zvk-ui-line-height-tight);
1418
+ margin: 0;
1419
+ }
1420
+
1421
+ :where(.zvk-ui-form-validation-summary__list) {
1422
+ display: grid;
1423
+ gap: var(--zvk-ui-space-2);
1424
+ margin: 0;
1425
+ padding-inline-start: var(--zvk-ui-space-5);
1426
+ }
1427
+
1428
+ :where(.zvk-ui-form-validation-summary__item) {
1429
+ color: var(--zvk-ui-color-destructive);
1430
+ font-size: var(--zvk-ui-font-size-xs);
1431
+ line-height: var(--zvk-ui-line-height-normal);
1432
+ }
1433
+
1434
+ :where(.zvk-ui-form-validation-summary__link) {
1435
+ color: inherit;
1436
+ font-weight: 600;
1437
+ text-decoration-thickness: from-font;
1438
+ text-underline-offset: 0.15em;
1439
+ }
1440
+
1138
1441
  :where(.zvk-ui-form-field[data-disabled="true"]) {
1139
1442
  opacity: var(--zvk-ui-opacity-disabled);
1140
1443
  }
@@ -1145,12 +1448,13 @@
1145
1448
  @layer zvk-ui-components {
1146
1449
  :where(.zvk-ui-input) {
1147
1450
  appearance: none;
1451
+ backdrop-filter: var(--zvk-ui-material-control-backdrop-filter);
1148
1452
  background: var(--zvk-ui-control-background);
1149
1453
  border: 1px solid var(--zvk-ui-input-border-color, var(--zvk-ui-control-border));
1150
1454
  border-radius: var(--zvk-ui-radius-md);
1151
- box-shadow: var(--zvk-ui-shadow-xs);
1455
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-shadow-xs);
1152
1456
  color: var(--zvk-ui-color-foreground);
1153
- font-family: var(--zvk-ui-font-family-sans);
1457
+ font-family: var(--zvk-ui-font-family-primary);
1154
1458
  font-size: var(--zvk-ui-font-size-sm);
1155
1459
  height: var(--zvk-ui-input-height, var(--zvk-ui-control-height-md));
1156
1460
  line-height: 1;
@@ -1170,7 +1474,7 @@
1170
1474
 
1171
1475
  :where(.zvk-ui-input:focus-visible) {
1172
1476
  --zvk-ui-input-border-color: var(--zvk-ui-color-ring);
1173
- box-shadow: var(--zvk-ui-shadow-xs), var(--zvk-ui-focus-ring);
1477
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-shadow-xs), var(--zvk-ui-focus-ring);
1174
1478
  outline: 0;
1175
1479
  }
1176
1480
 
@@ -1199,12 +1503,13 @@
1199
1503
  @layer zvk-ui-components {
1200
1504
  .zvk-ui-textarea {
1201
1505
  appearance: none;
1506
+ backdrop-filter: var(--zvk-ui-material-control-backdrop-filter);
1202
1507
  background: var(--zvk-ui-control-background);
1203
1508
  border: 1px solid var(--zvk-ui-input-border-color, var(--zvk-ui-control-border));
1204
1509
  border-radius: var(--zvk-ui-radius-md);
1205
- box-shadow: var(--zvk-ui-shadow-xs);
1510
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-shadow-xs);
1206
1511
  color: var(--zvk-ui-color-foreground);
1207
- font-family: var(--zvk-ui-font-family-sans);
1512
+ font-family: var(--zvk-ui-font-family-primary);
1208
1513
  font-size: var(--zvk-ui-font-size-sm);
1209
1514
  min-block-size: calc(var(--zvk-ui-control-height-md) * 2);
1210
1515
  padding-inline: var(--zvk-ui-control-padding-x);
@@ -1224,7 +1529,7 @@
1224
1529
 
1225
1530
  :where(.zvk-ui-textarea:focus-visible) {
1226
1531
  --zvk-ui-input-border-color: var(--zvk-ui-color-ring);
1227
- box-shadow: var(--zvk-ui-shadow-xs), var(--zvk-ui-focus-ring);
1532
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-shadow-xs), var(--zvk-ui-focus-ring);
1228
1533
  outline: 0;
1229
1534
  }
1230
1535
 
@@ -1336,7 +1641,7 @@
1336
1641
 
1337
1642
  .zvk-ui-checkbox__label {
1338
1643
  color: var(--zvk-ui-color-foreground);
1339
- font-family: var(--zvk-ui-font-family-sans);
1644
+ font-family: var(--zvk-ui-font-family-primary);
1340
1645
  font-size: var(--zvk-ui-font-size-sm);
1341
1646
  line-height: var(--zvk-ui-line-height-tight);
1342
1647
  }
@@ -1353,9 +1658,9 @@
1353
1658
  /* src/components/switch/switch.css */
1354
1659
  @layer zvk-ui-components {
1355
1660
  .zvk-ui-switch {
1356
- --zvk-ui-switch-height: var(--zvk-ui-control-height-md);
1357
- --zvk-ui-switch-width: calc(var(--zvk-ui-switch-height) * 1.75);
1358
- --zvk-ui-switch-padding: var(--zvk-ui-space-1);
1661
+ --zvk-ui-switch-height: 1.5rem;
1662
+ --zvk-ui-switch-width: 2.75rem;
1663
+ --zvk-ui-switch-padding: 0.125rem;
1359
1664
  --zvk-ui-switch-thumb-size: calc(var(--zvk-ui-switch-height) - (var(--zvk-ui-switch-padding) * 2) - 2px);
1360
1665
  --zvk-ui-switch-thumb-translate: calc(var(--zvk-ui-switch-width) - var(--zvk-ui-switch-thumb-size) - (var(--zvk-ui-switch-padding) * 2) - 2px);
1361
1666
  align-items: center;
@@ -1420,16 +1725,18 @@
1420
1725
  }
1421
1726
 
1422
1727
  .zvk-ui-switch[data-size="sm"] {
1423
- --zvk-ui-switch-height: var(--zvk-ui-control-height-sm);
1728
+ --zvk-ui-switch-height: 1.25rem;
1729
+ --zvk-ui-switch-width: 2.25rem;
1424
1730
  }
1425
1731
 
1426
1732
  .zvk-ui-switch[data-size="lg"] {
1427
- --zvk-ui-switch-height: var(--zvk-ui-control-height-lg);
1733
+ --zvk-ui-switch-height: 1.75rem;
1734
+ --zvk-ui-switch-width: 3.25rem;
1428
1735
  }
1429
1736
 
1430
1737
  .zvk-ui-switch__label {
1431
1738
  color: var(--zvk-ui-color-foreground);
1432
- font-family: var(--zvk-ui-font-family-sans);
1739
+ font-family: var(--zvk-ui-font-family-primary);
1433
1740
  font-size: var(--zvk-ui-font-size-sm);
1434
1741
  line-height: var(--zvk-ui-line-height-tight);
1435
1742
  }
@@ -1467,7 +1774,7 @@
1467
1774
 
1468
1775
  .zvk-ui-radio-group__legend {
1469
1776
  color: var(--zvk-ui-color-foreground);
1470
- font-family: var(--zvk-ui-font-family-sans);
1777
+ font-family: var(--zvk-ui-font-family-primary);
1471
1778
  font-size: var(--zvk-ui-font-size-sm);
1472
1779
  font-weight: 650;
1473
1780
  line-height: var(--zvk-ui-line-height-tight);
@@ -1528,12 +1835,13 @@
1528
1835
  display: inline-flex;
1529
1836
  height: 1rem;
1530
1837
  justify-content: center;
1838
+ transition: background var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), border-color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), box-shadow var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
1531
1839
  width: 1rem;
1532
1840
  }
1533
1841
 
1534
1842
  .zvk-ui-radio-group__label {
1535
1843
  color: var(--zvk-ui-color-foreground);
1536
- font-family: var(--zvk-ui-font-family-sans);
1844
+ font-family: var(--zvk-ui-font-family-primary);
1537
1845
  font-size: var(--zvk-ui-font-size-sm);
1538
1846
  line-height: var(--zvk-ui-line-height-tight);
1539
1847
  }
@@ -1563,6 +1871,12 @@
1563
1871
  cursor: not-allowed;
1564
1872
  opacity: var(--zvk-ui-opacity-disabled);
1565
1873
  }
1874
+
1875
+ @media (prefers-reduced-motion: reduce) {
1876
+ .zvk-ui-radio-group__control {
1877
+ transition: none;
1878
+ }
1879
+ }
1566
1880
  }
1567
1881
 
1568
1882
 
@@ -1618,7 +1932,7 @@
1618
1932
  color: var(--zvk-ui-color-foreground);
1619
1933
  cursor: pointer;
1620
1934
  display: inline-flex;
1621
- font-family: var(--zvk-ui-font-family-sans);
1935
+ font-family: var(--zvk-ui-font-family-primary);
1622
1936
  font-size: var(--zvk-ui-font-size-sm);
1623
1937
  font-weight: 600;
1624
1938
  gap: var(--zvk-ui-control-gap);
@@ -1724,7 +2038,7 @@
1724
2038
  :where(.zvk-ui-calendar) {
1725
2039
  color: var(--zvk-ui-color-foreground);
1726
2040
  display: grid;
1727
- font-family: var(--zvk-ui-font-family-sans);
2041
+ font-family: var(--zvk-ui-font-family-primary);
1728
2042
  gap: var(--zvk-ui-space-3);
1729
2043
  inline-size: max-content;
1730
2044
  min-inline-size: 17.5rem;
@@ -1757,6 +2071,7 @@
1757
2071
  font: inherit;
1758
2072
  justify-content: center;
1759
2073
  padding: 0;
2074
+ transition: background var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), border-color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), box-shadow var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
1760
2075
  }
1761
2076
 
1762
2077
  :where(.zvk-ui-calendar__nav) {
@@ -1881,78 +2196,243 @@
1881
2196
  }
1882
2197
 
1883
2198
 
1884
- /* src/components/select/select.css */
2199
+ /* src/components/date-range-picker/date-range-picker.css */
1885
2200
  @layer zvk-ui-components {
1886
- :where(.zvk-ui-select) {
1887
- display: inline-grid;
1888
- min-width: 0;
2201
+ :where(.zvk-ui-date-range-picker) {
2202
+ display: grid;
2203
+ gap: var(--zvk-ui-space-2);
1889
2204
  }
1890
2205
 
1891
- :where(.zvk-ui-select__trigger) {
2206
+ :where(.zvk-ui-date-range-picker__group) {
2207
+ display: grid;
2208
+ gap: var(--zvk-ui-space-2);
2209
+ }
2210
+
2211
+ :where(.zvk-ui-date-range-picker__controls) {
2212
+ display: grid;
2213
+ gap: var(--zvk-ui-space-3);
2214
+ }
2215
+
2216
+ :where(.zvk-ui-date-range-picker__field) {
2217
+ display: grid;
2218
+ gap: var(--zvk-ui-space-1);
2219
+ min-inline-size: 0;
2220
+ }
2221
+
2222
+ :where(.zvk-ui-date-range-picker__field-label) {
2223
+ color: var(--zvk-ui-color-muted-foreground);
2224
+ font-size: var(--zvk-ui-font-size-xs);
2225
+ font-weight: 600;
2226
+ line-height: var(--zvk-ui-line-height-tight);
2227
+ }
2228
+
2229
+ :where(.zvk-ui-date-range-picker__input-row) {
2230
+ display: grid;
2231
+ gap: var(--zvk-ui-space-2);
2232
+ grid-template-columns: minmax(0, 1fr) auto;
2233
+ }
2234
+
2235
+ :where(.zvk-ui-date-range-picker__input) {
2236
+ min-inline-size: 0;
2237
+ }
2238
+
2239
+ :where(.zvk-ui-date-range-picker .zvk-ui-popover) {
2240
+ display: block;
2241
+ }
2242
+
2243
+ :where(.zvk-ui-date-range-picker__calendar-trigger),
2244
+ :where(.zvk-ui-date-range-picker__clear) {
1892
2245
  align-items: center;
1893
2246
  appearance: none;
1894
2247
  background: var(--zvk-ui-control-background);
1895
- border: 1px solid var(--zvk-ui-select-border-color, var(--zvk-ui-control-border));
2248
+ border: 1px solid var(--zvk-ui-control-border);
1896
2249
  border-radius: var(--zvk-ui-radius-md);
1897
- box-shadow: var(--zvk-ui-shadow-xs);
2250
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-shadow-xs);
1898
2251
  color: var(--zvk-ui-color-foreground);
1899
2252
  cursor: pointer;
1900
2253
  display: inline-flex;
1901
- font-family: var(--zvk-ui-font-family-sans);
2254
+ font-family: var(--zvk-ui-font-family-primary);
1902
2255
  font-size: var(--zvk-ui-font-size-sm);
1903
- gap: var(--zvk-ui-control-gap);
2256
+ font-weight: 600;
1904
2257
  height: var(--zvk-ui-control-height-md);
1905
- justify-content: space-between;
2258
+ justify-content: center;
1906
2259
  line-height: 1;
1907
- min-width: 10rem;
1908
2260
  padding-inline: var(--zvk-ui-control-padding-x);
1909
2261
  transition: background var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), border-color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), box-shadow var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
2262
+ white-space: nowrap;
1910
2263
  }
1911
2264
 
1912
- :where(.zvk-ui-select__trigger:hover:not(:disabled)) {
1913
- --zvk-ui-select-border-color: var(--zvk-ui-control-border-strong);
2265
+ :where(.zvk-ui-date-range-picker__calendar-trigger:hover),
2266
+ :where(.zvk-ui-date-range-picker__clear:hover) {
2267
+ border-color: var(--zvk-ui-control-border-strong);
1914
2268
  }
1915
2269
 
1916
- :where(.zvk-ui-select__trigger:focus-visible) {
1917
- --zvk-ui-select-border-color: var(--zvk-ui-color-ring);
1918
- box-shadow: var(--zvk-ui-shadow-xs), var(--zvk-ui-focus-ring);
2270
+ :where(.zvk-ui-date-range-picker__calendar-trigger:focus-visible),
2271
+ :where(.zvk-ui-date-range-picker__clear:focus-visible) {
2272
+ border-color: var(--zvk-ui-color-ring);
2273
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-shadow-xs), var(--zvk-ui-focus-ring);
1919
2274
  outline: 0;
1920
2275
  }
1921
2276
 
1922
- :where(.zvk-ui-select__trigger:disabled) {
1923
- cursor: not-allowed;
1924
- opacity: var(--zvk-ui-opacity-disabled);
2277
+ :where(.zvk-ui-date-range-picker__calendar-trigger[data-state="open"]) {
2278
+ border-color: var(--zvk-ui-color-ring);
2279
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-shadow-xs), var(--zvk-ui-focus-ring);
1925
2280
  }
1926
2281
 
1927
- :where(.zvk-ui-select__trigger[data-invalid="true"]) {
1928
- --zvk-ui-select-border-color: var(--zvk-ui-color-destructive);
2282
+ :where(.zvk-ui-date-range-picker__clear) {
2283
+ justify-self: start;
1929
2284
  }
1930
2285
 
1931
- :where(.zvk-ui-select[data-size="sm"] .zvk-ui-select__trigger) {
1932
- height: var(--zvk-ui-control-height-sm);
1933
- font-size: var(--zvk-ui-font-size-xs);
2286
+ :where(.zvk-ui-date-range-picker__content) {
2287
+ padding: var(--zvk-ui-space-3);
1934
2288
  }
1935
2289
 
1936
- :where(.zvk-ui-select[data-size="lg"] .zvk-ui-select__trigger) {
1937
- height: var(--zvk-ui-control-height-lg);
1938
- font-size: var(--zvk-ui-font-size-md);
2290
+ @media (min-width: 36rem) {
2291
+ :where(.zvk-ui-date-range-picker__controls) {
2292
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2293
+ }
1939
2294
  }
2295
+ }
1940
2296
 
1941
- :where(.zvk-ui-select__value[data-placeholder="true"]) {
1942
- color: var(--zvk-ui-color-muted-foreground);
1943
- }
1944
2297
 
1945
- :where(.zvk-ui-select__content) {
2298
+ /* src/components/select/select.css */
2299
+ @layer zvk-ui-components {
2300
+ :where(.zvk-ui-select) {
2301
+ display: inline-grid;
2302
+ min-width: 0;
2303
+ --zvk-ui-select-trigger-min-width: 10rem;
2304
+ }
2305
+
2306
+ :where(.zvk-ui-select__trigger) {
2307
+ align-items: center;
2308
+ appearance: none;
2309
+ backdrop-filter: var(--zvk-ui-material-control-backdrop-filter);
2310
+ background: var(--zvk-ui-control-background);
2311
+ border: 1px solid var(--zvk-ui-select-border-color, var(--zvk-ui-control-border));
2312
+ border-radius: var(--zvk-ui-radius-md);
2313
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-shadow-xs);
2314
+ color: var(--zvk-ui-color-foreground);
2315
+ cursor: pointer;
2316
+ display: inline-flex;
2317
+ font-family: var(--zvk-ui-font-family-primary);
2318
+ font-size: var(--zvk-ui-font-size-sm);
2319
+ gap: var(--zvk-ui-control-gap);
2320
+ height: var(--zvk-ui-control-height-md);
2321
+ justify-content: space-between;
2322
+ line-height: 1;
2323
+ min-width: var(--zvk-ui-select-trigger-min-width);
2324
+ padding-inline: var(--zvk-ui-control-padding-x);
2325
+ transition: background var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), border-color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), box-shadow var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
2326
+ }
2327
+
2328
+ :where(.zvk-ui-select__trigger:hover:not(:disabled)) {
2329
+ --zvk-ui-select-border-color: var(--zvk-ui-control-border-strong);
2330
+ }
2331
+
2332
+ :where(.zvk-ui-select__trigger:focus-visible) {
2333
+ --zvk-ui-select-border-color: var(--zvk-ui-color-ring);
2334
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-shadow-xs), var(--zvk-ui-focus-ring);
2335
+ outline: 0;
2336
+ }
2337
+
2338
+ :where(.zvk-ui-select__trigger:disabled) {
2339
+ cursor: not-allowed;
2340
+ opacity: var(--zvk-ui-opacity-disabled);
2341
+ }
2342
+
2343
+ :where(.zvk-ui-select__trigger[data-invalid="true"]) {
2344
+ --zvk-ui-select-border-color: var(--zvk-ui-color-destructive);
2345
+ }
2346
+
2347
+ :where(.zvk-ui-select[data-size="sm"] .zvk-ui-select__trigger) {
2348
+ height: var(--zvk-ui-control-height-sm);
2349
+ font-size: var(--zvk-ui-font-size-xs);
2350
+ }
2351
+
2352
+ :where(.zvk-ui-select[data-size="lg"] .zvk-ui-select__trigger) {
2353
+ height: var(--zvk-ui-control-height-lg);
2354
+ font-size: var(--zvk-ui-font-size-md);
2355
+ }
2356
+
2357
+ :where(.zvk-ui-select__value[data-placeholder="true"]) {
2358
+ color: var(--zvk-ui-color-muted-foreground);
2359
+ }
2360
+
2361
+ :where(.zvk-ui-select__indicator) {
2362
+ color: var(--zvk-ui-color-muted-foreground);
2363
+ display: inline-grid;
2364
+ flex: 0 0 auto;
2365
+ inline-size: 1rem;
2366
+ margin-inline-start: auto;
2367
+ place-items: center;
2368
+ transition: color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), transform var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
2369
+ }
2370
+
2371
+ .zvk-ui-select__indicator::before {
2372
+ block-size: 0.45rem;
2373
+ border-block-end: 1.5px solid currentColor;
2374
+ border-inline-end: 1.5px solid currentColor;
2375
+ content: "";
2376
+ inline-size: 0.45rem;
2377
+ transform: rotate(45deg) translate(-0.1rem, -0.1rem);
2378
+ }
2379
+
2380
+ :where(.zvk-ui-select__trigger[data-state="open"] .zvk-ui-select__indicator) {
2381
+ color: var(--zvk-ui-color-foreground);
2382
+ transform: rotate(180deg);
2383
+ }
2384
+
2385
+ :where(.zvk-ui-select__content) {
2386
+ --zvk-ui-select-motion-x: 0;
2387
+ --zvk-ui-select-motion-y: -0.25rem;
2388
+ backdrop-filter: var(--zvk-ui-select-content-backdrop-filter, var(--zvk-ui-material-floating-backdrop-filter));
1946
2389
  background: var(--zvk-ui-color-surface);
1947
2390
  border: 1px solid var(--zvk-ui-card-border);
1948
2391
  border-radius: var(--zvk-ui-radius-md);
1949
- box-shadow: var(--zvk-ui-shadow-lg);
2392
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-material-glass-shadow);
1950
2393
  color: var(--zvk-ui-color-foreground);
1951
2394
  display: grid;
2395
+ font-family: var(--zvk-ui-font-family-primary);
1952
2396
  gap: var(--zvk-ui-space-1);
1953
- min-width: var(--zvk-ui-floating-reference-width, 10rem);
2397
+ max-block-size: min(calc(100vh - var(--zvk-ui-space-4)), var(--zvk-ui-floating-available-height, calc(100vh - var(--zvk-ui-space-4))));
2398
+ min-width: var(--zvk-ui-floating-reference-width, var(--zvk-ui-select-trigger-min-width));
2399
+ overflow-y: auto;
2400
+ overscroll-behavior-y: contain;
1954
2401
  padding: var(--zvk-ui-space-1);
2402
+ scrollbar-gutter: stable;
1955
2403
  z-index: var(--zvk-ui-z-popover);
2404
+ -webkit-overflow-scrolling: touch;
2405
+ }
2406
+
2407
+ :where(.zvk-ui-select__content[data-side="top"]) {
2408
+ --zvk-ui-select-motion-y: 0.25rem;
2409
+ }
2410
+
2411
+ :where(.zvk-ui-select__content[data-side="bottom"]) {
2412
+ --zvk-ui-select-motion-y: -0.25rem;
2413
+ }
2414
+
2415
+ :where(.zvk-ui-select__content[data-side="left"]) {
2416
+ --zvk-ui-select-motion-x: 0.25rem;
2417
+ --zvk-ui-select-motion-y: 0;
2418
+ }
2419
+
2420
+ :where(.zvk-ui-select__content[data-side="right"]) {
2421
+ --zvk-ui-select-motion-x: -0.25rem;
2422
+ --zvk-ui-select-motion-y: 0;
2423
+ }
2424
+
2425
+ :where(.zvk-ui-select__content[data-state="open"]) {
2426
+ animation: zvk-ui-select-content-enter var(--zvk-ui-duration-fast) var(--zvk-ui-ease-enter);
2427
+ }
2428
+
2429
+ :where(.zvk-ui-select__content[data-state="closed"]:not([hidden])) {
2430
+ animation: zvk-ui-select-content-exit var(--zvk-ui-duration-fast) var(--zvk-ui-ease-exit);
2431
+ pointer-events: none;
2432
+ }
2433
+
2434
+ :where(.zvk-ui-select__content[aria-hidden="true"]) {
2435
+ pointer-events: none;
1956
2436
  }
1957
2437
 
1958
2438
  :where(.zvk-ui-select__content[hidden]) {
@@ -1964,7 +2444,7 @@
1964
2444
  border-radius: var(--zvk-ui-radius-sm);
1965
2445
  cursor: pointer;
1966
2446
  display: grid;
1967
- font-family: var(--zvk-ui-font-family-sans);
2447
+ font-family: var(--zvk-ui-font-family-primary);
1968
2448
  font-size: var(--zvk-ui-font-size-sm);
1969
2449
  gap: var(--zvk-ui-space-2);
1970
2450
  grid-template-columns: 1rem 1fr;
@@ -1995,6 +2475,7 @@
1995
2475
 
1996
2476
  :where(.zvk-ui-select__label) {
1997
2477
  color: var(--zvk-ui-color-muted-foreground);
2478
+ font-family: var(--zvk-ui-font-family-secondary);
1998
2479
  font-size: var(--zvk-ui-font-size-xs);
1999
2480
  font-weight: 600;
2000
2481
  padding: var(--zvk-ui-space-1) var(--zvk-ui-space-2);
@@ -2023,6 +2504,40 @@
2023
2504
  color: var(--zvk-ui-color-foreground);
2024
2505
  outline: 0;
2025
2506
  }
2507
+
2508
+ @keyframes zvk-ui-select-content-enter {
2509
+ from {
2510
+ opacity: 0;
2511
+ transform: translate(var(--zvk-ui-select-motion-x), var(--zvk-ui-select-motion-y)) scale(0.98);
2512
+ }
2513
+
2514
+ to {
2515
+ opacity: 1;
2516
+ transform: translate(0, 0) scale(1);
2517
+ }
2518
+ }
2519
+
2520
+ @keyframes zvk-ui-select-content-exit {
2521
+ from {
2522
+ opacity: 1;
2523
+ transform: translate(0, 0) scale(1);
2524
+ }
2525
+
2526
+ to {
2527
+ opacity: 0;
2528
+ transform: translate(var(--zvk-ui-select-motion-x), var(--zvk-ui-select-motion-y)) scale(0.98);
2529
+ }
2530
+ }
2531
+
2532
+ @media (prefers-reduced-motion: reduce) {
2533
+ :where(.zvk-ui-select__indicator) {
2534
+ transition: none;
2535
+ }
2536
+
2537
+ :where(.zvk-ui-select__content[data-state="open"], .zvk-ui-select__content[data-state="closed"]:not([hidden])) {
2538
+ animation: none;
2539
+ }
2540
+ }
2026
2541
  }
2027
2542
 
2028
2543
 
@@ -2045,13 +2560,14 @@
2045
2560
  color: var(--zvk-ui-color-foreground);
2046
2561
  cursor: pointer;
2047
2562
  display: inline-flex;
2048
- font-family: var(--zvk-ui-font-family-sans);
2563
+ font-family: var(--zvk-ui-font-family-primary);
2049
2564
  font-size: var(--zvk-ui-font-size-sm);
2050
2565
  gap: var(--zvk-ui-control-gap);
2051
2566
  height: var(--zvk-ui-collapsible-trigger-height);
2052
2567
  justify-content: flex-start;
2053
2568
  min-width: max-content;
2054
2569
  padding-inline: var(--zvk-ui-collapsible-trigger-padding-x);
2570
+ transition: background var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), border-color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), box-shadow var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
2055
2571
  }
2056
2572
 
2057
2573
  :where(.zvk-ui-collapsible__trigger:hover:not(:disabled, [data-disabled="true"])) {
@@ -2066,9 +2582,31 @@
2066
2582
  padding-inline: var(--zvk-ui-control-padding-x);
2067
2583
  }
2068
2584
 
2585
+ :where(.zvk-ui-collapsible__content[data-state="open"]) {
2586
+ animation: zvk-ui-collapsible-content-enter var(--zvk-ui-duration-normal) var(--zvk-ui-ease-standard) both;
2587
+ }
2588
+
2069
2589
  :where(.zvk-ui-collapsible__content[data-state="closed"]) {
2070
2590
  overflow: hidden;
2071
2591
  }
2592
+
2593
+ @keyframes zvk-ui-collapsible-content-enter {
2594
+ from {
2595
+ opacity: 0;
2596
+ transform: translateY(-0.25rem);
2597
+ }
2598
+
2599
+ to {
2600
+ opacity: 1;
2601
+ transform: translateY(0);
2602
+ }
2603
+ }
2604
+
2605
+ @media (prefers-reduced-motion: reduce) {
2606
+ :where(.zvk-ui-collapsible__content[data-state="open"]) {
2607
+ animation: none;
2608
+ }
2609
+ }
2072
2610
  }
2073
2611
 
2074
2612
 
@@ -2084,6 +2622,7 @@
2084
2622
  border: 1px solid var(--zvk-ui-color-border);
2085
2623
  border-radius: var(--zvk-ui-radius-md);
2086
2624
  overflow: hidden;
2625
+ transition: border-color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
2087
2626
  }
2088
2627
 
2089
2628
  :where(.zvk-ui-accordion__item[data-state="open"]) {
@@ -2092,18 +2631,23 @@
2092
2631
 
2093
2632
  :where(.zvk-ui-accordion__trigger) {
2094
2633
  --zvk-ui-accordion-trigger-height: var(--zvk-ui-control-height-md);
2634
+ align-items: center;
2095
2635
  appearance: none;
2096
2636
  background: var(--zvk-ui-color-surface);
2097
2637
  border: none;
2098
2638
  color: var(--zvk-ui-color-foreground);
2099
2639
  cursor: pointer;
2100
2640
  display: inline-flex;
2101
- font-family: var(--zvk-ui-font-family-sans);
2641
+ font-family: var(--zvk-ui-font-family-primary);
2102
2642
  font-size: var(--zvk-ui-font-size-sm);
2103
2643
  gap: var(--zvk-ui-control-gap);
2644
+ justify-content: flex-start;
2645
+ line-height: 1;
2104
2646
  min-width: 100%;
2105
2647
  min-height: var(--zvk-ui-accordion-trigger-height);
2648
+ padding-inline: var(--zvk-ui-control-padding-x);
2106
2649
  text-align: left;
2650
+ transition: background var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), box-shadow var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
2107
2651
  width: 100%;
2108
2652
  }
2109
2653
 
@@ -2120,6 +2664,10 @@
2120
2664
  padding: var(--zvk-ui-space-3);
2121
2665
  }
2122
2666
 
2667
+ :where(.zvk-ui-accordion__content[data-state="open"]) {
2668
+ animation: zvk-ui-accordion-content-enter var(--zvk-ui-duration-normal) var(--zvk-ui-ease-standard) both;
2669
+ }
2670
+
2123
2671
  :where(.zvk-ui-accordion__content[data-state="closed"]) {
2124
2672
  display: none;
2125
2673
  }
@@ -2127,6 +2675,24 @@
2127
2675
  :where(.zvk-ui-accordion[data-disabled="true"] .zvk-ui-accordion__trigger:disabled) {
2128
2676
  cursor: not-allowed;
2129
2677
  }
2678
+
2679
+ @keyframes zvk-ui-accordion-content-enter {
2680
+ from {
2681
+ opacity: 0;
2682
+ transform: translateY(-0.25rem);
2683
+ }
2684
+
2685
+ to {
2686
+ opacity: 1;
2687
+ transform: translateY(0);
2688
+ }
2689
+ }
2690
+
2691
+ @media (prefers-reduced-motion: reduce) {
2692
+ :where(.zvk-ui-accordion__content[data-state="open"]) {
2693
+ animation: none;
2694
+ }
2695
+ }
2130
2696
  }
2131
2697
 
2132
2698
 
@@ -2162,7 +2728,7 @@
2162
2728
  cursor: pointer;
2163
2729
  display: inline-flex;
2164
2730
  flex: 0 0 auto;
2165
- font-family: var(--zvk-ui-font-family-sans);
2731
+ font-family: var(--zvk-ui-font-family-primary);
2166
2732
  font-size: var(--zvk-ui-font-size-sm);
2167
2733
  font-weight: 600;
2168
2734
  justify-content: center;
@@ -2201,10 +2767,32 @@
2201
2767
 
2202
2768
  :where(.zvk-ui-tabs__content) {
2203
2769
  color: var(--zvk-ui-color-foreground);
2204
- font-family: var(--zvk-ui-font-family-sans);
2770
+ font-family: var(--zvk-ui-font-family-primary);
2205
2771
  font-size: var(--zvk-ui-font-size-md);
2206
2772
  line-height: var(--zvk-ui-line-height-normal);
2207
2773
  }
2774
+
2775
+ :where(.zvk-ui-tabs__content[data-state="open"]) {
2776
+ animation: zvk-ui-tabs-content-enter var(--zvk-ui-duration-normal) var(--zvk-ui-ease-standard) both;
2777
+ }
2778
+
2779
+ @keyframes zvk-ui-tabs-content-enter {
2780
+ from {
2781
+ opacity: 0;
2782
+ transform: translateY(0.25rem);
2783
+ }
2784
+
2785
+ to {
2786
+ opacity: 1;
2787
+ transform: translateY(0);
2788
+ }
2789
+ }
2790
+
2791
+ @media (prefers-reduced-motion: reduce) {
2792
+ :where(.zvk-ui-tabs__content[data-state="open"]) {
2793
+ animation: none;
2794
+ }
2795
+ }
2208
2796
  }
2209
2797
 
2210
2798
 
@@ -2239,11 +2827,17 @@
2239
2827
  }
2240
2828
 
2241
2829
  :where(.zvk-ui-breadcrumbs__link) {
2830
+ align-items: center;
2831
+ border-radius: var(--zvk-ui-radius-sm);
2242
2832
  color: inherit;
2833
+ display: inline-flex;
2834
+ min-block-size: 1.5rem;
2243
2835
  text-decoration: none;
2836
+ transition: color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
2244
2837
  }
2245
2838
 
2246
2839
  :where(.zvk-ui-breadcrumbs__link:hover, .zvk-ui-breadcrumbs__link:focus-visible) {
2840
+ color: var(--zvk-ui-color-foreground);
2247
2841
  text-decoration: underline;
2248
2842
  }
2249
2843
 
@@ -2251,6 +2845,13 @@
2251
2845
  color: var(--zvk-ui-color-muted-foreground);
2252
2846
  pointer-events: none;
2253
2847
  }
2848
+
2849
+ @media (max-width: 40rem) {
2850
+ :where(.zvk-ui-breadcrumbs__link) {
2851
+ min-block-size: var(--zvk-ui-control-height-lg);
2852
+ padding-inline: var(--zvk-ui-space-1);
2853
+ }
2854
+ }
2254
2855
  }
2255
2856
 
2256
2857
 
@@ -2258,6 +2859,7 @@
2258
2859
  @layer zvk-ui-components {
2259
2860
  :where(.zvk-ui-pagination) {
2260
2861
  display: block;
2862
+ max-inline-size: 100%;
2261
2863
  width: max-content;
2262
2864
  }
2263
2865
 
@@ -2275,6 +2877,7 @@
2275
2877
  }
2276
2878
 
2277
2879
  :where(.zvk-ui-pagination__item) {
2880
+ align-items: center;
2278
2881
  appearance: none;
2279
2882
  background: transparent;
2280
2883
  border: 1px solid transparent;
@@ -2282,9 +2885,11 @@
2282
2885
  color: var(--zvk-ui-color-foreground);
2283
2886
  display: inline-flex;
2284
2887
  font-size: var(--zvk-ui-font-size-sm);
2888
+ justify-content: center;
2285
2889
  padding-block: var(--zvk-ui-space-1);
2286
2890
  padding-inline: var(--zvk-ui-space-2);
2287
2891
  text-decoration: none;
2892
+ transition: background var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), border-color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), box-shadow var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
2288
2893
  }
2289
2894
 
2290
2895
  :where(.zvk-ui-pagination__item:hover:not(:disabled)) {
@@ -2310,6 +2915,23 @@
2310
2915
  outline: 0;
2311
2916
  box-shadow: var(--zvk-ui-focus-ring);
2312
2917
  }
2918
+
2919
+ @media (max-width: 40rem) {
2920
+ :where(.zvk-ui-pagination) {
2921
+ width: 100%;
2922
+ }
2923
+
2924
+ :where(.zvk-ui-pagination__list) {
2925
+ display: flex;
2926
+ flex-wrap: wrap;
2927
+ row-gap: var(--zvk-ui-space-1);
2928
+ }
2929
+
2930
+ :where(.zvk-ui-pagination__item) {
2931
+ min-block-size: var(--zvk-ui-control-height-lg);
2932
+ min-inline-size: var(--zvk-ui-control-height-lg);
2933
+ }
2934
+ }
2313
2935
  }
2314
2936
 
2315
2937
 
@@ -2320,6 +2942,7 @@
2320
2942
  max-inline-size: 100%;
2321
2943
  overflow-x: auto;
2322
2944
  overscroll-behavior-x: contain;
2945
+ scrollbar-gutter: stable;
2323
2946
  -webkit-overflow-scrolling: touch;
2324
2947
  }
2325
2948
 
@@ -2368,83 +2991,185 @@
2368
2991
  text-align: left;
2369
2992
  }
2370
2993
 
2371
- :where(.zvk-ui-table__head, .zvk-ui-table__cell) {
2372
- text-align: left;
2373
- padding-block: var(--zvk-ui-table-cell-padding-y);
2374
- padding-inline: var(--zvk-ui-table-cell-padding-x);
2375
- }
2376
-
2377
- :where(.zvk-ui-table__head) {
2378
- font-size: var(--zvk-ui-font-size-sm);
2379
- font-weight: 600;
2380
- }
2381
-
2382
- :where(.zvk-ui-table__row) {
2383
- border-bottom: 1px solid var(--zvk-ui-color-border-subtle);
2384
- }
2385
-
2386
- :where(.zvk-ui-table__row:last-child) {
2387
- border-bottom: none;
2388
- }
2389
- }
2390
-
2391
-
2392
- /* src/components/empty-state/empty-state.css */
2393
- @layer zvk-ui-components {
2394
- :where(.zvk-ui-empty-state) {
2994
+ :where(.zvk-ui-table__toolbar) {
2395
2995
  align-items: center;
2396
2996
  display: flex;
2397
- flex-direction: column;
2997
+ flex-wrap: wrap;
2398
2998
  gap: var(--zvk-ui-space-3);
2399
- text-align: center;
2400
- }
2401
-
2402
- :where(.zvk-ui-empty-state__icon) {
2403
- color: var(--zvk-ui-color-muted-foreground);
2404
- font-size: var(--zvk-ui-font-size-2xl);
2405
- line-height: 1;
2406
- min-height: 1.75rem;
2999
+ justify-content: space-between;
2407
3000
  }
2408
3001
 
2409
- :where(.zvk-ui-empty-state__title) {
3002
+ :where(.zvk-ui-table__toolbar-title) {
2410
3003
  color: var(--zvk-ui-color-foreground);
3004
+ font-family: var(--zvk-ui-font-family-secondary);
2411
3005
  font-size: var(--zvk-ui-font-size-lg);
2412
- font-weight: 650;
2413
- margin: 0;
2414
- }
2415
-
2416
- :where(.zvk-ui-empty-state__description) {
2417
- color: var(--zvk-ui-color-muted-foreground);
3006
+ font-weight: 700;
3007
+ line-height: var(--zvk-ui-line-height-tight);
2418
3008
  margin: 0;
2419
- max-width: 45ch;
2420
3009
  }
2421
3010
 
2422
- :where(.zvk-ui-empty-state__actions) {
3011
+ :where(.zvk-ui-table__toolbar-actions) {
3012
+ align-items: center;
2423
3013
  display: inline-flex;
3014
+ flex-wrap: wrap;
2424
3015
  gap: var(--zvk-ui-space-2);
2425
3016
  }
2426
3017
 
2427
- :where(.zvk-ui-empty-state[data-align="start"]) {
2428
- align-items: flex-start;
3018
+ :where(.zvk-ui-table__head, .zvk-ui-table__cell) {
2429
3019
  text-align: left;
3020
+ padding-block: var(--zvk-ui-table-cell-padding-y);
3021
+ padding-inline: var(--zvk-ui-table-cell-padding-x);
2430
3022
  }
2431
3023
 
2432
- :where(.zvk-ui-empty-state[data-size="sm"]) {
2433
- gap: var(--zvk-ui-space-2);
3024
+ :where(.zvk-ui-table__selection-cell) {
3025
+ inline-size: 1%;
3026
+ text-align: center;
3027
+ white-space: nowrap;
2434
3028
  }
2435
3029
 
2436
- :where(.zvk-ui-empty-state[data-size="sm"] .zvk-ui-empty-state__title) {
2437
- font-size: var(--zvk-ui-font-size-base);
3030
+ :where(.zvk-ui-table__selection-cell[data-disabled="true"]) {
3031
+ opacity: var(--zvk-ui-opacity-disabled);
2438
3032
  }
2439
3033
 
2440
- :where(.zvk-ui-empty-state[data-size="lg"]) {
2441
- gap: var(--zvk-ui-space-4);
3034
+ :where(.zvk-ui-table__selection-checkbox) {
3035
+ justify-content: center;
2442
3036
  }
2443
3037
 
2444
- :where(.zvk-ui-empty-state[data-size="lg"] .zvk-ui-empty-state__title) {
2445
- font-size: var(--zvk-ui-font-size-xl);
2446
- }
2447
- }
3038
+ :where(.zvk-ui-table__head) {
3039
+ font-size: var(--zvk-ui-font-size-sm);
3040
+ font-weight: 600;
3041
+ }
3042
+
3043
+ :where(.zvk-ui-table__sort-button) {
3044
+ align-items: center;
3045
+ appearance: none;
3046
+ background: transparent;
3047
+ border: 0;
3048
+ border-radius: var(--zvk-ui-radius-sm);
3049
+ color: inherit;
3050
+ cursor: pointer;
3051
+ display: inline-flex;
3052
+ font: inherit;
3053
+ font-weight: inherit;
3054
+ gap: var(--zvk-ui-space-2);
3055
+ margin: calc(-1 * var(--zvk-ui-space-1));
3056
+ padding: var(--zvk-ui-space-1);
3057
+ text-align: inherit;
3058
+ }
3059
+
3060
+ :where(.zvk-ui-table__sort-button:hover) {
3061
+ background: var(--zvk-ui-color-muted);
3062
+ }
3063
+
3064
+ :where(.zvk-ui-table__sort-button:focus-visible) {
3065
+ box-shadow: var(--zvk-ui-focus-ring);
3066
+ outline: none;
3067
+ }
3068
+
3069
+ :where(.zvk-ui-table__sort-button:disabled) {
3070
+ cursor: not-allowed;
3071
+ opacity: 0.55;
3072
+ }
3073
+
3074
+ :where(.zvk-ui-table__sort-direction) {
3075
+ color: var(--zvk-ui-color-muted-foreground);
3076
+ font-size: var(--zvk-ui-font-size-xs);
3077
+ font-weight: 500;
3078
+ line-height: 1;
3079
+ }
3080
+
3081
+ :where(.zvk-ui-table__row) {
3082
+ border-bottom: 1px solid var(--zvk-ui-color-border-subtle);
3083
+ }
3084
+
3085
+ :where(.zvk-ui-table__row:last-child) {
3086
+ border-bottom: none;
3087
+ }
3088
+
3089
+ :where(.zvk-ui-table__state-row) {
3090
+ color: var(--zvk-ui-color-muted-foreground);
3091
+ }
3092
+
3093
+ :where(.zvk-ui-table__state-row[data-state="loading"]) {
3094
+ color: var(--zvk-ui-color-foreground);
3095
+ }
3096
+
3097
+ :where(.zvk-ui-table__state-row[data-state="error"]) {
3098
+ color: var(--zvk-ui-color-destructive);
3099
+ }
3100
+
3101
+ :where(.zvk-ui-table__state-cell) {
3102
+ padding-block: calc(var(--zvk-ui-table-cell-padding-y) * 2);
3103
+ text-align: center;
3104
+ }
3105
+
3106
+ @media (max-width: 40rem) {
3107
+ :where(.zvk-ui-table-container) {
3108
+ box-shadow:
3109
+ inset var(--zvk-ui-space-2) 0 var(--zvk-ui-space-3) calc(-1 * var(--zvk-ui-space-3)) color-mix(in srgb, var(--zvk-ui-color-foreground) 18%, transparent),
3110
+ inset calc(-1 * var(--zvk-ui-space-2)) 0 var(--zvk-ui-space-3) calc(-1 * var(--zvk-ui-space-3)) color-mix(in srgb, var(--zvk-ui-color-foreground) 18%, transparent);
3111
+ scrollbar-width: thin;
3112
+ }
3113
+ }
3114
+ }
3115
+
3116
+
3117
+ /* src/components/empty-state/empty-state.css */
3118
+ @layer zvk-ui-components {
3119
+ :where(.zvk-ui-empty-state) {
3120
+ align-items: center;
3121
+ display: flex;
3122
+ flex-direction: column;
3123
+ gap: var(--zvk-ui-space-3);
3124
+ text-align: center;
3125
+ }
3126
+
3127
+ :where(.zvk-ui-empty-state__icon) {
3128
+ color: var(--zvk-ui-color-muted-foreground);
3129
+ font-size: var(--zvk-ui-font-size-2xl);
3130
+ line-height: 1;
3131
+ min-height: 1.75rem;
3132
+ }
3133
+
3134
+ :where(.zvk-ui-empty-state__title) {
3135
+ color: var(--zvk-ui-color-foreground);
3136
+ font-size: var(--zvk-ui-font-size-lg);
3137
+ font-weight: 650;
3138
+ margin: 0;
3139
+ }
3140
+
3141
+ :where(.zvk-ui-empty-state__description) {
3142
+ color: var(--zvk-ui-color-muted-foreground);
3143
+ margin: 0;
3144
+ max-width: 45ch;
3145
+ }
3146
+
3147
+ :where(.zvk-ui-empty-state__actions) {
3148
+ display: inline-flex;
3149
+ gap: var(--zvk-ui-space-2);
3150
+ }
3151
+
3152
+ :where(.zvk-ui-empty-state[data-align="start"]) {
3153
+ align-items: flex-start;
3154
+ text-align: left;
3155
+ }
3156
+
3157
+ :where(.zvk-ui-empty-state[data-size="sm"]) {
3158
+ gap: var(--zvk-ui-space-2);
3159
+ }
3160
+
3161
+ :where(.zvk-ui-empty-state[data-size="sm"] .zvk-ui-empty-state__title) {
3162
+ font-size: var(--zvk-ui-font-size-base);
3163
+ }
3164
+
3165
+ :where(.zvk-ui-empty-state[data-size="lg"]) {
3166
+ gap: var(--zvk-ui-space-4);
3167
+ }
3168
+
3169
+ :where(.zvk-ui-empty-state[data-size="lg"] .zvk-ui-empty-state__title) {
3170
+ font-size: var(--zvk-ui-font-size-xl);
3171
+ }
3172
+ }
2448
3173
 
2449
3174
 
2450
3175
  /* src/components/stat/stat.css */
@@ -2533,11 +3258,15 @@
2533
3258
  border: 1px solid var(--zvk-ui-color-border);
2534
3259
  border-radius: var(--zvk-ui-radius-md);
2535
3260
  display: grid;
2536
- font-family: var(--zvk-ui-font-family-mono);
3261
+ font-family: var(--zvk-ui-font-family-tertiary);
2537
3262
  line-height: 1.4;
2538
3263
  margin: 0;
3264
+ max-inline-size: 100%;
2539
3265
  overflow: auto;
3266
+ overscroll-behavior-x: contain;
2540
3267
  padding: var(--zvk-ui-space-3);
3268
+ scrollbar-gutter: stable;
3269
+ -webkit-overflow-scrolling: touch;
2541
3270
  }
2542
3271
 
2543
3272
  :where(.zvk-ui-code-block__header) {
@@ -2572,27 +3301,94 @@
2572
3301
  border-left: 2px solid var(--zvk-ui-color-border-strong);
2573
3302
  padding-left: var(--zvk-ui-space-3);
2574
3303
  }
3304
+
3305
+ @media (max-width: 40rem) {
3306
+ :where(.zvk-ui-code-block) {
3307
+ box-shadow:
3308
+ inset var(--zvk-ui-space-2) 0 var(--zvk-ui-space-3) calc(-1 * var(--zvk-ui-space-3)) color-mix(in srgb, var(--zvk-ui-color-foreground) 24%, transparent),
3309
+ inset calc(-1 * var(--zvk-ui-space-2)) 0 var(--zvk-ui-space-3) calc(-1 * var(--zvk-ui-space-3)) color-mix(in srgb, var(--zvk-ui-color-foreground) 24%, transparent);
3310
+ scrollbar-width: thin;
3311
+ }
3312
+ }
3313
+ }
3314
+
3315
+
3316
+ /* src/components/kbd/kbd.css */
3317
+ @layer zvk-ui-components {
3318
+ :where(.zvk-ui-kbd-group) {
3319
+ align-items: center;
3320
+ color: var(--zvk-ui-color-muted-foreground);
3321
+ display: inline-flex;
3322
+ gap: var(--zvk-ui-space-1);
3323
+ max-inline-size: 100%;
3324
+ vertical-align: baseline;
3325
+ white-space: nowrap;
3326
+ }
3327
+
3328
+ :where(.zvk-ui-kbd) {
3329
+ align-items: center;
3330
+ background: color-mix(in srgb, var(--zvk-ui-color-foreground) 5%, var(--zvk-ui-color-surface));
3331
+ border: 1px solid var(--zvk-ui-color-border);
3332
+ border-block-end-color: var(--zvk-ui-color-border-strong);
3333
+ border-radius: var(--zvk-ui-radius-sm);
3334
+ box-shadow: inset 0 -1px 0 color-mix(in srgb, var(--zvk-ui-color-foreground) 10%, transparent);
3335
+ color: var(--zvk-ui-color-foreground);
3336
+ display: inline-flex;
3337
+ font-family: var(--zvk-ui-font-family-tertiary);
3338
+ font-size: var(--zvk-ui-font-size-xs);
3339
+ font-weight: 650;
3340
+ justify-content: center;
3341
+ letter-spacing: 0;
3342
+ line-height: 1;
3343
+ min-block-size: 1.5rem;
3344
+ min-inline-size: 1.5rem;
3345
+ padding-block: 0;
3346
+ padding-inline: var(--zvk-ui-space-1);
3347
+ vertical-align: baseline;
3348
+ white-space: nowrap;
3349
+ }
3350
+
3351
+ :where(.zvk-ui-kbd[data-size="sm"]) {
3352
+ min-block-size: 1.25rem;
3353
+ min-inline-size: 1.25rem;
3354
+ padding-inline: calc(var(--zvk-ui-space-1) / 2);
3355
+ }
3356
+
3357
+ :where(.zvk-ui-kbd__separator) {
3358
+ color: var(--zvk-ui-color-muted-foreground);
3359
+ font-family: var(--zvk-ui-font-family-primary);
3360
+ font-size: var(--zvk-ui-font-size-xs);
3361
+ line-height: 1;
3362
+ }
2575
3363
  }
2576
3364
 
2577
3365
 
2578
3366
  /* src/components/dialog/dialog.css */
2579
3367
  @layer zvk-ui-components {
2580
3368
  :where(.zvk-ui-dialog__overlay) {
2581
- --zvk-ui-dialog-overlay-background: color-mix(in srgb, var(--zvk-ui-color-foreground) 28%, transparent);
2582
- animation: zvk-ui-dialog-overlay-enter var(--zvk-ui-duration-normal) var(--zvk-ui-ease-standard);
3369
+ --zvk-ui-dialog-overlay-background: var(--zvk-ui-material-overlay-background);
2583
3370
  background: var(--zvk-ui-dialog-overlay-background);
2584
3371
  inset: 0;
2585
3372
  position: fixed;
2586
- z-index: 100;
3373
+ z-index: var(--zvk-ui-z-index-overlay);
3374
+ }
3375
+
3376
+ :where(.zvk-ui-dialog__overlay[data-state="open"]) {
3377
+ animation: zvk-ui-dialog-overlay-enter var(--zvk-ui-duration-normal) var(--zvk-ui-ease-enter) both;
3378
+ }
3379
+
3380
+ :where(.zvk-ui-dialog__overlay[data-state="closed"]) {
3381
+ animation: zvk-ui-dialog-overlay-exit var(--zvk-ui-duration-fast) var(--zvk-ui-ease-exit) both;
2587
3382
  }
2588
3383
 
2589
3384
  :where(.zvk-ui-dialog__content) {
2590
- --zvk-ui-dialog-content-background: var(--zvk-ui-color-surface);
3385
+ --zvk-ui-dialog-content-background: var(--zvk-ui-color-surface-raised);
2591
3386
  --zvk-ui-dialog-content-border: var(--zvk-ui-color-border);
3387
+ backdrop-filter: var(--zvk-ui-dialog-content-backdrop-filter, var(--zvk-ui-material-floating-backdrop-filter));
2592
3388
  background: var(--zvk-ui-dialog-content-background);
2593
3389
  border: 1px solid var(--zvk-ui-dialog-content-border);
2594
3390
  border-radius: var(--zvk-ui-radius-lg);
2595
- box-shadow: var(--zvk-ui-shadow-md);
3391
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-material-glass-shadow);
2596
3392
  left: 50%;
2597
3393
  max-height: min(85vh, 32rem);
2598
3394
  max-width: min(92vw, 32rem);
@@ -2602,11 +3398,15 @@
2602
3398
  top: 50%;
2603
3399
  transform: translate(-50%, -50%);
2604
3400
  width: min(92vw, 32rem);
2605
- z-index: 101;
3401
+ z-index: var(--zvk-ui-z-index-modal);
2606
3402
  }
2607
3403
 
2608
3404
  :where(.zvk-ui-dialog__content[data-state="open"]) {
2609
- animation: zvk-ui-dialog-content-enter var(--zvk-ui-duration-normal) var(--zvk-ui-ease-standard);
3405
+ animation: zvk-ui-dialog-content-enter var(--zvk-ui-duration-normal) var(--zvk-ui-ease-enter) both;
3406
+ }
3407
+
3408
+ :where(.zvk-ui-dialog__content[data-state="closed"]) {
3409
+ animation: zvk-ui-dialog-content-exit var(--zvk-ui-duration-fast) var(--zvk-ui-ease-exit) both;
2610
3410
  }
2611
3411
 
2612
3412
  :where(.zvk-ui-dialog__header, .zvk-ui-dialog__footer) {
@@ -2620,7 +3420,7 @@
2620
3420
 
2621
3421
  :where(.zvk-ui-dialog__title) {
2622
3422
  color: var(--zvk-ui-color-foreground);
2623
- font-family: var(--zvk-ui-font-family-sans);
3423
+ font-family: var(--zvk-ui-font-family-secondary);
2624
3424
  font-size: var(--zvk-ui-font-size-lg);
2625
3425
  font-weight: 700;
2626
3426
  line-height: var(--zvk-ui-line-height-tight);
@@ -2642,14 +3442,15 @@
2642
3442
  :where(.zvk-ui-dialog__trigger, .zvk-ui-dialog__close) {
2643
3443
  align-items: center;
2644
3444
  appearance: none;
3445
+ backdrop-filter: var(--zvk-ui-material-control-backdrop-filter);
2645
3446
  background: var(--zvk-ui-control-background);
2646
3447
  border: 1px solid var(--zvk-ui-color-border);
2647
3448
  border-radius: var(--zvk-ui-radius-md);
2648
- box-shadow: var(--zvk-ui-shadow-xs);
3449
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-shadow-xs);
2649
3450
  color: var(--zvk-ui-color-foreground);
2650
3451
  cursor: pointer;
2651
3452
  display: inline-flex;
2652
- font-family: var(--zvk-ui-font-family-sans);
3453
+ font-family: var(--zvk-ui-font-family-primary);
2653
3454
  font-size: var(--zvk-ui-font-size-sm);
2654
3455
  font-weight: 600;
2655
3456
  justify-content: center;
@@ -2675,15 +3476,10 @@
2675
3476
  }
2676
3477
 
2677
3478
  :where(.zvk-ui-dialog__trigger:focus-visible, .zvk-ui-dialog__close:focus-visible) {
2678
- box-shadow: var(--zvk-ui-shadow-xs), var(--zvk-ui-focus-ring);
3479
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-shadow-xs), var(--zvk-ui-focus-ring);
2679
3480
  outline: 0;
2680
3481
  }
2681
3482
 
2682
- :where(.zvk-ui-dialog[data-state="closed"]) .zvk-ui-dialog__content,
2683
- :where(.zvk-ui-dialog__content[data-state="closed"]) {
2684
- display: none;
2685
- }
2686
-
2687
3483
  @keyframes zvk-ui-dialog-overlay-enter {
2688
3484
  from {
2689
3485
  opacity: 0;
@@ -2694,6 +3490,16 @@
2694
3490
  }
2695
3491
  }
2696
3492
 
3493
+ @keyframes zvk-ui-dialog-overlay-exit {
3494
+ from {
3495
+ opacity: 1;
3496
+ }
3497
+
3498
+ to {
3499
+ opacity: 0;
3500
+ }
3501
+ }
3502
+
2697
3503
  @keyframes zvk-ui-dialog-content-enter {
2698
3504
  from {
2699
3505
  opacity: 0;
@@ -2706,11 +3512,32 @@
2706
3512
  }
2707
3513
  }
2708
3514
 
3515
+ @keyframes zvk-ui-dialog-content-exit {
3516
+ from {
3517
+ opacity: 1;
3518
+ transform: translate(-50%, -50%) scale(1);
3519
+ }
3520
+
3521
+ to {
3522
+ opacity: 0;
3523
+ transform: translate(-50%, calc(-50% + 0.25rem)) scale(0.98);
3524
+ }
3525
+ }
3526
+
2709
3527
  @media (prefers-reduced-motion: reduce) {
2710
3528
  :where(.zvk-ui-dialog__overlay),
2711
- :where(.zvk-ui-dialog__content[data-state="open"]) {
3529
+ :where(.zvk-ui-dialog__content) {
2712
3530
  animation: none;
2713
3531
  }
3532
+
3533
+ :where(.zvk-ui-dialog__overlay[data-state="closed"]),
3534
+ :where(.zvk-ui-dialog__content[data-state="closed"]) {
3535
+ opacity: 0;
3536
+ }
3537
+
3538
+ :where(.zvk-ui-dialog__content) {
3539
+ transform: translate(-50%, -50%);
3540
+ }
2714
3541
  }
2715
3542
  }
2716
3543
 
@@ -2722,19 +3549,28 @@
2722
3549
  }
2723
3550
 
2724
3551
  .zvk-ui-alert-dialog__overlay {
2725
- background: color-mix(in srgb, var(--zvk-ui-color-foreground) 28%, transparent);
3552
+ background: var(--zvk-ui-material-overlay-background);
2726
3553
  inset: 0;
2727
3554
  position: fixed;
2728
- z-index: 100;
3555
+ z-index: var(--zvk-ui-z-index-overlay);
3556
+ }
3557
+
3558
+ .zvk-ui-alert-dialog__overlay[data-state="open"] {
3559
+ animation: zvk-ui-alert-dialog-overlay-enter var(--zvk-ui-duration-normal) var(--zvk-ui-ease-enter) both;
3560
+ }
3561
+
3562
+ .zvk-ui-alert-dialog__overlay[data-state="closed"] {
3563
+ animation: zvk-ui-alert-dialog-overlay-exit var(--zvk-ui-duration-fast) var(--zvk-ui-ease-exit) both;
2729
3564
  }
2730
3565
 
2731
3566
  .zvk-ui-alert-dialog__content {
2732
- background: var(--zvk-ui-color-surface);
3567
+ backdrop-filter: var(--zvk-ui-alert-dialog-content-backdrop-filter, var(--zvk-ui-material-floating-backdrop-filter));
3568
+ background: var(--zvk-ui-color-surface-raised);
2733
3569
  border: 1px solid var(--zvk-ui-color-border);
2734
3570
  border-radius: var(--zvk-ui-radius-lg);
2735
- box-shadow: var(--zvk-ui-shadow-md);
3571
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-material-glass-shadow);
2736
3572
  color: var(--zvk-ui-color-foreground);
2737
- font-family: var(--zvk-ui-font-family-sans);
3573
+ font-family: var(--zvk-ui-font-family-primary);
2738
3574
  inline-size: min(30rem, calc(100vw - 2rem));
2739
3575
  left: 50%;
2740
3576
  line-height: var(--zvk-ui-line-height-normal);
@@ -2742,12 +3578,20 @@
2742
3578
  position: fixed;
2743
3579
  top: 50%;
2744
3580
  transform: translate(-50%, -50%);
2745
- z-index: 101;
3581
+ z-index: var(--zvk-ui-z-index-modal);
3582
+ }
3583
+
3584
+ .zvk-ui-alert-dialog__content[data-state="open"] {
3585
+ animation: zvk-ui-alert-dialog-content-enter var(--zvk-ui-duration-normal) var(--zvk-ui-ease-enter) both;
3586
+ }
3587
+
3588
+ .zvk-ui-alert-dialog__content[data-state="closed"] {
3589
+ animation: zvk-ui-alert-dialog-content-exit var(--zvk-ui-duration-fast) var(--zvk-ui-ease-exit) both;
2746
3590
  }
2747
3591
 
2748
3592
  .zvk-ui-alert-dialog__title {
2749
3593
  color: var(--zvk-ui-color-foreground);
2750
- font-family: var(--zvk-ui-font-family-sans);
3594
+ font-family: var(--zvk-ui-font-family-secondary);
2751
3595
  font-size: var(--zvk-ui-font-size-lg);
2752
3596
  font-weight: 700;
2753
3597
  line-height: var(--zvk-ui-line-height-tight);
@@ -2772,14 +3616,15 @@
2772
3616
  .zvk-ui-alert-dialog__button {
2773
3617
  align-items: center;
2774
3618
  appearance: none;
3619
+ backdrop-filter: var(--zvk-ui-material-control-backdrop-filter);
2775
3620
  background: var(--zvk-ui-control-background);
2776
3621
  border: 1px solid var(--zvk-ui-color-border);
2777
3622
  border-radius: var(--zvk-ui-radius-md);
2778
- box-shadow: var(--zvk-ui-shadow-xs);
3623
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-shadow-xs);
2779
3624
  color: var(--zvk-ui-color-foreground);
2780
3625
  cursor: pointer;
2781
3626
  display: inline-flex;
2782
- font-family: var(--zvk-ui-font-family-sans);
3627
+ font-family: var(--zvk-ui-font-family-primary);
2783
3628
  font-size: var(--zvk-ui-font-size-sm);
2784
3629
  font-weight: 600;
2785
3630
  justify-content: center;
@@ -2806,7 +3651,7 @@
2806
3651
 
2807
3652
  .zvk-ui-alert-dialog__trigger:focus-visible,
2808
3653
  .zvk-ui-alert-dialog__button:focus-visible {
2809
- box-shadow: var(--zvk-ui-shadow-xs), var(--zvk-ui-focus-ring);
3654
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-shadow-xs), var(--zvk-ui-focus-ring);
2810
3655
  outline: 0;
2811
3656
  }
2812
3657
 
@@ -2815,6 +3660,66 @@
2815
3660
  cursor: not-allowed;
2816
3661
  opacity: var(--zvk-ui-opacity-disabled);
2817
3662
  }
3663
+
3664
+ @keyframes zvk-ui-alert-dialog-overlay-enter {
3665
+ from {
3666
+ opacity: 0;
3667
+ }
3668
+
3669
+ to {
3670
+ opacity: 1;
3671
+ }
3672
+ }
3673
+
3674
+ @keyframes zvk-ui-alert-dialog-overlay-exit {
3675
+ from {
3676
+ opacity: 1;
3677
+ }
3678
+
3679
+ to {
3680
+ opacity: 0;
3681
+ }
3682
+ }
3683
+
3684
+ @keyframes zvk-ui-alert-dialog-content-enter {
3685
+ from {
3686
+ opacity: 0;
3687
+ transform: translate(-50%, -50%) scale(0.98);
3688
+ }
3689
+
3690
+ to {
3691
+ opacity: 1;
3692
+ transform: translate(-50%, -50%) scale(1);
3693
+ }
3694
+ }
3695
+
3696
+ @keyframes zvk-ui-alert-dialog-content-exit {
3697
+ from {
3698
+ opacity: 1;
3699
+ transform: translate(-50%, -50%) scale(1);
3700
+ }
3701
+
3702
+ to {
3703
+ opacity: 0;
3704
+ transform: translate(-50%, -50%) scale(0.98);
3705
+ }
3706
+ }
3707
+
3708
+ @media (prefers-reduced-motion: reduce) {
3709
+ .zvk-ui-alert-dialog__overlay,
3710
+ .zvk-ui-alert-dialog__content {
3711
+ animation: none;
3712
+ }
3713
+
3714
+ .zvk-ui-alert-dialog__overlay[data-state="closed"],
3715
+ .zvk-ui-alert-dialog__content[data-state="closed"] {
3716
+ opacity: 0;
3717
+ }
3718
+
3719
+ .zvk-ui-alert-dialog__content {
3720
+ transform: translate(-50%, -50%);
3721
+ }
3722
+ }
2818
3723
  }
2819
3724
 
2820
3725
 
@@ -2825,25 +3730,34 @@
2825
3730
  }
2826
3731
 
2827
3732
  .zvk-ui-sheet__overlay {
2828
- background: color-mix(in srgb, var(--zvk-ui-color-foreground) 24%, transparent);
3733
+ background: var(--zvk-ui-material-overlay-background);
2829
3734
  inset: 0;
2830
3735
  position: fixed;
2831
- z-index: 100;
3736
+ z-index: var(--zvk-ui-z-index-overlay);
3737
+ }
3738
+
3739
+ .zvk-ui-sheet__overlay[data-state="open"] {
3740
+ animation: zvk-ui-sheet-overlay-enter var(--zvk-ui-duration-normal) var(--zvk-ui-ease-enter) both;
3741
+ }
3742
+
3743
+ .zvk-ui-sheet__overlay[data-state="closed"] {
3744
+ animation: zvk-ui-sheet-overlay-exit var(--zvk-ui-duration-fast) var(--zvk-ui-ease-exit) both;
2832
3745
  }
2833
3746
 
2834
3747
  .zvk-ui-sheet__content {
2835
- background: var(--zvk-ui-color-surface);
3748
+ backdrop-filter: var(--zvk-ui-sheet-content-backdrop-filter, var(--zvk-ui-material-floating-backdrop-filter));
3749
+ background: var(--zvk-ui-color-surface-raised);
2836
3750
  border: 1px solid var(--zvk-ui-color-border);
2837
- box-shadow: var(--zvk-ui-shadow-md);
3751
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-material-glass-shadow);
2838
3752
  color: var(--zvk-ui-color-foreground);
2839
3753
  display: flex;
2840
3754
  flex-direction: column;
2841
- font-family: var(--zvk-ui-font-family-sans);
3755
+ font-family: var(--zvk-ui-font-family-primary);
2842
3756
  gap: var(--zvk-ui-space-4);
2843
3757
  line-height: var(--zvk-ui-line-height-normal);
2844
3758
  padding: var(--zvk-ui-space-5);
2845
3759
  position: fixed;
2846
- z-index: 101;
3760
+ z-index: var(--zvk-ui-z-index-modal);
2847
3761
  }
2848
3762
 
2849
3763
  .zvk-ui-sheet__content[data-side="right"],
@@ -2881,6 +3795,38 @@
2881
3795
  bottom: 0;
2882
3796
  }
2883
3797
 
3798
+ .zvk-ui-sheet__content[data-state="open"][data-side="right"] {
3799
+ animation: zvk-ui-sheet-content-enter-right var(--zvk-ui-duration-slow) var(--zvk-ui-ease-emphasized) both;
3800
+ }
3801
+
3802
+ .zvk-ui-sheet__content[data-state="closed"][data-side="right"] {
3803
+ animation: zvk-ui-sheet-content-exit-right var(--zvk-ui-duration-slow) var(--zvk-ui-ease-exit) both;
3804
+ }
3805
+
3806
+ .zvk-ui-sheet__content[data-state="open"][data-side="left"] {
3807
+ animation: zvk-ui-sheet-content-enter-left var(--zvk-ui-duration-slow) var(--zvk-ui-ease-emphasized) both;
3808
+ }
3809
+
3810
+ .zvk-ui-sheet__content[data-state="closed"][data-side="left"] {
3811
+ animation: zvk-ui-sheet-content-exit-left var(--zvk-ui-duration-slow) var(--zvk-ui-ease-exit) both;
3812
+ }
3813
+
3814
+ .zvk-ui-sheet__content[data-state="open"][data-side="top"] {
3815
+ animation: zvk-ui-sheet-content-enter-top var(--zvk-ui-duration-slow) var(--zvk-ui-ease-emphasized) both;
3816
+ }
3817
+
3818
+ .zvk-ui-sheet__content[data-state="closed"][data-side="top"] {
3819
+ animation: zvk-ui-sheet-content-exit-top var(--zvk-ui-duration-slow) var(--zvk-ui-ease-exit) both;
3820
+ }
3821
+
3822
+ .zvk-ui-sheet__content[data-state="open"][data-side="bottom"] {
3823
+ animation: zvk-ui-sheet-content-enter-bottom var(--zvk-ui-duration-slow) var(--zvk-ui-ease-emphasized) both;
3824
+ }
3825
+
3826
+ .zvk-ui-sheet__content[data-state="closed"][data-side="bottom"] {
3827
+ animation: zvk-ui-sheet-content-exit-bottom var(--zvk-ui-duration-slow) var(--zvk-ui-ease-exit) both;
3828
+ }
3829
+
2884
3830
  .zvk-ui-sheet__header {
2885
3831
  display: grid;
2886
3832
  gap: var(--zvk-ui-space-2);
@@ -2888,7 +3834,7 @@
2888
3834
 
2889
3835
  .zvk-ui-sheet__title {
2890
3836
  color: var(--zvk-ui-color-foreground);
2891
- font-family: var(--zvk-ui-font-family-sans);
3837
+ font-family: var(--zvk-ui-font-family-secondary);
2892
3838
  font-size: var(--zvk-ui-font-size-lg);
2893
3839
  font-weight: 700;
2894
3840
  line-height: var(--zvk-ui-line-height-tight);
@@ -2913,14 +3859,15 @@
2913
3859
  .zvk-ui-sheet__close {
2914
3860
  align-items: center;
2915
3861
  appearance: none;
3862
+ backdrop-filter: var(--zvk-ui-material-control-backdrop-filter);
2916
3863
  background: var(--zvk-ui-control-background);
2917
3864
  border: 1px solid var(--zvk-ui-color-border);
2918
3865
  border-radius: var(--zvk-ui-radius-md);
2919
- box-shadow: var(--zvk-ui-shadow-xs);
3866
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-shadow-xs);
2920
3867
  color: var(--zvk-ui-color-foreground);
2921
3868
  cursor: pointer;
2922
3869
  display: inline-flex;
2923
- font-family: var(--zvk-ui-font-family-sans);
3870
+ font-family: var(--zvk-ui-font-family-primary);
2924
3871
  font-size: var(--zvk-ui-font-size-sm);
2925
3872
  font-weight: 600;
2926
3873
  justify-content: center;
@@ -2947,14 +3894,146 @@
2947
3894
 
2948
3895
  .zvk-ui-sheet__trigger:focus-visible,
2949
3896
  .zvk-ui-sheet__close:focus-visible {
2950
- box-shadow: var(--zvk-ui-shadow-xs), var(--zvk-ui-focus-ring);
3897
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-shadow-xs), var(--zvk-ui-focus-ring);
2951
3898
  outline: 0;
2952
3899
  }
2953
3900
 
2954
- .zvk-ui-sheet__trigger:disabled,
2955
- .zvk-ui-sheet__close:disabled {
2956
- cursor: not-allowed;
2957
- opacity: var(--zvk-ui-opacity-disabled);
3901
+ .zvk-ui-sheet__trigger:disabled,
3902
+ .zvk-ui-sheet__close:disabled {
3903
+ cursor: not-allowed;
3904
+ opacity: var(--zvk-ui-opacity-disabled);
3905
+ }
3906
+
3907
+ @keyframes zvk-ui-sheet-overlay-enter {
3908
+ from {
3909
+ opacity: 0;
3910
+ }
3911
+
3912
+ to {
3913
+ opacity: 1;
3914
+ }
3915
+ }
3916
+
3917
+ @keyframes zvk-ui-sheet-overlay-exit {
3918
+ from {
3919
+ opacity: 1;
3920
+ }
3921
+
3922
+ to {
3923
+ opacity: 0;
3924
+ }
3925
+ }
3926
+
3927
+ @keyframes zvk-ui-sheet-content-enter-right {
3928
+ from {
3929
+ opacity: 0;
3930
+ transform: translateX(100%);
3931
+ }
3932
+
3933
+ to {
3934
+ opacity: 1;
3935
+ transform: translateX(0);
3936
+ }
3937
+ }
3938
+
3939
+ @keyframes zvk-ui-sheet-content-exit-right {
3940
+ from {
3941
+ opacity: 1;
3942
+ transform: translateX(0);
3943
+ }
3944
+
3945
+ to {
3946
+ opacity: 0;
3947
+ transform: translateX(100%);
3948
+ }
3949
+ }
3950
+
3951
+ @keyframes zvk-ui-sheet-content-enter-left {
3952
+ from {
3953
+ opacity: 0;
3954
+ transform: translateX(-100%);
3955
+ }
3956
+
3957
+ to {
3958
+ opacity: 1;
3959
+ transform: translateX(0);
3960
+ }
3961
+ }
3962
+
3963
+ @keyframes zvk-ui-sheet-content-exit-left {
3964
+ from {
3965
+ opacity: 1;
3966
+ transform: translateX(0);
3967
+ }
3968
+
3969
+ to {
3970
+ opacity: 0;
3971
+ transform: translateX(-100%);
3972
+ }
3973
+ }
3974
+
3975
+ @keyframes zvk-ui-sheet-content-enter-top {
3976
+ from {
3977
+ opacity: 0;
3978
+ transform: translateY(-100%);
3979
+ }
3980
+
3981
+ to {
3982
+ opacity: 1;
3983
+ transform: translateY(0);
3984
+ }
3985
+ }
3986
+
3987
+ @keyframes zvk-ui-sheet-content-exit-top {
3988
+ from {
3989
+ opacity: 1;
3990
+ transform: translateY(0);
3991
+ }
3992
+
3993
+ to {
3994
+ opacity: 0;
3995
+ transform: translateY(-100%);
3996
+ }
3997
+ }
3998
+
3999
+ @keyframes zvk-ui-sheet-content-enter-bottom {
4000
+ from {
4001
+ opacity: 0;
4002
+ transform: translateY(100%);
4003
+ }
4004
+
4005
+ to {
4006
+ opacity: 1;
4007
+ transform: translateY(0);
4008
+ }
4009
+ }
4010
+
4011
+ @keyframes zvk-ui-sheet-content-exit-bottom {
4012
+ from {
4013
+ opacity: 1;
4014
+ transform: translateY(0);
4015
+ }
4016
+
4017
+ to {
4018
+ opacity: 0;
4019
+ transform: translateY(100%);
4020
+ }
4021
+ }
4022
+
4023
+ @media (prefers-reduced-motion: reduce) {
4024
+ .zvk-ui-sheet__overlay,
4025
+ .zvk-ui-sheet__content {
4026
+ animation: none;
4027
+ }
4028
+
4029
+ .zvk-ui-sheet__overlay[data-state="closed"],
4030
+ .zvk-ui-sheet__content[data-state="closed"] {
4031
+ opacity: 0;
4032
+ }
4033
+
4034
+ .zvk-ui-sheet__content {
4035
+ transform: none;
4036
+ }
2958
4037
  }
2959
4038
  }
2960
4039
 
@@ -2969,14 +4048,15 @@
2969
4048
  :where(.zvk-ui-popover__trigger) {
2970
4049
  align-items: center;
2971
4050
  appearance: none;
4051
+ backdrop-filter: var(--zvk-ui-material-control-backdrop-filter);
2972
4052
  background: var(--zvk-ui-control-background);
2973
4053
  border: 1px solid var(--zvk-ui-color-border);
2974
4054
  border-radius: var(--zvk-ui-radius-md);
2975
- box-shadow: var(--zvk-ui-shadow-xs);
4055
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-shadow-xs);
2976
4056
  color: var(--zvk-ui-color-foreground);
2977
4057
  cursor: pointer;
2978
4058
  display: inline-flex;
2979
- font-family: var(--zvk-ui-font-family-sans);
4059
+ font-family: var(--zvk-ui-font-family-primary);
2980
4060
  font-size: var(--zvk-ui-font-size-sm);
2981
4061
  font-weight: 600;
2982
4062
  justify-content: center;
@@ -2999,26 +4079,59 @@
2999
4079
  }
3000
4080
 
3001
4081
  :where(.zvk-ui-popover__trigger:focus-visible) {
3002
- box-shadow: var(--zvk-ui-shadow-xs), var(--zvk-ui-focus-ring);
4082
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-shadow-xs), var(--zvk-ui-focus-ring);
3003
4083
  outline: 0;
3004
4084
  }
3005
4085
 
3006
4086
  :where(.zvk-ui-popover__content) {
4087
+ --zvk-ui-popover-motion-x: 0;
4088
+ --zvk-ui-popover-motion-y: -0.25rem;
4089
+ backdrop-filter: var(--zvk-ui-popover-content-backdrop-filter, var(--zvk-ui-material-floating-backdrop-filter));
3007
4090
  background: var(--zvk-ui-color-surface);
3008
4091
  border: 1px solid var(--zvk-ui-color-border);
3009
4092
  border-radius: var(--zvk-ui-radius-md);
3010
- box-shadow: var(--zvk-ui-shadow-md);
4093
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-material-glass-shadow);
4094
+ color: var(--zvk-ui-color-foreground);
4095
+ font-family: var(--zvk-ui-font-family-primary);
4096
+ font-size: var(--zvk-ui-font-size-sm);
3011
4097
  padding: var(--zvk-ui-space-3);
3012
4098
  position: absolute;
3013
4099
  max-width: var(--zvk-ui-floating-available-width);
3014
4100
  max-height: var(--zvk-ui-floating-available-height);
3015
4101
  transform-origin: var(--zvk-ui-popover-transform-origin);
3016
- z-index: 1;
4102
+ z-index: var(--zvk-ui-z-popover, var(--zvk-ui-z-index-popover));
3017
4103
  pointer-events: auto;
3018
4104
  }
3019
4105
 
4106
+ :where(.zvk-ui-popover__content[data-side="top"]) {
4107
+ --zvk-ui-popover-motion-y: 0.25rem;
4108
+ }
4109
+
4110
+ :where(.zvk-ui-popover__content[data-side="bottom"]) {
4111
+ --zvk-ui-popover-motion-y: -0.25rem;
4112
+ }
4113
+
4114
+ :where(.zvk-ui-popover__content[data-side="left"]) {
4115
+ --zvk-ui-popover-motion-x: 0.25rem;
4116
+ --zvk-ui-popover-motion-y: 0;
4117
+ }
4118
+
4119
+ :where(.zvk-ui-popover__content[data-side="right"]) {
4120
+ --zvk-ui-popover-motion-x: -0.25rem;
4121
+ --zvk-ui-popover-motion-y: 0;
4122
+ }
4123
+
3020
4124
  :where(.zvk-ui-popover__content[data-state="open"]) {
3021
- animation: zvk-ui-popover-enter var(--zvk-ui-duration-normal) var(--zvk-ui-ease-standard);
4125
+ animation: zvk-ui-popover-enter var(--zvk-ui-duration-normal) var(--zvk-ui-ease-enter);
4126
+ }
4127
+
4128
+ :where(.zvk-ui-popover__content[data-state="closed"]:not([hidden])) {
4129
+ animation: zvk-ui-popover-exit var(--zvk-ui-duration-fast) var(--zvk-ui-ease-exit);
4130
+ pointer-events: none;
4131
+ }
4132
+
4133
+ :where(.zvk-ui-popover__content[aria-hidden="true"]) {
4134
+ pointer-events: none;
3022
4135
  }
3023
4136
 
3024
4137
  :where(.zvk-ui-popover__content[hidden]) {
@@ -3028,17 +4141,29 @@
3028
4141
  @keyframes zvk-ui-popover-enter {
3029
4142
  from {
3030
4143
  opacity: 0;
3031
- transform: scale(0.96) translateY(-0.125rem);
4144
+ transform: translate(var(--zvk-ui-popover-motion-x), var(--zvk-ui-popover-motion-y)) scale(0.96);
3032
4145
  }
3033
4146
 
3034
4147
  to {
3035
4148
  opacity: 1;
3036
- transform: scale(1) translateY(0);
4149
+ transform: translate(0, 0) scale(1);
4150
+ }
4151
+ }
4152
+
4153
+ @keyframes zvk-ui-popover-exit {
4154
+ from {
4155
+ opacity: 1;
4156
+ transform: translate(0, 0) scale(1);
4157
+ }
4158
+
4159
+ to {
4160
+ opacity: 0;
4161
+ transform: translate(var(--zvk-ui-popover-motion-x), var(--zvk-ui-popover-motion-y)) scale(0.96);
3037
4162
  }
3038
4163
  }
3039
4164
 
3040
4165
  @media (prefers-reduced-motion: reduce) {
3041
- :where(.zvk-ui-popover__content[data-state="open"]) {
4166
+ :where(.zvk-ui-popover__content[data-state="open"], .zvk-ui-popover__content[data-state="closed"]:not([hidden])) {
3042
4167
  animation: none;
3043
4168
  }
3044
4169
  }
@@ -3057,13 +4182,15 @@
3057
4182
  }
3058
4183
 
3059
4184
  :where(.zvk-ui-hover-card__content) {
3060
- animation: zvk-ui-hover-card-enter var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
4185
+ --zvk-ui-hover-card-motion-x: 0;
4186
+ --zvk-ui-hover-card-motion-y: -0.1875rem;
4187
+ backdrop-filter: var(--zvk-ui-hover-card-content-backdrop-filter, var(--zvk-ui-material-floating-backdrop-filter));
3061
4188
  background: var(--zvk-ui-color-surface-raised);
3062
4189
  border: 1px solid var(--zvk-ui-color-border);
3063
4190
  border-radius: var(--zvk-ui-radius-md);
3064
- box-shadow: var(--zvk-ui-shadow-md);
4191
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-material-glass-shadow);
3065
4192
  color: var(--zvk-ui-color-foreground);
3066
- font-family: var(--zvk-ui-font-family-sans);
4193
+ font-family: var(--zvk-ui-font-family-primary);
3067
4194
  font-size: var(--zvk-ui-font-size-sm);
3068
4195
  max-width: min(20rem, var(--zvk-ui-floating-available-width));
3069
4196
  padding: var(--zvk-ui-space-3);
@@ -3072,13 +4199,40 @@
3072
4199
  z-index: var(--zvk-ui-z-index-popover, var(--zvk-ui-z-index-overlay));
3073
4200
  }
3074
4201
 
4202
+ :where(.zvk-ui-hover-card__content[data-side="top"]) {
4203
+ --zvk-ui-hover-card-motion-y: 0.1875rem;
4204
+ }
4205
+
4206
+ :where(.zvk-ui-hover-card__content[data-side="bottom"]) {
4207
+ --zvk-ui-hover-card-motion-y: -0.1875rem;
4208
+ }
4209
+
4210
+ :where(.zvk-ui-hover-card__content[data-side="left"]) {
4211
+ --zvk-ui-hover-card-motion-x: 0.1875rem;
4212
+ --zvk-ui-hover-card-motion-y: 0;
4213
+ }
4214
+
4215
+ :where(.zvk-ui-hover-card__content[data-side="right"]) {
4216
+ --zvk-ui-hover-card-motion-x: -0.1875rem;
4217
+ --zvk-ui-hover-card-motion-y: 0;
4218
+ }
4219
+
3075
4220
  :where(.zvk-ui-hover-card__content:focus-visible) {
3076
- box-shadow: var(--zvk-ui-shadow-md), var(--zvk-ui-focus-ring);
4221
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-material-glass-shadow), var(--zvk-ui-focus-ring);
3077
4222
  outline: 0;
3078
4223
  }
3079
4224
 
3080
- :where(.zvk-ui-hover-card__content[data-state="closed"]) {
3081
- animation: none;
4225
+ :where(.zvk-ui-hover-card__content[data-state="open"]) {
4226
+ animation: zvk-ui-hover-card-enter var(--zvk-ui-duration-fast) var(--zvk-ui-ease-enter);
4227
+ }
4228
+
4229
+ :where(.zvk-ui-hover-card__content[data-state="closed"]:not([hidden])) {
4230
+ animation: zvk-ui-hover-card-exit var(--zvk-ui-duration-fast) var(--zvk-ui-ease-exit);
4231
+ pointer-events: none;
4232
+ }
4233
+
4234
+ :where(.zvk-ui-hover-card__content[aria-hidden="true"]) {
4235
+ pointer-events: none;
3082
4236
  }
3083
4237
 
3084
4238
  :where(.zvk-ui-hover-card__content[hidden]) {
@@ -3088,17 +4242,29 @@
3088
4242
  @keyframes zvk-ui-hover-card-enter {
3089
4243
  from {
3090
4244
  opacity: 0;
3091
- transform: scale(0.98) translateY(0.125rem);
4245
+ transform: translate(var(--zvk-ui-hover-card-motion-x), var(--zvk-ui-hover-card-motion-y)) scale(0.98);
3092
4246
  }
3093
4247
 
3094
4248
  to {
3095
4249
  opacity: 1;
3096
- transform: scale(1) translateY(0);
4250
+ transform: translate(0, 0) scale(1);
4251
+ }
4252
+ }
4253
+
4254
+ @keyframes zvk-ui-hover-card-exit {
4255
+ from {
4256
+ opacity: 1;
4257
+ transform: translate(0, 0) scale(1);
4258
+ }
4259
+
4260
+ to {
4261
+ opacity: 0;
4262
+ transform: translate(var(--zvk-ui-hover-card-motion-x), var(--zvk-ui-hover-card-motion-y)) scale(0.98);
3097
4263
  }
3098
4264
  }
3099
4265
 
3100
4266
  @media (prefers-reduced-motion: reduce) {
3101
- :where(.zvk-ui-hover-card__content) {
4267
+ :where(.zvk-ui-hover-card__content[data-state="open"], .zvk-ui-hover-card__content[data-state="closed"]:not([hidden])) {
3102
4268
  animation: none;
3103
4269
  }
3104
4270
  }
@@ -3108,12 +4274,14 @@
3108
4274
  /* src/components/tooltip/tooltip.css */
3109
4275
  @layer zvk-ui-components {
3110
4276
  :where(.zvk-ui-tooltip) {
3111
- animation: zvk-ui-tooltip-enter var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
4277
+ --zvk-ui-tooltip-motion-x: 0;
4278
+ --zvk-ui-tooltip-motion-y: -0.125rem;
4279
+ backdrop-filter: var(--zvk-ui-tooltip-backdrop-filter, var(--zvk-ui-material-floating-backdrop-filter));
3112
4280
  background: var(--zvk-ui-color-surface-raised);
3113
4281
  border: 1px solid var(--zvk-ui-color-border);
3114
4282
  border-radius: var(--zvk-ui-radius-md);
3115
4283
  color: var(--zvk-ui-color-foreground);
3116
- font-family: var(--zvk-ui-font-family-sans);
4284
+ font-family: var(--zvk-ui-font-family-primary);
3117
4285
  font-size: var(--zvk-ui-font-size-sm);
3118
4286
  max-width: min(16rem, var(--zvk-ui-floating-available-width));
3119
4287
  padding: var(--zvk-ui-space-2) var(--zvk-ui-space-3);
@@ -3123,20 +4291,62 @@
3123
4291
  z-index: var(--zvk-ui-z-index-tooltip, var(--zvk-ui-z-index-overlay));
3124
4292
  }
3125
4293
 
4294
+ :where(.zvk-ui-tooltip[data-side="top"]) {
4295
+ --zvk-ui-tooltip-motion-y: 0.125rem;
4296
+ }
4297
+
4298
+ :where(.zvk-ui-tooltip[data-side="bottom"]) {
4299
+ --zvk-ui-tooltip-motion-y: -0.125rem;
4300
+ }
4301
+
4302
+ :where(.zvk-ui-tooltip[data-side="left"]) {
4303
+ --zvk-ui-tooltip-motion-x: 0.125rem;
4304
+ --zvk-ui-tooltip-motion-y: 0;
4305
+ }
4306
+
4307
+ :where(.zvk-ui-tooltip[data-side="right"]) {
4308
+ --zvk-ui-tooltip-motion-x: -0.125rem;
4309
+ --zvk-ui-tooltip-motion-y: 0;
4310
+ }
4311
+
4312
+ :where(.zvk-ui-tooltip[data-state="open"]) {
4313
+ animation: zvk-ui-tooltip-enter var(--zvk-ui-duration-fast) var(--zvk-ui-ease-enter);
4314
+ }
4315
+
4316
+ :where(.zvk-ui-tooltip[data-state="closed"]:not([hidden])) {
4317
+ animation: zvk-ui-tooltip-exit var(--zvk-ui-duration-instant) var(--zvk-ui-ease-exit);
4318
+ }
4319
+
4320
+ :where(.zvk-ui-tooltip[hidden]) {
4321
+ display: none;
4322
+ }
4323
+
3126
4324
  @keyframes zvk-ui-tooltip-enter {
3127
4325
  from {
3128
4326
  opacity: 0;
3129
- transform: scale(0.96) translateY(0.125rem);
4327
+ transform: translate(var(--zvk-ui-tooltip-motion-x), var(--zvk-ui-tooltip-motion-y));
3130
4328
  }
3131
4329
 
3132
4330
  to {
3133
4331
  opacity: 1;
3134
- transform: scale(1) translateY(0);
4332
+ transform: translate(0, 0);
4333
+ }
4334
+ }
4335
+
4336
+ @keyframes zvk-ui-tooltip-exit {
4337
+ from {
4338
+ opacity: 1;
4339
+ transform: translate(0, 0);
4340
+ }
4341
+
4342
+ to {
4343
+ opacity: 0;
4344
+ transform: translate(var(--zvk-ui-tooltip-motion-x), var(--zvk-ui-tooltip-motion-y));
3135
4345
  }
3136
4346
  }
3137
4347
 
3138
4348
  @media (prefers-reduced-motion: reduce) {
3139
- :where(.zvk-ui-tooltip) {
4349
+ :where(.zvk-ui-tooltip[data-state="open"], .zvk-ui-tooltip[data-state="closed"]:not([hidden])) {
3140
4350
  animation: none;
3141
4351
  }
3142
4352
  }
@@ -3148,16 +4358,18 @@
3148
4358
  :where(.zvk-ui-dropdown-menu__trigger) {
3149
4359
  align-items: center;
3150
4360
  appearance: none;
4361
+ backdrop-filter: var(--zvk-ui-material-control-backdrop-filter);
3151
4362
  background: var(--zvk-ui-control-background);
3152
4363
  border: 1px solid var(--zvk-ui-color-border);
3153
4364
  border-radius: var(--zvk-ui-radius-md);
3154
- box-shadow: var(--zvk-ui-shadow-xs);
4365
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-shadow-xs);
3155
4366
  color: var(--zvk-ui-color-foreground);
3156
4367
  cursor: pointer;
3157
4368
  display: inline-flex;
3158
- font-family: var(--zvk-ui-font-family-sans);
4369
+ font-family: var(--zvk-ui-font-family-primary);
3159
4370
  font-size: var(--zvk-ui-font-size-sm);
3160
4371
  font-weight: 600;
4372
+ gap: var(--zvk-ui-control-gap);
3161
4373
  justify-content: center;
3162
4374
  line-height: 1;
3163
4375
  min-block-size: var(--zvk-ui-control-height-md);
@@ -3167,6 +4379,33 @@
3167
4379
  user-select: none;
3168
4380
  }
3169
4381
 
4382
+ :where(.zvk-ui-dropdown-menu__trigger-label) {
4383
+ min-width: 0;
4384
+ }
4385
+
4386
+ :where(.zvk-ui-dropdown-menu__trigger-indicator) {
4387
+ color: var(--zvk-ui-color-muted-foreground);
4388
+ display: inline-grid;
4389
+ flex: 0 0 auto;
4390
+ inline-size: 1rem;
4391
+ place-items: center;
4392
+ transition: color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), transform var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
4393
+ }
4394
+
4395
+ .zvk-ui-dropdown-menu__trigger-indicator::before {
4396
+ block-size: 0.45rem;
4397
+ border-block-end: 1.5px solid currentColor;
4398
+ border-inline-end: 1.5px solid currentColor;
4399
+ content: "";
4400
+ inline-size: 0.45rem;
4401
+ transform: rotate(45deg) translate(-0.1rem, -0.1rem);
4402
+ }
4403
+
4404
+ :where(.zvk-ui-dropdown-menu__trigger[data-state="open"] .zvk-ui-dropdown-menu__trigger-indicator) {
4405
+ color: var(--zvk-ui-color-foreground);
4406
+ transform: rotate(180deg);
4407
+ }
4408
+
3170
4409
  :where(.zvk-ui-dropdown-menu__trigger:hover:not(:disabled)) {
3171
4410
  background: var(--zvk-ui-control-hover);
3172
4411
  border-color: var(--zvk-ui-color-border-strong);
@@ -3178,23 +4417,63 @@
3178
4417
  }
3179
4418
 
3180
4419
  :where(.zvk-ui-dropdown-menu__trigger:focus-visible) {
3181
- box-shadow: var(--zvk-ui-shadow-xs), var(--zvk-ui-focus-ring);
4420
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-shadow-xs), var(--zvk-ui-focus-ring);
3182
4421
  outline: 0;
3183
4422
  }
3184
4423
 
3185
4424
  :where(.zvk-ui-dropdown-menu__content) {
3186
4425
  --zvk-ui-dropdown-menu-min-width: min-content;
4426
+ --zvk-ui-dropdown-menu-motion-x: 0;
4427
+ --zvk-ui-dropdown-menu-motion-y: -0.25rem;
4428
+ backdrop-filter: var(--zvk-ui-dropdown-menu-content-backdrop-filter, var(--zvk-ui-material-floating-backdrop-filter));
3187
4429
  background: var(--zvk-ui-color-surface-raised);
3188
4430
  border: 1px solid var(--zvk-ui-color-border);
3189
4431
  border-radius: var(--zvk-ui-radius-md);
3190
- box-shadow: var(--zvk-ui-shadow-md);
4432
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-material-glass-shadow);
3191
4433
  color: var(--zvk-ui-color-foreground);
4434
+ font-family: var(--zvk-ui-font-family-primary);
4435
+ font-size: var(--zvk-ui-font-size-sm);
3192
4436
  min-width: var(--zvk-ui-dropdown-menu-min-width);
3193
4437
  outline: none;
3194
4438
  padding: var(--zvk-ui-space-1);
3195
4439
  position: absolute;
3196
4440
  }
3197
4441
 
4442
+ :where(.zvk-ui-dropdown-menu__content[data-side="top"]) {
4443
+ --zvk-ui-dropdown-menu-motion-y: 0.25rem;
4444
+ }
4445
+
4446
+ :where(.zvk-ui-dropdown-menu__content[data-side="bottom"]) {
4447
+ --zvk-ui-dropdown-menu-motion-y: -0.25rem;
4448
+ }
4449
+
4450
+ :where(.zvk-ui-dropdown-menu__content[data-side="left"]) {
4451
+ --zvk-ui-dropdown-menu-motion-x: 0.25rem;
4452
+ --zvk-ui-dropdown-menu-motion-y: 0;
4453
+ }
4454
+
4455
+ :where(.zvk-ui-dropdown-menu__content[data-side="right"]) {
4456
+ --zvk-ui-dropdown-menu-motion-x: -0.25rem;
4457
+ --zvk-ui-dropdown-menu-motion-y: 0;
4458
+ }
4459
+
4460
+ :where(.zvk-ui-dropdown-menu__content[data-state="open"]) {
4461
+ animation: zvk-ui-dropdown-menu-content-enter var(--zvk-ui-duration-fast) var(--zvk-ui-ease-enter);
4462
+ }
4463
+
4464
+ :where(.zvk-ui-dropdown-menu__content[data-state="closed"]:not([hidden])) {
4465
+ animation: zvk-ui-dropdown-menu-content-exit var(--zvk-ui-duration-fast) var(--zvk-ui-ease-exit);
4466
+ pointer-events: none;
4467
+ }
4468
+
4469
+ :where(.zvk-ui-dropdown-menu__content[aria-hidden="true"]) {
4470
+ pointer-events: none;
4471
+ }
4472
+
4473
+ :where(.zvk-ui-dropdown-menu__content[hidden]) {
4474
+ display: none;
4475
+ }
4476
+
3198
4477
  :where(.zvk-ui-dropdown-menu__item) {
3199
4478
  all: unset;
3200
4479
  align-items: center;
@@ -3227,6 +4506,7 @@
3227
4506
 
3228
4507
  :where(.zvk-ui-dropdown-menu__label) {
3229
4508
  color: var(--zvk-ui-color-muted-foreground);
4509
+ font-family: var(--zvk-ui-font-family-secondary);
3230
4510
  font-size: var(--zvk-ui-font-size-xs);
3231
4511
  font-weight: 600;
3232
4512
  padding: var(--zvk-ui-space-1) var(--zvk-ui-space-3);
@@ -3256,6 +4536,40 @@
3256
4536
  display: grid;
3257
4537
  gap: var(--zvk-ui-space-1);
3258
4538
  }
4539
+
4540
+ @keyframes zvk-ui-dropdown-menu-content-enter {
4541
+ from {
4542
+ opacity: 0;
4543
+ transform: translate(var(--zvk-ui-dropdown-menu-motion-x), var(--zvk-ui-dropdown-menu-motion-y)) scale(0.98);
4544
+ }
4545
+
4546
+ to {
4547
+ opacity: 1;
4548
+ transform: translate(0, 0) scale(1);
4549
+ }
4550
+ }
4551
+
4552
+ @keyframes zvk-ui-dropdown-menu-content-exit {
4553
+ from {
4554
+ opacity: 1;
4555
+ transform: translate(0, 0) scale(1);
4556
+ }
4557
+
4558
+ to {
4559
+ opacity: 0;
4560
+ transform: translate(var(--zvk-ui-dropdown-menu-motion-x), var(--zvk-ui-dropdown-menu-motion-y)) scale(0.98);
4561
+ }
4562
+ }
4563
+
4564
+ @media (prefers-reduced-motion: reduce) {
4565
+ :where(.zvk-ui-dropdown-menu__trigger-indicator) {
4566
+ transition: none;
4567
+ }
4568
+
4569
+ :where(.zvk-ui-dropdown-menu__content[data-state="open"], .zvk-ui-dropdown-menu__content[data-state="closed"]:not([hidden])) {
4570
+ animation: none;
4571
+ }
4572
+ }
3259
4573
  }
3260
4574
 
3261
4575
 
@@ -3323,7 +4637,7 @@
3323
4637
  background: var(--zvk-ui-color-surface);
3324
4638
  color: var(--zvk-ui-color-foreground);
3325
4639
  display: grid;
3326
- font-family: var(--zvk-ui-font-family-sans);
4640
+ font-family: var(--zvk-ui-font-family-primary);
3327
4641
  gap: var(--zvk-ui-space-2);
3328
4642
  line-height: var(--zvk-ui-line-height-normal);
3329
4643
  }
@@ -3333,11 +4647,11 @@
3333
4647
  border: 1px solid var(--zvk-ui-color-border);
3334
4648
  border-radius: var(--zvk-ui-radius-md);
3335
4649
  color: var(--zvk-ui-color-foreground);
3336
- font-family: var(--zvk-ui-font-family-sans);
4650
+ font-family: var(--zvk-ui-font-family-primary);
3337
4651
  font-size: var(--zvk-ui-font-size-sm);
3338
4652
  line-height: var(--zvk-ui-line-height-tight);
3339
- min-block-size: 2.5rem;
3340
- padding: 0 var(--zvk-ui-space-3);
4653
+ min-block-size: var(--zvk-ui-control-height-md);
4654
+ padding: 0 var(--zvk-ui-control-padding-x);
3341
4655
  inline-size: 100%;
3342
4656
  }
3343
4657
 
@@ -3355,6 +4669,7 @@
3355
4669
  }
3356
4670
 
3357
4671
  .zvk-ui-command__empty,
4672
+ .zvk-ui-command__loading,
3358
4673
  .zvk-ui-command__group-heading {
3359
4674
  color: var(--zvk-ui-color-muted-foreground);
3360
4675
  font-size: var(--zvk-ui-font-size-xs);
@@ -3397,7 +4712,7 @@
3397
4712
  }
3398
4713
 
3399
4714
  .zvk-ui-command-dialog {
3400
- font-family: var(--zvk-ui-font-family-sans);
4715
+ font-family: var(--zvk-ui-font-family-primary);
3401
4716
  padding: var(--zvk-ui-space-4);
3402
4717
  }
3403
4718
 
@@ -3424,6 +4739,7 @@
3424
4739
 
3425
4740
  .zvk-ui-combobox__label {
3426
4741
  color: var(--zvk-ui-color-foreground);
4742
+ font-family: var(--zvk-ui-font-family-secondary);
3427
4743
  font-size: var(--zvk-ui-font-size-sm);
3428
4744
  font-weight: 600;
3429
4745
  }
@@ -3436,14 +4752,15 @@
3436
4752
  }
3437
4753
 
3438
4754
  .zvk-ui-combobox__input {
4755
+ backdrop-filter: var(--zvk-ui-material-control-backdrop-filter);
3439
4756
  background: var(--zvk-ui-control-background);
3440
4757
  border: 1px solid var(--zvk-ui-control-border);
3441
4758
  border-radius: var(--zvk-ui-radius-md);
3442
4759
  color: var(--zvk-ui-color-foreground);
3443
4760
  font: inherit;
3444
4761
  inline-size: 100%;
3445
- min-block-size: 2.5rem;
3446
- padding: 0 var(--zvk-ui-space-3);
4762
+ min-block-size: var(--zvk-ui-control-height-md);
4763
+ padding: 0 var(--zvk-ui-control-padding-x);
3447
4764
  }
3448
4765
 
3449
4766
  .zvk-ui-combobox__input:hover:not(:disabled) {
@@ -3451,11 +4768,11 @@
3451
4768
  }
3452
4769
 
3453
4770
  .zvk-ui-combobox__input[data-size="sm"] {
3454
- min-block-size: 2rem;
4771
+ min-block-size: var(--zvk-ui-control-height-sm);
3455
4772
  }
3456
4773
 
3457
4774
  .zvk-ui-combobox__input[data-size="lg"] {
3458
- min-block-size: 3rem;
4775
+ min-block-size: var(--zvk-ui-control-height-lg);
3459
4776
  }
3460
4777
 
3461
4778
  .zvk-ui-combobox__input:focus-visible {
@@ -3483,11 +4800,15 @@
3483
4800
  }
3484
4801
 
3485
4802
  .zvk-ui-combobox__popup {
4803
+ --zvk-ui-combobox-motion-x: 0;
4804
+ --zvk-ui-combobox-motion-y: -0.1875rem;
4805
+ backdrop-filter: var(--zvk-ui-combobox-popup-backdrop-filter, var(--zvk-ui-material-floating-backdrop-filter));
3486
4806
  background: var(--zvk-ui-color-surface);
3487
4807
  border: 1px solid var(--zvk-ui-card-border);
3488
4808
  border-radius: var(--zvk-ui-radius-md);
3489
- box-shadow: var(--zvk-ui-shadow-md);
4809
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-material-glass-shadow);
3490
4810
  display: grid;
4811
+ font-family: var(--zvk-ui-font-family-primary);
3491
4812
  gap: var(--zvk-ui-space-1);
3492
4813
  max-block-size: min(16rem, var(--zvk-ui-floating-available-height));
3493
4814
  overflow: auto;
@@ -3495,6 +4816,28 @@
3495
4816
  z-index: var(--zvk-ui-z-popover);
3496
4817
  }
3497
4818
 
4819
+ .zvk-ui-combobox__popup[data-side="top"] {
4820
+ --zvk-ui-combobox-motion-y: 0.1875rem;
4821
+ }
4822
+
4823
+ .zvk-ui-combobox__popup[data-side="bottom"] {
4824
+ --zvk-ui-combobox-motion-y: -0.1875rem;
4825
+ }
4826
+
4827
+ .zvk-ui-combobox__popup[data-side="left"] {
4828
+ --zvk-ui-combobox-motion-x: 0.1875rem;
4829
+ --zvk-ui-combobox-motion-y: 0;
4830
+ }
4831
+
4832
+ .zvk-ui-combobox__popup[data-side="right"] {
4833
+ --zvk-ui-combobox-motion-x: -0.1875rem;
4834
+ --zvk-ui-combobox-motion-y: 0;
4835
+ }
4836
+
4837
+ .zvk-ui-combobox__popup[data-state="open"] {
4838
+ animation: zvk-ui-combobox-popup-enter var(--zvk-ui-duration-fast) var(--zvk-ui-ease-enter);
4839
+ }
4840
+
3498
4841
  .zvk-ui-combobox__option {
3499
4842
  border-radius: var(--zvk-ui-radius-sm);
3500
4843
  color: var(--zvk-ui-color-foreground);
@@ -3536,6 +4879,24 @@
3536
4879
  color: var(--zvk-ui-color-foreground);
3537
4880
  outline: 0;
3538
4881
  }
4882
+
4883
+ @keyframes zvk-ui-combobox-popup-enter {
4884
+ from {
4885
+ opacity: 0;
4886
+ transform: translate(var(--zvk-ui-combobox-motion-x), var(--zvk-ui-combobox-motion-y)) scale(0.98);
4887
+ }
4888
+
4889
+ to {
4890
+ opacity: 1;
4891
+ transform: translate(0, 0) scale(1);
4892
+ }
4893
+ }
4894
+
4895
+ @media (prefers-reduced-motion: reduce) {
4896
+ .zvk-ui-combobox__popup[data-state="open"] {
4897
+ animation: none;
4898
+ }
4899
+ }
3539
4900
  }
3540
4901
 
3541
4902
 
@@ -3550,17 +4911,45 @@
3550
4911
  }
3551
4912
 
3552
4913
  .zvk-ui-context-menu__content {
4914
+ --zvk-ui-context-menu-motion-x: 0;
4915
+ --zvk-ui-context-menu-motion-y: -0.1875rem;
4916
+ backdrop-filter: var(--zvk-ui-context-menu-content-backdrop-filter, var(--zvk-ui-material-floating-backdrop-filter));
3553
4917
  background: var(--zvk-ui-color-surface);
3554
4918
  border: 1px solid var(--zvk-ui-color-border);
3555
4919
  border-radius: var(--zvk-ui-radius-md);
3556
- box-shadow: var(--zvk-ui-shadow-md);
4920
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-material-glass-shadow);
3557
4921
  color: var(--zvk-ui-color-foreground);
3558
4922
  display: grid;
4923
+ font-family: var(--zvk-ui-font-family-primary);
4924
+ font-size: var(--zvk-ui-font-size-sm);
3559
4925
  gap: var(--zvk-ui-space-1);
3560
4926
  min-inline-size: 12rem;
3561
4927
  padding: var(--zvk-ui-space-1);
3562
4928
  position: fixed;
3563
- z-index: 110;
4929
+ z-index: var(--zvk-ui-z-popover);
4930
+ }
4931
+
4932
+ .zvk-ui-context-menu__content[data-side="top"] {
4933
+ --zvk-ui-context-menu-motion-y: 0.1875rem;
4934
+ }
4935
+
4936
+ .zvk-ui-context-menu__content[data-side="bottom"] {
4937
+ --zvk-ui-context-menu-motion-y: -0.1875rem;
4938
+ }
4939
+
4940
+ .zvk-ui-context-menu__content[data-side="left"] {
4941
+ --zvk-ui-context-menu-motion-x: 0.1875rem;
4942
+ --zvk-ui-context-menu-motion-y: 0;
4943
+ }
4944
+
4945
+ .zvk-ui-context-menu__content[data-side="right"] {
4946
+ --zvk-ui-context-menu-motion-x: -0.1875rem;
4947
+ --zvk-ui-context-menu-motion-y: 0;
4948
+ }
4949
+
4950
+ .zvk-ui-context-menu__content[data-state="open"] {
4951
+ animation: zvk-ui-context-menu-content-enter var(--zvk-ui-duration-fast) var(--zvk-ui-ease-enter);
4952
+ transform-origin: top left;
3564
4953
  }
3565
4954
 
3566
4955
  .zvk-ui-context-menu__item {
@@ -3601,6 +4990,7 @@
3601
4990
 
3602
4991
  .zvk-ui-context-menu__label {
3603
4992
  color: var(--zvk-ui-color-muted-foreground);
4993
+ font-family: var(--zvk-ui-font-family-secondary);
3604
4994
  font-size: var(--zvk-ui-font-size-xs);
3605
4995
  font-weight: 600;
3606
4996
  padding: var(--zvk-ui-space-1) var(--zvk-ui-space-3);
@@ -3619,19 +5009,40 @@
3619
5009
  .zvk-ui-context-menu__item-label {
3620
5010
  min-width: 0;
3621
5011
  }
5012
+
5013
+ @keyframes zvk-ui-context-menu-content-enter {
5014
+ from {
5015
+ opacity: 0;
5016
+ transform: translate(var(--zvk-ui-context-menu-motion-x), var(--zvk-ui-context-menu-motion-y)) scale(0.98);
5017
+ }
5018
+
5019
+ to {
5020
+ opacity: 1;
5021
+ transform: translate(0, 0) scale(1);
5022
+ }
5023
+ }
5024
+
5025
+ @media (prefers-reduced-motion: reduce) {
5026
+ .zvk-ui-context-menu__content[data-state="open"] {
5027
+ animation: none;
5028
+ }
5029
+ }
3622
5030
  }
3623
5031
 
3624
5032
 
3625
5033
  /* src/components/menubar/menubar.css */
3626
5034
  @layer zvk-ui-components {
3627
5035
  .zvk-ui-menubar {
5036
+ align-self: start;
3628
5037
  align-items: center;
5038
+ backdrop-filter: var(--zvk-ui-material-control-backdrop-filter);
3629
5039
  background: var(--zvk-ui-color-surface);
3630
5040
  border: 1px solid var(--zvk-ui-color-border);
3631
5041
  border-radius: var(--zvk-ui-radius-md);
3632
5042
  color: var(--zvk-ui-color-foreground);
3633
5043
  display: inline-flex;
3634
5044
  gap: var(--zvk-ui-space-1);
5045
+ justify-self: start;
3635
5046
  padding: var(--zvk-ui-space-1);
3636
5047
  }
3637
5048
 
@@ -3656,17 +5067,45 @@
3656
5067
  }
3657
5068
 
3658
5069
  .zvk-ui-menubar__content {
5070
+ --zvk-ui-menubar-motion-x: 0;
5071
+ --zvk-ui-menubar-motion-y: -0.1875rem;
5072
+ backdrop-filter: var(--zvk-ui-menubar-content-backdrop-filter, var(--zvk-ui-material-floating-backdrop-filter));
3659
5073
  background: var(--zvk-ui-color-surface);
3660
5074
  border: 1px solid var(--zvk-ui-color-border);
3661
5075
  border-radius: var(--zvk-ui-radius-md);
3662
- box-shadow: var(--zvk-ui-shadow-md);
5076
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-material-glass-shadow);
3663
5077
  color: var(--zvk-ui-color-foreground);
3664
5078
  display: grid;
5079
+ font-family: var(--zvk-ui-font-family-primary);
5080
+ font-size: var(--zvk-ui-font-size-sm);
3665
5081
  gap: var(--zvk-ui-space-1);
3666
5082
  min-inline-size: 12rem;
3667
5083
  padding: var(--zvk-ui-space-1);
3668
5084
  position: fixed;
3669
- z-index: 110;
5085
+ z-index: var(--zvk-ui-z-popover);
5086
+ }
5087
+
5088
+ .zvk-ui-menubar__content[data-side="top"] {
5089
+ --zvk-ui-menubar-motion-y: 0.1875rem;
5090
+ }
5091
+
5092
+ .zvk-ui-menubar__content[data-side="bottom"] {
5093
+ --zvk-ui-menubar-motion-y: -0.1875rem;
5094
+ }
5095
+
5096
+ .zvk-ui-menubar__content[data-side="left"] {
5097
+ --zvk-ui-menubar-motion-x: 0.1875rem;
5098
+ --zvk-ui-menubar-motion-y: 0;
5099
+ }
5100
+
5101
+ .zvk-ui-menubar__content[data-side="right"] {
5102
+ --zvk-ui-menubar-motion-x: -0.1875rem;
5103
+ --zvk-ui-menubar-motion-y: 0;
5104
+ }
5105
+
5106
+ .zvk-ui-menubar__content[data-state="open"] {
5107
+ animation: zvk-ui-menubar-content-enter var(--zvk-ui-duration-fast) var(--zvk-ui-ease-enter);
5108
+ transform-origin: top center;
3670
5109
  }
3671
5110
 
3672
5111
  .zvk-ui-menubar__item {
@@ -3711,6 +5150,7 @@
3711
5150
 
3712
5151
  .zvk-ui-menubar__label {
3713
5152
  color: var(--zvk-ui-color-muted-foreground);
5153
+ font-family: var(--zvk-ui-font-family-secondary);
3714
5154
  font-size: var(--zvk-ui-font-size-xs);
3715
5155
  font-weight: 600;
3716
5156
  padding: var(--zvk-ui-space-1) var(--zvk-ui-space-3);
@@ -3721,6 +5161,24 @@
3721
5161
  font-size: var(--zvk-ui-font-size-xs);
3722
5162
  margin-inline-start: auto;
3723
5163
  }
5164
+
5165
+ @keyframes zvk-ui-menubar-content-enter {
5166
+ from {
5167
+ opacity: 0;
5168
+ transform: translate(var(--zvk-ui-menubar-motion-x), var(--zvk-ui-menubar-motion-y)) scale(0.98);
5169
+ }
5170
+
5171
+ to {
5172
+ opacity: 1;
5173
+ transform: translate(0, 0) scale(1);
5174
+ }
5175
+ }
5176
+
5177
+ @media (prefers-reduced-motion: reduce) {
5178
+ .zvk-ui-menubar__content[data-state="open"] {
5179
+ animation: none;
5180
+ }
5181
+ }
3724
5182
  }
3725
5183
 
3726
5184
 
@@ -3784,7 +5242,7 @@
3784
5242
  color: var(--zvk-ui-color-foreground);
3785
5243
  cursor: pointer;
3786
5244
  display: inline-flex;
3787
- font-family: var(--zvk-ui-font-family-sans);
5245
+ font-family: var(--zvk-ui-font-family-primary);
3788
5246
  font-size: var(--zvk-ui-font-size-sm);
3789
5247
  font-weight: 600;
3790
5248
  justify-content: center;
@@ -3812,10 +5270,16 @@
3812
5270
 
3813
5271
  :where(.zvk-ui-carousel__page) {
3814
5272
  color: var(--zvk-ui-color-muted-foreground);
3815
- font-family: var(--zvk-ui-font-family-sans);
5273
+ font-family: var(--zvk-ui-font-family-primary);
3816
5274
  font-size: var(--zvk-ui-font-size-sm);
3817
5275
  line-height: var(--zvk-ui-line-height-normal);
3818
5276
  }
5277
+
5278
+ @media (prefers-reduced-motion: reduce) {
5279
+ :where(.zvk-ui-carousel__viewport) {
5280
+ scroll-behavior: auto;
5281
+ }
5282
+ }
3819
5283
  }
3820
5284
 
3821
5285
 
@@ -3909,6 +5373,7 @@
3909
5373
  }
3910
5374
 
3911
5375
  :where(.zvk-ui-sidebar-shell__sidebar) {
5376
+ backdrop-filter: var(--zvk-ui-sidebar-shell-sidebar-backdrop-filter, var(--zvk-ui-material-surface-backdrop-filter));
3912
5377
  background: var(--zvk-ui-color-surface);
3913
5378
  border: 1px solid var(--zvk-ui-color-border);
3914
5379
  border-radius: var(--zvk-ui-radius-lg);
@@ -3956,7 +5421,7 @@
3956
5421
  :where(.zvk-ui-sectioned-sidebar-nav) {
3957
5422
  color: var(--zvk-ui-color-foreground);
3958
5423
  display: grid;
3959
- font-family: var(--zvk-ui-font-family-sans);
5424
+ font-family: var(--zvk-ui-font-family-primary);
3960
5425
  gap: var(--zvk-ui-space-4);
3961
5426
  }
3962
5427
 
@@ -3967,6 +5432,7 @@
3967
5432
 
3968
5433
  :where(.zvk-ui-sectioned-sidebar-nav__section-title) {
3969
5434
  color: var(--zvk-ui-color-muted-foreground);
5435
+ font-family: var(--zvk-ui-font-family-secondary);
3970
5436
  font-size: var(--zvk-ui-font-size-xs);
3971
5437
  font-weight: 700;
3972
5438
  letter-spacing: 0;
@@ -4016,9 +5482,10 @@
4016
5482
  }
4017
5483
 
4018
5484
  :where(.zvk-ui-sectioned-sidebar-nav__item-control[data-state="active"]) {
5485
+ backdrop-filter: var(--zvk-ui-material-control-backdrop-filter);
4019
5486
  background: var(--zvk-ui-color-primary-soft);
4020
5487
  border-color: var(--zvk-ui-color-primary-border);
4021
- color: var(--zvk-ui-color-primary-foreground);
5488
+ color: var(--zvk-ui-color-primary);
4022
5489
  }
4023
5490
 
4024
5491
  :where(.zvk-ui-sectioned-sidebar-nav__item-control[data-disabled="true"]) {
@@ -4145,15 +5612,17 @@
4145
5612
 
4146
5613
  :where(.zvk-ui-toast) {
4147
5614
  --zvk-ui-toast-accent: var(--zvk-ui-color-border-strong);
5615
+ backdrop-filter: var(--zvk-ui-toast-backdrop-filter, var(--zvk-ui-material-floating-backdrop-filter));
4148
5616
  background: var(--zvk-ui-color-surface-raised);
4149
5617
  border: 1px solid var(--zvk-ui-color-border);
4150
5618
  border-inline-start: 3px solid var(--zvk-ui-toast-accent);
4151
5619
  border-radius: var(--zvk-ui-radius-md);
4152
- box-shadow: var(--zvk-ui-shadow-md);
5620
+ box-shadow: var(--zvk-ui-material-glass-highlight), var(--zvk-ui-material-glass-shadow);
4153
5621
  color: var(--zvk-ui-color-foreground);
4154
5622
  display: grid;
4155
- font-family: var(--zvk-ui-font-family-sans);
5623
+ font-family: var(--zvk-ui-font-family-primary);
4156
5624
  gap: var(--zvk-ui-space-2);
5625
+ animation: zvk-ui-toast-enter var(--zvk-ui-duration-normal) var(--zvk-ui-ease-standard) both;
4157
5626
  padding: var(--zvk-ui-space-3);
4158
5627
  }
4159
5628
 
@@ -4212,6 +5681,7 @@
4212
5681
  justify-content: center;
4213
5682
  min-block-size: var(--zvk-ui-control-height-sm);
4214
5683
  padding-inline: var(--zvk-ui-space-2);
5684
+ transition: background var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), border-color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), box-shadow var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard), color var(--zvk-ui-duration-fast) var(--zvk-ui-ease-standard);
4215
5685
  }
4216
5686
 
4217
5687
  :where(.zvk-ui-toast__action:hover:not(:disabled)),
@@ -4226,6 +5696,22 @@
4226
5696
  outline: 0;
4227
5697
  box-shadow: var(--zvk-ui-focus-ring);
4228
5698
  }
5699
+
5700
+ @keyframes zvk-ui-toast-enter {
5701
+ from {
5702
+ opacity: 0;
5703
+ }
5704
+
5705
+ to {
5706
+ opacity: 1;
5707
+ }
5708
+ }
5709
+
5710
+ @media (prefers-reduced-motion: reduce) {
5711
+ :where(.zvk-ui-toast) {
5712
+ animation: none;
5713
+ }
5714
+ }
4229
5715
  }
4230
5716
 
4231
5717
 
@@ -4234,7 +5720,7 @@
4234
5720
  :where(.zvk-ui-conversation) {
4235
5721
  color: var(--zvk-ui-color-foreground);
4236
5722
  display: grid;
4237
- font-family: var(--zvk-ui-font-family-sans);
5723
+ font-family: var(--zvk-ui-font-family-primary);
4238
5724
  gap: var(--zvk-ui-space-4);
4239
5725
  }
4240
5726