@threadlabs/looma 0.1.28 → 0.2.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 (197) hide show
  1. package/dist/{chunk-G5AWV77V.js → chunk-JXSHRMYW.js} +32 -33
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/looma.cjs.js +1 -1
  4. package/dist/cjs/ui-chip_2.cjs.entry.js +190 -498
  5. package/dist/cjs/ui-combobox.cjs.entry.js +708 -0
  6. package/dist/cjs/ui-context-menu.cjs.entry.js +1 -1
  7. package/dist/cjs/ui-dialog.cjs.entry.js +1 -1
  8. package/dist/cjs/ui-disclosure.cjs.entry.js +1 -1
  9. package/dist/cjs/ui-editable.cjs.entry.js +3 -3
  10. package/dist/cjs/ui-floating-action-button.cjs.entry.js +1 -1
  11. package/dist/cjs/ui-form-field.cjs.entry.js +1 -1
  12. package/dist/cjs/ui-icon-button.cjs.entry.js +1 -1
  13. package/dist/cjs/ui-input.cjs.entry.js +1 -1
  14. package/dist/cjs/ui-menu-item.cjs.entry.js +1 -1
  15. package/dist/cjs/ui-menu.cjs.entry.js +1 -1
  16. package/dist/cjs/ui-popover.cjs.entry.js +1 -1
  17. package/dist/cjs/ui-radio-group.cjs.entry.js +1 -1
  18. package/dist/cjs/ui-radio.cjs.entry.js +1 -1
  19. package/dist/cjs/ui-search-result-row.cjs.entry.js +1 -1
  20. package/dist/cjs/ui-search-shell.cjs.entry.js +1 -1
  21. package/dist/cjs/ui-select.cjs.entry.js +1 -1
  22. package/dist/cjs/ui-switch.cjs.entry.js +2 -2
  23. package/dist/cjs/ui-tabs.cjs.entry.js +1 -1
  24. package/dist/cjs/ui-textarea.cjs.entry.js +1 -1
  25. package/dist/cjs/ui-toast-region.cjs.entry.js +1 -1
  26. package/dist/cjs/ui-top-bar.cjs.entry.js +1 -1
  27. package/dist/cjs/ui-tree-item.cjs.entry.js +2 -2
  28. package/dist/cjs/ui-tree.cjs.entry.js +1 -1
  29. package/dist/collection/collection-manifest.json +0 -1
  30. package/dist/collection/components/ui-combobox/ui-combobox.css +23 -0
  31. package/dist/collection/components/ui-combobox/ui-combobox.js +298 -21
  32. package/dist/collection/components/ui-context-menu/ui-context-menu.js +1 -1
  33. package/dist/collection/components/ui-dialog/ui-dialog.js +1 -1
  34. package/dist/collection/components/ui-disclosure/ui-disclosure.js +1 -1
  35. package/dist/collection/components/ui-editable/ui-editable.js +3 -3
  36. package/dist/collection/components/ui-floating-action-button/ui-floating-action-button.js +1 -1
  37. package/dist/collection/components/ui-form-field/ui-form-field.js +1 -1
  38. package/dist/collection/components/ui-icon-button/ui-icon-button.js +1 -1
  39. package/dist/collection/components/ui-input/ui-input.js +1 -1
  40. package/dist/collection/components/ui-menu/ui-menu.js +1 -1
  41. package/dist/collection/components/ui-menu-item/ui-menu-item.js +1 -1
  42. package/dist/collection/components/ui-popover/ui-popover.js +1 -1
  43. package/dist/collection/components/ui-radio/ui-radio.js +1 -1
  44. package/dist/collection/components/ui-radio-group/ui-radio-group.js +1 -1
  45. package/dist/collection/components/ui-search-result-row/ui-search-result-row.js +1 -1
  46. package/dist/collection/components/ui-search-shell/ui-search-shell.js +1 -1
  47. package/dist/collection/components/ui-select/ui-select.js +1 -1
  48. package/dist/collection/components/ui-switch/ui-switch.js +2 -2
  49. package/dist/collection/components/ui-tabs/ui-tabs.js +1 -1
  50. package/dist/collection/components/ui-textarea/ui-textarea.js +1 -1
  51. package/dist/collection/components/ui-toast-region/ui-toast-region.js +1 -1
  52. package/dist/collection/components/ui-tooltip/ui-tooltip.js +1 -1
  53. package/dist/collection/components/ui-top-bar/ui-top-bar.js +1 -1
  54. package/dist/collection/components/ui-tree/ui-tree.js +1 -1
  55. package/dist/collection/components/ui-tree-item/ui-tree-item.js +2 -2
  56. package/dist/components/index.d.ts +0 -2
  57. package/dist/components/index.js +1 -1
  58. package/dist/components/{p-B1macZOS.js → p-DWN2m6ta.js} +1 -1
  59. package/dist/components/p-DYiNETk6.js +1 -0
  60. package/dist/components/ui-combobox.js +1 -1
  61. package/dist/components/ui-context-menu.js +1 -1
  62. package/dist/components/ui-dialog.js +1 -1
  63. package/dist/components/ui-disclosure.js +1 -1
  64. package/dist/components/ui-editable.js +1 -1
  65. package/dist/components/ui-floating-action-button.js +1 -1
  66. package/dist/components/ui-form-field.js +1 -1
  67. package/dist/components/ui-icon-button.js +1 -1
  68. package/dist/components/ui-input.js +1 -1
  69. package/dist/components/ui-menu-item.js +1 -1
  70. package/dist/components/ui-menu.js +1 -1
  71. package/dist/components/ui-popover.js +1 -1
  72. package/dist/components/ui-radio-group.js +1 -1
  73. package/dist/components/ui-radio.js +1 -1
  74. package/dist/components/ui-search-result-row.js +1 -1
  75. package/dist/components/ui-search-shell.js +1 -1
  76. package/dist/components/ui-select.js +1 -1
  77. package/dist/components/ui-switch.js +1 -1
  78. package/dist/components/ui-tabs.js +1 -1
  79. package/dist/components/ui-textarea.js +1 -1
  80. package/dist/components/ui-toast-region.js +1 -1
  81. package/dist/components/ui-tooltip.js +1 -1
  82. package/dist/components/ui-top-bar.js +1 -1
  83. package/dist/components/ui-tree-item.js +1 -1
  84. package/dist/components/ui-tree.js +1 -1
  85. package/dist/esm/loader.js +1 -1
  86. package/dist/esm/looma.js +1 -1
  87. package/dist/esm/ui-chip_2.entry.js +192 -500
  88. package/dist/esm/ui-combobox.entry.js +706 -0
  89. package/dist/esm/ui-context-menu.entry.js +1 -1
  90. package/dist/esm/ui-dialog.entry.js +1 -1
  91. package/dist/esm/ui-disclosure.entry.js +1 -1
  92. package/dist/esm/ui-editable.entry.js +3 -3
  93. package/dist/esm/ui-floating-action-button.entry.js +1 -1
  94. package/dist/esm/ui-form-field.entry.js +1 -1
  95. package/dist/esm/ui-icon-button.entry.js +1 -1
  96. package/dist/esm/ui-input.entry.js +1 -1
  97. package/dist/esm/ui-menu-item.entry.js +1 -1
  98. package/dist/esm/ui-menu.entry.js +1 -1
  99. package/dist/esm/ui-popover.entry.js +1 -1
  100. package/dist/esm/ui-radio-group.entry.js +1 -1
  101. package/dist/esm/ui-radio.entry.js +1 -1
  102. package/dist/esm/ui-search-result-row.entry.js +1 -1
  103. package/dist/esm/ui-search-shell.entry.js +1 -1
  104. package/dist/esm/ui-select.entry.js +1 -1
  105. package/dist/esm/ui-switch.entry.js +2 -2
  106. package/dist/esm/ui-tabs.entry.js +1 -1
  107. package/dist/esm/ui-textarea.entry.js +1 -1
  108. package/dist/esm/ui-toast-region.entry.js +1 -1
  109. package/dist/esm/ui-top-bar.entry.js +1 -1
  110. package/dist/esm/ui-tree-item.entry.js +2 -2
  111. package/dist/esm/ui-tree.entry.js +1 -1
  112. package/dist/index.cjs +471 -514
  113. package/dist/index.js +2 -2
  114. package/dist/looma/looma.esm.js +1 -1
  115. package/dist/looma/{p-9a82c523.entry.js → p-1249a806.entry.js} +1 -1
  116. package/dist/looma/p-1c00670f.entry.js +1 -0
  117. package/dist/looma/p-22842f8c.entry.js +1 -0
  118. package/dist/looma/{p-1e1de77f.entry.js → p-2915d5c0.entry.js} +1 -1
  119. package/dist/looma/{p-88e61cab.entry.js → p-37ec2b4b.entry.js} +1 -1
  120. package/dist/looma/{p-2f3c1b57.entry.js → p-3b2961a6.entry.js} +1 -1
  121. package/dist/looma/{p-e07e6ac2.entry.js → p-3f60f4c8.entry.js} +1 -1
  122. package/dist/looma/{p-9551ebf6.entry.js → p-424d6719.entry.js} +1 -1
  123. package/dist/looma/{p-6cc3180b.entry.js → p-4caccfce.entry.js} +1 -1
  124. package/dist/looma/p-55e06e2e.entry.js +1 -0
  125. package/dist/looma/{p-3957f7ef.entry.js → p-56dac38a.entry.js} +1 -1
  126. package/dist/looma/p-5cbbf7a0.entry.js +1 -0
  127. package/dist/looma/{p-f431dc13.entry.js → p-6f20d470.entry.js} +1 -1
  128. package/dist/looma/{p-b68762f2.entry.js → p-7c0b5364.entry.js} +1 -1
  129. package/dist/looma/{p-e82f104c.entry.js → p-8bdd9495.entry.js} +1 -1
  130. package/dist/looma/{p-df696cca.entry.js → p-9cfbf722.entry.js} +1 -1
  131. package/dist/looma/{p-607c3056.entry.js → p-b6ede6bb.entry.js} +1 -1
  132. package/dist/looma/p-b6fb6ba3.entry.js +1 -0
  133. package/dist/looma/{p-da6e2d01.entry.js → p-b76e2111.entry.js} +1 -1
  134. package/dist/looma/{p-1a12eb5c.entry.js → p-d372b0db.entry.js} +1 -1
  135. package/dist/looma/p-d46317e0.entry.js +1 -0
  136. package/dist/looma/{p-20387ffa.entry.js → p-d4825822.entry.js} +1 -1
  137. package/dist/looma/{p-8a5e3fe1.entry.js → p-d5c3954f.entry.js} +1 -1
  138. package/dist/looma/{p-4f68f939.entry.js → p-e604e906.entry.js} +1 -1
  139. package/dist/looma/{p-e406656e.entry.js → p-f1f7c5cb.entry.js} +1 -1
  140. package/dist/types/components/ui-combobox/ui-combobox.d.ts +35 -4
  141. package/dist/types/components.d.ts +56 -153
  142. package/dist/{ui-affordance-scope.entry-X5526PRP.js → ui-affordance-scope.entry-VR7FLAWG.js} +1 -1
  143. package/dist/{ui-avatar-group.entry-U72MPB5K.js → ui-avatar-group.entry-L3UKOY3U.js} +1 -1
  144. package/dist/{ui-avatar.entry-OC4J3LTV.js → ui-avatar.entry-VM5OHEFQ.js} +1 -1
  145. package/dist/{ui-badge.entry-4MSUQRQV.js → ui-badge.entry-ZTM4OPUD.js} +1 -1
  146. package/dist/{ui-button.entry-22DESWN4.js → ui-button.entry-CIPUSV5B.js} +1 -1
  147. package/dist/{ui-callout.entry-LOGODDM5.js → ui-callout.entry-OBFCI2O7.js} +1 -1
  148. package/dist/{ui-checkbox.entry-XAGW3BW4.js → ui-checkbox.entry-XT6ET56H.js} +1 -1
  149. package/dist/{ui-tooltip.entry-AQ6UPBUP.js → ui-chip_2.entry-32SHCLV6.js} +18 -3
  150. package/dist/{ui-chip_2.entry-JCPHPXAG.js → ui-combobox.entry-ONBBPQ2C.js} +169 -30
  151. package/dist/{ui-context-menu.entry-24YOHF7L.js → ui-context-menu.entry-RXNUOK24.js} +2 -2
  152. package/dist/{ui-dialog.entry-XKNYDWOQ.js → ui-dialog.entry-IJXNUARC.js} +2 -2
  153. package/dist/{ui-disclosure.entry-2AWCGZ4C.js → ui-disclosure.entry-5QS7UDRH.js} +2 -2
  154. package/dist/{ui-editable.entry-HLEWO7BN.js → ui-editable.entry-D7LOQN2H.js} +3 -3
  155. package/dist/{ui-floating-action-button.entry-2NJDB4YN.js → ui-floating-action-button.entry-XQZCTZQT.js} +2 -2
  156. package/dist/{ui-form-field.entry-FJ5HYCTN.js → ui-form-field.entry-A654LJZE.js} +2 -2
  157. package/dist/{ui-icon-button.entry-YZHJQ5YR.js → ui-icon-button.entry-MJ7F7ZIH.js} +2 -2
  158. package/dist/{ui-input.entry-JMBLMNP6.js → ui-input.entry-B2XM7JQU.js} +2 -2
  159. package/dist/{ui-menu-item.entry-VBGXM66D.js → ui-menu-item.entry-JULYSFVW.js} +2 -2
  160. package/dist/{ui-menu.entry-I2N5H3YC.js → ui-menu.entry-ORRWW7HD.js} +2 -2
  161. package/dist/{ui-popover.entry-7JRSJM5S.js → ui-popover.entry-W67V4UPA.js} +2 -2
  162. package/dist/{ui-radio-group.entry-Q2XB7P3B.js → ui-radio-group.entry-KCFOR27M.js} +2 -2
  163. package/dist/{ui-radio.entry-NJO4NA4M.js → ui-radio.entry-I2P4V5E3.js} +2 -2
  164. package/dist/{ui-search-result-row.entry-RPMNDSRN.js → ui-search-result-row.entry-GHODLSLR.js} +2 -2
  165. package/dist/{ui-search-shell.entry-FMIMYD3B.js → ui-search-shell.entry-PDB5UN4B.js} +2 -2
  166. package/dist/{ui-select.entry-7NDBWNAU.js → ui-select.entry-D3CZHCKB.js} +2 -2
  167. package/dist/{ui-switch.entry-YUCPIZE4.js → ui-switch.entry-WUDRL4H5.js} +3 -3
  168. package/dist/{ui-tabs.entry-FXZWV665.js → ui-tabs.entry-MW64GKIJ.js} +2 -2
  169. package/dist/{ui-textarea.entry-HHLQR5GG.js → ui-textarea.entry-VHRBYY6G.js} +2 -2
  170. package/dist/{ui-toast-region.entry-PIIBHNYA.js → ui-toast-region.entry-ET75RWYP.js} +2 -2
  171. package/dist/{ui-top-bar.entry-S2L7ZM4U.js → ui-top-bar.entry-QIYA3LD3.js} +2 -2
  172. package/dist/{ui-tree-item.entry-UID7IJPA.js → ui-tree-item.entry-BDB7VEUS.js} +3 -3
  173. package/dist/{ui-tree.entry-UMD3DNG5.js → ui-tree.entry-GSC7BPRN.js} +2 -2
  174. package/package.json +1 -1
  175. package/vue/{chunk-2DDIBSFD.js → chunk-ROMBQS2L.js} +32 -89
  176. package/vue/editor/index.js +1 -1
  177. package/vue/index.d.ts +30 -107
  178. package/vue/index.js +1 -3
  179. package/dist/cjs/ui-multi-combobox.cjs.entry.js +0 -190
  180. package/dist/cjs/ui-tooltip.cjs.entry.js +0 -241
  181. package/dist/collection/components/ui-multi-combobox/ui-multi-combobox.css +0 -33
  182. package/dist/collection/components/ui-multi-combobox/ui-multi-combobox.js +0 -553
  183. package/dist/components/p-DiyiodGX.js +0 -1
  184. package/dist/components/p-d5fk1vBI.js +0 -1
  185. package/dist/components/ui-multi-combobox.d.ts +0 -11
  186. package/dist/components/ui-multi-combobox.js +0 -1
  187. package/dist/esm/ui-multi-combobox.entry.js +0 -188
  188. package/dist/esm/ui-tooltip.entry.js +0 -239
  189. package/dist/looma/p-071c139c.entry.js +0 -1
  190. package/dist/looma/p-311e54d4.entry.js +0 -1
  191. package/dist/looma/p-4a10a875.entry.js +0 -1
  192. package/dist/looma/p-4fc9917f.entry.js +0 -1
  193. package/dist/looma/p-63a9159f.entry.js +0 -1
  194. package/dist/looma/p-82de1112.entry.js +0 -1
  195. package/dist/looma/p-caa37be2.entry.js +0 -1
  196. package/dist/types/components/ui-multi-combobox/ui-multi-combobox.d.ts +0 -51
  197. package/dist/ui-multi-combobox.entry-MEX7MU7P.js +0 -196
@@ -7,7 +7,7 @@ import {
7
7
  getElement,
8
8
  h,
9
9
  registerInstance
10
- } from "./chunk-G5AWV77V.js";
10
+ } from "./chunk-JXSHRMYW.js";
11
11
 
12
12
  // dist/esm/ui-input.entry.js
13
13
  var uiInputCss = () => `:host{display:inline-flex;min-inline-size:0;color:var(--ui-text-primary)}::slotted(input){width:100%;appearance:none;min-block-size:var(--ui-control-min-block-size, 2.75rem);border:1px solid var(--ui-control-border, var(--ui-border-default));border-radius:var(--ui-radius-2);background:var(--ui-control-surface, var(--ui-surface-default));color:inherit;font:inherit;line-height:var(--ui-line-height-md);padding:var(--ui-space-2) var(--ui-space-3);margin:0;transition:border-color var(--ui-motion-fast) var(--ui-motion-ease), box-shadow var(--ui-motion-fast) var(--ui-motion-ease), background-color var(--ui-motion-fast) var(--ui-motion-ease)}::slotted(input:hover:not(:focus):not(:disabled)){border-color:var(--ui-control-border-hover, var(--ui-border-strong))}::slotted(input:focus){border-color:var(--ui-control-focus, var(--ui-focus-ring));box-shadow:0 0 0 3px var(--ui-control-focus-halo, var(--ui-accent-soft))}:host([data-invalid='true'])::slotted(input),::slotted(input[aria-invalid='true']){border-color:var(--ui-accent-active)}::slotted(input:disabled){background:var(--ui-control-surface-disabled, var(--ui-surface-muted));color:var(--ui-text-muted);cursor:not-allowed}::slotted(input:focus-visible){outline:2px solid var(--ui-focus-ring);outline-offset:2px}`;
@@ -83,7 +83,7 @@ var UIInput = class {
83
83
  });
84
84
  };
85
85
  render() {
86
- return h(Host, { key: "90597a900e0504f0e729990dd8cbc84c35d8162f", "data-invalid": this.invalid ? "" : void 0 }, h("slot", { key: "1c8ac0ad7e4d3a5a9b913c2687021ef7037ccfa7", ref: (el) => this.slotRef = el }));
86
+ return h(Host, { key: "92505de6b1245569a6d4746418a70f8d7bc4eed9", "data-invalid": this.invalid ? "" : void 0 }, h("slot", { key: "d5743dc62037b5d7722cfbb64a582592327c75e5", ref: (el) => this.slotRef = el }));
87
87
  }
88
88
  static get watchers() {
89
89
  return {
@@ -2,7 +2,7 @@ import {
2
2
  Host,
3
3
  h,
4
4
  registerInstance
5
- } from "./chunk-G5AWV77V.js";
5
+ } from "./chunk-JXSHRMYW.js";
6
6
 
7
7
  // dist/esm/ui-menu-item.entry.js
8
8
  var uiMenuItemCss = () => `:host{display:block;width:100%}.menu-item__surface{display:block;box-sizing:border-box;width:100%;padding:var(--ui-space-2) var(--ui-space-3);text-align:left;background:none;border:none;border-radius:var(--ui-radius-2);color:var(--ui-text-primary);font-size:var(--ui-font-size-md);font-weight:var(--ui-font-medium, 500);cursor:pointer;transition:background-color var(--ui-motion-fast) var(--ui-motion-ease), color var(--ui-motion-fast) var(--ui-motion-ease)}:host(:hover:not([aria-disabled='true']):not([disabled])) .menu-item__surface{background:var(--ui-surface-subtle)}:host([aria-disabled='true']) .menu-item__surface,:host([disabled]) .menu-item__surface{opacity:0.6;cursor:not-allowed}`;
@@ -13,7 +13,7 @@ var UIMenuItem = class {
13
13
  disabled = false;
14
14
  value = "";
15
15
  render() {
16
- return h(Host, { key: "856cf07264b2eb8e3e51305408855156e11d9a8b", role: "menuitem", tabIndex: this.disabled ? -1 : 0, "aria-disabled": this.disabled ? "true" : void 0, "data-value": this.value || void 0 }, h("span", { key: "a56401f9b910175eb5683d1748f323dce0d55a9c", class: "menu-item__surface" }, h("slot", { key: "4ee22fd4cdb10ec822e4485e48ed8000a10512ae" })));
16
+ return h(Host, { key: "d0f0886b18ebd01c0c2e20a2c1b1ecfd57eeb3e3", role: "menuitem", tabIndex: this.disabled ? -1 : 0, "aria-disabled": this.disabled ? "true" : void 0, "data-value": this.value || void 0 }, h("span", { key: "7fc584fb670b5b8ce0bbd3be1fea08f87de4a298", class: "menu-item__surface" }, h("slot", { key: "066fb08bc22996d439f3216e401a93a084e3e299" })));
17
17
  }
18
18
  };
19
19
  UIMenuItem.style = uiMenuItemCss();
@@ -19,7 +19,7 @@ import {
19
19
  getElement,
20
20
  h,
21
21
  registerInstance
22
- } from "./chunk-G5AWV77V.js";
22
+ } from "./chunk-JXSHRMYW.js";
23
23
 
24
24
  // dist/esm/ui-menu.entry.js
25
25
  var uiMenuCss = () => `:host{--ui-menu-viewport-gap:var(--ui-space-2, 0.5rem);display:flex;flex-direction:column;box-sizing:border-box;inline-size:max-content;min-inline-size:min(12rem, calc(100vw - (var(--ui-menu-viewport-gap) * 2)));max-inline-size:calc(100vw - (var(--ui-menu-viewport-gap) * 2));padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;overflow:visible}.menu__surface{display:flex;flex-direction:column;box-sizing:border-box;max-inline-size:inherit;padding:var(--ui-space-1);background:var(--ui-surface-elevated);border:1px solid var(--ui-border-default);border-radius:var(--ui-radius-3);box-shadow:var(--ui-shadow-lg);max-block-size:inherit;overflow:auto}:host(:not([data-open])){display:none}:host([popover]){position:fixed;inset:auto;margin:0;overflow:visible;max-block-size:calc(100dvh - (var(--ui-menu-viewport-gap) * 2));opacity:0;transform:translateY(-4px) scale(0.99);transition:opacity var(--ui-motion-fast) var(--ui-motion-ease), transform var(--ui-motion-fast) var(--ui-motion-ease), display var(--ui-motion-fast) allow-discrete, overlay var(--ui-motion-fast) allow-discrete}:host([popover]:popover-open){opacity:1;transform:translateY(0) scale(1)}@starting-style{:host([popover]:popover-open){opacity:0;transform:translateY(-4px) scale(0.99)}}:host([hidden]){display:none !important}@media (prefers-reduced-motion: reduce){:host([popover]){transition:none}}::slotted(ui-menu-item){display:block;width:100%}`;
@@ -167,7 +167,7 @@ var UIMenu = class {
167
167
  }
168
168
  };
169
169
  render() {
170
- return h(Host, { key: "22689ca1b0514bb27a76bfb9a702c0d4ce49d136", role: "menu", "aria-orientation": "vertical", "data-open": this.internalOpen ? "" : void 0 }, h("div", { key: "cff891a33348f077631f1b92f1167285aafd25f1", class: "menu__surface" }, h("slot", { key: "3a0e9ff4f36b1afbe5f879e0e51ff4943279b5b5" })));
170
+ return h(Host, { key: "5b64cc53ca56ea04a63013c8cb61231c9b1045cc", role: "menu", "aria-orientation": "vertical", "data-open": this.internalOpen ? "" : void 0 }, h("div", { key: "6410a56cc5efcffd0673c9abdf8f8aa45295c516", class: "menu__surface" }, h("slot", { key: "7e7f9d3b19bbf3024d61ecf44cd8b103748ef966" })));
171
171
  }
172
172
  static get watchers() {
173
173
  return {
@@ -18,7 +18,7 @@ import {
18
18
  getElement,
19
19
  h,
20
20
  registerInstance
21
- } from "./chunk-G5AWV77V.js";
21
+ } from "./chunk-JXSHRMYW.js";
22
22
 
23
23
  // dist/esm/ui-popover.entry.js
24
24
  var uiPopoverCss = () => `:host{--ui-popover-viewport-gap:var(--ui-space-2, 0.5rem);box-sizing:border-box;max-inline-size:min( 20rem, calc(100vw - (var(--ui-popover-viewport-gap) * 2)) );max-block-size:calc(100dvh - (var(--ui-popover-viewport-gap) * 2));overflow:visible;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}.popover__surface{box-sizing:border-box;max-inline-size:inherit;max-block-size:inherit;overflow:auto;padding:var(--ui-space-3);background:var(--ui-surface-elevated);border:1px solid var(--ui-border-default);border-radius:var(--ui-radius-3);box-shadow:var(--ui-shadow-lg)}:host(:not([data-open])){display:none}:host([popover]){position:fixed;inset:auto;margin:0;opacity:0;transform:translateY(-4px) scale(0.99);transition:opacity var(--ui-motion-fast) var(--ui-motion-ease), transform var(--ui-motion-fast) var(--ui-motion-ease), display var(--ui-motion-fast) allow-discrete, overlay var(--ui-motion-fast) allow-discrete}:host([popover]:popover-open){opacity:1;transform:translateY(0) scale(1)}@starting-style{:host([popover]:popover-open){opacity:0;transform:translateY(-4px) scale(0.99)}}:host([hidden]){display:none !important}@media (prefers-reduced-motion: reduce){:host([popover]){transition:none}}`;
@@ -127,7 +127,7 @@ var UIPopover = class {
127
127
  }
128
128
  };
129
129
  render() {
130
- return h(Host, { key: "f63907b8e49b8264c291048c509b6164fdd60ca4", "data-open": this.internalOpen ? "" : void 0, onKeyDown: this.onKeydown }, h("div", { key: "2425f4394749d994693f4a256256bd9e2f5daf60", class: "popover__surface" }, h("slot", { key: "3b6f925da371d43e828842c4027cddee673d7ab3" })));
130
+ return h(Host, { key: "65a0927abc40450205989704bfde2cf7fd80d1f9", "data-open": this.internalOpen ? "" : void 0, onKeyDown: this.onKeydown }, h("div", { key: "255acaf99e0fe70a92048351b24bdfde1a4ea45f", class: "popover__surface" }, h("slot", { key: "9d2f6c9d5a0f7a2766225aef0ec5b98b33ec9f07" })));
131
131
  }
132
132
  static get watchers() {
133
133
  return {
@@ -7,7 +7,7 @@ import {
7
7
  getElement,
8
8
  h,
9
9
  registerInstance
10
- } from "./chunk-G5AWV77V.js";
10
+ } from "./chunk-JXSHRMYW.js";
11
11
 
12
12
  // dist/esm/ui-radio-group.entry.js
13
13
  var uiRadioGroupCss = () => `:host{display:inline-flex;align-items:center;gap:var(--ui-space-2)}:host([data-orientation='vertical']){display:inline-grid;justify-items:start}`;
@@ -114,7 +114,7 @@ var UIRadioGroup = class {
114
114
  }
115
115
  };
116
116
  render() {
117
- return h(Host, { key: "31d8dee04aad4ddbb0bfa617a4e6ed187eab6674", role: "radiogroup", "aria-orientation": this.orientation, "data-orientation": this.orientation, "data-disabled": this.disabled ? "" : void 0 }, h("slot", { key: "7134bcfa6b11cbe0d0d55a6593ea3fca921a71ec" }));
117
+ return h(Host, { key: "9bdfe6b5209b5444cb27dde3226ec33866999c25", role: "radiogroup", "aria-orientation": this.orientation, "data-orientation": this.orientation, "data-disabled": this.disabled ? "" : void 0 }, h("slot", { key: "b81a2f1e4c49000cfb5357570b460564ced48d91" }));
118
118
  }
119
119
  static get watchers() {
120
120
  return {
@@ -11,7 +11,7 @@ import {
11
11
  getElement,
12
12
  h,
13
13
  registerInstance
14
- } from "./chunk-G5AWV77V.js";
14
+ } from "./chunk-JXSHRMYW.js";
15
15
 
16
16
  // dist/esm/ui-radio.entry.js
17
17
  var uiRadioCss = () => `:host{display:inline-flex;align-items:center;gap:var(--ui-space-2);color:var(--ui-text-primary)}:host([data-disabled='true']),:host([aria-disabled='true']){opacity:0.6;cursor:not-allowed}::slotted(input[type='radio']){accent-color:var(--ui-accent-solid);cursor:pointer}::slotted(input[type='radio']:focus-visible){outline:2px solid var(--ui-accent-solid);outline-offset:2px}`;
@@ -80,7 +80,7 @@ var UIRadio = class {
80
80
  });
81
81
  };
82
82
  render() {
83
- return h(Host, { key: "5bab1394b8238609e4382309e4b11bca82a60b12", role: "radio", "aria-checked": String(this.internalChecked), "aria-disabled": String(this.disabled), "data-disabled": this.disabled ? "" : void 0 }, h("slot", { key: "56ba5b7ec4ab53299c66689558338d2c6ab3e4f6", ref: (el) => this.slotRef = el }));
83
+ return h(Host, { key: "32df72dff7253956875ef28f593462ddbbb90eef", role: "radio", "aria-checked": String(this.internalChecked), "aria-disabled": String(this.disabled), "data-disabled": this.disabled ? "" : void 0 }, h("slot", { key: "0c78f3e3bdf4d618547b267128c6fc0fdd651599", ref: (el) => this.slotRef = el }));
84
84
  }
85
85
  static get watchers() {
86
86
  return {
@@ -2,7 +2,7 @@ import {
2
2
  Host,
3
3
  h,
4
4
  registerInstance
5
- } from "./chunk-G5AWV77V.js";
5
+ } from "./chunk-JXSHRMYW.js";
6
6
 
7
7
  // dist/esm/ui-search-result-row.entry.js
8
8
  var uiSearchResultRowCss = () => `:host{display:block}.search-result-row{appearance:none;inline-size:100%;min-block-size:var(--ui-search-result-row-min-height, 56px);margin:0;padding-block:var(--ui-search-result-row-padding-block, var(--ui-space-3, 0.75rem));padding-inline:var(--ui-search-result-row-padding-inline, var(--ui-space-4, 1rem));display:flex;align-items:flex-start;gap:var(--ui-search-result-row-gap, var(--ui-space-3, 0.75rem));background:var(--ui-search-result-row-bg, transparent);border:none;border-block-end:1px solid var(--ui-search-result-row-border, var(--ui-border, #e5e7eb));color:inherit;cursor:pointer;text-align:left;transition:background-color var(--ui-motion-fast, 160ms) var(--ui-motion-ease, ease)}:host(:last-child) .search-result-row{border-block-end:none}.search-result-row:hover:enabled{background:var(--ui-search-result-row-hover-bg, color-mix(in srgb, var(--ui-surface, #ffffff) 85%, black 3%))}:host([selected]) .search-result-row{background:var( --ui-search-result-row-selected-bg, var(--ui-search-result-row-hover-bg, color-mix(in srgb, var(--ui-surface, #ffffff) 85%, black 3%)) )}.search-result-row:focus-visible{outline:2px solid var(--ui-focus-ring, #2563eb);outline-offset:-2px}.search-result-row:disabled,:host([disabled]) .search-result-row{opacity:0.6;cursor:not-allowed}.search-result-row__leading,.search-result-row__trailing{display:inline-flex;align-items:flex-start;flex-shrink:0}.search-result-row__content{min-inline-size:0;flex:1;display:flex;flex-direction:column}.search-result-row__title,.search-result-row__meta,.search-result-row__excerpt{display:block;min-inline-size:0}[hidden]{display:none}::slotted([slot='title']),::slotted([slot='meta']),::slotted([slot='excerpt']){display:block;margin:0}`;
@@ -41,7 +41,7 @@ var UISearchResultRow = class {
41
41
  this.hasTrailing = slotHasContent(this.trailingSlot);
42
42
  };
43
43
  render() {
44
- return h(Host, { key: "2e1a1fe613e499a8abaaf89c8cc071554b523157" }, h("button", { key: "2224a7593feb6c58b162ce820b2deb9bec4fa1b7", class: "search-result-row", type: "button", disabled: this.disabled, part: "button" }, h("span", { key: "87b86a7d31e15b401b933562adba9a24c88e341f", class: "search-result-row__leading", part: "leading", hidden: !this.hasLeading }, h("slot", { key: "00d253826d2d0c60206e20b6428c3277024a24e0", name: "leading", ref: (el) => this.leadingSlot = el, onSlotchange: this.syncSlots })), h("span", { key: "3c4ad5b336450c29d56aea538dbc987b9a624c1d", class: "search-result-row__content", part: "content" }, h("span", { key: "305dc47dcac890ca968d622ce3dc18e88d646ab3", class: "search-result-row__title", part: "title" }, h("slot", { key: "5441b78d87cba9e48eb3b786e7ea914479f5ef15", name: "title" })), h("span", { key: "bbd7769b81005b959e6d950255951f0089e9e716", class: "search-result-row__meta", part: "meta", hidden: !this.hasMeta }, h("slot", { key: "8437dd124e858eadb942e2a05ccd87c14a8ea604", name: "meta", ref: (el) => this.metaSlot = el, onSlotchange: this.syncSlots })), h("span", { key: "6939cb19881b17799205a54eda9d34e86563f994", class: "search-result-row__excerpt", part: "excerpt", hidden: !this.hasExcerpt }, h("slot", { key: "2f41b9ec22a0260e4196553a655cc501384f2331", name: "excerpt", ref: (el) => this.excerptSlot = el, onSlotchange: this.syncSlots }))), h("span", { key: "162de66c31688de9114233984448eb5b30d48dc3", class: "search-result-row__trailing", part: "trailing", hidden: !this.hasTrailing }, h("slot", { key: "dfa3d5bbbe453a8fd1c3ddf9508bf33edf145dc6", name: "trailing", ref: (el) => this.trailingSlot = el, onSlotchange: this.syncSlots }))));
44
+ return h(Host, { key: "923d7ac982594e39c06421b60f115acbb395f169" }, h("button", { key: "c97e45ba33297a8aeaa4a9726402c71e3ca73a7b", class: "search-result-row", type: "button", disabled: this.disabled, part: "button" }, h("span", { key: "dea0781519760f5dc2b46902ef86f9e72ccfa6df", class: "search-result-row__leading", part: "leading", hidden: !this.hasLeading }, h("slot", { key: "e10026c17caaa3a21e9dd34c7faabfe9b97f2f5b", name: "leading", ref: (el) => this.leadingSlot = el, onSlotchange: this.syncSlots })), h("span", { key: "e8bb06b45aff7ddbaa9a51cc7c53d797e68e8746", class: "search-result-row__content", part: "content" }, h("span", { key: "6e1c2d49029e1c1fdc2519f513ddedbe304ddb3e", class: "search-result-row__title", part: "title" }, h("slot", { key: "9653efc0b61c49d36034c4c75a3e9b3d7a6f837b", name: "title" })), h("span", { key: "b10885a7649c75f9e6903354f5804f459aa883b7", class: "search-result-row__meta", part: "meta", hidden: !this.hasMeta }, h("slot", { key: "b3101183b0dfa0cc1ba8e62c1f8fc39ad865e1ae", name: "meta", ref: (el) => this.metaSlot = el, onSlotchange: this.syncSlots })), h("span", { key: "430520c0e349344fc4c549cd36a0137d39fc8d24", class: "search-result-row__excerpt", part: "excerpt", hidden: !this.hasExcerpt }, h("slot", { key: "4a90cefa9b1d2b2378d1a8aa166aa8fdebfbca42", name: "excerpt", ref: (el) => this.excerptSlot = el, onSlotchange: this.syncSlots }))), h("span", { key: "769ed2f62ead7ce32b13cdad93a7bbb981b13b3c", class: "search-result-row__trailing", part: "trailing", hidden: !this.hasTrailing }, h("slot", { key: "86490f5fef29c6fa4d8ddf838de5f9aee8535db0", name: "trailing", ref: (el) => this.trailingSlot = el, onSlotchange: this.syncSlots }))));
45
45
  }
46
46
  };
47
47
  UISearchResultRow.style = uiSearchResultRowCss();
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  h,
3
3
  registerInstance
4
- } from "./chunk-G5AWV77V.js";
4
+ } from "./chunk-JXSHRMYW.js";
5
5
 
6
6
  // dist/esm/ui-search-shell.entry.js
7
7
  var uiSearchShellCss = () => `:host{position:fixed;inset:0;z-index:var(--ui-search-shell-z-index, 400);display:block}.search-shell{position:absolute;inset:0;display:flex;align-items:flex-start;justify-content:center;padding-block-start:var(--ui-search-shell-padding-top, 10vh)}.search-shell__panel{position:relative;inline-size:min( calc(100% - (var(--ui-search-shell-margin-inline, var(--ui-space-4, 1rem)) * 2)), var(--ui-search-shell-max-width, 640px) );max-block-size:var(--ui-search-shell-max-height, 80vh);display:flex;flex-direction:column;overflow:hidden;background:var(--ui-search-shell-bg, var(--ui-surface, #ffffff));border:1px solid var(--ui-search-shell-border, var(--ui-border, #e5e7eb));border-radius:var(--ui-search-shell-radius, var(--ui-radius-xl, 1rem));box-shadow:var(--ui-search-shell-shadow, var(--ui-shadow-lg, 0 8px 24px rgba(0, 0, 0, 0.12)))}.search-shell__search,.search-shell__status,.search-shell__footer{flex-shrink:0}.search-shell__body{flex:1;min-block-size:0}[hidden]{display:none}@media (max-width: 767px){.search-shell{padding-block-start:0;align-items:stretch}.search-shell__panel{inline-size:100%;block-size:100vh;block-size:100dvh;max-block-size:none;border-radius:0;border-inline:none;border-block-start:none}}`;
@@ -32,7 +32,7 @@ var UISearchShell = class {
32
32
  this.hasFooter = slotHasContent(this.footerSlot);
33
33
  };
34
34
  render() {
35
- return h("div", { key: "508a5900288b0b7e0651d3a56e1f5a9094061952", class: "search-shell", part: "base" }, h("slot", { key: "54677a395d62aed4538bb36255046a1d679da312", name: "backdrop" }), h("div", { key: "f738673e5a95509803d2c4682adb4aa48f7b798f", class: "search-shell__panel", part: "panel" }, h("div", { key: "8e4a14fcc5e7cc0ff3c2c94ad72cb6b4305d4fea", class: "search-shell__search", part: "search" }, h("slot", { key: "28f3d8439964423fe9beeac91490a70a30a36b6e", name: "search" })), h("div", { key: "8bcd00a532eea21a41a7771636bc038c27c55a31", class: "search-shell__status", part: "status", hidden: !this.hasStatus }, h("slot", { key: "4a4c9082f2645e80fdfa2a8b71a1747573d02f73", name: "status", ref: (el) => this.statusSlot = el, onSlotchange: this.syncSlots })), h("div", { key: "58439a3d479f042f827abce2a99dc1ae75db5ca1", class: "search-shell__body", part: "body" }, h("slot", { key: "5f6c4202b0abeb3708bed415a576e877c94f1eb1", name: "body" })), h("div", { key: "7a2887f7220619db2ccb5a907623c3e760d1e073", class: "search-shell__footer", part: "footer", hidden: !this.hasFooter }, h("slot", { key: "26c8f839b8add2b52c6940e67a6a7c94a8ffcf31", name: "footer", ref: (el) => this.footerSlot = el, onSlotchange: this.syncSlots }))));
35
+ return h("div", { key: "049a6451f10f1906881efc8fc2cdeba656e68733", class: "search-shell", part: "base" }, h("slot", { key: "e807b035ccb9ec9425651b59a0d137ebc54329aa", name: "backdrop" }), h("div", { key: "5d785a0d4dab1fed7f6750b82485b9e50edd62d9", class: "search-shell__panel", part: "panel" }, h("div", { key: "b41c40485d61d9436504483759a5f42d96e5aad2", class: "search-shell__search", part: "search" }, h("slot", { key: "b19058bca701cc26d286c8694c7cdc6306e100c4", name: "search" })), h("div", { key: "260164b95427e03329f28247e8dbda867506e672", class: "search-shell__status", part: "status", hidden: !this.hasStatus }, h("slot", { key: "1d7c1e8c96e588b7c9c906cfaad91ba1cf77bf7c", name: "status", ref: (el) => this.statusSlot = el, onSlotchange: this.syncSlots })), h("div", { key: "49963c82e54aee2b5c4c4809ce2b152f770b4468", class: "search-shell__body", part: "body" }, h("slot", { key: "ae32ec8c9ec89310ad1805f1c65bc8208ee12f29", name: "body" })), h("div", { key: "f5fc9f356035e277e4c9bb0e188d7b4be3642c27", class: "search-shell__footer", part: "footer", hidden: !this.hasFooter }, h("slot", { key: "dbf1022e49a054eee1c5e70b675c71d1cf3488bf", name: "footer", ref: (el) => this.footerSlot = el, onSlotchange: this.syncSlots }))));
36
36
  }
37
37
  };
38
38
  UISearchShell.style = uiSearchShellCss();
@@ -7,7 +7,7 @@ import {
7
7
  getElement,
8
8
  h,
9
9
  registerInstance
10
- } from "./chunk-G5AWV77V.js";
10
+ } from "./chunk-JXSHRMYW.js";
11
11
 
12
12
  // dist/esm/ui-select.entry.js
13
13
  var uiSelectCss = () => `:host{display:inline-flex;min-inline-size:0;color:var(--ui-text-primary)}::slotted(select){width:100%;appearance:none;min-block-size:var(--ui-control-min-block-size, 2.75rem);border:1px solid var(--ui-control-border, var(--ui-border-default));border-radius:var(--ui-radius-2);background-color:var(--ui-control-surface, var(--ui-surface-default));color:inherit;font:inherit;line-height:var(--ui-line-height-md);padding-block:var(--ui-select-padding-block, var(--ui-space-2));padding-inline-start:var(--ui-select-padding-inline-start, var(--ui-space-3));padding-inline-end:var(--ui-select-padding-inline-end, calc(var(--ui-space-6) + var(--ui-space-3)));margin:0;background-image:linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%);background-position:calc(100% - 1rem) calc(50% - 2px), calc(100% - 0.7rem) calc(50% - 2px);background-size:0.35rem 0.35rem, 0.35rem 0.35rem;background-repeat:no-repeat;transition:border-color var(--ui-motion-fast) var(--ui-motion-ease), box-shadow var(--ui-motion-fast) var(--ui-motion-ease), background-color var(--ui-motion-fast) var(--ui-motion-ease)}::slotted(select:hover:not(:focus):not(:disabled)){border-color:var(--ui-control-border-hover, var(--ui-border-strong))}::slotted(select:focus){border-color:var(--ui-control-focus, var(--ui-focus-ring));box-shadow:0 0 0 3px var(--ui-control-focus-halo, var(--ui-accent-soft))}:host([data-invalid='true'])::slotted(select),::slotted(select[aria-invalid='true']){border-color:var(--ui-accent-active)}::slotted(select:disabled){background-color:var(--ui-control-surface-disabled, var(--ui-surface-muted));color:var(--ui-text-muted);cursor:not-allowed}::slotted(select:focus-visible){outline:2px solid var(--ui-focus-ring);outline-offset:2px}::slotted(select[multiple]),::slotted(select[size]:not([size='1'])){background-image:none;padding-inline-end:var(--ui-select-padding-inline-start, var(--ui-space-3))}`;
@@ -86,7 +86,7 @@ var UISelect = class {
86
86
  });
87
87
  };
88
88
  render() {
89
- return h(Host, { key: "5b77bfa817964325038cf338a1c0791abf8d2bfe", "data-invalid": this.invalid ? "" : void 0 }, h("slot", { key: "9a9c8017e5e02d14945d6b7c84d68edf7b2ccaf8", ref: (el) => this.slotRef = el }));
89
+ return h(Host, { key: "2b3348e1694cfd113163af3adf939fd64cb40654", "data-invalid": this.invalid ? "" : void 0 }, h("slot", { key: "40e627125a906cf4bf294eb085c172a5370f3a54", ref: (el) => this.slotRef = el }));
90
90
  }
91
91
  static get watchers() {
92
92
  return {
@@ -10,7 +10,7 @@ import {
10
10
  getElement,
11
11
  h,
12
12
  registerInstance
13
- } from "./chunk-G5AWV77V.js";
13
+ } from "./chunk-JXSHRMYW.js";
14
14
 
15
15
  // dist/esm/ui-switch.entry.js
16
16
  var uiSwitchCss = () => `:host{display:inline-flex;align-items:center;gap:var(--ui-space-2);color:var(--ui-text-primary)}:host([aria-disabled='true']),:host([data-disabled='true']){opacity:0.6;cursor:not-allowed}:host([role='switch']){cursor:pointer}:host input[type='checkbox']{appearance:none;-webkit-appearance:none;display:block;position:relative;width:2.25rem;height:1.25rem;padding:0;border:1px solid var(--ui-border-default);border-radius:999px;background:var(--ui-surface-muted);cursor:pointer;transition:background-color var(--ui-motion-fast) var(--ui-motion-ease), border-color var(--ui-motion-fast) var(--ui-motion-ease);margin:0}:host input[type='checkbox']::after{content:'';position:absolute;top:2px;left:2px;width:0.875rem;height:0.875rem;border-radius:999px;background:var(--ui-surface-default);border:1px solid var(--ui-border-default);transition:transform var(--ui-motion-fast) var(--ui-motion-ease)}:host input[type='checkbox']:checked{background:var(--ui-accent-solid);border-color:var(--ui-accent-solid)}:host input[type='checkbox']:checked::after{transform:translateX(calc(2.25rem - 0.875rem - 4px));background:var(--ui-text-on-accent);border-color:var(--ui-text-on-accent)}:host input[type='checkbox']:focus-visible{outline:2px solid var(--ui-accent-solid);outline-offset:2px}`;
@@ -59,7 +59,7 @@ var UISwitch = class {
59
59
  this.toggle("pointer");
60
60
  };
61
61
  render() {
62
- return h(Host, { key: "e5ec7f2f91e860dd679098f30b40cbe0e52ccb1f", role: "switch", "aria-checked": String(this.internalChecked), "aria-disabled": String(this.disabled), "data-disabled": this.disabled ? "" : void 0, tabIndex: this.disabled ? -1 : 0, onKeyDown: this.onKeydown, onClick: this.onClick }, h("input", { key: "c21462377a81d7242633e7d358f56fd7a276f584", type: "checkbox", checked: this.internalChecked, disabled: this.disabled, required: this.required, value: this.value, "aria-hidden": "true", tabIndex: -1, onChange: (e) => {
62
+ return h(Host, { key: "eaee279bbc787c844f2ad265da03fca608d9c429", role: "switch", "aria-checked": String(this.internalChecked), "aria-disabled": String(this.disabled), "data-disabled": this.disabled ? "" : void 0, tabIndex: this.disabled ? -1 : 0, onKeyDown: this.onKeydown, onClick: this.onClick }, h("input", { key: "2ebfa684bf08735a4e89a06001f6758885c40ffb", type: "checkbox", checked: this.internalChecked, disabled: this.disabled, required: this.required, value: this.value, "aria-hidden": "true", tabIndex: -1, onChange: (e) => {
63
63
  const input = e.target;
64
64
  const checked = input.checked;
65
65
  if (!isControlled(this.checked))
@@ -71,7 +71,7 @@ var UISwitch = class {
71
71
  });
72
72
  if (isControlled(this.checked))
73
73
  input.checked = this.internalChecked;
74
- } }), h("slot", { key: "e3f4f032bc41784ed41591d4fd175b89a4162c49" }));
74
+ } }), h("slot", { key: "ff9975d4ccbffbed2b97060eabf347653d5f5110" }));
75
75
  }
76
76
  static get watchers() {
77
77
  return {
@@ -11,7 +11,7 @@ import {
11
11
  getElement,
12
12
  h,
13
13
  registerInstance
14
- } from "./chunk-G5AWV77V.js";
14
+ } from "./chunk-JXSHRMYW.js";
15
15
 
16
16
  // dist/esm/ui-tabs.entry.js
17
17
  var uiTabsCss = () => `:host{display:flex;flex-direction:column;gap:0}:host([data-orientation='vertical']){flex-direction:row}::slotted([role='tablist']){display:flex;gap:0;max-inline-size:100%;overflow-x:auto;overscroll-behavior-inline:contain;border-bottom:1px solid var(--ui-border-default)}:host([data-orientation='vertical']) ::slotted([role='tablist']){flex-direction:column;border-bottom:none;border-inline-end:1px solid var(--ui-border-default)}::slotted(button[role='tab']),::slotted([role='tab']),::slotted(ui-button) button[role='tab']{padding:var(--ui-space-2) var(--ui-space-3);font-size:var(--ui-font-size-sm);font-weight:var(--ui-font-medium, 500);color:var(--ui-text-secondary);background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer;transition:color var(--ui-motion-fast) var(--ui-motion-ease);box-shadow:none}::slotted(button[role='tab']:hover),::slotted([role='tab']:hover){color:var(--ui-text-primary)}::slotted(button[role='tab'][aria-selected='true']),::slotted([role='tab'][aria-selected='true']){color:var(--ui-accent-solid);border-bottom-color:var(--ui-accent-solid)}:host([data-orientation='vertical']) ::slotted(button[role='tab']),:host([data-orientation='vertical']) ::slotted([role='tab']){border-bottom:none;border-inline-end:2px solid transparent;margin-bottom:0;margin-inline-end:-1px}:host([data-orientation='vertical']) ::slotted(button[role='tab'][aria-selected='true']),:host([data-orientation='vertical']) ::slotted([role='tab'][aria-selected='true']){border-inline-end-color:var(--ui-accent-solid)}::slotted([role='tabpanel']){padding:var(--ui-space-4)}`;
@@ -106,7 +106,7 @@ var UITabs = class {
106
106
  }
107
107
  };
108
108
  render() {
109
- return h(Host, { key: "908dc4228940bbf33530a2b9f5fb36421c51d1a1", orientation: this.orientation, "data-orientation": this.orientation }, h("slot", { key: "ebfe8bc58d09fdce2815b26f29e2eba4e5f3c879" }));
109
+ return h(Host, { key: "61044ac3f2fcb0f766d931416f42ff17ec94c00d", orientation: this.orientation, "data-orientation": this.orientation }, h("slot", { key: "3260c95bdd24581045b1c4e4d1b8f4d08daf02b4" }));
110
110
  }
111
111
  static get watchers() {
112
112
  return {
@@ -7,7 +7,7 @@ import {
7
7
  getElement,
8
8
  h,
9
9
  registerInstance
10
- } from "./chunk-G5AWV77V.js";
10
+ } from "./chunk-JXSHRMYW.js";
11
11
 
12
12
  // dist/esm/ui-textarea.entry.js
13
13
  var uiTextareaCss = () => `:host{display:inline-flex;min-inline-size:0;color:var(--ui-text-primary)}::slotted(textarea){width:100%;appearance:none;border:1px solid var(--ui-control-border, var(--ui-border-default));border-radius:var(--ui-radius-2);background:var(--ui-control-surface, var(--ui-surface-default));color:inherit;font:inherit;line-height:var(--ui-line-height-md);min-block-size:calc(var(--ui-space-12, 3rem) * 2);padding:var(--ui-space-2) var(--ui-space-3);margin:0;resize:vertical;transition:border-color var(--ui-motion-fast) var(--ui-motion-ease), box-shadow var(--ui-motion-fast) var(--ui-motion-ease), background-color var(--ui-motion-fast) var(--ui-motion-ease)}::slotted(textarea:hover:not(:focus):not(:disabled)){border-color:var(--ui-control-border-hover, var(--ui-border-strong))}::slotted(textarea:focus){border-color:var(--ui-control-focus, var(--ui-focus-ring));box-shadow:0 0 0 3px var(--ui-control-focus-halo, var(--ui-accent-soft))}:host([data-invalid='true'])::slotted(textarea),::slotted(textarea[aria-invalid='true']){border-color:var(--ui-accent-active)}::slotted(textarea:disabled){background:var(--ui-control-surface-disabled, var(--ui-surface-muted));color:var(--ui-text-muted);cursor:not-allowed}::slotted(textarea:focus-visible){outline:2px solid var(--ui-focus-ring);outline-offset:2px}`;
@@ -85,7 +85,7 @@ var UITextarea = class {
85
85
  });
86
86
  };
87
87
  render() {
88
- return h(Host, { key: "4774b8d20cd4426b1c6205375fd9e4275bc24f08", "data-invalid": this.invalid ? "" : void 0 }, h("slot", { key: "9b5489df35c29bf453d010f85bcb05dcc01fcce9", ref: (el) => this.slotRef = el }));
88
+ return h(Host, { key: "a554edb1a0ef40a2c116e3064e52af7474e065e4", "data-invalid": this.invalid ? "" : void 0 }, h("slot", { key: "a4eb8034ec11f8b3b06ace7287410fd839004593", ref: (el) => this.slotRef = el }));
89
89
  }
90
90
  static get watchers() {
91
91
  return {
@@ -10,7 +10,7 @@ import {
10
10
  getElement,
11
11
  h,
12
12
  registerInstance
13
- } from "./chunk-G5AWV77V.js";
13
+ } from "./chunk-JXSHRMYW.js";
14
14
 
15
15
  // dist/esm/ui-toast-region.entry.js
16
16
  var uiToastRegionCss = () => `:host{position:fixed;top:calc(var(--ui-space-4) + env(safe-area-inset-top));left:50%;transform:translateX(-50%);z-index:9999;display:grid;gap:var(--ui-space-2);inline-size:min(24rem, calc(100vw - (var(--ui-space-4) * 2)));max-inline-size:100%;pointer-events:none}:host([popover]){right:auto;bottom:auto;margin:0}:host>*{pointer-events:auto}::slotted([data-ui-toast]){display:grid;grid-template-columns:1fr auto;gap:var(--ui-space-2);align-items:start;border:1px solid var(--ui-border-default);border-radius:var(--ui-radius-3);padding:var(--ui-space-3) var(--ui-space-4);background:var(--ui-surface-elevated);color:var(--ui-text-primary);box-shadow:var(--ui-shadow-lg);animation:ui-toast-enter 0.25s var(--ui-motion-ease) forwards}@keyframes ui-toast-enter{from{opacity:0;transform:translateY(-0.5rem)}to{opacity:1;transform:translateY(0)}}::slotted([data-ui-toast][aria-hidden='true']){display:none}::slotted([data-ui-toast-dismiss]){border:0;background:transparent;color:var(--ui-text-secondary);cursor:pointer;font:inherit}`;
@@ -85,7 +85,7 @@ var UIToastRegion = class {
85
85
  });
86
86
  };
87
87
  render() {
88
- return h(Host, { key: "e3a71de7854b5937cc3f74858fc69f202fd93c71", role: "region", "aria-label": "Notifications", "aria-live": "polite", "data-open": this.internalOpen ? "" : void 0 }, h("slot", { key: "cdf6ea0118199d149ac08820c69ec8b54654be91" }));
88
+ return h(Host, { key: "9f9c2e14150c631c0f7cb427c693dcd52c20897d", role: "region", "aria-label": "Notifications", "aria-live": "polite", "data-open": this.internalOpen ? "" : void 0 }, h("slot", { key: "9e1d9ebb6b587afab2c4302241cecb03a321cee1" }));
89
89
  }
90
90
  static get watchers() {
91
91
  return {
@@ -3,7 +3,7 @@ import {
3
3
  getElement,
4
4
  h,
5
5
  registerInstance
6
- } from "./chunk-G5AWV77V.js";
6
+ } from "./chunk-JXSHRMYW.js";
7
7
 
8
8
  // dist/esm/ui-top-bar.entry.js
9
9
  var uiTopBarCss = () => `:host{position:sticky;inset-block-start:0;z-index:var(--ui-top-bar-z-index, 100);display:block}.top-bar{min-block-size:calc(var(--ui-top-bar-height, 56px) + env(safe-area-inset-top));display:flex;align-items:center;gap:var(--ui-top-bar-gap, var(--ui-space-3, 0.75rem));padding-block-start:env(safe-area-inset-top);padding-inline-start:max( var(--ui-top-bar-padding-inline, var(--ui-space-4, 1rem)), env(safe-area-inset-left) );padding-inline-end:max( var(--ui-top-bar-padding-inline, var(--ui-space-4, 1rem)), env(safe-area-inset-right) );background:var(--ui-top-bar-bg, var(--ui-surface, #ffffff));border-block-end:1px solid var(--ui-top-bar-border, var(--ui-border, #e5e7eb))}.top-bar__leading,.top-bar__search,.top-bar__actions{display:flex;align-items:center;flex-shrink:0}.top-bar__actions{gap:var(--ui-top-bar-actions-gap, var(--ui-space-1, 0.25rem))}.top-bar__title{min-inline-size:0;flex:1}[hidden]{display:none}@media (min-width: 768px){:host{display:none}}`;
@@ -40,7 +40,7 @@ var UITopBar = class {
40
40
  this.hasActions = slotHasContent(this.actionsSlot);
41
41
  };
42
42
  render() {
43
- return h(Host, { key: "1f0cf8994e3a18d42415fa85f14d172cfaddbf8e" }, h("header", { key: "e92afb06dad409b4a4e8fcc52bcad09b3e4531c4", class: "top-bar", part: "base" }, h("div", { key: "3d1458e841c7a600c98d6797b4ec97baee285de1", class: "top-bar__leading", hidden: !this.hasLeading }, h("slot", { key: "665e078f41410275cba3c55fec05159518a97a9e", name: "leading", ref: (el) => this.leadingSlot = el, onSlotchange: this.syncSlots })), h("div", { key: "7657a2c1e6c96660fa2ade470c8a4b0ecd30fcd9", class: "top-bar__title" }, h("slot", { key: "4d4f70c1a50aede4ef3a63176d714502b074a2cf" })), h("div", { key: "9409800ebaee24e4567de2126c0dd2544e741956", class: "top-bar__search", hidden: !this.hasSearch }, h("slot", { key: "2e66be8358235ae5ef10c7f9a115b08377ece3a7", name: "search", ref: (el) => this.searchSlot = el, onSlotchange: this.syncSlots })), h("div", { key: "e7fa28dddde4f0638a153ad0c8fcc3de94c0ecdc", class: "top-bar__actions", hidden: !this.hasActions }, h("slot", { key: "56c6620da69e2775a8a4d7306bb40b7a6713b100", name: "actions", ref: (el) => this.actionsSlot = el, onSlotchange: this.syncSlots }))));
43
+ return h(Host, { key: "1ef941e211c9536c034a40c0f7a255068595de10" }, h("header", { key: "f1ea465d17753224d72971d26f70b546b93de8ba", class: "top-bar", part: "base" }, h("div", { key: "4eab975109467ad41e16527102b31e6e6d7421c8", class: "top-bar__leading", hidden: !this.hasLeading }, h("slot", { key: "3388d0e2346de4c08d85dd4c3a998e5f668a05f6", name: "leading", ref: (el) => this.leadingSlot = el, onSlotchange: this.syncSlots })), h("div", { key: "7b176d6e82da08eb495f3ca2c83505327c21f525", class: "top-bar__title" }, h("slot", { key: "8196e5489d2f43a72f794aad8ceaa44c358810e9" })), h("div", { key: "2b29c72174559865fb01b99cfab830f74640a8a5", class: "top-bar__search", hidden: !this.hasSearch }, h("slot", { key: "9597fde0cf05821e641471343a38dd3190f1e18f", name: "search", ref: (el) => this.searchSlot = el, onSlotchange: this.syncSlots })), h("div", { key: "1f19003e43fb28ac4ff4debd27e1a0fa9f342275", class: "top-bar__actions", hidden: !this.hasActions }, h("slot", { key: "f6a84824d2806dc16b5fa82cc25dc1247a6a8ad1", name: "actions", ref: (el) => this.actionsSlot = el, onSlotchange: this.syncSlots }))));
44
44
  }
45
45
  };
46
46
  UITopBar.style = uiTopBarCss();
@@ -10,7 +10,7 @@ import {
10
10
  getElement,
11
11
  h,
12
12
  registerInstance
13
- } from "./chunk-G5AWV77V.js";
13
+ } from "./chunk-JXSHRMYW.js";
14
14
 
15
15
  // dist/esm/ui-tree-item.entry.js
16
16
  var uiTreeItemCss = () => `:host{--ui-tree-indent:16px;--ui-tree-row-min-height:32px;--ui-tree-drop-color:var(--ui-accent-solid);position:relative;display:block;min-inline-size:0;margin-inline-start:calc(var(--ui-tree-item-depth, 0) * var(--ui-tree-indent))}.row{position:relative;display:grid;grid-template-columns:20px auto minmax(0, 1fr) auto;align-items:center;min-block-size:var(--ui-tree-row-min-height);min-inline-size:0;font-size:var(--ui-tree-font-size, var(--ui-font-size-ui, 0.9375rem));border-radius:var(--ui-radius-md);color:var(--ui-text-secondary);transition:background-color var(--ui-motion-fast) var(--ui-motion-ease), color var(--ui-motion-fast) var(--ui-motion-ease), opacity var(--ui-motion-fast) var(--ui-motion-ease), box-shadow var(--ui-motion-fast) var(--ui-motion-ease), min-block-size var(--ui-motion-base) var(--ui-motion-ease)}.row:hover,:host([data-selected]) .row,.row:focus-within{color:var(--ui-text-primary);background:var(--ui-surface-muted)}:host([data-disabled]) .row{opacity:0.55}:host([data-dragging]) .row{opacity:0.42}:host(:focus){outline:none}:host(:focus-visible) .row{box-shadow:0 0 0 2px var(--ui-focus-ring)}:host([data-drop-position='inside']) .row{background:var(--ui-accent-subtle);box-shadow:inset 0 0 0 1px var(--ui-tree-drop-color)}.disclosure,.disclosure-spacer{grid-column:1;grid-row:1;inline-size:20px;block-size:28px}.disclosure{display:grid;place-items:center;padding:0;color:var(--ui-text-muted);background:transparent;border:0;border-radius:var(--ui-radius-sm);cursor:pointer}.disclosure:hover{color:var(--ui-text-primary);background:var(--ui-surface-elevated)}.disclosure-icon{display:block;inline-size:14px;block-size:14px;transform:rotate(-90deg);transition:transform var(--ui-motion-fast) var(--ui-motion-ease)}.disclosure-icon--expanded{transform:rotate(0deg)}.disclosure-icon :is(svg),.drag-handle :is(svg){display:block;inline-size:100%;block-size:100%}.leading{display:none}.leading:has(*){display:inline-grid;place-items:center;grid-column:2;grid-row:1;inline-size:16px;block-size:16px;margin-inline-start:var(--ui-space-1)}.label{grid-column:3;grid-row:1;min-inline-size:0;padding:var(--ui-space-1) var(--ui-space-2)}.actions{grid-column:4;grid-row:1;display:inline-flex;align-items:center;min-inline-size:0}.drag-handle{position:absolute;z-index:2;inset-block-start:50%;inset-inline-start:-22px;inline-size:20px;block-size:32px;display:grid;place-items:center;padding:7px 3px;color:var(--ui-text-muted);background:var(--ui-surface-elevated);border:1px solid transparent;border-radius:var(--ui-radius-sm);cursor:grab;opacity:0;pointer-events:none;transform:translateY(-50%);transition:opacity var(--ui-motion-fast) var(--ui-motion-ease)}.row:hover .drag-handle,.drag-handle:focus-visible,:host([data-dragging]) .drag-handle{opacity:1;pointer-events:auto}.drag-handle:active{cursor:grabbing}.drop-indicator{position:absolute;z-index:3;inset-inline:1px;display:none;block-size:2px;border-radius:999px;background:var(--ui-tree-drop-color);pointer-events:none}.drop-indicator::before,.drop-indicator::after{content:'';position:absolute;inset-block-start:50%;inline-size:7px;block-size:7px;border:2px solid var(--ui-tree-drop-color);border-radius:999px;background:var(--ui-surface-elevated);transform:translateY(-50%)}.drop-indicator::before{inset-inline-start:-1px}.drop-indicator::after{inset-inline-end:-1px}:host([data-drop-position='before']) .row-drop-indicator{display:block;inset-block-start:-1px}:host([data-drop-position='after']) .subtree-drop-indicator{display:block;inset-block-end:-1px}.children[hidden]{display:none}:host-context(html[data-ui-input-modality='touch']){--ui-tree-row-min-height:44px}:host-context(html[data-ui-input-modality='touch']) .drag-handle{display:none}@media (prefers-reduced-motion: reduce){.row,.disclosure-icon,.drag-handle{transition:none}}`;
@@ -126,10 +126,10 @@ var UITreeItem = class {
126
126
  const expanded = this.isExpanded();
127
127
  const disclosureLabel = `${expanded ? "Collapse" : "Expand"} ${this.label || "item"}`;
128
128
  const dragLabel = `Drag ${this.label || "item"} to reorder`;
129
- return h(Host, { key: "4a42d3c93b49ad82ae87496defe22f4abde13819", role: "treeitem", "aria-label": this.label || void 0, "aria-level": String(level), "aria-expanded": this.container ? String(expanded) : void 0, "aria-selected": String(this.selected), "aria-disabled": this.disabled ? "true" : void 0, "data-container": this.container ? "" : void 0, "data-selected": this.selected ? "" : void 0, "data-disabled": this.disabled ? "" : void 0, "data-drag-type": this.dragType || "item", "data-drop-scope": this.dropScope || void 0, "data-accepts": this.accepts || void 0, tabIndex: this.disabled || !this.tabStop ? -1 : 0, style: {
129
+ return h(Host, { key: "0ce6384903be2181055c76808cd4664dcfa8de54", role: "treeitem", "aria-label": this.label || void 0, "aria-level": String(level), "aria-expanded": this.container ? String(expanded) : void 0, "aria-selected": String(this.selected), "aria-disabled": this.disabled ? "true" : void 0, "data-container": this.container ? "" : void 0, "data-selected": this.selected ? "" : void 0, "data-disabled": this.disabled ? "" : void 0, "data-drag-type": this.dragType || "item", "data-drop-scope": this.dropScope || void 0, "data-accepts": this.accepts || void 0, tabIndex: this.disabled || !this.tabStop ? -1 : 0, style: {
130
130
  "--ui-tree-item-depth": String(level - 1),
131
131
  "margin-inline-start": level > 1 ? "var(--ui-tree-indent, 16px)" : "0px"
132
- } }, h("div", { key: "9b62f172b2c0a80925404aee13895b3342d7dcb6", class: "row", part: "row", onClick: this.onRowClick }, this.sortable && !this.disabled ? h("button", { class: "drag-handle", part: "drag-handle", type: "button", draggable: true, "aria-label": dragLabel, title: dragLabel }, h("span", { innerHTML: loomaIconMarkup("grip-vertical") })) : null, this.container ? h("button", { class: "disclosure", part: "disclosure", type: "button", "aria-label": disclosureLabel, "aria-expanded": String(expanded), disabled: this.disabled, onClick: this.onDisclosureClick, onKeyDown: this.onDisclosureKeydown }, h("span", { class: { "disclosure-icon": true, "disclosure-icon--expanded": expanded }, innerHTML: loomaIconMarkup("chevron-down") })) : h("span", { class: "disclosure-spacer", "aria-hidden": "true" }), h("span", { key: "fe2e301bf43f1fdb524a004960855f63d05ce138", class: "leading", part: "leading" }, h("slot", { key: "6f569883ead32dff5340b1c1da74dc8fdade49e6", name: "leading" })), h("span", { key: "942e3bb0b6b4021166916777ab18dc868c39fbdc", class: "label", part: "label" }, h("slot", { key: "42b9d9f42fd7aaad35ed7091c39953710ebf5a58" })), h("span", { key: "8483a822895220d2bb2aa2cb0a45cd296062cae9", class: "actions", part: "actions" }, h("slot", { key: "dae2b38eef43a061f40a7498d8f28e703e5468e3", name: "actions" })), h("span", { key: "0a9b7db9ab5e9a709f9f0a3a8d77bd1c044295c4", class: "drop-indicator row-drop-indicator", part: "drop-indicator", "aria-hidden": "true" })), this.container ? h("div", { class: "children", part: "children", role: "group", hidden: !expanded }, h("slot", { name: "children" })) : null, h("span", { key: "641be80771d73d2c7193f2c762db1d0fe5c79e5d", class: "drop-indicator subtree-drop-indicator", part: "drop-indicator", "aria-hidden": "true" }));
132
+ } }, h("div", { key: "7d6923da8fd8be7fffc7cf345ac4d1211217c21a", class: "row", part: "row", onClick: this.onRowClick }, this.sortable && !this.disabled ? h("button", { class: "drag-handle", part: "drag-handle", type: "button", draggable: true, "aria-label": dragLabel, title: dragLabel }, h("span", { innerHTML: loomaIconMarkup("grip-vertical") })) : null, this.container ? h("button", { class: "disclosure", part: "disclosure", type: "button", "aria-label": disclosureLabel, "aria-expanded": String(expanded), disabled: this.disabled, onClick: this.onDisclosureClick, onKeyDown: this.onDisclosureKeydown }, h("span", { class: { "disclosure-icon": true, "disclosure-icon--expanded": expanded }, innerHTML: loomaIconMarkup("chevron-down") })) : h("span", { class: "disclosure-spacer", "aria-hidden": "true" }), h("span", { key: "ef8959fc858b90c7ea26c8ff740cfe02fb372686", class: "leading", part: "leading" }, h("slot", { key: "1e00da2acd23ae6430e38b26502d9f3951461c93", name: "leading" })), h("span", { key: "f37a63aa0c6e73f134442589314fae01e01cf782", class: "label", part: "label" }, h("slot", { key: "f527d8a33927d72502d5cbbbe0cb5739d7bdbaf2" })), h("span", { key: "de6492f81ac5747d913132c275abb9157d18deab", class: "actions", part: "actions" }, h("slot", { key: "f5316e3a5fb67130ef1401253dc5ef6b7072840e", name: "actions" })), h("span", { key: "89da3b2bab7a953368810319148a644e62bc9a47", class: "drop-indicator row-drop-indicator", part: "drop-indicator", "aria-hidden": "true" })), this.container ? h("div", { class: "children", part: "children", role: "group", hidden: !expanded }, h("slot", { name: "children" })) : null, h("span", { key: "9a66f1ba72290a037ef02ccbd49243463ba34b67", class: "drop-indicator subtree-drop-indicator", part: "drop-indicator", "aria-hidden": "true" }));
133
133
  }
134
134
  static get watchers() {
135
135
  return {
@@ -6,7 +6,7 @@ import {
6
6
  getElement,
7
7
  h,
8
8
  registerInstance
9
- } from "./chunk-G5AWV77V.js";
9
+ } from "./chunk-JXSHRMYW.js";
10
10
 
11
11
  // dist/esm/ui-tree.entry.js
12
12
  function classifyDropPosition(rect, clientY, acceptsChildren) {
@@ -461,7 +461,7 @@ var UITree = class {
461
461
  }
462
462
  };
463
463
  render() {
464
- return h(Host, { key: "81fe656b4a7cdf8683f53aeee94fb53838950383", role: "tree", "aria-label": this.label || "Tree" }, h("slot", { key: "941204b299eec2181228f536c017a17f026b2f3d" }));
464
+ return h(Host, { key: "bae06665078a67c59db2d9e72c7dea6ddeeb9e56", role: "tree", "aria-label": this.label || "Tree" }, h("slot", { key: "232cb02f1a50bc5e18a92c0d8677e917870ec75e" }));
465
465
  }
466
466
  };
467
467
  UITree.style = uiTreeCss();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@threadlabs/looma",
3
- "version": "0.1.28",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
5
  "description": "Looma web components, responsive layout primitives, a complete editor, and supported Vue adapters.",
6
6
  "license": "MIT",
@@ -95,13 +95,13 @@ function createAdapterComponent(tagName, displayName, additionalEventBindings =
95
95
  }
96
96
 
97
97
  // src/Combobox.ts
98
- import { defineComponent as defineComponent2, h as h2, shallowRef as shallowRef2, watchEffect as watchEffect2 } from "vue";
98
+ import { defineComponent as defineComponent2, h as h2, shallowRef as shallowRef2, watch, watchEffect as watchEffect2 } from "vue";
99
99
  var Combobox = defineComponent2({
100
100
  name: "Combobox",
101
101
  inheritAttrs: false,
102
102
  props: {
103
103
  label: { type: String, required: true },
104
- modelValue: { type: String, default: void 0 },
104
+ modelValue: { type: [String, Array, null], default: void 0 },
105
105
  query: { type: String, default: void 0 },
106
106
  defaultValue: String,
107
107
  defaultQuery: String,
@@ -115,9 +115,14 @@ var Combobox = defineComponent2({
115
115
  required: Boolean,
116
116
  disclosure: Boolean,
117
117
  clearable: Boolean,
118
- help: String
118
+ help: String,
119
+ // Multiple mode: `modelValue` holds the selected item list and chips render before the cursor.
120
+ multiple: Boolean,
121
+ tokenSeparators: { type: Array, default: () => [] }
119
122
  },
120
123
  emits: {
124
+ // Typed for single mode (v-model of `string | null`); multiple mode writes the
125
+ // item array through the same channel (cast at the emit site below).
121
126
  "update:modelValue": (_value) => true,
122
127
  "update:query": (_query) => true,
123
128
  queryChange: (_detail) => true,
@@ -125,139 +130,79 @@ var Combobox = defineComponent2({
125
130
  freeEntry: (_detail) => true,
126
131
  createEntry: (_detail) => true,
127
132
  dependencyInvalidate: (_detail) => true,
128
- validationChange: (_detail) => true
133
+ validationChange: (_detail) => true,
134
+ // Multiple mode item events.
135
+ addItem: (_detail) => true,
136
+ removeItem: (_detail) => true,
137
+ createItem: (_detail) => true,
138
+ optionsChange: (_detail) => true
129
139
  },
130
140
  slots: Object,
131
141
  setup(props, { attrs, slots, emit, expose }) {
132
142
  const element = shallowRef2();
133
143
  const rows = shallowRef2(props.config.options ?? []);
144
+ const currentQuery = shallowRef2(props.query ?? props.defaultQuery ?? "");
145
+ watch(() => props.query, (query) => {
146
+ if (query !== void 0) currentQuery.value = query;
147
+ });
134
148
  watchEffect2(() => {
135
149
  if (!element.value) return;
136
150
  element.value.config = props.config;
137
151
  element.value.value = props.modelValue;
138
152
  element.value.query = props.query;
153
+ element.value.multiple = props.multiple;
154
+ element.value.tokenSeparators = props.tokenSeparators;
139
155
  });
140
156
  expose({ validate: () => element.value.validate() });
157
+ const items = () => props.multiple && Array.isArray(props.modelValue) ? props.modelValue : [];
141
158
  return () => h2("ui-combobox", {
142
159
  ...attrs,
143
- ...Object.fromEntries(Object.entries(props).filter(([key]) => !["modelValue", "config", "query"].includes(key))),
160
+ ...Object.fromEntries(Object.entries(props).filter(([key]) => !["modelValue", "config", "query", "tokenSeparators"].includes(key))),
144
161
  // Property binding is explicit for non-serializable config; strings remain
145
162
  // SSR-compatible attributes until the element upgrades.
146
163
  value: props.modelValue,
147
164
  query: props.query,
165
+ tokenSeparators: props.tokenSeparators,
148
166
  "data-allow-mismatch": "class",
149
167
  ref: element,
150
168
  class: [attrs.class, element.value?.shadowRoot && "hydrated"],
151
169
  "onOptions-change": (event) => {
152
170
  rows.value = event.detail;
171
+ emit("optionsChange", event.detail);
153
172
  },
154
173
  "onQuery-change": (event) => {
174
+ currentQuery.value = event.detail.query;
155
175
  emit("update:query", event.detail.query);
156
176
  emit("queryChange", event.detail);
157
177
  },
158
178
  "onValue-change": (event) => {
159
- emit("update:modelValue", event.detail.value);
179
+ emit("update:modelValue", props.multiple ? event.detail : event.detail.value);
160
180
  emit("valueChange", event.detail);
161
181
  },
162
182
  "onFree-entry": (event) => emit("freeEntry", event.detail),
163
183
  "onCreate-entry": (event) => emit("createEntry", event.detail),
164
184
  "onDependency-invalidate": (event) => emit("dependencyInvalidate", event.detail),
165
- "onValidation-change": (event) => emit("validationChange", event.detail)
166
- }, [
167
- h2("label", { slot: "fallback" }, [props.label, h2("input", {
168
- value: props.query ?? props.defaultQuery ?? "",
169
- disabled: props.disabled,
170
- readonly: props.readOnly,
171
- required: props.required
172
- })]),
173
- ...slots.option ? rows.value.map((option) => h2("div", { slot: `option-${option.id}`, key: option.id }, slots.option({ option }))) : [],
174
- ...["start", "footer", "loading", "empty", "error", "create"].flatMap((name) => slots[name] ? [h2("div", { slot: name }, slots[name]({}))] : [])
175
- ]);
176
- }
177
- });
178
-
179
- // src/MultiCombobox.ts
180
- import { defineComponent as defineComponent3, h as h3, shallowRef as shallowRef3, watch, watchEffect as watchEffect3 } from "vue";
181
- var MultiCombobox = defineComponent3({
182
- name: "MultiCombobox",
183
- inheritAttrs: false,
184
- props: {
185
- label: { type: String, required: true },
186
- items: { type: Array, default: () => [] },
187
- config: { type: Object, default: () => ({}) },
188
- query: { type: String, default: void 0 },
189
- defaultQuery: String,
190
- tokenSeparators: { type: Array, default: () => [] },
191
- placeholder: String,
192
- name: String,
193
- disabled: Boolean,
194
- readOnly: Boolean,
195
- required: Boolean
196
- },
197
- emits: {
198
- "update:query": (_query) => true,
199
- queryChange: (_detail) => true,
200
- addItem: (_detail) => true,
201
- removeItem: (_detail) => true,
202
- createItem: (_detail) => true,
203
- optionsChange: (_detail) => true
204
- },
205
- slots: Object,
206
- setup(props, { attrs, slots, emit, expose }) {
207
- const element = shallowRef3();
208
- const rows = shallowRef3(props.config.options ?? []);
209
- const currentQuery = shallowRef3(props.query ?? props.defaultQuery ?? "");
210
- watch(() => props.query, (query) => {
211
- if (query !== void 0) currentQuery.value = query;
212
- });
213
- watchEffect3(() => {
214
- if (!element.value) return;
215
- element.value.items = props.items;
216
- element.value.config = props.config;
217
- element.value.query = props.query;
218
- element.value.tokenSeparators = props.tokenSeparators;
219
- });
220
- expose({ focusInput: () => element.value.focusInput() });
221
- return () => h3("ui-multi-combobox", {
222
- ...attrs,
223
- ...Object.fromEntries(Object.entries(props).filter(([key]) => !["items", "config", "query", "tokenSeparators"].includes(key))),
224
- items: props.items,
225
- config: props.config,
226
- query: props.query,
227
- tokenSeparators: props.tokenSeparators,
228
- "data-allow-mismatch": "class",
229
- ref: element,
230
- class: [attrs.class, element.value?.shadowRoot && "hydrated"],
231
- "onOptions-change": (event) => {
232
- rows.value = event.detail;
233
- emit("optionsChange", event.detail);
234
- },
235
- "onQuery-change": (event) => {
236
- currentQuery.value = event.detail.query;
237
- emit("update:query", event.detail.query);
238
- emit("queryChange", event.detail);
239
- },
185
+ "onValidation-change": (event) => emit("validationChange", event.detail),
240
186
  "onAdd-item": (event) => emit("addItem", event.detail),
241
187
  "onRemove-item": (event) => emit("removeItem", event.detail),
242
188
  "onCreate-item": (event) => emit("createItem", event.detail)
243
189
  }, [
244
- h3("label", { slot: "fallback" }, [props.label, h3("input", {
190
+ h2("label", { slot: "fallback" }, [props.label, h2("input", {
245
191
  value: props.query ?? props.defaultQuery ?? "",
246
192
  disabled: props.disabled,
247
193
  readonly: props.readOnly,
248
194
  required: props.required
249
195
  })]),
250
- ...slots.item ? props.items.map((item) => h3("span", { slot: `item-${item.id}`, key: item.id }, slots.item({ item }))) : [],
251
- ...slots.option ? rows.value.map((option) => h3("span", { slot: `option-${option.id}`, key: option.id }, slots.option({ option }))) : [],
252
- ...slots.create ? [h3("span", { slot: "create" }, slots.create({ query: currentQuery.value }))] : [],
253
- ...["footer", "loading", "empty", "error"].flatMap((name) => slots[name] ? [h3("div", { slot: name }, slots[name]({}))] : [])
196
+ ...slots.option ? rows.value.map((option) => h2("div", { slot: `option-${option.id}`, key: option.id }, slots.option({ option }))) : [],
197
+ ...props.multiple && slots.item ? items().map((item) => h2("span", { slot: `item-${item.id}`, key: item.id }, slots.item({ item }))) : [],
198
+ ...slots.create ? [h2("span", { slot: "create" }, slots.create({ query: currentQuery.value }))] : [],
199
+ ...["start", "footer", "loading", "empty", "error"].flatMap((name) => slots[name] ? [h2("div", { slot: name }, slots[name]({}))] : [])
254
200
  ]);
255
201
  }
256
202
  });
257
203
 
258
204
  // src/index.ts
259
205
  var Combobox2 = Combobox;
260
- var MultiCombobox2 = MultiCombobox;
261
206
  var Stack = createAdapterComponent("ui-stack", "Stack");
262
207
  var Inline = createAdapterComponent("ui-inline", "Inline");
263
208
  var Cluster = createAdapterComponent("ui-cluster", "Cluster");
@@ -313,7 +258,6 @@ var TreeItem = createAdapterComponent(
313
258
  );
314
259
  var ADAPTER_COMPONENT_TAG_MAP = {
315
260
  Combobox: "ui-combobox",
316
- MultiCombobox: "ui-multi-combobox",
317
261
  Stack: "ui-stack",
318
262
  Inline: "ui-inline",
319
263
  Cluster: "ui-cluster",
@@ -362,7 +306,6 @@ export {
362
306
  toHTMLElement,
363
307
  createAdapterComponent,
364
308
  Combobox2 as Combobox,
365
- MultiCombobox2 as MultiCombobox,
366
309
  Stack,
367
310
  Inline,
368
311
  Cluster,
@@ -3,7 +3,7 @@ import {
3
3
  Popover,
4
4
  createAdapterComponent,
5
5
  toHTMLElement
6
- } from "../chunk-2DDIBSFD.js";
6
+ } from "../chunk-ROMBQS2L.js";
7
7
 
8
8
  // src/editor/index.ts
9
9
  import "@threadlabs/looma/editor";