@threadlabs/looma 0.37.6 → 0.38.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 (45) hide show
  1. package/components/ui-button/ui-button.html +20 -5
  2. package/components/ui-combobox/ui-combobox.html +24 -3
  3. package/components/ui-combobox/ui-combobox.js +18 -3
  4. package/components/ui-icon-button/ui-icon-button.html +17 -8
  5. package/components/ui-menu-item/ui-menu-item.html +6 -1
  6. package/components/ui-select/ui-select.html +12 -0
  7. package/dist/index.js +1 -1
  8. package/docs/README.md +23 -10
  9. package/docs/catalog.json +78 -31
  10. package/docs/customizer-render.mjs +36 -20
  11. package/docs/customizer.js +76 -25
  12. package/docs/documentation.css +2 -0
  13. package/docs/palette.mjs +3 -3
  14. package/docs/site.mjs +1 -1
  15. package/docs/theme-session.mjs +1 -0
  16. package/docs/theme.mjs +11 -10
  17. package/package.json +2 -2
  18. package/styles/ui-button.css +19 -9
  19. package/styles/ui-combobox.css +40 -2
  20. package/styles/ui-icon-button.css +12 -2
  21. package/styles/ui-menu-item.css +6 -1
  22. package/styles/ui-select.css +9 -0
  23. package/theme-system.css +7 -2
  24. package/vanilla/UiButton.js +1 -1
  25. package/vanilla/UiCombobox.d.ts +1 -0
  26. package/vanilla/UiCombobox.js +38 -37
  27. package/vanilla/UiIconButton.d.ts +1 -1
  28. package/vanilla/UiIconButton.js +1 -1
  29. package/vanilla/UiSelect.d.ts +1 -0
  30. package/vanilla/UiSelect.js +7 -7
  31. package/vue/UiButton.vue +30 -12
  32. package/vue/UiCombobox.d.ts +6 -0
  33. package/vue/UiCombobox.vue +70 -6
  34. package/vue/UiIconButton.d.ts +2 -2
  35. package/vue/UiIconButton.vue +23 -18
  36. package/vue/UiMenuItem.vue +6 -1
  37. package/vue/UiSelect.d.ts +6 -0
  38. package/vue/UiSelect.vue +30 -1
  39. package/vue/chunks/UiButton.js +4 -4
  40. package/vue/chunks/UiCombobox.js +72 -46
  41. package/vue/chunks/UiIconButton.js +6 -7
  42. package/vue/chunks/UiMenuItem.js +1 -1
  43. package/vue/chunks/UiSelect.js +27 -2
  44. package/vue/components.css +126 -25
  45. package/vue/editor/index.js +2 -3
@@ -268,7 +268,6 @@
268
268
  background-color: var(--ui-button-hover-surface, oklch(from var(--_tone) l c h / 12%));
269
269
  }
270
270
 
271
- /* A neutral card encloses content quietly; ordinary outlines keep their action-tone edge. */
272
271
  :scope:where([data-component~="ui-button"])[data-appearance="card"][data-tone="neutral"] {
273
272
  border-color: var(--ui-button-border, var(--ui-border));
274
273
  }
@@ -277,6 +276,12 @@
277
276
  border-color: var(--ui-button-hover-border, var(--ui-border-strong));
278
277
  }
279
278
 
279
+ :scope:where([data-component~="ui-button"])[data-appearance="card"][aria-pressed="true"] {
280
+ background-color: var(--ui-selection-surface);
281
+ border-color: var(--ui-selection-border);
282
+ color: var(--ui-selection-text);
283
+ }
284
+
280
285
  /* Pressed reads as pressed in: the highlight goes, and the shadow moves inside. */
281
286
  :scope:where([data-component~="ui-button"]):active:not(:disabled, [aria-disabled="true"]) {
282
287
  scale: var(--ui-press-scale, 1);
@@ -324,6 +329,18 @@
324
329
  background-color: var(--ui-button-surface, var(--ui-neutral-surface));
325
330
  color: var(--ui-button-text, var(--ui-text));
326
331
  }
332
+ :scope:where([data-component~="ui-button"])[data-tone="neutral"][data-appearance="outline"] {
333
+ border-color: var(--ui-button-border, var(--ui-control-border));
334
+ background-color: var(--ui-button-surface, transparent);
335
+ }
336
+ :scope:where([data-component~="ui-button"])[data-tone="neutral"][data-appearance="outline"]:hover:not(:disabled, [aria-disabled="true"]) {
337
+ border-color: var(--ui-button-hover-border, var(--ui-control-border-hover, var(--ui-control-border)));
338
+ background-color: var(--ui-button-hover-surface, var(--ui-neutral-hover));
339
+ }
340
+ :scope:where([data-component~="ui-button"])[data-tone="neutral"][data-appearance="outline"]:active:not(:disabled, [aria-disabled="true"]) {
341
+ border-color: var(--ui-button-hover-border, var(--ui-control-border-hover, var(--ui-control-border)));
342
+ background-color: var(--ui-button-active-surface, var(--ui-neutral-active));
343
+ }
327
344
  :scope:where([data-component~="ui-button"])[data-tone="neutral"][data-appearance="solid"]:hover:not(:disabled, [aria-disabled="true"]) {
328
345
  background-color: var(--ui-button-hover-surface, var(--ui-neutral-hover));
329
346
  }
@@ -411,10 +428,8 @@
411
428
  border-color: transparent;
412
429
  }
413
430
 
414
- /* Pressed, or holding its menu open, a ghost button sinks slightly: a light surface with a faint
415
- edge and a soft inner shadow. Lighter than hover, so an open menu's trigger never reads as heavy. */
416
431
  :scope:where([data-component~="ui-button"])[data-appearance="ghost"]:is(:active, [aria-expanded="true"]):not(:disabled, [aria-disabled="true"]) {
417
- background-color: var(--ui-button-ghost-active-surface, color-mix(in oklch, var(--ui-surface), var(--_tone) 3%));
432
+ background-color: var(--ui-button-ghost-active-surface, oklch(from var(--_tone) l c h / 18%));
418
433
  border-color: transparent;
419
434
  box-shadow: inset 0 0 0 1px oklch(from var(--_tone) l c h / 10%), inset 0 1px 2px oklch(from var(--_tone) l c h / 8%);
420
435
  }
@@ -548,8 +563,6 @@
548
563
  /* A link is never :enabled, so interactive states test "not unavailable" instead: for a button that
549
564
  is exactly :enabled, at the same specificity, and it also matches a link that can be followed. */
550
565
 
551
- /* A neutral card encloses content quietly; ordinary outlines keep their action-tone edge. */
552
-
553
566
  /* Pressed reads as pressed in: the highlight goes, and the shadow moves inside. */
554
567
 
555
568
  /* Tone is the colour, variant is the volume. Every pairing works: a danger outline is a
@@ -559,9 +572,6 @@
559
572
 
560
573
  /* Tints derive from the text colour, not a surface token, so hover and press show on any background. */
561
574
 
562
- /* Pressed, or holding its menu open, a ghost button sinks slightly: a light surface with a faint
563
- edge and a soft inner shadow. Lighter than hover, so an open menu's trigger never reads as heavy. */
564
-
565
575
  /* A soft halo that transitions in with the other box-shadow changes, layered on the raised shadow. */
566
576
 
567
577
  /* A loading action stays visually active; only an explicitly disabled action takes the
@@ -136,6 +136,21 @@
136
136
  flex: 1 1 auto;
137
137
  min-inline-size: 0;
138
138
  }
139
+ .start {
140
+ display: flex !important;
141
+ align-items: center !important;
142
+ flex: none;
143
+ padding-inline-start: var(--ui-space-3) !important;
144
+ }
145
+ .start:empty {
146
+ display: none !important;
147
+ }
148
+ :scope:where([data-component~="ui-combobox"])[data-ui-combobox-state~="size=sm"] .start {
149
+ padding-inline-start: var(--ui-space-2) !important;
150
+ }
151
+ :scope:where([data-component~="ui-combobox"])[data-ui-combobox-state~="size=lg"] .start {
152
+ padding-inline-start: var(--ui-space-4) !important;
153
+ }
139
154
  /* A ghost icon button: the affordance is the mark, not a box around it. */
140
155
  .help {
141
156
  flex: none;
@@ -174,6 +189,10 @@
174
189
  block-size: var(--ui-icon-size-sm);
175
190
  }
176
191
 
192
+ :scope:where([data-component~="ui-combobox"])[data-ui-combobox-state~="muted"] input:not(:disabled) {
193
+ color: var(--ui-text-secondary);
194
+ }
195
+
177
196
  input:where(:not([data-component], [data-slotted]))::selection {
178
197
  background: color-mix(in srgb, var(--ui-accent-solid) 20%, transparent);
179
198
  color: inherit;
@@ -258,7 +277,7 @@
258
277
  padding: var(--ui-space-1) !important;
259
278
  border: var(--ui-border-width) solid var(--_ui-combobox-popup-border, var(--ui-overlay-border, var(--ui-border-strong)));
260
279
  border-radius: var(--_ui-combobox-popup-radius, var(--ui-overlay-radius, var(--ui-radius-md)));
261
- background: var(--_ui-combobox-popup-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
280
+ background: var(--_ui-combobox-popup-surface, var(--ui-material-content, var(--ui-surface-elevated)));
262
281
  color: var(--ui-text-primary);
263
282
  box-shadow: var(--_ui-combobox-popup-shadow, var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg))));
264
283
  }
@@ -537,6 +556,21 @@
537
556
  flex: 1 1 auto;
538
557
  min-inline-size: 0;
539
558
  }
559
+ .start:where(:scope, :scope *) {
560
+ display: flex !important;
561
+ align-items: center !important;
562
+ flex: none;
563
+ padding-inline-start: var(--ui-space-3) !important;
564
+ }
565
+ .start:empty:where(:scope, :scope *) {
566
+ display: none !important;
567
+ }
568
+ :where([data-component~="ui-combobox"])[data-ui-combobox-state~="size=sm"] .start:where(:scope, :not([data-component], [data-slotted]:not([data-slotted~="ui-combobox"]))) {
569
+ padding-inline-start: var(--ui-space-2) !important;
570
+ }
571
+ :where([data-component~="ui-combobox"])[data-ui-combobox-state~="size=lg"] .start:where(:scope, :not([data-component], [data-slotted]:not([data-slotted~="ui-combobox"]))) {
572
+ padding-inline-start: var(--ui-space-4) !important;
573
+ }
540
574
  /* A ghost icon button: the affordance is the mark, not a box around it. */
541
575
  .help:where(:scope, :scope *) {
542
576
  flex: none;
@@ -574,6 +608,10 @@
574
608
  block-size: var(--ui-icon-size-sm);
575
609
  }
576
610
 
611
+ :where([data-component~="ui-combobox"])[data-ui-combobox-state~="muted"] input:not(:disabled):where(:scope, :not([data-component], [data-slotted]:not([data-slotted~="ui-combobox"]))) {
612
+ color: var(--ui-text-secondary);
613
+ }
614
+
577
615
  input:where(:not([data-component], [data-slotted]:not([data-slotted~="ui-combobox"]))):where(:scope, :scope *)::selection {
578
616
  background: color-mix(in srgb, var(--ui-accent-solid) 20%, transparent);
579
617
  color: inherit;
@@ -657,7 +695,7 @@
657
695
  padding: var(--ui-space-1) !important;
658
696
  border: var(--ui-border-width) solid var(--_ui-combobox-popup-border, var(--ui-overlay-border, var(--ui-border-strong)));
659
697
  border-radius: var(--_ui-combobox-popup-radius, var(--ui-overlay-radius, var(--ui-radius-md)));
660
- background: var(--_ui-combobox-popup-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
698
+ background: var(--_ui-combobox-popup-surface, var(--ui-material-content, var(--ui-surface-elevated)));
661
699
  color: var(--ui-text-primary);
662
700
  box-shadow: var(--_ui-combobox-popup-shadow, var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg))));
663
701
  }
@@ -172,10 +172,14 @@
172
172
  color: var(--_icon-button-text);
173
173
  }
174
174
 
175
- /* Omitted tone retains the existing accent solid; explicit neutral is additive. */
175
+ /* Neutral actions share the same quiet surface and border roles as fields. */
176
176
  :scope:where([data-component~="ui-icon-button"])[data-tone="neutral"] {
177
177
  --_tone-highlight: var(--ui-neutral-highlight, none);
178
178
  --_tone-glow: var(--ui-neutral-glow, 0 0 transparent);
179
+ --_icon-button-outline-surface: transparent;
180
+ --_icon-button-border: var(--ui-control-border);
181
+ --_icon-button-hover-border: var(--ui-control-border-hover, var(--ui-control-border));
182
+ --_icon-button-text: var(--ui-text);
179
183
  --_icon-button-solid-surface: var(--ui-neutral-surface);
180
184
  --_icon-button-solid-hover-surface: var(--ui-neutral-hover);
181
185
  --_icon-button-solid-text: var(--ui-text);
@@ -363,6 +367,12 @@
363
367
  :scope:where([data-component~="ui-icon-button"])[data-appearance="outline"]:hover:enabled:not([aria-disabled="true"]) {
364
368
  border-color: var(--ui-icon-button-hover-border, var(--_icon-button-hover-border, var(--ui-control-border-hover, var(--ui-control-border))));
365
369
  }
370
+ :scope:where([data-component~="ui-icon-button"])[data-tone="neutral"][data-appearance="outline"]:hover:enabled:not([aria-disabled="true"]) {
371
+ background-color: var(--ui-icon-button-hover-surface, var(--ui-neutral-hover));
372
+ }
373
+ :scope:where([data-component~="ui-icon-button"])[data-tone="neutral"][data-appearance="outline"]:active:enabled:not([aria-disabled="true"]) {
374
+ background-color: var(--ui-icon-button-active-surface, var(--ui-neutral-active));
375
+ }
366
376
 
367
377
  :scope:where([data-component~="ui-icon-button"])[data-appearance="solid"]:hover:enabled:not([aria-disabled="true"]) {
368
378
  background-color: var(--ui-icon-button-solid-hover-surface, var(--_icon-button-solid-hover-surface, var(--ui-accent-hover)));
@@ -487,7 +497,7 @@
487
497
  @scope ([data-component~="ui-icon-button"]) to ([data-component]) {
488
498
  /* This component's hooks style the element they are set on, and never a nested one. */
489
499
 
490
- /* Omitted tone retains the existing accent solid; explicit neutral is additive. */
500
+ /* Neutral actions share the same quiet surface and border roles as fields. */
491
501
 
492
502
  /* At rest an anticipatory button shows only its guide dot. The icon grows into place when
493
503
  proximity, hover, or focus reveals it; the button's hit area and guide remain stable. */
@@ -131,7 +131,12 @@
131
131
  }
132
132
 
133
133
  :scope:where([data-component~="ui-menu-item"]):is(:hover, :focus-visible):not([aria-disabled="true"]) {
134
- background: var(--ui-menu-item-hover-surface, var(--ui-surface-subtle));
134
+ background: var(--ui-menu-item-hover-surface, var(--ui-accent-subtle));
135
+ }
136
+
137
+ :scope:where([data-component~="ui-menu-item"])[aria-checked="true"]:not([aria-disabled="true"]) {
138
+ background: var(--ui-selection-surface);
139
+ color: var(--ui-selection-text);
135
140
  }
136
141
 
137
142
  :scope:where([data-component~="ui-menu-item"]):focus-visible {
@@ -88,6 +88,10 @@
88
88
  background-size: 1.125rem 1.125rem, 100% 100%;
89
89
  }
90
90
 
91
+ :scope:where([data-component~="ui-select"])[data-ui-select-state~="muted"] {
92
+ color: var(--ui-text-secondary);
93
+ }
94
+
91
95
  :scope:where([data-component~="ui-select"]):hover:not(:focus):not(:disabled):not([aria-invalid="true"]):not(:is(:user-invalid, [data-user-invalid])) {
92
96
  border-color: var(--ui-select-border-hover, var(--ui-control-border-hover, var(--ui-text-secondary)));
93
97
  }
@@ -160,6 +164,11 @@
160
164
 
161
165
  /* The select draws its own chevron: the native caret cannot be inset or sized consistently.
162
166
  * The root stays a native <s-lect>, so the icon is a background image rather than an element. */
167
+ :scope:where([data-component~="ui-select"])[data-ui-select-state~="muted"] :where([data-slotted], [data-slotted] *):is(option),
168
+ :scope:where([data-component~="ui-select"])[data-ui-select-state~="muted"] :where([data-slotted], [data-slotted] *):is(optgroup) {
169
+ color: var(--ui-text-primary);
170
+ background-color: var(--ui-control-surface);
171
+ }
163
172
 
164
173
  /* The app's invalid flag, or the browser's own verdict once the user has left an invalid field. */
165
174
 
package/theme-system.css CHANGED
@@ -14,6 +14,7 @@
14
14
  @layer theme {
15
15
  :root {
16
16
  --ui-spacing: 1;
17
+ --ui-rhythm: 1;
17
18
  --ui-control-roominess: 2.5;
18
19
  --ui-scale-ratio: 1.2;
19
20
  --ui-space-curve: 1;
@@ -36,7 +37,11 @@
36
37
  contrast cannot unexpectedly turn linear spacing into quadratic spacing. */
37
38
  --ui-control-size: calc(1rem * var(--ui-control-roominess));
38
39
  --_ui-theme-ratio: max(1, var(--ui-scale-ratio));
39
- --_ui-theme-unit: calc(1rem * 0.25 * max(0, var(--ui-spacing)));
40
+ --_ui-theme-unit: calc(1rem * 0.25 * max(0, var(--ui-spacing)) * clamp(0.75, var(--ui-rhythm), 1.5));
41
+ --ui-line-height-tight: clamp(1.1, calc(1.2 + (var(--ui-rhythm) - 1) * 0.2), 1.3);
42
+ --ui-line-height: clamp(1.35, calc(1.4 + (var(--ui-rhythm) - 1) * 0.4), 1.6);
43
+ --ui-line-height-md: var(--ui-line-height);
44
+ --ui-line-height-relaxed: calc(var(--ui-line-height) * 1.15);
40
45
  --_ui-theme-curve: max(0, var(--ui-space-curve));
41
46
  --ui-control-size-sm: calc(var(--ui-control-size) / var(--_ui-theme-ratio));
42
47
  --ui-control-size-md: var(--ui-control-size);
@@ -89,7 +94,7 @@
89
94
  --ui-elevation-dialog: var(--ui-shadow-lg);
90
95
  --ui-control-inset: inset calc(var(--_ui-light-inline) * var(--_ui-theme-inner)) calc(var(--_ui-light-block) * var(--_ui-theme-inner)) calc(3px * var(--_ui-theme-inner)) rgb(0 0 0 / 0.15), inset calc(-1 * var(--_ui-light-inline)) calc(-1 * var(--_ui-light-block)) 0 rgb(255 255 255 / calc(var(--_ui-theme-edge) * var(--ui-light-strength) * 0.18)), var(--ui-material-glow);
91
96
  --ui-pressed: inset calc(2 * var(--_ui-light-inline) * var(--_ui-theme-inner)) calc(2 * var(--_ui-light-block) * var(--_ui-theme-inner)) calc(4px * var(--_ui-theme-inner)) rgb(0 0 0 / 0.2);
92
- --ui-overlay-surface: color-mix(in srgb, var(--ui-surface-raised) calc((1 - clamp(0, var(--ui-overlay-translucency), 1)) * 100%), transparent);
97
+ --ui-overlay-surface: var(--ui-surface-raised);
93
98
  /* Decorative outer material is allowed to transmit the scene. Content keeps
94
99
  its own opaque plane; changing the scene cannot undermine text contrast. */
95
100
  --ui-material-content: var(--ui-surface-raised);
@@ -27,7 +27,7 @@ let P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P
27
27
  const S = { n: ["appearance","colorTone"], t: ["?","?"], f: import.meta.url, g: "ui-button", k: 0, r: readonlyView, a: (host, I) => C(host, I), b: generatedInputs };
28
28
  const A = [["a",{},[],"",[],["data-ui-button-state","data-ui-button-prop-align","data-ui-button-prop-as","data-ui-button-prop-disabled","data-ui-button-prop-href","data-ui-button-prop-loading","data-ui-button-prop-pending","data-ui-button-prop-preset","data-ui-button-prop-rel","data-ui-button-prop-shape","data-ui-button-prop-size","data-ui-button-prop-square","data-ui-button-prop-stretch","data-ui-button-prop-target","data-ui-button-prop-tone","data-ui-button-prop-type","data-ui-button-prop-variant","data-appearance","data-tone","href","target","rel","aria-disabled","aria-busy","tabindex"]],["button",{},[],"",[],["data-ui-button-state","data-ui-button-prop-align","data-ui-button-prop-as","data-ui-button-prop-disabled","data-ui-button-prop-href","data-ui-button-prop-loading","data-ui-button-prop-pending","data-ui-button-prop-preset","data-ui-button-prop-rel","data-ui-button-prop-shape","data-ui-button-prop-size","data-ui-button-prop-square","data-ui-button-prop-stretch","data-ui-button-prop-target","data-ui-button-prop-tone","data-ui-button-prop-type","data-ui-button-prop-variant","data-appearance","data-tone","type","disabled","aria-disabled","aria-busy"]],["a",{},[],"",[],["data-ui-button-state","data-ui-button-prop-align","data-ui-button-prop-as","data-ui-button-prop-disabled","data-ui-button-prop-href","data-ui-button-prop-loading","data-ui-button-prop-pending","data-ui-button-prop-preset","data-ui-button-prop-rel","data-ui-button-prop-shape","data-ui-button-prop-size","data-ui-button-prop-square","data-ui-button-prop-stretch","data-ui-button-prop-target","data-ui-button-prop-tone","data-ui-button-prop-type","data-ui-button-prop-variant","data-appearance","data-tone","href","target","rel","aria-disabled","aria-busy","tabindex"]],["button",{},[],"",[],["data-ui-button-state","data-ui-button-prop-align","data-ui-button-prop-as","data-ui-button-prop-disabled","data-ui-button-prop-href","data-ui-button-prop-loading","data-ui-button-prop-pending","data-ui-button-prop-preset","data-ui-button-prop-rel","data-ui-button-prop-shape","data-ui-button-prop-size","data-ui-button-prop-square","data-ui-button-prop-stretch","data-ui-button-prop-target","data-ui-button-prop-tone","data-ui-button-prop-type","data-ui-button-prop-variant","data-appearance","data-tone","type","disabled","aria-disabled","aria-busy"]]];
29
29
  const Q = [[],[],[],[]];
30
- const D = { g: "ui-button", props: { "align": { "required":false,"values":["center","start"],"default":"center", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "as": { "required":false,"values":["button","a"],"default":"button", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "disabled": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "href": { "required":false, c: checkString, t: "string", j: 0, m: "s" }, "loading": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "pending": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "preset": { "required":false,"values":["none","primary","standard","quiet","destructive"],"default":"none", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "rel": { "required":false, c: checkString, t: "string", j: 0, m: "s" }, "shape": { "required":false,"values":["rounded","pill"],"default":"rounded", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "size": { "required":false,"values":["xs","sm","md","lg"],"default":"md", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "square": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "stretch": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "target": { "required":false, c: checkString, t: "string", j: 0, m: "s" }, "tone": { "required":false,"values":["accent","neutral","danger","success","warning","info"],"default":"accent", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "type": { "required":false,"values":["button","submit","reset"],"default":"button", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "variant": { "required":false,"values":["outline","solid","danger","ghost","link","card","field"],"default":"outline", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] } } };
30
+ const D = { g: "ui-button", props: { "align": { "required":false,"values":["center","start"],"default":"center", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "as": { "required":false,"values":["button","a"],"default":"button", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "disabled": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "href": { "required":false, c: checkString, t: "string", j: 0, m: "s" }, "loading": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "pending": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "preset": { "required":false,"values":["none","primary","standard","quiet","destructive"],"default":"none", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "rel": { "required":false, c: checkString, t: "string", j: 0, m: "s" }, "shape": { "required":false,"values":["rounded","pill"],"default":"rounded", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "size": { "required":false,"values":["xs","sm","md","lg"],"default":"md", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "square": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "stretch": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "target": { "required":false, c: checkString, t: "string", j: 0, m: "s" }, "tone": { "required":false,"values":["accent","neutral","danger","success","warning","info"],"default":"neutral", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "type": { "required":false,"values":["button","submit","reset"],"default":"button", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "variant": { "required":false,"values":["outline","solid","danger","ghost","link","card","field"],"default":"outline", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] } } };
31
31
  const C = (host) => activateModule(controller, host);
32
32
 
33
33
  export function createUiButton(options = {}, html) {
@@ -36,6 +36,7 @@ export interface UiComboboxProps {
36
36
  labelVisibility?: "visible" | "sr-only" | null;
37
37
  loading?: boolean | null;
38
38
  multiple?: boolean | null;
39
+ muted?: boolean | null;
39
40
  name?: string | null;
40
41
  openOnFocus?: boolean | null;
41
42
  placeholder?: string | null;
@@ -3,7 +3,7 @@ import { attachGeneratedController, buildTemplate, checkReference, clearRegion,
3
3
  import * as controller from "../components/ui-combobox/ui-combobox.js";
4
4
  import "../styles/ui-combobox.css";
5
5
 
6
- const T0 = ["",[],"\n ",["label",[],0,1],"\n ",["div",["class","control"],"\n ",["div",["class","field"],"\n ",["div",["class","entry"],"\n ",4,"\n ",1,"\n ",["input",["role","combobox","aria-autocomplete","list","autocomplete","off"]],"\n "],"\n ",1,"\n ",1,"\n ",1,"\n ",1,"\n "],"\n ",1,"\n "],"\n ",1,"\n ",["div",["class","popup"],"\n ",["div",["role","listbox"],"\n ",2,"\n ",1,"\n ",1,"\n ",1,"\n "],"\n ",4,"\n "],"\n ",["div",["class","message"],"\n ",2,"\n "],"\n ",["div",["class","sr-only","role","status","aria-live","polite","aria-atomic","true"],0],"\n ",["div",["class","authored-options","hidden","","aria-hidden","true"],4],"\n "];
6
+ const T0 = ["",[],"\n ",["label",[],0,1],"\n ",["div",["class","control"],"\n ",["div",["class","field"],"\n ",["div",["class","entry"],"\n ",["span",["class","start"],4],"\n ",1,"\n ",["input",["role","combobox","aria-autocomplete","list","autocomplete","off"]],"\n "],"\n ",1,"\n ",1,"\n ",1,"\n ",1,"\n "],"\n ",1,"\n "],"\n ",1,"\n ",["div",["class","popup"],"\n ",["div",["role","listbox"],"\n ",2,"\n ",1,"\n ",1,"\n ",1,"\n "],"\n ",4,"\n "],"\n ",["div",["class","message"],"\n ",2,"\n "],"\n ",["div",["class","sr-only","role","status","aria-live","polite","aria-atomic","true"],0],"\n ",["div",["class","authored-options","hidden","","aria-hidden","true"],4],"\n "];
7
7
  const T1 = ["",[],"\n *"];
8
8
  const T2 = ["",[]];
9
9
  const T3 = ["",[],"\n ",2,"\n "];
@@ -36,7 +36,7 @@ const K1 = (v0) => (plainObject(v0) && "id" in v0 && typeof v0["id"] == "string"
36
36
  let P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27;
37
37
  const E = new Map();
38
38
  const S = { n: ["internalItems","raw","display","selected","expanded","rows","active","helpOpen","lookupError","validation","uid","submitted","groups","creatable","createIndex","message","statusText","validationStatus"], t: [["l",["o",["id","s","value","s","label","s","group","s","disabled","b","description","s","tag",["o",["label","s","tone",["p",formatOf(keywordFormat)],"color","s"]]]]],"s","s","s","b",["l",["o",["id","s","value","s","label","s","group","s","disabled","b","selected","b","description","s","tag",["o",["label","s","tone",["p",formatOf(keywordFormat)],"color","s"]]]]],"i","b","s",["o",["status",["p",formatOf(keywordFormat)],"touched","b","dirty","b","issues",["l",["o",["message","s"]]]],1],"s","s",["l",["o",["name","s","role",["p",formatOf(keywordFormat)],"label","s","rows",["l",["o",["id","s","value","s","label","s","group","s","disabled","b","selected","b","description","s","tag",["o",["label","s","tone",["p",formatOf(keywordFormat)],"color","s"]],"index","i","labelledBy","s","detail","s","option",["o",["id","s","value","s","label","s","group","s","disabled","b","description","s","tag",["o",["label","s","tone",["p",formatOf(keywordFormat)],"color","s"]],"selected","b"]]]]]]]],"b","i","s","s","s"], f: import.meta.url, g: "ui-combobox", d: { "query-change": [detailCheck(checkObject([["query", checkString, false], ["display", checkString, false], ["trigger", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["keyboard","pointer","programmatic"]}), false]], false)), true, true, false], "value-change": [detailCheck(checkObject([["value", checkString, true], ["query", checkString, false], ["option", checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false), true], ["kind", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["selection","clear","free-entry","create"]}), false], ["trigger", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["keyboard","pointer","programmatic"]}), false]], false)), true, true, false], "items-change": [detailCheck(checkList(checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false))), true, true, false], "free-entry": [detailCheck(checkObject([["value", checkString, true], ["query", checkString, false], ["option", checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false), true], ["kind", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["selection","clear","free-entry","create"]}), false], ["trigger", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["keyboard","pointer","programmatic"]}), false]], false)), true, true, false], "create-entry": [detailCheck(checkObject([["value", checkString, true], ["query", checkString, false], ["option", checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false), true], ["kind", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["selection","clear","free-entry","create"]}), false], ["trigger", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["keyboard","pointer","programmatic"]}), false]], false)), true, true, false], "validation-change": [detailCheck(checkObject([["status", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["pristine","pending","valid","warning","error"]}), false], ["touched", checkBoolean, false], ["dirty", checkBoolean, false], ["issues", checkList(checkObject([["message", checkString, false], ["path", checkList(checkUnknown), true], ["severity", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["error","warning"]}), true]], false)), false], ["output", checkUnknown, true]], false)), true, true, false], "options-change": [detailCheck(checkList(checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false))), true, true, false], "add-item": [detailCheck(checkObject([["item", checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false), false], ["index", checkInteger, false], ["trigger", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["keyboard","pointer","programmatic"]}), false]], false)), true, true, false], "remove-item": [detailCheck(checkObject([["item", checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false), false], ["index", checkInteger, false], ["trigger", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["keyboard","pointer","programmatic"]}), false]], false)), true, true, false], "create-item": [detailCheck(checkObject([["query", checkString, false], ["trigger", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["keyboard","pointer","programmatic"]}), false]], false)), true, true, false], "selected-values-change": [detailCheck(checkObject([["selectedValues", checkList(checkString), false], ["trigger", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["keyboard","pointer","programmatic"]}), false]], false)), true, true, false] }, x: dispatchDeclared, a: (host, I) => C(host, I), b: generatedInputs, i: [[], "", "", null, false, [], null, false, "", { "status": "pristine", "touched": false, "dirty": false, "issues": [] }, "", "", [], false, 0, "", "", "pristine"] };
39
- const D = { g: "ui-combobox", props: { "allowCreate": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "allowFreeText": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "autoHighlight": { "required":false,"values":["none","single"],"default":"none", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "clearQueryOnBlur": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "clearable": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "disabled": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "disclosure": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "filter": { "required":false,"values":["label","none"],"default":"label", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "help": { "required":false,"default":"", c: checkString, t: "string", j: 0, m: "s" }, "invalid": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "items": { "required":false, c: checkList(checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false)), j: 1, m: ["l",["o",["id","s","value","s","label","s","group","s","disabled","b","description","s","tag",["o",["label","s","tone",["p",formatOf(keywordFormat)],"color","s"]]]]] }, "label": { "required":false,"default":"", c: checkString, t: "string", j: 0, m: "s" }, "labelVisibility": { "required":false,"values":["visible","sr-only"],"default":"visible", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "loading": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "multiple": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "name": { "required":false,"default":"", c: checkString, t: "string", j: 0, m: "s" }, "openOnFocus": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "placeholder": { "required":false,"default":"", c: checkString, t: "string", j: 0, m: "s" }, "query": { "required":false, c: checkString, t: "string", j: 0, m: "s" }, "readonly": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "required": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "selectOnTab": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "selectedValues": { "required":false, c: checkList(checkString), j: 1, m: ["l","s"] }, "size": { "required":false,"values":["sm","md","lg"],"default":"md", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "tokenSeparators": { "required":false, c: checkList(checkString), j: 1, m: ["l","s"] }, "value": { "required":false, c: checkString, t: "string", j: 0, m: "s" } } };
39
+ const D = { g: "ui-combobox", props: { "allowCreate": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "allowFreeText": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "autoHighlight": { "required":false,"values":["none","single"],"default":"none", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "clearQueryOnBlur": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "clearable": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "disabled": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "disclosure": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "filter": { "required":false,"values":["label","none"],"default":"label", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "help": { "required":false,"default":"", c: checkString, t: "string", j: 0, m: "s" }, "invalid": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "items": { "required":false, c: checkList(checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false)), j: 1, m: ["l",["o",["id","s","value","s","label","s","group","s","disabled","b","description","s","tag",["o",["label","s","tone",["p",formatOf(keywordFormat)],"color","s"]]]]] }, "label": { "required":false,"default":"", c: checkString, t: "string", j: 0, m: "s" }, "labelVisibility": { "required":false,"values":["visible","sr-only"],"default":"visible", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "loading": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "multiple": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "muted": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "name": { "required":false,"default":"", c: checkString, t: "string", j: 0, m: "s" }, "openOnFocus": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "placeholder": { "required":false,"default":"", c: checkString, t: "string", j: 0, m: "s" }, "query": { "required":false, c: checkString, t: "string", j: 0, m: "s" }, "readonly": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "required": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "selectOnTab": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "selectedValues": { "required":false, c: checkList(checkString), j: 1, m: ["l","s"] }, "size": { "required":false,"values":["sm","md","lg"],"default":"md", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "tokenSeparators": { "required":false, c: checkList(checkString), j: 1, m: ["l","s"] }, "value": { "required":false, c: checkString, t: "string", j: 0, m: "s" } } };
40
40
  const C = (host) => activateModule(controller, host);
41
41
 
42
42
  export function createUiCombobox(options = {}, html) {
@@ -48,7 +48,7 @@ export function createUiCombobox(options = {}, html) {
48
48
  }
49
49
  element.setAttribute("data-component", "ui-combobox");
50
50
  element.append((P0 ??= buildTemplate(T0)).cloneNode(true));
51
- const v = [[], "", "", null, false, [], null, false, "", { "status": "pristine", "touched": false, "dirty": false, "issues": [] }, "", "", [], false, 0, "", "", "pristine", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null];
51
+ const v = [[], "", "", null, false, [], null, false, "", { "status": "pristine", "touched": false, "dirty": false, "issues": [] }, "", "", [], false, 0, "", "", "pristine", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null];
52
52
  const B = acceptProps(element, D, S.n, v, componentProps, [], html);
53
53
  v[6] = negate(1, undefined);
54
54
  const m1 = (d) => {
@@ -95,7 +95,7 @@ export function createUiCombobox(options = {}, html) {
95
95
  if (s0 !== r.v0) writeAttribute(r.n, "data-index", r.v0 = s0);
96
96
  }
97
97
  if (c & 1619001344) {
98
- const x1 = ((truthy(v[23]) || truthy(v[37])) || truthy(trackContainer(r, readMember(o, "disabled"))));
98
+ const x1 = ((truthy(v[23]) || truthy(v[38])) || truthy(trackContainer(r, readMember(o, "disabled"))));
99
99
  const s1 = toAttribute(x1, "disabled");
100
100
  if (s1 !== r.v1) writeAttribute(r.n, "disabled", r.v1 = s1);
101
101
  }
@@ -144,7 +144,7 @@ export function createUiCombobox(options = {}, html) {
144
144
  };
145
145
  const p6 = (r, c, d) => {
146
146
  if (c & 536870912) {
147
- const x0 = v[33];
147
+ const x0 = v[34];
148
148
  const s0 = toAttribute(x0, "name");
149
149
  if (s0 !== r.v0) writeAttribute(r.n, "name", r.v0 = s0);
150
150
  }
@@ -180,7 +180,7 @@ export function createUiCombobox(options = {}, html) {
180
180
  const o = r.i;
181
181
  if (c & 1073741824) r.w = 0;
182
182
  if (c & 536870912) {
183
- const x0 = v[33];
183
+ const x0 = v[34];
184
184
  const s0 = toAttribute(x0, "name");
185
185
  if (s0 !== r.v0) writeAttribute(r.n, "name", r.v0 = s0);
186
186
  }
@@ -203,7 +203,7 @@ export function createUiCombobox(options = {}, html) {
203
203
  };
204
204
  const p9 = (r, c, d) => {
205
205
  if (c & 545259530) {
206
- const x0 = ((truthy(v[23]) || truthy(v[37])) || (!truthy(v[1]) && (truthy(v[32]) || (v[3] === null))));
206
+ const x0 = ((truthy(v[23]) || truthy(v[38])) || (!truthy(v[1]) && (truthy(v[32]) || (v[3] === null))));
207
207
  const s0 = toAttribute(x0, "disabled");
208
208
  if (s0 !== r.v0) writeAttribute(r.n, "disabled", r.v0 = s0);
209
209
  }
@@ -223,7 +223,7 @@ export function createUiCombobox(options = {}, html) {
223
223
  }
224
224
  }
225
225
  if (c & 545259520) {
226
- const x1 = (truthy(v[23]) || truthy(v[37]));
226
+ const x1 = (truthy(v[23]) || truthy(v[38]));
227
227
  const s1 = toAttribute(x1, "disabled");
228
228
  if (s1 !== r.v1) writeAttribute(r.n, "disabled", r.v1 = s1);
229
229
  }
@@ -661,7 +661,7 @@ export function createUiCombobox(options = {}, html) {
661
661
  }
662
662
  }
663
663
  if (c & 536870912) {
664
- const x10 = v[35];
664
+ const x10 = v[36];
665
665
  const s9 = toAttribute(x10, "placeholder");
666
666
  if (s9 !== r.v9) writeAttribute(r.a6, "placeholder", r.v9 = s9);
667
667
  }
@@ -671,7 +671,7 @@ export function createUiCombobox(options = {}, html) {
671
671
  if (s10 !== r.v10) writeAttribute(r.a6, "disabled", r.v10 = s10);
672
672
  }
673
673
  if (c & 536870912) {
674
- const x12 = v[37];
674
+ const x12 = v[38];
675
675
  const s11 = toAttribute(x12, "readonly");
676
676
  if (s11 !== r.v11) writeAttribute(r.a6, "readonly", r.v11 = s11);
677
677
  const x13 = textCall("concat", [v[29], " suggestions"]);
@@ -684,7 +684,7 @@ export function createUiCombobox(options = {}, html) {
684
684
  if (s16 !== r.v16) writeAttribute(r.a14, "aria-busy", r.v16 = s16);
685
685
  }
686
686
  if (c & 1610612737) {
687
- const x15 = (checkReference(S, readDeclared(v[0], ["0"]), ["o",["id","s","value","s","label","s","group","s","disabled","b","description","s","tag",["o",["label","s","tone",["p",formatOf(keywordFormat)],"color","s"]]]], "expression:$required and not ($multiple and $internalItems.0):internalItems.0", "Reference `internalItems.0` must satisfy object({ id: string, value: string, label: string, group?: string, disabled?: boolean, description?: string, tag?: object({ label: string, tone?: keyword with values neutral, accent, info, success, warning, danger, color?: string }) }).") ? (truthy(v[38]) && !(truthy(v[32]) && truthy(readIndex(v[0], 0)))) : NONCONFORMING);
687
+ const x15 = (checkReference(S, readDeclared(v[0], ["0"]), ["o",["id","s","value","s","label","s","group","s","disabled","b","description","s","tag",["o",["label","s","tone",["p",formatOf(keywordFormat)],"color","s"]]]], "expression:$required and not ($multiple and $internalItems.0):internalItems.0", "Reference `internalItems.0` must satisfy object({ id: string, value: string, label: string, group?: string, disabled?: boolean, description?: string, tag?: object({ label: string, tone?: keyword with values neutral, accent, info, success, warning, danger, color?: string }) }).") ? (truthy(v[39]) && !(truthy(v[32]) && truthy(readIndex(v[0], 0)))) : NONCONFORMING);
688
688
  if (x15 !== NONCONFORMING) {
689
689
  const s12 = toAttribute(x15, "required");
690
690
  if (s12 !== r.v12) writeAttribute(r.a6, "required", r.v12 = s12);
@@ -701,11 +701,11 @@ export function createUiCombobox(options = {}, html) {
701
701
  if (s19 !== r.v19) r.a22.data = r.v19 = s19;
702
702
  }
703
703
  if (c & 671219712) {
704
- const x18 = hostState(["size","validationStatus","invalid","multiple"], [v[41], v[17], v[27], v[32]]);
704
+ const x18 = hostState(["size","muted","validationStatus","invalid","multiple"], [v[42], v[33], v[17], v[27], v[32]]);
705
705
  const s20 = x18;
706
706
  if (s20 !== r.v20) writeAttribute(r.n, "data-ui-combobox-state", (r.v20 = s20) === "" ? null : s20);
707
707
  }
708
- if (c & 536870912 && !(truthy(v[38])) !== !r.b0) {
708
+ if (c & 536870912 && !(truthy(v[39])) !== !r.b0) {
709
709
  if (r.b0) { r.b0 = undefined; clearRegion(r.a2, r.e0); }
710
710
  else { r.b0 = m1(d); r.e0.before(r.b0.n); }
711
711
  } else if (r.b0 !== undefined) p1(r.b0, c, d);
@@ -713,11 +713,11 @@ export function createUiCombobox(options = {}, html) {
713
713
  if (r.b2) { dispose(r.b2); r.b2 = undefined; clearRegion(r.a5, r.e2); }
714
714
  else { r.b2 = m3(d); r.e2.before(r.b2.n); }
715
715
  } else if (r.b2 !== undefined) p3(r.b2, c, d);
716
- if (c & 536870912 && !((truthy(v[33]) && !truthy(v[32]))) !== !r.b3) {
716
+ if (c & 536870912 && !((truthy(v[34]) && !truthy(v[32]))) !== !r.b3) {
717
717
  if (r.b3) { r.b3 = undefined; clearRegion(r.a7, r.e3); }
718
718
  else { r.b3 = m6(d); r.e3.before(r.b3.n); }
719
719
  } else if (r.b3 !== undefined) p6(r.b3, c, d);
720
- if (c & 536870912 && !((truthy(v[33]) && truthy(v[32]))) !== !r.b4) {
720
+ if (c & 536870912 && !((truthy(v[34]) && truthy(v[32]))) !== !r.b4) {
721
721
  if (r.b4) { r.b4 = undefined; clearRegion(r.a8, r.e4); }
722
722
  else { r.b4 = m7(d); r.e4.before(r.b4.n); }
723
723
  } else if (r.b4 !== undefined) p7(r.b4, c, d);
@@ -772,38 +772,39 @@ export function createUiCombobox(options = {}, html) {
772
772
  const t4 = t3.firstChild.nextSibling;
773
773
  const t5 = t4.firstChild.nextSibling;
774
774
  const t6 = t5.firstChild.nextSibling;
775
- const t7 = t6.nextSibling.nextSibling.nextSibling;
776
- const t8 = t7.nextSibling.nextSibling.nextSibling;
777
- const t9 = t5.nextSibling.nextSibling;
778
- const t10 = t9.nextSibling.nextSibling.nextSibling;
775
+ const t7 = t6.firstChild;
776
+ const t8 = t6.nextSibling.nextSibling;
777
+ const t9 = t8.nextSibling.nextSibling.nextSibling;
778
+ const t10 = t5.nextSibling.nextSibling;
779
779
  const t11 = t10.nextSibling.nextSibling.nextSibling;
780
780
  const t12 = t11.nextSibling.nextSibling.nextSibling;
781
- const t13 = t4.nextSibling.nextSibling;
782
- const t14 = t3.nextSibling.nextSibling;
783
- const t15 = t14.nextSibling.nextSibling.nextSibling;
784
- const t16 = t15.firstChild.nextSibling;
781
+ const t13 = t12.nextSibling.nextSibling.nextSibling;
782
+ const t14 = t4.nextSibling.nextSibling;
783
+ const t15 = t3.nextSibling.nextSibling;
784
+ const t16 = t15.nextSibling.nextSibling.nextSibling;
785
785
  const t17 = t16.firstChild.nextSibling;
786
- const t18 = t17.nextSibling.nextSibling.nextSibling;
786
+ const t18 = t17.firstChild.nextSibling;
787
787
  const t19 = t18.nextSibling.nextSibling.nextSibling;
788
788
  const t20 = t19.nextSibling.nextSibling.nextSibling;
789
- const t21 = t16.nextSibling.nextSibling;
790
- const t22 = t15.nextSibling.nextSibling;
791
- const t23 = t22.firstChild.nextSibling;
792
- const t24 = t22.nextSibling.nextSibling;
793
- const t25 = t24.firstChild;
794
- const t26 = t24.nextSibling.nextSibling;
795
- const t27 = t26.firstChild;
796
- const R = { n: element, a0: t0, a1: t1, a6: t8, a13: t15, a14: t16, a20: t22, a22: t25, v0: null, v1: false, v2: "", v3: null, v4: null, v5: null, v6: null, v7: null, v8: undefined, v9: null, v10: null, v11: null, v12: null, v13: null, v14: null, v15: null, v16: null, v17: null, v18: null, v19: "", v20: undefined, a2: t2, e0: t2.nextSibling, b0: undefined, a4: t6, e1: t6.nextSibling, b1: undefined, f1: undefined, a5: t7, e2: t7.nextSibling, b2: undefined, a7: t9, e3: t9.nextSibling, b3: undefined, a8: t10, e4: t10.nextSibling, b4: undefined, a9: t11, e5: t11.nextSibling, b5: undefined, a10: t12, e6: t12.nextSibling, b6: undefined, a11: t13, e7: t13.nextSibling, b7: undefined, a12: t14, e8: t14.nextSibling, b8: undefined, L9: new KeyedList(t17, t17.nextSibling, m13, p13, (o) => readMember(o, "name"), "group"), a16: t18, e10: t18.nextSibling, b10: undefined, a17: t19, e11: t19.nextSibling, b11: undefined, a18: t20, e12: t20.nextSibling, b12: undefined, a19: t21, e13: t21.nextSibling, b13: undefined, f13: undefined, L14: new IndexedList(t23, t23.nextSibling, m26, p26, undefined, "issue"), a24: t27, e15: t27.nextSibling, b15: undefined, f15: undefined };
789
+ const t21 = t20.nextSibling.nextSibling.nextSibling;
790
+ const t22 = t17.nextSibling.nextSibling;
791
+ const t23 = t16.nextSibling.nextSibling;
792
+ const t24 = t23.firstChild.nextSibling;
793
+ const t25 = t23.nextSibling.nextSibling;
794
+ const t26 = t25.firstChild;
795
+ const t27 = t25.nextSibling.nextSibling;
796
+ const t28 = t27.firstChild;
797
+ const R = { n: element, a0: t0, a1: t1, a6: t9, a13: t16, a14: t17, a20: t23, a22: t26, v0: null, v1: false, v2: "", v3: null, v4: null, v5: null, v6: null, v7: null, v8: undefined, v9: null, v10: null, v11: null, v12: null, v13: null, v14: null, v15: null, v16: null, v17: null, v18: null, v19: "", v20: undefined, a2: t2, e0: t2.nextSibling, b0: undefined, a4: t7, e1: t7.nextSibling, b1: undefined, f1: undefined, a5: t8, e2: t8.nextSibling, b2: undefined, a7: t10, e3: t10.nextSibling, b3: undefined, a8: t11, e4: t11.nextSibling, b4: undefined, a9: t12, e5: t12.nextSibling, b5: undefined, a10: t13, e6: t13.nextSibling, b6: undefined, a11: t14, e7: t14.nextSibling, b7: undefined, a12: t15, e8: t15.nextSibling, b8: undefined, L9: new KeyedList(t18, t18.nextSibling, m13, p13, (o) => readMember(o, "name"), "group"), a16: t19, e10: t19.nextSibling, b10: undefined, a17: t20, e11: t20.nextSibling, b11: undefined, a18: t21, e12: t21.nextSibling, b12: undefined, a19: t22, e13: t22.nextSibling, b13: undefined, f13: undefined, L14: new IndexedList(t24, t24.nextSibling, m26, p26, undefined, "issue"), a24: t28, e15: t28.nextSibling, b15: undefined, f15: undefined };
797
798
  const I = { B };
798
799
  const J = project(I, children, slots);
799
800
  I.R = new Set();
800
801
  attachGeneratedController(element, S, v, (c, d) => { ((c, d) => p0(R, c, d))(c, d); for (const f of I.R) f(c, d); }, undefined, undefined, I);
801
802
  manageProps(I);
802
803
  I.r["field"] = t4;
803
- I.r["input"] = t8;
804
- I.r["popup"] = t15;
805
- I.r["listbox"] = t16;
806
- I.r["options"] = t26;
804
+ I.r["input"] = t9;
805
+ I.r["popup"] = t16;
806
+ I.r["listbox"] = t17;
807
+ I.r["options"] = t27;
807
808
  return element;
808
809
  }
809
- defineComponent("ui-combobox", createUiCombobox, ["allowCreate","allowFreeText","autoHighlight","clearQueryOnBlur","clearable","disabled","disclosure","filter","help","invalid","items","label","labelVisibility","loading","multiple","name","openOnFocus","placeholder","query","readonly","required","selectOnTab","selectedValues","size","tokenSeparators","value"]);
810
+ defineComponent("ui-combobox", createUiCombobox, ["allowCreate","allowFreeText","autoHighlight","clearQueryOnBlur","clearable","disabled","disclosure","filter","help","invalid","items","label","labelVisibility","loading","multiple","muted","name","openOnFocus","placeholder","query","readonly","required","selectOnTab","selectedValues","size","tokenSeparators","value"]);
@@ -21,7 +21,7 @@ export interface UiIconButtonProps {
21
21
  revealed?: boolean | null;
22
22
  round?: boolean | null;
23
23
  size?: "sm" | "md" | "lg" | null;
24
- tone?: "auto" | "accent" | "neutral" | "danger" | "success" | "warning" | "info" | null;
24
+ tone?: "accent" | "neutral" | "danger" | "success" | "warning" | "info" | null;
25
25
  variant?: "ghost" | "outline" | "solid" | null;
26
26
  attributes?: Readonly<Record<string, string | number | boolean | null | undefined>>;
27
27
  children?: readonly (string | Node)[];
@@ -8,7 +8,7 @@ const T1 = ["ui-spinner",["size","sm"]];
8
8
  const T2 = ["",[]];
9
9
  let P0, P1, P2;
10
10
  const S = { n: ["appearance","colorTone"], t: ["?","?"], f: import.meta.url, g: "ui-icon-button", k: 0, r: readonlyView, a: (host, I) => C(host, I), b: generatedInputs };
11
- const D = { g: "ui-icon-button", props: { "anticipatory": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "disabled": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "guide": { "required":false,"values":["dot","bar"],"default":"dot", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "label": { "required":false, c: checkString, t: "string", j: 0, m: "s" }, "loading": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "matchButton": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "pending": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "preset": { "required":false,"values":["none","primary","standard","quiet","destructive"],"default":"none", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "revealed": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "round": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "size": { "required":false,"values":["sm","md","lg"],"default":"md", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "tone": { "required":false,"values":["auto","accent","neutral","danger","success","warning","info"],"default":"auto", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "variant": { "required":false,"values":["ghost","outline","solid"],"default":"ghost", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] } } };
11
+ const D = { g: "ui-icon-button", props: { "anticipatory": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "disabled": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "guide": { "required":false,"values":["dot","bar"],"default":"dot", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "label": { "required":false, c: checkString, t: "string", j: 0, m: "s" }, "loading": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "matchButton": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "pending": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "preset": { "required":false,"values":["none","primary","standard","quiet","destructive"],"default":"none", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "revealed": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "round": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "size": { "required":false,"values":["sm","md","lg"],"default":"md", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "tone": { "required":false,"values":["accent","neutral","danger","success","warning","info"],"default":"neutral", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "variant": { "required":false,"values":["ghost","outline","solid"],"default":"ghost", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] } } };
12
12
  const C = (host) => activateModule(controller, host);
13
13
 
14
14
  export function createUiIconButton(options = {}, html) {
@@ -12,6 +12,7 @@ export interface UiSelectElement extends HTMLSelectElement {
12
12
  export interface UiSelectProps {
13
13
  disabled?: boolean | null;
14
14
  invalid?: boolean | null;
15
+ muted?: boolean | null;
15
16
  required?: boolean | null;
16
17
  size?: "sm" | "md" | "lg" | null;
17
18
  value?: string | null;