@zeyos/zx 3.0.0 → 4.1.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 (106) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/DESIGN-SYSTEM.md +87 -71
  3. package/README.md +16 -37
  4. package/dist/types/components/app-icon/app-icon.d.ts +88 -0
  5. package/dist/types/components/app-sidebar/app-sidebar.d.ts +106 -32
  6. package/dist/types/components/card/card.d.ts +128 -0
  7. package/dist/types/components/chart/chart.d.ts +1 -0
  8. package/dist/types/components/filter/filter-model.d.ts +87 -0
  9. package/dist/types/components/filter/filter.d.ts +331 -0
  10. package/dist/types/components/launcher/launcher.d.ts +65 -6
  11. package/dist/types/components/select/select.d.ts +97 -4
  12. package/dist/types/components/table/table.d.ts +107 -3
  13. package/dist/types/components/tag-picker/tag-picker.d.ts +16 -0
  14. package/dist/types/core/dom.d.ts +9 -1
  15. package/dist/types/core/util.d.ts +9 -0
  16. package/dist/types/index.d.ts +6 -2
  17. package/dist/types/{components/app-rail → internal}/app-rail.d.ts +34 -19
  18. package/dist/types/zeyos/icons.d.ts +24 -2
  19. package/dist/types/zeyos/index.d.ts +3 -2
  20. package/dist/types/zeyos/launcher.d.ts +147 -0
  21. package/dist/types/zeyos/select.d.ts +41 -0
  22. package/dist/zx-zeyos.esm.js +2018 -113
  23. package/dist/zx-zeyos.esm.min.js +1 -1
  24. package/dist/zx.css +815 -16
  25. package/dist/zx.esm.js +2661 -338
  26. package/dist/zx.esm.min.js +3 -3
  27. package/dist/zx.global.js +2661 -338
  28. package/dist/zx.global.min.js +3 -3
  29. package/dist/zx.min.css +1 -1
  30. package/docs/api.json +602 -110
  31. package/docs/llms.md +181 -123
  32. package/docs/llms.txt +24 -21
  33. package/package.json +8 -17
  34. package/src/components/app-icon/app-icon.css +105 -0
  35. package/src/components/app-icon/app-icon.js +134 -0
  36. package/src/components/app-sidebar/app-sidebar.css +12 -0
  37. package/src/components/app-sidebar/app-sidebar.js +310 -110
  38. package/src/components/card/card.css +149 -0
  39. package/src/components/card/card.js +285 -0
  40. package/src/components/chart/chart.js +8 -3
  41. package/src/components/filter/filter-model.js +226 -0
  42. package/src/components/filter/filter.css +147 -0
  43. package/src/components/filter/filter.js +554 -0
  44. package/src/components/grid/grid.css +1 -1
  45. package/src/components/grid/grid.js +14 -4
  46. package/src/components/launcher/launcher.css +113 -3
  47. package/src/components/launcher/launcher.js +234 -26
  48. package/src/components/message/message.css +36 -3
  49. package/src/components/select/field-adapter.js +9 -4
  50. package/src/components/select/select.css +161 -10
  51. package/src/components/select/select.js +361 -48
  52. package/src/components/table/table.css +85 -0
  53. package/src/components/table/table.js +426 -31
  54. package/src/components/tag-picker/tag-picker.css +19 -0
  55. package/src/components/tag-picker/tag-picker.js +42 -5
  56. package/src/core/dom.js +21 -1
  57. package/src/core/util.js +20 -0
  58. package/src/index.js +9 -2
  59. package/src/{components/app-rail → internal}/app-rail.js +80 -30
  60. package/src/zeyos/icons.js +38 -20
  61. package/src/zeyos/index.js +8 -2
  62. package/src/zeyos/launcher.js +338 -0
  63. package/src/zeyos/modules.js +1 -0
  64. package/src/zeyos/select.js +116 -1
  65. package/styles/tokens/global.css +1 -1
  66. package/styles/tokens/modules.css +1 -0
  67. package/styles/tokens/semantic.css +9 -0
  68. package/styles/tokens/themes.css +2 -2
  69. package/styles/zx.css +3 -0
  70. package/MIGRATION.md +0 -749
  71. package/dist/types/compat/base.d.ts +0 -156
  72. package/dist/types/compat/globals.d.ts +0 -20
  73. package/dist/types/compat/index.d.ts +0 -128
  74. package/dist/types/compat/map/basic.d.ts +0 -175
  75. package/dist/types/compat/map/data.d.ts +0 -103
  76. package/dist/types/compat/map/date-time.d.ts +0 -80
  77. package/dist/types/compat/map/factory.d.ts +0 -9
  78. package/dist/types/compat/map/form.d.ts +0 -98
  79. package/dist/types/compat/map/helpers.d.ts +0 -12
  80. package/dist/types/compat/map/http.d.ts +0 -36
  81. package/dist/types/compat/map/layout.d.ts +0 -106
  82. package/dist/types/compat/map/options.d.ts +0 -80
  83. package/dist/types/compat/map/select.d.ts +0 -95
  84. package/dist/types/compat/map/stubs.d.ts +0 -32
  85. package/dist/types/compat/map/utilities.d.ts +0 -37
  86. package/dist/types/compat-entry.d.ts +0 -5
  87. package/dist/zx-compat.esm.js +0 -17848
  88. package/dist/zx-compat.esm.min.js +0 -1
  89. package/dist/zx-compat.global.js +0 -29008
  90. package/dist/zx-compat.global.min.js +0 -3
  91. package/src/compat/base.js +0 -291
  92. package/src/compat/globals.js +0 -167
  93. package/src/compat/index.js +0 -84
  94. package/src/compat/map/basic.js +0 -464
  95. package/src/compat/map/data.js +0 -254
  96. package/src/compat/map/date-time.js +0 -177
  97. package/src/compat/map/factory.js +0 -45
  98. package/src/compat/map/form.js +0 -330
  99. package/src/compat/map/helpers.js +0 -46
  100. package/src/compat/map/http.js +0 -117
  101. package/src/compat/map/layout.js +0 -256
  102. package/src/compat/map/options.js +0 -267
  103. package/src/compat/map/select.js +0 -198
  104. package/src/compat/map/stubs.js +0 -26
  105. package/src/compat/map/utilities.js +0 -113
  106. package/src/compat-entry.js +0 -11
@@ -7,10 +7,15 @@ import { Select } from './select.js';
7
7
  */
8
8
  export function registerSelectFieldAdapter() {
9
9
  Field.register('zxselect', (field, options) => {
10
- const select = field.own(new Select(null, {
11
- ...(options.props ?? {}),
12
- value: options.value
13
- }));
10
+ const props = options.props ?? {};
11
+ const preset = props.preset;
12
+ const selectOptions = { ...props, value: options.value };
13
+ delete selectOptions.preset;
14
+ const select = field.own(preset === 'priority'
15
+ ? Select.priority(null, selectOptions)
16
+ : preset === 'status'
17
+ ? Select.status(null, selectOptions)
18
+ : new Select(null, selectOptions));
14
19
  field.listen(select.el, 'change', (event) => event.stopImmediatePropagation());
15
20
  select.on('change', (event) => field.emit('change', { value: event.detail.value }));
16
21
  return {
@@ -8,7 +8,7 @@
8
8
 
9
9
  .zx-select__control {
10
10
  display: grid;
11
- grid-template-columns: minmax(0, 1fr) auto auto auto;
11
+ grid-template-columns: auto minmax(0, 1fr) auto auto auto;
12
12
  align-items: center;
13
13
  min-block-size: var(--zx-control-height);
14
14
  overflow: hidden;
@@ -17,11 +17,25 @@
17
17
  background: var(--zx-color-bg-control);
18
18
  }
19
19
 
20
+ .zx-select__value-adornment {
21
+ display: inline-flex;
22
+ grid-column: 1;
23
+ align-items: center;
24
+ padding-inline-start: var(--zx-control-pad-x);
25
+ }
26
+
27
+ .zx-select__value-adornment[hidden] { display: none; }
28
+
29
+ .zx-select__value-adornment:not([hidden]) + .zx-select__input {
30
+ padding-inline-start: var(--zx-space-2) !important;
31
+ }
32
+
20
33
  .zx-select__control:has(.zx-select__input:focus-visible) {
21
34
  box-shadow: var(--zx-focus-ring);
22
35
  }
23
36
 
24
37
  .zx-select__input {
38
+ grid-column: 2;
25
39
  inline-size: 100%;
26
40
  min-inline-size: 0;
27
41
  min-block-size: calc(var(--zx-control-height) - 2px) !important;
@@ -48,6 +62,11 @@
48
62
  padding: 0 !important;
49
63
  }
50
64
 
65
+ .zx-select__clear { grid-column: 3; }
66
+ .zx-select__loading { grid-column: 4; justify-self: center; }
67
+ .zx-select__toggle { grid-column: 5; align-self: stretch; }
68
+ .zx-select__toggle > .zx-icon { display: block; }
69
+
51
70
  .zx-select__clear:hover,
52
71
  .zx-select__toggle:hover {
53
72
  color: var(--zx-color-text);
@@ -155,21 +174,153 @@
155
174
  }
156
175
 
157
176
  .zx-select__priority-icon {
158
- inline-size: 10px;
159
- block-size: 10px;
177
+ display: inline-flex;
178
+ gap: 2px;
160
179
  flex: none;
161
- border-radius: var(--zx-radius-sm);
162
- background: var(--zx-color-warning);
180
+ color: var(--zx-color-warning);
181
+ }
182
+
183
+ .zx-select__priority-icon > span {
184
+ inline-size: 7px;
185
+ block-size: 7px;
186
+ border: 1px solid currentColor;
187
+ border-radius: 2px;
163
188
  }
164
189
 
165
- .zx-select__priority-icon[data-level="0"],
190
+ .zx-select__priority-icon > span[data-filled="true"] { background: currentColor; }
191
+ .zx-select__priority-icon[data-level="0"] { color: var(--zx-color-success); }
166
192
  .zx-select__priority-icon[data-level="1"] {
167
- background: var(--zx-color-success);
193
+ color: color-mix(in srgb, var(--zx-color-success) 35%, var(--zx-color-warning));
194
+ }
195
+ .zx-select__priority-icon[data-level="2"] { color: var(--zx-color-warning); }
196
+ .zx-select__priority-icon[data-level="3"] {
197
+ color: color-mix(in srgb, var(--zx-color-warning) 35%, var(--zx-color-danger));
198
+ }
199
+ .zx-select__priority-icon[data-level="4"] { color: var(--zx-color-danger); }
200
+
201
+ .zx-select__status {
202
+ display: grid;
203
+ grid-template-columns: auto minmax(0, 1fr) auto;
204
+ align-items: center;
205
+ gap: var(--zx-space-2);
206
+ }
207
+
208
+ .zx-select__entity-glyph {
209
+ display: inline-grid;
210
+ place-items: center;
211
+ inline-size: 20px;
212
+ block-size: 20px;
213
+ border-radius: var(--zx-radius-sm);
214
+ background: var(--zx-select-entity-color, var(--zx-color-accent-subtle));
215
+ color: var(--zx-color-text-invert);
216
+ }
217
+
218
+ .zx-select__status-copy,
219
+ .zx-select__action-copy {
220
+ display: grid;
221
+ min-inline-size: 0;
222
+ }
223
+
224
+ .zx-select__status-description,
225
+ .zx-select__action-description {
226
+ overflow: hidden;
227
+ color: var(--zx-color-text-muted);
228
+ font-size: var(--zx-text-xs);
229
+ text-overflow: ellipsis;
230
+ white-space: nowrap;
168
231
  }
169
232
 
170
- .zx-select__priority-icon[data-level="3"],
171
- .zx-select__priority-icon[data-level="4"] {
172
- background: var(--zx-color-danger);
233
+ .zx-select__status-shortcut {
234
+ border: 0;
235
+ background: transparent;
236
+ color: var(--zx-color-text-muted);
237
+ font-family: var(--zx-font-mono);
238
+ font-size: var(--zx-text-xs);
239
+ }
240
+
241
+ .zx-select__status-indicator {
242
+ position: relative;
243
+ display: inline-grid;
244
+ place-items: center;
245
+ inline-size: 14px;
246
+ block-size: 14px;
247
+ flex: none;
248
+ border: 2px solid currentColor;
249
+ border-radius: var(--zx-radius-full);
250
+ color: var(--zx-color-text-muted);
251
+ }
252
+
253
+ .zx-select__status-indicator[data-tone="neutral"] { color: var(--zx-color-border-strong); }
254
+ .zx-select__status-indicator[data-tone="warning"] { color: var(--zx-color-warning); }
255
+ .zx-select__status-indicator[data-tone="info"] { color: var(--zx-color-info); }
256
+ .zx-select__status-indicator[data-tone="accent"] { color: var(--zx-color-accent); }
257
+ .zx-select__status-indicator[data-tone="success"] { color: var(--zx-color-success); }
258
+ .zx-select__status-indicator[data-tone="danger"] { color: var(--zx-color-danger); }
259
+
260
+ .zx-select__status-indicator[data-indicator="dotted"] { border-style: dotted; }
261
+ .zx-select__status-indicator[data-indicator="progress"]::after {
262
+ content: "";
263
+ inline-size: 4px;
264
+ block-size: 4px;
265
+ border-radius: inherit;
266
+ background: currentColor;
267
+ }
268
+ .zx-select__status-indicator[data-indicator="review"] {
269
+ background: linear-gradient(90deg, currentColor 50%, transparent 50%);
270
+ }
271
+ .zx-select__status-indicator[data-indicator="ready"] {
272
+ background: conic-gradient(currentColor 0 35%, transparent 35% 100%);
273
+ }
274
+ .zx-select__status-indicator[data-indicator="waiting"] {
275
+ background: conic-gradient(currentColor 0 70%, transparent 70% 100%);
276
+ }
277
+ .zx-select__status-indicator:is([data-indicator="done"], [data-indicator="canceled"]) {
278
+ background: currentColor;
279
+ }
280
+ .zx-select__status-indicator:is([data-indicator="done"], [data-indicator="canceled"]) > .zx-icon {
281
+ color: var(--zx-color-bg-raised);
282
+ }
283
+ .zx-select__status-indicator[data-indicator="duplicate"]::after {
284
+ content: "";
285
+ inline-size: 8px;
286
+ block-size: 2px;
287
+ border-radius: var(--zx-radius-full);
288
+ background: currentColor;
289
+ transform: rotate(-45deg);
290
+ }
291
+
292
+ .zx-select__action-content {
293
+ display: flex;
294
+ align-items: center;
295
+ gap: var(--zx-space-2);
296
+ }
297
+
298
+ .zx-select__action-icon { display: inline-flex; color: var(--zx-color-text-muted); }
299
+
300
+ .zx-select__entity,
301
+ .zx-select__entity-none {
302
+ display: flex;
303
+ align-items: center;
304
+ gap: var(--zx-space-2);
305
+ }
306
+
307
+ .zx-select__entity-icon { display: inline-flex; flex: none; }
308
+ .zx-select__entity-copy { display: grid; min-inline-size: 0; }
309
+ .zx-select__entity-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
310
+ .zx-select__entity-subtitle {
311
+ overflow: hidden;
312
+ color: var(--zx-color-text-muted);
313
+ font-size: var(--zx-text-xs);
314
+ text-overflow: ellipsis;
315
+ white-space: nowrap;
316
+ }
317
+
318
+ .zx-select__entity-none-icon {
319
+ inline-size: 14px;
320
+ block-size: 14px;
321
+ flex: none;
322
+ border: 2px dotted var(--zx-color-text-muted);
323
+ border-radius: var(--zx-radius-full);
173
324
  }
174
325
 
175
326
  @media (prefers-reduced-motion: no-preference) {