@zeyos/zx 4.3.4 → 5.0.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 (231) hide show
  1. package/CHANGELOG.md +438 -0
  2. package/README.md +49 -10
  3. package/dist/types/components/activity-item/activity-item.d.ts +351 -0
  4. package/dist/types/components/activity-list/activity-list.d.ts +217 -0
  5. package/dist/types/components/app-sidebar/app-sidebar.d.ts +33 -3
  6. package/dist/types/components/avatar/avatar.d.ts +46 -7
  7. package/dist/types/components/badge/badge.d.ts +21 -1
  8. package/dist/types/components/button/button.d.ts +23 -0
  9. package/dist/types/components/calendar/calendar.d.ts +19 -0
  10. package/dist/types/components/card/card.d.ts +7 -0
  11. package/dist/types/components/card-view/card-view.d.ts +11 -3
  12. package/dist/types/components/card-view/record-card.d.ts +7 -1
  13. package/dist/types/components/chart/chart.d.ts +10 -0
  14. package/dist/types/components/checklist/checklist.d.ts +9 -0
  15. package/dist/types/components/code-editor/code-editor.d.ts +149 -0
  16. package/dist/types/components/code-editor/field-adapter.d.ts +5 -0
  17. package/dist/types/components/context-menu/context-menu.d.ts +18 -2
  18. package/dist/types/components/date-picker/date-picker.d.ts +8 -0
  19. package/dist/types/components/date-picker/time-picker.d.ts +7 -0
  20. package/dist/types/components/datebox/date-range-box.d.ts +5 -1
  21. package/dist/types/components/datebox/datebox.d.ts +7 -2
  22. package/dist/types/components/dialog/dialog.d.ts +75 -6
  23. package/dist/types/components/dropdown/dropdown.d.ts +2 -2
  24. package/dist/types/components/entity-ref/entity-ref.d.ts +331 -0
  25. package/dist/types/components/field/field.d.ts +24 -2
  26. package/dist/types/components/fieldset/fieldset.d.ts +19 -1
  27. package/dist/types/components/file-item/file-item.d.ts +262 -0
  28. package/dist/types/components/file-list/file-list.d.ts +171 -0
  29. package/dist/types/components/filter/filter.d.ts +91 -36
  30. package/dist/types/components/filter-panel/filter-panel.d.ts +449 -0
  31. package/dist/types/components/form/form.d.ts +12 -1
  32. package/dist/types/components/kanban-view/kanban-card.d.ts +146 -0
  33. package/dist/types/components/kanban-view/kanban-view.d.ts +170 -4
  34. package/dist/types/components/launcher/launcher.d.ts +278 -26
  35. package/dist/types/components/list-toolbar/list-toolbar.d.ts +599 -0
  36. package/dist/types/components/menu-button/menu-button.d.ts +37 -42
  37. package/dist/types/components/message/message.d.ts +126 -17
  38. package/dist/types/components/modal/modal.d.ts +61 -2
  39. package/dist/types/components/navigation-bar/navigation-bar.d.ts +105 -21
  40. package/dist/types/components/panel/panel.d.ts +7 -0
  41. package/dist/types/components/search/search.d.ts +7 -0
  42. package/dist/types/components/select/color.d.ts +12 -0
  43. package/dist/types/components/select/glyphs.d.ts +124 -0
  44. package/dist/types/components/select/select.d.ts +15 -3
  45. package/dist/types/components/sort-control/sort-control.d.ts +105 -0
  46. package/dist/types/components/stat-tile/stat-tile.d.ts +288 -0
  47. package/dist/types/components/tabbox/tabbox.d.ts +16 -0
  48. package/dist/types/components/table/table.d.ts +190 -1
  49. package/dist/types/components/table-view/table-view.d.ts +11 -5
  50. package/dist/types/components/tag-picker/tag-picker.d.ts +21 -4
  51. package/dist/types/components/timebox/timebox.d.ts +7 -0
  52. package/dist/types/components/tree/tree.d.ts +13 -0
  53. package/dist/types/components/value-list/value-list.d.ts +8 -0
  54. package/dist/types/components/view/record-view.d.ts +96 -5
  55. package/dist/types/core/breakpoint.d.ts +1 -1
  56. package/dist/types/core/icons.d.ts +37 -22
  57. package/dist/types/core/motion.d.ts +59 -0
  58. package/dist/types/core/overlay-host.d.ts +15 -1
  59. package/dist/types/index.d.ts +16 -3
  60. package/dist/types/internal/app-rail.d.ts +10 -0
  61. package/dist/types/internal/menu-items.d.ts +134 -0
  62. package/dist/types/zeyos/connect.d.ts +6 -0
  63. package/dist/types/zeyos/form.d.ts +50 -9
  64. package/dist/types/zeyos/index.d.ts +1 -1
  65. package/dist/types/zeyos/query.d.ts +79 -0
  66. package/dist/types/zeyos/schema.d.ts +24 -1
  67. package/dist/types/zeyos/table.d.ts +100 -14
  68. package/dist/types/zeyos/view.d.ts +10 -0
  69. package/dist/zx-zeyos.esm.js +2206 -489
  70. package/dist/zx-zeyos.esm.min.js +56 -1
  71. package/dist/zx.css +3322 -724
  72. package/dist/zx.esm.js +12244 -5809
  73. package/dist/zx.esm.min.js +58 -3
  74. package/dist/zx.global.js +12246 -5811
  75. package/dist/zx.global.min.js +58 -3
  76. package/dist/zx.min.css +1 -1
  77. package/docs/api.json +1683 -146
  78. package/docs/llms.md +777 -110
  79. package/docs/llms.txt +14 -8
  80. package/package.json +1 -1
  81. package/src/components/account-menu/account-menu.css +35 -10
  82. package/src/components/activity-item/activity-item.css +137 -0
  83. package/src/components/activity-item/activity-item.js +602 -0
  84. package/src/components/activity-list/activity-list.css +99 -0
  85. package/src/components/activity-list/activity-list.js +409 -0
  86. package/src/components/app-icon/app-icon.css +1 -1
  87. package/src/components/app-rail/app-rail.css +191 -22
  88. package/src/components/app-sidebar/app-sidebar.css +349 -24
  89. package/src/components/app-sidebar/app-sidebar.js +86 -11
  90. package/src/components/aurora/aurora.css +5 -3
  91. package/src/components/avatar/avatar.css +32 -7
  92. package/src/components/avatar/avatar.js +72 -8
  93. package/src/components/badge/badge.css +54 -2
  94. package/src/components/badge/badge.js +29 -2
  95. package/src/components/button/button.css +74 -8
  96. package/src/components/button/button.js +44 -1
  97. package/src/components/calendar/calendar.css +46 -46
  98. package/src/components/calendar/calendar.js +33 -3
  99. package/src/components/card/card.css +2 -2
  100. package/src/components/card/card.js +12 -1
  101. package/src/components/card-view/card-view.css +10 -7
  102. package/src/components/card-view/card-view.js +25 -9
  103. package/src/components/card-view/record-card.js +7 -3
  104. package/src/components/chart/chart.css +4 -1
  105. package/src/components/chart/chart.js +12 -0
  106. package/src/components/check-button/check-button.css +10 -2
  107. package/src/components/checklist/checklist.css +9 -2
  108. package/src/components/checklist/checklist.js +11 -5
  109. package/src/components/checklist/field-adapter.js +3 -1
  110. package/src/components/code-editor/code-editor.css +68 -0
  111. package/src/components/code-editor/code-editor.js +306 -0
  112. package/src/components/code-editor/field-adapter.js +34 -0
  113. package/src/components/context-menu/context-menu.css +87 -5
  114. package/src/components/context-menu/context-menu.js +22 -30
  115. package/src/components/copy/copy-button.css +6 -0
  116. package/src/components/copy/copy-input.css +8 -3
  117. package/src/components/data-filter/data-filter.css +5 -4
  118. package/src/components/date-picker/date-picker.css +6 -6
  119. package/src/components/date-picker/date-picker.js +22 -8
  120. package/src/components/date-picker/date-range-picker.css +3 -3
  121. package/src/components/date-picker/month-picker.js +3 -3
  122. package/src/components/date-picker/time-picker.css +1 -1
  123. package/src/components/date-picker/time-picker.js +20 -8
  124. package/src/components/datebox/date-range-box.css +79 -2
  125. package/src/components/datebox/date-range-box.js +13 -2
  126. package/src/components/datebox/datebox.css +79 -2
  127. package/src/components/datebox/datebox.js +13 -2
  128. package/src/components/dialog/dialog.css +26 -0
  129. package/src/components/dialog/dialog.js +174 -70
  130. package/src/components/dropdown/dropdown.css +1 -1
  131. package/src/components/dropdown/dropdown.js +7 -5
  132. package/src/components/empty-state/empty-state.css +2 -2
  133. package/src/components/entity-ref/entity-ref.css +182 -0
  134. package/src/components/entity-ref/entity-ref.js +496 -0
  135. package/src/components/field/field.css +28 -9
  136. package/src/components/field/field.js +68 -26
  137. package/src/components/field-upload/field-upload.css +1 -1
  138. package/src/components/fieldset/fieldset.css +5 -3
  139. package/src/components/fieldset/fieldset.js +28 -5
  140. package/src/components/file-item/file-item.css +88 -0
  141. package/src/components/file-item/file-item.js +505 -0
  142. package/src/components/file-list/file-list.css +51 -0
  143. package/src/components/file-list/file-list.js +320 -0
  144. package/src/components/filter/filter.css +27 -1
  145. package/src/components/filter/filter.js +205 -47
  146. package/src/components/filter-panel/filter-panel.css +104 -0
  147. package/src/components/filter-panel/filter-panel.js +964 -0
  148. package/src/components/finder/finder.css +15 -13
  149. package/src/components/form/form.css +5 -4
  150. package/src/components/form/form.js +11 -2
  151. package/src/components/grid/grid.css +1 -1
  152. package/src/components/groupbox/groupbox.css +1 -1
  153. package/src/components/kanban-view/kanban-card.js +247 -0
  154. package/src/components/kanban-view/kanban-view.css +226 -8
  155. package/src/components/kanban-view/kanban-view.js +255 -12
  156. package/src/components/launcher/launcher.css +107 -25
  157. package/src/components/launcher/launcher.js +557 -63
  158. package/src/components/list-toolbar/list-toolbar.css +194 -0
  159. package/src/components/list-toolbar/list-toolbar.js +851 -0
  160. package/src/components/master-panel/master-panel.css +2 -0
  161. package/src/components/menu-button/menu-button.css +87 -5
  162. package/src/components/menu-button/menu-button.js +86 -46
  163. package/src/components/message/message.css +38 -5
  164. package/src/components/message/message.js +230 -17
  165. package/src/components/modal/modal.css +15 -0
  166. package/src/components/modal/modal.js +159 -3
  167. package/src/components/navigation-bar/navigation-bar.css +95 -11
  168. package/src/components/navigation-bar/navigation-bar.js +171 -4
  169. package/src/components/number-field/field-adapter.js +1 -0
  170. package/src/components/number-field/number-field.css +70 -0
  171. package/src/components/number-field/number-field.js +2 -0
  172. package/src/components/pagination/pagination.css +8 -6
  173. package/src/components/panel/panel.css +1 -1
  174. package/src/components/panel/panel.js +13 -2
  175. package/src/components/rating/rating.css +7 -0
  176. package/src/components/search/search.js +17 -5
  177. package/src/components/select/color.js +22 -0
  178. package/src/components/select/field-adapter.js +6 -1
  179. package/src/components/select/glyphs.js +165 -0
  180. package/src/components/select/select.css +138 -45
  181. package/src/components/select/select.js +86 -47
  182. package/src/components/sheet/sheet.css +11 -8
  183. package/src/components/slider/slider.css +16 -2
  184. package/src/components/slider/slider.js +1 -1
  185. package/src/components/sort-control/sort-control.css +20 -0
  186. package/src/components/sort-control/sort-control.js +140 -0
  187. package/src/components/stat-tile/stat-tile.css +208 -0
  188. package/src/components/stat-tile/stat-tile.js +601 -0
  189. package/src/components/tabbox/tabbox.css +32 -27
  190. package/src/components/tabbox/tabbox.js +17 -2
  191. package/src/components/table/table.css +155 -31
  192. package/src/components/table/table.js +386 -33
  193. package/src/components/table-view/table-view.css +8 -2
  194. package/src/components/table-view/table-view.js +21 -6
  195. package/src/components/tag-picker/tag-picker.css +86 -6
  196. package/src/components/tag-picker/tag-picker.js +25 -8
  197. package/src/components/timebox/timebox.css +22 -2
  198. package/src/components/timebox/timebox.js +18 -5
  199. package/src/components/toggle/toggle.css +12 -1
  200. package/src/components/toolbar/toolbar.js +2 -2
  201. package/src/components/tooltip/tooltip.css +4 -0
  202. package/src/components/tooltip/tooltip.js +10 -3
  203. package/src/components/tree/tree.css +25 -16
  204. package/src/components/tree/tree.js +31 -0
  205. package/src/components/value-list/value-list.css +3 -3
  206. package/src/components/value-list/value-list.js +22 -6
  207. package/src/components/view/record-view.css +5 -0
  208. package/src/components/view/record-view.js +100 -7
  209. package/src/core/breakpoint.js +1 -1
  210. package/src/core/icons.js +259 -57
  211. package/src/core/motion.js +147 -0
  212. package/src/core/overlay-host.js +21 -2
  213. package/src/index.js +30 -3
  214. package/src/internal/app-rail.js +18 -1
  215. package/src/internal/menu-items.js +142 -0
  216. package/src/zeyos/connect.js +6 -2
  217. package/src/zeyos/form.js +67 -27
  218. package/src/zeyos/index.js +1 -1
  219. package/src/zeyos/query.js +153 -0
  220. package/src/zeyos/schema.js +144 -27
  221. package/src/zeyos/table.js +68 -5
  222. package/src/zeyos/view.js +6 -0
  223. package/styles/base.css +56 -0
  224. package/styles/icons.css +11 -1
  225. package/styles/print.css +192 -0
  226. package/styles/tokens/dark.css +113 -37
  227. package/styles/tokens/global.css +121 -27
  228. package/styles/tokens/semantic.css +100 -31
  229. package/styles/tokens/themes.css +7 -6
  230. package/styles/zx.css +11 -1
  231. package/styles/tokens/density.css +0 -9
@@ -0,0 +1,194 @@
1
+ /*
2
+ * The bar above a record view. It wraps rather than collapsing: `Toolbar` moves what no longer
3
+ * fits into an overflow menu, and the first thing that menu would swallow is the tool whose badge
4
+ * explains why the list is showing four rows out of twenty.
5
+ */
6
+ .zx-list-toolbar {
7
+ /* A size container so the labels answer to the width of the bar rather than of the window: the
8
+ same toolbar sits above a full-page list and inside a narrow master panel. The width it
9
+ cannot derive from its own contents is declared here, as size containment requires. */
10
+ container-type: inline-size;
11
+ inline-size: 100%;
12
+ display: flex;
13
+ flex-wrap: wrap;
14
+ align-items: center;
15
+ gap: var(--zx-space-2);
16
+ min-inline-size: 0;
17
+ }
18
+
19
+ /*
20
+ * The search field takes the slack and gives it back first. Its hypothetical width is what decides
21
+ * whether the row fits on one line — flex breaks lines on base sizes, not on shrunk ones — so the
22
+ * field is declared narrow and allowed to grow into whatever the tools leave, up to a width past
23
+ * which a longer text box helps nobody.
24
+ */
25
+ .zx-list-toolbar > .zx-list-toolbar__search {
26
+ flex: 1 1 12rem;
27
+ max-inline-size: 22rem;
28
+ min-inline-size: 0;
29
+ }
30
+
31
+ .zx-list-toolbar > .zx-list-toolbar__search .zx-search__input {
32
+ min-inline-size: 8rem;
33
+ }
34
+
35
+ /*
36
+ * The live count line. It is never hidden and never given `display: none`: a live region has to be
37
+ * in the accessibility tree before its text changes, and an empty inline element in a row that
38
+ * already ends in blank space costs nothing to leave in place.
39
+ */
40
+ .zx-list-toolbar__count {
41
+ flex: 0 1 auto;
42
+ min-inline-size: 0;
43
+ color: var(--zx-color-text-muted);
44
+ font-size: var(--zx-text-sm);
45
+ white-space: nowrap;
46
+ overflow: hidden;
47
+ text-overflow: ellipsis;
48
+ }
49
+
50
+ .zx-list-toolbar__spacer {
51
+ flex: 1 1 auto;
52
+ min-inline-size: 0;
53
+ }
54
+
55
+ .zx-list-toolbar__tools,
56
+ .zx-list-toolbar__views {
57
+ display: flex;
58
+ flex-wrap: wrap;
59
+ align-items: center;
60
+ gap: var(--zx-space-1);
61
+ }
62
+
63
+ .zx-list-toolbar__views {
64
+ gap: 0;
65
+ border: 1px solid var(--zx-color-border-control);
66
+ border-radius: var(--zx-control-radius);
67
+ padding: 2px;
68
+ }
69
+
70
+ /*
71
+ * WCAG 2.5.5 Target Size: 44 px, whatever the theme does to spacing. A tighter theme tightens a
72
+ * layout; it does not make a finger smaller, so this floor is deliberately not expressed through
73
+ * --zx-control-height (30 px by default) the way the rest of the controls in this row are. The
74
+ * chrome is flat until the tool is hovered, focused, or pressed, so a target this size does not
75
+ * read as a slab.
76
+ */
77
+ .zx-list-toolbar__tool {
78
+ position: relative;
79
+ display: inline-flex;
80
+ align-items: center;
81
+ justify-content: center;
82
+ gap: var(--zx-space-2);
83
+ min-block-size: 44px;
84
+ min-inline-size: 44px;
85
+ padding-inline: var(--zx-space-2);
86
+ border: 1px solid transparent;
87
+ border-radius: var(--zx-control-radius);
88
+ background: none;
89
+ color: var(--zx-color-text);
90
+ font-size: var(--zx-control-font-size);
91
+ font-weight: var(--zx-control-font-weight);
92
+ line-height: 1.2;
93
+ cursor: pointer;
94
+ }
95
+
96
+ .zx-list-toolbar__tool:hover:not(:disabled) {
97
+ background: var(--zx-color-bg-hover);
98
+ }
99
+
100
+ .zx-list-toolbar__tool:focus-visible {
101
+ box-shadow: var(--zx-focus-ring);
102
+ }
103
+
104
+ /* A pressed tool is marked three ways — the state in `aria-pressed`, the neutral current fill, and
105
+ a border where the other states have none — so it never rests on colour alone. A toggled filter
106
+ is a mode the list is in, not a pick, so the fill is neutral rather than the accent tint. */
107
+ .zx-list-toolbar__tool[aria-pressed="true"] {
108
+ border-color: var(--zx-color-border-strong);
109
+ background: var(--zx-color-bg-current);
110
+ }
111
+
112
+ .zx-list-toolbar__tool:disabled {
113
+ color: var(--zx-color-text-placeholder);
114
+ cursor: default;
115
+ }
116
+
117
+ .zx-list-toolbar__tool-label {
118
+ white-space: nowrap;
119
+ }
120
+
121
+ /* The badge is decoration here: its number is already in the button's accessible name, so it must
122
+ not swallow the click that names it either. */
123
+ .zx-list-toolbar__badge {
124
+ pointer-events: none;
125
+ }
126
+
127
+ .zx-list-toolbar__view {
128
+ position: relative;
129
+ display: inline-flex;
130
+ align-items: center;
131
+ justify-content: center;
132
+ gap: var(--zx-space-1);
133
+ min-block-size: 44px;
134
+ min-inline-size: 44px;
135
+ padding-inline: var(--zx-space-2);
136
+ border: 0;
137
+ border-radius: calc(var(--zx-control-radius) - 2px);
138
+ background: none;
139
+ color: var(--zx-color-text-muted);
140
+ font-size: var(--zx-control-font-size);
141
+ font-weight: var(--zx-control-font-weight);
142
+ line-height: 1.2;
143
+ cursor: pointer;
144
+ }
145
+
146
+ .zx-list-toolbar__view:hover {
147
+ color: var(--zx-color-text);
148
+ background: var(--zx-color-bg-hover);
149
+ }
150
+
151
+ .zx-list-toolbar__view:focus-visible {
152
+ box-shadow: var(--zx-focus-ring);
153
+ }
154
+
155
+ /* The current view is where you are: the neutral current fill, the full text colour, a heavier
156
+ label. Hover stays a lighter step of the same fill. */
157
+ .zx-list-toolbar__view[aria-pressed="true"] {
158
+ background: var(--zx-color-bg-current);
159
+ color: var(--zx-color-text);
160
+ font-weight: var(--zx-weight-semibold);
161
+ }
162
+
163
+ @media (prefers-reduced-motion: no-preference) {
164
+ .zx-list-toolbar__tool,
165
+ .zx-list-toolbar__view {
166
+ transition: background-color var(--zx-dur-fast) var(--zx-ease),
167
+ color var(--zx-dur-fast) var(--zx-ease),
168
+ border-color var(--zx-dur-fast) var(--zx-ease);
169
+ }
170
+ }
171
+
172
+ /*
173
+ * Below a phone-width bar the labels go and the row becomes: field, count, icons. The targets stay
174
+ * 44 px — a narrow viewport is where that matters most — and the names survive in `aria-label`,
175
+ * which is where a tool's badge already lives.
176
+ *
177
+ * Only a control that has an icon left to stand for it gives up its word: `:has()` keeps a
178
+ * label-only entry — the `auto` shape, which no glyph in the set honestly describes — readable
179
+ * instead of collapsing it into an empty button. The label is clipped rather than removed, so it
180
+ * stays the accessible name of a view button either way.
181
+ */
182
+ @container (max-inline-size: 30rem) {
183
+ .zx-list-toolbar__tool:has(.zx-icon) .zx-list-toolbar__tool-label,
184
+ .zx-list-toolbar__view:has(.zx-icon) .zx-list-toolbar__view-label {
185
+ position: absolute;
186
+ inline-size: 1px;
187
+ block-size: 1px;
188
+ margin: -1px;
189
+ padding: 0;
190
+ overflow: hidden;
191
+ clip-path: inset(50%);
192
+ white-space: nowrap;
193
+ }
194
+ }