@zeyos/zx 4.1.0 → 4.2.0

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 (83) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/DESIGN-SYSTEM.md +33 -3
  3. package/README.md +17 -5
  4. package/dist/types/components/app-icon/app-icon.d.ts +8 -1
  5. package/dist/types/components/aurora/aurora.d.ts +72 -0
  6. package/dist/types/components/calendar/calendar-model.d.ts +202 -0
  7. package/dist/types/components/calendar/calendar.d.ts +500 -0
  8. package/dist/types/components/card-view/card-view.d.ts +303 -0
  9. package/dist/types/components/card-view/record-card.d.ts +242 -0
  10. package/dist/types/components/kanban-view/kanban-view.d.ts +572 -0
  11. package/dist/types/components/table/table.d.ts +120 -31
  12. package/dist/types/components/table-view/table-view.d.ts +192 -0
  13. package/dist/types/components/view/record-view.d.ts +464 -0
  14. package/dist/types/index.d.ts +7 -0
  15. package/dist/types/zeyos/calendar.d.ts +91 -0
  16. package/dist/types/zeyos/icons.d.ts +19 -3
  17. package/dist/types/zeyos/index.d.ts +4 -0
  18. package/dist/types/zeyos/legacy-saved-views.d.ts +66 -0
  19. package/dist/types/zeyos/saved-views.d.ts +331 -0
  20. package/dist/types/zeyos/view.d.ts +305 -0
  21. package/dist/zx-zeyos.esm.js +4627 -1460
  22. package/dist/zx-zeyos.esm.min.js +1 -1
  23. package/dist/zx.css +2492 -410
  24. package/dist/zx.esm.js +4891 -115
  25. package/dist/zx.esm.min.js +3 -3
  26. package/dist/zx.global.js +4891 -115
  27. package/dist/zx.global.min.js +3 -3
  28. package/dist/zx.min.css +1 -1
  29. package/docs/api.json +1702 -191
  30. package/docs/llms.md +207 -20
  31. package/docs/llms.txt +16 -6
  32. package/package.json +1 -1
  33. package/src/components/app-icon/app-icon.css +140 -30
  34. package/src/components/app-icon/app-icon.js +32 -5
  35. package/src/components/app-rail/app-rail.css +11 -2
  36. package/src/components/app-sidebar/app-sidebar.css +11 -2
  37. package/src/components/aurora/aurora.css +143 -0
  38. package/src/components/aurora/aurora.js +146 -0
  39. package/src/components/avatar/avatar.css +1 -1
  40. package/src/components/button/button.css +34 -2
  41. package/src/components/calendar/calendar-model.js +402 -0
  42. package/src/components/calendar/calendar.css +567 -0
  43. package/src/components/calendar/calendar.js +1524 -0
  44. package/src/components/card/card.css +25 -3
  45. package/src/components/card-view/card-view.css +389 -0
  46. package/src/components/card-view/card-view.js +527 -0
  47. package/src/components/card-view/record-card.js +392 -0
  48. package/src/components/context-menu/context-menu.css +2 -2
  49. package/src/components/date-picker/date-picker.css +15 -3
  50. package/src/components/datebox/date-range-box.css +15 -2
  51. package/src/components/datebox/datebox.css +16 -3
  52. package/src/components/dropdown/dropdown.css +15 -3
  53. package/src/components/kanban-view/kanban-view.css +216 -0
  54. package/src/components/kanban-view/kanban-view.js +1228 -0
  55. package/src/components/launcher/launcher.css +18 -5
  56. package/src/components/master-panel/master-panel.css +14 -3
  57. package/src/components/menu-button/menu-button.css +2 -2
  58. package/src/components/message/message.css +15 -10
  59. package/src/components/modal/modal.css +15 -3
  60. package/src/components/navigation-bar/navigation-bar.css +17 -5
  61. package/src/components/panel/panel.css +10 -2
  62. package/src/components/select/select.css +20 -4
  63. package/src/components/sheet/sheet.css +4 -1
  64. package/src/components/table/table.css +80 -4
  65. package/src/components/table/table.js +322 -37
  66. package/src/components/table-view/table-view.css +18 -0
  67. package/src/components/table-view/table-view.js +347 -0
  68. package/src/components/tag-picker/tag-picker.css +15 -3
  69. package/src/components/tooltip/tooltip.css +15 -3
  70. package/src/components/view/record-view.css +114 -0
  71. package/src/components/view/record-view.js +770 -0
  72. package/src/index.js +15 -0
  73. package/src/zeyos/calendar.js +115 -0
  74. package/src/zeyos/icons.js +15 -8
  75. package/src/zeyos/index.js +13 -0
  76. package/src/zeyos/launcher.js +2 -2
  77. package/src/zeyos/legacy-saved-views.js +155 -0
  78. package/src/zeyos/saved-views.js +815 -0
  79. package/src/zeyos/table.js +3 -1
  80. package/src/zeyos/view.js +543 -0
  81. package/styles/icons.css +3 -10
  82. package/styles/tokens/semantic.css +74 -2
  83. package/styles/zx.css +6 -0
package/dist/zx.css CHANGED
@@ -143,6 +143,8 @@
143
143
  --zx-color-text-muted: var(--zx-gray-500);
144
144
  --zx-color-text-placeholder: var(--zx-gray-400);
145
145
  --zx-color-text-invert: var(--zx-gray-50);
146
+ --zx-color-app-icon-glyph: var(--zx-gray-0);
147
+ --zx-color-app-icon-shade: var(--zx-gray-950);
146
148
  --zx-color-accent: var(--zx-accent-600);
147
149
  --zx-color-accent-hover: var(--zx-accent-700);
148
150
  --zx-color-accent-active: var(--zx-accent-700);
@@ -168,18 +170,82 @@
168
170
  --zx-color-glass-border: color-mix(in srgb, var(--zx-gray-0) 24%, transparent);
169
171
  --zx-color-glass-highlight: color-mix(in srgb, var(--zx-gray-0) 24%, transparent);
170
172
  --zx-color-glass-highlight-strong: color-mix(in srgb, var(--zx-gray-0) 38%, transparent);
173
+ --zx-color-app-icon-depth: color-mix(in srgb, var(--zx-color-app-icon-shade) 26%, transparent);
174
+ --zx-app-icon-core-strength: 52%;
175
+ --zx-app-icon-rim-strength: 58%;
176
+ --zx-app-icon-bloom-strength: 64%;
177
+ --zx-app-icon-specular-strength: 72%;
178
+ --zx-app-icon-rim-base: var(--zx-color-glass-highlight);
179
+ --zx-app-icon-halo-size: 14px;
180
+ --zx-app-icon-halo-strength: 22%;
171
181
  --zx-color-glass-surface: color-mix(in srgb, var(--zx-color-bg-raised) 78%, transparent);
182
+ --zx-color-glass-chrome: color-mix(in srgb, var(--zx-color-bg-surface) 90%, transparent);
183
+ --zx-color-glass-control: color-mix(in srgb, var(--zx-color-bg-control) 88%, transparent);
184
+ --zx-color-glass-control-hover: color-mix(in srgb, var(--zx-color-bg-hover) 76%, var(--zx-color-glass-surface));
185
+ --zx-color-overlay-surface: color-mix(in srgb, var(--zx-color-bg-raised) 88%, transparent);
186
+ --zx-color-overlay-panel: color-mix(in srgb, var(--zx-color-bg-raised) 94%, transparent);
187
+ --zx-color-overlay-border: color-mix(in srgb, var(--zx-color-border-strong) 72%, var(--zx-color-glass-highlight));
172
188
  --zx-glass-blur: 8px;
173
189
  --zx-glass-saturation: 130%;
174
190
  --zx-glass-color-strength: 82%;
191
+ --zx-glass-filter-icon: blur(4px) saturate(118%);
192
+ --zx-glass-filter-control: blur(6px) saturate(116%);
193
+ --zx-glass-filter-raised: blur(8px) saturate(120%);
194
+ --zx-glass-filter-chrome: blur(10px) saturate(122%);
195
+ --zx-glass-filter-overlay: blur(12px) saturate(128%);
196
+ --zx-glass-filter-panel: blur(9px) saturate(120%);
175
197
  --zx-app-icon-shadow:
176
- inset 0 1px 0 color-mix(in srgb, var(--zx-gray-0) 28%, transparent),
177
- inset 0 -1px 0 color-mix(in srgb, var(--zx-gray-950) 16%, transparent),
178
- 0 5px 14px color-mix(in srgb, var(--zx-app-icon-color) 28%, transparent);
179
- --zx-glass-glyph-shadow: 0 1px 1px color-mix(in srgb, var(--zx-gray-950) 22%, transparent);
198
+ inset 0 1px 0 color-mix(in srgb, var(--zx-gray-0) 14%, transparent),
199
+ inset 0 -1px 0 color-mix(in srgb, var(--zx-gray-950) 28%, transparent),
200
+ 0 2px 6px color-mix(in srgb, var(--zx-color-app-icon-shade) 24%, transparent);
201
+ --zx-app-icon-shadow-hover:
202
+ inset 0 1px 0 color-mix(in srgb, var(--zx-gray-0) 20%, transparent),
203
+ inset 0 -1px 0 color-mix(in srgb, var(--zx-gray-950) 32%, transparent),
204
+ 0 4px 10px color-mix(in srgb, var(--zx-color-app-icon-shade) 30%, transparent);
205
+ --zx-glass-control-shadow: inset 0 1px 0 color-mix(in srgb, var(--zx-gray-0) 18%, transparent), var(--zx-shadow-1);
206
+ --zx-glass-chrome-shadow: inset 0 1px 0 color-mix(in srgb, var(--zx-gray-0) 16%, transparent), var(--zx-shadow-1);
207
+ --zx-glass-raised-shadow: inset 0 1px 0 color-mix(in srgb, var(--zx-gray-0) 18%, transparent), var(--zx-overlay-shadow);
180
208
  --zx-header-bg: var(--zx-gray-900);
181
209
  --zx-header-text: var(--zx-gray-50);
182
210
  }
211
+ @media (prefers-reduced-transparency: reduce), (prefers-contrast: more) {
212
+ :root,
213
+ [data-zx-theme] {
214
+ --zx-color-glass-chrome: var(--zx-color-bg-surface) !important;
215
+ --zx-color-glass-surface: var(--zx-color-bg-raised) !important;
216
+ --zx-color-glass-control: var(--zx-color-bg-control) !important;
217
+ --zx-color-glass-control-hover: var(--zx-color-bg-hover) !important;
218
+ --zx-color-overlay-surface: var(--zx-color-bg-raised) !important;
219
+ --zx-color-overlay-panel: var(--zx-color-bg-raised) !important;
220
+ --zx-app-icon-core-strength: 68% !important;
221
+ --zx-app-icon-rim-strength: 62% !important;
222
+ --zx-app-icon-bloom-strength: 0% !important;
223
+ --zx-app-icon-specular-strength: 0% !important;
224
+ --zx-app-icon-rim-base: var(--zx-color-border) !important;
225
+ --zx-app-icon-halo-strength: 0% !important;
226
+ --zx-glass-filter-icon: none !important;
227
+ --zx-glass-filter-control: none !important;
228
+ --zx-glass-filter-raised: none !important;
229
+ --zx-glass-filter-chrome: none !important;
230
+ --zx-glass-filter-overlay: none !important;
231
+ --zx-glass-filter-panel: none !important;
232
+ }
233
+ }
234
+ @media (forced-colors: active) {
235
+ :root,
236
+ [data-zx-theme] {
237
+ --zx-color-glass-chrome: Canvas !important;
238
+ --zx-color-glass-surface: Canvas !important;
239
+ --zx-color-glass-control: ButtonFace !important;
240
+ --zx-color-glass-control-hover: Highlight !important;
241
+ --zx-color-overlay-surface: Canvas !important;
242
+ --zx-color-overlay-panel: Canvas !important;
243
+ --zx-color-overlay-border: CanvasText !important;
244
+ --zx-glass-control-shadow: none !important;
245
+ --zx-glass-chrome-shadow: none !important;
246
+ --zx-glass-raised-shadow: none !important;
247
+ }
248
+ }
183
249
 
184
250
  /* styles/tokens/dark.css */
185
251
  [data-zx-theme=dark] {
@@ -488,15 +554,8 @@ svg.zx-icon {
488
554
  vertical-align: middle;
489
555
  }
490
556
  .zx-module-icon {
491
- display: inline-grid;
492
- place-items: center;
493
557
  flex: none;
494
- inline-size: var(--zx-module-icon-size, 1.5rem);
495
- block-size: var(--zx-module-icon-size, 1.5rem);
496
- border-radius: var(--zx-radius-sm);
497
- background: var(--zx-module-color, var(--zx-module-default));
498
- color: var(--zx-module-glyph, var(--zx-module-fg-light));
499
- font-size: calc(var(--zx-module-icon-size, 1.5rem) * 0.6);
558
+ color: var(--zx-module-glyph, var(--zx-color-app-icon-glyph));
500
559
  }
501
560
 
502
561
  /* src/components/button/button.css */
@@ -508,7 +567,7 @@ svg.zx-icon {
508
567
  min-block-size: var(--zx-control-height);
509
568
  border: 1px solid var(--zx-color-border-control);
510
569
  border-radius: var(--zx-button-radius, var(--zx-control-radius));
511
- background: var(--zx-color-bg-control);
570
+ background: var(--zx-color-glass-control);
512
571
  color: var(--zx-color-text);
513
572
  padding-inline: var(--zx-control-pad-x);
514
573
  font: inherit;
@@ -516,6 +575,9 @@ svg.zx-icon {
516
575
  font-weight: var(--zx-control-font-weight);
517
576
  line-height: 1;
518
577
  cursor: pointer;
578
+ -webkit-backdrop-filter: var(--zx-glass-filter-control);
579
+ backdrop-filter: var(--zx-glass-filter-control);
580
+ box-shadow: var(--zx-glass-control-shadow);
519
581
  transition:
520
582
  color var(--zx-dur-fast) var(--zx-ease),
521
583
  background-color var(--zx-dur-fast) var(--zx-ease),
@@ -523,7 +585,7 @@ svg.zx-icon {
523
585
  box-shadow var(--zx-dur-fast) var(--zx-ease);
524
586
  }
525
587
  .zx-btn:hover:not(:disabled) {
526
- background: var(--zx-color-bg-hover);
588
+ background: var(--zx-color-glass-control-hover);
527
589
  }
528
590
  .zx-btn:active:not(:disabled) {
529
591
  border-color: var(--zx-color-border-strong);
@@ -559,6 +621,9 @@ svg.zx-icon {
559
621
  .zx-btn[data-kind=ghost] {
560
622
  border-color: transparent;
561
623
  background: none;
624
+ -webkit-backdrop-filter: none;
625
+ backdrop-filter: none;
626
+ box-shadow: none;
562
627
  }
563
628
  .zx-btn[data-kind=ghost]:hover:not(:disabled) {
564
629
  border-color: transparent;
@@ -587,6 +652,29 @@ svg.zx-icon {
587
652
  .zx-btn-group > .zx-btn:focus-visible {
588
653
  z-index: 1;
589
654
  }
655
+ @media (prefers-reduced-transparency: reduce) {
656
+ .zx-btn {
657
+ background: var(--zx-color-bg-control);
658
+ -webkit-backdrop-filter: none;
659
+ backdrop-filter: none;
660
+ box-shadow: none;
661
+ }
662
+ }
663
+ @media (forced-colors: active) {
664
+ .zx-btn {
665
+ border-color: ButtonText;
666
+ background: ButtonFace;
667
+ color: ButtonText;
668
+ box-shadow: none;
669
+ -webkit-backdrop-filter: none;
670
+ backdrop-filter: none;
671
+ }
672
+ .zx-btn[data-kind=primary] {
673
+ border-color: Highlight;
674
+ background: Highlight;
675
+ color: HighlightText;
676
+ }
677
+ }
590
678
 
591
679
  /* src/components/badge/badge.css */
592
680
  .zx-badge {
@@ -1419,14 +1507,34 @@ svg.zx-icon {
1419
1507
  background: var(--zx-color-bg-surface);
1420
1508
  }
1421
1509
  .zx-card[data-variant=raised] {
1422
- border: 1px solid transparent;
1423
- background: var(--zx-color-bg-surface);
1424
- box-shadow: var(--zx-overlay-shadow);
1510
+ border: 1px solid var(--zx-color-glass-border);
1511
+ background: var(--zx-color-glass-surface);
1512
+ -webkit-backdrop-filter: var(--zx-glass-filter-raised);
1513
+ backdrop-filter: var(--zx-glass-filter-raised);
1514
+ box-shadow: var(--zx-glass-raised-shadow);
1425
1515
  }
1426
1516
  .zx-card[data-variant=filled] {
1427
1517
  border: 1px solid transparent;
1428
1518
  background: var(--zx-color-bg-muted);
1429
1519
  }
1520
+ @media (prefers-reduced-transparency: reduce) {
1521
+ .zx-card[data-variant=raised] {
1522
+ border-color: var(--zx-color-border);
1523
+ background: var(--zx-color-bg-surface);
1524
+ -webkit-backdrop-filter: none;
1525
+ backdrop-filter: none;
1526
+ box-shadow: var(--zx-overlay-shadow);
1527
+ }
1528
+ }
1529
+ @media (forced-colors: active) {
1530
+ .zx-card[data-variant=raised] {
1531
+ border-color: ButtonText;
1532
+ background: Canvas;
1533
+ box-shadow: none;
1534
+ -webkit-backdrop-filter: none;
1535
+ backdrop-filter: none;
1536
+ }
1537
+ }
1430
1538
  .zx-card[data-linked=true]:hover {
1431
1539
  background: var(--zx-color-bg-hover);
1432
1540
  }
@@ -1531,20 +1639,243 @@ svg.zx-icon {
1531
1639
  }
1532
1640
  }
1533
1641
 
1642
+ /* src/components/aurora/aurora.css */
1643
+ .zx-aurora {
1644
+ --zx-aurora-color-1: var(--zx-color-accent);
1645
+ --zx-aurora-color-2: var(--zx-color-info);
1646
+ --zx-aurora-color-3: var(--zx-color-success);
1647
+ --zx-aurora-color-4: var(--zx-color-warning);
1648
+ --zx-aurora-core: 7%;
1649
+ --zx-aurora-wash: 4%;
1650
+ --zx-aurora-faint: 2%;
1651
+ --zx-aurora-core-1: color-mix(in srgb, var(--zx-aurora-color-1) var(--zx-aurora-core), transparent);
1652
+ --zx-aurora-core-2: color-mix(in srgb, var(--zx-aurora-color-2) var(--zx-aurora-core), transparent);
1653
+ --zx-aurora-core-3: color-mix(in srgb, var(--zx-aurora-color-3) var(--zx-aurora-core), transparent);
1654
+ --zx-aurora-core-4: color-mix(in srgb, var(--zx-aurora-color-4) var(--zx-aurora-core), transparent);
1655
+ --zx-aurora-wash-1: color-mix(in srgb, var(--zx-aurora-color-1) var(--zx-aurora-wash), transparent);
1656
+ --zx-aurora-wash-2: color-mix(in srgb, var(--zx-aurora-color-2) var(--zx-aurora-wash), transparent);
1657
+ --zx-aurora-wash-3: color-mix(in srgb, var(--zx-aurora-color-3) var(--zx-aurora-wash), transparent);
1658
+ --zx-aurora-wash-4: color-mix(in srgb, var(--zx-aurora-color-4) var(--zx-aurora-wash), transparent);
1659
+ --zx-aurora-faint-1: color-mix(in srgb, var(--zx-aurora-color-1) var(--zx-aurora-faint), transparent);
1660
+ --zx-aurora-faint-2: color-mix(in srgb, var(--zx-aurora-color-2) var(--zx-aurora-faint), transparent);
1661
+ --zx-aurora-faint-3: color-mix(in srgb, var(--zx-aurora-color-3) var(--zx-aurora-faint), transparent);
1662
+ --zx-aurora-faint-4: color-mix(in srgb, var(--zx-aurora-color-4) var(--zx-aurora-faint), transparent);
1663
+ position: relative;
1664
+ isolation: isolate;
1665
+ }
1666
+ .zx-aurora[data-intensity=balanced] {
1667
+ --zx-aurora-core: 11%;
1668
+ --zx-aurora-wash: 6.5%;
1669
+ --zx-aurora-faint: 3%;
1670
+ }
1671
+ .zx-aurora[data-intensity=vivid] {
1672
+ --zx-aurora-core: 16%;
1673
+ --zx-aurora-wash: 9%;
1674
+ --zx-aurora-faint: 4.5%;
1675
+ }
1676
+ :is([data-zx-theme=dark] .zx-aurora, .zx-aurora[data-zx-theme=dark]) {
1677
+ --zx-aurora-core: 12%;
1678
+ --zx-aurora-wash: 7%;
1679
+ --zx-aurora-faint: 3%;
1680
+ }
1681
+ :is([data-zx-theme=dark] .zx-aurora, .zx-aurora[data-zx-theme=dark])[data-intensity=balanced] {
1682
+ --zx-aurora-core: 17%;
1683
+ --zx-aurora-wash: 10%;
1684
+ --zx-aurora-faint: 5%;
1685
+ }
1686
+ :is([data-zx-theme=dark] .zx-aurora, .zx-aurora[data-zx-theme=dark])[data-intensity=vivid] {
1687
+ --zx-aurora-core: 24%;
1688
+ --zx-aurora-wash: 14%;
1689
+ --zx-aurora-faint: 7%;
1690
+ }
1691
+ .zx-aurora::before {
1692
+ content: "";
1693
+ position: absolute;
1694
+ z-index: -1;
1695
+ inset: 0;
1696
+ border-radius: inherit;
1697
+ background-repeat: no-repeat;
1698
+ pointer-events: none;
1699
+ }
1700
+ .zx-aurora[data-preset=source]::before {
1701
+ background-image:
1702
+ radial-gradient(
1703
+ 94% 78% at 0% 0%,
1704
+ var(--zx-aurora-core-1) 0%,
1705
+ var(--zx-aurora-wash-1) 34%,
1706
+ transparent 72%),
1707
+ radial-gradient(
1708
+ 68% 54% at 72% 0%,
1709
+ var(--zx-aurora-wash-2) 0%,
1710
+ var(--zx-aurora-faint-2) 42%,
1711
+ transparent 74%),
1712
+ radial-gradient(
1713
+ 62% 74% at 100% 82%,
1714
+ var(--zx-aurora-wash-3) 0%,
1715
+ transparent 68%),
1716
+ radial-gradient(
1717
+ 58% 42% at 38% 100%,
1718
+ var(--zx-aurora-faint-4) 0%,
1719
+ transparent 72%);
1720
+ }
1721
+ .zx-aurora[data-preset=confluence]::before {
1722
+ background-image:
1723
+ radial-gradient(
1724
+ 108% 84% at 0% 0%,
1725
+ var(--zx-aurora-core-1) 0%,
1726
+ var(--zx-aurora-wash-1) 34%,
1727
+ transparent 70%),
1728
+ radial-gradient(
1729
+ 92% 72% at 100% 0%,
1730
+ var(--zx-aurora-core-2) 0%,
1731
+ var(--zx-aurora-wash-2) 36%,
1732
+ transparent 72%),
1733
+ radial-gradient(
1734
+ 78% 62% at 0% 100%,
1735
+ var(--zx-aurora-wash-3) 0%,
1736
+ transparent 70%),
1737
+ radial-gradient(
1738
+ 72% 64% at 100% 100%,
1739
+ var(--zx-aurora-wash-4) 0%,
1740
+ transparent 72%);
1741
+ }
1742
+ .zx-aurora[data-preset=horizon]::before {
1743
+ background-image:
1744
+ radial-gradient(
1745
+ 72% 28% at 8% 19%,
1746
+ var(--zx-aurora-core-1) 0%,
1747
+ var(--zx-aurora-wash-1) 48%,
1748
+ transparent 78%),
1749
+ radial-gradient(
1750
+ 68% 24% at 42% 23%,
1751
+ var(--zx-aurora-core-2) 0%,
1752
+ var(--zx-aurora-wash-2) 44%,
1753
+ transparent 78%),
1754
+ radial-gradient(
1755
+ 72% 26% at 76% 18%,
1756
+ var(--zx-aurora-core-3) 0%,
1757
+ var(--zx-aurora-wash-3) 46%,
1758
+ transparent 80%),
1759
+ radial-gradient(
1760
+ 54% 22% at 100% 26%,
1761
+ var(--zx-aurora-wash-4) 0%,
1762
+ transparent 78%);
1763
+ }
1764
+ .zx-aurora[data-preset=diagonal]::before {
1765
+ background-image:
1766
+ linear-gradient(
1767
+ 126deg,
1768
+ var(--zx-aurora-core-1) 0%,
1769
+ var(--zx-aurora-wash-1) 18%,
1770
+ transparent 44%),
1771
+ linear-gradient(
1772
+ 126deg,
1773
+ transparent 18%,
1774
+ var(--zx-aurora-wash-2) 42%,
1775
+ transparent 63%),
1776
+ linear-gradient(
1777
+ 126deg,
1778
+ transparent 44%,
1779
+ var(--zx-aurora-wash-3) 67%,
1780
+ transparent 84%),
1781
+ linear-gradient(
1782
+ 126deg,
1783
+ transparent 68%,
1784
+ var(--zx-aurora-wash-4) 90%,
1785
+ transparent 100%);
1786
+ }
1787
+ .zx-aurora[data-preset=edge]::before {
1788
+ background-image:
1789
+ radial-gradient(
1790
+ 38% 108% at 0% 18%,
1791
+ var(--zx-aurora-core-1) 0%,
1792
+ var(--zx-aurora-faint-1) 52%,
1793
+ transparent 78%),
1794
+ radial-gradient(
1795
+ 72% 34% at 72% 0%,
1796
+ var(--zx-aurora-wash-2) 0%,
1797
+ transparent 74%),
1798
+ radial-gradient(
1799
+ 38% 106% at 100% 84%,
1800
+ var(--zx-aurora-wash-3) 0%,
1801
+ transparent 74%),
1802
+ radial-gradient(
1803
+ 76% 32% at 32% 100%,
1804
+ var(--zx-aurora-wash-4) 0%,
1805
+ transparent 76%);
1806
+ }
1807
+ .zx-aurora[data-preset=curtain]::before {
1808
+ background-image:
1809
+ radial-gradient(
1810
+ 28% 112% at 10% 0%,
1811
+ var(--zx-aurora-core-1) 0%,
1812
+ var(--zx-aurora-faint-1) 52%,
1813
+ transparent 78%),
1814
+ radial-gradient(
1815
+ 26% 104% at 38% 0%,
1816
+ var(--zx-aurora-core-2) 0%,
1817
+ var(--zx-aurora-faint-2) 48%,
1818
+ transparent 76%),
1819
+ radial-gradient(
1820
+ 28% 110% at 67% 0%,
1821
+ var(--zx-aurora-core-3) 0%,
1822
+ var(--zx-aurora-faint-3) 50%,
1823
+ transparent 78%),
1824
+ radial-gradient(
1825
+ 26% 106% at 92% 0%,
1826
+ var(--zx-aurora-core-4) 0%,
1827
+ var(--zx-aurora-faint-4) 48%,
1828
+ transparent 76%);
1829
+ }
1830
+ @media (prefers-color-scheme: dark) {
1831
+ :is([data-zx-theme=auto] .zx-aurora, .zx-aurora[data-zx-theme=auto]) {
1832
+ --zx-aurora-core: 12%;
1833
+ --zx-aurora-wash: 7%;
1834
+ --zx-aurora-faint: 3%;
1835
+ }
1836
+ :is([data-zx-theme=auto] .zx-aurora, .zx-aurora[data-zx-theme=auto])[data-intensity=balanced] {
1837
+ --zx-aurora-core: 17%;
1838
+ --zx-aurora-wash: 10%;
1839
+ --zx-aurora-faint: 5%;
1840
+ }
1841
+ :is([data-zx-theme=auto] .zx-aurora, .zx-aurora[data-zx-theme=auto])[data-intensity=vivid] {
1842
+ --zx-aurora-core: 24%;
1843
+ --zx-aurora-wash: 14%;
1844
+ --zx-aurora-faint: 7%;
1845
+ }
1846
+ }
1847
+ @media (prefers-reduced-transparency: reduce), (forced-colors: active) {
1848
+ .zx-aurora::before {
1849
+ display: none;
1850
+ }
1851
+ }
1852
+ @media (prefers-contrast: more) {
1853
+ .zx-aurora::before {
1854
+ opacity: .35;
1855
+ }
1856
+ }
1857
+
1534
1858
  /* src/components/panel/panel.css */
1535
1859
  .zx-panel {
1536
1860
  overflow: hidden;
1537
1861
  border: 1px solid var(--zx-color-border);
1538
1862
  border-radius: var(--zx-radius-lg);
1539
1863
  background: var(--zx-color-bg-surface);
1540
- box-shadow: var(--zx-overlay-shadow);
1864
+ box-shadow: var(--zx-shadow-1);
1541
1865
  }
1542
1866
  .zx-panel__header {
1543
1867
  display: flex;
1544
1868
  align-items: center;
1545
1869
  gap: var(--zx-space-2);
1546
1870
  min-block-size: var(--zx-control-height);
1547
- background: var(--zx-panel-header-bg, var(--zx-color-bg-raised));
1871
+ background: var(--zx-panel-header-bg, var(--zx-color-glass-chrome));
1872
+ box-shadow: var(--zx-glass-chrome-shadow);
1873
+ }
1874
+ @media (prefers-reduced-transparency: reduce) {
1875
+ .zx-panel__header {
1876
+ background: var(--zx-panel-header-bg, var(--zx-color-bg-raised));
1877
+ box-shadow: none;
1878
+ }
1548
1879
  }
1549
1880
  .zx-panel__toggle {
1550
1881
  display: flex;
@@ -1640,7 +1971,7 @@ button.zx-panel__toggle:focus-visible {
1640
1971
  overflow: hidden;
1641
1972
  border: 1px solid var(--zx-color-border);
1642
1973
  border-radius: var(--zx-radius-lg);
1643
- background: var(--zx-color-bg-surface);
1974
+ background: var(--zx-color-glass-chrome);
1644
1975
  }
1645
1976
  .zx-master-panel__header {
1646
1977
  display: flex;
@@ -1648,9 +1979,9 @@ button.zx-panel__toggle:focus-visible {
1648
1979
  align-items: center;
1649
1980
  gap: var(--zx-space-4);
1650
1981
  min-block-size: calc(var(--zx-control-height) + var(--zx-space-4));
1651
- border-block-start: 4px solid var(--zx-master-panel-accent, var(--zx-module-default));
1652
1982
  border-block-end: 1px solid var(--zx-color-border);
1653
- background: var(--zx-color-bg-raised);
1983
+ background: var(--zx-color-glass-chrome);
1984
+ box-shadow: var(--zx-glass-chrome-shadow);
1654
1985
  padding: var(--zx-space-2) var(--zx-space-4);
1655
1986
  }
1656
1987
  .zx-master-panel__title {
@@ -1678,6 +2009,15 @@ button.zx-panel__toggle:focus-visible {
1678
2009
  padding: var(--zx-space-3) var(--zx-space-4);
1679
2010
  color: var(--zx-color-text-muted);
1680
2011
  }
2012
+ @media (prefers-reduced-transparency: reduce) {
2013
+ .zx-master-panel {
2014
+ background: var(--zx-color-bg-surface);
2015
+ }
2016
+ .zx-master-panel__header {
2017
+ background: var(--zx-color-bg-raised);
2018
+ box-shadow: none;
2019
+ }
2020
+ }
1681
2021
 
1682
2022
  /* src/components/tabbox/tabbox.css */
1683
2023
  .zx-tabbox {
@@ -1898,11 +2238,13 @@ button.zx-panel__toggle:focus-visible {
1898
2238
  min-inline-size: 0;
1899
2239
  align-items: center;
1900
2240
  gap: var(--zx-space-3);
1901
- border: 1px solid var(--zx-color-border);
2241
+ border: 1px solid var(--zx-color-glass-border);
1902
2242
  border-radius: var(--zx-radius-lg);
1903
- background: var(--zx-color-bg-raised);
2243
+ background: var(--zx-color-glass-chrome);
1904
2244
  padding: var(--zx-space-2) var(--zx-space-3);
1905
- box-shadow: var(--zx-overlay-shadow);
2245
+ -webkit-backdrop-filter: var(--zx-glass-filter-chrome);
2246
+ backdrop-filter: var(--zx-glass-filter-chrome);
2247
+ box-shadow: var(--zx-glass-chrome-shadow);
1906
2248
  }
1907
2249
  .zx-navigation-bar__brand {
1908
2250
  flex: none;
@@ -1982,9 +2324,18 @@ button.zx-panel__toggle:focus-visible {
1982
2324
  }
1983
2325
  .zx-navigation-bar__panels {
1984
2326
  border: 1px solid var(--zx-color-border);
1985
- border-block-start: 0;
1986
- border-radius: 0 0 var(--zx-radius-lg) var(--zx-radius-lg);
2327
+ border-radius: var(--zx-radius-lg);
1987
2328
  background: var(--zx-color-bg-surface);
2329
+ margin-block-start: var(--zx-space-2);
2330
+ }
2331
+ @media (prefers-reduced-transparency: reduce) {
2332
+ .zx-navigation-bar__bar {
2333
+ border-color: var(--zx-color-border);
2334
+ background: var(--zx-color-bg-raised);
2335
+ -webkit-backdrop-filter: none;
2336
+ backdrop-filter: none;
2337
+ box-shadow: var(--zx-overlay-shadow);
2338
+ }
1988
2339
  }
1989
2340
  .zx-navigation-bar__panel {
1990
2341
  padding: var(--zx-space-4);
@@ -2068,6 +2419,12 @@ button.zx-panel__toggle:focus-visible {
2068
2419
  --zx-app-icon-size: 36px;
2069
2420
  --zx-app-icon-glyph-size: 52%;
2070
2421
  --zx-app-icon-color: var(--zx-color-accent);
2422
+ --zx-app-icon-core: color-mix(in srgb, var(--zx-app-icon-color) var(--zx-app-icon-core-strength), var(--zx-color-app-icon-shade));
2423
+ --zx-app-icon-rim: color-mix(in srgb, var(--zx-app-icon-color) var(--zx-app-icon-rim-strength), var(--zx-app-icon-rim-base));
2424
+ --zx-app-icon-bloom: color-mix(in srgb, var(--zx-app-icon-color) var(--zx-app-icon-bloom-strength), transparent);
2425
+ --zx-app-icon-specular: color-mix(in srgb, var(--zx-color-glass-highlight-strong) var(--zx-app-icon-specular-strength), transparent);
2426
+ --zx-app-icon-halo: 0 0 var(--zx-app-icon-halo-size) color-mix(in srgb, var(--zx-app-icon-color) var(--zx-app-icon-halo-strength), transparent);
2427
+ --zx-app-icon-selected-ring: color-mix(in srgb, var(--zx-app-icon-color) 54%, transparent);
2071
2428
  position: relative;
2072
2429
  isolation: isolate;
2073
2430
  display: inline-grid;
@@ -2075,71 +2432,133 @@ button.zx-panel__toggle:focus-visible {
2075
2432
  flex: none;
2076
2433
  inline-size: var(--zx-app-icon-size);
2077
2434
  block-size: var(--zx-app-icon-size);
2078
- overflow: hidden;
2079
- border: 1px solid var(--zx-color-glass-border);
2080
- border-radius: max(var(--zx-radius-md), calc(var(--zx-app-icon-size) * .22));
2081
- background: var(--zx-app-icon-color);
2082
- box-shadow: var(--zx-app-icon-shadow);
2083
- color: var(--zx-app-icon-glyph, var(--zx-color-text-invert));
2435
+ overflow: visible;
2436
+ border-radius: max(var(--zx-radius-sm), calc(var(--zx-app-icon-size) * .12));
2437
+ color: var(--zx-app-icon-glyph, var(--zx-color-app-icon-glyph));
2084
2438
  font-size: var(--zx-app-icon-size);
2085
2439
  vertical-align: middle;
2086
2440
  }
2087
- .zx-app-icon[data-glass=subtle],
2088
- .zx-app-icon[data-glass=strong] {
2441
+ .zx-app-icon[data-shape=circle] {
2442
+ border-radius: var(--zx-radius-full);
2443
+ }
2444
+ .zx-app-icon__surface {
2445
+ position: absolute;
2446
+ z-index: 0;
2447
+ inset: 0;
2448
+ display: grid;
2449
+ overflow: hidden;
2450
+ place-items: center;
2451
+ border: 1px solid var(--zx-app-icon-rim);
2452
+ border-radius: inherit;
2453
+ background: var(--zx-app-icon-core);
2454
+ box-shadow: var(--zx-app-icon-shadow);
2455
+ }
2456
+ .zx-app-icon[data-glass=subtle] .zx-app-icon__surface,
2457
+ .zx-app-icon[data-glass=strong] .zx-app-icon__surface {
2089
2458
  background:
2090
- linear-gradient(
2091
- 145deg,
2092
- var(--zx-color-glass-highlight),
2093
- transparent 44%),
2094
- color-mix(in srgb, var(--zx-app-icon-color) var(--zx-glass-color-strength), transparent);
2459
+ radial-gradient(
2460
+ 112% 92% at 50% 122%,
2461
+ var(--zx-app-icon-bloom),
2462
+ transparent 64%),
2463
+ var(--zx-app-icon-core);
2464
+ -webkit-backdrop-filter: none;
2465
+ backdrop-filter: none;
2095
2466
  }
2096
- .zx-app-icon[data-glass=strong] {
2097
- backdrop-filter: blur(var(--zx-glass-blur)) saturate(var(--zx-glass-saturation));
2467
+ .zx-app-icon[data-glass=strong] .zx-app-icon__surface {
2468
+ box-shadow: var(--zx-app-icon-shadow-hover), var(--zx-app-icon-halo);
2098
2469
  }
2099
- .zx-app-icon[data-glass=none] {
2100
- border-color: var(--zx-color-border);
2470
+ .zx-app-icon[data-glass=none] .zx-app-icon__surface {
2471
+ border-color: color-mix(in srgb, var(--zx-app-icon-color) 62%, var(--zx-color-border));
2472
+ background: color-mix(in srgb, var(--zx-app-icon-color) 72%, var(--zx-color-app-icon-shade));
2101
2473
  box-shadow: none;
2102
2474
  }
2103
2475
  .zx-app-icon[data-glass=none] .zx-app-icon__shine {
2104
2476
  display: none;
2105
2477
  }
2106
- .zx-app-icon[data-selected] {
2107
- outline: 2px solid var(--zx-color-bg-page);
2108
- box-shadow: 0 0 0 3px var(--zx-color-ring), var(--zx-overlay-shadow);
2478
+ .zx-app-icon[data-glass=none] .zx-app-icon__surface::after {
2479
+ display: none;
2480
+ }
2481
+ .zx-app-icon[data-selected] .zx-app-icon__surface {
2482
+ outline: none;
2483
+ box-shadow:
2484
+ 0 0 0 1px var(--zx-color-bg-page),
2485
+ 0 0 0 3px var(--zx-app-icon-selected-ring),
2486
+ var(--zx-app-icon-shadow-hover),
2487
+ var(--zx-app-icon-halo);
2109
2488
  }
2110
2489
  .zx-app-icon__shine {
2111
2490
  position: absolute;
2112
- z-index: -1;
2113
- inset: 1px 12% auto;
2114
- block-size: 42%;
2115
- border-radius: 999px;
2491
+ z-index: 1;
2492
+ inset: 2px 18% auto;
2493
+ block-size: 1px;
2494
+ border-radius: var(--zx-radius-full);
2116
2495
  background:
2117
2496
  linear-gradient(
2118
- to bottom,
2119
- var(--zx-color-glass-highlight-strong),
2497
+ 90deg,
2498
+ transparent,
2499
+ var(--zx-app-icon-specular),
2120
2500
  transparent);
2121
- filter: blur(2px);
2501
+ opacity: .72;
2502
+ pointer-events: none;
2503
+ }
2504
+ .zx-app-icon[data-glass=strong] .zx-app-icon__shine {
2505
+ opacity: .9;
2506
+ }
2507
+ .zx-app-icon__surface::after {
2508
+ content: "";
2509
+ position: absolute;
2510
+ z-index: 1;
2511
+ inset: 0;
2512
+ border-radius: inherit;
2513
+ box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--zx-color-glass-highlight) 56%, transparent);
2514
+ opacity: .56;
2122
2515
  pointer-events: none;
2123
2516
  }
2124
2517
  .zx-app-icon__glyph {
2125
- display: inline-grid;
2518
+ position: absolute;
2519
+ z-index: 2;
2520
+ inset-block-start: 50%;
2521
+ inset-inline-start: 50%;
2522
+ display: grid;
2126
2523
  place-items: center;
2127
2524
  inline-size: var(--zx-app-icon-glyph-size);
2128
2525
  block-size: var(--zx-app-icon-glyph-size);
2526
+ margin: 0;
2527
+ padding: 0;
2129
2528
  font-size: var(--zx-app-icon-glyph-size);
2130
2529
  line-height: 1;
2131
- filter: drop-shadow(var(--zx-glass-glyph-shadow));
2530
+ filter: none;
2531
+ transform: translate(-50%, -50%);
2132
2532
  }
2133
2533
  .zx-app-icon__glyph > .zx-icon,
2134
2534
  .zx-app-icon__glyph > svg,
2135
2535
  .zx-app-icon__glyph > i {
2536
+ display: grid;
2537
+ place-items: center;
2136
2538
  inline-size: 1em;
2137
2539
  block-size: 1em;
2540
+ margin: 0;
2541
+ color: inherit;
2542
+ font-size: 1em;
2543
+ line-height: 1;
2544
+ text-align: center;
2545
+ vertical-align: middle;
2546
+ }
2547
+ .zx-app-icon__glyph > i::before {
2548
+ display: block;
2549
+ line-height: 1;
2550
+ }
2551
+ .zx-app-icon__glyph svg [fill]:not([fill=none]) {
2552
+ fill: currentColor;
2553
+ }
2554
+ .zx-app-icon__glyph svg [stroke]:not([stroke=none]) {
2555
+ stroke: currentColor;
2138
2556
  }
2139
2557
  .zx-app-icon__badge {
2140
2558
  position: absolute;
2141
- inset-block-end: 1px;
2142
- inset-inline-end: 1px;
2559
+ z-index: 3;
2560
+ inset-block-start: -3px;
2561
+ inset-inline-end: -3px;
2143
2562
  display: grid;
2144
2563
  place-items: center;
2145
2564
  min-inline-size: 14px;
@@ -2153,18 +2572,59 @@ button.zx-panel__toggle:focus-visible {
2153
2572
  font-weight: 700;
2154
2573
  line-height: 1;
2155
2574
  }
2575
+ .zx-app-icon:is(a, button, [role=button]):not(:disabled):not([aria-disabled=true]):hover .zx-app-icon__surface,
2576
+ :is(a, button, [role=button]):not(:disabled):not([aria-disabled=true]):hover .zx-app-icon__surface {
2577
+ border-color: color-mix(in srgb, var(--zx-app-icon-color) 76%, var(--zx-color-glass-highlight-strong));
2578
+ box-shadow: var(--zx-app-icon-shadow-hover), var(--zx-app-icon-halo);
2579
+ filter: brightness(1.06) saturate(1.04);
2580
+ }
2581
+ .zx-app-icon:is(a, button, [role=button]):not(:disabled):not([aria-disabled=true]):focus-visible .zx-app-icon__surface,
2582
+ :is(a, button, [role=button]):not(:disabled):not([aria-disabled=true]):focus-visible .zx-app-icon__surface {
2583
+ outline: none;
2584
+ box-shadow:
2585
+ var(--zx-focus-ring),
2586
+ var(--zx-app-icon-shadow-hover),
2587
+ var(--zx-app-icon-halo);
2588
+ }
2589
+ @media (prefers-reduced-motion: no-preference) {
2590
+ .zx-app-icon__surface {
2591
+ transition:
2592
+ border-color var(--zx-dur-fast) var(--zx-ease),
2593
+ box-shadow var(--zx-dur-fast) var(--zx-ease),
2594
+ filter var(--zx-dur-fast) var(--zx-ease);
2595
+ }
2596
+ }
2156
2597
  @media (prefers-reduced-transparency: reduce) {
2157
- .zx-app-icon[data-glass=strong] {
2158
- background: var(--zx-app-icon-color);
2598
+ .zx-app-icon[data-glass=strong] .zx-app-icon__surface {
2599
+ background: var(--zx-app-icon-core);
2600
+ -webkit-backdrop-filter: none;
2601
+ backdrop-filter: none;
2602
+ }
2603
+ .zx-app-icon[data-glass=subtle] .zx-app-icon__surface {
2604
+ background: var(--zx-app-icon-core);
2605
+ -webkit-backdrop-filter: none;
2159
2606
  backdrop-filter: none;
2160
2607
  }
2161
2608
  }
2162
2609
  @media (forced-colors: active) {
2163
- .zx-app-icon {
2610
+ .zx-app-icon__surface {
2164
2611
  border-color: ButtonText;
2165
2612
  background: ButtonFace;
2166
2613
  color: ButtonText;
2167
2614
  box-shadow: none;
2615
+ filter: none;
2616
+ transform: none;
2617
+ -webkit-backdrop-filter: none;
2618
+ backdrop-filter: none;
2619
+ }
2620
+ .zx-app-icon__surface::after,
2621
+ .zx-app-icon__shine {
2622
+ display: none;
2623
+ }
2624
+ .zx-app-icon__badge {
2625
+ border-color: Canvas;
2626
+ background: Highlight;
2627
+ color: HighlightText;
2168
2628
  }
2169
2629
  }
2170
2630
 
@@ -2172,13 +2632,24 @@ button.zx-panel__toggle:focus-visible {
2172
2632
  .zx-launcher {
2173
2633
  inline-size: min(760px, calc(100vw - (2 * var(--zx-space-4))));
2174
2634
  max-block-size: min(720px, calc(100vh - (2 * var(--zx-space-6))));
2175
- border: 1px solid var(--zx-color-border);
2635
+ border: 1px solid var(--zx-color-overlay-border);
2176
2636
  border-radius: var(--zx-radius-xl);
2177
- background: var(--zx-color-bg-raised);
2178
- box-shadow: var(--zx-overlay-shadow);
2637
+ background: var(--zx-color-overlay-panel);
2638
+ -webkit-backdrop-filter: var(--zx-glass-filter-panel);
2639
+ backdrop-filter: var(--zx-glass-filter-panel);
2640
+ box-shadow: var(--zx-glass-raised-shadow);
2179
2641
  color: var(--zx-color-text);
2180
2642
  padding: 0;
2181
2643
  }
2644
+ @media (prefers-reduced-transparency: reduce) {
2645
+ .zx-launcher {
2646
+ border-color: var(--zx-color-border);
2647
+ background: var(--zx-color-bg-raised);
2648
+ -webkit-backdrop-filter: none;
2649
+ backdrop-filter: none;
2650
+ box-shadow: var(--zx-overlay-shadow);
2651
+ }
2652
+ }
2182
2653
  .zx-launcher::backdrop {
2183
2654
  background: var(--zx-color-bg-backdrop);
2184
2655
  }
@@ -2278,7 +2749,8 @@ button.zx-panel__toggle:focus-visible {
2278
2749
  background: var(--zx-color-bg-hover);
2279
2750
  }
2280
2751
  .zx-launcher__option[aria-current=page] {
2281
- box-shadow: inset 2px 0 var(--zx-color-accent);
2752
+ background: var(--zx-color-bg-selected);
2753
+ color: var(--zx-color-accent);
2282
2754
  }
2283
2755
  .zx-launcher__option[data-kind=application] {
2284
2756
  display: grid;
@@ -2290,7 +2762,7 @@ button.zx-panel__toggle:focus-visible {
2290
2762
  text-align: center;
2291
2763
  }
2292
2764
  .zx-launcher__option[data-kind=application][aria-current=page] {
2293
- box-shadow: inset 0 -2px var(--zx-color-accent);
2765
+ background: var(--zx-color-bg-selected);
2294
2766
  }
2295
2767
  .zx-launcher__option[data-kind=application] .zx-launcher__icon {
2296
2768
  min-block-size: 36px;
@@ -2420,7 +2892,7 @@ button.zx-panel__toggle:focus-visible {
2420
2892
  display: grid;
2421
2893
  place-items: center;
2422
2894
  border: 1px solid var(--zx-color-border);
2423
- background: var(--zx-color-bg-subtle);
2895
+ background: var(--zx-color-bg-muted);
2424
2896
  font-size: calc(var(--zx-avatar-size) * .34);
2425
2897
  font-weight: 700;
2426
2898
  line-height: 1;
@@ -2518,8 +2990,9 @@ button.zx-panel__toggle:focus-visible {
2518
2990
  .zx-app-rail {
2519
2991
  display: flex;
2520
2992
  min-inline-size: 0;
2521
- border: 1px solid var(--zx-color-border);
2522
- background: var(--zx-color-bg-raised);
2993
+ border: 1px solid var(--zx-color-glass-border);
2994
+ background: var(--zx-color-glass-chrome);
2995
+ box-shadow: var(--zx-glass-chrome-shadow);
2523
2996
  color: var(--zx-color-text);
2524
2997
  }
2525
2998
  .zx-app-rail[data-orientation=vertical] {
@@ -2675,13 +3148,21 @@ button.zx-panel__toggle:focus-visible {
2675
3148
  grid-column: 4;
2676
3149
  color: var(--zx-color-text-muted);
2677
3150
  }
3151
+ @media (prefers-reduced-transparency: reduce) {
3152
+ .zx-app-rail {
3153
+ border-color: var(--zx-color-border);
3154
+ background: var(--zx-color-bg-surface);
3155
+ box-shadow: none;
3156
+ }
3157
+ }
2678
3158
 
2679
3159
  /* src/components/app-sidebar/app-sidebar.css */
2680
3160
  .zx-app-sidebar {
2681
3161
  display: flex;
2682
3162
  min-block-size: 0;
2683
- border: 1px solid var(--zx-color-border);
2684
- background: var(--zx-color-bg-raised);
3163
+ border: 1px solid var(--zx-color-glass-border);
3164
+ background: var(--zx-color-glass-chrome);
3165
+ box-shadow: var(--zx-glass-chrome-shadow);
2685
3166
  color: var(--zx-color-text);
2686
3167
  }
2687
3168
  .zx-app-sidebar[data-orientation=horizontal] {
@@ -2786,6 +3267,13 @@ button.zx-panel__toggle:focus-visible {
2786
3267
  display: grid;
2787
3268
  gap: var(--zx-space-1);
2788
3269
  }
3270
+ @media (prefers-reduced-transparency: reduce) {
3271
+ .zx-app-sidebar {
3272
+ border-color: var(--zx-color-border);
3273
+ background: var(--zx-color-bg-surface);
3274
+ box-shadow: none;
3275
+ }
3276
+ }
2789
3277
 
2790
3278
  /* src/components/message/message.css */
2791
3279
  .zx-message {
@@ -2819,11 +3307,10 @@ button.zx-panel__toggle:focus-visible {
2819
3307
  grid-template-columns: auto minmax(0, 1fr) auto;
2820
3308
  align-items: start;
2821
3309
  gap: var(--zx-space-3);
2822
- border: 1px solid var(--zx-color-border);
2823
- border-inline-start: 4px solid var(--zx-message-kind);
3310
+ border: 1px solid var(--zx-color-overlay-border);
2824
3311
  border-radius: var(--zx-radius-md);
2825
3312
  background: var(--zx-color-info-bg);
2826
- box-shadow: var(--zx-overlay-shadow);
3313
+ box-shadow: inset 0 0 0 1px var(--zx-message-kind), var(--zx-glass-raised-shadow);
2827
3314
  padding: var(--zx-space-3);
2828
3315
  color: var(--zx-color-text);
2829
3316
  }
@@ -2841,23 +3328,27 @@ button.zx-panel__toggle:focus-visible {
2841
3328
  }
2842
3329
  @supports (backdrop-filter: blur(1px)) {
2843
3330
  .zx-message__toast {
2844
- background: color-mix(in srgb, var(--zx-color-info-bg) 38%, var(--zx-color-glass-surface));
2845
- backdrop-filter: blur(var(--zx-overlay-blur)) saturate(var(--zx-glass-saturation));
2846
- box-shadow: inset 0 1px 0 var(--zx-color-glass-highlight), var(--zx-overlay-shadow);
3331
+ background: color-mix(in srgb, var(--zx-color-info-bg) 34%, var(--zx-color-overlay-surface));
3332
+ -webkit-backdrop-filter: var(--zx-glass-filter-overlay);
3333
+ backdrop-filter: var(--zx-glass-filter-overlay);
3334
+ box-shadow: inset 0 0 0 1px var(--zx-message-kind), var(--zx-glass-raised-shadow);
2847
3335
  }
2848
3336
  .zx-message__toast[data-kind=success] {
2849
- background: color-mix(in srgb, var(--zx-color-success-bg) 38%, var(--zx-color-glass-surface));
3337
+ background: color-mix(in srgb, var(--zx-color-success-bg) 34%, var(--zx-color-overlay-surface));
2850
3338
  }
2851
3339
  .zx-message__toast[data-kind=warning] {
2852
- background: color-mix(in srgb, var(--zx-color-warning-bg) 38%, var(--zx-color-glass-surface));
3340
+ background: color-mix(in srgb, var(--zx-color-warning-bg) 34%, var(--zx-color-overlay-surface));
2853
3341
  }
2854
3342
  .zx-message__toast[data-kind=error] {
2855
- background: color-mix(in srgb, var(--zx-color-danger-bg) 38%, var(--zx-color-glass-surface));
3343
+ background: color-mix(in srgb, var(--zx-color-danger-bg) 34%, var(--zx-color-overlay-surface));
2856
3344
  }
2857
3345
  }
2858
3346
  @media (prefers-reduced-transparency: reduce) {
2859
3347
  .zx-message__toast {
3348
+ border-color: var(--zx-color-border);
3349
+ -webkit-backdrop-filter: none;
2860
3350
  backdrop-filter: none;
3351
+ box-shadow: var(--zx-overlay-shadow);
2861
3352
  }
2862
3353
  .zx-message__toast[data-kind=info] {
2863
3354
  background: var(--zx-color-info-bg);
@@ -2934,13 +3425,24 @@ button.zx-panel__toggle:focus-visible {
2934
3425
  max-inline-size: calc(100vw - (2 * var(--zx-space-4)));
2935
3426
  max-block-size: calc(100vh - (2 * var(--zx-space-4)));
2936
3427
  overflow: auto;
2937
- border: 1px solid var(--zx-color-border);
3428
+ border: 1px solid var(--zx-color-overlay-border);
2938
3429
  border-radius: var(--zx-radius-lg);
2939
- background: var(--zx-color-bg-raised);
2940
- box-shadow: var(--zx-overlay-shadow);
3430
+ background: var(--zx-color-overlay-panel);
3431
+ -webkit-backdrop-filter: var(--zx-glass-filter-panel);
3432
+ backdrop-filter: var(--zx-glass-filter-panel);
3433
+ box-shadow: var(--zx-glass-raised-shadow);
2941
3434
  color: var(--zx-color-text);
2942
3435
  padding: 0;
2943
3436
  }
3437
+ @media (prefers-reduced-transparency: reduce) {
3438
+ .zx-modal {
3439
+ border-color: var(--zx-color-border);
3440
+ background: var(--zx-color-bg-raised);
3441
+ -webkit-backdrop-filter: none;
3442
+ backdrop-filter: none;
3443
+ box-shadow: var(--zx-overlay-shadow);
3444
+ }
3445
+ }
2944
3446
  .zx-modal::backdrop {
2945
3447
  background: var(--zx-color-bg-backdrop);
2946
3448
  }
@@ -3044,7 +3546,7 @@ body:has(> .zx-modal:modal) {
3044
3546
  border: 0;
3045
3547
  border-radius: 0;
3046
3548
  overflow: hidden;
3047
- box-shadow: var(--zx-overlay-shadow);
3549
+ box-shadow: var(--zx-glass-raised-shadow);
3048
3550
  }
3049
3551
  .zx-sheet[data-side=start],
3050
3552
  .zx-sheet[data-side=end] {
@@ -3148,6 +3650,9 @@ body:has(> .zx-modal:modal) {
3148
3650
  min-inline-size: 0;
3149
3651
  min-block-size: 0;
3150
3652
  border-radius: 0;
3653
+ background: var(--zx-color-bg-raised);
3654
+ -webkit-backdrop-filter: none;
3655
+ backdrop-filter: none;
3151
3656
  box-shadow: none;
3152
3657
  }
3153
3658
  .zx-dock[data-orientation=vertical] > .zx-sheet[data-docked] {
@@ -3311,13 +3816,24 @@ body:has(> .zx-modal:modal) {
3311
3816
  max-inline-size: calc(100vw - (2 * var(--zx-space-3)));
3312
3817
  max-block-size: calc(100vh - (2 * var(--zx-space-3)));
3313
3818
  overflow: auto;
3314
- border: 1px solid var(--zx-color-border);
3819
+ border: 1px solid var(--zx-color-overlay-border);
3315
3820
  border-radius: var(--zx-radius-md);
3316
- background: var(--zx-color-bg-raised);
3317
- box-shadow: var(--zx-overlay-shadow);
3821
+ background: var(--zx-color-overlay-surface);
3822
+ -webkit-backdrop-filter: var(--zx-glass-filter-overlay);
3823
+ backdrop-filter: var(--zx-glass-filter-overlay);
3824
+ box-shadow: var(--zx-glass-raised-shadow);
3318
3825
  color: var(--zx-color-text);
3319
3826
  padding: var(--zx-space-3);
3320
3827
  }
3828
+ @media (prefers-reduced-transparency: reduce) {
3829
+ .zx-dropdown {
3830
+ border-color: var(--zx-color-border);
3831
+ background: var(--zx-color-bg-raised);
3832
+ -webkit-backdrop-filter: none;
3833
+ backdrop-filter: none;
3834
+ box-shadow: var(--zx-overlay-shadow);
3835
+ }
3836
+ }
3321
3837
  @media (prefers-reduced-motion: no-preference) {
3322
3838
  .zx-dropdown:popover-open {
3323
3839
  animation: zx-dropdown-enter var(--zx-dur-fast) var(--zx-ease);
@@ -3333,10 +3849,12 @@ body:has(> .zx-modal:modal) {
3333
3849
  /* src/components/tooltip/tooltip.css */
3334
3850
  .zx-tooltip {
3335
3851
  max-inline-size: var(--zx-tooltip-max-inline-size, 260px);
3336
- border: 1px solid var(--zx-color-border);
3852
+ border: 1px solid var(--zx-color-overlay-border);
3337
3853
  border-radius: var(--zx-radius-md);
3338
- background: var(--zx-color-bg-raised);
3339
- box-shadow: var(--zx-overlay-shadow);
3854
+ background: var(--zx-color-overlay-surface);
3855
+ -webkit-backdrop-filter: var(--zx-glass-filter-overlay);
3856
+ backdrop-filter: var(--zx-glass-filter-overlay);
3857
+ box-shadow: var(--zx-glass-raised-shadow);
3340
3858
  padding: var(--zx-space-1) var(--zx-space-2);
3341
3859
  color: var(--zx-color-text);
3342
3860
  font-size: var(--zx-text-sm);
@@ -3346,6 +3864,15 @@ body:has(> .zx-modal:modal) {
3346
3864
  pointer-events: none;
3347
3865
  user-select: none;
3348
3866
  }
3867
+ @media (prefers-reduced-transparency: reduce) {
3868
+ .zx-tooltip {
3869
+ border-color: var(--zx-color-border);
3870
+ background: var(--zx-color-bg-raised);
3871
+ -webkit-backdrop-filter: none;
3872
+ backdrop-filter: none;
3873
+ box-shadow: var(--zx-overlay-shadow);
3874
+ }
3875
+ }
3349
3876
  @media (prefers-reduced-motion: no-preference) {
3350
3877
  .zx-tooltip:popover-open {
3351
3878
  animation: zx-tooltip-enter var(--zx-dur-fast) var(--zx-ease);
@@ -3677,8 +4204,8 @@ body:has(> .zx-modal:modal) {
3677
4204
  gap: var(--zx-space-2);
3678
4205
  inline-size: 100%;
3679
4206
  min-block-size: var(--zx-control-height);
3680
- border-color: var(--zx-color-bg-raised);
3681
- background: var(--zx-color-bg-raised);
4207
+ border-color: transparent;
4208
+ background: transparent;
3682
4209
  padding-inline: var(--zx-control-pad-x);
3683
4210
  text-align: start;
3684
4211
  }
@@ -3721,8 +4248,8 @@ body:has(> .zx-modal:modal) {
3721
4248
  gap: var(--zx-space-2);
3722
4249
  inline-size: 100%;
3723
4250
  min-block-size: var(--zx-control-height);
3724
- border-color: var(--zx-color-bg-raised);
3725
- background: var(--zx-color-bg-raised);
4251
+ border-color: transparent;
4252
+ background: transparent;
3726
4253
  padding-inline: var(--zx-control-pad-x);
3727
4254
  text-align: start;
3728
4255
  }
@@ -3845,10 +4372,12 @@ body:has(> .zx-modal:modal) {
3845
4372
  inline-size: max-content;
3846
4373
  max-inline-size: calc(100vw - var(--zx-space-4));
3847
4374
  overflow: hidden;
3848
- border: 1px solid var(--zx-color-border-strong);
4375
+ border: 1px solid var(--zx-color-overlay-border);
3849
4376
  border-radius: var(--zx-radius-md);
3850
- background: var(--zx-color-bg-raised);
3851
- box-shadow: var(--zx-overlay-shadow);
4377
+ background: var(--zx-color-overlay-surface);
4378
+ -webkit-backdrop-filter: var(--zx-glass-filter-overlay);
4379
+ backdrop-filter: var(--zx-glass-filter-overlay);
4380
+ box-shadow: var(--zx-glass-raised-shadow);
3852
4381
  color: var(--zx-color-text);
3853
4382
  padding: var(--zx-space-1);
3854
4383
  }
@@ -3887,7 +4416,7 @@ body:has(> .zx-modal:modal) {
3887
4416
  position: sticky;
3888
4417
  z-index: 1;
3889
4418
  inset-block-start: 0;
3890
- background: var(--zx-color-bg-raised);
4419
+ background: var(--zx-color-overlay-surface);
3891
4420
  color: var(--zx-color-text-muted);
3892
4421
  font-size: var(--zx-text-xs);
3893
4422
  font-weight: 700;
@@ -3895,6 +4424,18 @@ body:has(> .zx-modal:modal) {
3895
4424
  padding: var(--zx-space-2) var(--zx-control-pad-x) var(--zx-space-1);
3896
4425
  text-transform: uppercase;
3897
4426
  }
4427
+ @media (prefers-reduced-transparency: reduce) {
4428
+ .zx-select__panel,
4429
+ .zx-select__group {
4430
+ background: var(--zx-color-bg-raised);
4431
+ }
4432
+ .zx-select__panel {
4433
+ border-color: var(--zx-color-border-strong);
4434
+ -webkit-backdrop-filter: none;
4435
+ backdrop-filter: none;
4436
+ box-shadow: var(--zx-overlay-shadow);
4437
+ }
4438
+ }
3898
4439
  .zx-select__separator {
3899
4440
  block-size: 1px;
3900
4441
  margin: var(--zx-space-1) var(--zx-control-pad-x);
@@ -4258,13 +4799,24 @@ body:has(> .zx-modal:modal) {
4258
4799
  inline-size: max-content;
4259
4800
  max-inline-size: calc(100vw - var(--zx-space-4));
4260
4801
  overflow: hidden;
4261
- border: 1px solid var(--zx-color-border-strong);
4802
+ border: 1px solid var(--zx-color-overlay-border);
4262
4803
  border-radius: var(--zx-radius-md);
4263
- background: var(--zx-color-bg-raised);
4264
- box-shadow: var(--zx-overlay-shadow);
4804
+ background: var(--zx-color-overlay-surface);
4805
+ -webkit-backdrop-filter: var(--zx-glass-filter-overlay);
4806
+ backdrop-filter: var(--zx-glass-filter-overlay);
4807
+ box-shadow: var(--zx-glass-raised-shadow);
4265
4808
  color: var(--zx-color-text);
4266
4809
  padding: var(--zx-space-1);
4267
4810
  }
4811
+ @media (prefers-reduced-transparency: reduce) {
4812
+ .zx-tag-picker__panel {
4813
+ border-color: var(--zx-color-border-strong);
4814
+ background: var(--zx-color-bg-raised);
4815
+ -webkit-backdrop-filter: none;
4816
+ backdrop-filter: none;
4817
+ box-shadow: var(--zx-overlay-shadow);
4818
+ }
4819
+ }
4268
4820
  .zx-tag-picker__list {
4269
4821
  min-inline-size: 0;
4270
4822
  overflow-y: auto;
@@ -4721,12 +5273,23 @@ body:has(> .zx-modal:modal) {
4721
5273
  position: absolute;
4722
5274
  z-index: 2;
4723
5275
  inset: var(--zx-space-3);
4724
- border: 1px solid var(--zx-color-border-strong);
5276
+ border: 1px solid var(--zx-color-overlay-border);
4725
5277
  border-radius: var(--zx-radius-md);
4726
- background: var(--zx-color-bg-raised);
4727
- box-shadow: var(--zx-overlay-shadow);
5278
+ background: var(--zx-color-overlay-surface);
5279
+ -webkit-backdrop-filter: var(--zx-glass-filter-overlay);
5280
+ backdrop-filter: var(--zx-glass-filter-overlay);
5281
+ box-shadow: var(--zx-glass-raised-shadow);
4728
5282
  padding: var(--zx-space-3);
4729
5283
  }
5284
+ @media (prefers-reduced-transparency: reduce) {
5285
+ .zx-date-picker__quick {
5286
+ border-color: var(--zx-color-border-strong);
5287
+ background: var(--zx-color-bg-raised);
5288
+ -webkit-backdrop-filter: none;
5289
+ backdrop-filter: none;
5290
+ box-shadow: var(--zx-overlay-shadow);
5291
+ }
5292
+ }
4730
5293
  .zx-date-picker__quick[hidden] {
4731
5294
  display: none;
4732
5295
  }
@@ -4998,7 +5561,7 @@ body:has(> .zx-modal:modal) {
4998
5561
  overflow: visible;
4999
5562
  max-inline-size: calc(100vw - var(--zx-space-4));
5000
5563
  border: 0;
5001
- background: var(--zx-color-bg-raised);
5564
+ background: none;
5002
5565
  padding: 0;
5003
5566
  }
5004
5567
  .zx-datebox__popover:not(:popover-open)[data-state=closed] {
@@ -5008,12 +5571,24 @@ body:has(> .zx-modal:modal) {
5008
5571
  display: block;
5009
5572
  }
5010
5573
  .zx-datebox__popover .zx-date-picker__surface {
5011
- background: var(--zx-color-bg-raised);
5012
- box-shadow: var(--zx-overlay-shadow);
5574
+ border-color: var(--zx-color-overlay-border);
5575
+ background: var(--zx-color-overlay-surface);
5576
+ -webkit-backdrop-filter: var(--zx-glass-filter-overlay);
5577
+ backdrop-filter: var(--zx-glass-filter-overlay);
5578
+ box-shadow: var(--zx-glass-raised-shadow);
5013
5579
  }
5014
-
5015
- /* src/components/date-picker/date-range-picker.css */
5016
- .zx-date-range-picker {
5580
+ @media (prefers-reduced-transparency: reduce) {
5581
+ .zx-datebox__popover .zx-date-picker__surface {
5582
+ border-color: var(--zx-color-border);
5583
+ background: var(--zx-color-bg-raised);
5584
+ -webkit-backdrop-filter: none;
5585
+ backdrop-filter: none;
5586
+ box-shadow: var(--zx-overlay-shadow);
5587
+ }
5588
+ }
5589
+
5590
+ /* src/components/date-picker/date-range-picker.css */
5591
+ .zx-date-range-picker {
5017
5592
  display: block;
5018
5593
  container-type: inline-size;
5019
5594
  inline-size: 100%;
@@ -5317,8 +5892,20 @@ body:has(> .zx-modal:modal) {
5317
5892
  }
5318
5893
  .zx-date-range-box__popover .zx-date-range-picker__surface {
5319
5894
  max-inline-size: none;
5320
- background: var(--zx-color-bg-raised);
5321
- box-shadow: var(--zx-overlay-shadow);
5895
+ border-color: var(--zx-color-overlay-border);
5896
+ background: var(--zx-color-overlay-surface);
5897
+ -webkit-backdrop-filter: var(--zx-glass-filter-overlay);
5898
+ backdrop-filter: var(--zx-glass-filter-overlay);
5899
+ box-shadow: var(--zx-glass-raised-shadow);
5900
+ }
5901
+ @media (prefers-reduced-transparency: reduce) {
5902
+ .zx-date-range-box__popover .zx-date-range-picker__surface {
5903
+ border-color: var(--zx-color-border);
5904
+ background: var(--zx-color-bg-raised);
5905
+ -webkit-backdrop-filter: none;
5906
+ backdrop-filter: none;
5907
+ box-shadow: var(--zx-overlay-shadow);
5908
+ }
5322
5909
  }
5323
5910
 
5324
5911
  /* src/components/timebox/timebox.css */
@@ -5366,401 +5953,1896 @@ body:has(> .zx-modal:modal) {
5366
5953
  color: var(--zx-color-danger);
5367
5954
  }
5368
5955
 
5369
- /* src/components/table/table.css */
5370
- .zx-table {
5956
+ /* src/components/calendar/calendar.css */
5957
+ .zx-calendar {
5958
+ --zx-calendar-time-axis: 4.75rem;
5959
+ --zx-calendar-slot-height: 24px;
5960
+ --zx-calendar-event-color: var(--zx-color-accent);
5961
+ position: relative;
5962
+ container-type: inline-size;
5963
+ display: grid;
5964
+ inline-size: 100%;
5371
5965
  min-inline-size: 0;
5966
+ overflow: hidden;
5967
+ border: 1px solid var(--zx-color-border);
5968
+ border-radius: var(--zx-radius-lg);
5969
+ background: var(--zx-color-bg-surface);
5970
+ color: var(--zx-color-text);
5971
+ font-size: var(--zx-text-sm);
5372
5972
  }
5373
- .zx-table__column-controls {
5374
- position: relative;
5375
- inline-size: max-content;
5376
- margin: 0 0 var(--zx-space-2) auto;
5973
+ .zx-calendar__toolbar {
5974
+ display: grid;
5975
+ grid-template-columns: 1fr auto 1fr;
5976
+ align-items: center;
5977
+ gap: var(--zx-space-3);
5978
+ min-inline-size: 0;
5979
+ padding: var(--zx-space-3);
5980
+ border-block-end: 1px solid var(--zx-color-border);
5377
5981
  }
5378
- .zx-table__reorder-status {
5379
- position: absolute;
5380
- inline-size: 1px;
5381
- block-size: 1px;
5382
- overflow: hidden;
5383
- clip-path: inset(50%);
5982
+ .zx-calendar__navigation,
5983
+ .zx-calendar__commands,
5984
+ .zx-calendar__views {
5985
+ display: flex;
5986
+ align-items: center;
5987
+ min-inline-size: 0;
5384
5988
  }
5385
- .zx-table__column-controls > summary {
5989
+ .zx-calendar__navigation {
5990
+ justify-self: start;
5991
+ gap: var(--zx-space-1);
5992
+ }
5993
+ .zx-calendar__commands {
5994
+ justify-self: end;
5995
+ gap: var(--zx-space-3);
5996
+ }
5997
+ .zx-calendar__views {
5998
+ overflow-x: auto;
5999
+ }
6000
+ .zx-calendar__toolbar-button,
6001
+ .zx-calendar__view-button,
6002
+ .zx-calendar__new {
5386
6003
  display: inline-flex;
6004
+ min-block-size: var(--zx-control-height);
5387
6005
  align-items: center;
5388
- gap: var(--zx-space-2);
5389
- list-style: none;
6006
+ justify-content: center;
6007
+ border: 1px solid var(--zx-color-border-control);
6008
+ background: var(--zx-color-bg-control);
6009
+ color: var(--zx-color-text);
6010
+ font: inherit;
6011
+ font-size: var(--zx-text-sm);
5390
6012
  cursor: pointer;
5391
6013
  }
5392
- .zx-table__column-controls > summary::-webkit-details-marker {
5393
- display: none;
5394
- }
5395
- .zx-table__column-list {
5396
- position: absolute;
5397
- z-index: 4;
5398
- inset-block-start: calc(100% + var(--zx-space-1));
5399
- inset-inline-end: 0;
5400
- display: grid;
5401
- min-inline-size: 190px;
5402
- border: 1px solid var(--zx-color-border-strong);
5403
- border-radius: var(--zx-radius-md);
5404
- background: var(--zx-color-bg-raised);
5405
- box-shadow: var(--zx-overlay-shadow);
5406
- padding: var(--zx-space-2);
6014
+ .zx-calendar__toolbar-button {
6015
+ min-inline-size: var(--zx-control-height);
6016
+ border-radius: var(--zx-control-radius);
6017
+ padding-inline: var(--zx-space-3);
5407
6018
  }
5408
- .zx-table__column-option {
5409
- display: flex;
5410
- align-items: center;
5411
- gap: var(--zx-space-2);
5412
- min-block-size: var(--zx-control-height);
5413
- border-radius: var(--zx-radius-sm);
6019
+ .zx-calendar__toolbar-button:has(.zx-icon) {
5414
6020
  padding-inline: var(--zx-space-2);
5415
6021
  }
5416
- .zx-table__column-option:hover {
5417
- background: var(--zx-color-bg-hover);
6022
+ .zx-calendar__view-button {
6023
+ border-inline-end-width: 0;
6024
+ padding-inline: var(--zx-space-3);
5418
6025
  }
5419
- .zx-table__reorder-column,
5420
- .zx-table__reorder-header,
5421
- .zx-table__reorder-cell {
5422
- inline-size: var(--zx-control-height);
5423
- text-align: center;
6026
+ .zx-calendar__view-button:first-child {
6027
+ border-start-start-radius: var(--zx-control-radius);
6028
+ border-end-start-radius: var(--zx-control-radius);
5424
6029
  }
5425
- .zx-table__row-handle {
5426
- display: inline-grid;
5427
- place-items: center;
5428
- inline-size: 26px;
5429
- block-size: 26px;
5430
- min-block-size: 0;
5431
- border: 0;
5432
- border-radius: var(--zx-radius-sm);
5433
- background: transparent;
5434
- padding: 0;
5435
- color: var(--zx-color-text-muted);
5436
- cursor: grab;
6030
+ .zx-calendar__view-button:last-child {
6031
+ border-inline-end-width: 1px;
6032
+ border-start-end-radius: var(--zx-control-radius);
6033
+ border-end-end-radius: var(--zx-control-radius);
5437
6034
  }
5438
- .zx-table__row-handle:hover,
5439
- .zx-table__row-handle[aria-pressed=true] {
6035
+ .zx-calendar__view-button[aria-pressed=true] {
6036
+ position: relative;
6037
+ z-index: 1;
6038
+ border-color: var(--zx-color-accent);
6039
+ background: var(--zx-color-bg-selected);
6040
+ color: var(--zx-color-accent);
6041
+ }
6042
+ .zx-calendar__new {
6043
+ gap: var(--zx-space-2);
6044
+ border-color: var(--zx-color-accent);
6045
+ border-radius: var(--zx-control-radius);
6046
+ background: var(--zx-color-accent);
6047
+ color: var(--zx-color-on-accent);
6048
+ padding-inline: var(--zx-space-3);
6049
+ font-weight: 650;
6050
+ }
6051
+ .zx-calendar__toolbar-button:hover:not(:disabled),
6052
+ .zx-calendar__view-button:hover:not(:disabled) {
5440
6053
  background: var(--zx-color-bg-hover);
5441
- color: var(--zx-color-text);
5442
6054
  }
5443
- .zx-table__row-handle:active {
5444
- cursor: grabbing;
6055
+ .zx-calendar__new:hover:not(:disabled) {
6056
+ background: var(--zx-color-accent-hover);
5445
6057
  }
5446
- .zx-table__body tr[data-dragging] {
6058
+ .zx-calendar button:disabled {
6059
+ cursor: default;
5447
6060
  opacity: .55;
5448
6061
  }
5449
- .zx-table__body tr[data-drop=before] {
5450
- box-shadow: inset 0 2px 0 var(--zx-color-accent);
6062
+ .zx-calendar__toolbar-button:focus-visible,
6063
+ .zx-calendar__view-button:focus-visible,
6064
+ .zx-calendar__new:focus-visible,
6065
+ .zx-calendar__event-action:focus-visible,
6066
+ .zx-calendar__event-resize:focus-visible,
6067
+ .zx-calendar__slot:focus-visible,
6068
+ .zx-calendar__day-heading:focus-visible,
6069
+ .zx-calendar__month-day:focus-visible,
6070
+ .zx-calendar__year-day:focus-visible,
6071
+ .zx-calendar__agenda-heading:focus-visible,
6072
+ .zx-calendar__more:focus-visible,
6073
+ .zx-calendar__month-week-number:focus-visible {
6074
+ z-index: 4;
6075
+ outline: none;
6076
+ box-shadow: var(--zx-focus-ring);
5451
6077
  }
5452
- .zx-table__body tr[data-drop=after] {
5453
- box-shadow: inset 0 -2px 0 var(--zx-color-accent);
6078
+ .zx-calendar__heading {
6079
+ min-inline-size: 0;
6080
+ margin: 0;
6081
+ overflow: hidden;
6082
+ color: var(--zx-color-text);
6083
+ font-size: var(--zx-text-lg);
6084
+ font-weight: 700;
6085
+ line-height: 1.25;
6086
+ text-align: center;
6087
+ text-overflow: ellipsis;
6088
+ white-space: nowrap;
5454
6089
  }
5455
- .zx-table__scroll {
5456
- position: relative;
5457
- max-inline-size: 100%;
5458
- overflow: auto;
5459
- border: 1px solid var(--zx-color-border);
5460
- border-radius: var(--zx-radius-md);
5461
- background: var(--zx-color-bg-surface);
5462
- scrollbar-gutter: stable;
6090
+ .zx-calendar__body {
6091
+ min-inline-size: 0;
6092
+ overflow-x: auto;
5463
6093
  }
5464
- .zx-table[data-loading=true] .zx-table__body {
5465
- opacity: 0.5;
6094
+ .zx-calendar__time-surface {
6095
+ display: grid;
6096
+ min-inline-size: 42rem;
5466
6097
  }
5467
- .zx-table[data-loading=true] .zx-table__scroll::after {
5468
- content: "";
5469
- position: sticky;
5470
- inset-block-start: 0;
5471
- inset-inline: 0;
5472
- display: block;
5473
- block-size: 2px;
5474
- margin-block-end: -2px;
5475
- background: var(--zx-color-accent);
5476
- opacity: 0.85;
5477
- z-index: 2;
6098
+ .zx-calendar__time-header,
6099
+ .zx-calendar__all-day,
6100
+ .zx-calendar__time-scroller {
6101
+ display: grid;
6102
+ grid-template-columns: var(--zx-calendar-time-axis) minmax(0, 1fr);
5478
6103
  }
5479
- @media (prefers-reduced-motion: no-preference) {
5480
- .zx-table[data-loading=true] .zx-table__scroll::after {
5481
- background:
5482
- linear-gradient(
5483
- 90deg,
5484
- transparent 0%,
5485
- var(--zx-color-accent) 50%,
5486
- transparent 100%);
5487
- background-size: 40% 100%;
5488
- background-repeat: no-repeat;
5489
- animation: zx-table-loading 1.1s var(--zx-ease) infinite;
5490
- }
6104
+ .zx-calendar__time-header,
6105
+ .zx-calendar__all-day {
6106
+ border-block-end: 1px solid var(--zx-color-border);
5491
6107
  }
5492
- @keyframes zx-table-loading {
5493
- from {
5494
- background-position: -40% 0;
5495
- }
5496
- to {
5497
- background-position: 140% 0;
5498
- }
6108
+ .zx-calendar__time-corner,
6109
+ .zx-calendar__all-day-label {
6110
+ border-inline-end: 1px solid var(--zx-color-border);
6111
+ color: var(--zx-color-text-muted);
5499
6112
  }
5500
- .zx-table__table {
5501
- inline-size: 100%;
5502
- border-spacing: 0;
6113
+ .zx-calendar__day-headings {
6114
+ display: grid;
6115
+ grid-template-columns: repeat(var(--zx-calendar-day-count), minmax(0, 1fr));
6116
+ }
6117
+ .zx-calendar__day-heading {
6118
+ display: grid;
6119
+ gap: 1px;
6120
+ min-block-size: calc(var(--zx-control-height) + var(--zx-space-2));
6121
+ place-content: center;
6122
+ border: 0;
6123
+ border-inline-end: 1px solid var(--zx-color-border);
5503
6124
  background: var(--zx-color-bg-surface);
5504
6125
  color: var(--zx-color-text);
6126
+ font: inherit;
6127
+ cursor: pointer;
5505
6128
  }
5506
- .zx-table__table[data-layout=auto] {
5507
- min-inline-size: max-content;
5508
- }
5509
- .zx-table__table[data-layout=fixed] {
5510
- table-layout: fixed;
6129
+ .zx-calendar__day-heading:last-child {
6130
+ border-inline-end: 0;
5511
6131
  }
5512
- .zx-table__selection-column {
5513
- inline-size: var(--zx-control-height);
6132
+ .zx-calendar__day-heading:hover:not(:disabled) {
6133
+ background: var(--zx-color-bg-hover);
5514
6134
  }
5515
- .zx-table th,
5516
- .zx-table td {
5517
- border-block-end: 1px solid var(--zx-table-border-color, var(--zx-color-border));
5518
- padding: var(--zx-space-2) var(--zx-space-3);
5519
- text-align: start;
5520
- vertical-align: middle;
6135
+ .zx-calendar__day-heading[aria-current=date] .zx-calendar__day-number {
6136
+ color: var(--zx-color-accent);
6137
+ font-weight: 750;
5521
6138
  }
5522
- .zx-table th {
5523
- background: var(--zx-table-header-bg, var(--zx-color-bg-raised));
6139
+ .zx-calendar__day-weekday {
5524
6140
  color: var(--zx-color-text-muted);
6141
+ font-size: var(--zx-text-xs);
6142
+ text-transform: uppercase;
6143
+ letter-spacing: .04em;
6144
+ }
6145
+ .zx-calendar__day-number {
5525
6146
  font-size: var(--zx-text-sm);
5526
- font-weight: 650;
5527
6147
  }
5528
- .zx-table__scroll[data-sticky-header=true] th {
5529
- position: sticky;
5530
- z-index: 1;
5531
- inset-block-start: 0;
6148
+ .zx-calendar__all-day {
6149
+ min-block-size: calc(var(--zx-control-height) + var(--zx-space-2));
5532
6150
  }
5533
- .zx-table th[data-align=center],
5534
- .zx-table td[data-align=center] {
5535
- text-align: center;
6151
+ .zx-calendar__all-day-label {
6152
+ display: grid;
6153
+ place-items: center end;
6154
+ padding-inline: var(--zx-space-2);
6155
+ font-size: var(--zx-text-xs);
5536
6156
  }
5537
- .zx-table th[data-align=end],
5538
- .zx-table td[data-align=end],
5539
- .zx-table th[data-align=right],
5540
- .zx-table td[data-align=right] {
5541
- text-align: end;
6157
+ .zx-calendar__all-day-grid {
6158
+ display: grid;
6159
+ grid-template-columns: repeat(var(--zx-calendar-day-count), minmax(0, 1fr));
6160
+ grid-auto-rows: calc(var(--zx-control-height) - var(--zx-space-2));
6161
+ gap: 2px 0;
6162
+ min-block-size: var(--zx-control-height);
6163
+ padding-block: var(--zx-space-1);
6164
+ overflow: hidden;
5542
6165
  }
5543
- .zx-table th[data-align=left],
5544
- .zx-table td[data-align=left] {
5545
- text-align: left;
6166
+ .zx-calendar__all-day-cell {
6167
+ border-inline-end: 1px solid var(--zx-color-border);
5546
6168
  }
5547
- .zx-table__sort-button {
5548
- display: flex;
5549
- align-items: center;
5550
- justify-content: space-between;
5551
- gap: var(--zx-space-2);
5552
- inline-size: 100%;
5553
- min-block-size: auto;
5554
- border: 0;
5555
- border-radius: var(--zx-radius-sm);
5556
- background: inherit;
5557
- color: inherit;
5558
- padding: 0;
5559
- text-align: inherit;
6169
+ .zx-calendar__all-day-cell:last-of-type {
6170
+ border-inline-end: 0;
5560
6171
  }
5561
- .zx-table__sort-button:hover {
5562
- background: var(--zx-table-row-hover-bg, var(--zx-color-bg-hover));
5563
- color: var(--zx-color-text);
6172
+ .zx-calendar__time-scroller {
6173
+ position: relative;
6174
+ max-block-size: min(68vh, 46rem);
6175
+ overflow: auto;
6176
+ overscroll-behavior: contain;
6177
+ scrollbar-gutter: stable;
5564
6178
  }
5565
- .zx-table__sort-button:focus-visible {
5566
- box-shadow: var(--zx-focus-ring);
6179
+ .zx-calendar__time-axis {
6180
+ position: relative;
6181
+ z-index: 2;
6182
+ border-inline-end: 1px solid var(--zx-color-border);
6183
+ background: var(--zx-color-bg-surface);
5567
6184
  }
5568
- .zx-table th[aria-sort=ascending] .zx-table__sort-button::after {
5569
- content: "\2191";
5570
- color: var(--zx-color-accent);
6185
+ .zx-calendar__time-label {
6186
+ display: block;
6187
+ block-size: var(--zx-calendar-slot-height);
6188
+ padding-block-start: var(--zx-space-1);
6189
+ padding-inline-end: var(--zx-space-2);
6190
+ color: var(--zx-color-text-muted);
6191
+ font-size: var(--zx-text-xs);
6192
+ text-align: end;
6193
+ transform: translateY(-.65em);
5571
6194
  }
5572
- .zx-table th[aria-sort=descending] .zx-table__sort-button::after {
5573
- content: "\2193";
5574
- color: var(--zx-color-accent);
6195
+ .zx-calendar__time-label:first-child {
6196
+ transform: none;
5575
6197
  }
5576
- .zx-table__body tr:last-child td {
5577
- border-block-end: 0;
6198
+ .zx-calendar__time-grid {
6199
+ position: relative;
6200
+ block-size: calc(var(--zx-calendar-slot-count) * var(--zx-calendar-slot-height));
6201
+ min-inline-size: 0;
5578
6202
  }
5579
- .zx-table__scroll[data-zebra=true] .zx-table__body tr:nth-child(even):not([aria-selected=true]) {
5580
- background: var(--zx-color-bg-page);
6203
+ .zx-calendar__slots {
6204
+ position: absolute;
6205
+ inset: 0;
6206
+ display: grid;
6207
+ grid-template-columns: repeat(var(--zx-calendar-day-count), minmax(0, 1fr));
6208
+ grid-template-rows: repeat(var(--zx-calendar-slot-count), var(--zx-calendar-slot-height));
5581
6209
  }
5582
- .zx-table__body tr[aria-selected=true] {
5583
- background: var(--zx-table-row-selected-bg, var(--zx-color-bg-selected));
6210
+ .zx-calendar__slot {
6211
+ min-inline-size: 0;
6212
+ border: 0;
6213
+ border-block-start: 1px solid var(--zx-color-border);
6214
+ border-inline-end: 1px solid var(--zx-color-border);
6215
+ background: var(--zx-color-bg-surface);
6216
+ padding: 0;
6217
+ cursor: crosshair;
5584
6218
  }
5585
- .zx-table__body tr[data-row]:hover {
5586
- background: var(--zx-color-bg-hover);
6219
+ .zx-calendar__slot:not([data-major=true]) {
6220
+ border-block-start-style: dotted;
5587
6221
  }
5588
- .zx-table__checkbox {
5589
- inline-size: var(--zx-space-4);
5590
- min-block-size: auto;
5591
- block-size: var(--zx-space-4);
5592
- margin: 0;
5593
- accent-color: var(--zx-color-accent);
6222
+ .zx-calendar__slot[aria-selected=true] {
6223
+ background: var(--zx-color-bg-selected);
5594
6224
  }
5595
- .zx-table__selection-header,
5596
- .zx-table__selection-cell {
5597
- inline-size: var(--zx-control-height);
5598
- text-align: center;
6225
+ .zx-calendar__slot:hover:not(:disabled) {
6226
+ background: var(--zx-color-bg-hover);
5599
6227
  }
5600
- .zx-table__empty {
5601
- padding-block: var(--zx-space-6);
5602
- color: var(--zx-color-text-muted);
5603
- text-align: center;
6228
+ .zx-calendar__timed-events {
6229
+ position: absolute;
6230
+ inset: 0;
6231
+ pointer-events: none;
5604
6232
  }
5605
- .zx-table__tree-cell {
5606
- display: flex;
6233
+ .zx-calendar__event {
6234
+ --zx-calendar-event-color: var(--zx-color-accent);
6235
+ position: relative;
6236
+ z-index: 2;
5607
6237
  min-inline-size: 0;
5608
- align-items: center;
5609
- gap: var(--zx-space-1);
5610
- padding-inline-start: calc(var(--zx-table-depth, 0) * var(--zx-space-4));
6238
+ pointer-events: auto;
5611
6239
  }
5612
- .zx-table__tree-toggle,
5613
- .zx-table__tree-spacer {
5614
- inline-size: 24px;
5615
- block-size: 24px;
5616
- flex: 0 0 24px;
6240
+ .zx-calendar__event[data-variant=timed] {
6241
+ position: absolute;
6242
+ min-block-size: calc(var(--zx-calendar-slot-height) - 2px);
6243
+ padding: 1px 2px;
5617
6244
  }
5618
- .zx-table__tree-toggle {
5619
- display: inline-grid;
5620
- min-block-size: 0;
5621
- place-items: center;
5622
- padding: 0;
5623
- border: 0;
6245
+ .zx-calendar__event-action {
6246
+ display: grid;
6247
+ grid-template-columns: minmax(0, 1fr);
6248
+ align-content: start;
6249
+ gap: 1px;
6250
+ inline-size: 100%;
6251
+ block-size: 100%;
6252
+ min-inline-size: 0;
6253
+ overflow: hidden;
6254
+ border: 1px solid color-mix(in srgb, var(--zx-calendar-event-color) 65%, var(--zx-color-border));
6255
+ border-inline-start: 3px solid var(--zx-calendar-event-color);
5624
6256
  border-radius: var(--zx-radius-sm);
5625
- background: transparent;
5626
- color: var(--zx-color-text-muted);
6257
+ background: color-mix(in srgb, var(--zx-calendar-event-color) 11%, var(--zx-color-bg-surface));
6258
+ color: var(--zx-color-text);
6259
+ padding: var(--zx-space-1) var(--zx-space-2);
6260
+ font: inherit;
6261
+ font-size: var(--zx-text-xs);
6262
+ line-height: 1.25;
6263
+ text-align: start;
5627
6264
  cursor: pointer;
5628
6265
  }
5629
- .zx-table__tree-toggle:hover {
5630
- background: var(--zx-color-bg-hover);
5631
- color: var(--zx-color-text);
6266
+ .zx-calendar__event[data-draggable=true] > .zx-calendar__event-action {
6267
+ cursor: grab;
6268
+ touch-action: none;
5632
6269
  }
5633
- .zx-table__tree-toggle:focus-visible {
5634
- outline: 0;
6270
+ .zx-calendar__event[data-state=dragging] > .zx-calendar__event-action,
6271
+ .zx-calendar__event[data-state=grabbed] > .zx-calendar__event-action {
6272
+ border-color: var(--zx-color-accent);
5635
6273
  box-shadow: var(--zx-focus-ring);
6274
+ cursor: grabbing;
5636
6275
  }
5637
- .zx-table__cell-content {
5638
- min-inline-size: 0;
5639
- }
5640
- .zx-table[data-edit-mode] .zx-table__body td {
5641
- block-size: var(--zx-control-height);
5642
- }
5643
- .zx-table__body td[data-editable=true] {
5644
- cursor: cell;
6276
+ .zx-calendar__event[data-preview]::after {
6277
+ position: absolute;
6278
+ inset-inline: var(--zx-space-1);
6279
+ inset-block-end: var(--zx-space-1);
6280
+ z-index: 5;
6281
+ overflow: hidden;
6282
+ border-radius: var(--zx-radius-sm);
6283
+ background: var(--zx-color-bg-raised);
6284
+ color: var(--zx-color-text);
6285
+ content: attr(data-preview);
6286
+ font-size: var(--zx-text-xs);
6287
+ padding: 1px var(--zx-space-1);
6288
+ text-overflow: ellipsis;
6289
+ white-space: nowrap;
5645
6290
  }
5646
- .zx-table__body td[data-editable=true]:focus-visible {
5647
- outline: 0;
5648
- box-shadow: inset var(--zx-focus-ring);
6291
+ .zx-calendar__event-time {
6292
+ overflow: hidden;
6293
+ color: var(--zx-color-text-muted);
6294
+ text-overflow: ellipsis;
6295
+ white-space: nowrap;
5649
6296
  }
5650
- .zx-table__body td[data-editing=true] {
5651
- position: relative;
6297
+ .zx-calendar__event-title {
6298
+ overflow: hidden;
6299
+ font-weight: 680;
6300
+ text-overflow: ellipsis;
6301
+ white-space: nowrap;
5652
6302
  }
5653
- .zx-table__cell-shadow {
5654
- visibility: hidden;
6303
+ .zx-calendar__event-location {
6304
+ overflow: hidden;
6305
+ color: var(--zx-color-text-muted);
6306
+ text-overflow: ellipsis;
6307
+ white-space: nowrap;
5655
6308
  }
5656
- .zx-table__editor {
6309
+ .zx-calendar__event-resize {
5657
6310
  position: absolute;
5658
- inset: 0;
5659
- display: flex;
5660
- align-items: center;
5661
- gap: var(--zx-space-1);
5662
- padding-inline: var(--zx-space-1);
5663
- background: var(--zx-color-bg-surface);
6311
+ inset-inline: var(--zx-space-2);
6312
+ inset-block-end: 1px;
6313
+ z-index: 3;
6314
+ display: grid;
6315
+ block-size: 8px;
6316
+ place-items: center;
6317
+ border: 0;
6318
+ background: transparent;
6319
+ padding: 0;
6320
+ cursor: ns-resize;
6321
+ touch-action: none;
5664
6322
  }
5665
- .zx-table__editor > * {
5666
- inline-size: 100%;
6323
+ .zx-calendar__event-resize > span {
6324
+ inline-size: 1.5rem;
6325
+ border-block-start: 2px solid var(--zx-calendar-event-color);
5667
6326
  }
5668
- .zx-table__editor[data-editor=checkbox] {
5669
- justify-content: center;
6327
+ .zx-calendar__event[data-variant=span],
6328
+ .zx-calendar__event[data-variant=month] {
6329
+ min-inline-size: 0;
6330
+ padding-inline: 2px;
5670
6331
  }
5671
- .zx-table__editor[data-editor=checkbox] > * {
5672
- inline-size: auto;
6332
+ .zx-calendar__event[data-variant=span] {
6333
+ z-index: 2;
5673
6334
  }
5674
- .zx-table__editor-input {
5675
- inline-size: 100%;
5676
- min-block-size: 0;
5677
- block-size: var(--zx-control-height);
5678
- padding-inline: var(--zx-space-2);
6335
+ .zx-calendar__event[data-variant=span] .zx-calendar__event-action,
6336
+ .zx-calendar__event[data-variant=month] .zx-calendar__event-action {
6337
+ display: flex;
6338
+ align-items: center;
6339
+ gap: var(--zx-space-1);
6340
+ padding-block: 2px;
6341
+ white-space: nowrap;
5679
6342
  }
5680
- .zx-table__editor-textarea {
5681
- block-size: 100%;
5682
- padding-block: var(--zx-space-1);
5683
- resize: none;
6343
+ .zx-calendar__event[data-variant=span] .zx-calendar__event-location,
6344
+ .zx-calendar__event[data-variant=month] .zx-calendar__event-location {
6345
+ display: none;
5684
6346
  }
5685
- .zx-table__body td[data-invalid=true] .zx-table__editor {
5686
- box-shadow: inset 0 0 0 1px var(--zx-color-danger);
6347
+ .zx-calendar__event[data-variant=month] .zx-calendar__event-time {
6348
+ flex: 0 0 auto;
5687
6349
  }
5688
- .zx-table__body td[data-invalid=true] .zx-table__editor-input {
5689
- border-color: var(--zx-color-danger);
6350
+ .zx-calendar__event[data-variant=month] .zx-calendar__event-title {
6351
+ flex: 1 1 auto;
5690
6352
  }
5691
- .zx-table__message {
5692
- padding: var(--zx-space-2) var(--zx-space-3);
5693
- color: var(--zx-color-danger);
5694
- font-size: var(--zx-text-sm);
6353
+ .zx-calendar__now {
6354
+ position: absolute;
6355
+ inset-inline: 0;
6356
+ z-index: 3;
6357
+ border-block-start: 1px solid var(--zx-color-danger);
6358
+ pointer-events: none;
5695
6359
  }
5696
- .zx-table__message:empty {
6360
+ .zx-calendar__now[hidden] {
5697
6361
  display: none;
5698
6362
  }
5699
- .zx-table[data-stacked] .zx-table__table,
5700
- .zx-table[data-stacked] .zx-table__body,
5701
- .zx-table[data-stacked] .zx-table__body > tr {
5702
- display: block;
5703
- inline-size: 100%;
6363
+ .zx-calendar__now-time {
6364
+ position: absolute;
6365
+ inset-inline-start: var(--zx-space-1);
6366
+ color: var(--zx-color-danger);
6367
+ font-size: var(--zx-text-xs);
6368
+ font-weight: 700;
6369
+ transform: translateY(-100%);
5704
6370
  }
5705
- .zx-table[data-stacked] .zx-table__head,
5706
- .zx-table[data-stacked] .zx-table__columns {
5707
- display: none;
6371
+ .zx-calendar__agenda {
6372
+ display: grid;
5708
6373
  }
5709
- .zx-table[data-stacked] .zx-table__body > tr {
5710
- padding-block: var(--zx-space-3);
5711
- padding-inline: var(--zx-space-4);
6374
+ .zx-calendar__agenda-day {
6375
+ display: grid;
6376
+ grid-template-columns: minmax(10rem, 22%) minmax(0, 1fr);
5712
6377
  border-block-end: 1px solid var(--zx-color-border);
5713
6378
  }
5714
- .zx-table[data-stacked] .zx-table__body td {
5715
- display: flex;
5716
- align-items: baseline;
5717
- justify-content: space-between;
5718
- gap: var(--zx-space-4);
5719
- inline-size: auto;
5720
- padding-block: var(--zx-space-1);
5721
- padding-inline: 0;
6379
+ .zx-calendar__agenda-heading {
6380
+ align-self: start;
5722
6381
  border: 0;
6382
+ background: var(--zx-color-bg-muted);
6383
+ color: var(--zx-color-text);
6384
+ padding: var(--zx-space-3);
6385
+ font: inherit;
6386
+ font-weight: 700;
5723
6387
  text-align: start;
5724
- white-space: normal;
6388
+ cursor: pointer;
5725
6389
  }
5726
- .zx-table[data-stacked] .zx-table__body td[data-label]::before {
5727
- content: attr(data-label);
5728
- flex: none;
6390
+ .zx-calendar__agenda-heading[aria-current=date] {
6391
+ color: var(--zx-color-accent);
6392
+ }
6393
+ .zx-calendar__agenda-empty {
6394
+ margin: 0;
5729
6395
  color: var(--zx-color-text-muted);
5730
- font-size: var(--zx-text-sm);
6396
+ padding: var(--zx-space-3);
5731
6397
  }
5732
- .zx-table[data-stacked] .zx-table__body td[data-popin=false] {
5733
- display: block;
5734
- padding-block-end: var(--zx-space-2);
5735
- font-size: var(--zx-text-lg);
5736
- font-weight: 600;
6398
+ .zx-calendar__agenda-day > .zx-calendar__event {
6399
+ border-block-end: 1px solid var(--zx-color-border);
5737
6400
  }
5738
- .zx-table[data-stacked] .zx-table__body td[data-popin=false]::before {
5739
- content: none;
6401
+ .zx-calendar__agenda-day > .zx-calendar__event:last-child {
6402
+ border-block-end: 0;
5740
6403
  }
5741
- .zx-table[data-stacked] .zx-table__selection-cell {
6404
+ .zx-calendar__event[data-variant=agenda] .zx-calendar__event-action {
6405
+ grid-template-columns: minmax(6rem, 18%) minmax(0, 1fr);
6406
+ grid-template-areas: "time title" "time location";
6407
+ min-block-size: calc(var(--zx-control-height) + var(--zx-space-4));
6408
+ border: 0;
6409
+ border-inline-start: 4px solid var(--zx-calendar-event-color);
6410
+ border-radius: 0;
6411
+ background: var(--zx-color-bg-surface);
6412
+ padding: var(--zx-space-3);
6413
+ }
6414
+ .zx-calendar__event[data-variant=agenda] .zx-calendar__event-time {
6415
+ grid-area: time;
6416
+ align-self: center;
6417
+ }
6418
+ .zx-calendar__event[data-variant=agenda] .zx-calendar__event-title {
6419
+ grid-area: title;
6420
+ align-self: end;
6421
+ font-size: var(--zx-text-sm);
6422
+ }
6423
+ .zx-calendar__event[data-variant=agenda] .zx-calendar__event-location {
6424
+ grid-area: location;
6425
+ align-self: start;
6426
+ }
6427
+ .zx-calendar__event[data-variant=agenda] .zx-calendar__event-action:hover:not(:disabled) {
6428
+ background: var(--zx-color-bg-hover);
6429
+ }
6430
+ .zx-calendar__month {
6431
+ display: grid;
6432
+ min-inline-size: 42rem;
6433
+ }
6434
+ .zx-calendar__month-weekdays {
6435
+ display: grid;
6436
+ grid-template-columns: 2.5rem repeat(7, minmax(0, 1fr));
6437
+ }
6438
+ .zx-calendar__month-week {
6439
+ display: grid;
6440
+ grid-template-columns: auto minmax(0, 1fr);
6441
+ }
6442
+ .zx-calendar__month-weekdays {
6443
+ border-block-end: 1px solid var(--zx-color-border);
6444
+ }
6445
+ .zx-calendar__month-week-gutter,
6446
+ .zx-calendar__month-week-number {
6447
+ inline-size: 2.5rem;
6448
+ }
6449
+ .zx-calendar__month-weekdays:not(:has(.zx-calendar__month-week-gutter)) {
6450
+ grid-template-columns: repeat(7, minmax(0, 1fr));
6451
+ }
6452
+ .zx-calendar__month-week:not(:has(.zx-calendar__month-week-number)) {
6453
+ grid-template-columns: minmax(0, 1fr);
6454
+ }
6455
+ .zx-calendar__month-weekday {
6456
+ padding: var(--zx-space-2);
6457
+ color: var(--zx-color-text-muted);
6458
+ font-size: var(--zx-text-xs);
6459
+ font-weight: 650;
6460
+ text-align: center;
6461
+ text-transform: uppercase;
6462
+ letter-spacing: .04em;
6463
+ }
6464
+ .zx-calendar__month-weekdays .zx-calendar__month-weekday {
6465
+ grid-row: 1;
6466
+ }
6467
+ .zx-calendar__month-weekdays .zx-calendar__month-weekday:nth-last-child(7) {
6468
+ grid-column: 2;
6469
+ }
6470
+ .zx-calendar__month-weekdays .zx-calendar__month-weekday:nth-last-child(6) {
6471
+ grid-column: 3;
6472
+ }
6473
+ .zx-calendar__month-weekdays .zx-calendar__month-weekday:nth-last-child(5) {
6474
+ grid-column: 4;
6475
+ }
6476
+ .zx-calendar__month-weekdays .zx-calendar__month-weekday:nth-last-child(4) {
6477
+ grid-column: 5;
6478
+ }
6479
+ .zx-calendar__month-weekdays .zx-calendar__month-weekday:nth-last-child(3) {
6480
+ grid-column: 6;
6481
+ }
6482
+ .zx-calendar__month-weekdays .zx-calendar__month-weekday:nth-last-child(2) {
6483
+ grid-column: 7;
6484
+ }
6485
+ .zx-calendar__month-weekdays .zx-calendar__month-weekday:nth-last-child(1) {
6486
+ grid-column: 8;
6487
+ }
6488
+ .zx-calendar__month-weekdays:not(:has(.zx-calendar__month-week-gutter)) .zx-calendar__month-weekday:nth-last-child(7) {
6489
+ grid-column: 1;
6490
+ }
6491
+ .zx-calendar__month-weekdays:not(:has(.zx-calendar__month-week-gutter)) .zx-calendar__month-weekday:nth-last-child(6) {
6492
+ grid-column: 2;
6493
+ }
6494
+ .zx-calendar__month-weekdays:not(:has(.zx-calendar__month-week-gutter)) .zx-calendar__month-weekday:nth-last-child(5) {
6495
+ grid-column: 3;
6496
+ }
6497
+ .zx-calendar__month-weekdays:not(:has(.zx-calendar__month-week-gutter)) .zx-calendar__month-weekday:nth-last-child(4) {
6498
+ grid-column: 4;
6499
+ }
6500
+ .zx-calendar__month-weekdays:not(:has(.zx-calendar__month-week-gutter)) .zx-calendar__month-weekday:nth-last-child(3) {
6501
+ grid-column: 5;
6502
+ }
6503
+ .zx-calendar__month-weekdays:not(:has(.zx-calendar__month-week-gutter)) .zx-calendar__month-weekday:nth-last-child(2) {
6504
+ grid-column: 6;
6505
+ }
6506
+ .zx-calendar__month-weekdays:not(:has(.zx-calendar__month-week-gutter)) .zx-calendar__month-weekday:nth-last-child(1) {
6507
+ grid-column: 7;
6508
+ }
6509
+ .zx-calendar__month-week {
6510
+ min-block-size: 7.5rem;
6511
+ border-block-end: 1px solid var(--zx-color-border);
6512
+ }
6513
+ .zx-calendar__month-week-number {
6514
+ grid-row: 1 / span 2;
6515
+ border: 0;
6516
+ border-inline-end: 1px solid var(--zx-color-border);
6517
+ background: var(--zx-color-bg-muted);
6518
+ color: var(--zx-color-text-muted);
6519
+ font: inherit;
6520
+ font-size: var(--zx-text-xs);
6521
+ cursor: pointer;
6522
+ }
6523
+ .zx-calendar__month-days,
6524
+ .zx-calendar__month-events {
6525
+ grid-column: 2;
6526
+ display: grid;
6527
+ grid-template-columns: repeat(7, minmax(0, 1fr));
6528
+ }
6529
+ .zx-calendar__month-week:not(:has(.zx-calendar__month-week-number)) .zx-calendar__month-days,
6530
+ .zx-calendar__month-week:not(:has(.zx-calendar__month-week-number)) .zx-calendar__month-events {
6531
+ grid-column: 1;
6532
+ }
6533
+ .zx-calendar__month-days {
6534
+ grid-row: 1;
6535
+ }
6536
+ .zx-calendar__month-day {
6537
+ min-block-size: var(--zx-control-height);
6538
+ border: 0;
6539
+ border-inline-end: 1px solid var(--zx-color-border);
6540
+ background: var(--zx-color-bg-surface);
6541
+ color: var(--zx-color-text);
6542
+ padding: var(--zx-space-2);
6543
+ font: inherit;
6544
+ text-align: end;
6545
+ cursor: pointer;
6546
+ }
6547
+ .zx-calendar__month-day[data-other-month=true] {
6548
+ color: var(--zx-color-text-muted);
6549
+ background: var(--zx-color-bg-muted);
6550
+ }
6551
+ .zx-calendar__month-day[aria-current=date] {
6552
+ color: var(--zx-color-accent);
6553
+ font-weight: 750;
6554
+ box-shadow: inset 0 2px var(--zx-color-accent);
6555
+ }
6556
+ .zx-calendar__month-day:hover:not(:disabled) {
6557
+ background: var(--zx-color-bg-hover);
6558
+ }
6559
+ .zx-calendar__month-events {
6560
+ grid-row: 2;
6561
+ grid-auto-rows: calc(var(--zx-control-height) - var(--zx-space-2));
6562
+ align-content: start;
6563
+ gap: 2px 0;
6564
+ padding-block: var(--zx-space-1);
6565
+ }
6566
+ .zx-calendar__more {
6567
+ align-self: center;
6568
+ overflow: hidden;
6569
+ border: 0;
6570
+ background: transparent;
6571
+ color: var(--zx-color-accent);
6572
+ padding-inline: var(--zx-space-2);
6573
+ font: inherit;
6574
+ font-size: var(--zx-text-xs);
6575
+ text-align: start;
6576
+ text-overflow: ellipsis;
6577
+ white-space: nowrap;
6578
+ cursor: pointer;
6579
+ }
6580
+ .zx-calendar__year {
6581
+ display: grid;
6582
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
6583
+ gap: var(--zx-space-5);
6584
+ padding: var(--zx-space-5);
6585
+ }
6586
+ .zx-calendar__year-grid {
6587
+ display: grid;
6588
+ grid-template-columns: repeat(7, minmax(0, 1fr));
6589
+ gap: 2px;
6590
+ align-content: start;
6591
+ }
6592
+ .zx-calendar__year-heading {
6593
+ grid-column: 1 / -1;
6594
+ margin: 0 0 var(--zx-space-2);
6595
+ font-size: var(--zx-text-md);
6596
+ }
6597
+ .zx-calendar__year-weekday {
6598
+ color: var(--zx-color-text-muted);
6599
+ font-size: var(--zx-text-xs);
6600
+ font-weight: 650;
6601
+ text-align: center;
6602
+ }
6603
+ .zx-calendar__year-day,
6604
+ .zx-calendar__year-blank {
6605
+ aspect-ratio: 1;
6606
+ }
6607
+ .zx-calendar__year-day {
6608
+ display: grid;
6609
+ place-items: center;
6610
+ border: 0;
6611
+ border-radius: var(--zx-radius-sm);
6612
+ background: transparent;
6613
+ color: var(--zx-color-text);
6614
+ font: inherit;
6615
+ font-size: var(--zx-text-xs);
6616
+ cursor: pointer;
6617
+ }
6618
+ .zx-calendar__year-day[data-activity="1"] {
6619
+ background: color-mix(in srgb, var(--zx-color-accent) 10%, var(--zx-color-bg-surface));
6620
+ }
6621
+ .zx-calendar__year-day[data-activity="2"] {
6622
+ background: color-mix(in srgb, var(--zx-color-accent) 20%, var(--zx-color-bg-surface));
6623
+ }
6624
+ .zx-calendar__year-day[data-activity="3"] {
6625
+ background: color-mix(in srgb, var(--zx-color-accent) 32%, var(--zx-color-bg-surface));
6626
+ font-weight: 700;
6627
+ }
6628
+ .zx-calendar__year-day[aria-current=date] {
6629
+ outline: 2px solid var(--zx-color-accent);
6630
+ outline-offset: -2px;
6631
+ }
6632
+ .zx-calendar__year-day:hover:not(:disabled) {
6633
+ background: var(--zx-color-bg-hover);
6634
+ }
6635
+ .zx-calendar__loading {
6636
+ position: absolute;
6637
+ inset: 0;
6638
+ z-index: 10;
6639
+ display: grid;
6640
+ place-items: center;
6641
+ background: color-mix(in srgb, var(--zx-color-bg-surface) 82%, transparent);
6642
+ color: var(--zx-color-text);
6643
+ font-weight: 650;
6644
+ }
6645
+ .zx-calendar__loading[hidden] {
6646
+ display: none;
6647
+ }
6648
+ .zx-calendar[data-state=loading] .zx-calendar__body {
6649
+ opacity: .55;
6650
+ }
6651
+ .zx-calendar__status {
6652
+ position: absolute;
6653
+ inline-size: 1px;
6654
+ block-size: 1px;
6655
+ overflow: hidden;
6656
+ clip-path: inset(50%);
6657
+ white-space: nowrap;
6658
+ }
6659
+ @container (max-width: 44rem) {
6660
+ .zx-calendar__toolbar {
6661
+ grid-template-columns: 1fr auto;
6662
+ align-items: start;
6663
+ }
6664
+ .zx-calendar__navigation {
6665
+ grid-column: 1;
6666
+ grid-row: 1;
6667
+ }
6668
+ .zx-calendar__heading {
6669
+ grid-column: 1 / -1;
6670
+ grid-row: 2;
6671
+ justify-self: start;
6672
+ max-inline-size: 100%;
6673
+ text-align: start;
6674
+ }
6675
+ .zx-calendar__commands {
6676
+ display: contents;
6677
+ }
6678
+ .zx-calendar__views {
6679
+ grid-column: 1 / -1;
6680
+ grid-row: 3;
6681
+ max-inline-size: 100%;
6682
+ }
6683
+ .zx-calendar__new {
6684
+ grid-column: 2;
6685
+ grid-row: 1;
6686
+ justify-self: end;
6687
+ }
6688
+ .zx-calendar__view-button {
6689
+ flex: 1 0 auto;
6690
+ }
6691
+ .zx-calendar__new span {
6692
+ position: absolute;
6693
+ inline-size: 1px;
6694
+ block-size: 1px;
6695
+ overflow: hidden;
6696
+ clip-path: inset(50%);
6697
+ }
6698
+ .zx-calendar__agenda-day {
6699
+ grid-template-columns: 1fr;
6700
+ }
6701
+ .zx-calendar__agenda-heading {
6702
+ position: sticky;
6703
+ inset-block-start: 0;
6704
+ z-index: 3;
6705
+ border-block-end: 1px solid var(--zx-color-border);
6706
+ }
6707
+ .zx-calendar__event[data-variant=agenda] .zx-calendar__event-action {
6708
+ grid-template-columns: 5.5rem minmax(0, 1fr);
6709
+ }
6710
+ .zx-calendar__year {
6711
+ grid-template-columns: 1fr;
6712
+ padding: var(--zx-space-3);
6713
+ }
6714
+ }
6715
+ [data-zx-density=compact] .zx-calendar {
6716
+ --zx-calendar-slot-height: 20px;
6717
+ }
6718
+ @media (prefers-reduced-motion: no-preference) {
6719
+ .zx-calendar__event {
6720
+ transition: transform var(--zx-dur-fast) var(--zx-ease), opacity var(--zx-dur-fast) var(--zx-ease);
6721
+ }
6722
+ .zx-calendar__toolbar-button,
6723
+ .zx-calendar__view-button,
6724
+ .zx-calendar__new {
6725
+ transition: background var(--zx-dur-fast) var(--zx-ease), border-color var(--zx-dur-fast) var(--zx-ease);
6726
+ }
6727
+ }
6728
+ @media (forced-colors: active) {
6729
+ .zx-calendar__event-action {
6730
+ border: 1px solid CanvasText;
6731
+ border-inline-start-width: 4px;
6732
+ }
6733
+ .zx-calendar__now {
6734
+ border-color: Highlight;
6735
+ }
6736
+ .zx-calendar__year-day[data-activity] {
6737
+ outline: 1px solid CanvasText;
6738
+ }
6739
+ }
6740
+
6741
+ /* src/components/view/record-view.css */
6742
+ .zx-record-view {
6743
+ min-inline-size: 0;
6744
+ color: var(--zx-color-text);
6745
+ }
6746
+ .zx-record-view__toolbar {
6747
+ display: flex;
6748
+ align-items: center;
6749
+ justify-content: flex-end;
6750
+ gap: var(--zx-space-2);
6751
+ margin-block-end: var(--zx-space-2);
6752
+ }
6753
+ .zx-record-view__field-controls {
6754
+ position: relative;
6755
+ inline-size: max-content;
6756
+ margin-inline-start: auto;
6757
+ }
6758
+ .zx-record-view__field-controls > summary {
6759
+ display: inline-flex;
6760
+ align-items: center;
6761
+ gap: var(--zx-space-1);
6762
+ cursor: pointer;
6763
+ list-style: none;
6764
+ }
6765
+ .zx-record-view__field-controls > summary::-webkit-details-marker {
6766
+ display: none;
6767
+ }
6768
+ .zx-record-view__field-list {
6769
+ position: absolute;
6770
+ z-index: 4;
6771
+ inset-block-start: calc(100% + var(--zx-space-1));
6772
+ inset-inline-end: 0;
6773
+ display: grid;
6774
+ min-inline-size: 230px;
6775
+ max-block-size: min(360px, 70vh);
6776
+ overflow: auto;
6777
+ border: 1px solid var(--zx-color-border-strong);
6778
+ border-radius: var(--zx-radius-md);
6779
+ background: var(--zx-color-bg-raised);
6780
+ box-shadow: var(--zx-overlay-shadow);
6781
+ padding: var(--zx-space-2);
6782
+ }
6783
+ .zx-record-view__field-option {
6784
+ display: grid;
6785
+ grid-template-columns: minmax(0, 1fr) auto;
6786
+ align-items: center;
6787
+ gap: var(--zx-space-2);
6788
+ min-block-size: var(--zx-control-height);
6789
+ }
6790
+ .zx-record-view__field-option > label {
6791
+ display: flex;
6792
+ align-items: center;
6793
+ gap: var(--zx-space-2);
6794
+ min-inline-size: 0;
6795
+ }
6796
+ .zx-record-view__field-option > label > span {
6797
+ overflow: hidden;
6798
+ text-overflow: ellipsis;
6799
+ white-space: nowrap;
6800
+ }
6801
+ .zx-record-view__field-order {
6802
+ display: inline-flex;
6803
+ }
6804
+ .zx-record-view__field-move {
6805
+ display: inline-grid;
6806
+ place-items: center;
6807
+ inline-size: 26px;
6808
+ block-size: 26px;
6809
+ border: 0;
6810
+ border-radius: var(--zx-radius-sm);
6811
+ background: transparent;
6812
+ color: var(--zx-color-text-muted);
6813
+ cursor: pointer;
6814
+ }
6815
+ .zx-record-view__field-move:hover:not(:disabled) {
6816
+ background: var(--zx-color-bg-hover);
6817
+ color: var(--zx-color-text);
6818
+ }
6819
+ .zx-record-view__field-move:focus-visible {
6820
+ outline: none;
6821
+ box-shadow: var(--zx-focus-ring);
6822
+ }
6823
+ .zx-record-view__field-move:disabled {
6824
+ opacity: .35;
6825
+ cursor: not-allowed;
6826
+ }
6827
+ .zx-record-view[data-loading=true] {
6828
+ cursor: progress;
6829
+ }
6830
+ .zx-record-view[data-loading=true] > :not(.zx-record-view__toolbar) {
6831
+ opacity: .62;
6832
+ }
6833
+ @media (prefers-reduced-motion: no-preference) {
6834
+ .zx-record-view__field-move,
6835
+ .zx-record-view[data-loading=true] > :not(.zx-record-view__toolbar) {
6836
+ transition:
6837
+ color var(--zx-dur-fast) var(--zx-ease),
6838
+ background var(--zx-dur-fast) var(--zx-ease),
6839
+ opacity var(--zx-dur-fast) var(--zx-ease);
6840
+ }
6841
+ }
6842
+
6843
+ /* src/components/table/table.css */
6844
+ .zx-table {
6845
+ min-inline-size: 0;
6846
+ }
6847
+ .zx-table__column-controls {
6848
+ position: relative;
6849
+ inline-size: max-content;
6850
+ margin: 0 0 var(--zx-space-2) auto;
6851
+ }
6852
+ .zx-table__reorder-status {
6853
+ position: absolute;
6854
+ inline-size: 1px;
6855
+ block-size: 1px;
6856
+ overflow: hidden;
6857
+ clip-path: inset(50%);
6858
+ }
6859
+ .zx-table__column-controls > summary {
6860
+ display: inline-flex;
6861
+ align-items: center;
6862
+ gap: var(--zx-space-2);
6863
+ list-style: none;
6864
+ cursor: pointer;
6865
+ }
6866
+ .zx-table__column-controls > summary::-webkit-details-marker {
6867
+ display: none;
6868
+ }
6869
+ .zx-table__column-list {
6870
+ position: absolute;
6871
+ z-index: 4;
6872
+ inset-block-start: calc(100% + var(--zx-space-1));
6873
+ inset-inline-end: 0;
6874
+ display: grid;
6875
+ min-inline-size: 190px;
6876
+ border: 1px solid var(--zx-color-overlay-border);
6877
+ border-radius: var(--zx-radius-md);
6878
+ background: var(--zx-color-overlay-surface);
6879
+ -webkit-backdrop-filter: var(--zx-glass-filter-overlay);
6880
+ backdrop-filter: var(--zx-glass-filter-overlay);
6881
+ box-shadow: var(--zx-glass-raised-shadow);
6882
+ padding: var(--zx-space-2);
6883
+ max-block-size: min(360px, 70vh);
6884
+ overflow: auto;
6885
+ }
6886
+ @media (prefers-reduced-transparency: reduce) {
6887
+ .zx-table__column-list {
6888
+ border-color: var(--zx-color-border-strong);
6889
+ background: var(--zx-color-bg-raised);
6890
+ -webkit-backdrop-filter: none;
6891
+ backdrop-filter: none;
6892
+ box-shadow: var(--zx-overlay-shadow);
6893
+ }
6894
+ }
6895
+ .zx-table__column-option {
6896
+ display: grid;
6897
+ grid-template-columns: minmax(0, 1fr) auto;
6898
+ align-items: center;
6899
+ gap: var(--zx-space-2);
6900
+ min-block-size: var(--zx-control-height);
6901
+ border-radius: var(--zx-radius-sm);
6902
+ padding-inline: var(--zx-space-2);
6903
+ }
6904
+ .zx-table__column-option:hover {
6905
+ background: var(--zx-color-bg-hover);
6906
+ }
6907
+ .zx-table__column-option > label,
6908
+ .zx-table__column-label {
6909
+ display: flex;
6910
+ align-items: center;
6911
+ gap: var(--zx-space-2);
6912
+ min-inline-size: 0;
6913
+ }
6914
+ .zx-table__column-option > label > span,
6915
+ .zx-table__column-label {
6916
+ overflow: hidden;
6917
+ text-overflow: ellipsis;
6918
+ white-space: nowrap;
6919
+ }
6920
+ .zx-table__column-order {
6921
+ display: inline-flex;
6922
+ }
6923
+ .zx-table__column-move {
6924
+ display: inline-grid;
6925
+ place-items: center;
6926
+ inline-size: 26px;
6927
+ block-size: 26px;
6928
+ border: 0;
6929
+ border-radius: var(--zx-radius-sm);
6930
+ background: transparent;
6931
+ color: var(--zx-color-text-muted);
6932
+ cursor: pointer;
6933
+ }
6934
+ .zx-table__column-move:hover:not(:disabled) {
6935
+ background: var(--zx-color-bg-hover);
6936
+ color: var(--zx-color-text);
6937
+ }
6938
+ .zx-table__column-move:focus-visible {
6939
+ outline: none;
6940
+ box-shadow: var(--zx-focus-ring);
6941
+ }
6942
+ .zx-table__column-move:disabled {
6943
+ opacity: .35;
6944
+ cursor: not-allowed;
6945
+ }
6946
+ .zx-table__column-status {
6947
+ position: absolute;
6948
+ inline-size: 1px;
6949
+ block-size: 1px;
6950
+ overflow: hidden;
6951
+ clip-path: inset(50%);
6952
+ }
6953
+ @media (prefers-reduced-motion: no-preference) {
6954
+ .zx-table__column-move {
6955
+ transition:
6956
+ color var(--zx-dur-fast) var(--zx-ease),
6957
+ background var(--zx-dur-fast) var(--zx-ease),
6958
+ opacity var(--zx-dur-fast) var(--zx-ease);
6959
+ }
6960
+ }
6961
+ .zx-table__reorder-column,
6962
+ .zx-table__reorder-header,
6963
+ .zx-table__reorder-cell {
6964
+ inline-size: var(--zx-control-height);
6965
+ text-align: center;
6966
+ }
6967
+ .zx-table__row-handle {
6968
+ display: inline-grid;
6969
+ place-items: center;
6970
+ inline-size: 26px;
6971
+ block-size: 26px;
6972
+ min-block-size: 0;
6973
+ border: 0;
6974
+ border-radius: var(--zx-radius-sm);
6975
+ background: transparent;
6976
+ padding: 0;
6977
+ color: var(--zx-color-text-muted);
6978
+ cursor: grab;
6979
+ }
6980
+ .zx-table__row-handle:hover,
6981
+ .zx-table__row-handle[aria-pressed=true] {
6982
+ background: var(--zx-color-bg-hover);
6983
+ color: var(--zx-color-text);
6984
+ }
6985
+ .zx-table__row-handle:active {
6986
+ cursor: grabbing;
6987
+ }
6988
+ .zx-table__body tr[data-dragging] {
6989
+ opacity: .55;
6990
+ }
6991
+ .zx-table__body tr[data-drop=before] {
6992
+ box-shadow: inset 0 2px 0 var(--zx-color-accent);
6993
+ }
6994
+ .zx-table__body tr[data-drop=after] {
6995
+ box-shadow: inset 0 -2px 0 var(--zx-color-accent);
6996
+ }
6997
+ .zx-table__scroll {
6998
+ position: relative;
6999
+ max-inline-size: 100%;
7000
+ overflow: auto;
7001
+ border: 1px solid var(--zx-color-border);
7002
+ border-radius: var(--zx-radius-md);
7003
+ background: var(--zx-color-bg-surface);
7004
+ scrollbar-gutter: stable;
7005
+ }
7006
+ .zx-table[data-loading=true] .zx-table__body {
7007
+ opacity: 0.5;
7008
+ }
7009
+ .zx-table[data-loading=true] .zx-table__scroll::after {
7010
+ content: "";
7011
+ position: sticky;
7012
+ inset-block-start: 0;
7013
+ inset-inline: 0;
7014
+ display: block;
7015
+ block-size: 2px;
7016
+ margin-block-end: -2px;
7017
+ background: var(--zx-color-accent);
7018
+ opacity: 0.85;
7019
+ z-index: 2;
7020
+ }
7021
+ @media (prefers-reduced-motion: no-preference) {
7022
+ .zx-table[data-loading=true] .zx-table__scroll::after {
7023
+ background:
7024
+ linear-gradient(
7025
+ 90deg,
7026
+ transparent 0%,
7027
+ var(--zx-color-accent) 50%,
7028
+ transparent 100%);
7029
+ background-size: 40% 100%;
7030
+ background-repeat: no-repeat;
7031
+ animation: zx-table-loading 1.1s var(--zx-ease) infinite;
7032
+ }
7033
+ }
7034
+ @keyframes zx-table-loading {
7035
+ from {
7036
+ background-position: -40% 0;
7037
+ }
7038
+ to {
7039
+ background-position: 140% 0;
7040
+ }
7041
+ }
7042
+ .zx-table__table {
7043
+ inline-size: 100%;
7044
+ border-spacing: 0;
7045
+ background: var(--zx-color-bg-surface);
7046
+ color: var(--zx-color-text);
7047
+ }
7048
+ .zx-table__table[data-layout=auto] {
7049
+ min-inline-size: max-content;
7050
+ }
7051
+ .zx-table__table[data-layout=fixed] {
7052
+ table-layout: fixed;
7053
+ }
7054
+ .zx-table__selection-column {
7055
+ inline-size: var(--zx-control-height);
7056
+ }
7057
+ .zx-table th,
7058
+ .zx-table td {
7059
+ border-block-end: 1px solid var(--zx-table-border-color, var(--zx-color-border));
7060
+ padding: var(--zx-space-2) var(--zx-space-3);
7061
+ text-align: start;
7062
+ vertical-align: middle;
7063
+ }
7064
+ .zx-table th {
7065
+ background: var(--zx-table-header-bg, var(--zx-color-bg-raised));
7066
+ color: var(--zx-color-text-muted);
7067
+ font-size: var(--zx-text-sm);
7068
+ font-weight: 650;
7069
+ }
7070
+ .zx-table__scroll[data-sticky-header=true] th {
7071
+ position: sticky;
7072
+ z-index: 1;
7073
+ inset-block-start: 0;
7074
+ }
7075
+ .zx-table th[data-align=center],
7076
+ .zx-table td[data-align=center] {
7077
+ text-align: center;
7078
+ }
7079
+ .zx-table th[data-align=end],
7080
+ .zx-table td[data-align=end],
7081
+ .zx-table th[data-align=right],
7082
+ .zx-table td[data-align=right] {
7083
+ text-align: end;
7084
+ }
7085
+ .zx-table th[data-align=left],
7086
+ .zx-table td[data-align=left] {
7087
+ text-align: left;
7088
+ }
7089
+ .zx-table__sort-button {
7090
+ display: flex;
7091
+ align-items: center;
7092
+ justify-content: space-between;
7093
+ gap: var(--zx-space-2);
7094
+ inline-size: 100%;
7095
+ min-block-size: auto;
7096
+ border: 0;
7097
+ border-radius: var(--zx-radius-sm);
7098
+ background: inherit;
7099
+ color: inherit;
7100
+ padding: 0;
7101
+ text-align: inherit;
7102
+ }
7103
+ .zx-table__sort-button:hover {
7104
+ background: var(--zx-table-row-hover-bg, var(--zx-color-bg-hover));
7105
+ color: var(--zx-color-text);
7106
+ }
7107
+ .zx-table__sort-button:focus-visible {
7108
+ box-shadow: var(--zx-focus-ring);
7109
+ }
7110
+ .zx-table th[aria-sort=ascending] .zx-table__sort-button::after {
7111
+ content: "\2191";
7112
+ color: var(--zx-color-accent);
7113
+ }
7114
+ .zx-table th[aria-sort=descending] .zx-table__sort-button::after {
7115
+ content: "\2193";
7116
+ color: var(--zx-color-accent);
7117
+ }
7118
+ .zx-table__body tr:last-child td {
7119
+ border-block-end: 0;
7120
+ }
7121
+ .zx-table__scroll[data-zebra=true] .zx-table__body tr:nth-child(even):not([aria-selected=true]) {
7122
+ background: var(--zx-color-bg-page);
7123
+ }
7124
+ .zx-table__body tr[aria-selected=true] {
7125
+ background: var(--zx-table-row-selected-bg, var(--zx-color-bg-selected));
7126
+ }
7127
+ .zx-table__body tr[data-row]:hover {
7128
+ background: var(--zx-color-bg-hover);
7129
+ }
7130
+ .zx-table__checkbox {
7131
+ inline-size: var(--zx-space-4);
7132
+ min-block-size: auto;
7133
+ block-size: var(--zx-space-4);
7134
+ margin: 0;
7135
+ accent-color: var(--zx-color-accent);
7136
+ }
7137
+ .zx-table__selection-header,
7138
+ .zx-table__selection-cell {
7139
+ inline-size: var(--zx-control-height);
7140
+ text-align: center;
7141
+ }
7142
+ .zx-table__empty {
7143
+ padding-block: var(--zx-space-6);
7144
+ color: var(--zx-color-text-muted);
7145
+ text-align: center;
7146
+ }
7147
+ .zx-table__tree-cell {
7148
+ display: flex;
7149
+ min-inline-size: 0;
7150
+ align-items: center;
7151
+ gap: var(--zx-space-1);
7152
+ padding-inline-start: calc(var(--zx-table-depth, 0) * var(--zx-space-4));
7153
+ }
7154
+ .zx-table__tree-toggle,
7155
+ .zx-table__tree-spacer {
7156
+ inline-size: 24px;
7157
+ block-size: 24px;
7158
+ flex: 0 0 24px;
7159
+ }
7160
+ .zx-table__tree-toggle {
7161
+ display: inline-grid;
7162
+ min-block-size: 0;
7163
+ place-items: center;
7164
+ padding: 0;
7165
+ border: 0;
7166
+ border-radius: var(--zx-radius-sm);
7167
+ background: transparent;
7168
+ color: var(--zx-color-text-muted);
7169
+ cursor: pointer;
7170
+ }
7171
+ .zx-table__tree-toggle:hover {
7172
+ background: var(--zx-color-bg-hover);
7173
+ color: var(--zx-color-text);
7174
+ }
7175
+ .zx-table__tree-toggle:focus-visible {
7176
+ outline: 0;
7177
+ box-shadow: var(--zx-focus-ring);
7178
+ }
7179
+ .zx-table__cell-content {
7180
+ min-inline-size: 0;
7181
+ }
7182
+ .zx-table[data-edit-mode] .zx-table__body td {
7183
+ block-size: var(--zx-control-height);
7184
+ }
7185
+ .zx-table__body td[data-editable=true] {
7186
+ cursor: cell;
7187
+ }
7188
+ .zx-table__body td[data-editable=true]:focus-visible {
7189
+ outline: 0;
7190
+ box-shadow: inset var(--zx-focus-ring);
7191
+ }
7192
+ .zx-table__body td[data-editing=true] {
7193
+ position: relative;
7194
+ }
7195
+ .zx-table__cell-shadow {
7196
+ visibility: hidden;
7197
+ }
7198
+ .zx-table__editor {
7199
+ position: absolute;
7200
+ inset: 0;
7201
+ display: flex;
7202
+ align-items: center;
7203
+ gap: var(--zx-space-1);
7204
+ padding-inline: var(--zx-space-1);
7205
+ background: var(--zx-color-bg-surface);
7206
+ }
7207
+ .zx-table__editor > * {
7208
+ inline-size: 100%;
7209
+ }
7210
+ .zx-table__editor[data-editor=checkbox] {
7211
+ justify-content: center;
7212
+ }
7213
+ .zx-table__editor[data-editor=checkbox] > * {
7214
+ inline-size: auto;
7215
+ }
7216
+ .zx-table__editor-input {
7217
+ inline-size: 100%;
7218
+ min-block-size: 0;
7219
+ block-size: var(--zx-control-height);
7220
+ padding-inline: var(--zx-space-2);
7221
+ }
7222
+ .zx-table__editor-textarea {
7223
+ block-size: 100%;
7224
+ padding-block: var(--zx-space-1);
7225
+ resize: none;
7226
+ }
7227
+ .zx-table__body td[data-invalid=true] .zx-table__editor {
7228
+ box-shadow: inset 0 0 0 1px var(--zx-color-danger);
7229
+ }
7230
+ .zx-table__body td[data-invalid=true] .zx-table__editor-input {
7231
+ border-color: var(--zx-color-danger);
7232
+ }
7233
+ .zx-table__message {
7234
+ padding: var(--zx-space-2) var(--zx-space-3);
7235
+ color: var(--zx-color-danger);
7236
+ font-size: var(--zx-text-sm);
7237
+ }
7238
+ .zx-table__message:empty {
7239
+ display: none;
7240
+ }
7241
+ .zx-table[data-stacked] .zx-table__table,
7242
+ .zx-table[data-stacked] .zx-table__body,
7243
+ .zx-table[data-stacked] .zx-table__body > tr {
7244
+ display: block;
7245
+ inline-size: 100%;
7246
+ }
7247
+ .zx-table[data-stacked] .zx-table__head,
7248
+ .zx-table[data-stacked] .zx-table__columns {
7249
+ display: none;
7250
+ }
7251
+ .zx-table[data-stacked] .zx-table__body > tr {
7252
+ padding-block: var(--zx-space-3);
7253
+ padding-inline: var(--zx-space-4);
7254
+ border-block-end: 1px solid var(--zx-color-border);
7255
+ }
7256
+ .zx-table[data-stacked] .zx-table__body td {
7257
+ display: flex;
7258
+ align-items: baseline;
7259
+ justify-content: space-between;
7260
+ gap: var(--zx-space-4);
7261
+ inline-size: auto;
7262
+ padding-block: var(--zx-space-1);
7263
+ padding-inline: 0;
7264
+ border: 0;
7265
+ text-align: start;
7266
+ white-space: normal;
7267
+ }
7268
+ .zx-table[data-stacked] .zx-table__body td[data-label]::before {
7269
+ content: attr(data-label);
7270
+ flex: none;
7271
+ color: var(--zx-color-text-muted);
7272
+ font-size: var(--zx-text-sm);
7273
+ }
7274
+ .zx-table[data-stacked] .zx-table__body td[data-popin=false] {
7275
+ display: block;
7276
+ padding-block-end: var(--zx-space-2);
7277
+ font-size: var(--zx-text-lg);
7278
+ font-weight: 600;
7279
+ }
7280
+ .zx-table[data-stacked] .zx-table__body td[data-popin=false]::before {
7281
+ content: none;
7282
+ }
7283
+ .zx-table[data-stacked] .zx-table__selection-cell {
7284
+ justify-content: flex-start;
7285
+ }
7286
+ .zx-table[data-stacked] .zx-table__reorder-cell {
5742
7287
  justify-content: flex-start;
5743
7288
  }
5744
- .zx-table[data-stacked] .zx-table__reorder-cell {
5745
- justify-content: flex-start;
7289
+ .zx-table[data-stacked] .zx-table__empty-row {
7290
+ display: block;
7291
+ }
7292
+ .zx-table__more {
7293
+ display: block;
7294
+ inline-size: 100%;
7295
+ margin-block-start: var(--zx-space-2);
7296
+ border: 1px dashed var(--zx-color-border);
7297
+ background: none;
7298
+ color: var(--zx-color-text-muted);
7299
+ font-size: var(--zx-control-font-size);
7300
+ }
7301
+ .zx-table__more:hover {
7302
+ border-color: var(--zx-color-border-strong);
7303
+ background: var(--zx-color-bg-hover);
7304
+ color: var(--zx-color-text);
7305
+ }
7306
+
7307
+ /* src/components/table-view/table-view.css */
7308
+ .zx-table-view {
7309
+ min-inline-size: 0;
7310
+ }
7311
+ .zx-table-view__table {
7312
+ min-inline-size: 0;
7313
+ }
7314
+ .zx-table-view[data-loading=true] .zx-table__column-controls {
7315
+ pointer-events: none;
7316
+ opacity: .62;
7317
+ }
7318
+ @media (prefers-reduced-motion: no-preference) {
7319
+ .zx-table-view .zx-table__column-controls {
7320
+ transition: opacity var(--zx-dur-fast) var(--zx-ease);
7321
+ }
7322
+ }
7323
+
7324
+ /* src/components/card-view/card-view.css */
7325
+ .zx-card-view {
7326
+ --zx-card-view-min-card-width: 18rem;
7327
+ --zx-card-view-column-basis: 0%;
7328
+ inline-size: 100%;
7329
+ min-inline-size: 0;
7330
+ container-type: inline-size;
7331
+ }
7332
+ .zx-card-view__toolbar {
7333
+ flex-wrap: wrap;
7334
+ }
7335
+ .zx-card-view__sort {
7336
+ display: inline-flex;
7337
+ align-items: center;
7338
+ gap: var(--zx-space-2);
7339
+ color: var(--zx-color-text-muted);
7340
+ font-size: var(--zx-text-sm);
7341
+ }
7342
+ .zx-card-view__sort[hidden] {
7343
+ display: none;
7344
+ }
7345
+ .zx-card-view__sort select {
7346
+ min-block-size: calc(var(--zx-control-height) - var(--zx-space-1));
7347
+ max-inline-size: min(18rem, 65vw);
7348
+ border: 1px solid var(--zx-color-border);
7349
+ border-radius: var(--zx-radius-sm);
7350
+ background: var(--zx-color-bg-surface);
7351
+ color: var(--zx-color-text);
7352
+ padding-inline: var(--zx-space-2);
7353
+ font: inherit;
7354
+ }
7355
+ .zx-card-view__sort select:focus-visible {
7356
+ outline: none;
7357
+ box-shadow: var(--zx-focus-ring);
7358
+ }
7359
+ .zx-card-view__content,
7360
+ .zx-card-view__group {
7361
+ min-inline-size: 0;
7362
+ }
7363
+ .zx-card-view__group + .zx-card-view__group {
7364
+ margin-block-start: var(--zx-space-6);
7365
+ }
7366
+ .zx-card-view__group-heading {
7367
+ margin: 0 0 var(--zx-space-3);
7368
+ color: var(--zx-color-text);
7369
+ font-size: var(--zx-text-lg);
7370
+ line-height: 1.35;
7371
+ }
7372
+ .zx-card-view__list {
7373
+ display: grid;
7374
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, max(var(--zx-card-view-min-card-width), calc(var(--zx-card-view-column-basis) - var(--zx-space-4)))), 1fr));
7375
+ gap: var(--zx-space-4);
7376
+ min-inline-size: 0;
7377
+ margin: 0;
7378
+ padding: 0;
7379
+ list-style: none;
7380
+ }
7381
+ .zx-record-card {
7382
+ position: relative;
7383
+ display: grid;
7384
+ min-inline-size: 0;
7385
+ overflow: hidden;
7386
+ border-radius: var(--zx-radius-lg);
7387
+ color: var(--zx-color-text);
7388
+ }
7389
+ .zx-record-card[data-variant=outlined] {
7390
+ border: 1px solid var(--zx-color-border);
7391
+ background: var(--zx-color-bg-surface);
7392
+ }
7393
+ .zx-record-card[data-variant=raised] {
7394
+ border: 1px solid var(--zx-color-glass-border);
7395
+ background: var(--zx-color-glass-surface);
7396
+ -webkit-backdrop-filter: blur(var(--zx-glass-blur)) saturate(var(--zx-glass-saturation));
7397
+ backdrop-filter: blur(var(--zx-glass-blur)) saturate(var(--zx-glass-saturation));
7398
+ box-shadow: var(--zx-glass-raised-shadow);
7399
+ }
7400
+ .zx-record-card[data-variant=filled] {
7401
+ border: 1px solid var(--zx-color-border);
7402
+ background: var(--zx-color-bg-muted);
7403
+ }
7404
+ .zx-record-card:hover {
7405
+ border-color: var(--zx-color-border-strong);
7406
+ }
7407
+ .zx-record-card:focus-visible {
7408
+ outline: none;
7409
+ box-shadow: var(--zx-focus-ring);
7410
+ }
7411
+ .zx-record-card[aria-selected=true] {
7412
+ border-color: var(--zx-color-accent);
7413
+ box-shadow: inset 0 0 0 1px var(--zx-color-accent);
7414
+ }
7415
+ .zx-record-card__preview {
7416
+ position: relative;
7417
+ display: grid;
7418
+ place-items: center;
7419
+ min-inline-size: 0;
7420
+ aspect-ratio: 16 / 9;
7421
+ overflow: hidden;
7422
+ border-block-end: 1px solid var(--zx-color-border);
7423
+ background: var(--zx-color-bg-muted);
7424
+ color: var(--zx-color-text-placeholder);
7425
+ }
7426
+ .zx-record-card__preview > :not(.zx-record-card__preview-fallback) {
7427
+ position: relative;
7428
+ z-index: 1;
7429
+ inline-size: 100%;
7430
+ block-size: 100%;
7431
+ }
7432
+ .zx-record-card__preview-image {
7433
+ display: block;
7434
+ }
7435
+ .zx-record-card__preview-image[hidden] {
7436
+ display: none;
7437
+ }
7438
+ .zx-record-card__preview-fallback {
7439
+ position: absolute;
7440
+ inset: 0;
7441
+ display: grid;
7442
+ place-items: center;
7443
+ }
7444
+ .zx-record-card__body {
7445
+ display: grid;
7446
+ align-content: start;
7447
+ gap: var(--zx-space-4);
7448
+ min-inline-size: 0;
7449
+ padding: var(--zx-space-4);
7450
+ }
7451
+ .zx-record-card__header {
7452
+ display: flex;
7453
+ align-items: flex-start;
7454
+ gap: var(--zx-space-3);
7455
+ min-inline-size: 0;
7456
+ }
7457
+ .zx-record-card__selection {
7458
+ display: inline-grid;
7459
+ flex: none;
7460
+ place-items: center;
7461
+ min-block-size: 1.5rem;
7462
+ cursor: pointer;
7463
+ }
7464
+ .zx-record-card__selection input {
7465
+ inline-size: 1rem;
7466
+ block-size: 1rem;
7467
+ margin: 0;
7468
+ accent-color: var(--zx-color-accent);
7469
+ }
7470
+ .zx-record-card__selection input:focus-visible {
7471
+ outline: none;
7472
+ box-shadow: var(--zx-focus-ring);
7473
+ }
7474
+ .zx-record-card__titles {
7475
+ flex: 1 1 auto;
7476
+ min-inline-size: 0;
5746
7477
  }
5747
- .zx-table[data-stacked] .zx-table__empty-row {
5748
- display: block;
7478
+ .zx-record-card__heading {
7479
+ margin: 0;
7480
+ overflow-wrap: anywhere;
7481
+ font-size: var(--zx-text-lg);
7482
+ font-weight: 700;
7483
+ line-height: 1.35;
5749
7484
  }
5750
- .zx-table__more {
5751
- display: block;
5752
- inline-size: 100%;
5753
- margin-block-start: var(--zx-space-2);
5754
- border: 1px dashed var(--zx-color-border);
5755
- background: none;
7485
+ .zx-record-card__primary,
7486
+ .zx-record-card__title {
7487
+ color: inherit;
7488
+ }
7489
+ .zx-record-card__primary {
7490
+ text-decoration: none;
7491
+ }
7492
+ .zx-record-card__primary:hover {
7493
+ color: var(--zx-color-accent-hover);
7494
+ text-decoration: underline;
7495
+ }
7496
+ .zx-record-card__primary:focus-visible {
7497
+ border-radius: var(--zx-radius-sm);
7498
+ outline: none;
7499
+ box-shadow: var(--zx-focus-ring);
7500
+ }
7501
+ .zx-record-card__subtitle {
7502
+ margin: var(--zx-space-1) 0 0;
7503
+ overflow-wrap: anywhere;
5756
7504
  color: var(--zx-color-text-muted);
5757
- font-size: var(--zx-control-font-size);
7505
+ font-size: var(--zx-text-sm);
7506
+ line-height: 1.45;
5758
7507
  }
5759
- .zx-table__more:hover {
7508
+ .zx-record-card__actions {
7509
+ display: flex;
7510
+ flex: none;
7511
+ flex-wrap: wrap;
7512
+ align-items: center;
7513
+ justify-content: flex-end;
7514
+ gap: var(--zx-space-1);
7515
+ }
7516
+ .zx-record-card__action {
7517
+ display: inline-flex;
7518
+ align-items: center;
7519
+ justify-content: center;
7520
+ gap: var(--zx-space-1);
7521
+ min-block-size: calc(var(--zx-control-height) - var(--zx-space-1));
7522
+ border: 1px solid var(--zx-color-border);
7523
+ border-radius: var(--zx-radius-sm);
7524
+ background: var(--zx-color-bg-surface);
7525
+ color: var(--zx-color-text);
7526
+ padding-inline: var(--zx-space-2);
7527
+ font: inherit;
7528
+ font-size: var(--zx-text-sm);
7529
+ line-height: 1;
7530
+ text-decoration: none;
7531
+ cursor: pointer;
7532
+ }
7533
+ .zx-record-card__action:hover:not(:disabled) {
5760
7534
  border-color: var(--zx-color-border-strong);
5761
7535
  background: var(--zx-color-bg-hover);
7536
+ }
7537
+ .zx-record-card__action:focus-visible {
7538
+ outline: none;
7539
+ box-shadow: var(--zx-focus-ring);
7540
+ }
7541
+ .zx-record-card__action:disabled {
7542
+ color: var(--zx-color-text-placeholder);
7543
+ cursor: not-allowed;
7544
+ }
7545
+ .zx-record-card__metadata {
7546
+ display: grid;
7547
+ grid-template-columns: repeat(2, minmax(0, 1fr));
7548
+ gap: var(--zx-space-3) var(--zx-space-4);
7549
+ min-inline-size: 0;
7550
+ margin: 0;
7551
+ }
7552
+ .zx-record-card__field {
7553
+ display: grid;
7554
+ align-content: start;
7555
+ gap: var(--zx-space-1);
7556
+ min-inline-size: 0;
7557
+ }
7558
+ .zx-record-card__label {
7559
+ overflow: hidden;
7560
+ color: var(--zx-color-text-muted);
7561
+ font-size: var(--zx-text-xs);
7562
+ font-weight: 600;
7563
+ line-height: 1.35;
7564
+ text-overflow: ellipsis;
7565
+ white-space: nowrap;
7566
+ }
7567
+ .zx-record-card__value {
7568
+ min-inline-size: 0;
7569
+ margin: 0;
7570
+ overflow-wrap: anywhere;
7571
+ color: var(--zx-color-text);
7572
+ font-size: var(--zx-text-sm);
7573
+ line-height: 1.45;
7574
+ }
7575
+ .zx-record-card__value > :is(img, svg, video) {
7576
+ max-inline-size: 100%;
7577
+ }
7578
+ .zx-card-view__group-empty,
7579
+ .zx-card-view__empty {
7580
+ color: var(--zx-color-text-muted);
7581
+ text-align: center;
7582
+ }
7583
+ .zx-card-view__group-empty {
7584
+ grid-column: 1 / -1;
7585
+ border: 1px dashed var(--zx-color-border);
7586
+ border-radius: var(--zx-radius-md);
7587
+ padding: var(--zx-space-5);
7588
+ }
7589
+ .zx-card-view__empty {
7590
+ display: grid;
7591
+ place-items: center;
7592
+ min-block-size: 10rem;
7593
+ border: 1px dashed var(--zx-color-border);
7594
+ border-radius: var(--zx-radius-lg);
7595
+ padding: var(--zx-space-6);
7596
+ }
7597
+ .zx-card-view__skeleton {
7598
+ align-content: start;
7599
+ gap: var(--zx-space-3);
7600
+ border: 1px solid var(--zx-color-border);
7601
+ background: var(--zx-color-bg-surface);
7602
+ padding: var(--zx-space-4);
7603
+ }
7604
+ .zx-card-view__skeleton-preview {
7605
+ aspect-ratio: 16 / 9;
7606
+ inline-size: calc(100% + var(--zx-space-4) + var(--zx-space-4));
7607
+ margin: calc(-1 * var(--zx-space-4)) calc(-1 * var(--zx-space-4)) var(--zx-space-2);
7608
+ }
7609
+ .zx-card-view__skeleton-line {
7610
+ block-size: .8rem;
7611
+ }
7612
+ .zx-card-view__skeleton-line:nth-child(3) {
7613
+ inline-size: 72%;
7614
+ }
7615
+ .zx-card-view__skeleton-line:nth-child(4) {
7616
+ inline-size: 48%;
7617
+ }
7618
+ @container (max-width: 28rem) {
7619
+ .zx-card-view__sort-label {
7620
+ position: absolute;
7621
+ inline-size: 1px;
7622
+ block-size: 1px;
7623
+ overflow: hidden;
7624
+ clip-path: inset(50%);
7625
+ }
7626
+ .zx-record-card__metadata {
7627
+ grid-template-columns: minmax(0, 1fr);
7628
+ }
7629
+ .zx-record-card__action-label {
7630
+ position: absolute;
7631
+ inline-size: 1px;
7632
+ block-size: 1px;
7633
+ overflow: hidden;
7634
+ clip-path: inset(50%);
7635
+ }
7636
+ }
7637
+ @media (prefers-reduced-transparency: reduce) {
7638
+ .zx-record-card[data-variant=raised] {
7639
+ border-color: var(--zx-color-border);
7640
+ background: var(--zx-color-bg-surface);
7641
+ -webkit-backdrop-filter: none;
7642
+ backdrop-filter: none;
7643
+ box-shadow: var(--zx-overlay-shadow);
7644
+ }
7645
+ }
7646
+ @media (prefers-reduced-motion: no-preference) {
7647
+ .zx-record-card,
7648
+ .zx-record-card__action,
7649
+ .zx-record-card__primary {
7650
+ transition:
7651
+ border-color var(--zx-dur-fast) var(--zx-ease),
7652
+ background var(--zx-dur-fast) var(--zx-ease),
7653
+ color var(--zx-dur-fast) var(--zx-ease),
7654
+ box-shadow var(--zx-dur-fast) var(--zx-ease);
7655
+ }
7656
+ }
7657
+
7658
+ /* src/components/kanban-view/kanban-view.css */
7659
+ .zx-kanban-view {
7660
+ inline-size: 100%;
7661
+ min-inline-size: 0;
7662
+ container-type: inline-size;
7663
+ }
7664
+ .zx-kanban-view__toolbar:empty {
7665
+ display: none;
7666
+ }
7667
+ .zx-kanban-view__board {
7668
+ min-inline-size: 0;
7669
+ overflow: auto;
7670
+ overscroll-behavior-inline: contain;
7671
+ border: 1px solid var(--zx-color-border);
7672
+ border-radius: var(--zx-radius-lg);
7673
+ background: var(--zx-color-bg-muted);
7674
+ padding: var(--zx-space-3);
7675
+ scrollbar-gutter: stable;
7676
+ }
7677
+ .zx-kanban-view__lane + .zx-kanban-view__lane {
7678
+ margin-block-start: var(--zx-space-4);
7679
+ border-block-start: 1px solid var(--zx-color-border);
7680
+ padding-block-start: var(--zx-space-3);
7681
+ }
7682
+ .zx-kanban-view__lane-heading,
7683
+ .zx-kanban-view__column-heading {
7684
+ display: flex;
7685
+ align-items: center;
7686
+ gap: var(--zx-space-2);
7687
+ margin: 0;
7688
+ color: var(--zx-color-text);
7689
+ font-size: var(--zx-text-md);
7690
+ font-weight: var(--zx-control-font-weight);
7691
+ line-height: 1.3;
7692
+ }
7693
+ .zx-kanban-view__lane-heading {
7694
+ margin-block-end: var(--zx-space-2);
7695
+ }
7696
+ .zx-kanban-view__columns {
7697
+ display: grid;
7698
+ grid-auto-flow: column;
7699
+ grid-auto-columns: minmax(260px, min(82vw, 340px));
7700
+ align-items: start;
7701
+ gap: var(--zx-space-3);
7702
+ min-inline-size: max-content;
7703
+ }
7704
+ .zx-kanban-view__column {
7705
+ display: grid;
7706
+ grid-template-rows: auto minmax(64px, auto);
7707
+ gap: var(--zx-space-2);
7708
+ min-inline-size: 0;
7709
+ border: 1px solid var(--zx-color-border);
7710
+ border-radius: var(--zx-radius-md);
7711
+ background: var(--zx-color-bg-surface);
7712
+ padding: var(--zx-space-2);
7713
+ }
7714
+ .zx-kanban-view__column[data-collapsed=true] {
7715
+ grid-template-rows: auto;
7716
+ }
7717
+ .zx-kanban-view__column-label {
7718
+ min-inline-size: 0;
7719
+ overflow: hidden;
7720
+ text-overflow: ellipsis;
7721
+ white-space: nowrap;
7722
+ }
7723
+ .zx-kanban-view__collapse,
7724
+ .zx-kanban-view__move-handle {
7725
+ display: inline-grid;
7726
+ flex: 0 0 auto;
7727
+ place-items: center;
7728
+ border: 0;
7729
+ border-radius: var(--zx-radius-sm);
7730
+ background: transparent;
7731
+ color: var(--zx-color-text-muted);
7732
+ cursor: pointer;
7733
+ }
7734
+ .zx-kanban-view__collapse {
7735
+ inline-size: 26px;
7736
+ block-size: 26px;
7737
+ }
7738
+ .zx-kanban-view__move-handle {
7739
+ inline-size: 28px;
7740
+ block-size: 28px;
7741
+ cursor: grab;
7742
+ touch-action: none;
7743
+ }
7744
+ .zx-kanban-view__move-handle[aria-pressed=true] {
7745
+ background: var(--zx-color-accent-subtle);
7746
+ color: var(--zx-color-accent);
7747
+ cursor: grabbing;
7748
+ }
7749
+ .zx-kanban-view__collapse:hover,
7750
+ .zx-kanban-view__move-handle:hover {
7751
+ background: var(--zx-color-bg-hover);
5762
7752
  color: var(--zx-color-text);
5763
7753
  }
7754
+ .zx-kanban-view__collapse:focus-visible,
7755
+ .zx-kanban-view__move-handle:focus-visible,
7756
+ .zx-kanban-view .zx-record-card:focus-visible {
7757
+ outline: none;
7758
+ box-shadow: var(--zx-focus-ring);
7759
+ }
7760
+ .zx-kanban-view__count {
7761
+ flex: 0 0 auto;
7762
+ margin-inline-start: auto;
7763
+ border-radius: var(--zx-radius-sm);
7764
+ background: var(--zx-color-bg-muted);
7765
+ padding: var(--zx-space-1) var(--zx-space-2);
7766
+ color: var(--zx-color-text-muted);
7767
+ font-size: var(--zx-control-font-size);
7768
+ font-weight: var(--zx-control-font-weight);
7769
+ white-space: nowrap;
7770
+ }
7771
+ .zx-kanban-view__column[data-wip=limit] .zx-kanban-view__count {
7772
+ background: var(--zx-color-warning-bg);
7773
+ color: var(--zx-color-warning);
7774
+ }
7775
+ .zx-kanban-view__column[data-wip=exceeded] .zx-kanban-view__count {
7776
+ background: var(--zx-color-danger-bg);
7777
+ color: var(--zx-color-danger);
7778
+ }
7779
+ .zx-kanban-view__cards {
7780
+ position: relative;
7781
+ display: flex;
7782
+ flex-direction: column;
7783
+ gap: var(--zx-space-2);
7784
+ min-block-size: 64px;
7785
+ margin: 0;
7786
+ border-radius: var(--zx-radius-sm);
7787
+ padding: var(--zx-space-1);
7788
+ list-style: none;
7789
+ }
7790
+ .zx-kanban-view__cards > .zx-record-card {
7791
+ inline-size: 100%;
7792
+ min-inline-size: 0;
7793
+ }
7794
+ .zx-kanban-view__cards[data-drop=append],
7795
+ .zx-kanban-view__cards[data-keyboard-target=append] {
7796
+ box-shadow: inset 0 -3px 0 var(--zx-color-accent);
7797
+ }
7798
+ .zx-kanban-view .zx-record-card[data-drop=before],
7799
+ .zx-kanban-view .zx-record-card[data-keyboard-target=before] {
7800
+ box-shadow: 0 -3px 0 var(--zx-color-accent);
7801
+ }
7802
+ .zx-kanban-view .zx-record-card[data-drop=after] {
7803
+ box-shadow: 0 3px 0 var(--zx-color-accent);
7804
+ }
7805
+ .zx-kanban-view .zx-record-card[data-dragging=true] {
7806
+ opacity: .5;
7807
+ }
7808
+ .zx-kanban-view .zx-record-card[data-grabbed=true] {
7809
+ outline: 2px solid var(--zx-color-accent);
7810
+ outline-offset: 2px;
7811
+ }
7812
+ .zx-kanban-view__empty {
7813
+ display: grid;
7814
+ place-items: center;
7815
+ min-block-size: 160px;
7816
+ color: var(--zx-color-text-muted);
7817
+ text-align: center;
7818
+ }
7819
+ .zx-kanban-view__live {
7820
+ position: absolute;
7821
+ inline-size: 1px;
7822
+ block-size: 1px;
7823
+ overflow: hidden;
7824
+ clip-path: inset(50%);
7825
+ white-space: nowrap;
7826
+ }
7827
+ .zx-kanban-view[data-loading=true] .zx-kanban-view__board {
7828
+ pointer-events: none;
7829
+ }
7830
+ @container (max-width: 420px) {
7831
+ .zx-kanban-view__columns {
7832
+ grid-auto-columns: minmax(240px, 88vw);
7833
+ }
7834
+ }
7835
+ @media (prefers-reduced-motion: no-preference) {
7836
+ .zx-kanban-view__collapse,
7837
+ .zx-kanban-view__move-handle,
7838
+ .zx-kanban-view .zx-record-card {
7839
+ transition:
7840
+ color var(--zx-dur-fast) var(--zx-ease),
7841
+ background var(--zx-dur-fast) var(--zx-ease),
7842
+ box-shadow var(--zx-dur-fast) var(--zx-ease),
7843
+ opacity var(--zx-dur-fast) var(--zx-ease);
7844
+ }
7845
+ }
5764
7846
 
5765
7847
  /* src/components/grid/grid.css */
5766
7848
  .zx-table[data-preset=billing-items] tr.zx-grid-billing__summary > td {