@threadlabs/looma 0.5.1 → 0.6.0-rc.1

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 (341) hide show
  1. package/README.md +1 -1
  2. package/components/shared/overlay.js +3 -0
  3. package/components/ui-button/ui-button.html +27 -14
  4. package/components/ui-callout/ui-callout.html +1 -1
  5. package/components/ui-checkbox/ui-checkbox.html +1 -1
  6. package/components/ui-cluster/ui-cluster.html +6 -6
  7. package/components/ui-combobox/ui-combobox.html +35 -27
  8. package/components/ui-container/ui-container.html +4 -4
  9. package/components/ui-context-menu/ui-context-menu.html +2 -2
  10. package/components/ui-dialog/ui-dialog.html +21 -8
  11. package/components/ui-disclosure/ui-disclosure.html +19 -4
  12. package/components/ui-editable/ui-editable.html +6 -6
  13. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +21 -21
  14. package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +26 -26
  15. package/components/ui-editor-slash-menu/ui-editor-slash-menu.html +39 -39
  16. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +26 -22
  17. package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +68 -52
  18. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +42 -38
  19. package/components/ui-editor-toolbar/ui-editor-toolbar.html +9 -9
  20. package/components/ui-floating-action-button/ui-floating-action-button.html +16 -22
  21. package/components/ui-form-field/ui-form-field.html +18 -7
  22. package/components/ui-grid/ui-grid.html +6 -6
  23. package/components/ui-icon/ui-icon.html +5 -1
  24. package/components/ui-icon-button/ui-icon-button.html +68 -34
  25. package/components/ui-input/ui-input.html +2 -2
  26. package/components/ui-menu/ui-menu.html +15 -4
  27. package/components/ui-menu-item/ui-menu-item.html +5 -5
  28. package/components/ui-popover/ui-popover.html +3 -3
  29. package/components/ui-popover/ui-popover.js +10 -2
  30. package/components/ui-reel/ui-reel.html +6 -6
  31. package/components/ui-search-result-row/ui-search-result-row.html +9 -9
  32. package/components/ui-search-shell/ui-search-shell.html +10 -3
  33. package/components/ui-search-shell/ui-search-shell.js +9 -0
  34. package/components/ui-select/ui-select.html +2 -2
  35. package/components/ui-sidebar/ui-sidebar.html +11 -11
  36. package/components/ui-stack/ui-stack.html +6 -6
  37. package/components/ui-switcher/ui-switcher.html +6 -6
  38. package/components/ui-tabs/ui-tabs.html +19 -5
  39. package/components/ui-textarea/ui-textarea.html +2 -2
  40. package/components/ui-toast-region/ui-toast-region.html +3 -3
  41. package/components/ui-tooltip/ui-tooltip.html +1 -1
  42. package/components/ui-top-bar/ui-top-bar.html +5 -5
  43. package/components/ui-tree/ui-tree.html +7 -0
  44. package/components/ui-tree-item/ui-tree-item.html +20 -7
  45. package/dist/index.d.ts +1 -1
  46. package/dist/index.js +2 -2
  47. package/package.json +2 -2
  48. package/styles/ui-affordance-scope.css +1 -1
  49. package/styles/ui-avatar-group.css +1 -1
  50. package/styles/ui-avatar.css +1 -1
  51. package/styles/ui-badge.css +1 -1
  52. package/styles/ui-button.css +25 -15
  53. package/styles/ui-callout.css +2 -2
  54. package/styles/ui-checkbox.css +2 -2
  55. package/styles/ui-cluster.css +7 -7
  56. package/styles/ui-combobox.css +24 -24
  57. package/styles/ui-container.css +5 -5
  58. package/styles/ui-context-menu.css +3 -3
  59. package/styles/ui-dialog.css +26 -9
  60. package/styles/ui-disclosure.css +23 -7
  61. package/styles/ui-editable.css +7 -7
  62. package/styles/ui-editor-insert-table-grid.css +21 -21
  63. package/styles/ui-editor-mention-menu.css +26 -26
  64. package/styles/ui-editor-slash-menu.css +40 -40
  65. package/styles/ui-editor-table-context-menu.css +21 -21
  66. package/styles/ui-editor-table-overlay.css +49 -49
  67. package/styles/ui-editor-table-toolbar.css +35 -35
  68. package/styles/ui-editor-toolbar.css +10 -10
  69. package/styles/ui-floating-action-button.css +17 -23
  70. package/styles/ui-form-field.css +24 -10
  71. package/styles/ui-grid.css +7 -7
  72. package/styles/ui-icon-button.css +74 -35
  73. package/styles/ui-icon.css +1 -1
  74. package/styles/ui-input.css +3 -3
  75. package/styles/ui-menu-item.css +6 -6
  76. package/styles/ui-menu.css +19 -7
  77. package/styles/ui-popover.css +4 -4
  78. package/styles/ui-radio-group.css +1 -1
  79. package/styles/ui-radio.css +1 -1
  80. package/styles/ui-reel.css +7 -7
  81. package/styles/ui-search-result-row.css +10 -10
  82. package/styles/ui-search-shell.css +14 -5
  83. package/styles/ui-select.css +3 -3
  84. package/styles/ui-separator.css +1 -1
  85. package/styles/ui-sidebar.css +12 -12
  86. package/styles/ui-stack.css +7 -7
  87. package/styles/ui-switch.css +1 -1
  88. package/styles/ui-switcher.css +7 -7
  89. package/styles/ui-tabs.css +21 -7
  90. package/styles/ui-textarea.css +3 -3
  91. package/styles/ui-toast-region.css +3 -3
  92. package/styles/ui-tooltip.css +2 -2
  93. package/styles/ui-top-bar.css +6 -6
  94. package/styles/ui-tree-item.css +30 -9
  95. package/styles/ui-tree.css +8 -2
  96. package/theme-dark.css +42 -103
  97. package/theme-high-contrast.css +18 -22
  98. package/theme-light.css +15 -41
  99. package/tokens.css +149 -201
  100. package/vanilla/UiAffordanceScope.d.ts +1 -1
  101. package/vanilla/UiAffordanceScope.js +2 -2
  102. package/vanilla/UiAvatar.d.ts +1 -1
  103. package/vanilla/UiAvatar.js +2 -2
  104. package/vanilla/UiAvatarGroup.d.ts +1 -1
  105. package/vanilla/UiAvatarGroup.js +2 -2
  106. package/vanilla/UiBadge.d.ts +1 -1
  107. package/vanilla/UiBadge.js +2 -2
  108. package/vanilla/UiButton.d.ts +3 -1
  109. package/vanilla/UiButton.js +3 -3
  110. package/vanilla/UiCallout.d.ts +1 -1
  111. package/vanilla/UiCallout.js +2 -2
  112. package/vanilla/UiCheckbox.d.ts +1 -1
  113. package/vanilla/UiCheckbox.js +2 -2
  114. package/vanilla/UiCluster.d.ts +1 -1
  115. package/vanilla/UiCluster.js +2 -2
  116. package/vanilla/UiCombobox.d.ts +1 -1
  117. package/vanilla/UiCombobox.js +3 -3
  118. package/vanilla/UiContainer.d.ts +1 -1
  119. package/vanilla/UiContainer.js +2 -2
  120. package/vanilla/UiContextMenu.d.ts +1 -1
  121. package/vanilla/UiContextMenu.js +2 -2
  122. package/vanilla/UiDialog.d.ts +1 -1
  123. package/vanilla/UiDialog.js +2 -2
  124. package/vanilla/UiDisclosure.d.ts +2 -1
  125. package/vanilla/UiDisclosure.js +3 -3
  126. package/vanilla/UiEditable.d.ts +1 -1
  127. package/vanilla/UiEditable.js +2 -2
  128. package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
  129. package/vanilla/UiEditorInsertTableGrid.js +3 -3
  130. package/vanilla/UiEditorMentionMenu.d.ts +1 -1
  131. package/vanilla/UiEditorMentionMenu.js +3 -3
  132. package/vanilla/UiEditorSlashMenu.d.ts +1 -1
  133. package/vanilla/UiEditorSlashMenu.js +2 -2
  134. package/vanilla/UiEditorTableContextMenu.d.ts +1 -1
  135. package/vanilla/UiEditorTableContextMenu.js +3 -3
  136. package/vanilla/UiEditorTableOverlay.d.ts +1 -1
  137. package/vanilla/UiEditorTableOverlay.js +3 -3
  138. package/vanilla/UiEditorTableToolbar.d.ts +1 -1
  139. package/vanilla/UiEditorTableToolbar.js +3 -3
  140. package/vanilla/UiEditorToolbar.d.ts +1 -1
  141. package/vanilla/UiEditorToolbar.js +2 -2
  142. package/vanilla/UiFloatingActionButton.d.ts +1 -1
  143. package/vanilla/UiFloatingActionButton.js +2 -2
  144. package/vanilla/UiFormField.d.ts +1 -1
  145. package/vanilla/UiFormField.js +15 -6
  146. package/vanilla/UiGrid.d.ts +1 -1
  147. package/vanilla/UiGrid.js +2 -2
  148. package/vanilla/UiIcon.d.ts +1 -1
  149. package/vanilla/UiIcon.js +3 -3
  150. package/vanilla/UiIconButton.d.ts +1 -1
  151. package/vanilla/UiIconButton.js +2 -2
  152. package/vanilla/UiInput.d.ts +1 -1
  153. package/vanilla/UiInput.js +2 -2
  154. package/vanilla/UiMenu.d.ts +2 -1
  155. package/vanilla/UiMenu.js +3 -3
  156. package/vanilla/UiMenuItem.d.ts +1 -1
  157. package/vanilla/UiMenuItem.js +2 -2
  158. package/vanilla/UiPopover.d.ts +1 -1
  159. package/vanilla/UiPopover.js +2 -2
  160. package/vanilla/UiRadio.d.ts +1 -1
  161. package/vanilla/UiRadio.js +2 -2
  162. package/vanilla/UiRadioGroup.d.ts +1 -1
  163. package/vanilla/UiRadioGroup.js +2 -2
  164. package/vanilla/UiReel.d.ts +1 -1
  165. package/vanilla/UiReel.js +2 -2
  166. package/vanilla/UiSearchResultRow.d.ts +1 -1
  167. package/vanilla/UiSearchResultRow.js +2 -2
  168. package/vanilla/UiSearchShell.d.ts +1 -1
  169. package/vanilla/UiSearchShell.js +2 -2
  170. package/vanilla/UiSelect.d.ts +1 -1
  171. package/vanilla/UiSelect.js +2 -2
  172. package/vanilla/UiSeparator.d.ts +1 -1
  173. package/vanilla/UiSeparator.js +2 -2
  174. package/vanilla/UiSidebar.d.ts +1 -1
  175. package/vanilla/UiSidebar.js +2 -2
  176. package/vanilla/UiStack.d.ts +1 -1
  177. package/vanilla/UiStack.js +2 -2
  178. package/vanilla/UiSwitch.d.ts +1 -1
  179. package/vanilla/UiSwitch.js +2 -2
  180. package/vanilla/UiSwitcher.d.ts +1 -1
  181. package/vanilla/UiSwitcher.js +2 -2
  182. package/vanilla/UiTabs.d.ts +2 -1
  183. package/vanilla/UiTabs.js +3 -3
  184. package/vanilla/UiTextarea.d.ts +1 -1
  185. package/vanilla/UiTextarea.js +2 -2
  186. package/vanilla/UiToastRegion.d.ts +1 -1
  187. package/vanilla/UiToastRegion.js +3 -3
  188. package/vanilla/UiTooltip.d.ts +1 -1
  189. package/vanilla/UiTooltip.js +2 -2
  190. package/vanilla/UiTopBar.d.ts +1 -1
  191. package/vanilla/UiTopBar.js +1 -1
  192. package/vanilla/UiTree.d.ts +2 -1
  193. package/vanilla/UiTree.js +3 -3
  194. package/vanilla/UiTreeItem.d.ts +1 -1
  195. package/vanilla/UiTreeItem.js +2 -2
  196. package/vue/UiAffordanceScope.d.ts +2 -2
  197. package/vue/UiAffordanceScope.vue +92 -73
  198. package/vue/UiAvatar.d.ts +7 -7
  199. package/vue/UiAvatar.vue +145 -105
  200. package/vue/UiAvatarGroup.d.ts +4 -4
  201. package/vue/UiAvatarGroup.vue +134 -118
  202. package/vue/UiBadge.d.ts +4 -4
  203. package/vue/UiBadge.vue +113 -114
  204. package/vue/UiButton.d.ts +10 -6
  205. package/vue/UiButton.vue +295 -248
  206. package/vue/UiCallout.d.ts +2 -2
  207. package/vue/UiCallout.vue +154 -87
  208. package/vue/UiCheckbox.d.ts +14 -10
  209. package/vue/UiCheckbox.vue +228 -162
  210. package/vue/UiCluster.d.ts +2 -2
  211. package/vue/UiCluster.vue +53 -60
  212. package/vue/UiCombobox.d.ts +36 -32
  213. package/vue/UiCombobox.vue +1005 -416
  214. package/vue/UiContainer.d.ts +2 -2
  215. package/vue/UiContainer.vue +48 -51
  216. package/vue/UiContextMenu.d.ts +6 -4
  217. package/vue/UiContextMenu.vue +205 -116
  218. package/vue/UiDialog.d.ts +11 -9
  219. package/vue/UiDialog.vue +287 -212
  220. package/vue/UiDisclosure.d.ts +10 -6
  221. package/vue/UiDisclosure.vue +265 -159
  222. package/vue/UiEditable.d.ts +16 -12
  223. package/vue/UiEditable.vue +325 -205
  224. package/vue/UiEditorInsertTableGrid.d.ts +8 -8
  225. package/vue/UiEditorInsertTableGrid.vue +216 -157
  226. package/vue/UiEditorMentionMenu.d.ts +9 -9
  227. package/vue/UiEditorMentionMenu.vue +265 -222
  228. package/vue/UiEditorSlashMenu.d.ts +7 -7
  229. package/vue/UiEditorSlashMenu.vue +286 -240
  230. package/vue/UiEditorTableContextMenu.d.ts +5 -5
  231. package/vue/UiEditorTableContextMenu.vue +306 -193
  232. package/vue/UiEditorTableOverlay.d.ts +2 -2
  233. package/vue/UiEditorTableOverlay.vue +600 -369
  234. package/vue/UiEditorTableToolbar.d.ts +7 -7
  235. package/vue/UiEditorTableToolbar.vue +443 -268
  236. package/vue/UiEditorToolbar.d.ts +2 -2
  237. package/vue/UiEditorToolbar.vue +134 -121
  238. package/vue/UiFloatingActionButton.d.ts +6 -6
  239. package/vue/UiFloatingActionButton.vue +95 -99
  240. package/vue/UiFormField.d.ts +6 -6
  241. package/vue/UiFormField.vue +112 -80
  242. package/vue/UiGrid.d.ts +2 -2
  243. package/vue/UiGrid.vue +51 -57
  244. package/vue/UiIcon.d.ts +2 -2
  245. package/vue/UiIcon.vue +118 -89
  246. package/vue/UiIconButton.d.ts +11 -11
  247. package/vue/UiIconButton.vue +287 -217
  248. package/vue/UiInput.d.ts +9 -9
  249. package/vue/UiInput.vue +153 -127
  250. package/vue/UiMenu.d.ts +10 -6
  251. package/vue/UiMenu.vue +227 -143
  252. package/vue/UiMenuItem.d.ts +4 -4
  253. package/vue/UiMenuItem.vue +53 -46
  254. package/vue/UiPopover.d.ts +8 -6
  255. package/vue/UiPopover.vue +197 -137
  256. package/vue/UiRadio.d.ts +14 -10
  257. package/vue/UiRadio.vue +183 -117
  258. package/vue/UiRadioGroup.d.ts +14 -12
  259. package/vue/UiRadioGroup.vue +172 -111
  260. package/vue/UiReel.d.ts +3 -3
  261. package/vue/UiReel.vue +77 -77
  262. package/vue/UiSearchResultRow.d.ts +4 -4
  263. package/vue/UiSearchResultRow.vue +121 -115
  264. package/vue/UiSearchShell.d.ts +10 -8
  265. package/vue/UiSearchShell.vue +245 -176
  266. package/vue/UiSelect.d.ts +9 -9
  267. package/vue/UiSelect.vue +162 -134
  268. package/vue/UiSeparator.d.ts +2 -2
  269. package/vue/UiSeparator.vue +22 -27
  270. package/vue/UiSidebar.d.ts +20 -18
  271. package/vue/UiSidebar.vue +307 -224
  272. package/vue/UiStack.d.ts +3 -3
  273. package/vue/UiStack.vue +64 -70
  274. package/vue/UiSwitch.d.ts +12 -8
  275. package/vue/UiSwitch.vue +218 -150
  276. package/vue/UiSwitcher.d.ts +3 -3
  277. package/vue/UiSwitcher.vue +73 -75
  278. package/vue/UiTabs.d.ts +12 -8
  279. package/vue/UiTabs.vue +268 -210
  280. package/vue/UiTextarea.d.ts +11 -11
  281. package/vue/UiTextarea.vue +155 -128
  282. package/vue/UiToastRegion.d.ts +10 -8
  283. package/vue/UiToastRegion.vue +261 -198
  284. package/vue/UiTooltip.d.ts +14 -12
  285. package/vue/UiTooltip.vue +241 -177
  286. package/vue/UiTopBar.vue +51 -42
  287. package/vue/UiTree.d.ts +10 -6
  288. package/vue/UiTree.vue +180 -70
  289. package/vue/UiTreeItem.d.ts +24 -22
  290. package/vue/UiTreeItem.vue +464 -339
  291. package/vue/chunks/UiAffordanceScope.js +9 -16
  292. package/vue/chunks/UiAvatar.js +23 -29
  293. package/vue/chunks/UiAvatarGroup.js +16 -39
  294. package/vue/chunks/UiBadge.js +3 -12
  295. package/vue/chunks/UiButton.js +15 -18
  296. package/vue/chunks/UiCallout.js +8 -17
  297. package/vue/chunks/UiCheckbox.js +37 -40
  298. package/vue/chunks/UiCluster.js +3 -12
  299. package/vue/chunks/UiCombobox.js +224 -266
  300. package/vue/chunks/UiContainer.js +3 -12
  301. package/vue/chunks/UiContextMenu.js +39 -34
  302. package/vue/chunks/UiDialog.js +36 -39
  303. package/vue/chunks/UiDisclosure.js +44 -48
  304. package/vue/chunks/UiEditable.js +55 -57
  305. package/vue/chunks/UiEditorInsertTableGrid.js +55 -73
  306. package/vue/chunks/UiEditorMentionMenu.js +40 -81
  307. package/vue/chunks/UiEditorSlashMenu.js +28 -52
  308. package/vue/chunks/UiEditorTableContextMenu.js +32 -56
  309. package/vue/chunks/UiEditorTableOverlay.js +58 -82
  310. package/vue/chunks/UiEditorTableToolbar.js +61 -85
  311. package/vue/chunks/UiEditorToolbar.js +4 -13
  312. package/vue/chunks/UiFloatingActionButton.js +7 -21
  313. package/vue/chunks/UiFormField.js +15 -12
  314. package/vue/chunks/UiGrid.js +3 -12
  315. package/vue/chunks/UiIcon.js +20 -43
  316. package/vue/chunks/UiIconButton.js +16 -28
  317. package/vue/chunks/UiInput.js +20 -25
  318. package/vue/chunks/UiMenu.js +30 -33
  319. package/vue/chunks/UiMenuItem.js +4 -10
  320. package/vue/chunks/UiPopover.js +28 -29
  321. package/vue/chunks/UiRadio.js +36 -39
  322. package/vue/chunks/UiRadioGroup.js +30 -34
  323. package/vue/chunks/UiReel.js +6 -15
  324. package/vue/chunks/UiSearchResultRow.js +6 -19
  325. package/vue/chunks/UiSearchShell.js +25 -28
  326. package/vue/chunks/UiSelect.js +20 -23
  327. package/vue/chunks/UiSeparator.js +2 -8
  328. package/vue/chunks/UiSidebar.js +39 -44
  329. package/vue/chunks/UiStack.js +6 -15
  330. package/vue/chunks/UiSwitch.js +35 -38
  331. package/vue/chunks/UiSwitcher.js +6 -15
  332. package/vue/chunks/UiTabs.js +52 -85
  333. package/vue/chunks/UiTextarea.js +21 -26
  334. package/vue/chunks/UiToastRegion.js +38 -72
  335. package/vue/chunks/UiTooltip.js +34 -35
  336. package/vue/chunks/UiTopBar.js +1 -1
  337. package/vue/chunks/UiTree.js +27 -16
  338. package/vue/chunks/UiTreeItem.js +85 -102
  339. package/vue/components.css +4027 -3800
  340. package/vue/editor/LoomaEditor.d.ts +11 -0
  341. package/vue/editor/index.js +9 -0
@@ -13,22 +13,13 @@ var UiReel_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
13
13
  snap: {}
14
14
  },
15
15
  setup(__props) {
16
- const hn = { t: (v) => v === true || (typeof v === "string" ? v.length > 0 : typeof v === "number" ? v !== 0 && v === v : Array.isArray(v) ? v.length > 0 : v !== null && typeof v === "object" ? Object.keys(v).length > 0 : false) };
17
16
  const props = __props;
18
- /** The resolved values the styles' :host-state() rules test. */
17
+ /** The values the styles' :host-state() rules test. */
19
18
  const hostState = computed(() => [
20
- "gap",
21
- "itemWidth",
22
- "snap"
23
- ].flatMap((name) => {
24
- const value = read(name);
25
- const tokens = hn.t(value) ? [name] : [];
26
- if (typeof value === "string" || typeof value === "number") tokens.push(`${name}=${encodeURIComponent(String(value))}`);
27
- return tokens;
28
- }).join(" "));
29
- function read(name) {
30
- return props[name];
31
- }
19
+ props.gap && `gap gap=${props.gap}`,
20
+ props.itemWidth && `itemWidth itemWidth=${props.itemWidth}`,
21
+ props.snap && `snap snap=${props.snap}`
22
+ ].filter(Boolean).join(" "));
32
23
  return (_ctx, _cache) => {
33
24
  return openBlock(), createElementBlock("div", mergeProps({
34
25
  "data-component": "ui-reel",
@@ -37,6 +28,6 @@ var UiReel_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
37
28
  }, _ctx.$attrs, { "data-ui-reel-state": hostState.value || void 0 }), [renderSlot(_ctx.$slots, "default")], 16, _hoisted_1);
38
29
  };
39
30
  }
40
- }), [["__scopeId", "data-v-6d8ec8a0"]]);
31
+ }), [["__scopeId", "data-v-0dde8279"]]);
41
32
  //#endregion
42
33
  export { UiReel_default as t };
@@ -15,37 +15,24 @@ var UiSearchResultRow_default = /*#__PURE__*/ _plugin_vue_export_helper_default(
15
15
  __name: "UiSearchResultRow",
16
16
  props: {
17
17
  disabled: {
18
- type: [Boolean, null],
18
+ type: Boolean,
19
19
  default: false
20
20
  },
21
21
  selected: {
22
- type: [Boolean, null],
22
+ type: Boolean,
23
23
  default: false
24
24
  }
25
25
  },
26
26
  setup(__props) {
27
- const hn = {
28
- t: (v) => v === true || (typeof v === "string" ? v.length > 0 : typeof v === "number" ? v !== 0 && v === v : Array.isArray(v) ? v.length > 0 : v !== null && typeof v === "object" ? Object.keys(v).length > 0 : false),
29
- text: (v) => v === void 0 || v === null ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? "" : String(v),
30
- attr: (v) => v === void 0 || v === null || v === false ? void 0 : v === true ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? void 0 : String(v)
31
- };
32
27
  const props = __props;
33
- /** The resolved values the styles' :host-state() rules test. */
34
- const hostState = computed(() => ["selected"].flatMap((name) => {
35
- const value = read(name);
36
- const tokens = hn.t(value) ? [name] : [];
37
- if (typeof value === "string" || typeof value === "number") tokens.push(`${name}=${encodeURIComponent(String(value))}`);
38
- return tokens;
39
- }).join(" "));
40
- function read(name) {
41
- return props[name];
42
- }
28
+ /** The values the styles' :host-state() rules test. */
29
+ const hostState = computed(() => [props.selected && "selected"].filter(Boolean).join(" "));
43
30
  return (_ctx, _cache) => {
44
31
  return openBlock(), createElementBlock("button", mergeProps({
45
32
  "data-component": "ui-search-result-row",
46
33
  type: "button"
47
34
  }, _ctx.$attrs, {
48
- disabled: hn.attr(props.disabled),
35
+ disabled: __props.disabled,
49
36
  "data-ui-search-result-row-state": hostState.value || void 0
50
37
  }), [
51
38
  createElementVNode("span", _hoisted_2, [renderSlot(_ctx.$slots, "leading")]),
@@ -58,6 +45,6 @@ var UiSearchResultRow_default = /*#__PURE__*/ _plugin_vue_export_helper_default(
58
45
  ], 16, _hoisted_1);
59
46
  };
60
47
  }
61
- }), [["__scopeId", "data-v-a8b3c5dd"]]);
48
+ }), [["__scopeId", "data-v-7d88a5d4"]]);
62
49
  //#endregion
63
50
  export { UiSearchResultRow_default as t };
@@ -1,5 +1,5 @@
1
1
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
- import { computed, createElementBlock, createElementVNode, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, shallowRef, watchEffect } from "vue";
2
+ import { computed, createElementBlock, createElementVNode, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, shallowRef, useTemplateRef, watchEffect } from "vue";
3
3
  import * as controllerModule from "@threadlabs/looma/components/ui-search-shell/ui-search-shell.js";
4
4
  //#region .build/vue/UiSearchShell.vue?vue&type=script&setup=true&lang.ts
5
5
  var _hoisted_1 = ["aria-label"];
@@ -15,59 +15,56 @@ var UiSearchShell_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @
15
15
  __name: "UiSearchShell",
16
16
  props: {
17
17
  dismissible: {
18
- type: [Boolean, null],
18
+ type: Boolean,
19
19
  default: false
20
20
  },
21
21
  label: { default: "Search" },
22
22
  modal: {
23
- type: [Boolean, null],
23
+ type: Boolean,
24
24
  default: false
25
25
  },
26
26
  open: {
27
- type: [Boolean, null],
27
+ type: Boolean,
28
28
  default: false
29
29
  }
30
30
  },
31
- emits: ["close"],
31
+ emits: ["update:open", "close"],
32
32
  setup(__props, { emit: __emit }) {
33
- const hn = {
34
- text: (v) => v === void 0 || v === null ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? "" : String(v),
35
- attr: (v) => v === void 0 || v === null || v === false ? void 0 : v === true ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? void 0 : String(v),
36
- enumerated: (v) => typeof v === "boolean" ? String(v) : hn.attr(v)
37
- };
38
33
  const props = __props;
39
34
  const emit = __emit;
40
35
  const root = ref(null);
41
- const refs = {};
42
- const state_internalOpen = ref(false);
36
+ const dialogElement = useTemplateRef("dialog");
37
+ const internalOpen = ref(false);
43
38
  /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
44
- const dispatch = (name, detail) => {
45
- const declared = { "close": {
46
- "bubbles": true,
47
- "composed": true,
48
- "cancelable": false
39
+ function dispatch(name, detail) {
40
+ const declared = { close: {
41
+ bubbles: true,
42
+ composed: true,
43
+ cancelable: false
49
44
  } };
50
- const checks = { "close": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["open"] === "boolean" && (detail["reason"] === "action" || detail["reason"] === "programmatic" || detail["reason"] === "light-dismiss" || detail["reason"] === "escape") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
45
+ const checks = { close: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["open"] === "boolean" && (detail["reason"] === "action" || detail["reason"] === "programmatic" || detail["reason"] === "light-dismiss" || detail["reason"] === "escape") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
51
46
  "open",
52
47
  "reason",
53
48
  "trigger"
54
49
  ].includes(key)) };
55
50
  if (detail !== void 0 && checks[name] !== void 0 && !checks[name](detail)) throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
56
- emit(name, detail);
51
+ const emitEvent = emit;
52
+ emitEvent(name, detail);
53
+ if (detail !== null && typeof detail === "object" && "open" in detail) emitEvent("update:open", detail["open"]);
57
54
  return root.value?.dispatchEvent(new CustomEvent(name, {
58
55
  bubbles: true,
59
56
  composed: true,
60
57
  ...declared[name],
61
58
  detail
62
59
  })) ?? true;
63
- };
60
+ }
64
61
  function read(name) {
65
- if (name === "internalOpen") return state_internalOpen.value;
62
+ if (name === "internalOpen") return internalOpen.value;
66
63
  return props[name];
67
64
  }
68
65
  function write(name, value) {
69
66
  if (name === "internalOpen") {
70
- state_internalOpen.value = value;
67
+ internalOpen.value = value;
71
68
  return true;
72
69
  }
73
70
  throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
@@ -81,7 +78,9 @@ var UiSearchShell_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @
81
78
  get: (_target, name) => typeof name === "string" ? read(name) : void 0,
82
79
  set: (_target, name, value) => typeof name === "string" && write(name, value)
83
80
  }),
84
- refs,
81
+ refs: { get dialog() {
82
+ return dialogElement.value;
83
+ } },
85
84
  elements: new Proxy({}, { get: (_target, name) => {
86
85
  if (typeof name !== "string" || root.value === null) return void 0;
87
86
  return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
@@ -135,10 +134,8 @@ var UiSearchShell_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @
135
134
  ref_key: "root",
136
135
  ref: root
137
136
  }), [createElementVNode("dialog", {
138
- "aria-label": hn.enumerated(props.label),
139
- ref: (element) => {
140
- refs["dialog"] = element;
141
- }
137
+ "aria-label": __props.label,
138
+ ref: "dialog"
142
139
  }, [createElementVNode("div", _hoisted_2, [
143
140
  createElementVNode("div", _hoisted_3, [renderSlot(_ctx.$slots, "search")]),
144
141
  createElementVNode("div", _hoisted_4, [renderSlot(_ctx.$slots, "status")]),
@@ -147,6 +144,6 @@ var UiSearchShell_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @
147
144
  ])], 8, _hoisted_1)], 16);
148
145
  };
149
146
  }
150
- }), [["__scopeId", "data-v-8d1491f1"]]);
147
+ }), [["__scopeId", "data-v-976b649d"]]);
151
148
  //#endregion
152
149
  export { UiSearchShell_default as t };
@@ -1,5 +1,5 @@
1
1
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
- import { computed, createElementBlock, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, shallowRef, watchEffect } from "vue";
2
+ import { computed, createElementBlock, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, shallowRef, vModelSelect, watchEffect, withDirectives } from "vue";
3
3
  import * as controllerModule from "@threadlabs/looma/components/ui-select/ui-select.js";
4
4
  //#region .build/vue/UiSelect.vue?vue&type=script&setup=true&lang.ts
5
5
  var _hoisted_1 = [
@@ -15,19 +15,19 @@ var UiSelect_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
15
15
  __name: "UiSelect",
16
16
  props: {
17
17
  disabled: {
18
- type: [Boolean, null],
18
+ type: Boolean,
19
19
  default: false
20
20
  },
21
21
  invalid: {
22
- type: [Boolean, null],
22
+ type: Boolean,
23
23
  default: false
24
24
  },
25
25
  multiple: {
26
- type: [Boolean, null],
26
+ type: Boolean,
27
27
  default: false
28
28
  },
29
29
  required: {
30
- type: [Boolean, null],
30
+ type: Boolean,
31
31
  default: false
32
32
  },
33
33
  value: {},
@@ -35,24 +35,21 @@ var UiSelect_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
35
35
  },
36
36
  emits: ["update:modelValue"],
37
37
  setup(__props, { emit: __emit }) {
38
- const hn = {
39
- text: (v) => v === void 0 || v === null ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? "" : String(v),
40
- attr: (v) => v === void 0 || v === null || v === false ? void 0 : v === true ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? void 0 : String(v),
41
- enumerated: (v) => typeof v === "boolean" ? String(v) : hn.attr(v)
42
- };
43
38
  const props = __props;
44
39
  const emit = __emit;
45
- const updateModel = (event) => emit("update:modelValue", event.target.value);
40
+ const model = computed({
41
+ get: () => props.modelValue ?? props.value ?? void 0,
42
+ set: (value) => emit("update:modelValue", value)
43
+ });
46
44
  const root = ref(null);
47
- const refs = {};
48
45
  /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
49
- const dispatch = (name, detail) => {
46
+ function dispatch(name, detail) {
50
47
  return root.value?.dispatchEvent(new CustomEvent(name, {
51
48
  bubbles: true,
52
49
  composed: true,
53
50
  detail
54
51
  })) ?? true;
55
- };
52
+ }
56
53
  function read(name) {
57
54
  return props[name];
58
55
  }
@@ -68,7 +65,7 @@ var UiSelect_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
68
65
  get: (_target, name) => typeof name === "string" ? read(name) : void 0,
69
66
  set: (_target, name, value) => typeof name === "string" && write(name, value)
70
67
  }),
71
- refs,
68
+ refs: {},
72
69
  elements: new Proxy({}, { get: (_target, name) => {
73
70
  if (typeof name !== "string" || root.value === null) return void 0;
74
71
  return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
@@ -118,17 +115,17 @@ var UiSelect_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
118
115
  if (typeof cleanup === "function") cleanup();
119
116
  });
120
117
  return (_ctx, _cache) => {
121
- return openBlock(), createElementBlock("select", mergeProps({ "data-component": "ui-select" }, _ctx.$attrs, {
122
- disabled: hn.attr(props.disabled),
123
- required: hn.attr(props.required),
124
- multiple: hn.attr(props.multiple),
125
- "aria-invalid": hn.enumerated(props.invalid),
126
- onChange: updateModel,
118
+ return withDirectives((openBlock(), createElementBlock("select", mergeProps({ "data-component": "ui-select" }, _ctx.$attrs, {
119
+ disabled: __props.disabled,
120
+ required: __props.required,
121
+ multiple: __props.multiple,
122
+ "aria-invalid": __props.invalid,
123
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => model.value = $event),
127
124
  ref_key: "root",
128
125
  ref: root
129
- }), [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_1);
126
+ }), [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_1)), [[vModelSelect, model.value]]);
130
127
  };
131
128
  }
132
- }), [["__scopeId", "data-v-a5498df1"]]);
129
+ }), [["__scopeId", "data-v-01335c35"]]);
133
130
  //#endregion
134
131
  export { UiSelect_default as t };
@@ -9,16 +9,10 @@ var UiSeparator_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
9
9
  __name: "UiSeparator",
10
10
  props: { orientation: { default: "horizontal" } },
11
11
  setup(__props) {
12
- const hn = {
13
- text: (v) => v === void 0 || v === null ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? "" : String(v),
14
- attr: (v) => v === void 0 || v === null || v === false ? void 0 : v === true ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? void 0 : String(v),
15
- enumerated: (v) => typeof v === "boolean" ? String(v) : hn.attr(v)
16
- };
17
- const props = __props;
18
12
  return (_ctx, _cache) => {
19
- return openBlock(), createElementBlock("hr", mergeProps({ "data-component": "ui-separator" }, _ctx.$attrs, { "aria-orientation": hn.enumerated(props.orientation) }), null, 16, _hoisted_1);
13
+ return openBlock(), createElementBlock("hr", mergeProps({ "data-component": "ui-separator" }, _ctx.$attrs, { "aria-orientation": __props.orientation }), null, 16, _hoisted_1);
20
14
  };
21
15
  }
22
- }), [["__scopeId", "data-v-30b5bbe9"]]);
16
+ }), [["__scopeId", "data-v-f0034397"]]);
23
17
  //#endregion
24
18
  export { UiSeparator_default as t };
@@ -1,5 +1,5 @@
1
1
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
- import { computed, createElementBlock, createElementVNode, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, shallowRef, watchEffect } from "vue";
2
+ import { computed, createElementBlock, createElementVNode, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, shallowRef, useTemplateRef, watchEffect } from "vue";
3
3
  import * as controllerModule from "@threadlabs/looma/components/ui-sidebar/ui-sidebar.js";
4
4
  //#region .build/vue/UiSidebar.vue?vue&type=script&setup=true&lang.ts
5
5
  var _hoisted_1 = ["data-ui-sidebar-state"];
@@ -13,13 +13,13 @@ var UiSidebar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
13
13
  props: {
14
14
  breakpoint: { default: "md" },
15
15
  collapsed: {
16
- type: [Boolean, null],
16
+ type: Boolean,
17
17
  default: false
18
18
  },
19
19
  maxWidth: { default: 480 },
20
20
  minWidth: { default: 200 },
21
21
  resizable: {
22
- type: [Boolean, null],
22
+ type: Boolean,
23
23
  default: false
24
24
  },
25
25
  resizeLabel: { default: "Resize sidebar" },
@@ -27,70 +27,65 @@ var UiSidebar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
27
27
  side: { default: "start" },
28
28
  width: { default: 0 }
29
29
  },
30
- emits: ["resize", "toggle"],
30
+ emits: [
31
+ "update:width",
32
+ "resize",
33
+ "toggle"
34
+ ],
31
35
  setup(__props, { emit: __emit }) {
32
- const hn = {
33
- t: (v) => v === true || (typeof v === "string" ? v.length > 0 : typeof v === "number" ? v !== 0 && v === v : Array.isArray(v) ? v.length > 0 : v !== null && typeof v === "object" ? Object.keys(v).length > 0 : false),
34
- text: (v) => v === void 0 || v === null ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? "" : String(v),
35
- attr: (v) => v === void 0 || v === null || v === false ? void 0 : v === true ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? void 0 : String(v),
36
- enumerated: (v) => typeof v === "boolean" ? String(v) : hn.attr(v)
37
- };
38
36
  const props = __props;
39
37
  const emit = __emit;
40
38
  const root = ref(null);
41
- const refs = {};
42
- const state_internalCollapsed = ref(false);
43
- const state_drawer = ref(false);
39
+ const resizerElement = useTemplateRef("resizer");
40
+ const internalCollapsed = ref(false);
41
+ const drawer = ref(false);
42
+ /** The values the styles' :host-state() rules test. */
43
+ const hostState = computed(() => [props.side && `side side=${props.side}`, internalCollapsed.value && "internalCollapsed"].filter(Boolean).join(" "));
44
44
  /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
45
- const dispatch = (name, detail) => {
45
+ function dispatch(name, detail) {
46
46
  const declared = {
47
- "resize": {
48
- "bubbles": true,
49
- "composed": true,
50
- "cancelable": false
47
+ resize: {
48
+ bubbles: true,
49
+ composed: true,
50
+ cancelable: false
51
51
  },
52
- "toggle": {
53
- "bubbles": true,
54
- "composed": true,
55
- "cancelable": false
52
+ toggle: {
53
+ bubbles: true,
54
+ composed: true,
55
+ cancelable: false
56
56
  }
57
57
  };
58
58
  const checks = {
59
- "resize": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["width"] === "number" && Number.isFinite(detail["width"]) && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => ["width", "trigger"].includes(key)),
60
- "toggle": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["open"] === "boolean" && (detail["mode"] === "docked" || detail["mode"] === "drawer") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
59
+ resize: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["width"] === "number" && Number.isFinite(detail["width"]) && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => ["width", "trigger"].includes(key)),
60
+ toggle: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["open"] === "boolean" && (detail["mode"] === "docked" || detail["mode"] === "drawer") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
61
61
  "open",
62
62
  "mode",
63
63
  "trigger"
64
64
  ].includes(key))
65
65
  };
66
66
  if (detail !== void 0 && checks[name] !== void 0 && !checks[name](detail)) throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
67
- emit(name, detail);
67
+ const emitEvent = emit;
68
+ emitEvent(name, detail);
69
+ if (detail !== null && typeof detail === "object" && "width" in detail) emitEvent("update:width", detail["width"]);
68
70
  return root.value?.dispatchEvent(new CustomEvent(name, {
69
71
  bubbles: true,
70
72
  composed: true,
71
73
  ...declared[name],
72
74
  detail
73
75
  })) ?? true;
74
- };
75
- /** The resolved values the styles' :host-state() rules test. */
76
- const hostState = computed(() => ["side", "internalCollapsed"].flatMap((name) => {
77
- const value = read(name);
78
- const tokens = hn.t(value) ? [name] : [];
79
- if (typeof value === "string" || typeof value === "number") tokens.push(`${name}=${encodeURIComponent(String(value))}`);
80
- return tokens;
81
- }).join(" "));
76
+ }
82
77
  function read(name) {
83
- if (name === "internalCollapsed") return state_internalCollapsed.value;
84
- if (name === "drawer") return state_drawer.value;
78
+ if (name === "internalCollapsed") return internalCollapsed.value;
79
+ if (name === "drawer") return drawer.value;
85
80
  return props[name];
86
81
  }
87
82
  function write(name, value) {
88
83
  if (name === "internalCollapsed") {
89
- state_internalCollapsed.value = value;
84
+ internalCollapsed.value = value;
90
85
  return true;
91
86
  }
92
87
  if (name === "drawer") {
93
- state_drawer.value = value;
88
+ drawer.value = value;
94
89
  return true;
95
90
  }
96
91
  throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
@@ -104,7 +99,9 @@ var UiSidebar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
104
99
  get: (_target, name) => typeof name === "string" ? read(name) : void 0,
105
100
  set: (_target, name, value) => typeof name === "string" && write(name, value)
106
101
  }),
107
- refs,
102
+ refs: { get resizer() {
103
+ return resizerElement.value;
104
+ } },
108
105
  elements: new Proxy({}, { get: (_target, name) => {
109
106
  if (typeof name !== "string" || root.value === null) return void 0;
110
107
  return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
@@ -164,17 +161,15 @@ var UiSidebar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
164
161
  "aria-orientation": "vertical",
165
162
  tabindex: "0",
166
163
  "data-ui-affordance": "resize",
167
- "aria-label": hn.enumerated(props.resizeLabel),
168
- hidden: hn.attr(hn.t(hn.t(!hn.t(props.resizable)) || hn.t(state_drawer.value)) || hn.t(state_internalCollapsed.value)),
169
- ref: (element) => {
170
- refs["resizer"] = element;
171
- }
164
+ "aria-label": __props.resizeLabel,
165
+ hidden: !__props.resizable || drawer.value || internalCollapsed.value,
166
+ ref: "resizer"
172
167
  }, [..._cache[0] || (_cache[0] = [createElementVNode("span", {
173
168
  class: "guide",
174
169
  "aria-hidden": "true"
175
170
  }, null, -1)])], 8, _hoisted_3)], 16, _hoisted_1);
176
171
  };
177
172
  }
178
- }), [["__scopeId", "data-v-2f64215a"]]);
173
+ }), [["__scopeId", "data-v-a2e22569"]]);
179
174
  //#endregion
180
175
  export { UiSidebar_default as t };
@@ -13,26 +13,17 @@ var UiStack_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
13
13
  justify: {}
14
14
  },
15
15
  setup(__props) {
16
- const hn = { t: (v) => v === true || (typeof v === "string" ? v.length > 0 : typeof v === "number" ? v !== 0 && v === v : Array.isArray(v) ? v.length > 0 : v !== null && typeof v === "object" ? Object.keys(v).length > 0 : false) };
17
16
  const props = __props;
18
- /** The resolved values the styles' :host-state() rules test. */
17
+ /** The values the styles' :host-state() rules test. */
19
18
  const hostState = computed(() => [
20
- "gap",
21
- "align",
22
- "justify"
23
- ].flatMap((name) => {
24
- const value = read(name);
25
- const tokens = hn.t(value) ? [name] : [];
26
- if (typeof value === "string" || typeof value === "number") tokens.push(`${name}=${encodeURIComponent(String(value))}`);
27
- return tokens;
28
- }).join(" "));
29
- function read(name) {
30
- return props[name];
31
- }
19
+ props.gap && `gap gap=${props.gap}`,
20
+ props.align && `align align=${props.align}`,
21
+ props.justify && `justify justify=${props.justify}`
22
+ ].filter(Boolean).join(" "));
32
23
  return (_ctx, _cache) => {
33
24
  return openBlock(), createElementBlock("div", mergeProps({ "data-component": "ui-stack" }, _ctx.$attrs, { "data-ui-stack-state": hostState.value || void 0 }), [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_1);
34
25
  };
35
26
  }
36
- }), [["__scopeId", "data-v-48cfa668"]]);
27
+ }), [["__scopeId", "data-v-aa8062a9"]]);
37
28
  //#endregion
38
29
  export { UiStack_default as t };
@@ -1,5 +1,5 @@
1
1
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
- import { computed, createElementBlock, createElementVNode, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, shallowRef, watchEffect } from "vue";
2
+ import { computed, createElementBlock, createElementVNode, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, shallowRef, useTemplateRef, watchEffect } from "vue";
3
3
  import * as controllerModule from "@threadlabs/looma/components/ui-switch/ui-switch.js";
4
4
  //#region .build/vue/UiSwitch.vue?vue&type=script&setup=true&lang.ts
5
5
  var _hoisted_1 = ["data-ui-switch-state"];
@@ -17,66 +17,63 @@ var UiSwitch_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
17
17
  __name: "UiSwitch",
18
18
  props: {
19
19
  checked: {
20
- type: [Boolean, null],
20
+ type: Boolean,
21
21
  default: false
22
22
  },
23
23
  disabled: {
24
- type: [Boolean, null],
24
+ type: Boolean,
25
25
  default: false
26
26
  },
27
27
  required: {
28
- type: [Boolean, null],
28
+ type: Boolean,
29
29
  default: false
30
30
  },
31
31
  value: { default: "on" }
32
32
  },
33
- emits: ["change"],
33
+ emits: [
34
+ "update:checked",
35
+ "update:value",
36
+ "change"
37
+ ],
34
38
  setup(__props, { emit: __emit }) {
35
- const hn = {
36
- t: (v) => v === true || (typeof v === "string" ? v.length > 0 : typeof v === "number" ? v !== 0 && v === v : Array.isArray(v) ? v.length > 0 : v !== null && typeof v === "object" ? Object.keys(v).length > 0 : false),
37
- text: (v) => v === void 0 || v === null ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? "" : String(v),
38
- attr: (v) => v === void 0 || v === null || v === false ? void 0 : v === true ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? void 0 : String(v)
39
- };
40
39
  const props = __props;
41
40
  const emit = __emit;
42
41
  const root = ref(null);
43
- const refs = {};
44
- const state_internalChecked = ref(false);
42
+ const inputElement = useTemplateRef("input");
43
+ const internalChecked = ref(false);
44
+ /** The values the styles' :host-state() rules test. */
45
+ const hostState = computed(() => [props.disabled && "disabled"].filter(Boolean).join(" "));
45
46
  /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
46
- const dispatch = (name, detail) => {
47
- const declared = { "change": {
48
- "bubbles": true,
49
- "composed": true,
50
- "cancelable": false
47
+ function dispatch(name, detail) {
48
+ const declared = { change: {
49
+ bubbles: true,
50
+ composed: true,
51
+ cancelable: false
51
52
  } };
52
- const checks = { "change": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["checked"] === "boolean" && typeof detail["value"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
53
+ const checks = { change: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["checked"] === "boolean" && typeof detail["value"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
53
54
  "checked",
54
55
  "value",
55
56
  "trigger"
56
57
  ].includes(key)) };
57
58
  if (detail !== void 0 && checks[name] !== void 0 && !checks[name](detail)) throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
58
- emit(name, detail);
59
+ const emitEvent = emit;
60
+ emitEvent(name, detail);
61
+ if (detail !== null && typeof detail === "object" && "checked" in detail) emitEvent("update:checked", detail["checked"]);
62
+ if (detail !== null && typeof detail === "object" && "value" in detail) emitEvent("update:value", detail["value"]);
59
63
  return root.value?.dispatchEvent(new CustomEvent(name, {
60
64
  bubbles: true,
61
65
  composed: true,
62
66
  ...declared[name],
63
67
  detail
64
68
  })) ?? true;
65
- };
66
- /** The resolved values the styles' :host-state() rules test. */
67
- const hostState = computed(() => ["disabled"].flatMap((name) => {
68
- const value = read(name);
69
- const tokens = hn.t(value) ? [name] : [];
70
- if (typeof value === "string" || typeof value === "number") tokens.push(`${name}=${encodeURIComponent(String(value))}`);
71
- return tokens;
72
- }).join(" "));
69
+ }
73
70
  function read(name) {
74
- if (name === "internalChecked") return state_internalChecked.value;
71
+ if (name === "internalChecked") return internalChecked.value;
75
72
  return props[name];
76
73
  }
77
74
  function write(name, value) {
78
75
  if (name === "internalChecked") {
79
- state_internalChecked.value = value;
76
+ internalChecked.value = value;
80
77
  return true;
81
78
  }
82
79
  throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
@@ -90,7 +87,9 @@ var UiSwitch_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
90
87
  get: (_target, name) => typeof name === "string" ? read(name) : void 0,
91
88
  set: (_target, name, value) => typeof name === "string" && write(name, value)
92
89
  }),
93
- refs,
90
+ refs: { get input() {
91
+ return inputElement.value;
92
+ } },
94
93
  elements: new Proxy({}, { get: (_target, name) => {
95
94
  if (typeof name !== "string" || root.value === null) return void 0;
96
95
  return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
@@ -147,16 +146,14 @@ var UiSwitch_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
147
146
  }), [createElementVNode("input", {
148
147
  type: "checkbox",
149
148
  role: "switch",
150
- ".checked": state_internalChecked.value,
151
- disabled: hn.attr(props.disabled),
152
- required: hn.attr(props.required),
153
- value: hn.attr(props.value),
154
- ref: (element) => {
155
- refs["input"] = element;
156
- }
149
+ ".checked": internalChecked.value,
150
+ disabled: __props.disabled,
151
+ required: __props.required,
152
+ value: __props.value,
153
+ ref: "input"
157
154
  }, null, 40, _hoisted_2), createElementVNode("span", _hoisted_3, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])], 16, _hoisted_1);
158
155
  };
159
156
  }
160
- }), [["__scopeId", "data-v-fb5ff799"]]);
157
+ }), [["__scopeId", "data-v-44eb48fd"]]);
161
158
  //#endregion
162
159
  export { UiSwitch_default as t };