@zeyos/zx 2.3.0 → 3.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 (105) hide show
  1. package/CHANGELOG.md +87 -0
  2. package/DESIGN-SYSTEM.md +136 -0
  3. package/MIGRATION.md +155 -4
  4. package/README.md +24 -13
  5. package/dist/types/compat/map/data.d.ts +3 -2
  6. package/dist/types/components/account-menu/account-menu.d.ts +144 -0
  7. package/dist/types/components/app-rail/app-rail.d.ts +250 -0
  8. package/dist/types/components/app-sidebar/app-sidebar.d.ts +169 -0
  9. package/dist/types/components/avatar/avatar.d.ts +100 -0
  10. package/dist/types/components/chart/chart.d.ts +321 -0
  11. package/dist/types/components/date-picker/month-picker.d.ts +6 -0
  12. package/dist/types/components/dialog/dialog.d.ts +9 -0
  13. package/dist/types/components/dock/dock.d.ts +495 -0
  14. package/dist/types/components/dropdown/dropdown.d.ts +2 -2
  15. package/dist/types/components/field/field.d.ts +14 -0
  16. package/dist/types/components/field-upload/field-upload.d.ts +37 -4
  17. package/dist/types/components/form/form.d.ts +25 -3
  18. package/dist/types/components/grid/grid.d.ts +172 -0
  19. package/dist/types/components/launcher/launcher.d.ts +300 -0
  20. package/dist/types/components/layout/layout.d.ts +4 -4
  21. package/dist/types/components/menu-button/menu-button.d.ts +10 -2
  22. package/dist/types/components/modal/modal.d.ts +25 -0
  23. package/dist/types/components/multi-value-editor/multi-value-editor.d.ts +7 -1
  24. package/dist/types/components/questionnaire/items.d.ts +327 -0
  25. package/dist/types/components/questionnaire/questionnaire.d.ts +449 -0
  26. package/dist/types/components/sheet/sheet-stack.d.ts +167 -0
  27. package/dist/types/components/sheet/sheet.d.ts +294 -0
  28. package/dist/types/components/split-view/split-view.d.ts +2 -21
  29. package/dist/types/components/table/table.d.ts +219 -12
  30. package/dist/types/components/tooltip/tooltip.d.ts +2 -2
  31. package/dist/types/components/value-list/value-list.d.ts +24 -3
  32. package/dist/types/core/dom.d.ts +114 -0
  33. package/dist/types/core/drag-axis.d.ts +111 -0
  34. package/dist/types/core/position.d.ts +4 -2
  35. package/dist/types/index.d.ts +12 -2
  36. package/dist/zx-compat.esm.js +641 -277
  37. package/dist/zx-compat.esm.min.js +1 -1
  38. package/dist/zx-compat.global.js +7609 -2236
  39. package/dist/zx-compat.global.min.js +3 -3
  40. package/dist/zx-zeyos.esm.js +546 -87
  41. package/dist/zx-zeyos.esm.min.js +1 -1
  42. package/dist/zx.css +1452 -101
  43. package/dist/zx.esm.js +7952 -2592
  44. package/dist/zx.esm.min.js +3 -3
  45. package/dist/zx.global.js +7952 -2592
  46. package/dist/zx.global.min.js +3 -3
  47. package/dist/zx.min.css +1 -1
  48. package/docs/api.json +2276 -337
  49. package/docs/llms.md +426 -30
  50. package/docs/llms.txt +21 -9
  51. package/package.json +4 -2
  52. package/src/compat/globals.js +3 -1
  53. package/src/compat/map/data.js +31 -9
  54. package/src/components/account-menu/account-menu.css +70 -0
  55. package/src/components/account-menu/account-menu.js +208 -0
  56. package/src/components/app-rail/app-rail.css +107 -0
  57. package/src/components/app-rail/app-rail.js +668 -0
  58. package/src/components/app-sidebar/app-sidebar.css +68 -0
  59. package/src/components/app-sidebar/app-sidebar.js +388 -0
  60. package/src/components/avatar/avatar.css +61 -0
  61. package/src/components/avatar/avatar.js +222 -0
  62. package/src/components/button/button.css +0 -1
  63. package/src/components/chart/chart.css +61 -0
  64. package/src/components/chart/chart.js +518 -0
  65. package/src/components/date-picker/month-picker.js +9 -0
  66. package/src/components/dialog/dialog.js +11 -4
  67. package/src/components/dock/dock.css +228 -0
  68. package/src/components/dock/dock.js +977 -0
  69. package/src/components/dropdown/dropdown.js +1 -1
  70. package/src/components/field/field.js +2 -0
  71. package/src/components/field-upload/field-upload.js +9 -4
  72. package/src/components/form/form.js +6 -3
  73. package/src/components/grid/grid.css +6 -0
  74. package/src/components/grid/grid.js +213 -0
  75. package/src/components/launcher/launcher.css +100 -0
  76. package/src/components/launcher/launcher.js +557 -0
  77. package/src/components/layout/layout.js +2 -2
  78. package/src/components/menu-button/menu-button.js +27 -2
  79. package/src/components/modal/modal.css +5 -1
  80. package/src/components/modal/modal.js +37 -2
  81. package/src/components/multi-value-editor/multi-value-editor.js +2 -1
  82. package/src/components/questionnaire/items.js +370 -0
  83. package/src/components/questionnaire/questionnaire.css +387 -0
  84. package/src/components/questionnaire/questionnaire.js +1033 -0
  85. package/src/components/select/select.css +0 -1
  86. package/src/components/sheet/sheet-stack.js +304 -0
  87. package/src/components/sheet/sheet.css +351 -0
  88. package/src/components/sheet/sheet.js +551 -0
  89. package/src/components/split-view/split-view.js +76 -161
  90. package/src/components/table/table.css +43 -0
  91. package/src/components/table/table.js +523 -45
  92. package/src/components/tooltip/tooltip.js +5 -2
  93. package/src/components/value-list/value-list.js +6 -3
  94. package/src/core/dom.js +302 -0
  95. package/src/core/drag-axis.js +203 -0
  96. package/src/core/position.js +68 -22
  97. package/src/index.js +19 -2
  98. package/styles/tokens/dark.css +2 -3
  99. package/styles/tokens/global.css +5 -5
  100. package/styles/tokens/semantic.css +5 -3
  101. package/styles/tokens/themes.css +1 -1
  102. package/styles/zx.css +10 -1
  103. package/dist/types/components/permission/permission.d.ts +0 -96
  104. package/src/components/permission/permission.css +0 -47
  105. package/src/components/permission/permission.js +0 -201
@@ -0,0 +1,228 @@
1
+ /*
2
+ * One flex line, one custom property per pane. A sized pane is `flex: 0 0 var(--zx-pane-size)`, a
3
+ * collapsed one falls back to `auto` and hides its body so it measures exactly its header, and one
4
+ * element carries `data-grow` to absorb the slack. That is what keeps a drag local: it rewrites at
5
+ * most two properties and nothing else in the stack moves.
6
+ *
7
+ * The root has no size of its own — give it one (a grid area, `block-size: 100%`, a flex child)
8
+ * when the panes should fill a shell rather than grow with their content.
9
+ */
10
+ .zx-dock {
11
+ --zx-dock-divider-size: var(--zx-space-2);
12
+ --zx-dock-divider-line: 1px;
13
+ display: flex;
14
+ min-inline-size: 0;
15
+ min-block-size: 0;
16
+ background: var(--zx-color-bg-surface);
17
+ color: var(--zx-color-text);
18
+ }
19
+
20
+ .zx-dock[data-orientation="vertical"] { flex-direction: column; }
21
+ .zx-dock[data-orientation="horizontal"] { flex-direction: row; }
22
+
23
+ .zx-dock[data-dragging="true"] {
24
+ user-select: none;
25
+ cursor: inherit;
26
+ }
27
+
28
+ .zx-dock__pane {
29
+ display: flex;
30
+ flex-direction: column;
31
+ flex: 0 0 var(--zx-pane-size, auto);
32
+ min-inline-size: 0;
33
+ min-block-size: 0;
34
+ overflow: hidden;
35
+ }
36
+
37
+ .zx-dock__pane[data-grow="true"],
38
+ .zx-dock__content {
39
+ flex: 1 1 0;
40
+ min-inline-size: 0;
41
+ min-block-size: 0;
42
+ }
43
+
44
+ .zx-dock__content { overflow: auto; }
45
+
46
+ /* A collapsed pane keeps its header and nothing else, so the stack measures it exactly. */
47
+ .zx-dock__pane[data-state="collapsed"] { flex: 0 0 auto; }
48
+ .zx-dock__pane[data-state="collapsed"] > .zx-dock__body { display: none; }
49
+
50
+ .zx-dock__header {
51
+ flex: none;
52
+ display: flex;
53
+ align-items: center;
54
+ gap: var(--zx-space-1);
55
+ padding-inline: var(--zx-space-2);
56
+ min-block-size: var(--zx-control-height);
57
+ border-block-end: 1px solid var(--zx-color-border);
58
+ background: var(--zx-color-bg-muted);
59
+ }
60
+
61
+ .zx-dock__pane[data-state="collapsed"] > .zx-dock__header { border-block-end-color: transparent; }
62
+
63
+ .zx-dock__toggle {
64
+ flex: none;
65
+ display: inline-flex;
66
+ align-items: center;
67
+ gap: var(--zx-space-2);
68
+ /* Clears the control chrome `styles/base.css` puts on every bare button. */
69
+ min-block-size: 0;
70
+ border: 0;
71
+ border-radius: var(--zx-radius-sm);
72
+ padding: var(--zx-space-1);
73
+ background: none;
74
+ color: inherit;
75
+ font: inherit;
76
+ font-size: var(--zx-text-sm);
77
+ font-weight: var(--zx-control-font-weight);
78
+ cursor: pointer;
79
+ }
80
+
81
+ .zx-dock__toggle:hover:not(:disabled) { background: var(--zx-color-bg-hover); }
82
+ .zx-dock__toggle:disabled { cursor: default; }
83
+ .zx-dock__toggle:disabled .zx-dock__chevron { visibility: hidden; }
84
+
85
+ .zx-dock__toggle:focus-visible {
86
+ outline: none;
87
+ box-shadow: var(--zx-focus-ring);
88
+ }
89
+
90
+ .zx-dock__chevron {
91
+ display: inline-flex;
92
+ color: var(--zx-color-text-muted);
93
+ transition: rotate var(--zx-dur-fast) var(--zx-ease);
94
+ }
95
+
96
+ .zx-dock__pane[data-state="open"] > .zx-dock__header .zx-dock__chevron { rotate: 90deg; }
97
+
98
+ @media (prefers-reduced-motion: reduce) {
99
+ .zx-dock__chevron { transition: none; }
100
+ }
101
+
102
+ .zx-dock__title {
103
+ white-space: nowrap;
104
+ overflow: hidden;
105
+ text-overflow: ellipsis;
106
+ }
107
+
108
+ /* A tab group puts its strip where the title would be, which is what makes it read as one pane. */
109
+ .zx-dock__tabs {
110
+ display: flex;
111
+ align-items: stretch;
112
+ gap: var(--zx-space-1);
113
+ min-inline-size: 0;
114
+ overflow-x: auto;
115
+ scrollbar-width: none;
116
+ }
117
+
118
+ .zx-dock__tabs::-webkit-scrollbar { display: none; }
119
+
120
+ .zx-dock__tab {
121
+ flex: none;
122
+ /* Same reason as the toggle: the base control box does not apply to a tab. */
123
+ min-block-size: 0;
124
+ border: 0;
125
+ border-radius: var(--zx-radius-sm);
126
+ padding: var(--zx-space-1) var(--zx-space-2);
127
+ background: none;
128
+ color: var(--zx-color-text-muted);
129
+ font: inherit;
130
+ font-size: var(--zx-text-sm);
131
+ white-space: nowrap;
132
+ cursor: pointer;
133
+ }
134
+
135
+ .zx-dock__tab:hover { color: var(--zx-color-text); }
136
+
137
+ .zx-dock__tab[aria-selected="true"] {
138
+ background: var(--zx-color-bg-surface);
139
+ color: var(--zx-color-text);
140
+ font-weight: var(--zx-control-font-weight);
141
+ }
142
+
143
+ .zx-dock__tab:focus-visible {
144
+ outline: none;
145
+ box-shadow: var(--zx-focus-ring);
146
+ }
147
+
148
+ .zx-dock__body {
149
+ display: flex;
150
+ flex-direction: column;
151
+ flex: 1 1 auto;
152
+ min-block-size: 0;
153
+ min-inline-size: 0;
154
+ overflow: auto;
155
+ }
156
+
157
+ .zx-dock__pane-content,
158
+ .zx-dock__panel {
159
+ flex: 1 1 auto;
160
+ min-block-size: 0;
161
+ padding: var(--zx-space-3);
162
+ }
163
+
164
+ /*
165
+ * A dock nested as a pane's whole content fills it. Without this the inner dock would size to its
166
+ * own content and its growing pane would collapse to nothing — and dock-in-dock is exactly how a
167
+ * workbench is built, so it should not need a rule in the application.
168
+ */
169
+ .zx-dock__pane-content > .zx-dock:only-child,
170
+ .zx-dock__panel > .zx-dock:only-child {
171
+ block-size: 100%;
172
+ }
173
+
174
+ .zx-dock__panel:focus-visible {
175
+ outline: none;
176
+ box-shadow: inset var(--zx-focus-ring);
177
+ }
178
+
179
+ /*
180
+ * The hit area is thicker than the line it draws, so the divider is grabbable without a visible
181
+ * gutter — the same trade SplitView makes.
182
+ */
183
+ .zx-dock__divider {
184
+ position: relative;
185
+ flex: none;
186
+ background: none;
187
+ }
188
+
189
+ .zx-dock[data-orientation="vertical"] > .zx-dock__divider {
190
+ block-size: var(--zx-dock-divider-size);
191
+ margin-block: calc(var(--zx-dock-divider-size) / -2);
192
+ cursor: row-resize;
193
+ }
194
+
195
+ .zx-dock[data-orientation="horizontal"] > .zx-dock__divider {
196
+ inline-size: var(--zx-dock-divider-size);
197
+ margin-inline: calc(var(--zx-dock-divider-size) / -2);
198
+ cursor: col-resize;
199
+ }
200
+
201
+ .zx-dock__divider[data-disabled] { cursor: default; }
202
+
203
+ .zx-dock__divider::after {
204
+ content: "";
205
+ position: absolute;
206
+ inset: 0;
207
+ margin: auto;
208
+ background: var(--zx-color-border);
209
+ }
210
+
211
+ .zx-dock[data-orientation="vertical"] > .zx-dock__divider::after {
212
+ block-size: var(--zx-dock-divider-line);
213
+ }
214
+
215
+ .zx-dock[data-orientation="horizontal"] > .zx-dock__divider::after {
216
+ inline-size: var(--zx-dock-divider-line);
217
+ }
218
+
219
+ .zx-dock__divider:not([data-disabled]):hover::after,
220
+ .zx-dock[data-dragging="true"] .zx-dock__divider:focus::after {
221
+ background: var(--zx-color-accent);
222
+ }
223
+
224
+ .zx-dock__divider:focus-visible {
225
+ outline: none;
226
+ z-index: 1;
227
+ box-shadow: var(--zx-focus-ring);
228
+ }