@threadlabs/looma 0.5.1 → 0.5.2

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 (309) hide show
  1. package/README.md +1 -1
  2. package/components/ui-button/ui-button.html +13 -0
  3. package/components/ui-combobox/ui-combobox.html +12 -4
  4. package/components/ui-dialog/ui-dialog.html +13 -0
  5. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +1 -1
  6. package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +1 -1
  7. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +6 -2
  8. package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +20 -4
  9. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +8 -4
  10. package/components/ui-form-field/ui-form-field.html +18 -7
  11. package/components/ui-icon/ui-icon.html +5 -1
  12. package/components/ui-icon-button/ui-icon-button.html +30 -0
  13. package/components/ui-popover/ui-popover.js +10 -2
  14. package/components/ui-search-shell/ui-search-shell.html +7 -0
  15. package/components/ui-search-shell/ui-search-shell.js +9 -0
  16. package/components/ui-tabs/ui-tabs.html +1 -1
  17. package/components/ui-toast-region/ui-toast-region.html +1 -1
  18. package/components/ui-tree-item/ui-tree-item.html +6 -1
  19. package/dist/index.d.ts +1 -1
  20. package/dist/index.js +2 -2
  21. package/package.json +2 -2
  22. package/styles/ui-affordance-scope.css +1 -1
  23. package/styles/ui-avatar-group.css +1 -1
  24. package/styles/ui-avatar.css +1 -1
  25. package/styles/ui-badge.css +1 -1
  26. package/styles/ui-button.css +11 -1
  27. package/styles/ui-callout.css +1 -1
  28. package/styles/ui-checkbox.css +1 -1
  29. package/styles/ui-cluster.css +1 -1
  30. package/styles/ui-combobox.css +1 -1
  31. package/styles/ui-container.css +1 -1
  32. package/styles/ui-context-menu.css +1 -1
  33. package/styles/ui-dialog.css +18 -1
  34. package/styles/ui-disclosure.css +1 -1
  35. package/styles/ui-editable.css +1 -1
  36. package/styles/ui-editor-insert-table-grid.css +1 -1
  37. package/styles/ui-editor-mention-menu.css +1 -1
  38. package/styles/ui-editor-slash-menu.css +1 -1
  39. package/styles/ui-editor-table-context-menu.css +1 -1
  40. package/styles/ui-editor-table-overlay.css +1 -1
  41. package/styles/ui-editor-table-toolbar.css +1 -1
  42. package/styles/ui-editor-toolbar.css +1 -1
  43. package/styles/ui-floating-action-button.css +1 -1
  44. package/styles/ui-form-field.css +24 -10
  45. package/styles/ui-grid.css +1 -1
  46. package/styles/ui-icon-button.css +36 -1
  47. package/styles/ui-icon.css +1 -1
  48. package/styles/ui-input.css +1 -1
  49. package/styles/ui-menu-item.css +1 -1
  50. package/styles/ui-menu.css +1 -1
  51. package/styles/ui-popover.css +1 -1
  52. package/styles/ui-radio-group.css +1 -1
  53. package/styles/ui-radio.css +1 -1
  54. package/styles/ui-reel.css +1 -1
  55. package/styles/ui-search-result-row.css +1 -1
  56. package/styles/ui-search-shell.css +11 -2
  57. package/styles/ui-select.css +1 -1
  58. package/styles/ui-separator.css +1 -1
  59. package/styles/ui-sidebar.css +1 -1
  60. package/styles/ui-stack.css +1 -1
  61. package/styles/ui-switch.css +1 -1
  62. package/styles/ui-switcher.css +1 -1
  63. package/styles/ui-tabs.css +1 -1
  64. package/styles/ui-textarea.css +1 -1
  65. package/styles/ui-toast-region.css +1 -1
  66. package/styles/ui-tooltip.css +1 -1
  67. package/styles/ui-top-bar.css +1 -1
  68. package/styles/ui-tree-item.css +10 -2
  69. package/styles/ui-tree.css +1 -1
  70. package/vanilla/UiAffordanceScope.d.ts +1 -1
  71. package/vanilla/UiAffordanceScope.js +2 -2
  72. package/vanilla/UiAvatar.d.ts +1 -1
  73. package/vanilla/UiAvatar.js +2 -2
  74. package/vanilla/UiAvatarGroup.d.ts +1 -1
  75. package/vanilla/UiAvatarGroup.js +2 -2
  76. package/vanilla/UiBadge.d.ts +1 -1
  77. package/vanilla/UiBadge.js +2 -2
  78. package/vanilla/UiButton.d.ts +3 -1
  79. package/vanilla/UiButton.js +3 -3
  80. package/vanilla/UiCallout.d.ts +1 -1
  81. package/vanilla/UiCallout.js +2 -2
  82. package/vanilla/UiCheckbox.d.ts +1 -1
  83. package/vanilla/UiCheckbox.js +2 -2
  84. package/vanilla/UiCluster.d.ts +1 -1
  85. package/vanilla/UiCluster.js +2 -2
  86. package/vanilla/UiCombobox.d.ts +1 -1
  87. package/vanilla/UiCombobox.js +3 -3
  88. package/vanilla/UiContainer.d.ts +1 -1
  89. package/vanilla/UiContainer.js +2 -2
  90. package/vanilla/UiContextMenu.d.ts +1 -1
  91. package/vanilla/UiContextMenu.js +2 -2
  92. package/vanilla/UiDialog.d.ts +1 -1
  93. package/vanilla/UiDialog.js +2 -2
  94. package/vanilla/UiDisclosure.d.ts +1 -1
  95. package/vanilla/UiDisclosure.js +2 -2
  96. package/vanilla/UiEditable.d.ts +1 -1
  97. package/vanilla/UiEditable.js +2 -2
  98. package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
  99. package/vanilla/UiEditorInsertTableGrid.js +3 -3
  100. package/vanilla/UiEditorMentionMenu.d.ts +1 -1
  101. package/vanilla/UiEditorMentionMenu.js +3 -3
  102. package/vanilla/UiEditorSlashMenu.d.ts +1 -1
  103. package/vanilla/UiEditorSlashMenu.js +2 -2
  104. package/vanilla/UiEditorTableContextMenu.d.ts +1 -1
  105. package/vanilla/UiEditorTableContextMenu.js +3 -3
  106. package/vanilla/UiEditorTableOverlay.d.ts +1 -1
  107. package/vanilla/UiEditorTableOverlay.js +3 -3
  108. package/vanilla/UiEditorTableToolbar.d.ts +1 -1
  109. package/vanilla/UiEditorTableToolbar.js +3 -3
  110. package/vanilla/UiEditorToolbar.d.ts +1 -1
  111. package/vanilla/UiEditorToolbar.js +2 -2
  112. package/vanilla/UiFloatingActionButton.d.ts +1 -1
  113. package/vanilla/UiFloatingActionButton.js +2 -2
  114. package/vanilla/UiFormField.d.ts +1 -1
  115. package/vanilla/UiFormField.js +15 -6
  116. package/vanilla/UiGrid.d.ts +1 -1
  117. package/vanilla/UiGrid.js +2 -2
  118. package/vanilla/UiIcon.d.ts +1 -1
  119. package/vanilla/UiIcon.js +3 -3
  120. package/vanilla/UiIconButton.d.ts +1 -1
  121. package/vanilla/UiIconButton.js +2 -2
  122. package/vanilla/UiInput.d.ts +1 -1
  123. package/vanilla/UiInput.js +2 -2
  124. package/vanilla/UiMenu.d.ts +1 -1
  125. package/vanilla/UiMenu.js +2 -2
  126. package/vanilla/UiMenuItem.d.ts +1 -1
  127. package/vanilla/UiMenuItem.js +2 -2
  128. package/vanilla/UiPopover.d.ts +1 -1
  129. package/vanilla/UiPopover.js +2 -2
  130. package/vanilla/UiRadio.d.ts +1 -1
  131. package/vanilla/UiRadio.js +2 -2
  132. package/vanilla/UiRadioGroup.d.ts +1 -1
  133. package/vanilla/UiRadioGroup.js +2 -2
  134. package/vanilla/UiReel.d.ts +1 -1
  135. package/vanilla/UiReel.js +2 -2
  136. package/vanilla/UiSearchResultRow.d.ts +1 -1
  137. package/vanilla/UiSearchResultRow.js +2 -2
  138. package/vanilla/UiSearchShell.d.ts +1 -1
  139. package/vanilla/UiSearchShell.js +2 -2
  140. package/vanilla/UiSelect.d.ts +1 -1
  141. package/vanilla/UiSelect.js +2 -2
  142. package/vanilla/UiSeparator.d.ts +1 -1
  143. package/vanilla/UiSeparator.js +2 -2
  144. package/vanilla/UiSidebar.d.ts +1 -1
  145. package/vanilla/UiSidebar.js +2 -2
  146. package/vanilla/UiStack.d.ts +1 -1
  147. package/vanilla/UiStack.js +2 -2
  148. package/vanilla/UiSwitch.d.ts +1 -1
  149. package/vanilla/UiSwitch.js +2 -2
  150. package/vanilla/UiSwitcher.d.ts +1 -1
  151. package/vanilla/UiSwitcher.js +2 -2
  152. package/vanilla/UiTabs.d.ts +1 -1
  153. package/vanilla/UiTabs.js +3 -3
  154. package/vanilla/UiTextarea.d.ts +1 -1
  155. package/vanilla/UiTextarea.js +2 -2
  156. package/vanilla/UiToastRegion.d.ts +1 -1
  157. package/vanilla/UiToastRegion.js +3 -3
  158. package/vanilla/UiTooltip.d.ts +1 -1
  159. package/vanilla/UiTooltip.js +2 -2
  160. package/vanilla/UiTopBar.d.ts +1 -1
  161. package/vanilla/UiTopBar.js +1 -1
  162. package/vanilla/UiTree.d.ts +1 -1
  163. package/vanilla/UiTree.js +2 -2
  164. package/vanilla/UiTreeItem.d.ts +1 -1
  165. package/vanilla/UiTreeItem.js +2 -2
  166. package/vue/UiAffordanceScope.d.ts +2 -2
  167. package/vue/UiAffordanceScope.vue +92 -73
  168. package/vue/UiAvatar.d.ts +7 -7
  169. package/vue/UiAvatar.vue +145 -105
  170. package/vue/UiAvatarGroup.d.ts +4 -4
  171. package/vue/UiAvatarGroup.vue +134 -118
  172. package/vue/UiBadge.d.ts +4 -4
  173. package/vue/UiBadge.vue +113 -114
  174. package/vue/UiButton.d.ts +10 -6
  175. package/vue/UiButton.vue +289 -248
  176. package/vue/UiCallout.d.ts +2 -2
  177. package/vue/UiCallout.vue +154 -87
  178. package/vue/UiCheckbox.d.ts +14 -10
  179. package/vue/UiCheckbox.vue +228 -162
  180. package/vue/UiCluster.d.ts +2 -2
  181. package/vue/UiCluster.vue +53 -60
  182. package/vue/UiCombobox.d.ts +36 -32
  183. package/vue/UiCombobox.vue +1005 -416
  184. package/vue/UiContainer.d.ts +2 -2
  185. package/vue/UiContainer.vue +48 -51
  186. package/vue/UiContextMenu.d.ts +6 -4
  187. package/vue/UiContextMenu.vue +205 -116
  188. package/vue/UiDialog.d.ts +11 -9
  189. package/vue/UiDialog.vue +287 -212
  190. package/vue/UiDisclosure.d.ts +8 -6
  191. package/vue/UiDisclosure.vue +248 -159
  192. package/vue/UiEditable.d.ts +16 -12
  193. package/vue/UiEditable.vue +325 -205
  194. package/vue/UiEditorInsertTableGrid.d.ts +8 -8
  195. package/vue/UiEditorInsertTableGrid.vue +216 -157
  196. package/vue/UiEditorMentionMenu.d.ts +9 -9
  197. package/vue/UiEditorMentionMenu.vue +265 -222
  198. package/vue/UiEditorSlashMenu.d.ts +7 -7
  199. package/vue/UiEditorSlashMenu.vue +286 -240
  200. package/vue/UiEditorTableContextMenu.d.ts +5 -5
  201. package/vue/UiEditorTableContextMenu.vue +306 -193
  202. package/vue/UiEditorTableOverlay.d.ts +2 -2
  203. package/vue/UiEditorTableOverlay.vue +609 -369
  204. package/vue/UiEditorTableToolbar.d.ts +7 -7
  205. package/vue/UiEditorTableToolbar.vue +443 -268
  206. package/vue/UiEditorToolbar.d.ts +2 -2
  207. package/vue/UiEditorToolbar.vue +134 -121
  208. package/vue/UiFloatingActionButton.d.ts +6 -6
  209. package/vue/UiFloatingActionButton.vue +100 -99
  210. package/vue/UiFormField.d.ts +6 -6
  211. package/vue/UiFormField.vue +112 -80
  212. package/vue/UiGrid.d.ts +2 -2
  213. package/vue/UiGrid.vue +51 -57
  214. package/vue/UiIcon.d.ts +2 -2
  215. package/vue/UiIcon.vue +118 -89
  216. package/vue/UiIconButton.d.ts +11 -11
  217. package/vue/UiIconButton.vue +283 -217
  218. package/vue/UiInput.d.ts +9 -9
  219. package/vue/UiInput.vue +153 -127
  220. package/vue/UiMenu.d.ts +8 -6
  221. package/vue/UiMenu.vue +217 -143
  222. package/vue/UiMenuItem.d.ts +4 -4
  223. package/vue/UiMenuItem.vue +52 -46
  224. package/vue/UiPopover.d.ts +8 -6
  225. package/vue/UiPopover.vue +197 -137
  226. package/vue/UiRadio.d.ts +14 -10
  227. package/vue/UiRadio.vue +183 -117
  228. package/vue/UiRadioGroup.d.ts +14 -12
  229. package/vue/UiRadioGroup.vue +172 -111
  230. package/vue/UiReel.d.ts +3 -3
  231. package/vue/UiReel.vue +77 -77
  232. package/vue/UiSearchResultRow.d.ts +4 -4
  233. package/vue/UiSearchResultRow.vue +124 -115
  234. package/vue/UiSearchShell.d.ts +10 -8
  235. package/vue/UiSearchShell.vue +245 -176
  236. package/vue/UiSelect.d.ts +9 -9
  237. package/vue/UiSelect.vue +162 -134
  238. package/vue/UiSeparator.d.ts +2 -2
  239. package/vue/UiSeparator.vue +22 -27
  240. package/vue/UiSidebar.d.ts +20 -18
  241. package/vue/UiSidebar.vue +312 -224
  242. package/vue/UiStack.d.ts +3 -3
  243. package/vue/UiStack.vue +64 -70
  244. package/vue/UiSwitch.d.ts +12 -8
  245. package/vue/UiSwitch.vue +218 -150
  246. package/vue/UiSwitcher.d.ts +3 -3
  247. package/vue/UiSwitcher.vue +73 -75
  248. package/vue/UiTabs.d.ts +10 -8
  249. package/vue/UiTabs.vue +251 -210
  250. package/vue/UiTextarea.d.ts +11 -11
  251. package/vue/UiTextarea.vue +155 -128
  252. package/vue/UiToastRegion.d.ts +10 -8
  253. package/vue/UiToastRegion.vue +261 -198
  254. package/vue/UiTooltip.d.ts +14 -12
  255. package/vue/UiTooltip.vue +241 -177
  256. package/vue/UiTopBar.vue +51 -42
  257. package/vue/UiTree.d.ts +8 -6
  258. package/vue/UiTree.vue +157 -70
  259. package/vue/UiTreeItem.d.ts +24 -22
  260. package/vue/UiTreeItem.vue +456 -339
  261. package/vue/chunks/UiAffordanceScope.js +9 -16
  262. package/vue/chunks/UiAvatar.js +23 -29
  263. package/vue/chunks/UiAvatarGroup.js +16 -39
  264. package/vue/chunks/UiBadge.js +3 -12
  265. package/vue/chunks/UiButton.js +15 -18
  266. package/vue/chunks/UiCallout.js +8 -17
  267. package/vue/chunks/UiCheckbox.js +37 -40
  268. package/vue/chunks/UiCluster.js +3 -12
  269. package/vue/chunks/UiCombobox.js +224 -266
  270. package/vue/chunks/UiContainer.js +3 -12
  271. package/vue/chunks/UiContextMenu.js +39 -34
  272. package/vue/chunks/UiDialog.js +36 -39
  273. package/vue/chunks/UiDisclosure.js +43 -48
  274. package/vue/chunks/UiEditable.js +55 -57
  275. package/vue/chunks/UiEditorInsertTableGrid.js +55 -73
  276. package/vue/chunks/UiEditorMentionMenu.js +40 -81
  277. package/vue/chunks/UiEditorSlashMenu.js +28 -52
  278. package/vue/chunks/UiEditorTableContextMenu.js +32 -56
  279. package/vue/chunks/UiEditorTableOverlay.js +58 -82
  280. package/vue/chunks/UiEditorTableToolbar.js +61 -85
  281. package/vue/chunks/UiEditorToolbar.js +4 -13
  282. package/vue/chunks/UiFloatingActionButton.js +7 -21
  283. package/vue/chunks/UiFormField.js +15 -12
  284. package/vue/chunks/UiGrid.js +3 -12
  285. package/vue/chunks/UiIcon.js +20 -43
  286. package/vue/chunks/UiIconButton.js +16 -28
  287. package/vue/chunks/UiInput.js +20 -25
  288. package/vue/chunks/UiMenu.js +29 -33
  289. package/vue/chunks/UiMenuItem.js +4 -10
  290. package/vue/chunks/UiPopover.js +28 -29
  291. package/vue/chunks/UiRadio.js +36 -39
  292. package/vue/chunks/UiRadioGroup.js +30 -34
  293. package/vue/chunks/UiReel.js +6 -15
  294. package/vue/chunks/UiSearchResultRow.js +6 -19
  295. package/vue/chunks/UiSearchShell.js +25 -28
  296. package/vue/chunks/UiSelect.js +20 -23
  297. package/vue/chunks/UiSeparator.js +2 -8
  298. package/vue/chunks/UiSidebar.js +39 -44
  299. package/vue/chunks/UiStack.js +6 -15
  300. package/vue/chunks/UiSwitch.js +35 -38
  301. package/vue/chunks/UiSwitcher.js +6 -15
  302. package/vue/chunks/UiTabs.js +47 -85
  303. package/vue/chunks/UiTextarea.js +21 -26
  304. package/vue/chunks/UiToastRegion.js +38 -72
  305. package/vue/chunks/UiTooltip.js +34 -35
  306. package/vue/chunks/UiTopBar.js +1 -1
  307. package/vue/chunks/UiTree.js +20 -15
  308. package/vue/chunks/UiTreeItem.js +85 -102
  309. package/vue/components.css +3994 -3801
@@ -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-e80b5857"]]);
135
130
  //#endregion
136
131
  export { UiInput_default as t };
@@ -12,78 +12,74 @@ var UiMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
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
20
  emits: [
21
+ "update:open",
21
22
  "select",
22
23
  "open",
23
24
  "close"
24
25
  ],
25
26
  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
27
  const props = __props;
28
28
  const emit = __emit;
29
29
  const root = ref(null);
30
- const refs = {};
31
- const state_internalOpen = ref(false);
30
+ const internalOpen = ref(false);
31
+ /** The values the styles' :host-state() rules test. */
32
+ const hostState = computed(() => [internalOpen.value && "internalOpen"].filter(Boolean).join(" "));
32
33
  /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
33
- const dispatch = (name, detail) => {
34
+ function dispatch(name, detail) {
34
35
  const declared = {
35
- "select": {
36
- "bubbles": true,
37
- "composed": true,
38
- "cancelable": false
36
+ select: {
37
+ bubbles: true,
38
+ composed: true,
39
+ cancelable: false
39
40
  },
40
- "open": {
41
- "bubbles": true,
42
- "composed": true,
43
- "cancelable": false
41
+ open: {
42
+ bubbles: true,
43
+ composed: true,
44
+ cancelable: false
44
45
  },
45
- "close": {
46
- "bubbles": true,
47
- "composed": true,
48
- "cancelable": false
46
+ close: {
47
+ bubbles: true,
48
+ composed: true,
49
+ cancelable: false
49
50
  }
50
51
  };
51
52
  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) => [
53
+ 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)),
54
+ 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
55
  "open",
55
56
  "reason",
56
57
  "trigger"
57
58
  ].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) => [
59
+ 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
60
  "open",
60
61
  "reason",
61
62
  "trigger"
62
63
  ].includes(key))
63
64
  };
64
65
  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);
66
+ const emitEvent = emit;
67
+ emitEvent(name, detail);
68
+ if (detail !== null && typeof detail === "object" && "open" in detail) emitEvent("update:open", detail["open"]);
66
69
  return root.value?.dispatchEvent(new CustomEvent(name, {
67
70
  bubbles: true,
68
71
  composed: true,
69
72
  ...declared[name],
70
73
  detail
71
74
  })) ?? 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(" "));
75
+ }
80
76
  function read(name) {
81
- if (name === "internalOpen") return state_internalOpen.value;
77
+ if (name === "internalOpen") return internalOpen.value;
82
78
  return props[name];
83
79
  }
84
80
  function write(name, value) {
85
81
  if (name === "internalOpen") {
86
- state_internalOpen.value = value;
82
+ internalOpen.value = value;
87
83
  return true;
88
84
  }
89
85
  throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
@@ -97,7 +93,7 @@ var UiMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
97
93
  get: (_target, name) => typeof name === "string" ? read(name) : void 0,
98
94
  set: (_target, name, value) => typeof name === "string" && write(name, value)
99
95
  }),
100
- refs,
96
+ refs: {},
101
97
  elements: new Proxy({}, { get: (_target, name) => {
102
98
  if (typeof name !== "string" || root.value === null) return void 0;
103
99
  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 +154,6 @@ var UiMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
158
154
  }), [createElementVNode("div", _hoisted_2, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])], 16, _hoisted_1);
159
155
  };
160
156
  }
161
- }), [["__scopeId", "data-v-75d428d7"]]);
157
+ }), [["__scopeId", "data-v-3174acee"]]);
162
158
  //#endregion
163
159
  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-732d4711"]]);
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-49809509"]]);
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 };