@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
@@ -1,9 +1,8 @@
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, shallowRef, watchEffect } from "vue";
2
+ import { computed, createElementBlock, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, shallowRef, vModelDynamic, watchEffect, withDirectives } from "vue";
3
3
  import * as controllerModule from "@threadlabs/looma/components/ui-input/ui-input.js";
4
4
  //#region .build/vue/UiInput.vue?vue&type=script&setup=true&lang.ts
5
5
  var _hoisted_1 = [
6
- "value",
7
6
  "disabled",
8
7
  "readonly",
9
8
  "required",
@@ -16,19 +15,19 @@ var UiInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
16
15
  __name: "UiInput",
17
16
  props: {
18
17
  disabled: {
19
- type: [Boolean, null],
18
+ type: Boolean,
20
19
  default: false
21
20
  },
22
21
  invalid: {
23
- type: [Boolean, null],
22
+ type: Boolean,
24
23
  default: false
25
24
  },
26
25
  readonly: {
27
- type: [Boolean, null],
26
+ type: Boolean,
28
27
  default: false
29
28
  },
30
29
  required: {
31
- type: [Boolean, null],
30
+ type: Boolean,
32
31
  default: false
33
32
  },
34
33
  value: {},
@@ -36,24 +35,21 @@ var UiInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
36
35
  },
37
36
  emits: ["update:modelValue"],
38
37
  setup(__props, { emit: __emit }) {
39
- const hn = {
40
- text: (v) => v === void 0 || v === null ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? "" : String(v),
41
- 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),
42
- enumerated: (v) => typeof v === "boolean" ? String(v) : hn.attr(v)
43
- };
44
38
  const props = __props;
45
39
  const emit = __emit;
46
- 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
+ });
47
44
  const root = ref(null);
48
- const refs = {};
49
45
  /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
50
- const dispatch = (name, detail) => {
46
+ function dispatch(name, detail) {
51
47
  return root.value?.dispatchEvent(new CustomEvent(name, {
52
48
  bubbles: true,
53
49
  composed: true,
54
50
  detail
55
51
  })) ?? true;
56
- };
52
+ }
57
53
  function read(name) {
58
54
  return props[name];
59
55
  }
@@ -69,7 +65,7 @@ var UiInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
69
65
  get: (_target, name) => typeof name === "string" ? read(name) : void 0,
70
66
  set: (_target, name, value) => typeof name === "string" && write(name, value)
71
67
  }),
72
- refs,
68
+ refs: {},
73
69
  elements: new Proxy({}, { get: (_target, name) => {
74
70
  if (typeof name !== "string" || root.value === null) return void 0;
75
71
  return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
@@ -119,18 +115,17 @@ var UiInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
119
115
  if (typeof cleanup === "function") cleanup();
120
116
  });
121
117
  return (_ctx, _cache) => {
122
- return openBlock(), createElementBlock("input", mergeProps({ "data-component": "ui-input" }, _ctx.$attrs, {
123
- value: hn.attr(props.modelValue ?? props.value),
124
- disabled: hn.attr(props.disabled),
125
- readonly: hn.attr(props.readonly),
126
- required: hn.attr(props.required),
127
- "aria-invalid": hn.enumerated(props.invalid),
128
- onInput: updateModel,
118
+ return withDirectives((openBlock(), createElementBlock("input", mergeProps({ "data-component": "ui-input" }, _ctx.$attrs, {
119
+ disabled: __props.disabled,
120
+ readonly: __props.readonly,
121
+ required: __props.required,
122
+ "aria-invalid": __props.invalid,
123
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => model.value = $event),
129
124
  ref_key: "root",
130
125
  ref: root
131
- }), null, 16, _hoisted_1);
126
+ }), null, 16, _hoisted_1)), [[vModelDynamic, model.value]]);
132
127
  };
133
128
  }
134
- }), [["__scopeId", "data-v-cf6676f9"]]);
129
+ }), [["__scopeId", "data-v-f00d6a51"]]);
135
130
  //#endregion
136
131
  export { UiInput_default as t };
@@ -10,80 +10,77 @@ var UiMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
10
10
  inheritAttrs: false,
11
11
  __name: "UiMenu",
12
12
  props: {
13
+ density: { default: "comfortable" },
13
14
  for: { default: "" },
14
15
  open: {
15
- type: [Boolean, null],
16
+ type: Boolean,
16
17
  default: false
17
18
  },
18
19
  placement: { default: "bottom-start" }
19
20
  },
20
21
  emits: [
22
+ "update:open",
21
23
  "select",
22
24
  "open",
23
25
  "close"
24
26
  ],
25
27
  setup(__props, { emit: __emit }) {
26
- 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) };
27
28
  const props = __props;
28
29
  const emit = __emit;
29
30
  const root = ref(null);
30
- const refs = {};
31
- const state_internalOpen = ref(false);
31
+ const internalOpen = ref(false);
32
+ /** The values the styles' :host-state() rules test. */
33
+ const hostState = computed(() => [props.density && `density density=${props.density}`, internalOpen.value && "internalOpen"].filter(Boolean).join(" "));
32
34
  /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
33
- const dispatch = (name, detail) => {
35
+ function dispatch(name, detail) {
34
36
  const declared = {
35
- "select": {
36
- "bubbles": true,
37
- "composed": true,
38
- "cancelable": false
37
+ select: {
38
+ bubbles: true,
39
+ composed: true,
40
+ cancelable: false
39
41
  },
40
- "open": {
41
- "bubbles": true,
42
- "composed": true,
43
- "cancelable": false
42
+ open: {
43
+ bubbles: true,
44
+ composed: true,
45
+ cancelable: false
44
46
  },
45
- "close": {
46
- "bubbles": true,
47
- "composed": true,
48
- "cancelable": false
47
+ close: {
48
+ bubbles: true,
49
+ composed: true,
50
+ cancelable: false
49
51
  }
50
52
  };
51
53
  const checks = {
52
- "select": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["value"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => ["value", "trigger"].includes(key)),
53
- "open": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["open"] === "boolean" && (detail["reason"] === "action" || detail["reason"] === "programmatic") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
54
+ select: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["value"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => ["value", "trigger"].includes(key)),
55
+ open: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["open"] === "boolean" && (detail["reason"] === "action" || detail["reason"] === "programmatic") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
54
56
  "open",
55
57
  "reason",
56
58
  "trigger"
57
59
  ].includes(key)),
58
- "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) => [
60
+ 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) => [
59
61
  "open",
60
62
  "reason",
61
63
  "trigger"
62
64
  ].includes(key))
63
65
  };
64
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.`);
65
- emit(name, detail);
67
+ const emitEvent = emit;
68
+ emitEvent(name, detail);
69
+ if (detail !== null && typeof detail === "object" && "open" in detail) emitEvent("update:open", detail["open"]);
66
70
  return root.value?.dispatchEvent(new CustomEvent(name, {
67
71
  bubbles: true,
68
72
  composed: true,
69
73
  ...declared[name],
70
74
  detail
71
75
  })) ?? true;
72
- };
73
- /** The resolved values the styles' :host-state() rules test. */
74
- const hostState = computed(() => ["internalOpen"].flatMap((name) => {
75
- const value = read(name);
76
- const tokens = hn.t(value) ? [name] : [];
77
- if (typeof value === "string" || typeof value === "number") tokens.push(`${name}=${encodeURIComponent(String(value))}`);
78
- return tokens;
79
- }).join(" "));
76
+ }
80
77
  function read(name) {
81
- if (name === "internalOpen") return state_internalOpen.value;
78
+ if (name === "internalOpen") return internalOpen.value;
82
79
  return props[name];
83
80
  }
84
81
  function write(name, value) {
85
82
  if (name === "internalOpen") {
86
- state_internalOpen.value = value;
83
+ internalOpen.value = value;
87
84
  return true;
88
85
  }
89
86
  throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
@@ -97,7 +94,7 @@ var UiMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
97
94
  get: (_target, name) => typeof name === "string" ? read(name) : void 0,
98
95
  set: (_target, name, value) => typeof name === "string" && write(name, value)
99
96
  }),
100
- refs,
97
+ refs: {},
101
98
  elements: new Proxy({}, { get: (_target, name) => {
102
99
  if (typeof name !== "string" || root.value === null) return void 0;
103
100
  return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
@@ -158,6 +155,6 @@ var UiMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
158
155
  }), [createElementVNode("div", _hoisted_2, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])], 16, _hoisted_1);
159
156
  };
160
157
  }
161
- }), [["__scopeId", "data-v-75d428d7"]]);
158
+ }), [["__scopeId", "data-v-09be9e37"]]);
162
159
  //#endregion
163
160
  export { UiMenu_default as t };
@@ -9,29 +9,23 @@ var UiMenuItem_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
9
9
  __name: "UiMenuItem",
10
10
  props: {
11
11
  disabled: {
12
- type: [Boolean, null],
12
+ type: Boolean,
13
13
  default: false
14
14
  },
15
15
  value: { default: "" }
16
16
  },
17
17
  setup(__props) {
18
- const hn = {
19
- text: (v) => v === void 0 || v === null ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? "" : String(v),
20
- 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),
21
- enumerated: (v) => typeof v === "boolean" ? String(v) : hn.attr(v)
22
- };
23
- const props = __props;
24
18
  return (_ctx, _cache) => {
25
19
  return openBlock(), createElementBlock("div", mergeProps({
26
20
  "data-component": "ui-menu-item",
27
21
  role: "menuitem",
28
22
  tabindex: "-1"
29
23
  }, _ctx.$attrs, {
30
- "aria-disabled": hn.enumerated(props.disabled),
31
- "data-value": hn.attr(props.value)
24
+ "aria-disabled": __props.disabled,
25
+ "data-value": __props.value
32
26
  }), [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_1);
33
27
  };
34
28
  }
35
- }), [["__scopeId", "data-v-05a8f163"]]);
29
+ }), [["__scopeId", "data-v-deb5a674"]]);
36
30
  //#endregion
37
31
  export { UiMenuItem_default as t };
@@ -12,68 +12,67 @@ var UiPopover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
12
12
  props: {
13
13
  for: { default: "" },
14
14
  open: {
15
- type: [Boolean, null],
15
+ type: Boolean,
16
16
  default: false
17
17
  },
18
18
  placement: { default: "bottom-start" }
19
19
  },
20
- emits: ["open", "close"],
20
+ emits: [
21
+ "update:open",
22
+ "open",
23
+ "close"
24
+ ],
21
25
  setup(__props, { emit: __emit }) {
22
- 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) };
23
26
  const props = __props;
24
27
  const emit = __emit;
25
28
  const root = ref(null);
26
- const refs = {};
27
- const state_internalOpen = ref(false);
29
+ const internalOpen = ref(false);
30
+ /** The values the styles' :host-state() rules test. */
31
+ const hostState = computed(() => [internalOpen.value && "internalOpen"].filter(Boolean).join(" "));
28
32
  /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
29
- const dispatch = (name, detail) => {
33
+ function dispatch(name, detail) {
30
34
  const declared = {
31
- "open": {
32
- "bubbles": true,
33
- "composed": true,
34
- "cancelable": false
35
+ open: {
36
+ bubbles: true,
37
+ composed: true,
38
+ cancelable: false
35
39
  },
36
- "close": {
37
- "bubbles": true,
38
- "composed": true,
39
- "cancelable": false
40
+ close: {
41
+ bubbles: true,
42
+ composed: true,
43
+ cancelable: false
40
44
  }
41
45
  };
42
46
  const checks = {
43
- "open": (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) => [
47
+ open: (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) => [
44
48
  "open",
45
49
  "reason",
46
50
  "trigger"
47
51
  ].includes(key)),
48
- "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) => [
52
+ 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) => [
49
53
  "open",
50
54
  "reason",
51
55
  "trigger"
52
56
  ].includes(key))
53
57
  };
54
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.`);
55
- emit(name, detail);
59
+ const emitEvent = emit;
60
+ emitEvent(name, detail);
61
+ if (detail !== null && typeof detail === "object" && "open" in detail) emitEvent("update:open", detail["open"]);
56
62
  return root.value?.dispatchEvent(new CustomEvent(name, {
57
63
  bubbles: true,
58
64
  composed: true,
59
65
  ...declared[name],
60
66
  detail
61
67
  })) ?? true;
62
- };
63
- /** The resolved values the styles' :host-state() rules test. */
64
- const hostState = computed(() => ["internalOpen"].flatMap((name) => {
65
- const value = read(name);
66
- const tokens = hn.t(value) ? [name] : [];
67
- if (typeof value === "string" || typeof value === "number") tokens.push(`${name}=${encodeURIComponent(String(value))}`);
68
- return tokens;
69
- }).join(" "));
68
+ }
70
69
  function read(name) {
71
- if (name === "internalOpen") return state_internalOpen.value;
70
+ if (name === "internalOpen") return internalOpen.value;
72
71
  return props[name];
73
72
  }
74
73
  function write(name, value) {
75
74
  if (name === "internalOpen") {
76
- state_internalOpen.value = value;
75
+ internalOpen.value = value;
77
76
  return true;
78
77
  }
79
78
  throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
@@ -87,7 +86,7 @@ var UiPopover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
87
86
  get: (_target, name) => typeof name === "string" ? read(name) : void 0,
88
87
  set: (_target, name, value) => typeof name === "string" && write(name, value)
89
88
  }),
90
- refs,
89
+ refs: {},
91
90
  elements: new Proxy({}, { get: (_target, name) => {
92
91
  if (typeof name !== "string" || root.value === null) return void 0;
93
92
  return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
@@ -144,6 +143,6 @@ var UiPopover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
144
143
  }), [createElementVNode("div", _hoisted_2, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])], 16, _hoisted_1);
145
144
  };
146
145
  }
147
- }), [["__scopeId", "data-v-3d1188bf"]]);
146
+ }), [["__scopeId", "data-v-c16079f0"]]);
148
147
  //#endregion
149
148
  export { UiPopover_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-radio/ui-radio.js";
4
4
  //#region .build/vue/UiRadio.vue?vue&type=script&setup=true&lang.ts
5
5
  var _hoisted_1 = ["data-ui-radio-state"];
@@ -18,67 +18,64 @@ var UiRadio_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
18
18
  __name: "UiRadio",
19
19
  props: {
20
20
  checked: {
21
- type: [Boolean, null],
21
+ type: Boolean,
22
22
  default: false
23
23
  },
24
24
  disabled: {
25
- type: [Boolean, null],
25
+ type: Boolean,
26
26
  default: false
27
27
  },
28
28
  name: { default: "" },
29
29
  required: {
30
- type: [Boolean, null],
30
+ type: Boolean,
31
31
  default: false
32
32
  },
33
33
  value: { default: "on" }
34
34
  },
35
- emits: ["change"],
35
+ emits: [
36
+ "update:checked",
37
+ "update:value",
38
+ "change"
39
+ ],
36
40
  setup(__props, { emit: __emit }) {
37
- const hn = {
38
- 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),
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
- };
42
41
  const props = __props;
43
42
  const emit = __emit;
44
43
  const root = ref(null);
45
- const refs = {};
46
- const state_internalChecked = ref(false);
44
+ const inputElement = useTemplateRef("input");
45
+ const internalChecked = ref(false);
46
+ /** The values the styles' :host-state() rules test. */
47
+ const hostState = computed(() => [props.disabled && "disabled"].filter(Boolean).join(" "));
47
48
  /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
48
- const dispatch = (name, detail) => {
49
- const declared = { "change": {
50
- "bubbles": true,
51
- "composed": true,
52
- "cancelable": false
49
+ function dispatch(name, detail) {
50
+ const declared = { change: {
51
+ bubbles: true,
52
+ composed: true,
53
+ cancelable: false
53
54
  } };
54
- 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) => [
55
+ 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) => [
55
56
  "checked",
56
57
  "value",
57
58
  "trigger"
58
59
  ].includes(key)) };
59
60
  if (detail !== void 0 && checks[name] !== void 0 && !checks[name](detail)) throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
60
- emit(name, detail);
61
+ const emitEvent = emit;
62
+ emitEvent(name, detail);
63
+ if (detail !== null && typeof detail === "object" && "checked" in detail) emitEvent("update:checked", detail["checked"]);
64
+ if (detail !== null && typeof detail === "object" && "value" in detail) emitEvent("update:value", detail["value"]);
61
65
  return root.value?.dispatchEvent(new CustomEvent(name, {
62
66
  bubbles: true,
63
67
  composed: true,
64
68
  ...declared[name],
65
69
  detail
66
70
  })) ?? true;
67
- };
68
- /** The resolved values the styles' :host-state() rules test. */
69
- const hostState = computed(() => ["disabled"].flatMap((name) => {
70
- const value = read(name);
71
- const tokens = hn.t(value) ? [name] : [];
72
- if (typeof value === "string" || typeof value === "number") tokens.push(`${name}=${encodeURIComponent(String(value))}`);
73
- return tokens;
74
- }).join(" "));
71
+ }
75
72
  function read(name) {
76
- if (name === "internalChecked") return state_internalChecked.value;
73
+ if (name === "internalChecked") return internalChecked.value;
77
74
  return props[name];
78
75
  }
79
76
  function write(name, value) {
80
77
  if (name === "internalChecked") {
81
- state_internalChecked.value = value;
78
+ internalChecked.value = value;
82
79
  return true;
83
80
  }
84
81
  throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
@@ -92,7 +89,9 @@ var UiRadio_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
92
89
  get: (_target, name) => typeof name === "string" ? read(name) : void 0,
93
90
  set: (_target, name, value) => typeof name === "string" && write(name, value)
94
91
  }),
95
- refs,
92
+ refs: { get input() {
93
+ return inputElement.value;
94
+ } },
96
95
  elements: new Proxy({}, { get: (_target, name) => {
97
96
  if (typeof name !== "string" || root.value === null) return void 0;
98
97
  return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
@@ -148,17 +147,15 @@ var UiRadio_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
148
147
  ref: root
149
148
  }), [createElementVNode("input", {
150
149
  type: "radio",
151
- ".checked": state_internalChecked.value,
152
- disabled: hn.attr(props.disabled),
153
- required: hn.attr(props.required),
154
- value: hn.attr(props.value),
155
- name: hn.attr(props.name),
156
- ref: (element) => {
157
- refs["input"] = element;
158
- }
150
+ ".checked": internalChecked.value,
151
+ disabled: __props.disabled,
152
+ required: __props.required,
153
+ value: __props.value,
154
+ name: __props.name,
155
+ ref: "input"
159
156
  }, null, 40, _hoisted_2), createElementVNode("span", _hoisted_3, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])], 16, _hoisted_1);
160
157
  };
161
158
  }
162
- }), [["__scopeId", "data-v-e5d6bc8d"]]);
159
+ }), [["__scopeId", "data-v-cb942e6f"]]);
163
160
  //#endregion
164
161
  export { UiRadio_default as t };
@@ -10,78 +10,74 @@ var UiRadioGroup_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
10
10
  __name: "UiRadioGroup",
11
11
  props: {
12
12
  disabled: {
13
- type: [Boolean, null],
13
+ type: Boolean,
14
14
  default: false
15
15
  },
16
16
  label: { default: "Options" },
17
17
  name: { default: "" },
18
18
  orientation: { default: "horizontal" },
19
19
  required: {
20
- type: [Boolean, null],
20
+ type: Boolean,
21
21
  default: false
22
22
  },
23
23
  value: { default: "" }
24
24
  },
25
- emits: ["select", "change"],
25
+ emits: [
26
+ "update:value",
27
+ "select",
28
+ "change"
29
+ ],
26
30
  setup(__props, { emit: __emit }) {
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
- };
31
31
  const props = __props;
32
32
  const emit = __emit;
33
33
  const root = ref(null);
34
- const refs = {};
35
- const state_internalValue = ref("");
34
+ const internalValue = ref("");
35
+ /** The values the styles' :host-state() rules test. */
36
+ const hostState = computed(() => [props.orientation && `orientation orientation=${props.orientation}`].filter(Boolean).join(" "));
36
37
  /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
37
- const dispatch = (name, detail) => {
38
+ function dispatch(name, detail) {
38
39
  const declared = {
39
- "select": {
40
- "bubbles": true,
41
- "composed": true,
42
- "cancelable": false
40
+ select: {
41
+ bubbles: true,
42
+ composed: true,
43
+ cancelable: false
43
44
  },
44
- "change": {
45
- "bubbles": true,
46
- "composed": true,
47
- "cancelable": false
45
+ change: {
46
+ bubbles: true,
47
+ composed: true,
48
+ cancelable: false
48
49
  }
49
50
  };
50
51
  const checks = {
51
- "select": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["value"] === "string" && typeof detail["previousValue"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
52
+ select: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["value"] === "string" && typeof detail["previousValue"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
52
53
  "value",
53
54
  "previousValue",
54
55
  "trigger"
55
56
  ].includes(key)),
56
- "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) => [
57
+ 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) => [
57
58
  "checked",
58
59
  "value",
59
60
  "trigger"
60
61
  ].includes(key))
61
62
  };
62
63
  if (detail !== void 0 && checks[name] !== void 0 && !checks[name](detail)) throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
63
- emit(name, detail);
64
+ const emitEvent = emit;
65
+ emitEvent(name, detail);
66
+ if (detail !== null && typeof detail === "object" && "value" in detail) emitEvent("update:value", detail["value"]);
64
67
  return root.value?.dispatchEvent(new CustomEvent(name, {
65
68
  bubbles: true,
66
69
  composed: true,
67
70
  ...declared[name],
68
71
  detail
69
72
  })) ?? true;
70
- };
71
- /** The resolved values the styles' :host-state() rules test. */
72
- const hostState = computed(() => ["orientation"].flatMap((name) => {
73
- const value = read(name);
74
- const tokens = hn.t(value) ? [name] : [];
75
- if (typeof value === "string" || typeof value === "number") tokens.push(`${name}=${encodeURIComponent(String(value))}`);
76
- return tokens;
77
- }).join(" "));
73
+ }
78
74
  function read(name) {
79
- if (name === "internalValue") return state_internalValue.value;
75
+ if (name === "internalValue") return internalValue.value;
80
76
  return props[name];
81
77
  }
82
78
  function write(name, value) {
83
79
  if (name === "internalValue") {
84
- state_internalValue.value = value;
80
+ internalValue.value = value;
85
81
  return true;
86
82
  }
87
83
  throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
@@ -95,7 +91,7 @@ var UiRadioGroup_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
95
91
  get: (_target, name) => typeof name === "string" ? read(name) : void 0,
96
92
  set: (_target, name, value) => typeof name === "string" && write(name, value)
97
93
  }),
98
- refs,
94
+ refs: {},
99
95
  elements: new Proxy({}, { get: (_target, name) => {
100
96
  if (typeof name !== "string" || root.value === null) return void 0;
101
97
  return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
@@ -152,9 +148,9 @@ var UiRadioGroup_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
152
148
  "data-ui-radio-group-state": hostState.value || void 0,
153
149
  ref_key: "root",
154
150
  ref: root
155
- }), [createElementVNode("legend", null, toDisplayString(hn.text(props.label)), 1), renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_1);
151
+ }), [createElementVNode("legend", null, toDisplayString(__props.label), 1), renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_1);
156
152
  };
157
153
  }
158
- }), [["__scopeId", "data-v-9cda8db8"]]);
154
+ }), [["__scopeId", "data-v-df092584"]]);
159
155
  //#endregion
160
156
  export { UiRadioGroup_default as t };