@zeyos/zx 4.3.4 → 4.4.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 (128) hide show
  1. package/CHANGELOG.md +155 -0
  2. package/README.md +7 -0
  3. package/dist/types/components/activity-item/activity-item.d.ts +351 -0
  4. package/dist/types/components/activity-list/activity-list.d.ts +195 -0
  5. package/dist/types/components/app-sidebar/app-sidebar.d.ts +28 -0
  6. package/dist/types/components/button/button.d.ts +8 -0
  7. package/dist/types/components/calendar/calendar.d.ts +19 -0
  8. package/dist/types/components/card/card.d.ts +7 -0
  9. package/dist/types/components/card-view/card-view.d.ts +11 -3
  10. package/dist/types/components/card-view/record-card.d.ts +7 -1
  11. package/dist/types/components/code-editor/code-editor.d.ts +160 -0
  12. package/dist/types/components/code-editor/field-adapter.d.ts +5 -0
  13. package/dist/types/components/context-menu/context-menu.d.ts +18 -2
  14. package/dist/types/components/date-picker/date-picker.d.ts +8 -0
  15. package/dist/types/components/date-picker/time-picker.d.ts +7 -0
  16. package/dist/types/components/dialog/dialog.d.ts +29 -0
  17. package/dist/types/components/entity-ref/entity-ref.d.ts +331 -0
  18. package/dist/types/components/file-item/file-item.d.ts +234 -0
  19. package/dist/types/components/file-list/file-list.d.ts +171 -0
  20. package/dist/types/components/filter/filter.d.ts +91 -36
  21. package/dist/types/components/filter-panel/filter-panel.d.ts +449 -0
  22. package/dist/types/components/kanban-view/kanban-card.d.ts +138 -0
  23. package/dist/types/components/kanban-view/kanban-view.d.ts +170 -4
  24. package/dist/types/components/launcher/launcher.d.ts +19 -12
  25. package/dist/types/components/list-toolbar/list-toolbar.d.ts +599 -0
  26. package/dist/types/components/menu-button/menu-button.d.ts +4 -37
  27. package/dist/types/components/message/message.d.ts +7 -0
  28. package/dist/types/components/modal/modal.d.ts +48 -0
  29. package/dist/types/components/navigation-bar/navigation-bar.d.ts +105 -21
  30. package/dist/types/components/panel/panel.d.ts +7 -0
  31. package/dist/types/components/search/search.d.ts +7 -0
  32. package/dist/types/components/select/select.d.ts +4 -0
  33. package/dist/types/components/sort-control/sort-control.d.ts +105 -0
  34. package/dist/types/components/stat-tile/stat-tile.d.ts +277 -0
  35. package/dist/types/components/tabbox/tabbox.d.ts +7 -0
  36. package/dist/types/components/table/table.d.ts +144 -0
  37. package/dist/types/components/table-view/table-view.d.ts +11 -5
  38. package/dist/types/components/timebox/timebox.d.ts +7 -0
  39. package/dist/types/components/value-list/value-list.d.ts +8 -0
  40. package/dist/types/components/view/record-view.d.ts +96 -5
  41. package/dist/types/core/icons.d.ts +17 -0
  42. package/dist/types/index.d.ts +11 -0
  43. package/dist/types/internal/app-rail.d.ts +10 -0
  44. package/dist/types/internal/menu-items.d.ts +134 -0
  45. package/dist/zx-zeyos.esm.js +616 -77
  46. package/dist/zx-zeyos.esm.min.js +8 -1
  47. package/dist/zx.css +2085 -238
  48. package/dist/zx.esm.js +6704 -1542
  49. package/dist/zx.esm.min.js +10 -3
  50. package/dist/zx.global.js +6704 -1542
  51. package/dist/zx.global.min.js +10 -3
  52. package/dist/zx.min.css +1 -1
  53. package/docs/api.json +1479 -127
  54. package/docs/llms.md +315 -10
  55. package/docs/llms.txt +11 -5
  56. package/package.json +1 -1
  57. package/src/components/activity-item/activity-item.css +137 -0
  58. package/src/components/activity-item/activity-item.js +599 -0
  59. package/src/components/activity-list/activity-list.css +64 -0
  60. package/src/components/activity-list/activity-list.js +375 -0
  61. package/src/components/app-rail/app-rail.css +227 -19
  62. package/src/components/app-sidebar/app-sidebar.css +414 -24
  63. package/src/components/app-sidebar/app-sidebar.js +65 -5
  64. package/src/components/button/button.css +8 -0
  65. package/src/components/button/button.js +6 -1
  66. package/src/components/calendar/calendar.js +33 -3
  67. package/src/components/card/card.js +12 -1
  68. package/src/components/card-view/card-view.css +1 -0
  69. package/src/components/card-view/card-view.js +25 -9
  70. package/src/components/card-view/record-card.js +7 -3
  71. package/src/components/code-editor/code-editor.css +67 -0
  72. package/src/components/code-editor/code-editor.js +288 -0
  73. package/src/components/code-editor/field-adapter.js +34 -0
  74. package/src/components/context-menu/context-menu.css +80 -3
  75. package/src/components/context-menu/context-menu.js +22 -30
  76. package/src/components/date-picker/date-picker.js +22 -8
  77. package/src/components/date-picker/month-picker.js +3 -3
  78. package/src/components/date-picker/time-picker.js +20 -8
  79. package/src/components/dialog/dialog.js +88 -66
  80. package/src/components/dropdown/dropdown.js +2 -2
  81. package/src/components/entity-ref/entity-ref.css +182 -0
  82. package/src/components/entity-ref/entity-ref.js +496 -0
  83. package/src/components/file-item/file-item.css +88 -0
  84. package/src/components/file-item/file-item.js +371 -0
  85. package/src/components/file-list/file-list.css +51 -0
  86. package/src/components/file-list/file-list.js +320 -0
  87. package/src/components/filter/filter.css +27 -1
  88. package/src/components/filter/filter.js +199 -45
  89. package/src/components/filter-panel/filter-panel.css +104 -0
  90. package/src/components/filter-panel/filter-panel.js +964 -0
  91. package/src/components/kanban-view/kanban-card.js +239 -0
  92. package/src/components/kanban-view/kanban-view.css +194 -0
  93. package/src/components/kanban-view/kanban-view.js +251 -8
  94. package/src/components/launcher/launcher.js +59 -27
  95. package/src/components/list-toolbar/list-toolbar.css +189 -0
  96. package/src/components/list-toolbar/list-toolbar.js +851 -0
  97. package/src/components/menu-button/menu-button.css +80 -3
  98. package/src/components/menu-button/menu-button.js +21 -37
  99. package/src/components/message/message.css +5 -2
  100. package/src/components/message/message.js +13 -2
  101. package/src/components/modal/modal.css +15 -0
  102. package/src/components/modal/modal.js +141 -0
  103. package/src/components/navigation-bar/navigation-bar.css +77 -2
  104. package/src/components/navigation-bar/navigation-bar.js +171 -4
  105. package/src/components/panel/panel.js +13 -2
  106. package/src/components/search/search.js +17 -5
  107. package/src/components/select/field-adapter.js +4 -1
  108. package/src/components/select/select.js +3 -0
  109. package/src/components/sort-control/sort-control.css +17 -0
  110. package/src/components/sort-control/sort-control.js +140 -0
  111. package/src/components/stat-tile/stat-tile.css +213 -0
  112. package/src/components/stat-tile/stat-tile.js +590 -0
  113. package/src/components/tabbox/tabbox.js +12 -1
  114. package/src/components/table/table.css +51 -2
  115. package/src/components/table/table.js +298 -19
  116. package/src/components/table-view/table-view.css +8 -2
  117. package/src/components/table-view/table-view.js +21 -6
  118. package/src/components/tag-picker/tag-picker.css +3 -1
  119. package/src/components/timebox/timebox.js +18 -5
  120. package/src/components/value-list/value-list.js +22 -6
  121. package/src/components/view/record-view.css +5 -0
  122. package/src/components/view/record-view.js +100 -7
  123. package/src/core/icons.js +74 -5
  124. package/src/index.js +25 -0
  125. package/src/internal/app-rail.js +19 -1
  126. package/src/internal/menu-items.js +142 -0
  127. package/styles/print.css +192 -0
  128. package/styles/zx.css +11 -0
package/dist/zx.css CHANGED
@@ -735,6 +735,13 @@ svg.zx-icon {
735
735
  .zx-btn-group {
736
736
  display: inline-flex;
737
737
  }
738
+ .zx-btn__shortcut {
739
+ font: inherit;
740
+ font-size: var(--zx-text-xs);
741
+ opacity: .7;
742
+ margin-inline-start: var(--zx-space-1);
743
+ white-space: nowrap;
744
+ }
738
745
  .zx-btn-group > .zx-btn:not(:first-child) {
739
746
  margin-inline-start: -1px;
740
747
  border-start-start-radius: 0;
@@ -1426,6 +1433,67 @@ svg.zx-icon {
1426
1433
  font-size: var(--zx-text-xs);
1427
1434
  }
1428
1435
 
1436
+ /* src/components/code-editor/code-editor.css */
1437
+ .zx-code-editor {
1438
+ overflow: hidden;
1439
+ border: 1px solid var(--zx-color-border-control);
1440
+ border-radius: var(--zx-control-radius);
1441
+ background: var(--zx-color-bg-control);
1442
+ }
1443
+ .zx-code-editor:focus-within {
1444
+ box-shadow: var(--zx-focus-ring);
1445
+ }
1446
+ .zx-code-editor__header {
1447
+ display: flex;
1448
+ align-items: center;
1449
+ justify-content: space-between;
1450
+ gap: var(--zx-space-3);
1451
+ min-block-size: var(--zx-control-height);
1452
+ padding-inline: var(--zx-space-3);
1453
+ border-block-end: 1px solid var(--zx-color-border);
1454
+ background: var(--zx-color-bg-subtle);
1455
+ color: var(--zx-color-text-muted);
1456
+ font-size: var(--zx-text-xs);
1457
+ }
1458
+ .zx-code-editor__language {
1459
+ overflow: hidden;
1460
+ font-weight: 600;
1461
+ letter-spacing: 0.04em;
1462
+ text-overflow: ellipsis;
1463
+ text-transform: uppercase;
1464
+ text-wrap: nowrap;
1465
+ }
1466
+ .zx-code-editor__position {
1467
+ font-variant-numeric: tabular-nums;
1468
+ text-wrap: nowrap;
1469
+ }
1470
+ .zx-code-editor__input {
1471
+ display: block;
1472
+ inline-size: 100%;
1473
+ min-block-size: calc(var(--zx-control-height) * 4);
1474
+ resize: vertical;
1475
+ padding: var(--zx-space-3);
1476
+ border: 0;
1477
+ border-radius: 0;
1478
+ outline: 0;
1479
+ background: transparent;
1480
+ box-shadow: none;
1481
+ color: var(--zx-color-text);
1482
+ font-family: var(--zx-font-mono);
1483
+ font-size: var(--zx-text-sm);
1484
+ line-height: 1.55;
1485
+ tab-size: 2;
1486
+ }
1487
+ .zx-code-editor__input:focus-visible {
1488
+ box-shadow: none;
1489
+ }
1490
+ .zx-code-editor[data-readonly=true] {
1491
+ background: var(--zx-color-bg-subtle);
1492
+ }
1493
+ .zx-code-editor[data-disabled=true] {
1494
+ opacity: 0.6;
1495
+ }
1496
+
1429
1497
  /* src/components/toolbar/toolbar.css */
1430
1498
  .zx-toolbar {
1431
1499
  display: flex;
@@ -2438,14 +2506,48 @@ button.zx-panel__toggle:focus-visible {
2438
2506
  .zx-navigation-bar__panel:focus-visible {
2439
2507
  box-shadow: inset var(--zx-focus-ring);
2440
2508
  }
2509
+ .zx-navigation-bar[data-overflow=partial] .zx-navigation-bar__navigation {
2510
+ display: flex;
2511
+ align-items: center;
2512
+ gap: var(--zx-space-1);
2513
+ }
2514
+ .zx-navigation-bar[data-overflow=partial] .zx-navigation-bar__item,
2515
+ .zx-navigation-bar[data-overflow=partial] .zx-navigation-bar__label,
2516
+ .zx-navigation-bar[data-overflow=off] .zx-navigation-bar__item,
2517
+ .zx-navigation-bar[data-overflow=off] .zx-navigation-bar__label {
2518
+ min-inline-size: 0;
2519
+ }
2520
+ .zx-navigation-bar[data-overflow=partial] .zx-navigation-bar__label,
2521
+ .zx-navigation-bar[data-overflow=off] .zx-navigation-bar__label {
2522
+ overflow: hidden;
2523
+ text-overflow: ellipsis;
2524
+ white-space: nowrap;
2525
+ }
2526
+ .zx-navigation-bar[data-overflow=partial] .zx-navigation-bar__badge,
2527
+ .zx-navigation-bar[data-overflow=partial] .zx-navigation-bar__more,
2528
+ .zx-navigation-bar[data-overflow=off] .zx-navigation-bar__badge {
2529
+ flex: none;
2530
+ }
2441
2531
  @container (max-width: 44rem) {
2442
- .zx-navigation-bar__items {
2532
+ .zx-navigation-bar[data-overflow=all]:not([data-overflow-below]) .zx-navigation-bar__items {
2533
+ display: none;
2534
+ }
2535
+ .zx-navigation-bar[data-overflow=partial]:not([data-overflow-below]) .zx-navigation-bar__item[data-collapsed=true] {
2443
2536
  display: none;
2444
2537
  }
2445
- .zx-navigation-bar__more:not([data-empty=true]) {
2538
+ .zx-navigation-bar:not([data-overflow=off]):not([data-overflow-below]) .zx-navigation-bar__more:not([data-empty=true]) {
2446
2539
  display: inline-flex;
2447
2540
  }
2448
2541
  }
2542
+ .zx-navigation-bar[data-overflow=all][data-narrow=true] .zx-navigation-bar__items {
2543
+ display: none;
2544
+ }
2545
+ .zx-navigation-bar[data-overflow=partial][data-narrow=true] .zx-navigation-bar__item[data-collapsed=true] {
2546
+ display: none;
2547
+ }
2548
+ .zx-navigation-bar[data-narrow=true]:not([data-overflow=off]) .zx-navigation-bar__more:not([data-empty=true]) {
2549
+ display: inline-flex;
2550
+ }
2449
2551
 
2450
2552
  /* src/components/search/search.css */
2451
2553
  .zx-search {
@@ -3014,236 +3116,819 @@ button.zx-panel__toggle:focus-visible {
3014
3116
  background: var(--zx-color-danger);
3015
3117
  }
3016
3118
 
3017
- /* src/components/account-menu/account-menu.css */
3018
- .zx-account-menu {
3019
- display: block;
3020
- min-inline-size: 0;
3021
- }
3022
- .zx-account-menu__trigger {
3119
+ /* src/components/entity-ref/entity-ref.css */
3120
+ .zx-entity-ref {
3121
+ --zx-entity-ref-visual-size: var(--zx-control-height);
3023
3122
  display: grid;
3024
3123
  grid-template-columns: auto minmax(0, 1fr) auto;
3124
+ gap: var(--zx-space-2);
3025
3125
  align-items: center;
3026
- gap: var(--zx-space-3);
3027
- inline-size: 100%;
3028
- min-block-size: calc(var(--zx-control-height) + var(--zx-space-2));
3029
- border-color: transparent;
3030
- background: transparent;
3031
- padding: var(--zx-space-2);
3032
- color: inherit;
3033
- text-align: start;
3034
- }
3035
- .zx-account-menu__trigger:hover,
3036
- .zx-account-menu__trigger:focus-visible,
3037
- .zx-account-menu__trigger[aria-expanded=true] {
3038
- background: var(--zx-color-bg-hover);
3039
- }
3040
- .zx-account-menu__identity {
3041
- display: grid;
3042
3126
  min-inline-size: 0;
3043
- gap: 1px;
3044
- }
3045
- .zx-account-menu__name,
3046
- .zx-account-menu__secondary {
3047
- overflow: hidden;
3048
- text-overflow: ellipsis;
3049
- white-space: nowrap;
3050
- }
3051
- .zx-account-menu__name {
3052
- font-weight: 650;
3053
- }
3054
- .zx-account-menu__secondary {
3055
- color: var(--zx-color-text-muted);
3056
- font-size: var(--zx-text-xs);
3127
+ color: var(--zx-color-text);
3057
3128
  }
3058
- .zx-account-menu__chevron {
3059
- display: inline-flex;
3129
+ .zx-entity-ref[data-size=sm] {
3130
+ --zx-entity-ref-visual-size: calc(var(--zx-control-height) * .75);
3060
3131
  }
3061
- .zx-account-menu[data-compact=true] {
3062
- inline-size: fit-content;
3132
+ .zx-entity-ref[data-size=lg] {
3133
+ --zx-entity-ref-visual-size: calc(var(--zx-control-height) * 1.25);
3063
3134
  }
3064
- .zx-account-menu[data-compact=true] .zx-account-menu__trigger {
3135
+ .zx-entity-ref__icon {
3065
3136
  display: inline-grid;
3066
- grid-template-columns: auto;
3067
- inline-size: auto;
3137
+ flex: none;
3138
+ place-items: center;
3139
+ inline-size: var(--zx-entity-ref-visual-size);
3140
+ block-size: var(--zx-entity-ref-visual-size);
3141
+ overflow: hidden;
3142
+ border: 1px solid var(--zx-color-border);
3143
+ border-radius: var(--zx-radius-md);
3144
+ background: var(--zx-color-bg-muted);
3145
+ color: var(--zx-color-text-muted);
3068
3146
  }
3069
- .zx-account-menu[data-compact=true] .zx-account-menu__identity,
3070
- .zx-account-menu[data-compact=true] .zx-account-menu__chevron {
3147
+ .zx-entity-ref__icon[hidden],
3148
+ .zx-entity-ref__title[hidden],
3149
+ .zx-entity-ref__subtitle[hidden],
3150
+ .zx-entity-ref__metadata[hidden],
3151
+ .zx-entity-ref__actions[hidden] {
3071
3152
  display: none;
3072
3153
  }
3073
- .zx-account-menu__panel-identity {
3074
- display: grid;
3075
- min-inline-size: 220px;
3076
- gap: 2px;
3077
- margin: calc(-1 * var(--zx-space-1)) calc(-1 * var(--zx-space-1)) var(--zx-space-1);
3078
- border-block-end: 1px solid var(--zx-color-overlay-divider);
3079
- padding: var(--zx-space-3);
3154
+ .zx-entity-ref__body,
3155
+ .zx-entity-ref__title,
3156
+ .zx-entity-ref__subtitle,
3157
+ .zx-entity-ref__primary,
3158
+ .zx-entity-ref__name {
3159
+ min-inline-size: 0;
3080
3160
  }
3081
- .zx-account-menu__panel-identity span {
3082
- color: var(--zx-color-text-muted);
3083
- font-size: var(--zx-text-xs);
3161
+ .zx-entity-ref__body {
3162
+ display: grid;
3163
+ gap: var(--zx-space-1);
3084
3164
  }
3085
-
3086
- /* src/components/app-rail/app-rail.css */
3087
- .zx-app-rail {
3088
- display: flex;
3089
- min-inline-size: 0;
3090
- border: 1px solid var(--zx-color-glass-border);
3091
- background: var(--zx-color-glass-chrome);
3092
- box-shadow: var(--zx-glass-chrome-shadow);
3165
+ .zx-entity-ref__title {
3093
3166
  color: var(--zx-color-text);
3167
+ font-weight: 600;
3168
+ line-height: 1.25;
3094
3169
  }
3095
- .zx-app-rail[data-orientation=vertical] {
3096
- flex-direction: column;
3097
- inline-size: calc(var(--zx-control-height) + var(--zx-space-3));
3098
- }
3099
- .zx-app-rail[data-orientation=horizontal] {
3100
- flex-direction: row;
3101
- block-size: calc(var(--zx-control-height) + var(--zx-space-3));
3170
+ .zx-entity-ref__primary,
3171
+ .zx-entity-ref__name {
3172
+ display: block;
3173
+ color: inherit;
3102
3174
  }
3103
- .zx-app-rail__header,
3104
- .zx-app-rail__footer {
3105
- display: flex;
3106
- align-items: center;
3107
- justify-content: center;
3108
- padding: var(--zx-space-1);
3175
+ .zx-entity-ref__primary {
3176
+ text-decoration-color: transparent;
3177
+ text-underline-offset: .15em;
3109
3178
  }
3110
- .zx-app-rail__header[hidden],
3111
- .zx-app-rail__footer[hidden] {
3112
- display: none;
3179
+ .zx-entity-ref__primary:hover {
3180
+ color: var(--zx-color-accent-hover);
3181
+ text-decoration-color: currentColor;
3113
3182
  }
3114
- .zx-app-rail[data-orientation=vertical] .zx-app-rail__footer {
3115
- margin-block-start: auto;
3183
+ .zx-entity-ref__subtitle,
3184
+ .zx-entity-ref__metadata {
3185
+ color: var(--zx-color-text-muted);
3186
+ font-size: var(--zx-text-sm);
3187
+ line-height: 1.3;
3116
3188
  }
3117
- .zx-app-rail[data-orientation=horizontal] .zx-app-rail__footer {
3118
- margin-inline-start: auto;
3189
+ .zx-entity-ref[data-wrap=false] .zx-entity-ref__title,
3190
+ .zx-entity-ref[data-wrap=false] .zx-entity-ref__subtitle,
3191
+ .zx-entity-ref[data-wrap=false] .zx-entity-ref__primary,
3192
+ .zx-entity-ref[data-wrap=false] .zx-entity-ref__name {
3193
+ overflow: hidden;
3194
+ text-overflow: ellipsis;
3195
+ white-space: nowrap;
3119
3196
  }
3120
- .zx-app-rail__list {
3197
+ .zx-entity-ref__metadata {
3121
3198
  display: flex;
3122
- flex: 1;
3123
- gap: var(--zx-space-1);
3199
+ flex-wrap: wrap;
3200
+ gap: var(--zx-space-1) var(--zx-space-3);
3124
3201
  margin: 0;
3125
- padding: var(--zx-space-1);
3126
- list-style: none;
3127
- }
3128
- .zx-app-rail[data-orientation=vertical] .zx-app-rail__list {
3129
- flex-direction: column;
3130
- }
3131
- .zx-app-rail[data-orientation=horizontal] .zx-app-rail__list {
3132
- flex-direction: row;
3133
3202
  }
3134
- .zx-app-rail__row {
3135
- display: flex;
3136
- }
3137
- .zx-app-rail__item {
3138
- position: relative;
3139
- display: inline-grid;
3140
- place-items: center;
3141
- inline-size: var(--zx-control-height);
3142
- block-size: var(--zx-control-height);
3143
- border-color: transparent;
3144
- border-radius: var(--zx-radius-md);
3145
- background: transparent;
3146
- color: inherit;
3147
- padding: 0;
3148
- text-decoration: none;
3203
+ .zx-entity-ref__field {
3204
+ display: inline-flex;
3205
+ gap: var(--zx-space-1);
3206
+ align-items: center;
3207
+ min-inline-size: 0;
3149
3208
  }
3150
- .zx-app-rail__item:hover,
3151
- .zx-app-rail__item:focus-visible,
3152
- .zx-app-rail__item[aria-expanded=true],
3153
- .zx-app-rail__item[data-active-descendant=true],
3154
- .zx-app-rail__item[aria-current=page] {
3155
- background: var(--zx-color-bg-hover);
3156
- color: var(--zx-color-accent);
3209
+ .zx-entity-ref__label,
3210
+ .zx-entity-ref__value {
3211
+ margin: 0;
3157
3212
  }
3158
- .zx-app-rail__item[aria-disabled=true],
3159
- .zx-app-rail__flyout-item[aria-disabled=true] {
3160
- color: var(--zx-color-text-muted);
3161
- cursor: not-allowed;
3162
- opacity: .65;
3213
+ .zx-entity-ref__label::after {
3214
+ content: ":";
3163
3215
  }
3164
- .zx-app-rail__item-label {
3216
+ .zx-entity-ref__field[data-label-visible=false] .zx-entity-ref__label {
3165
3217
  position: absolute;
3166
3218
  inline-size: 1px;
3167
3219
  block-size: 1px;
3168
3220
  overflow: hidden;
3169
3221
  clip-path: inset(50%);
3170
3222
  }
3171
- .zx-app-rail__item-icon {
3223
+ .zx-entity-ref__value {
3172
3224
  display: inline-flex;
3225
+ gap: var(--zx-space-1);
3226
+ align-items: center;
3227
+ min-inline-size: 0;
3173
3228
  }
3174
- .zx-app-rail__item-badge {
3175
- position: absolute;
3176
- inset-inline-end: 1px;
3177
- inset-block-start: 1px;
3178
- min-inline-size: 15px;
3179
- border-radius: var(--zx-radius-full);
3180
- background: var(--zx-color-accent);
3181
- padding-inline: 3px;
3182
- color: var(--zx-color-on-accent);
3183
- font-size: 10px;
3184
- line-height: 15px;
3185
- text-align: center;
3229
+ .zx-entity-ref__actions {
3230
+ display: inline-flex;
3231
+ flex-wrap: wrap;
3232
+ gap: var(--zx-space-1);
3233
+ align-items: center;
3234
+ justify-content: flex-end;
3186
3235
  }
3187
- .zx-app-rail__item-disclosure {
3188
- position: absolute;
3189
- inset-inline-end: 1px;
3190
- inset-block-end: 1px;
3236
+ .zx-entity-ref__action {
3237
+ display: inline-flex;
3238
+ gap: var(--zx-space-1);
3239
+ align-items: center;
3240
+ justify-content: center;
3241
+ min-block-size: calc(var(--zx-control-height) * .75);
3242
+ padding: var(--zx-space-1) var(--zx-space-2);
3243
+ border: 1px solid transparent;
3244
+ border-radius: var(--zx-radius-md);
3245
+ background: transparent;
3246
+ color: var(--zx-color-text-muted);
3247
+ font: inherit;
3248
+ text-decoration: none;
3249
+ cursor: pointer;
3250
+ }
3251
+ .zx-entity-ref__action:hover:not(:disabled) {
3252
+ background: var(--zx-color-bg-hover);
3253
+ color: var(--zx-color-text);
3254
+ }
3255
+ .zx-entity-ref__action[data-kind=primary] {
3256
+ color: var(--zx-color-accent);
3257
+ }
3258
+ .zx-entity-ref__action[data-kind=danger] {
3259
+ color: var(--zx-color-danger);
3260
+ }
3261
+ .zx-entity-ref__action[data-kind=default] {
3262
+ border-color: var(--zx-color-border-control);
3263
+ background: var(--zx-color-bg-control);
3264
+ color: var(--zx-color-text);
3265
+ }
3266
+ .zx-entity-ref__action:disabled {
3267
+ opacity: .55;
3268
+ cursor: default;
3269
+ }
3270
+ @media (forced-colors: active) {
3271
+ .zx-entity-ref__icon,
3272
+ .zx-entity-ref__action[data-kind=default] {
3273
+ border-color: CanvasText;
3274
+ }
3275
+ }
3276
+
3277
+ /* src/components/file-item/file-item.css */
3278
+ .zx-file-item {
3279
+ display: grid;
3280
+ grid-template-columns: minmax(0, 1fr) auto;
3281
+ gap: var(--zx-space-2) var(--zx-space-3);
3282
+ align-items: center;
3283
+ min-inline-size: 0;
3284
+ }
3285
+ .zx-file-item__entity {
3286
+ min-inline-size: 0;
3287
+ }
3288
+ .zx-file-item__status {
3289
+ justify-self: end;
3290
+ }
3291
+ .zx-file-item__status[hidden],
3292
+ .zx-file-item__progress[hidden] {
3293
+ display: none;
3294
+ }
3295
+ .zx-file-item__progress {
3296
+ display: grid;
3297
+ grid-column: 1 / -1;
3298
+ grid-template-columns: minmax(0, 1fr) auto;
3299
+ gap: var(--zx-space-2);
3300
+ align-items: center;
3301
+ padding-inline-start: calc(var(--zx-control-height) + var(--zx-space-2));
3302
+ }
3303
+ .zx-file-item__progress-head {
3304
+ grid-column: 2;
3305
+ color: var(--zx-color-text-muted);
3306
+ font-size: var(--zx-text-sm);
3307
+ }
3308
+ .zx-file-item__progress-track {
3309
+ grid-column: 1 / -1;
3310
+ block-size: 4px;
3311
+ overflow: hidden;
3312
+ border-radius: var(--zx-radius-pill);
3313
+ background: var(--zx-color-bg-muted);
3314
+ }
3315
+ .zx-file-item__progress-fill {
3316
+ inline-size: var(--zx-file-progress, 0%);
3317
+ block-size: 100%;
3318
+ border-radius: inherit;
3319
+ background: var(--zx-color-accent);
3320
+ }
3321
+ .zx-file-item[data-status=success] .zx-file-item__progress-fill {
3322
+ background: var(--zx-color-success);
3323
+ }
3324
+ .zx-file-item[data-status=error] .zx-file-item__progress-fill {
3325
+ background: var(--zx-color-danger);
3326
+ }
3327
+ .zx-file-item__progress[data-indeterminate] .zx-file-item__progress-fill {
3328
+ inline-size: 35%;
3329
+ transform: translateX(-110%);
3330
+ }
3331
+ @media (prefers-reduced-motion: no-preference) {
3332
+ .zx-file-item__progress-fill {
3333
+ transition: inline-size var(--zx-dur-fast) var(--zx-ease);
3334
+ }
3335
+ .zx-file-item__progress[data-indeterminate] .zx-file-item__progress-fill {
3336
+ animation: zx-file-progress-slide 1200ms var(--zx-ease) infinite;
3337
+ }
3338
+ }
3339
+ @keyframes zx-file-progress-slide {
3340
+ to {
3341
+ transform: translateX(320%);
3342
+ }
3343
+ }
3344
+ @media (max-width: 36rem) {
3345
+ .zx-file-item {
3346
+ grid-template-columns: minmax(0, 1fr);
3347
+ }
3348
+ .zx-file-item__status {
3349
+ justify-self: start;
3350
+ padding-inline-start: calc(var(--zx-control-height) + var(--zx-space-2));
3351
+ }
3352
+ }
3353
+
3354
+ /* src/components/file-list/file-list.css */
3355
+ .zx-file-list {
3356
+ display: grid;
3357
+ gap: var(--zx-space-3);
3358
+ min-inline-size: 0;
3359
+ color: var(--zx-color-text);
3360
+ }
3361
+ .zx-file-list__items {
3362
+ display: grid;
3363
+ min-inline-size: 0;
3364
+ margin: 0;
3365
+ padding: 0;
3366
+ list-style: none;
3367
+ }
3368
+ .zx-file-list__item {
3369
+ min-inline-size: 0;
3370
+ padding-block: var(--zx-space-3);
3371
+ }
3372
+ .zx-file-list__item:not(:last-child) {
3373
+ border-block-end: 1px solid var(--zx-color-border);
3374
+ }
3375
+ .zx-file-list__empty,
3376
+ .zx-file-list__loading {
3377
+ border: 1px dashed var(--zx-color-border);
3378
+ border-radius: var(--zx-radius-lg);
3379
+ background: var(--zx-color-bg-muted);
3380
+ padding: var(--zx-space-5);
3381
+ color: var(--zx-color-text-muted);
3382
+ text-align: center;
3383
+ }
3384
+ .zx-file-list__loading {
3385
+ display: grid;
3386
+ gap: var(--zx-space-4);
3387
+ }
3388
+ .zx-file-list__skeletons {
3389
+ display: grid;
3390
+ gap: var(--zx-space-3);
3391
+ text-align: start;
3392
+ }
3393
+ .zx-file-list__skeleton {
3394
+ display: grid;
3395
+ grid-template-columns: auto minmax(0, 1fr);
3396
+ gap: var(--zx-space-3);
3397
+ align-items: center;
3398
+ }
3399
+
3400
+ /* src/components/activity-item/activity-item.css */
3401
+ .zx-activity-item {
3402
+ inline-size: 100%;
3403
+ min-inline-size: 0;
3404
+ color: var(--zx-color-text);
3405
+ list-style: none;
3406
+ container-type: inline-size;
3407
+ }
3408
+ .zx-activity-item__article {
3409
+ display: grid;
3410
+ grid-template-columns: auto minmax(0, 1fr);
3411
+ gap: var(--zx-space-3);
3412
+ min-inline-size: 0;
3413
+ padding-block: var(--zx-space-4);
3414
+ }
3415
+ .zx-activity-item__avatar {
3416
+ position: relative;
3417
+ z-index: 1;
3418
+ display: flex;
3419
+ align-items: start;
3420
+ }
3421
+ .zx-activity-item__main {
3422
+ display: grid;
3423
+ gap: var(--zx-space-2);
3424
+ min-inline-size: 0;
3425
+ }
3426
+ .zx-activity-item__header {
3427
+ display: flex;
3428
+ flex-wrap: wrap;
3429
+ align-items: baseline;
3430
+ justify-content: space-between;
3431
+ gap: var(--zx-space-1) var(--zx-space-3);
3432
+ min-inline-size: 0;
3433
+ }
3434
+ .zx-activity-item__heading {
3435
+ display: flex;
3436
+ flex-wrap: wrap;
3437
+ gap: var(--zx-space-1);
3438
+ min-inline-size: 0;
3439
+ margin: 0;
3440
+ font-size: var(--zx-text-md);
3441
+ line-height: 1.45;
3442
+ overflow-wrap: anywhere;
3443
+ }
3444
+ .zx-activity-item__actor {
3445
+ font-weight: 700;
3446
+ }
3447
+ .zx-activity-item__title {
3448
+ font-weight: 400;
3449
+ }
3450
+ .zx-activity-item__state {
3451
+ flex: none;
3452
+ margin-inline-start: auto;
3453
+ align-self: center;
3454
+ }
3455
+ .zx-activity-item__time {
3456
+ flex: none;
3457
+ color: var(--zx-color-text-muted);
3458
+ font-size: var(--zx-text-xs);
3459
+ white-space: nowrap;
3460
+ }
3461
+ .zx-activity-item__body {
3462
+ min-inline-size: 0;
3463
+ color: var(--zx-color-text);
3464
+ line-height: 1.55;
3465
+ overflow-wrap: anywhere;
3466
+ }
3467
+ .zx-activity-item__metadata {
3468
+ display: flex;
3469
+ flex-wrap: wrap;
3470
+ gap: var(--zx-space-1) var(--zx-space-3);
3471
+ margin: 0;
3472
+ padding: 0;
3473
+ color: var(--zx-color-text-muted);
3474
+ font-size: var(--zx-text-sm);
3475
+ list-style: none;
3476
+ }
3477
+ .zx-activity-item__metadata-item {
3478
+ min-inline-size: 0;
3479
+ overflow-wrap: anywhere;
3480
+ }
3481
+ .zx-activity-item__metadata-item:not(:last-child)::after {
3482
+ content: "\b7";
3483
+ margin-inline-start: var(--zx-space-3);
3484
+ color: var(--zx-color-text-placeholder);
3485
+ }
3486
+ .zx-activity-item__attachments {
3487
+ display: grid;
3488
+ gap: var(--zx-space-2);
3489
+ min-inline-size: 0;
3490
+ }
3491
+ .zx-activity-item__attachments-item {
3492
+ min-inline-size: 0;
3493
+ }
3494
+ .zx-activity-item__actions {
3495
+ display: flex;
3496
+ flex-wrap: wrap;
3497
+ align-items: center;
3498
+ gap: var(--zx-space-1);
3499
+ }
3500
+ .zx-activity-item__action {
3501
+ text-decoration: none;
3502
+ }
3503
+ @container (max-width: 30rem) {
3504
+ .zx-activity-item__header {
3505
+ display: grid;
3506
+ justify-content: stretch;
3507
+ }
3508
+ .zx-activity-item__state {
3509
+ margin-inline-start: 0;
3510
+ justify-self: start;
3511
+ }
3512
+ }
3513
+
3514
+ /* src/components/activity-list/activity-list.css */
3515
+ .zx-activity-list {
3516
+ display: grid;
3517
+ gap: var(--zx-space-4);
3518
+ min-inline-size: 0;
3519
+ color: var(--zx-color-text);
3520
+ }
3521
+ .zx-activity-list__group {
3522
+ display: grid;
3523
+ gap: var(--zx-space-2);
3524
+ min-inline-size: 0;
3525
+ }
3526
+ .zx-activity-list__group-heading {
3527
+ margin: 0;
3528
+ color: var(--zx-color-text-muted);
3529
+ font-size: var(--zx-text-sm);
3530
+ font-weight: 700;
3531
+ letter-spacing: 0.02em;
3532
+ }
3533
+ .zx-activity-list__items {
3534
+ display: grid;
3535
+ min-inline-size: 0;
3536
+ margin: 0;
3537
+ padding: 0;
3538
+ list-style: none;
3539
+ }
3540
+ .zx-activity-list__items > .zx-activity-item:not(:last-child) {
3541
+ border-block-end: 1px solid var(--zx-color-border);
3542
+ }
3543
+ .zx-activity-list__empty,
3544
+ .zx-activity-list__loading {
3545
+ border: 1px dashed var(--zx-color-border);
3546
+ border-radius: var(--zx-radius-lg);
3547
+ background: var(--zx-color-bg-muted);
3548
+ padding: var(--zx-space-5);
3549
+ color: var(--zx-color-text-muted);
3550
+ text-align: center;
3551
+ }
3552
+ .zx-activity-list__loading {
3553
+ display: grid;
3554
+ gap: var(--zx-space-4);
3555
+ }
3556
+ .zx-activity-list__skeletons {
3557
+ display: grid;
3558
+ gap: var(--zx-space-3);
3559
+ text-align: start;
3560
+ }
3561
+ .zx-activity-list__skeleton {
3562
+ display: grid;
3563
+ grid-template-columns: auto minmax(0, 1fr);
3564
+ gap: var(--zx-space-3);
3565
+ align-items: start;
3566
+ }
3567
+ .zx-activity-list__skeleton > .zx-skeleton-text {
3568
+ padding-block-start: var(--zx-space-1);
3569
+ }
3570
+
3571
+ /* src/components/account-menu/account-menu.css */
3572
+ .zx-account-menu {
3573
+ display: block;
3574
+ min-inline-size: 0;
3575
+ }
3576
+ .zx-account-menu__trigger {
3577
+ display: grid;
3578
+ grid-template-columns: auto minmax(0, 1fr) auto;
3579
+ align-items: center;
3580
+ gap: var(--zx-space-3);
3581
+ inline-size: 100%;
3582
+ min-block-size: calc(var(--zx-control-height) + var(--zx-space-2));
3583
+ border-color: transparent;
3584
+ background: transparent;
3585
+ padding: var(--zx-space-2);
3586
+ color: inherit;
3587
+ text-align: start;
3588
+ }
3589
+ .zx-account-menu__trigger:hover,
3590
+ .zx-account-menu__trigger:focus-visible,
3591
+ .zx-account-menu__trigger[aria-expanded=true] {
3592
+ background: var(--zx-color-bg-hover);
3593
+ }
3594
+ .zx-account-menu__identity {
3595
+ display: grid;
3596
+ min-inline-size: 0;
3597
+ gap: 1px;
3598
+ }
3599
+ .zx-account-menu__name,
3600
+ .zx-account-menu__secondary {
3601
+ overflow: hidden;
3602
+ text-overflow: ellipsis;
3603
+ white-space: nowrap;
3604
+ }
3605
+ .zx-account-menu__name {
3606
+ font-weight: 650;
3607
+ }
3608
+ .zx-account-menu__secondary {
3609
+ color: var(--zx-color-text-muted);
3610
+ font-size: var(--zx-text-xs);
3611
+ }
3612
+ .zx-account-menu__chevron {
3613
+ display: inline-flex;
3614
+ }
3615
+ .zx-account-menu[data-compact=true] {
3616
+ inline-size: fit-content;
3617
+ }
3618
+ .zx-account-menu[data-compact=true] .zx-account-menu__trigger {
3619
+ display: inline-grid;
3620
+ grid-template-columns: auto;
3621
+ inline-size: auto;
3622
+ }
3623
+ .zx-account-menu[data-compact=true] .zx-account-menu__identity,
3624
+ .zx-account-menu[data-compact=true] .zx-account-menu__chevron {
3625
+ display: none;
3626
+ }
3627
+ .zx-account-menu__panel-identity {
3628
+ display: grid;
3629
+ min-inline-size: 220px;
3630
+ gap: 2px;
3631
+ margin: calc(-1 * var(--zx-space-1)) calc(-1 * var(--zx-space-1)) var(--zx-space-1);
3632
+ border-block-end: 1px solid var(--zx-color-overlay-divider);
3633
+ padding: var(--zx-space-3);
3634
+ }
3635
+ .zx-account-menu__panel-identity span {
3636
+ color: var(--zx-color-text-muted);
3637
+ font-size: var(--zx-text-xs);
3638
+ }
3639
+
3640
+ /* src/components/app-rail/app-rail.css */
3641
+ .zx-app-rail {
3642
+ display: flex;
3643
+ min-inline-size: 0;
3644
+ border: 1px solid var(--zx-color-glass-border);
3645
+ background: var(--zx-color-glass-chrome);
3646
+ box-shadow: var(--zx-glass-chrome-shadow);
3647
+ color: var(--zx-color-text);
3648
+ }
3649
+ .zx-app-rail[data-orientation=vertical] {
3650
+ flex-direction: column;
3651
+ inline-size: calc(var(--zx-control-height) + var(--zx-space-3));
3652
+ }
3653
+ .zx-app-rail[data-orientation=horizontal] {
3654
+ flex-direction: row;
3655
+ block-size: calc(var(--zx-control-height) + var(--zx-space-3));
3656
+ }
3657
+ .zx-app-rail__header,
3658
+ .zx-app-rail__footer {
3659
+ display: flex;
3660
+ align-items: center;
3661
+ justify-content: center;
3662
+ padding: var(--zx-space-1);
3663
+ }
3664
+ .zx-app-rail__header[hidden],
3665
+ .zx-app-rail__footer[hidden] {
3666
+ display: none;
3667
+ }
3668
+ .zx-app-rail[data-orientation=vertical] .zx-app-rail__footer {
3669
+ margin-block-start: auto;
3670
+ }
3671
+ .zx-app-rail[data-orientation=horizontal] .zx-app-rail__footer {
3672
+ margin-inline-start: auto;
3673
+ }
3674
+ .zx-app-rail__list {
3675
+ display: flex;
3676
+ flex: 1;
3677
+ gap: var(--zx-space-1);
3678
+ margin: 0;
3679
+ padding: var(--zx-space-1);
3680
+ list-style: none;
3681
+ }
3682
+ .zx-app-rail[data-orientation=vertical] .zx-app-rail__list {
3683
+ flex-direction: column;
3684
+ }
3685
+ .zx-app-rail[data-orientation=horizontal] .zx-app-rail__list {
3686
+ flex-direction: row;
3687
+ }
3688
+ .zx-app-rail__row {
3689
+ display: flex;
3690
+ }
3691
+ .zx-app-rail__item {
3692
+ position: relative;
3693
+ display: inline-grid;
3694
+ place-items: center;
3695
+ inline-size: var(--zx-control-height);
3696
+ block-size: var(--zx-control-height);
3697
+ border-color: transparent;
3698
+ border-radius: var(--zx-radius-md);
3699
+ background: transparent;
3700
+ color: inherit;
3701
+ padding: 0;
3702
+ text-decoration: none;
3703
+ }
3704
+ .zx-app-rail__item:hover,
3705
+ .zx-app-rail__item:focus-visible,
3706
+ .zx-app-rail__item[aria-expanded=true],
3707
+ .zx-app-rail__item[data-active-descendant=true],
3708
+ .zx-app-rail__item[aria-current=page] {
3709
+ background: var(--zx-color-bg-hover);
3710
+ color: var(--zx-color-accent);
3711
+ }
3712
+ .zx-app-rail__item[aria-disabled=true] {
3713
+ color: var(--zx-color-text-muted);
3714
+ cursor: not-allowed;
3715
+ opacity: .65;
3716
+ }
3717
+ .zx-app-rail__item-label {
3718
+ position: absolute;
3719
+ inline-size: 1px;
3720
+ block-size: 1px;
3721
+ overflow: hidden;
3722
+ clip-path: inset(50%);
3723
+ }
3724
+ .zx-app-rail__item-icon {
3725
+ display: inline-flex;
3726
+ }
3727
+ .zx-app-rail__item-badge {
3728
+ position: absolute;
3729
+ inset-inline-end: 1px;
3730
+ inset-block-start: 1px;
3731
+ min-inline-size: 15px;
3732
+ border-radius: var(--zx-radius-full);
3733
+ background: var(--zx-color-accent);
3734
+ padding-inline: 3px;
3735
+ color: var(--zx-color-on-accent);
3736
+ font-size: 10px;
3737
+ line-height: 15px;
3738
+ text-align: center;
3739
+ }
3740
+ .zx-app-rail__item-disclosure {
3741
+ position: absolute;
3742
+ inset-inline-end: 1px;
3743
+ inset-block-end: 1px;
3191
3744
  display: inline-flex;
3192
3745
  }
3193
3746
  .zx-app-rail__popover {
3194
- min-inline-size: 220px;
3195
- padding: var(--zx-space-2);
3747
+ --zx-app-rail-gutter: var(--zx-space-2);
3748
+ --zx-app-rail-icon: var(--zx-space-6);
3749
+ --zx-app-rail-item-gap: var(--zx-space-3);
3750
+ --zx-app-rail-item-height: calc(var(--zx-control-height) + var(--zx-space-2));
3751
+ --zx-app-rail-pad-x: var(--zx-space-3);
3752
+ --zx-app-rail-row-gap: var(--zx-space-1);
3753
+ --zx-app-rail-radius: var(--zx-radius-xl);
3754
+ --zx-app-rail-marker: 3px;
3755
+ --zx-app-rail-hover: color-mix(in srgb, var(--zx-color-text) 7%, transparent);
3756
+ --zx-app-rail-press: color-mix(in srgb, var(--zx-color-text) 14%, transparent);
3757
+ min-inline-size: 240px;
3758
+ }
3759
+ .zx-dropdown.zx-app-rail__popover {
3760
+ max-inline-size: min(280px, calc(100vw - (2 * var(--zx-space-3))));
3761
+ padding: var(--zx-space-2) var(--zx-app-rail-gutter);
3196
3762
  }
3197
3763
  .zx-app-rail__flyout-title {
3198
- padding: var(--zx-space-2) var(--zx-space-3);
3764
+ padding: var(--zx-space-1) var(--zx-app-rail-pad-x) var(--zx-space-2);
3199
3765
  color: var(--zx-color-text-muted);
3200
3766
  font-size: var(--zx-text-xs);
3201
3767
  font-weight: 700;
3768
+ line-height: 1.3;
3202
3769
  }
3203
3770
  .zx-app-rail__flyout-list {
3204
3771
  display: grid;
3205
- gap: var(--zx-space-1);
3772
+ gap: var(--zx-app-rail-row-gap);
3206
3773
  margin: 0;
3207
3774
  padding: 0;
3208
3775
  list-style: none;
3209
3776
  }
3777
+ .zx-app-rail__flyout-list:not(:has(.zx-app-rail__flyout-item-icon)) {
3778
+ --zx-app-rail-icon: 0px;
3779
+ --zx-app-rail-item-gap: 0px;
3780
+ }
3210
3781
  .zx-app-rail__flyout-item {
3782
+ position: relative;
3211
3783
  display: grid;
3212
- grid-template-columns: auto minmax(0, 1fr) auto auto;
3784
+ grid-template-columns: calc(var(--zx-app-rail-icon) + var(--zx-app-rail-item-gap)) minmax(0, 1fr) auto auto;
3213
3785
  align-items: center;
3214
- gap: var(--zx-space-2);
3786
+ column-gap: 0;
3215
3787
  inline-size: 100%;
3216
- min-block-size: var(--zx-control-height);
3217
- border-color: transparent;
3218
- border-radius: var(--zx-radius-md);
3788
+ min-block-size: var(--zx-app-rail-item-height);
3789
+ border: 0;
3790
+ border-radius: var(--zx-app-rail-radius);
3219
3791
  background: transparent;
3220
- padding-inline: var(--zx-control-pad-x);
3221
- color: inherit;
3792
+ padding-block: var(--zx-space-1);
3793
+ padding-inline: var(--zx-app-rail-pad-x);
3794
+ color: var(--zx-color-text);
3795
+ font-size: var(--zx-text-md);
3796
+ font-weight: 500;
3797
+ line-height: 1.35;
3222
3798
  text-align: start;
3223
3799
  text-decoration: none;
3224
3800
  }
3225
- .zx-app-rail__flyout-item:hover,
3226
- .zx-app-rail__flyout-item:focus-visible,
3227
- .zx-app-rail__flyout-item[aria-current=page] {
3228
- background: var(--zx-color-overlay-hover);
3229
- color: var(--zx-color-accent);
3801
+ @media (pointer: coarse) {
3802
+ .zx-app-rail__flyout-item {
3803
+ min-block-size: 40px;
3804
+ }
3805
+ }
3806
+ .zx-app-rail__flyout-item::before {
3807
+ content: "";
3808
+ position: absolute;
3809
+ inset-block: 50%;
3810
+ inset-inline-start: calc(-1 * var(--zx-app-rail-gutter));
3811
+ inline-size: var(--zx-app-rail-marker);
3812
+ border-start-end-radius: var(--zx-radius-full);
3813
+ border-end-end-radius: var(--zx-radius-full);
3814
+ background: var(--zx-color-accent);
3815
+ opacity: 0;
3816
+ }
3817
+ .zx-app-rail__popover[data-side=right] .zx-app-rail__flyout-item::before {
3818
+ inset-inline: auto calc(-1 * var(--zx-app-rail-gutter));
3819
+ border-radius: 0;
3820
+ border-start-start-radius: var(--zx-radius-full);
3821
+ border-end-start-radius: var(--zx-radius-full);
3822
+ }
3823
+ .zx-app-rail__flyout-item[aria-current=page]::before {
3824
+ inset-block: 25%;
3825
+ opacity: 1;
3826
+ }
3827
+ .zx-app-rail__flyout-item[data-active-descendant=true][aria-expanded=false]::before {
3828
+ inset-block: 38%;
3829
+ opacity: .55;
3230
3830
  }
3231
3831
  .zx-app-rail__flyout-item-icon {
3232
- display: inline-flex;
3233
3832
  grid-column: 1;
3833
+ display: flex;
3834
+ align-items: center;
3835
+ justify-content: center;
3836
+ inline-size: var(--zx-app-rail-icon);
3837
+ color: var(--zx-color-text-muted);
3234
3838
  }
3235
3839
  .zx-app-rail__flyout-item-label {
3236
3840
  grid-column: 2;
3841
+ min-inline-size: 0;
3842
+ hyphens: auto;
3843
+ overflow-wrap: break-word;
3237
3844
  }
3238
3845
  .zx-app-rail__flyout-item-badge {
3239
3846
  grid-column: 3;
3847
+ margin-inline-start: var(--zx-space-2);
3240
3848
  color: var(--zx-color-text-muted);
3241
3849
  font-size: var(--zx-text-xs);
3850
+ font-variant-numeric: tabular-nums;
3851
+ line-height: 1;
3242
3852
  }
3243
3853
  .zx-app-rail__flyout-item-disclosure {
3244
- display: inline-flex;
3245
3854
  grid-column: 4;
3855
+ display: inline-flex;
3856
+ margin-inline-start: var(--zx-space-1);
3857
+ color: var(--zx-color-text-muted);
3858
+ }
3859
+ .zx-app-rail__flyout-item:hover {
3860
+ background: var(--zx-app-rail-hover);
3861
+ }
3862
+ .zx-app-rail__flyout-item:hover .zx-app-rail__flyout-item-icon,
3863
+ .zx-app-rail__flyout-item:hover .zx-app-rail__flyout-item-disclosure {
3864
+ color: var(--zx-color-text);
3865
+ }
3866
+ .zx-app-rail__flyout-item:active {
3867
+ background: var(--zx-app-rail-press);
3868
+ }
3869
+ .zx-app-rail__flyout-item[aria-expanded=true]:not([aria-current=page]) {
3870
+ background: var(--zx-app-rail-hover);
3871
+ }
3872
+ .zx-app-rail__flyout-item[aria-expanded=true]:not([aria-current=page]) .zx-app-rail__flyout-item-icon,
3873
+ .zx-app-rail__flyout-item[aria-expanded=true]:not([aria-current=page]) .zx-app-rail__flyout-item-disclosure {
3874
+ color: var(--zx-color-text);
3875
+ }
3876
+ .zx-app-rail__flyout-item[data-active-descendant=true][aria-expanded=false] {
3877
+ color: var(--zx-color-accent);
3878
+ font-weight: 600;
3879
+ }
3880
+ .zx-app-rail__flyout-item[aria-current=page] {
3881
+ background: var(--zx-color-accent);
3882
+ color: var(--zx-color-on-accent);
3883
+ font-weight: 600;
3884
+ }
3885
+ .zx-app-rail__flyout-item[aria-current=page]:hover {
3886
+ background: color-mix(in srgb, var(--zx-color-text) 8%, var(--zx-color-accent));
3887
+ }
3888
+ .zx-app-rail__flyout-item[aria-current=page]:active {
3889
+ background: color-mix(in srgb, var(--zx-color-text) 16%, var(--zx-color-accent));
3890
+ }
3891
+ .zx-app-rail__flyout-item[aria-current=page]:focus-visible {
3892
+ box-shadow: inset 0 0 0 2px var(--zx-color-on-accent), var(--zx-focus-ring);
3893
+ }
3894
+ .zx-app-rail__flyout-item[aria-current=page] .zx-app-rail__flyout-item-icon,
3895
+ .zx-app-rail__flyout-item[aria-current=page] .zx-app-rail__flyout-item-badge,
3896
+ .zx-app-rail__flyout-item[aria-current=page] .zx-app-rail__flyout-item-disclosure {
3897
+ color: inherit;
3898
+ }
3899
+ .zx-app-rail__flyout-item[aria-disabled=true] {
3246
3900
  color: var(--zx-color-text-muted);
3901
+ cursor: not-allowed;
3902
+ }
3903
+ .zx-app-rail__flyout-item[aria-disabled=true] .zx-app-rail__flyout-item-icon {
3904
+ opacity: .55;
3905
+ }
3906
+ .zx-app-rail__flyout-item[aria-disabled=true]:hover,
3907
+ .zx-app-rail__flyout-item[aria-disabled=true]:active {
3908
+ background: transparent;
3909
+ }
3910
+ @media (prefers-reduced-motion: no-preference) {
3911
+ .zx-app-rail__flyout-item {
3912
+ transition:
3913
+ background-color var(--zx-dur-fast) var(--zx-ease),
3914
+ color var(--zx-dur-fast) var(--zx-ease),
3915
+ box-shadow var(--zx-dur-fast) var(--zx-ease);
3916
+ }
3917
+ .zx-app-rail__flyout-item::before {
3918
+ transition: opacity var(--zx-dur-base) var(--zx-ease), inset-block var(--zx-dur-base) var(--zx-ease);
3919
+ }
3920
+ .zx-app-rail__flyout-item:active {
3921
+ transform: scale(.985);
3922
+ }
3923
+ }
3924
+ @media (forced-colors: active) {
3925
+ .zx-app-rail__flyout-item[aria-current=page] {
3926
+ background: Highlight;
3927
+ color: HighlightText;
3928
+ }
3929
+ .zx-app-rail__flyout-item::before {
3930
+ background: Highlight;
3931
+ }
3247
3932
  }
3248
3933
  @media (prefers-reduced-transparency: reduce) {
3249
3934
  .zx-app-rail {
@@ -3255,6 +3940,18 @@ button.zx-panel__toggle:focus-visible {
3255
3940
 
3256
3941
  /* src/components/app-sidebar/app-sidebar.css */
3257
3942
  .zx-app-sidebar {
3943
+ --zx-app-sidebar-gutter: var(--zx-space-2);
3944
+ --zx-app-sidebar-icon: var(--zx-space-6);
3945
+ --zx-app-sidebar-item-gap: var(--zx-space-3);
3946
+ --zx-app-sidebar-item-height: calc(var(--zx-control-height) + var(--zx-space-2));
3947
+ --zx-app-sidebar-pad-x: var(--zx-space-3);
3948
+ --zx-app-sidebar-row-gap: var(--zx-space-1);
3949
+ --zx-app-sidebar-group-gap: var(--zx-space-4);
3950
+ --zx-app-sidebar-indent: var(--zx-space-5);
3951
+ --zx-app-sidebar-marker: 3px;
3952
+ --zx-app-sidebar-radius: var(--zx-radius-xl);
3953
+ --zx-app-sidebar-hover: color-mix(in srgb, var(--zx-color-text) 7%, transparent);
3954
+ --zx-app-sidebar-press: color-mix(in srgb, var(--zx-color-text) 14%, transparent);
3258
3955
  display: flex;
3259
3956
  min-block-size: 0;
3260
3957
  border: 1px solid var(--zx-color-glass-border);
@@ -3262,6 +3959,10 @@ button.zx-panel__toggle:focus-visible {
3262
3959
  box-shadow: var(--zx-glass-chrome-shadow);
3263
3960
  color: var(--zx-color-text);
3264
3961
  }
3962
+ [data-zx-density=compact] .zx-app-sidebar,
3963
+ .zx-app-sidebar[data-zx-density=compact] {
3964
+ --zx-app-sidebar-group-gap: var(--zx-space-3);
3965
+ }
3265
3966
  .zx-app-sidebar[data-orientation=horizontal] {
3266
3967
  inline-size: 100%;
3267
3968
  }
@@ -3286,76 +3987,183 @@ button.zx-panel__toggle:focus-visible {
3286
3987
  grid-template-columns: minmax(0, 1fr) auto;
3287
3988
  align-items: center;
3288
3989
  gap: var(--zx-space-2);
3289
- min-block-size: calc(var(--zx-control-height) + var(--zx-space-3));
3290
- border-block-end: 1px solid var(--zx-color-border);
3291
- padding: var(--zx-space-2);
3990
+ min-block-size: calc(var(--zx-control-height) + var(--zx-space-4));
3991
+ padding: var(--zx-space-2) var(--zx-space-3);
3992
+ }
3993
+ .zx-app-sidebar__header-content {
3994
+ min-inline-size: 0;
3995
+ }
3996
+ .zx-app-sidebar__nav {
3997
+ min-block-size: 0;
3998
+ overflow: auto;
3999
+ padding: var(--zx-space-2) var(--zx-app-sidebar-gutter) var(--zx-space-3);
4000
+ }
4001
+ .zx-app-sidebar__list,
4002
+ .zx-app-sidebar__sublist {
4003
+ display: grid;
4004
+ gap: var(--zx-app-sidebar-row-gap);
4005
+ margin: 0;
4006
+ padding: 0;
4007
+ list-style: none;
4008
+ }
4009
+ .zx-app-sidebar__list:not(:has(.zx-app-sidebar__item-icon)) {
4010
+ --zx-app-sidebar-icon: 0px;
4011
+ --zx-app-sidebar-item-gap: 0px;
4012
+ }
4013
+ .zx-app-sidebar__sublist {
4014
+ position: relative;
4015
+ margin-block-start: var(--zx-app-sidebar-row-gap);
4016
+ }
4017
+ .zx-app-sidebar__sublist[hidden] {
4018
+ display: none;
4019
+ }
4020
+ .zx-app-sidebar__sublist::before {
4021
+ content: "";
4022
+ position: absolute;
4023
+ inset-block: var(--zx-space-1);
4024
+ inset-inline-start: calc(var(--zx-app-sidebar-pad-x) + var(--zx-app-sidebar-icon) / 2);
4025
+ inline-size: 1px;
4026
+ border-radius: var(--zx-radius-full);
4027
+ background: var(--zx-color-border);
4028
+ }
4029
+ .zx-app-sidebar__list > .zx-app-sidebar__row:has(> .zx-app-sidebar__sublist),
4030
+ .zx-app-sidebar__list > .zx-app-sidebar__row:has(> .zx-app-sidebar__sublist) + .zx-app-sidebar__row {
4031
+ margin-block-start: var(--zx-app-sidebar-group-gap);
4032
+ }
4033
+ .zx-app-sidebar__list > .zx-app-sidebar__row:first-child {
4034
+ margin-block-start: 0;
4035
+ }
4036
+ .zx-app-sidebar__item {
4037
+ position: relative;
4038
+ display: grid;
4039
+ grid-template-columns: calc(var(--zx-app-sidebar-icon) + var(--zx-app-sidebar-item-gap)) minmax(0, 1fr) auto auto;
4040
+ align-items: center;
4041
+ column-gap: 0;
4042
+ inline-size: 100%;
4043
+ min-block-size: var(--zx-app-sidebar-item-height);
4044
+ border: 0;
4045
+ border-radius: var(--zx-app-sidebar-radius);
4046
+ background: transparent;
4047
+ padding-block: var(--zx-space-1);
4048
+ padding-inline: var(--zx-app-sidebar-pad-x);
4049
+ color: var(--zx-color-text);
4050
+ font-size: var(--zx-text-md);
4051
+ font-weight: 500;
4052
+ line-height: 1.35;
4053
+ text-align: start;
4054
+ text-decoration: none;
4055
+ }
4056
+ @media (pointer: coarse) {
4057
+ .zx-app-sidebar__item {
4058
+ min-block-size: 40px;
4059
+ }
4060
+ }
4061
+ .zx-app-sidebar__row[data-level="2"] > .zx-app-sidebar__item {
4062
+ padding-inline-start: calc(var(--zx-app-sidebar-pad-x) + var(--zx-app-sidebar-indent));
4063
+ }
4064
+ .zx-app-sidebar__row[data-level="3"] > .zx-app-sidebar__item {
4065
+ padding-inline-start: calc(var(--zx-app-sidebar-pad-x) + 2 * var(--zx-app-sidebar-indent));
4066
+ }
4067
+ .zx-app-sidebar__item::before {
4068
+ content: "";
4069
+ position: absolute;
4070
+ inset-block: 50%;
4071
+ inset-inline-start: calc(-1 * var(--zx-app-sidebar-gutter));
4072
+ inline-size: var(--zx-app-sidebar-marker);
4073
+ border-start-end-radius: var(--zx-radius-full);
4074
+ border-end-end-radius: var(--zx-radius-full);
4075
+ background: var(--zx-color-accent);
4076
+ opacity: 0;
4077
+ }
4078
+ .zx-app-sidebar[data-side=right] .zx-app-sidebar__item::before {
4079
+ inset-inline: auto calc(-1 * var(--zx-app-sidebar-gutter));
4080
+ border-radius: 0;
4081
+ border-start-start-radius: var(--zx-radius-full);
4082
+ border-end-start-radius: var(--zx-radius-full);
4083
+ }
4084
+ .zx-app-sidebar__item[aria-current=page]::before {
4085
+ inset-block: 25%;
4086
+ opacity: 1;
4087
+ }
4088
+ .zx-app-sidebar__item[data-active-descendant=true][aria-expanded=false]::before {
4089
+ inset-block: 38%;
4090
+ opacity: .55;
4091
+ }
4092
+ .zx-app-sidebar__item-icon {
4093
+ grid-column: 1;
4094
+ display: flex;
4095
+ align-items: center;
4096
+ justify-content: center;
4097
+ inline-size: var(--zx-app-sidebar-icon);
4098
+ color: var(--zx-color-text-muted);
4099
+ }
4100
+ .zx-app-sidebar__item-label {
4101
+ grid-column: 2;
4102
+ min-inline-size: 0;
4103
+ hyphens: auto;
4104
+ overflow-wrap: break-word;
4105
+ }
4106
+ .zx-app-sidebar__item-badge {
4107
+ grid-column: 3;
4108
+ margin-inline-start: var(--zx-space-2);
4109
+ color: var(--zx-color-text-muted);
4110
+ font-size: var(--zx-text-xs);
4111
+ font-variant-numeric: tabular-nums;
4112
+ line-height: 1;
4113
+ }
4114
+ .zx-app-sidebar__item-disclosure {
4115
+ grid-column: 4;
4116
+ display: inline-flex;
4117
+ margin-inline-start: var(--zx-space-1);
4118
+ color: var(--zx-color-text-muted);
3292
4119
  }
3293
- .zx-app-sidebar__header-content {
3294
- min-inline-size: 0;
4120
+ .zx-app-sidebar__item:hover {
4121
+ background: var(--zx-app-sidebar-hover);
3295
4122
  }
3296
- .zx-app-sidebar__nav {
3297
- min-block-size: 0;
3298
- overflow: auto;
3299
- padding: var(--zx-space-2);
4123
+ .zx-app-sidebar__item:hover .zx-app-sidebar__item-icon,
4124
+ .zx-app-sidebar__item:hover .zx-app-sidebar__item-disclosure {
4125
+ color: var(--zx-color-text);
3300
4126
  }
3301
- .zx-app-sidebar__list,
3302
- .zx-app-sidebar__sublist {
3303
- display: grid;
3304
- gap: var(--zx-space-1);
3305
- margin: 0;
3306
- padding: 0;
3307
- list-style: none;
4127
+ .zx-app-sidebar__item:active {
4128
+ background: var(--zx-app-sidebar-press);
3308
4129
  }
3309
- .zx-app-sidebar__sublist {
3310
- margin-block-start: var(--zx-space-1);
4130
+ .zx-app-sidebar__item[data-active-descendant=true][aria-expanded=false] {
4131
+ color: var(--zx-color-accent);
4132
+ font-weight: 600;
3311
4133
  }
3312
- .zx-app-sidebar__sublist[hidden] {
3313
- display: none;
4134
+ .zx-app-sidebar__item[aria-current=page] {
4135
+ background: var(--zx-color-accent);
4136
+ color: var(--zx-color-on-accent);
4137
+ font-weight: 600;
3314
4138
  }
3315
- .zx-app-sidebar__item {
3316
- display: grid;
3317
- grid-template-columns: auto minmax(0, 1fr) auto auto;
3318
- align-items: center;
3319
- gap: var(--zx-space-2);
3320
- inline-size: 100%;
3321
- min-block-size: var(--zx-control-height);
3322
- border-color: transparent;
3323
- border-radius: var(--zx-radius-md);
3324
- background: transparent;
3325
- padding-inline: var(--zx-space-3);
3326
- color: inherit;
3327
- text-align: start;
3328
- text-decoration: none;
4139
+ .zx-app-sidebar__item[aria-current=page]:hover {
4140
+ background: color-mix(in srgb, var(--zx-color-text) 8%, var(--zx-color-accent));
3329
4141
  }
3330
- .zx-app-sidebar__row[data-level="2"] > .zx-app-sidebar__item {
3331
- padding-inline-start: calc(var(--zx-space-3) + var(--zx-space-5));
4142
+ .zx-app-sidebar__item[aria-current=page]:active {
4143
+ background: color-mix(in srgb, var(--zx-color-text) 16%, var(--zx-color-accent));
3332
4144
  }
3333
- .zx-app-sidebar__row[data-level="3"] > .zx-app-sidebar__item {
3334
- padding-inline-start: calc(var(--zx-space-3) + var(--zx-space-7));
4145
+ .zx-app-sidebar__item[aria-current=page]:focus-visible {
4146
+ box-shadow: inset 0 0 0 2px var(--zx-color-on-accent), var(--zx-focus-ring);
3335
4147
  }
3336
- .zx-app-sidebar__item:hover,
3337
- .zx-app-sidebar__item:focus-visible,
3338
- .zx-app-sidebar__item[data-active-descendant=true],
3339
- .zx-app-sidebar__item[aria-current=page] {
3340
- background: var(--zx-color-bg-hover);
3341
- color: var(--zx-color-accent);
4148
+ .zx-app-sidebar__item[aria-current=page] .zx-app-sidebar__item-icon,
4149
+ .zx-app-sidebar__item[aria-current=page] .zx-app-sidebar__item-badge,
4150
+ .zx-app-sidebar__item[aria-current=page] .zx-app-sidebar__item-disclosure {
4151
+ color: inherit;
3342
4152
  }
3343
4153
  .zx-app-sidebar__item[aria-disabled=true] {
3344
4154
  color: var(--zx-color-text-muted);
3345
4155
  cursor: not-allowed;
3346
- opacity: .65;
3347
4156
  }
3348
- .zx-app-sidebar__item-icon,
3349
- .zx-app-sidebar__item-disclosure {
3350
- display: inline-flex;
4157
+ .zx-app-sidebar__item[aria-disabled=true] .zx-app-sidebar__item-icon {
4158
+ opacity: .55;
3351
4159
  }
3352
- .zx-app-sidebar__item-badge {
3353
- color: var(--zx-color-text-muted);
3354
- font-size: var(--zx-text-xs);
4160
+ .zx-app-sidebar__item[aria-disabled=true]:hover,
4161
+ .zx-app-sidebar__item[aria-disabled=true]:active {
4162
+ background: transparent;
3355
4163
  }
3356
4164
  .zx-app-sidebar__footer {
3357
4165
  border-block-start: 1px solid var(--zx-color-border);
3358
- padding: var(--zx-space-2);
4166
+ padding: var(--zx-space-2) var(--zx-space-3);
3359
4167
  }
3360
4168
  .zx-app-sidebar__footer[hidden] {
3361
4169
  display: none;
@@ -3364,6 +4172,150 @@ button.zx-panel__toggle:focus-visible {
3364
4172
  display: grid;
3365
4173
  gap: var(--zx-space-1);
3366
4174
  }
4175
+ .zx-app-sidebar__rail .zx-app-rail__item[aria-current=page] {
4176
+ background: var(--zx-color-accent);
4177
+ color: var(--zx-color-on-accent);
4178
+ }
4179
+ .zx-app-sidebar__rail .zx-app-rail__item[aria-current=page]:hover {
4180
+ background: color-mix(in srgb, var(--zx-color-text) 8%, var(--zx-color-accent));
4181
+ }
4182
+ .zx-app-sidebar__rail .zx-app-rail__item:not([aria-current=page]):hover,
4183
+ .zx-app-sidebar__rail .zx-app-rail__item:not([aria-current=page])[aria-expanded=true] {
4184
+ background: var(--zx-app-sidebar-hover);
4185
+ color: var(--zx-color-text);
4186
+ }
4187
+ .zx-app-sidebar__rail .zx-app-rail__item:not([aria-current=page]):active {
4188
+ background: var(--zx-app-sidebar-press);
4189
+ }
4190
+ .zx-app-sidebar__rail .zx-app-rail__item[aria-current=page]:focus-visible {
4191
+ box-shadow: inset 0 0 0 2px var(--zx-color-on-accent), var(--zx-focus-ring);
4192
+ }
4193
+ .zx-app-sidebar__rail .zx-app-rail__item::after {
4194
+ content: "";
4195
+ position: absolute;
4196
+ inset-block: 22%;
4197
+ inset-inline-start: calc(-1 * var(--zx-space-1));
4198
+ inline-size: var(--zx-app-sidebar-marker);
4199
+ border-start-end-radius: var(--zx-radius-full);
4200
+ border-end-end-radius: var(--zx-radius-full);
4201
+ background: var(--zx-color-accent);
4202
+ opacity: 0;
4203
+ }
4204
+ .zx-app-sidebar[data-side=right] .zx-app-rail__item::after {
4205
+ inset-inline: auto calc(-1 * var(--zx-space-1));
4206
+ border-radius: 0;
4207
+ border-start-start-radius: var(--zx-radius-full);
4208
+ border-end-start-radius: var(--zx-radius-full);
4209
+ }
4210
+ .zx-app-sidebar[data-orientation=horizontal] .zx-app-rail__item::after {
4211
+ inset-block: auto calc(-1 * var(--zx-space-1));
4212
+ inset-inline: 22%;
4213
+ inline-size: auto;
4214
+ block-size: var(--zx-app-sidebar-marker);
4215
+ border-radius: 0;
4216
+ border-start-start-radius: var(--zx-radius-full);
4217
+ border-start-end-radius: var(--zx-radius-full);
4218
+ }
4219
+ .zx-app-sidebar[data-side=bottom] .zx-app-rail__item::after {
4220
+ inset-block: calc(-1 * var(--zx-space-1)) auto;
4221
+ border-radius: 0;
4222
+ border-end-start-radius: var(--zx-radius-full);
4223
+ border-end-end-radius: var(--zx-radius-full);
4224
+ }
4225
+ .zx-app-sidebar__rail .zx-app-rail__item[aria-current=page]::after {
4226
+ opacity: 1;
4227
+ }
4228
+ .zx-app-sidebar__rail .zx-app-rail__item[data-active-descendant=true]:not([aria-current=page])::after {
4229
+ inset-block: 34%;
4230
+ opacity: .55;
4231
+ }
4232
+ .zx-app-sidebar[data-orientation=horizontal] .zx-app-rail__item[data-active-descendant=true]:not([aria-current=page])::after {
4233
+ inset-block: auto calc(-1 * var(--zx-space-1));
4234
+ inset-inline: 34%;
4235
+ }
4236
+ .zx-app-sidebar__rail .zx-app-rail__item-badge {
4237
+ inset-block-start: 0;
4238
+ inset-inline-end: 0;
4239
+ min-inline-size: var(--zx-space-4);
4240
+ block-size: var(--zx-space-4);
4241
+ border-radius: var(--zx-radius-full);
4242
+ background: var(--zx-color-accent);
4243
+ box-shadow: 0 0 0 2px var(--zx-color-bg-surface);
4244
+ padding-inline: var(--zx-space-1);
4245
+ color: var(--zx-color-on-accent);
4246
+ font-size: var(--zx-text-xs);
4247
+ font-variant-numeric: tabular-nums;
4248
+ font-weight: 600;
4249
+ line-height: var(--zx-space-4);
4250
+ text-align: center;
4251
+ }
4252
+ .zx-app-sidebar__rail .zx-app-rail__item-badge[data-zx-badge=dot] {
4253
+ min-inline-size: 0;
4254
+ inline-size: var(--zx-space-2);
4255
+ block-size: var(--zx-space-2);
4256
+ padding: 0;
4257
+ font-size: 0;
4258
+ line-height: 0;
4259
+ }
4260
+ .zx-app-sidebar__rail .zx-app-rail__item[aria-current=page] .zx-app-rail__item-badge {
4261
+ background: var(--zx-color-on-accent);
4262
+ box-shadow: none;
4263
+ color: var(--zx-color-accent);
4264
+ }
4265
+ @media (prefers-reduced-motion: no-preference) {
4266
+ .zx-app-sidebar__item,
4267
+ .zx-app-sidebar__rail .zx-app-rail__item {
4268
+ transition:
4269
+ background-color var(--zx-dur-fast) var(--zx-ease),
4270
+ color var(--zx-dur-fast) var(--zx-ease),
4271
+ box-shadow var(--zx-dur-fast) var(--zx-ease);
4272
+ }
4273
+ .zx-app-sidebar__item::before,
4274
+ .zx-app-sidebar__rail .zx-app-rail__item::after {
4275
+ transition: opacity var(--zx-dur-base) var(--zx-ease), inset-block var(--zx-dur-base) var(--zx-ease);
4276
+ }
4277
+ .zx-app-sidebar__item:active,
4278
+ .zx-app-sidebar__rail .zx-app-rail__item:active {
4279
+ transform: scale(.985);
4280
+ }
4281
+ .zx-app-sidebar__expanded,
4282
+ .zx-app-sidebar__rail {
4283
+ animation: zx-app-sidebar-mode var(--zx-dur-base) var(--zx-ease);
4284
+ }
4285
+ .zx-app-sidebar__sublist[data-branch-motion=expand] {
4286
+ animation: zx-app-sidebar-branch var(--zx-dur-base) var(--zx-ease);
4287
+ }
4288
+ }
4289
+ @keyframes zx-app-sidebar-mode {
4290
+ from {
4291
+ opacity: 0;
4292
+ }
4293
+ to {
4294
+ opacity: 1;
4295
+ }
4296
+ }
4297
+ @keyframes zx-app-sidebar-branch {
4298
+ from {
4299
+ opacity: 0;
4300
+ transform: translateY(-4px);
4301
+ }
4302
+ to {
4303
+ opacity: 1;
4304
+ transform: translateY(0);
4305
+ }
4306
+ }
4307
+ @media (forced-colors: active) {
4308
+ .zx-app-sidebar__item[aria-current=page],
4309
+ .zx-app-sidebar__rail .zx-app-rail__item[aria-current=page],
4310
+ .zx-app-sidebar__rail .zx-app-rail__item-badge {
4311
+ background: Highlight;
4312
+ color: HighlightText;
4313
+ }
4314
+ .zx-app-sidebar__item::before,
4315
+ .zx-app-sidebar__rail .zx-app-rail__item::after {
4316
+ background: Highlight;
4317
+ }
4318
+ }
3367
4319
  @media (prefers-reduced-transparency: reduce) {
3368
4320
  .zx-app-sidebar {
3369
4321
  border-color: var(--zx-color-border);
@@ -3454,7 +4406,8 @@ button.zx-panel__toggle:focus-visible {
3454
4406
  overflow-wrap: anywhere;
3455
4407
  }
3456
4408
  .zx-message__close {
3457
- margin: calc(-1 * var(--zx-space-1)) calc(-1 * var(--zx-space-1)) 0 0;
4409
+ margin-block: calc(-1 * var(--zx-space-1)) 0;
4410
+ margin-inline: 0 calc(-1 * var(--zx-space-1));
3458
4411
  }
3459
4412
  .zx-message__progress {
3460
4413
  overflow: hidden;
@@ -3532,6 +4485,13 @@ button.zx-panel__toggle:focus-visible {
3532
4485
  .zx-modal__content {
3533
4486
  padding: var(--zx-space-5);
3534
4487
  }
4488
+ .zx-modal:focus {
4489
+ outline: none;
4490
+ }
4491
+ .zx-modal:focus-visible {
4492
+ outline: 2px solid var(--zx-color-ring);
4493
+ outline-offset: calc(-1 * var(--zx-space-1));
4494
+ }
3535
4495
  body:has(.zx-modal:modal) {
3536
4496
  overflow: hidden;
3537
4497
  overscroll-behavior: none;
@@ -4301,15 +5261,19 @@ body:has(.zx-modal:modal) {
4301
5261
  padding: var(--zx-space-1);
4302
5262
  }
4303
5263
  .zx-menu-button__item {
4304
- display: flex;
5264
+ display: grid;
5265
+ grid-template-columns: auto minmax(0, 1fr) auto;
4305
5266
  align-items: center;
4306
5267
  gap: var(--zx-space-2);
4307
5268
  inline-size: 100%;
4308
5269
  min-block-size: var(--zx-control-height);
4309
- border-color: transparent;
5270
+ border: 1px solid transparent;
4310
5271
  background: transparent;
4311
5272
  padding-inline: var(--zx-control-pad-x);
5273
+ color: inherit;
5274
+ font: inherit;
4312
5275
  text-align: start;
5276
+ text-decoration: none;
4313
5277
  }
4314
5278
  .zx-menu-button__item:hover,
4315
5279
  .zx-menu-button__item:focus-visible {
@@ -4323,10 +5287,72 @@ body:has(.zx-modal:modal) {
4323
5287
  cursor: not-allowed;
4324
5288
  opacity: .65;
4325
5289
  }
4326
- .zx-menu-button__icon {
5290
+ .zx-menu-button__leading,
5291
+ .zx-menu-button__meta {
4327
5292
  display: inline-flex;
5293
+ align-items: center;
5294
+ gap: var(--zx-space-2);
4328
5295
  flex: none;
4329
5296
  }
5297
+ .zx-menu-button__meta {
5298
+ justify-content: flex-end;
5299
+ }
5300
+ .zx-menu-button__leading {
5301
+ justify-content: center;
5302
+ inline-size: var(--zx-space-4);
5303
+ }
5304
+ .zx-menu-button__body {
5305
+ display: flex;
5306
+ min-inline-size: 0;
5307
+ flex-direction: column;
5308
+ }
5309
+ .zx-menu-button__label,
5310
+ .zx-menu-button__description {
5311
+ overflow: hidden;
5312
+ text-overflow: ellipsis;
5313
+ white-space: nowrap;
5314
+ }
5315
+ .zx-menu-button__description,
5316
+ .zx-menu-button__shortcut,
5317
+ .zx-menu-button__adornment {
5318
+ color: var(--zx-color-text-muted);
5319
+ font-size: var(--zx-text-xs);
5320
+ }
5321
+ .zx-menu-button__badge {
5322
+ min-inline-size: var(--zx-space-4);
5323
+ border-radius: var(--zx-radius-full);
5324
+ background: var(--zx-color-bg-muted);
5325
+ padding-inline: var(--zx-space-1);
5326
+ color: var(--zx-color-text-muted);
5327
+ font-size: var(--zx-text-xs);
5328
+ text-align: center;
5329
+ }
5330
+ .zx-menu-button__shortcut {
5331
+ border: 0;
5332
+ background: transparent;
5333
+ padding: 0;
5334
+ font-family: var(--zx-font-mono);
5335
+ }
5336
+ .zx-menu-button__check {
5337
+ inline-size: var(--zx-space-3);
5338
+ block-size: var(--zx-space-3);
5339
+ border: 1px solid var(--zx-color-border-strong);
5340
+ border-radius: var(--zx-radius-sm);
5341
+ }
5342
+ .zx-menu-button__check[data-check-kind=radio] {
5343
+ border-radius: var(--zx-radius-full);
5344
+ }
5345
+ .zx-menu-button__item[aria-checked=true] .zx-menu-button__check {
5346
+ border-color: var(--zx-color-accent);
5347
+ background: var(--zx-color-accent);
5348
+ box-shadow: inset 0 0 0 2px var(--zx-color-bg-raised);
5349
+ }
5350
+ .zx-menu-button__heading {
5351
+ padding: var(--zx-space-2) var(--zx-control-pad-x) var(--zx-space-1);
5352
+ color: var(--zx-color-text-muted);
5353
+ font-size: var(--zx-text-xs);
5354
+ font-weight: 600;
5355
+ }
4330
5356
  .zx-menu-button__separator {
4331
5357
  block-size: 1px;
4332
5358
  margin: var(--zx-space-1) var(--zx-space-2);
@@ -4345,31 +5371,97 @@ body:has(.zx-modal:modal) {
4345
5371
  padding: var(--zx-space-1);
4346
5372
  }
4347
5373
  .zx-context-menu__item {
4348
- display: flex;
5374
+ display: grid;
5375
+ grid-template-columns: auto minmax(0, 1fr) auto;
4349
5376
  align-items: center;
4350
5377
  gap: var(--zx-space-2);
4351
5378
  inline-size: 100%;
4352
5379
  min-block-size: var(--zx-control-height);
4353
- border-color: transparent;
5380
+ border: 1px solid transparent;
4354
5381
  background: transparent;
4355
5382
  padding-inline: var(--zx-control-pad-x);
5383
+ color: inherit;
5384
+ font: inherit;
4356
5385
  text-align: start;
5386
+ text-decoration: none;
4357
5387
  }
4358
5388
  .zx-context-menu__item:hover,
4359
5389
  .zx-context-menu__item:focus-visible {
4360
5390
  background: var(--zx-color-overlay-hover);
4361
5391
  }
4362
- .zx-context-menu__item[data-danger=true] {
4363
- color: var(--zx-color-danger);
5392
+ .zx-context-menu__item[data-danger=true] {
5393
+ color: var(--zx-color-danger);
5394
+ }
5395
+ .zx-context-menu__item[aria-disabled=true] {
5396
+ color: var(--zx-color-text-muted);
5397
+ cursor: not-allowed;
5398
+ opacity: 0.65;
5399
+ }
5400
+ .zx-context-menu__leading,
5401
+ .zx-context-menu__meta {
5402
+ display: inline-flex;
5403
+ align-items: center;
5404
+ gap: var(--zx-space-2);
5405
+ flex: none;
5406
+ }
5407
+ .zx-context-menu__meta {
5408
+ justify-content: flex-end;
5409
+ }
5410
+ .zx-context-menu__leading {
5411
+ justify-content: center;
5412
+ inline-size: var(--zx-space-4);
5413
+ }
5414
+ .zx-context-menu__body {
5415
+ display: flex;
5416
+ min-inline-size: 0;
5417
+ flex-direction: column;
5418
+ }
5419
+ .zx-context-menu__label,
5420
+ .zx-context-menu__description {
5421
+ overflow: hidden;
5422
+ text-overflow: ellipsis;
5423
+ white-space: nowrap;
5424
+ }
5425
+ .zx-context-menu__description,
5426
+ .zx-context-menu__shortcut,
5427
+ .zx-context-menu__adornment {
5428
+ color: var(--zx-color-text-muted);
5429
+ font-size: var(--zx-text-xs);
5430
+ }
5431
+ .zx-context-menu__badge {
5432
+ min-inline-size: var(--zx-space-4);
5433
+ border-radius: var(--zx-radius-full);
5434
+ background: var(--zx-color-bg-muted);
5435
+ padding-inline: var(--zx-space-1);
5436
+ color: var(--zx-color-text-muted);
5437
+ font-size: var(--zx-text-xs);
5438
+ text-align: center;
5439
+ }
5440
+ .zx-context-menu__shortcut {
5441
+ border: 0;
5442
+ background: transparent;
5443
+ padding: 0;
5444
+ font-family: var(--zx-font-mono);
5445
+ }
5446
+ .zx-context-menu__check {
5447
+ inline-size: var(--zx-space-3);
5448
+ block-size: var(--zx-space-3);
5449
+ border: 1px solid var(--zx-color-border-strong);
5450
+ border-radius: var(--zx-radius-sm);
5451
+ }
5452
+ .zx-context-menu__check[data-check-kind=radio] {
5453
+ border-radius: var(--zx-radius-full);
4364
5454
  }
4365
- .zx-context-menu__item[aria-disabled=true] {
4366
- color: var(--zx-color-text-muted);
4367
- cursor: not-allowed;
4368
- opacity: 0.65;
5455
+ .zx-context-menu__item[aria-checked=true] .zx-context-menu__check {
5456
+ border-color: var(--zx-color-accent);
5457
+ background: var(--zx-color-accent);
5458
+ box-shadow: inset 0 0 0 2px var(--zx-color-bg-raised);
4369
5459
  }
4370
- .zx-context-menu__icon {
4371
- display: inline-flex;
4372
- flex: none;
5460
+ .zx-context-menu__heading {
5461
+ padding: var(--zx-space-2) var(--zx-control-pad-x) var(--zx-space-1);
5462
+ color: var(--zx-color-text-muted);
5463
+ font-size: var(--zx-text-xs);
5464
+ font-weight: 600;
4373
5465
  }
4374
5466
  .zx-context-menu__separator {
4375
5467
  block-size: 1px;
@@ -4807,7 +5899,8 @@ body:has(.zx-modal:modal) {
4807
5899
  align-items: center;
4808
5900
  gap: var(--zx-space-1);
4809
5901
  min-block-size: var(--zx-control-height);
4810
- padding: 3px 3px 3px var(--zx-space-2);
5902
+ padding: 3px;
5903
+ padding-inline-start: var(--zx-space-2);
4811
5904
  border: 1px solid var(--zx-color-border-control);
4812
5905
  border-radius: var(--zx-control-radius);
4813
5906
  background: var(--zx-color-bg-control);
@@ -6873,6 +7966,9 @@ body:has(.zx-modal:modal) {
6873
7966
  inline-size: max-content;
6874
7967
  margin-inline-start: auto;
6875
7968
  }
7969
+ .zx-record-view__field-controls[data-mounted=external] {
7970
+ margin-inline-start: 0;
7971
+ }
6876
7972
  .zx-record-view__field-controls > summary {
6877
7973
  display: inline-flex;
6878
7974
  align-items: center;
@@ -6965,7 +8061,8 @@ body:has(.zx-modal:modal) {
6965
8061
  .zx-table__column-controls {
6966
8062
  position: relative;
6967
8063
  inline-size: max-content;
6968
- margin: 0 0 var(--zx-space-2) auto;
8064
+ margin-block: 0 var(--zx-space-2);
8065
+ margin-inline: auto 0;
6969
8066
  }
6970
8067
  .zx-table__reorder-status {
6971
8068
  position: absolute;
@@ -7204,7 +8301,7 @@ body:has(.zx-modal:modal) {
7204
8301
  }
7205
8302
  .zx-table th[data-align=left],
7206
8303
  .zx-table td[data-align=left] {
7207
- text-align: left;
8304
+ text-align: start;
7208
8305
  }
7209
8306
  .zx-table__sort-button {
7210
8307
  display: flex;
@@ -7299,6 +8396,27 @@ body:has(.zx-modal:modal) {
7299
8396
  .zx-table__cell-content {
7300
8397
  min-inline-size: 0;
7301
8398
  }
8399
+ .zx-table .zx-table__body th.zx-table__section-cell {
8400
+ position: static;
8401
+ z-index: auto;
8402
+ background: none;
8403
+ color: inherit;
8404
+ font-size: inherit;
8405
+ font-weight: inherit;
8406
+ text-align: start;
8407
+ }
8408
+ .zx-table__body tr:last-child > .zx-table__section-cell {
8409
+ border-block-end: 0;
8410
+ }
8411
+ .zx-table[data-stacked] .zx-table__body > tr[data-span] > * {
8412
+ display: block;
8413
+ inline-size: auto;
8414
+ padding-inline: 0;
8415
+ text-align: start;
8416
+ }
8417
+ .zx-table[data-stacked] .zx-table__body > tr[data-span] > *::before {
8418
+ content: none;
8419
+ }
7302
8420
  .zx-table[data-edit-mode] .zx-table__body td {
7303
8421
  block-size: var(--zx-control-height);
7304
8422
  }
@@ -7431,16 +8549,190 @@ body:has(.zx-modal:modal) {
7431
8549
  .zx-table-view__table {
7432
8550
  min-inline-size: 0;
7433
8551
  }
7434
- .zx-table-view[data-loading=true] .zx-table__column-controls {
8552
+ .zx-table-view__toolbar {
8553
+ min-inline-size: 0;
8554
+ }
8555
+ .zx-table-view[data-loading=true] .zx-table__column-controls,
8556
+ .zx-table-view[data-loading=true] .zx-record-view__field-controls {
7435
8557
  pointer-events: none;
7436
8558
  opacity: .62;
7437
8559
  }
7438
8560
  @media (prefers-reduced-motion: no-preference) {
7439
- .zx-table-view .zx-table__column-controls {
8561
+ .zx-table-view .zx-table__column-controls,
8562
+ .zx-table-view .zx-record-view__field-controls {
7440
8563
  transition: opacity var(--zx-dur-fast) var(--zx-ease);
7441
8564
  }
7442
8565
  }
7443
8566
 
8567
+ /* src/components/stat-tile/stat-tile.css */
8568
+ .zx-stat-tile {
8569
+ --zx-stat-tile-value-size: var(--zx-text-2xl);
8570
+ display: grid;
8571
+ gap: var(--zx-space-2);
8572
+ align-content: start;
8573
+ min-inline-size: 0;
8574
+ padding: var(--zx-space-4);
8575
+ border: 1px solid var(--zx-color-border);
8576
+ border-radius: var(--zx-radius-lg);
8577
+ background: var(--zx-color-bg-surface);
8578
+ color: var(--zx-color-text);
8579
+ }
8580
+ a.zx-stat-tile,
8581
+ button.zx-stat-tile {
8582
+ appearance: none;
8583
+ inline-size: 100%;
8584
+ margin: 0;
8585
+ font: inherit;
8586
+ text-align: start;
8587
+ text-decoration: none;
8588
+ color: inherit;
8589
+ cursor: pointer;
8590
+ }
8591
+ a.zx-stat-tile:hover,
8592
+ button.zx-stat-tile:hover {
8593
+ border-color: var(--zx-color-border-strong);
8594
+ background: var(--zx-color-bg-hover);
8595
+ }
8596
+ a.zx-stat-tile:focus-visible,
8597
+ button.zx-stat-tile:focus-visible {
8598
+ outline: 0;
8599
+ box-shadow: var(--zx-focus-ring);
8600
+ }
8601
+ @media (prefers-reduced-motion: no-preference) {
8602
+ a.zx-stat-tile,
8603
+ button.zx-stat-tile {
8604
+ transition: background var(--zx-dur-fast) var(--zx-ease), border-color var(--zx-dur-fast) var(--zx-ease);
8605
+ }
8606
+ }
8607
+ .zx-stat-tile__header {
8608
+ display: flex;
8609
+ gap: var(--zx-space-2);
8610
+ align-items: center;
8611
+ justify-content: space-between;
8612
+ min-inline-size: 0;
8613
+ }
8614
+ .zx-stat-tile__label {
8615
+ min-inline-size: 0;
8616
+ overflow: hidden;
8617
+ font-size: var(--zx-text-xs);
8618
+ font-weight: 600;
8619
+ letter-spacing: 0.04em;
8620
+ line-height: 1.4;
8621
+ text-transform: uppercase;
8622
+ text-overflow: ellipsis;
8623
+ white-space: nowrap;
8624
+ color: var(--zx-color-text-muted);
8625
+ }
8626
+ .zx-stat-tile__icon {
8627
+ display: grid;
8628
+ flex: none;
8629
+ place-items: center;
8630
+ inline-size: 1.75rem;
8631
+ block-size: 1.75rem;
8632
+ border-radius: var(--zx-radius-full);
8633
+ background: var(--zx-color-bg-muted);
8634
+ color: var(--zx-color-text-muted);
8635
+ }
8636
+ .zx-stat-tile__value {
8637
+ min-inline-size: 0;
8638
+ font-size: var(--zx-stat-tile-value-size);
8639
+ font-weight: 600;
8640
+ font-variant-numeric: tabular-nums;
8641
+ line-height: 1.15;
8642
+ overflow-wrap: break-word;
8643
+ color: var(--zx-color-text);
8644
+ }
8645
+ .zx-stat-tile__delta {
8646
+ display: flex;
8647
+ gap: var(--zx-space-1);
8648
+ align-items: baseline;
8649
+ min-inline-size: 0;
8650
+ font-size: var(--zx-text-xs);
8651
+ font-weight: 600;
8652
+ font-variant-numeric: tabular-nums;
8653
+ line-height: 1.4;
8654
+ color: var(--zx-color-text-muted);
8655
+ }
8656
+ .zx-stat-tile__delta[data-kind=positive] {
8657
+ color: var(--zx-color-success);
8658
+ }
8659
+ .zx-stat-tile__delta[data-kind=negative] {
8660
+ color: var(--zx-color-danger);
8661
+ }
8662
+ .zx-stat-tile__delta .zx-icon {
8663
+ flex: none;
8664
+ align-self: center;
8665
+ }
8666
+ .zx-stat-tile__delta-label {
8667
+ min-inline-size: 0;
8668
+ overflow: hidden;
8669
+ font-weight: 400;
8670
+ text-overflow: ellipsis;
8671
+ white-space: nowrap;
8672
+ color: var(--zx-color-text-muted);
8673
+ }
8674
+ .zx-stat-tile__trend {
8675
+ display: block;
8676
+ inline-size: 100%;
8677
+ block-size: 2rem;
8678
+ margin-block-start: var(--zx-space-1);
8679
+ color: var(--zx-color-text-placeholder);
8680
+ }
8681
+ .zx-stat-tile__loading {
8682
+ display: grid;
8683
+ gap: var(--zx-space-2);
8684
+ }
8685
+ .zx-stat-tile[data-kind=accent] .zx-stat-tile__icon {
8686
+ background: var(--zx-color-accent-subtle);
8687
+ color: var(--zx-color-accent);
8688
+ }
8689
+ .zx-stat-tile[data-kind=success] .zx-stat-tile__icon {
8690
+ background: var(--zx-color-success-bg);
8691
+ color: var(--zx-color-success);
8692
+ }
8693
+ .zx-stat-tile[data-kind=warning] .zx-stat-tile__icon {
8694
+ background: var(--zx-color-warning-bg);
8695
+ color: var(--zx-color-warning);
8696
+ }
8697
+ .zx-stat-tile[data-kind=danger] .zx-stat-tile__icon {
8698
+ background: var(--zx-color-danger-bg);
8699
+ color: var(--zx-color-danger);
8700
+ }
8701
+ .zx-stat-tile[data-kind=info] .zx-stat-tile__icon {
8702
+ background: var(--zx-color-info-bg);
8703
+ color: var(--zx-color-info);
8704
+ }
8705
+ .zx-stat-tile[data-kind=accent] .zx-stat-tile__trend {
8706
+ color: var(--zx-color-accent);
8707
+ }
8708
+ .zx-stat-tile[data-kind=success] .zx-stat-tile__trend {
8709
+ color: var(--zx-color-success);
8710
+ }
8711
+ .zx-stat-tile[data-kind=warning] .zx-stat-tile__trend {
8712
+ color: var(--zx-color-warning);
8713
+ }
8714
+ .zx-stat-tile[data-kind=danger] .zx-stat-tile__trend {
8715
+ color: var(--zx-color-danger);
8716
+ }
8717
+ .zx-stat-tile[data-kind=info] .zx-stat-tile__trend {
8718
+ color: var(--zx-color-info);
8719
+ }
8720
+ @media (forced-colors: active) {
8721
+ .zx-stat-tile {
8722
+ border-color: CanvasText;
8723
+ }
8724
+ a.zx-stat-tile:hover,
8725
+ button.zx-stat-tile:hover {
8726
+ border-color: Highlight;
8727
+ }
8728
+ .zx-stat-tile__delta,
8729
+ .zx-stat-tile__delta-label,
8730
+ .zx-stat-tile__icon,
8731
+ .zx-stat-tile__trend {
8732
+ color: CanvasText;
8733
+ }
8734
+ }
8735
+
7444
8736
  /* src/components/card-view/card-view.css */
7445
8737
  .zx-card-view {
7446
8738
  --zx-card-view-min-card-width: 15rem;
@@ -7941,6 +9233,9 @@ body:has(.zx-modal:modal) {
7941
9233
  min-block-size: 44px;
7942
9234
  }
7943
9235
  }
9236
+ .zx-card-view .zx-record-card[data-selection-trigger=card] {
9237
+ cursor: pointer;
9238
+ }
7944
9239
 
7945
9240
  /* src/components/kanban-view/kanban-view.css */
7946
9241
  .zx-kanban-view {
@@ -8027,6 +9322,8 @@ body:has(.zx-modal:modal) {
8027
9322
  border: 0;
8028
9323
  border-radius: var(--zx-radius-sm);
8029
9324
  background: transparent;
9325
+ padding: 0;
9326
+ min-block-size: 0;
8030
9327
  color: var(--zx-color-text-muted);
8031
9328
  cursor: pointer;
8032
9329
  }
@@ -8420,6 +9717,8 @@ body:has(.zx-modal:modal) {
8420
9717
  display: grid;
8421
9718
  place-items: center;
8422
9719
  min-block-size: 4rem;
9720
+ border: 1px dashed var(--zx-color-border);
9721
+ border-radius: var(--zx-radius-md);
8423
9722
  padding: var(--zx-space-2);
8424
9723
  color: var(--zx-color-text-muted);
8425
9724
  font-size: var(--zx-text-xs);
@@ -8478,17 +9777,166 @@ body:has(.zx-modal:modal) {
8478
9777
  padding: var(--zx-space-1) var(--zx-space-2);
8479
9778
  color: var(--zx-color-text);
8480
9779
  font-size: var(--zx-text-xs);
8481
- white-space: nowrap;
9780
+ white-space: nowrap;
9781
+ overflow: hidden;
9782
+ text-overflow: ellipsis;
9783
+ pointer-events: none;
9784
+ translate: var(--zx-space-3) var(--zx-space-3);
9785
+ }
9786
+ @media (pointer: coarse) {
9787
+ .zx-kanban-view__add {
9788
+ min-block-size: 2.75rem;
9789
+ }
9790
+ }
9791
+ .zx-kanban-view__card-head {
9792
+ display: flex;
9793
+ align-items: center;
9794
+ gap: var(--zx-space-2);
9795
+ min-block-size: 1.25rem;
9796
+ min-inline-size: 0;
9797
+ }
9798
+ .zx-kanban-view__card-lead,
9799
+ .zx-kanban-view__card-flags {
9800
+ display: inline-flex;
9801
+ align-items: center;
9802
+ gap: var(--zx-space-1);
9803
+ min-inline-size: 0;
9804
+ }
9805
+ .zx-kanban-view__card-flags {
9806
+ flex: none;
9807
+ margin-inline-start: auto;
9808
+ }
9809
+ .zx-kanban-view__entity {
9810
+ display: inline-grid;
9811
+ flex: none;
9812
+ place-items: center;
9813
+ color: var(--zx-color-text-muted);
9814
+ }
9815
+ .zx-kanban-view__identifier {
9816
+ min-inline-size: 0;
9817
+ overflow: hidden;
9818
+ color: var(--zx-color-text-muted);
9819
+ font-size: var(--zx-text-xs);
9820
+ font-variant-numeric: tabular-nums;
9821
+ letter-spacing: .02em;
9822
+ text-overflow: ellipsis;
9823
+ white-space: nowrap;
9824
+ }
9825
+ .zx-kanban-view__card-footer {
9826
+ display: flex;
9827
+ flex-direction: column;
9828
+ gap: var(--zx-space-2);
9829
+ min-inline-size: 0;
9830
+ }
9831
+ .zx-kanban-view__progress-head {
9832
+ display: flex;
9833
+ align-items: baseline;
9834
+ justify-content: space-between;
9835
+ gap: var(--zx-space-2);
9836
+ margin-block-end: calc(var(--zx-space-1) / 2);
9837
+ }
9838
+ .zx-kanban-view__progress-label,
9839
+ .zx-kanban-view__progress-value {
9840
+ color: var(--zx-color-text-muted);
9841
+ font-size: var(--zx-text-xs);
9842
+ line-height: 1.2;
9843
+ white-space: nowrap;
9844
+ }
9845
+ .zx-kanban-view__progress-label {
9846
+ min-inline-size: 0;
9847
+ overflow: hidden;
9848
+ text-overflow: ellipsis;
9849
+ }
9850
+ .zx-kanban-view__progress-value {
9851
+ flex: none;
9852
+ font-variant-numeric: tabular-nums;
9853
+ }
9854
+ .zx-kanban-view__progress-track {
9855
+ block-size: 4px;
9856
+ overflow: hidden;
9857
+ border-radius: var(--zx-radius-full);
9858
+ background: var(--zx-color-bg-muted);
9859
+ }
9860
+ .zx-kanban-view__progress-fill {
9861
+ block-size: 100%;
9862
+ border-radius: inherit;
9863
+ background: var(--zx-color-accent);
9864
+ }
9865
+ .zx-kanban-view__avatars {
9866
+ display: inline-flex;
9867
+ align-items: center;
9868
+ min-inline-size: 0;
9869
+ }
9870
+ .zx-kanban-view__avatar {
9871
+ display: inline-grid;
9872
+ flex: none;
9873
+ place-items: center;
9874
+ inline-size: 1.5rem;
9875
+ block-size: 1.5rem;
9876
+ overflow: hidden;
9877
+ border: 1px solid var(--zx-color-bg-surface);
9878
+ border-radius: var(--zx-radius-full);
9879
+ background: var(--zx-color-bg-muted);
9880
+ color: var(--zx-color-text-muted);
9881
+ }
9882
+ .zx-kanban-view__avatar + .zx-kanban-view__avatar {
9883
+ margin-inline-start: calc(var(--zx-space-2) * -1);
9884
+ }
9885
+ .zx-kanban-view__avatar[data-overflow=true] {
9886
+ background: var(--zx-color-accent-subtle);
9887
+ color: var(--zx-color-accent);
9888
+ }
9889
+ .zx-kanban-view__avatar-image {
9890
+ inline-size: 100%;
9891
+ block-size: 100%;
9892
+ object-fit: cover;
9893
+ }
9894
+ .zx-kanban-view__avatar-initials {
9895
+ font-size: var(--zx-text-xs);
9896
+ font-weight: 600;
9897
+ line-height: 1;
9898
+ text-transform: uppercase;
9899
+ }
9900
+ .zx-kanban-view__move-handle[data-reveal=keyboard] {
9901
+ position: absolute;
9902
+ inline-size: 1px;
9903
+ block-size: 1px;
9904
+ min-inline-size: 0;
9905
+ min-block-size: 0;
8482
9906
  overflow: hidden;
8483
- text-overflow: ellipsis;
8484
- pointer-events: none;
8485
- translate: var(--zx-space-3) var(--zx-space-3);
9907
+ clip-path: inset(50%);
9908
+ }
9909
+ .zx-kanban-view__move-handle[data-reveal=keyboard]:focus,
9910
+ .zx-kanban-view__move-handle[data-reveal=keyboard][aria-pressed=true] {
9911
+ position: static;
9912
+ inline-size: calc(var(--zx-control-height) - var(--zx-space-1));
9913
+ block-size: calc(var(--zx-control-height) - var(--zx-space-1));
9914
+ min-block-size: 0;
9915
+ overflow: visible;
9916
+ clip-path: none;
8486
9917
  }
8487
9918
  @media (pointer: coarse) {
8488
- .zx-kanban-view__add {
8489
- min-block-size: 2.75rem;
9919
+ .zx-kanban-view__move-handle[data-reveal=keyboard]:focus,
9920
+ .zx-kanban-view__move-handle[data-reveal=keyboard][aria-pressed=true] {
9921
+ inline-size: 2.75rem;
9922
+ block-size: 2.75rem;
8490
9923
  }
8491
9924
  }
9925
+ .zx-kanban-view__hint {
9926
+ position: absolute;
9927
+ inline-size: 1px;
9928
+ block-size: 1px;
9929
+ overflow: hidden;
9930
+ clip-path: inset(50%);
9931
+ white-space: nowrap;
9932
+ }
9933
+ .zx-kanban-view__flag {
9934
+ display: inline-flex;
9935
+ align-items: center;
9936
+ }
9937
+ .zx-kanban-view .zx-record-card[data-selection-trigger=card] {
9938
+ cursor: pointer;
9939
+ }
8492
9940
 
8493
9941
  /* src/components/grid/grid.css */
8494
9942
  .zx-table[data-preset=billing-items] tr.zx-grid-billing__summary > td {
@@ -8785,6 +10233,227 @@ body:has(.zx-modal:modal) {
8785
10233
  display: none;
8786
10234
  }
8787
10235
 
10236
+ /* src/components/filter-panel/filter-panel.css */
10237
+ .zx-filter-panel {
10238
+ display: grid;
10239
+ gap: var(--zx-space-4);
10240
+ align-content: start;
10241
+ min-inline-size: 0;
10242
+ color: var(--zx-color-text);
10243
+ font-size: var(--zx-control-font-size);
10244
+ }
10245
+ .zx-filter-panel__fields {
10246
+ display: grid;
10247
+ grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
10248
+ align-items: start;
10249
+ gap: var(--zx-space-4);
10250
+ min-inline-size: 0;
10251
+ }
10252
+ .zx-filter-panel__field {
10253
+ display: grid;
10254
+ gap: var(--zx-space-2);
10255
+ align-content: start;
10256
+ min-inline-size: 0;
10257
+ }
10258
+ .zx-filter-panel__label {
10259
+ color: var(--zx-color-text-muted);
10260
+ font-size: var(--zx-text-sm);
10261
+ font-weight: 650;
10262
+ }
10263
+ .zx-filter-panel__input {
10264
+ inline-size: 100%;
10265
+ min-inline-size: 0;
10266
+ }
10267
+ .zx-filter-panel__range {
10268
+ display: grid;
10269
+ grid-template-columns: repeat(2, minmax(0, 1fr));
10270
+ gap: var(--zx-space-2);
10271
+ min-inline-size: 0;
10272
+ }
10273
+ .zx-filter-panel__edge {
10274
+ display: grid;
10275
+ gap: var(--zx-space-1);
10276
+ min-inline-size: 0;
10277
+ }
10278
+ .zx-filter-panel__edge-label {
10279
+ color: var(--zx-color-text-muted);
10280
+ font-size: var(--zx-text-xs);
10281
+ }
10282
+ .zx-filter-panel__unsupported {
10283
+ margin: 0;
10284
+ border: 1px dashed var(--zx-color-border-strong);
10285
+ border-radius: var(--zx-radius-md);
10286
+ background: var(--zx-color-bg-muted);
10287
+ color: var(--zx-color-text-muted);
10288
+ padding: var(--zx-space-2) var(--zx-space-3);
10289
+ font-size: var(--zx-text-sm);
10290
+ }
10291
+ .zx-filter-panel__empty {
10292
+ margin: 0;
10293
+ border: 1px dashed var(--zx-color-border);
10294
+ border-radius: var(--zx-radius-md);
10295
+ color: var(--zx-color-text-muted);
10296
+ padding: var(--zx-space-5) var(--zx-space-4);
10297
+ text-align: center;
10298
+ }
10299
+ .zx-filter-panel__actions {
10300
+ display: flex;
10301
+ flex-wrap: wrap;
10302
+ justify-content: end;
10303
+ align-items: center;
10304
+ gap: var(--zx-space-2);
10305
+ border-block-start: 1px solid var(--zx-color-border);
10306
+ padding-block-start: var(--zx-space-3);
10307
+ }
10308
+ .zx-filter-panel[data-state=dirty] .zx-filter-panel__apply {
10309
+ box-shadow: var(--zx-focus-ring);
10310
+ }
10311
+ .zx-filter-panel .zx-checklist {
10312
+ min-inline-size: 0;
10313
+ }
10314
+ .zx-filter-panel .zx-number-field {
10315
+ display: flex;
10316
+ inline-size: 100%;
10317
+ min-inline-size: 0;
10318
+ }
10319
+ .zx-filter-panel .zx-number-field__input {
10320
+ min-inline-size: 0;
10321
+ }
10322
+
10323
+ /* src/components/list-toolbar/list-toolbar.css */
10324
+ .zx-list-toolbar {
10325
+ container-type: inline-size;
10326
+ inline-size: 100%;
10327
+ display: flex;
10328
+ flex-wrap: wrap;
10329
+ align-items: center;
10330
+ gap: var(--zx-space-2);
10331
+ min-inline-size: 0;
10332
+ }
10333
+ .zx-list-toolbar > .zx-list-toolbar__search {
10334
+ flex: 1 1 12rem;
10335
+ max-inline-size: 22rem;
10336
+ min-inline-size: 0;
10337
+ }
10338
+ .zx-list-toolbar > .zx-list-toolbar__search .zx-search__input {
10339
+ min-inline-size: 8rem;
10340
+ }
10341
+ .zx-list-toolbar__count {
10342
+ flex: 0 1 auto;
10343
+ min-inline-size: 0;
10344
+ color: var(--zx-color-text-muted);
10345
+ font-size: var(--zx-text-sm);
10346
+ white-space: nowrap;
10347
+ overflow: hidden;
10348
+ text-overflow: ellipsis;
10349
+ }
10350
+ .zx-list-toolbar__spacer {
10351
+ flex: 1 1 auto;
10352
+ min-inline-size: 0;
10353
+ }
10354
+ .zx-list-toolbar__tools,
10355
+ .zx-list-toolbar__views {
10356
+ display: flex;
10357
+ flex-wrap: wrap;
10358
+ align-items: center;
10359
+ gap: var(--zx-space-1);
10360
+ }
10361
+ .zx-list-toolbar__views {
10362
+ gap: 0;
10363
+ border: 1px solid var(--zx-color-border-control);
10364
+ border-radius: var(--zx-control-radius);
10365
+ padding: 2px;
10366
+ }
10367
+ .zx-list-toolbar__tool {
10368
+ position: relative;
10369
+ display: inline-flex;
10370
+ align-items: center;
10371
+ justify-content: center;
10372
+ gap: var(--zx-space-2);
10373
+ min-block-size: 44px;
10374
+ min-inline-size: 44px;
10375
+ padding-inline: var(--zx-space-2);
10376
+ border: 1px solid transparent;
10377
+ border-radius: var(--zx-control-radius);
10378
+ background: none;
10379
+ color: var(--zx-color-text);
10380
+ font-size: var(--zx-control-font-size);
10381
+ font-weight: var(--zx-control-font-weight);
10382
+ line-height: 1.2;
10383
+ cursor: pointer;
10384
+ }
10385
+ .zx-list-toolbar__tool:hover:not(:disabled) {
10386
+ background: var(--zx-color-bg-hover);
10387
+ }
10388
+ .zx-list-toolbar__tool:focus-visible {
10389
+ box-shadow: var(--zx-focus-ring);
10390
+ }
10391
+ .zx-list-toolbar__tool[aria-pressed=true] {
10392
+ border-color: var(--zx-color-border-strong);
10393
+ background: var(--zx-color-bg-selected);
10394
+ }
10395
+ .zx-list-toolbar__tool:disabled {
10396
+ color: var(--zx-color-text-placeholder);
10397
+ cursor: default;
10398
+ }
10399
+ .zx-list-toolbar__tool-label {
10400
+ white-space: nowrap;
10401
+ }
10402
+ .zx-list-toolbar__badge {
10403
+ pointer-events: none;
10404
+ }
10405
+ .zx-list-toolbar__view {
10406
+ position: relative;
10407
+ display: inline-flex;
10408
+ align-items: center;
10409
+ justify-content: center;
10410
+ gap: var(--zx-space-1);
10411
+ min-block-size: 44px;
10412
+ min-inline-size: 44px;
10413
+ padding-inline: var(--zx-space-2);
10414
+ border: 0;
10415
+ border-radius: calc(var(--zx-control-radius) - 2px);
10416
+ background: none;
10417
+ color: var(--zx-color-text-muted);
10418
+ font-size: var(--zx-control-font-size);
10419
+ font-weight: var(--zx-control-font-weight);
10420
+ line-height: 1.2;
10421
+ cursor: pointer;
10422
+ }
10423
+ .zx-list-toolbar__view:hover {
10424
+ color: var(--zx-color-text);
10425
+ background: var(--zx-color-bg-hover);
10426
+ }
10427
+ .zx-list-toolbar__view:focus-visible {
10428
+ box-shadow: var(--zx-focus-ring);
10429
+ }
10430
+ .zx-list-toolbar__view[aria-pressed=true] {
10431
+ background: var(--zx-color-bg-selected);
10432
+ color: var(--zx-color-text);
10433
+ }
10434
+ @media (prefers-reduced-motion: no-preference) {
10435
+ .zx-list-toolbar__tool,
10436
+ .zx-list-toolbar__view {
10437
+ transition:
10438
+ background-color var(--zx-dur-fast) var(--zx-ease),
10439
+ color var(--zx-dur-fast) var(--zx-ease),
10440
+ border-color var(--zx-dur-fast) var(--zx-ease);
10441
+ }
10442
+ }
10443
+ @container (max-inline-size: 30rem) {
10444
+ .zx-list-toolbar__tool:has(.zx-icon) .zx-list-toolbar__tool-label,
10445
+ .zx-list-toolbar__view:has(.zx-icon) .zx-list-toolbar__view-label {
10446
+ position: absolute;
10447
+ inline-size: 1px;
10448
+ block-size: 1px;
10449
+ margin: -1px;
10450
+ padding: 0;
10451
+ overflow: hidden;
10452
+ clip-path: inset(50%);
10453
+ white-space: nowrap;
10454
+ }
10455
+ }
10456
+
8788
10457
  /* src/components/filter/filter.css */
8789
10458
  .zx-filter {
8790
10459
  display: grid;
@@ -8812,7 +10481,8 @@ body:has(.zx-modal:modal) {
8812
10481
  border-inline-start: 3px solid var(--zx-color-border-strong);
8813
10482
  border-radius: 0;
8814
10483
  background: transparent;
8815
- padding: 0 0 0 var(--zx-space-3);
10484
+ padding: 0;
10485
+ padding-inline-start: var(--zx-space-3);
8816
10486
  }
8817
10487
  .zx-filter__legend {
8818
10488
  display: inline-flex;
@@ -8913,6 +10583,66 @@ body:has(.zx-modal:modal) {
8913
10583
  border-color: CanvasText;
8914
10584
  }
8915
10585
  }
10586
+ .zx-filter[data-layout=compact] {
10587
+ container-type: inline-size;
10588
+ inline-size: 100%;
10589
+ }
10590
+ .zx-filter[data-layout=compact] .zx-filter__condition {
10591
+ grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr) minmax(0, 1.35fr) auto;
10592
+ gap: var(--zx-space-2);
10593
+ align-items: center;
10594
+ padding: var(--zx-space-2);
10595
+ border: 1px solid var(--zx-color-border);
10596
+ background: var(--zx-color-bg-surface);
10597
+ }
10598
+ .zx-filter__picker {
10599
+ min-inline-size: 0;
10600
+ }
10601
+ .zx-filter[data-layout=compact] .zx-filter__value {
10602
+ grid-column: auto;
10603
+ }
10604
+ .zx-filter[data-layout=compact] [data-filter-action=remove] {
10605
+ inline-size: var(--zx-control-height);
10606
+ min-block-size: var(--zx-control-height);
10607
+ padding: 0;
10608
+ }
10609
+ .zx-filter[data-layout=compact] [data-filter-action=remove] > span {
10610
+ display: none;
10611
+ }
10612
+ @container (max-width: 420px) {
10613
+ .zx-filter[data-layout=compact] .zx-filter__condition {
10614
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto;
10615
+ }
10616
+ .zx-filter[data-layout=compact] .zx-filter__value {
10617
+ grid-column: 1 / 3;
10618
+ grid-row: 2;
10619
+ }
10620
+ .zx-filter[data-layout=compact] .zx-filter__condition > [data-filter-action=remove] {
10621
+ grid-column: 3;
10622
+ grid-row: 1 / 3;
10623
+ }
10624
+ }
10625
+
10626
+ /* src/components/sort-control/sort-control.css */
10627
+ .zx-sort-control {
10628
+ display: inline-grid;
10629
+ grid-template-columns: auto minmax(0, 1fr);
10630
+ align-items: center;
10631
+ gap: var(--zx-space-1);
10632
+ min-inline-size: 0;
10633
+ inline-size: 100%;
10634
+ }
10635
+ .zx-sort-control__direction {
10636
+ inline-size: var(--zx-control-height);
10637
+ padding: 0;
10638
+ border-radius: var(--zx-radius-full);
10639
+ }
10640
+ .zx-sort-control__direction:focus-visible {
10641
+ box-shadow: var(--zx-focus-ring);
10642
+ }
10643
+ .zx-sort-control .zx-select__control {
10644
+ background: var(--zx-color-bg-control);
10645
+ }
8916
10646
 
8917
10647
  /* src/components/pagination/pagination.css */
8918
10648
  .zx-pagination {
@@ -10009,4 +11739,121 @@ button.zx-stepper__control:disabled {
10009
11739
  }
10010
11740
  }
10011
11741
 
11742
+ /* styles/print.css */
11743
+ @media print {
11744
+ .zx-scope,
11745
+ [data-zx-theme] {
11746
+ --zx-color-border: color-mix(in srgb, var(--zx-color-text) 45%, transparent);
11747
+ --zx-color-border-strong: color-mix(in srgb, var(--zx-color-text) 65%, transparent);
11748
+ --zx-color-border-control: color-mix(in srgb, var(--zx-color-text) 45%, transparent);
11749
+ --zx-color-overlay-border: color-mix(in srgb, var(--zx-color-text) 45%, transparent);
11750
+ --zx-color-overlay-divider: color-mix(in srgb, var(--zx-color-text) 45%, transparent);
11751
+ --zx-color-glass-border: color-mix(in srgb, var(--zx-color-text) 45%, transparent);
11752
+ }
11753
+ .zx-scope .zx-card[data-variant=filled],
11754
+ .zx-scope .zx-record-card[data-variant=filled] {
11755
+ border-color: var(--zx-color-border);
11756
+ }
11757
+ .zx-scope,
11758
+ .zx-scope *:not(.zx-badge, .zx-badge *),
11759
+ .zx-scope *:not(.zx-badge, .zx-badge *)::before,
11760
+ .zx-scope *:not(.zx-badge, .zx-badge *)::after {
11761
+ background-color: transparent !important;
11762
+ background-image: none !important;
11763
+ box-shadow: none !important;
11764
+ text-shadow: none !important;
11765
+ -webkit-backdrop-filter: none !important;
11766
+ backdrop-filter: none !important;
11767
+ }
11768
+ .zx-scope .zx-badge {
11769
+ -webkit-print-color-adjust: exact;
11770
+ print-color-adjust: exact;
11771
+ }
11772
+ .zx-scope .zx-btn[data-kind=primary],
11773
+ .zx-scope .zx-btn[data-kind=danger] {
11774
+ border-color: var(--zx-color-border);
11775
+ color: var(--zx-color-text);
11776
+ }
11777
+ .zx-scope .zx-table th,
11778
+ .zx-scope .zx-table__scroll[data-sticky-header=true] th,
11779
+ .zx-scope .zx-select__group,
11780
+ .zx-scope .zx-calendar__agenda-heading,
11781
+ .zx-scope .zx-toolbar,
11782
+ .zx-scope .zx-list-toolbar {
11783
+ position: static;
11784
+ }
11785
+ .zx-scope .zx-table__scroll,
11786
+ .zx-scope .zx-tree,
11787
+ .zx-scope .zx-card-view,
11788
+ .zx-scope .zx-record-view {
11789
+ overflow: visible;
11790
+ max-block-size: none;
11791
+ }
11792
+ .zx-scope .zx-table__scroll[data-zebra=true] .zx-table__body tr:nth-child(even),
11793
+ .zx-scope .zx-table__body tr[data-row]:hover,
11794
+ .zx-scope .zx-table__body tr[aria-selected=true] {
11795
+ background: transparent;
11796
+ }
11797
+ .zx-scope :focus,
11798
+ .zx-scope :focus-visible {
11799
+ outline: none;
11800
+ box-shadow: none;
11801
+ }
11802
+ .zx-scope .zx-navigation-bar,
11803
+ .zx-scope .zx-app-rail,
11804
+ .zx-scope .zx-app-sidebar,
11805
+ .zx-modal,
11806
+ .zx-dialog,
11807
+ .zx-sheet,
11808
+ .zx-dropdown,
11809
+ .zx-context-menu,
11810
+ .zx-tooltip,
11811
+ .zx-launcher,
11812
+ .zx-message-region,
11813
+ [popover]:popover-open {
11814
+ display: none !important;
11815
+ }
11816
+ ::backdrop {
11817
+ display: none;
11818
+ }
11819
+ .zx-scope .zx-table thead {
11820
+ display: table-header-group;
11821
+ }
11822
+ .zx-scope .zx-table tfoot {
11823
+ display: table-footer-group;
11824
+ }
11825
+ .zx-scope .zx-card,
11826
+ .zx-scope .zx-record-card,
11827
+ .zx-scope .zx-stat-tile,
11828
+ .zx-scope .zx-table__body tr {
11829
+ break-inside: avoid;
11830
+ }
11831
+ .zx-scope a[href^=http]::after {
11832
+ content: " (" attr(href) ")";
11833
+ font-size: var(--zx-text-sm);
11834
+ font-weight: 400;
11835
+ word-break: break-all;
11836
+ }
11837
+ .zx-scope a[href]:empty::after,
11838
+ .zx-scope a[href].zx-icon-btn::after,
11839
+ .zx-scope a:has(> .zx-icon:only-child)::after,
11840
+ .zx-scope th a[href]::after,
11841
+ .zx-scope td a[href]::after,
11842
+ .zx-scope button a[href]::after,
11843
+ .zx-scope a[href].zx-btn::after,
11844
+ .zx-scope .zx-btn a[href]::after,
11845
+ .zx-scope .zx-table a[href]::after,
11846
+ .zx-scope .zx-badge a[href]::after,
11847
+ .zx-scope a[href].zx-badge::after,
11848
+ .zx-scope a[href].zx-entity-ref::after,
11849
+ .zx-scope .zx-entity-ref a[href]::after,
11850
+ .zx-scope .zx-breadcrumb a[href]::after,
11851
+ .zx-scope a[href].zx-stat-tile::after,
11852
+ .zx-scope .zx-tabbox a[href]::after,
11853
+ .zx-scope .zx-tree a[href]::after,
11854
+ .zx-scope .zx-file-item a[href]::after {
11855
+ content: none;
11856
+ }
11857
+ }
11858
+
10012
11859
  /* styles/zx.css */