@threadlabs/looma 0.19.1 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (517) hide show
  1. package/components/shared/trigger.js +9 -4
  2. package/components/ui-affordance-scope/ui-affordance-scope.html +1 -1
  3. package/components/ui-avatar/ui-avatar.html +6 -6
  4. package/components/ui-avatar-group/ui-avatar-group.html +3 -3
  5. package/components/ui-avatar-group/ui-avatar-group.js +1 -1
  6. package/components/ui-badge/ui-badge.html +3 -3
  7. package/components/ui-breadcrumb-item/ui-breadcrumb-item.html +1 -1
  8. package/components/ui-breadcrumbs/ui-breadcrumbs.html +1 -1
  9. package/components/ui-button/ui-button.html +17 -16
  10. package/components/ui-callout/ui-callout.html +1 -1
  11. package/components/ui-card/ui-card.html +5 -4
  12. package/components/ui-checkbox/ui-checkbox.html +11 -7
  13. package/components/ui-cluster/ui-cluster.html +4 -4
  14. package/components/ui-combobox/ui-combobox.html +299 -74
  15. package/components/ui-combobox/ui-combobox.js +21 -20
  16. package/components/ui-container/ui-container.html +2 -2
  17. package/components/ui-context-menu/ui-context-menu.html +17 -5
  18. package/components/ui-cover/ui-cover.html +1 -1
  19. package/components/ui-description-list/ui-description-list.html +3 -3
  20. package/components/ui-dialog/ui-dialog.html +15 -7
  21. package/components/ui-disclosure/ui-disclosure.html +17 -8
  22. package/components/ui-editable/ui-editable.html +20 -9
  23. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +6 -6
  24. package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +6 -6
  25. package/components/ui-editor-mention-menu-item/ui-editor-mention-menu-item.html +1 -1
  26. package/components/ui-editor-slash-menu/ui-editor-slash-menu.html +6 -6
  27. package/components/ui-editor-slash-menu-group/ui-editor-slash-menu-group.html +1 -1
  28. package/components/ui-editor-slash-menu-item/ui-editor-slash-menu-item.html +2 -2
  29. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +33 -13
  30. package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +107 -29
  31. package/components/ui-editor-table-overlay/ui-editor-table-overlay.js +5 -5
  32. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +48 -22
  33. package/components/ui-floating-action-button/ui-floating-action-button.html +1 -1
  34. package/components/ui-grid/ui-grid.html +2 -2
  35. package/components/ui-icon/ui-icon.html +13 -4
  36. package/components/ui-icon-button/ui-icon-button.html +6 -6
  37. package/components/ui-input/ui-input.html +28 -6
  38. package/components/ui-list/ui-list.html +5 -4
  39. package/components/ui-list-item/ui-list-item.html +2 -2
  40. package/components/ui-listbox/ui-listbox.html +31 -16
  41. package/components/ui-menu/ui-menu.html +18 -5
  42. package/components/ui-menu-group/ui-menu-group.html +1 -1
  43. package/components/ui-menu-item/ui-menu-item.html +14 -9
  44. package/components/ui-meter/ui-meter.html +7 -7
  45. package/components/ui-nav-item/ui-nav-item.html +10 -9
  46. package/components/ui-page-header/ui-page-header.html +1 -1
  47. package/components/ui-popover/ui-popover.html +14 -5
  48. package/components/ui-radio/ui-radio.html +7 -3
  49. package/components/ui-radio-group/ui-radio-group.html +12 -4
  50. package/components/ui-reel/ui-reel.html +3 -3
  51. package/components/ui-scroll-area/ui-scroll-area.html +1 -1
  52. package/components/ui-search-result-row/ui-search-result-row.html +1 -1
  53. package/components/ui-search-shell/ui-search-shell.html +7 -3
  54. package/components/ui-section/ui-section.html +3 -3
  55. package/components/ui-select/ui-select.html +2 -2
  56. package/components/ui-separator/ui-separator.html +2 -2
  57. package/components/ui-sidebar/ui-sidebar.html +13 -6
  58. package/components/ui-spinner/ui-spinner.html +5 -5
  59. package/components/ui-stack/ui-stack.html +3 -3
  60. package/components/ui-status-message/ui-status-message.html +5 -5
  61. package/components/ui-switch/ui-switch.html +16 -3
  62. package/components/ui-switcher/ui-switcher.html +3 -3
  63. package/components/ui-table/ui-table.html +1 -1
  64. package/components/ui-tabs/ui-tabs.html +14 -9
  65. package/components/ui-text/ui-text.html +6 -6
  66. package/components/ui-textarea/ui-textarea.html +10 -2
  67. package/components/ui-toast/ui-toast.html +8 -4
  68. package/components/ui-toast-region/ui-toast-region.html +27 -7
  69. package/components/ui-tooltip/ui-tooltip.html +16 -7
  70. package/components/ui-tree/ui-tree.html +30 -7
  71. package/components/ui-tree-item/ui-tree-item.html +21 -17
  72. package/dist/index.js +1 -1
  73. package/editor/table-overlay.d.ts +1 -1
  74. package/package.json +3 -3
  75. package/styles/ui-action-bar.css +1 -1
  76. package/styles/ui-affordance-scope.css +1 -1
  77. package/styles/ui-avatar-group.css +1 -1
  78. package/styles/ui-avatar.css +1 -1
  79. package/styles/ui-badge.css +1 -1
  80. package/styles/ui-breadcrumb-item.css +1 -1
  81. package/styles/ui-breadcrumbs.css +1 -1
  82. package/styles/ui-button.css +1 -1
  83. package/styles/ui-callout.css +1 -1
  84. package/styles/ui-card.css +1 -1
  85. package/styles/ui-checkbox.css +1 -1
  86. package/styles/ui-cluster.css +1 -1
  87. package/styles/ui-combobox.css +1 -1
  88. package/styles/ui-container.css +1 -1
  89. package/styles/ui-context-menu.css +1 -1
  90. package/styles/ui-cover.css +1 -1
  91. package/styles/ui-description-item.css +1 -1
  92. package/styles/ui-description-list.css +1 -1
  93. package/styles/ui-dialog.css +1 -1
  94. package/styles/ui-disclosure.css +1 -1
  95. package/styles/ui-editable.css +1 -1
  96. package/styles/ui-editor-insert-table-grid.css +1 -1
  97. package/styles/ui-editor-mention-menu-item.css +1 -1
  98. package/styles/ui-editor-mention-menu.css +1 -1
  99. package/styles/ui-editor-slash-menu-group.css +1 -1
  100. package/styles/ui-editor-slash-menu-item.css +1 -1
  101. package/styles/ui-editor-slash-menu.css +1 -1
  102. package/styles/ui-editor-table-context-menu.css +1 -1
  103. package/styles/ui-editor-table-overlay.css +1 -1
  104. package/styles/ui-editor-table-toolbar.css +1 -1
  105. package/styles/ui-editor-toolbar.css +1 -1
  106. package/styles/ui-floating-action-button.css +1 -1
  107. package/styles/ui-form-field.css +1 -1
  108. package/styles/ui-grid.css +1 -1
  109. package/styles/ui-icon-button.css +1 -1
  110. package/styles/ui-icon.css +1 -1
  111. package/styles/ui-input-group.css +1 -1
  112. package/styles/ui-input.css +1 -1
  113. package/styles/ui-list-item.css +1 -1
  114. package/styles/ui-list.css +1 -1
  115. package/styles/ui-listbox.css +1 -1
  116. package/styles/ui-menu-group.css +1 -1
  117. package/styles/ui-menu-item.css +1 -1
  118. package/styles/ui-menu.css +1 -1
  119. package/styles/ui-meter.css +1 -1
  120. package/styles/ui-nav-item.css +1 -1
  121. package/styles/ui-page-header.css +1 -1
  122. package/styles/ui-popover.css +1 -1
  123. package/styles/ui-radio-group.css +1 -1
  124. package/styles/ui-radio.css +1 -1
  125. package/styles/ui-reel.css +1 -1
  126. package/styles/ui-scroll-area.css +1 -1
  127. package/styles/ui-search-result-row.css +1 -1
  128. package/styles/ui-search-shell.css +1 -1
  129. package/styles/ui-section.css +1 -1
  130. package/styles/ui-select.css +1 -1
  131. package/styles/ui-separator.css +1 -1
  132. package/styles/ui-sidebar.css +1 -1
  133. package/styles/ui-spinner.css +1 -1
  134. package/styles/ui-stack.css +1 -1
  135. package/styles/ui-status-message.css +1 -1
  136. package/styles/ui-switch.css +1 -1
  137. package/styles/ui-switcher.css +1 -1
  138. package/styles/ui-table.css +1 -1
  139. package/styles/ui-tabs.css +1 -1
  140. package/styles/ui-text.css +1 -1
  141. package/styles/ui-textarea.css +1 -1
  142. package/styles/ui-toast-region.css +1 -1
  143. package/styles/ui-toast.css +1 -1
  144. package/styles/ui-tooltip.css +1 -1
  145. package/styles/ui-top-bar.css +1 -1
  146. package/styles/ui-tree-item.css +1 -1
  147. package/styles/ui-tree.css +1 -1
  148. package/vanilla/UiActionBar.d.ts +1 -1
  149. package/vanilla/UiActionBar.js +5 -1
  150. package/vanilla/UiAffordanceScope.d.ts +1 -1
  151. package/vanilla/UiAffordanceScope.js +3 -2
  152. package/vanilla/UiAvatar.d.ts +1 -1
  153. package/vanilla/UiAvatar.js +4 -3
  154. package/vanilla/UiAvatarGroup.d.ts +1 -1
  155. package/vanilla/UiAvatarGroup.js +3 -2
  156. package/vanilla/UiBadge.d.ts +1 -1
  157. package/vanilla/UiBadge.js +2 -1
  158. package/vanilla/UiBreadcrumbItem.d.ts +1 -1
  159. package/vanilla/UiBreadcrumbItem.js +2 -1
  160. package/vanilla/UiBreadcrumbs.d.ts +1 -1
  161. package/vanilla/UiBreadcrumbs.js +4 -7
  162. package/vanilla/UiButton.d.ts +1 -1
  163. package/vanilla/UiButton.js +6 -4
  164. package/vanilla/UiCallout.d.ts +1 -1
  165. package/vanilla/UiCallout.js +3 -2
  166. package/vanilla/UiCard.d.ts +1 -1
  167. package/vanilla/UiCard.js +6 -2
  168. package/vanilla/UiCheckbox.d.ts +1 -1
  169. package/vanilla/UiCheckbox.js +4 -2
  170. package/vanilla/UiCluster.d.ts +1 -1
  171. package/vanilla/UiCluster.js +2 -1
  172. package/vanilla/UiCombobox.d.ts +3 -2
  173. package/vanilla/UiCombobox.js +8 -2
  174. package/vanilla/UiContainer.d.ts +1 -1
  175. package/vanilla/UiContainer.js +2 -1
  176. package/vanilla/UiContextMenu.d.ts +1 -1
  177. package/vanilla/UiContextMenu.js +3 -2
  178. package/vanilla/UiCover.d.ts +1 -1
  179. package/vanilla/UiCover.js +4 -5
  180. package/vanilla/UiDescriptionItem.d.ts +1 -1
  181. package/vanilla/UiDescriptionItem.js +4 -7
  182. package/vanilla/UiDescriptionList.d.ts +1 -1
  183. package/vanilla/UiDescriptionList.js +2 -1
  184. package/vanilla/UiDialog.d.ts +1 -1
  185. package/vanilla/UiDialog.js +4 -2
  186. package/vanilla/UiDisclosure.d.ts +1 -1
  187. package/vanilla/UiDisclosure.js +4 -2
  188. package/vanilla/UiEditable.d.ts +1 -1
  189. package/vanilla/UiEditable.js +2 -2
  190. package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
  191. package/vanilla/UiEditorInsertTableGrid.js +1 -1
  192. package/vanilla/UiEditorMentionMenu.d.ts +1 -1
  193. package/vanilla/UiEditorMentionMenu.js +5 -2
  194. package/vanilla/UiEditorMentionMenuItem.d.ts +1 -1
  195. package/vanilla/UiEditorMentionMenuItem.js +3 -1
  196. package/vanilla/UiEditorSlashMenu.d.ts +1 -1
  197. package/vanilla/UiEditorSlashMenu.js +6 -2
  198. package/vanilla/UiEditorSlashMenuGroup.d.ts +1 -1
  199. package/vanilla/UiEditorSlashMenuGroup.js +4 -7
  200. package/vanilla/UiEditorSlashMenuItem.d.ts +1 -1
  201. package/vanilla/UiEditorSlashMenuItem.js +2 -1
  202. package/vanilla/UiEditorTableContextMenu.d.ts +1 -1
  203. package/vanilla/UiEditorTableContextMenu.js +2 -2
  204. package/vanilla/UiEditorTableOverlay.d.ts +12 -2
  205. package/vanilla/UiEditorTableOverlay.js +2 -2
  206. package/vanilla/UiEditorTableToolbar.d.ts +1 -1
  207. package/vanilla/UiEditorTableToolbar.js +2 -2
  208. package/vanilla/UiEditorToolbar.d.ts +1 -1
  209. package/vanilla/UiEditorToolbar.js +2 -1
  210. package/vanilla/UiFloatingActionButton.d.ts +1 -1
  211. package/vanilla/UiFloatingActionButton.js +2 -1
  212. package/vanilla/UiFormField.d.ts +1 -1
  213. package/vanilla/UiFormField.js +6 -1
  214. package/vanilla/UiGrid.d.ts +1 -1
  215. package/vanilla/UiGrid.js +4 -3
  216. package/vanilla/UiIcon.d.ts +1 -1
  217. package/vanilla/UiIcon.js +1 -1
  218. package/vanilla/UiIconButton.d.ts +1 -1
  219. package/vanilla/UiIconButton.js +4 -3
  220. package/vanilla/UiInput.d.ts +5 -4
  221. package/vanilla/UiInput.js +16 -13
  222. package/vanilla/UiInputGroup.d.ts +1 -1
  223. package/vanilla/UiInputGroup.js +5 -1
  224. package/vanilla/UiList.d.ts +1 -1
  225. package/vanilla/UiList.js +4 -2
  226. package/vanilla/UiListItem.d.ts +1 -1
  227. package/vanilla/UiListItem.js +5 -1
  228. package/vanilla/UiListbox.d.ts +1 -1
  229. package/vanilla/UiListbox.js +3 -2
  230. package/vanilla/UiMenu.d.ts +1 -1
  231. package/vanilla/UiMenu.js +3 -2
  232. package/vanilla/UiMenuGroup.d.ts +1 -1
  233. package/vanilla/UiMenuGroup.js +2 -1
  234. package/vanilla/UiMenuItem.d.ts +1 -1
  235. package/vanilla/UiMenuItem.js +6 -2
  236. package/vanilla/UiMeter.d.ts +1 -1
  237. package/vanilla/UiMeter.js +2 -2
  238. package/vanilla/UiNavItem.d.ts +2 -2
  239. package/vanilla/UiNavItem.js +11 -5
  240. package/vanilla/UiPageHeader.d.ts +1 -1
  241. package/vanilla/UiPageHeader.js +8 -5
  242. package/vanilla/UiPopover.d.ts +1 -1
  243. package/vanilla/UiPopover.js +3 -2
  244. package/vanilla/UiRadio.d.ts +1 -1
  245. package/vanilla/UiRadio.js +4 -2
  246. package/vanilla/UiRadioGroup.d.ts +1 -1
  247. package/vanilla/UiRadioGroup.js +3 -2
  248. package/vanilla/UiReel.d.ts +1 -1
  249. package/vanilla/UiReel.js +2 -1
  250. package/vanilla/UiScrollArea.d.ts +1 -1
  251. package/vanilla/UiScrollArea.js +3 -2
  252. package/vanilla/UiSearchResultRow.d.ts +1 -1
  253. package/vanilla/UiSearchResultRow.js +6 -1
  254. package/vanilla/UiSearchShell.d.ts +1 -1
  255. package/vanilla/UiSearchShell.js +6 -2
  256. package/vanilla/UiSection.d.ts +1 -1
  257. package/vanilla/UiSection.js +5 -2
  258. package/vanilla/UiSelect.d.ts +1 -1
  259. package/vanilla/UiSelect.js +3 -2
  260. package/vanilla/UiSeparator.d.ts +1 -1
  261. package/vanilla/UiSeparator.js +3 -7
  262. package/vanilla/UiSidebar.d.ts +1 -1
  263. package/vanilla/UiSidebar.js +3 -2
  264. package/vanilla/UiSpinner.d.ts +1 -1
  265. package/vanilla/UiSpinner.js +2 -2
  266. package/vanilla/UiStack.d.ts +1 -1
  267. package/vanilla/UiStack.js +2 -1
  268. package/vanilla/UiStatusMessage.d.ts +1 -1
  269. package/vanilla/UiStatusMessage.js +4 -2
  270. package/vanilla/UiSwitch.d.ts +1 -1
  271. package/vanilla/UiSwitch.js +4 -2
  272. package/vanilla/UiSwitcher.d.ts +1 -1
  273. package/vanilla/UiSwitcher.js +3 -2
  274. package/vanilla/UiTable.d.ts +1 -1
  275. package/vanilla/UiTable.js +3 -2
  276. package/vanilla/UiTabs.d.ts +1 -1
  277. package/vanilla/UiTabs.js +4 -2
  278. package/vanilla/UiText.d.ts +1 -1
  279. package/vanilla/UiText.js +13 -2
  280. package/vanilla/UiTextarea.d.ts +1 -1
  281. package/vanilla/UiTextarea.js +3 -3
  282. package/vanilla/UiToast.d.ts +1 -1
  283. package/vanilla/UiToast.js +4 -2
  284. package/vanilla/UiToastRegion.d.ts +1 -1
  285. package/vanilla/UiToastRegion.js +3 -2
  286. package/vanilla/UiTooltip.d.ts +1 -1
  287. package/vanilla/UiTooltip.js +3 -2
  288. package/vanilla/UiTopBar.d.ts +1 -1
  289. package/vanilla/UiTopBar.js +5 -1
  290. package/vanilla/UiTree.d.ts +1 -1
  291. package/vanilla/UiTree.js +3 -2
  292. package/vanilla/UiTreeItem.d.ts +1 -1
  293. package/vanilla/UiTreeItem.js +8 -4
  294. package/vue/UiActionBar.vue +33 -2
  295. package/vue/UiAffordanceScope.d.ts +23 -8
  296. package/vue/UiAffordanceScope.vue +90 -17
  297. package/vue/UiAvatar.d.ts +77 -19
  298. package/vue/UiAvatar.vue +151 -31
  299. package/vue/UiAvatarGroup.d.ts +50 -13
  300. package/vue/UiAvatarGroup.vue +121 -23
  301. package/vue/UiBadge.d.ts +32 -10
  302. package/vue/UiBadge.vue +104 -17
  303. package/vue/UiBreadcrumbItem.d.ts +14 -6
  304. package/vue/UiBreadcrumbItem.vue +82 -15
  305. package/vue/UiBreadcrumbs.d.ts +14 -6
  306. package/vue/UiBreadcrumbs.vue +78 -10
  307. package/vue/UiButton.d.ts +122 -27
  308. package/vue/UiButton.vue +288 -64
  309. package/vue/UiCallout.d.ts +14 -6
  310. package/vue/UiCallout.vue +84 -16
  311. package/vue/UiCard.d.ts +41 -12
  312. package/vue/UiCard.vue +149 -25
  313. package/vue/UiCheckbox.d.ts +85 -28
  314. package/vue/UiCheckbox.vue +173 -43
  315. package/vue/UiCluster.d.ts +41 -7
  316. package/vue/UiCluster.vue +122 -13
  317. package/vue/UiCombobox.d.ts +303 -110
  318. package/vue/UiCombobox.vue +723 -412
  319. package/vue/UiContainer.d.ts +23 -5
  320. package/vue/UiContainer.vue +89 -9
  321. package/vue/UiContextMenu.d.ts +38 -23
  322. package/vue/UiContextMenu.vue +113 -38
  323. package/vue/UiCover.d.ts +14 -6
  324. package/vue/UiCover.vue +76 -12
  325. package/vue/UiDescriptionItem.d.ts +14 -6
  326. package/vue/UiDescriptionItem.vue +78 -11
  327. package/vue/UiDescriptionList.d.ts +32 -9
  328. package/vue/UiDescriptionList.vue +106 -16
  329. package/vue/UiDialog.d.ts +89 -30
  330. package/vue/UiDialog.vue +168 -38
  331. package/vue/UiDisclosure.d.ts +70 -27
  332. package/vue/UiDisclosure.vue +149 -36
  333. package/vue/UiEditable.d.ts +119 -41
  334. package/vue/UiEditable.vue +220 -62
  335. package/vue/UiEditorInsertTableGrid.d.ts +46 -17
  336. package/vue/UiEditorInsertTableGrid.vue +215 -40
  337. package/vue/UiEditorMentionMenu.d.ts +128 -41
  338. package/vue/UiEditorMentionMenu.vue +211 -37
  339. package/vue/UiEditorMentionMenuItem.d.ts +32 -10
  340. package/vue/UiEditorMentionMenuItem.vue +98 -17
  341. package/vue/UiEditorSlashMenu.d.ts +110 -37
  342. package/vue/UiEditorSlashMenu.vue +189 -31
  343. package/vue/UiEditorSlashMenuGroup.d.ts +14 -6
  344. package/vue/UiEditorSlashMenuGroup.vue +80 -12
  345. package/vue/UiEditorSlashMenuItem.d.ts +50 -14
  346. package/vue/UiEditorSlashMenuItem.vue +120 -23
  347. package/vue/UiEditorTableContextMenu.d.ts +64 -20
  348. package/vue/UiEditorTableContextMenu.vue +326 -91
  349. package/vue/UiEditorTableOverlay.d.ts +170 -44
  350. package/vue/UiEditorTableOverlay.vue +420 -149
  351. package/vue/UiEditorTableToolbar.d.ts +64 -20
  352. package/vue/UiEditorTableToolbar.vue +344 -107
  353. package/vue/UiEditorToolbar.d.ts +14 -6
  354. package/vue/UiEditorToolbar.vue +79 -15
  355. package/vue/UiFloatingActionButton.d.ts +32 -10
  356. package/vue/UiFloatingActionButton.vue +96 -18
  357. package/vue/UiFormField.d.ts +32 -10
  358. package/vue/UiFormField.vue +99 -19
  359. package/vue/UiGrid.d.ts +32 -6
  360. package/vue/UiGrid.vue +95 -11
  361. package/vue/UiIcon.d.ts +14 -6
  362. package/vue/UiIcon.vue +99 -14
  363. package/vue/UiIconButton.d.ts +77 -19
  364. package/vue/UiIconButton.vue +176 -39
  365. package/vue/UiInput.d.ts +50 -19
  366. package/vue/UiInput.vue +326 -33
  367. package/vue/UiInputGroup.d.ts +14 -6
  368. package/vue/UiInputGroup.vue +79 -15
  369. package/vue/UiList.d.ts +41 -12
  370. package/vue/UiList.vue +125 -22
  371. package/vue/UiListItem.d.ts +23 -8
  372. package/vue/UiListItem.vue +88 -16
  373. package/vue/UiListbox.d.ts +86 -27
  374. package/vue/UiListbox.vue +272 -64
  375. package/vue/UiMenu.d.ts +69 -33
  376. package/vue/UiMenu.vue +142 -38
  377. package/vue/UiMenuGroup.d.ts +14 -6
  378. package/vue/UiMenuGroup.vue +80 -11
  379. package/vue/UiMenuItem.d.ts +61 -25
  380. package/vue/UiMenuItem.vue +174 -45
  381. package/vue/UiMeter.d.ts +68 -18
  382. package/vue/UiMeter.vue +215 -41
  383. package/vue/UiNavItem.d.ts +50 -11
  384. package/vue/UiNavItem.vue +163 -29
  385. package/vue/UiPageHeader.d.ts +14 -6
  386. package/vue/UiPageHeader.vue +75 -12
  387. package/vue/UiPopover.d.ts +43 -21
  388. package/vue/UiPopover.vue +147 -27
  389. package/vue/UiRadio.d.ts +67 -24
  390. package/vue/UiRadio.vue +147 -36
  391. package/vue/UiRadioGroup.d.ts +79 -29
  392. package/vue/UiRadioGroup.vue +162 -41
  393. package/vue/UiReel.d.ts +32 -6
  394. package/vue/UiReel.vue +97 -11
  395. package/vue/UiScrollArea.d.ts +14 -6
  396. package/vue/UiScrollArea.vue +83 -14
  397. package/vue/UiSearchResultRow.d.ts +23 -8
  398. package/vue/UiSearchResultRow.vue +86 -16
  399. package/vue/UiSearchShell.d.ts +48 -19
  400. package/vue/UiSearchShell.vue +120 -26
  401. package/vue/UiSection.d.ts +32 -10
  402. package/vue/UiSection.vue +103 -17
  403. package/vue/UiSelect.d.ts +59 -17
  404. package/vue/UiSelect.vue +140 -29
  405. package/vue/UiSeparator.d.ts +14 -6
  406. package/vue/UiSeparator.vue +80 -9
  407. package/vue/UiSidebar.d.ts +95 -31
  408. package/vue/UiSidebar.vue +172 -39
  409. package/vue/UiSpinner.d.ts +23 -8
  410. package/vue/UiSpinner.vue +115 -24
  411. package/vue/UiStack.d.ts +32 -6
  412. package/vue/UiStack.vue +107 -11
  413. package/vue/UiStatusMessage.d.ts +32 -10
  414. package/vue/UiStatusMessage.vue +109 -19
  415. package/vue/UiSwitch.d.ts +67 -24
  416. package/vue/UiSwitch.vue +147 -36
  417. package/vue/UiSwitcher.d.ts +41 -7
  418. package/vue/UiSwitcher.vue +118 -15
  419. package/vue/UiTable.d.ts +23 -8
  420. package/vue/UiTable.vue +91 -17
  421. package/vue/UiTabs.d.ts +66 -23
  422. package/vue/UiTabs.vue +230 -44
  423. package/vue/UiText.d.ts +68 -18
  424. package/vue/UiText.vue +308 -48
  425. package/vue/UiTextarea.d.ts +84 -21
  426. package/vue/UiTextarea.vue +172 -38
  427. package/vue/UiToast.d.ts +28 -13
  428. package/vue/UiToast.vue +103 -24
  429. package/vue/UiToastRegion.d.ts +29 -14
  430. package/vue/UiToastRegion.vue +202 -47
  431. package/vue/UiTooltip.d.ts +81 -31
  432. package/vue/UiTooltip.vue +192 -37
  433. package/vue/UiTopBar.vue +33 -2
  434. package/vue/UiTree.d.ts +72 -29
  435. package/vue/UiTree.vue +170 -49
  436. package/vue/UiTreeItem.d.ts +136 -35
  437. package/vue/UiTreeItem.vue +227 -61
  438. package/vue/chunks/UiActionBar.js +16 -3
  439. package/vue/chunks/UiAffordanceScope.js +66 -11
  440. package/vue/chunks/UiAvatar.js +121 -20
  441. package/vue/chunks/UiAvatarGroup.js +94 -15
  442. package/vue/chunks/UiBadge.js +82 -10
  443. package/vue/chunks/UiBreadcrumbItem.js +43 -9
  444. package/vue/chunks/UiBreadcrumbs.js +41 -5
  445. package/vue/chunks/UiButton.js +237 -51
  446. package/vue/chunks/UiCallout.js +53 -11
  447. package/vue/chunks/UiCard.js +145 -18
  448. package/vue/chunks/UiCheckbox.js +130 -30
  449. package/vue/chunks/UiCluster.js +99 -12
  450. package/vue/chunks/UiCombobox.js +545 -162
  451. package/vue/chunks/UiContainer.js +65 -7
  452. package/vue/chunks/UiContextMenu.js +56 -11
  453. package/vue/chunks/UiCover.js +41 -6
  454. package/vue/chunks/UiDescriptionItem.js +39 -4
  455. package/vue/chunks/UiDescriptionList.js +80 -10
  456. package/vue/chunks/UiDialog.js +125 -18
  457. package/vue/chunks/UiDisclosure.js +102 -17
  458. package/vue/chunks/UiEditable.js +154 -29
  459. package/vue/chunks/UiEditorInsertTableGrid.js +154 -31
  460. package/vue/chunks/UiEditorMentionMenu.js +221 -18
  461. package/vue/chunks/UiEditorMentionMenuItem.js +64 -7
  462. package/vue/chunks/UiEditorSlashMenu.js +201 -14
  463. package/vue/chunks/UiEditorSlashMenuGroup.js +43 -9
  464. package/vue/chunks/UiEditorSlashMenuItem.js +80 -14
  465. package/vue/chunks/UiEditorTableContextMenu.js +220 -49
  466. package/vue/chunks/UiEditorTableOverlay.js +390 -85
  467. package/vue/chunks/UiEditorTableToolbar.js +248 -71
  468. package/vue/chunks/UiEditorToolbar.js +44 -10
  469. package/vue/chunks/UiFloatingActionButton.js +57 -9
  470. package/vue/chunks/UiFormField.js +63 -12
  471. package/vue/chunks/UiGrid.js +80 -9
  472. package/vue/chunks/UiIcon.js +73 -16
  473. package/vue/chunks/UiIconButton.js +126 -28
  474. package/vue/chunks/UiInput.js +328 -22
  475. package/vue/chunks/UiInputGroup.js +44 -10
  476. package/vue/chunks/UiList.js +104 -15
  477. package/vue/chunks/UiListItem.js +57 -8
  478. package/vue/chunks/UiListbox.js +208 -49
  479. package/vue/chunks/UiMenu.js +88 -15
  480. package/vue/chunks/UiMenuGroup.js +41 -5
  481. package/vue/chunks/UiMenuItem.js +111 -32
  482. package/vue/chunks/UiMeter.js +166 -36
  483. package/vue/chunks/UiNavItem.js +133 -37
  484. package/vue/chunks/UiPageHeader.js +41 -6
  485. package/vue/chunks/UiPopover.js +81 -11
  486. package/vue/chunks/UiRadio.js +115 -24
  487. package/vue/chunks/UiRadioGroup.js +108 -19
  488. package/vue/chunks/UiReel.js +81 -10
  489. package/vue/chunks/UiScrollArea.js +47 -10
  490. package/vue/chunks/UiSearchResultRow.js +47 -8
  491. package/vue/chunks/UiSearchShell.js +84 -24
  492. package/vue/chunks/UiSection.js +77 -10
  493. package/vue/chunks/UiSelect.js +108 -20
  494. package/vue/chunks/UiSeparator.js +41 -5
  495. package/vue/chunks/UiSidebar.js +136 -20
  496. package/vue/chunks/UiSpinner.js +64 -19
  497. package/vue/chunks/UiStack.js +87 -10
  498. package/vue/chunks/UiStatusMessage.js +82 -12
  499. package/vue/chunks/UiSwitch.js +115 -24
  500. package/vue/chunks/UiSwitcher.js +103 -15
  501. package/vue/chunks/UiTable.js +63 -11
  502. package/vue/chunks/UiTabs.js +170 -30
  503. package/vue/chunks/UiText.js +365 -38
  504. package/vue/chunks/UiTextarea.js +132 -26
  505. package/vue/chunks/UiToast.js +70 -12
  506. package/vue/chunks/UiToastRegion.js +154 -33
  507. package/vue/chunks/UiTooltip.js +124 -16
  508. package/vue/chunks/UiTopBar.js +16 -3
  509. package/vue/chunks/UiTree.js +107 -15
  510. package/vue/chunks/UiTreeItem.js +167 -43
  511. package/vue/chunks/control.js +171 -0
  512. package/vue/chunks/host.js +170 -27
  513. package/vue/chunks/props.js +477 -0
  514. package/vue/components.css +1192 -1192
  515. package/vue/editor/index.js +58 -15
  516. package/vue/editor/primitives.d.ts +52 -2
  517. package/vue/host.ts +370 -39
@@ -1,7 +1,13 @@
1
1
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
- import { computed, createElementBlock, createElementVNode, defineComponent, mergeProps, openBlock, renderSlot } from "vue";
2
+ import { t as checkedProp } from "./props.js";
3
+ import { computed, createElementBlock, createElementVNode, defineComponent, getCurrentInstance, mergeProps, openBlock, renderSlot, watchSyncEffect } from "vue";
3
4
  //#region .build/vue/UiListItem.vue?vue&type=script&setup=true&lang.ts
4
- var _hoisted_1 = ["aria-current", "data-ui-list-item-state"];
5
+ var _hoisted_1 = [
6
+ "aria-current",
7
+ "data-current",
8
+ "data-variant",
9
+ "data-ui-list-item-state"
10
+ ];
5
11
  var _hoisted_2 = { class: "leading" };
6
12
  var _hoisted_3 = { class: "content" };
7
13
  var _hoisted_4 = { class: "title" };
@@ -14,18 +20,61 @@ var UiListItem_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
14
20
  __name: "UiListItem",
15
21
  props: {
16
22
  current: {
17
- type: Boolean,
23
+ type: null,
18
24
  default: false
19
25
  },
20
- variant: { default: "row" }
26
+ variant: {
27
+ type: null,
28
+ default: "row"
29
+ }
21
30
  },
22
31
  setup(__props) {
23
32
  const props = __props;
33
+ const checkedProps = computed(() => ({
34
+ current: checkedProp(props["current"], {
35
+ kind: "terminal",
36
+ name: "boolean"
37
+ }, false, "current", void 0, void 0),
38
+ variant: checkedProp(props["variant"], {
39
+ kind: "terminal",
40
+ name: "keyword"
41
+ }, false, "variant", void 0, ["row", "card"])
42
+ }));
43
+ checkedProps.value;
44
+ watchSyncEffect(() => {
45
+ checkedProps.value;
46
+ });
47
+ function nativeAttrs(attrs) {
48
+ const names = Object.keys(attrs);
49
+ if (!names.some((name) => Object.hasOwn(Object.prototype, name))) return attrs;
50
+ return Object.fromEntries(names.map((name) => [Object.hasOwn(Object.prototype, name) ? name === "__proto__" ? "__Proto__" : name[0].toUpperCase() + name.slice(1) : name, attrs[name]]));
51
+ }
52
+ const componentInstance = getCurrentInstance();
53
+ function reflectedProp(name, kebab, value, fallback, bound, separator) {
54
+ const incoming = componentInstance?.vnode.props;
55
+ if (!bound && (incoming === null || incoming === void 0 || !Object.hasOwn(incoming, name) && !Object.hasOwn(incoming, kebab))) return fallback;
56
+ if (value === null || value === void 0) return void 0;
57
+ return Array.isArray(value) && separator !== void 0 ? value.join(separator) : typeof value === "object" ? JSON.stringify(value) : String(value);
58
+ }
59
+ const hydrationNode = getCurrentInstance()?.vnode.el;
60
+ if (typeof window !== "undefined" && hydrationNode != null && (!(hydrationNode instanceof Element) || hydrationNode.localName !== "li")) throw Object.assign(/* @__PURE__ */ new Error("HR005: Server markup for <ui-list-item> has an incompatible root."), {
61
+ name: "HtmlDiagnosticError",
62
+ diagnostic: Object.freeze({
63
+ code: "HR005",
64
+ message: "Server markup for <ui-list-item> has an incompatible root."
65
+ })
66
+ });
24
67
  /** The values the styles' :host-state() rules test. */
25
- const hostState = computed(() => [props.variant && `variant variant=${props.variant}`, props.current && "current"].filter(Boolean).join(" "));
68
+ const hostState = computed(() => [
69
+ checkedProps.value.variant && "variant",
70
+ checkedProps.value.variant != null && `variant=${encodeURIComponent(checkedProps.value.variant)}`,
71
+ checkedProps.value.current && "current"
72
+ ].filter(Boolean).join(" "));
26
73
  return (_ctx, _cache) => {
27
- return openBlock(), createElementBlock("li", mergeProps({ "data-component": "ui-list-item" }, _ctx.$attrs, {
28
- "aria-current": __props.current,
74
+ return openBlock(), createElementBlock("li", mergeProps({ "data-component": "ui-list-item" }, nativeAttrs(_ctx.$attrs), {
75
+ "aria-current": checkedProps.value.current ?? void 0,
76
+ "data-current": reflectedProp("current", "current", checkedProps.value.current, void 0, false),
77
+ "data-variant": reflectedProp("variant", "variant", checkedProps.value.variant, void 0, false),
29
78
  "data-ui-list-item-state": hostState.value || void 0
30
79
  }), [
31
80
  createElementVNode("span", _hoisted_2, [renderSlot(_ctx.$slots, "leading")]),
@@ -34,6 +83,6 @@ var UiListItem_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
34
83
  ], 16, _hoisted_1);
35
84
  };
36
85
  }
37
- }), [["__scopeId", "data-v-3d168104"]]);
86
+ }), [["__scopeId", "data-v-4933b673"]]);
38
87
  //#endregion
39
88
  export { UiListItem_default as t };
@@ -1,15 +1,23 @@
1
1
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
- import { n as useComponentHost, t as createDispatch } from "./host.js";
2
+ import { r as useComponentHost, t as createDispatch } from "./host.js";
3
+ import { t as checkedProp } from "./props.js";
3
4
  import { t as UiScrollArea_default } from "./UiScrollArea.js";
4
- import { Fragment, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, mergeProps, normalizeClass, openBlock, ref, renderList, renderSlot, toDisplayString, useTemplateRef, withCtx } from "vue";
5
- import * as controllerModule from "@threadlabs/looma/components/ui-listbox/ui-listbox.js";
5
+ import { Fragment, computed, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, getCurrentInstance, h, mergeProps, normalizeClass, openBlock, ref, renderList, renderSlot, toDisplayString, unref, useTemplateRef, watchSyncEffect, withCtx } from "vue";
6
6
  //#region .build/vue/UiListbox.vue?vue&type=script&setup=true&lang.ts
7
7
  var _hoisted_1 = [
8
8
  "tabindex",
9
9
  "aria-multiselectable",
10
10
  "aria-disabled",
11
11
  "aria-required",
12
- "aria-invalid"
12
+ "aria-invalid",
13
+ "data-disabled",
14
+ "data-invalid",
15
+ "data-multiple",
16
+ "data-name",
17
+ "data-required",
18
+ "data-rows",
19
+ "data-value",
20
+ "data-values"
13
21
  ];
14
22
  var _hoisted_2 = [
15
23
  "data-multiple",
@@ -25,10 +33,10 @@ var _hoisted_3 = [
25
33
  "required",
26
34
  "name"
27
35
  ];
28
- var _hoisted_4 = ["name", "value"];
36
+ var _hoisted_4 = ["name", "^value"];
29
37
  var _hoisted_5 = [
30
38
  "required",
31
- "checked",
39
+ "^checked",
32
40
  "disabled"
33
41
  ];
34
42
  //#endregion
@@ -38,25 +46,37 @@ var UiListbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
38
46
  __name: "UiListbox",
39
47
  props: {
40
48
  disabled: {
41
- type: Boolean,
49
+ type: null,
42
50
  default: false
43
51
  },
44
52
  invalid: {
45
- type: Boolean,
53
+ type: null,
46
54
  default: false
47
55
  },
48
56
  multiple: {
49
- type: Boolean,
57
+ type: null,
50
58
  default: false
51
59
  },
52
- name: { default: "" },
60
+ name: {
61
+ type: null,
62
+ default: ""
63
+ },
53
64
  required: {
54
- type: Boolean,
65
+ type: null,
55
66
  default: false
56
67
  },
57
- rows: { default: 5 },
58
- value: {},
59
- values: {}
68
+ rows: {
69
+ type: null,
70
+ default: 5
71
+ },
72
+ value: {
73
+ type: null,
74
+ default: null
75
+ },
76
+ values: {
77
+ type: null,
78
+ default: null
79
+ }
60
80
  },
61
81
  emits: [
62
82
  "update:value",
@@ -65,6 +85,84 @@ var UiListbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
65
85
  ],
66
86
  setup(__props, { emit: __emit }) {
67
87
  const props = __props;
88
+ const checkedProps = computed(() => ({
89
+ disabled: checkedProp(props["disabled"], {
90
+ kind: "terminal",
91
+ name: "boolean"
92
+ }, false, "disabled", void 0, void 0),
93
+ invalid: checkedProp(props["invalid"], {
94
+ kind: "terminal",
95
+ name: "boolean"
96
+ }, false, "invalid", void 0, void 0),
97
+ multiple: checkedProp(props["multiple"], {
98
+ kind: "terminal",
99
+ name: "boolean"
100
+ }, false, "multiple", void 0, void 0),
101
+ name: checkedProp(props["name"], {
102
+ kind: "terminal",
103
+ name: "string"
104
+ }, false, "name", void 0, void 0),
105
+ required: checkedProp(props["required"], {
106
+ kind: "terminal",
107
+ name: "boolean"
108
+ }, false, "required", void 0, void 0),
109
+ rows: checkedProp(props["rows"], {
110
+ kind: "terminal",
111
+ name: "number"
112
+ }, false, "rows", void 0, void 0),
113
+ value: checkedProp(props["value"], {
114
+ kind: "terminal",
115
+ name: "string"
116
+ }, false, "value", void 0, void 0),
117
+ values: checkedProp(props["values"], {
118
+ kind: "list",
119
+ item: {
120
+ kind: "terminal",
121
+ name: "string"
122
+ }
123
+ }, false, "values", void 0, void 0)
124
+ }));
125
+ checkedProps.value;
126
+ watchSyncEffect(() => {
127
+ checkedProps.value;
128
+ });
129
+ function nativeAttrs(attrs) {
130
+ const names = Object.keys(attrs);
131
+ if (!names.some((name) => Object.hasOwn(Object.prototype, name))) return attrs;
132
+ return Object.fromEntries(names.map((name) => [Object.hasOwn(Object.prototype, name) ? name === "__proto__" ? "__Proto__" : name[0].toUpperCase() + name.slice(1) : name, attrs[name]]));
133
+ }
134
+ const KeyedFailure = defineComponent({
135
+ props: { error: {
136
+ type: null,
137
+ required: true
138
+ } },
139
+ setup(props) {
140
+ return () => {
141
+ throw props.error;
142
+ };
143
+ }
144
+ });
145
+ const KeyedBoundary = defineComponent({ setup(_props, { slots }) {
146
+ let last = [];
147
+ return () => {
148
+ try {
149
+ last = slots.default?.() ?? [];
150
+ return last;
151
+ } catch (error) {
152
+ if (!(error instanceof Error) || error.diagnostic?.code !== "HR004") throw error;
153
+ if (typeof window === "undefined") throw error;
154
+ return [...last, h(KeyedFailure, { error })];
155
+ }
156
+ };
157
+ } });
158
+ const componentInstance = getCurrentInstance();
159
+ function reflectedProp(name, kebab, value, fallback, bound, separator) {
160
+ const incoming = componentInstance?.vnode.props;
161
+ if (!bound && (incoming === null || incoming === void 0 || !Object.hasOwn(incoming, name) && !Object.hasOwn(incoming, kebab))) return fallback;
162
+ if (value === null || value === void 0) return void 0;
163
+ return Array.isArray(value) && separator !== void 0 ? value.join(separator) : typeof value === "object" ? JSON.stringify(value) : String(value);
164
+ }
165
+ const hydrationInstance = getCurrentInstance();
68
166
  const emit = __emit;
69
167
  const root = ref(null);
70
168
  const choicesElement = useTemplateRef("choices");
@@ -76,6 +174,29 @@ var UiListbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
76
174
  const active = ref(-1);
77
175
  const uid = ref("");
78
176
  const validationError = ref(false);
177
+ let guardedPrevious;
178
+ const guarded = computed(() => {
179
+ if (!(validationError.value == null || typeof validationError.value === "boolean")) return guardedPrevious;
180
+ return guardedPrevious = checkedProps.value.invalid || validationError.value;
181
+ });
182
+ let guardedBindingPrevious;
183
+ const guardedBinding = computed(() => {
184
+ if (!(hasSelection.value == null || typeof hasSelection.value === "boolean")) return guardedBindingPrevious;
185
+ return guardedBindingPrevious = checkedProps.value.required && !hasSelection.value && !checkedProps.value.disabled;
186
+ });
187
+ let guardedBinding2Previous;
188
+ const guardedBinding2 = computed(() => {
189
+ if (!(hasSelection.value == null || typeof hasSelection.value === "boolean")) return guardedBinding2Previous;
190
+ return guardedBinding2Previous = hasSelection.value ? true : void 0;
191
+ });
192
+ const hydrationNode = hydrationInstance?.vnode.el;
193
+ if (typeof window !== "undefined" && hydrationNode != null && (!(hydrationNode instanceof Element) || hydrationNode.localName !== "div")) throw Object.assign(/* @__PURE__ */ new Error("HR005: Server markup for <ui-listbox> has an incompatible root."), {
194
+ name: "HtmlDiagnosticError",
195
+ diagnostic: Object.freeze({
196
+ code: "HR005",
197
+ message: "Server markup for <ui-listbox> has an incompatible root."
198
+ })
199
+ });
79
200
  const isChangeDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && (typeof detail["value"] === "string" || detail["value"] === null) && Array.isArray(detail["values"]) && detail["values"].every((item) => typeof item === "string") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer") && Object.keys(detail).every((key) => [
80
201
  "value",
81
202
  "values",
@@ -85,10 +206,14 @@ var UiListbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
85
206
  checks: { change: isChangeDetail },
86
207
  modeled: ["value", "values"]
87
208
  });
88
- useComponentHost(controllerModule.default, {
209
+ useComponentHost(() => import("@threadlabs/looma/components/ui-listbox/ui-listbox.js"), {
89
210
  root,
90
211
  dispatch,
91
- props,
212
+ controllerSource: {
213
+ specifier: "../components/ui-listbox/ui-listbox.js",
214
+ definition: "./components/ui-listbox/ui-listbox.html"
215
+ },
216
+ props: checkedProps,
92
217
  refs: {
93
218
  choices: choicesElement,
94
219
  options: optionsElement,
@@ -111,20 +236,51 @@ var UiListbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
111
236
  if (value === null || value === void 0 || value === false || typeof value === "object" && !Array.isArray(value)) return void 0;
112
237
  return value === true ? "" : text(value);
113
238
  }
239
+ function uniqueKeys(items, keyOf) {
240
+ const seen = /* @__PURE__ */ new Set();
241
+ for (let index = 0; index < items.length; index += 1) {
242
+ const key = keyOf(items[index], index, {
243
+ index,
244
+ first: index === 0,
245
+ last: index === items.length - 1,
246
+ count: items.length
247
+ });
248
+ if (seen.has(key)) {
249
+ const message = `A keyed list produced duplicate key \`${text(key)}\`.`;
250
+ throw Object.assign(/* @__PURE__ */ new Error(`HR004: ${message}`), {
251
+ name: "HtmlDiagnosticError",
252
+ diagnostic: Object.freeze({
253
+ code: "HR004",
254
+ message
255
+ })
256
+ });
257
+ }
258
+ seen.add(key);
259
+ }
260
+ return items;
261
+ }
114
262
  return (_ctx, _cache) => {
115
263
  return openBlock(), createElementBlock("div", mergeProps({
116
264
  "data-component": "ui-listbox",
117
265
  role: "listbox"
118
- }, _ctx.$attrs, {
266
+ }, nativeAttrs(_ctx.$attrs), {
119
267
  tabindex: attribute({
120
268
  true: "-1",
121
269
  false: "0"
122
- }[`${__props.disabled}`]),
123
- "aria-multiselectable": __props.multiple,
124
- "aria-disabled": __props.disabled,
125
- "aria-required": __props.required,
126
- "aria-invalid": __props.invalid || validationError.value,
127
- style: { "--_rows": __props.rows },
270
+ }[`${checkedProps.value.disabled ?? ""}`]),
271
+ "aria-multiselectable": checkedProps.value.multiple ?? void 0,
272
+ "aria-disabled": checkedProps.value.disabled ?? void 0,
273
+ "aria-required": checkedProps.value.required ?? void 0,
274
+ "aria-invalid": guarded.value,
275
+ style: { "--_rows": checkedProps.value.rows ?? void 0 },
276
+ "data-disabled": reflectedProp("disabled", "disabled", checkedProps.value.disabled, void 0, false),
277
+ "data-invalid": reflectedProp("invalid", "invalid", checkedProps.value.invalid, void 0, false),
278
+ "data-multiple": reflectedProp("multiple", "multiple", checkedProps.value.multiple, void 0, false),
279
+ "data-name": reflectedProp("name", "name", checkedProps.value.name, void 0, false),
280
+ "data-required": reflectedProp("required", "required", checkedProps.value.required, void 0, false),
281
+ "data-rows": reflectedProp("rows", "rows", checkedProps.value.rows, void 0, false),
282
+ "data-value": reflectedProp("value", "value", checkedProps.value.value, void 0, false),
283
+ "data-values": reflectedProp("values", "values", checkedProps.value.values, void 0, false),
128
284
  ref_key: "root",
129
285
  ref: root
130
286
  }), [
@@ -133,37 +289,40 @@ var UiListbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
133
289
  ref_key: "choices",
134
290
  ref: choices
135
291
  }, {
136
- default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(choices.value, (choice) => {
137
- return openBlock(), createElementBlock("div", {
138
- key: choice.index,
139
- class: normalizeClass(["option", { active: choice.index === active.value }]),
140
- role: "option",
141
- "data-ui-choice-option": "",
142
- "data-multiple": __props.multiple ? "" : void 0,
143
- id: `${uid.value}-option-${choice.index}`,
144
- "data-index": choice.index,
145
- "aria-selected": choice.selected,
146
- "aria-disabled": choice.disabled
147
- }, [createElementVNode("span", null, toDisplayString(choice.label), 1)], 10, _hoisted_2);
148
- }), 128))]),
292
+ default: withCtx(() => [createVNode(unref(KeyedBoundary), null, {
293
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(uniqueKeys(choices.value, (choice, index, loop) => choice.index), (choice) => {
294
+ return openBlock(), createElementBlock("div", {
295
+ key: choice.index,
296
+ class: normalizeClass(["option", { active: choice.index === active.value }]),
297
+ role: "option",
298
+ "data-ui-choice-option": "",
299
+ "data-multiple": checkedProps.value.multiple ? "" : void 0,
300
+ id: `${uid.value}-option-${choice.index}`,
301
+ "data-index": choice.index,
302
+ "aria-selected": choice.selected,
303
+ "aria-disabled": choice.disabled
304
+ }, [createElementVNode("span", null, toDisplayString(choice.label), 1)], 10, _hoisted_2);
305
+ }), 128))]),
306
+ _: 1
307
+ })]),
149
308
  _: 1
150
309
  }, 512),
151
310
  createElementVNode("select", {
152
311
  class: "fallback",
153
312
  "aria-label": "Choices",
154
- size: __props.rows,
155
- multiple: __props.multiple,
156
- disabled: __props.disabled,
157
- required: __props.required,
158
- name: __props.name,
313
+ size: checkedProps.value.rows ?? void 0,
314
+ multiple: checkedProps.value.multiple ?? void 0,
315
+ disabled: checkedProps.value.disabled ?? void 0,
316
+ required: checkedProps.value.required ?? void 0,
317
+ name: checkedProps.value.name ?? void 0,
159
318
  ref: "options"
160
319
  }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 8, _hoisted_3),
161
- __props.name && !__props.disabled ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(selection.value, (selected, index) => {
320
+ checkedProps.value.name && !checkedProps.value.disabled ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(selection.value, (selected, indexLoop) => {
162
321
  return openBlock(), createElementBlock("input", {
163
- key: index,
322
+ key: indexLoop,
164
323
  type: "hidden",
165
- name: __props.name,
166
- value: selected
324
+ name: checkedProps.value.name ?? void 0,
325
+ "^value": selected
167
326
  }, null, 8, _hoisted_4);
168
327
  }), 128)) : createCommentVNode("v-if", true),
169
328
  createElementVNode("input", {
@@ -171,14 +330,14 @@ var UiListbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
171
330
  type: "checkbox",
172
331
  "aria-hidden": "true",
173
332
  tabindex: "-1",
174
- required: __props.required && !hasSelection.value && !__props.disabled,
175
- checked: hasSelection.value,
176
- disabled: __props.disabled,
333
+ required: guardedBinding.value,
334
+ "^checked": guardedBinding2.value,
335
+ disabled: checkedProps.value.disabled ?? void 0,
177
336
  ref: "validity"
178
337
  }, null, 8, _hoisted_5)
179
338
  ], 16, _hoisted_1);
180
339
  };
181
340
  }
182
- }), [["__scopeId", "data-v-db56e4d0"]]);
341
+ }), [["__scopeId", "data-v-46a34212"]]);
183
342
  //#endregion
184
343
  export { UiListbox_default as t };
@@ -1,9 +1,16 @@
1
1
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
- import { n as useComponentHost, t as createDispatch } from "./host.js";
3
- import { computed, createElementBlock, createElementVNode, defineComponent, mergeProps, openBlock, ref, renderSlot } from "vue";
4
- import * as controllerModule from "@threadlabs/looma/components/ui-menu/ui-menu.js";
2
+ import { r as useComponentHost, t as createDispatch } from "./host.js";
3
+ import { t as checkedProp } from "./props.js";
4
+ import { computed, createElementBlock, createElementVNode, defineComponent, getCurrentInstance, mergeProps, openBlock, ref, renderSlot, watchSyncEffect } from "vue";
5
5
  //#region .build/vue/UiMenu.vue?vue&type=script&setup=true&lang.ts
6
- var _hoisted_1 = ["data-ui-menu-state"];
6
+ var _hoisted_1 = [
7
+ "data-density",
8
+ "data-for",
9
+ "data-inline",
10
+ "data-open",
11
+ "data-placement",
12
+ "data-ui-menu-state"
13
+ ];
7
14
  var _hoisted_2 = { class: "surface" };
8
15
  //#endregion
9
16
  //#region .build/vue/UiMenu.vue
@@ -11,17 +18,26 @@ var UiMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
11
18
  inheritAttrs: false,
12
19
  __name: "UiMenu",
13
20
  props: {
14
- density: { default: "comfortable" },
15
- for: { default: "" },
21
+ density: {
22
+ type: null,
23
+ default: "comfortable"
24
+ },
25
+ for: {
26
+ type: null,
27
+ default: ""
28
+ },
16
29
  inline: {
17
- type: Boolean,
30
+ type: null,
18
31
  default: false
19
32
  },
20
33
  open: {
21
- type: Boolean,
34
+ type: null,
22
35
  default: false
23
36
  },
24
- placement: { default: "bottom-start" }
37
+ placement: {
38
+ type: null,
39
+ default: "bottom-start"
40
+ }
25
41
  },
26
42
  emits: [
27
43
  "update:open",
@@ -31,14 +47,62 @@ var UiMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
31
47
  ],
32
48
  setup(__props, { emit: __emit }) {
33
49
  const props = __props;
50
+ const checkedProps = computed(() => ({
51
+ density: checkedProp(props["density"], {
52
+ kind: "terminal",
53
+ name: "keyword"
54
+ }, false, "density", void 0, ["comfortable", "compact"]),
55
+ for: checkedProp(props["for"], {
56
+ kind: "terminal",
57
+ name: "string"
58
+ }, false, "for", void 0, void 0),
59
+ inline: checkedProp(props["inline"], {
60
+ kind: "terminal",
61
+ name: "boolean"
62
+ }, false, "inline", void 0, void 0),
63
+ open: checkedProp(props["open"], {
64
+ kind: "terminal",
65
+ name: "boolean"
66
+ }, false, "open", void 0, void 0),
67
+ placement: checkedProp(props["placement"], {
68
+ kind: "terminal",
69
+ name: "string"
70
+ }, false, "placement", void 0, void 0)
71
+ }));
72
+ checkedProps.value;
73
+ watchSyncEffect(() => {
74
+ checkedProps.value;
75
+ });
76
+ function nativeAttrs(attrs) {
77
+ const names = Object.keys(attrs);
78
+ if (!names.some((name) => Object.hasOwn(Object.prototype, name))) return attrs;
79
+ return Object.fromEntries(names.map((name) => [Object.hasOwn(Object.prototype, name) ? name === "__proto__" ? "__Proto__" : name[0].toUpperCase() + name.slice(1) : name, attrs[name]]));
80
+ }
81
+ const componentInstance = getCurrentInstance();
82
+ function reflectedProp(name, kebab, value, fallback, bound, separator) {
83
+ const incoming = componentInstance?.vnode.props;
84
+ if (!bound && (incoming === null || incoming === void 0 || !Object.hasOwn(incoming, name) && !Object.hasOwn(incoming, kebab))) return fallback;
85
+ if (value === null || value === void 0) return void 0;
86
+ return Array.isArray(value) && separator !== void 0 ? value.join(separator) : typeof value === "object" ? JSON.stringify(value) : String(value);
87
+ }
88
+ const hydrationInstance = getCurrentInstance();
34
89
  const emit = __emit;
35
90
  const root = ref(null);
36
91
  const internalOpen = ref(false);
92
+ const hydrationNode = hydrationInstance?.vnode.el;
93
+ if (typeof window !== "undefined" && hydrationNode != null && (!(hydrationNode instanceof Element) || hydrationNode.localName !== "div")) throw Object.assign(/* @__PURE__ */ new Error("HR005: Server markup for <ui-menu> has an incompatible root."), {
94
+ name: "HtmlDiagnosticError",
95
+ diagnostic: Object.freeze({
96
+ code: "HR005",
97
+ message: "Server markup for <ui-menu> has an incompatible root."
98
+ })
99
+ });
37
100
  /** The values the styles' :host-state() rules test. */
38
101
  const hostState = computed(() => [
39
- props.density && `density density=${props.density}`,
102
+ checkedProps.value.density && "density",
103
+ checkedProps.value.density != null && `density=${encodeURIComponent(checkedProps.value.density)}`,
40
104
  internalOpen.value && "internalOpen",
41
- props.inline && "inline"
105
+ checkedProps.value.inline && "inline"
42
106
  ].filter(Boolean).join(" "));
43
107
  const isSelectDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["value"] === "string" && (detail["checked"] === void 0 || typeof detail["checked"] === "boolean") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
44
108
  "value",
@@ -63,10 +127,14 @@ var UiMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
63
127
  },
64
128
  modeled: ["open"]
65
129
  });
66
- useComponentHost(controllerModule.default, {
130
+ useComponentHost(() => import("@threadlabs/looma/components/ui-menu/ui-menu.js"), {
67
131
  root,
68
132
  dispatch,
69
- props,
133
+ controllerSource: {
134
+ specifier: "../components/ui-menu/ui-menu.js",
135
+ definition: "./components/ui-menu/ui-menu.html"
136
+ },
137
+ props: checkedProps,
70
138
  state: { internalOpen }
71
139
  });
72
140
  return (_ctx, _cache) => {
@@ -74,13 +142,18 @@ var UiMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
74
142
  "data-component": "ui-menu",
75
143
  role: "menu",
76
144
  "aria-orientation": "vertical"
77
- }, _ctx.$attrs, {
145
+ }, nativeAttrs(_ctx.$attrs), {
146
+ "data-density": reflectedProp("density", "density", checkedProps.value.density, void 0, false),
147
+ "data-for": reflectedProp("for", "for", checkedProps.value.for, void 0, false),
148
+ "data-inline": reflectedProp("inline", "inline", checkedProps.value.inline, void 0, false),
149
+ "data-open": reflectedProp("open", "open", checkedProps.value.open, void 0, false),
150
+ "data-placement": reflectedProp("placement", "placement", checkedProps.value.placement, void 0, false),
78
151
  "data-ui-menu-state": hostState.value || void 0,
79
152
  ref_key: "root",
80
153
  ref: root
81
154
  }), [createElementVNode("div", _hoisted_2, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])], 16, _hoisted_1);
82
155
  };
83
156
  }
84
- }), [["__scopeId", "data-v-bdedd263"]]);
157
+ }), [["__scopeId", "data-v-e7589d5b"]]);
85
158
  //#endregion
86
159
  export { UiMenu_default as t };
@@ -1,7 +1,8 @@
1
1
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
- import { createCommentVNode, createElementBlock, defineComponent, mergeProps, openBlock, renderSlot, toDisplayString } from "vue";
2
+ import { t as checkedProp } from "./props.js";
3
+ import { computed, createCommentVNode, createElementBlock, defineComponent, getCurrentInstance, mergeProps, openBlock, renderSlot, toDisplayString, watchSyncEffect } from "vue";
3
4
  //#region .build/vue/UiMenuGroup.vue?vue&type=script&setup=true&lang.ts
4
- var _hoisted_1 = ["aria-label"];
5
+ var _hoisted_1 = ["aria-label", "data-label"];
5
6
  var _hoisted_2 = {
6
7
  key: 0,
7
8
  class: "heading"
@@ -11,15 +12,50 @@ var _hoisted_2 = {
11
12
  var UiMenuGroup_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
12
13
  inheritAttrs: false,
13
14
  __name: "UiMenuGroup",
14
- props: { label: { default: "" } },
15
+ props: { label: {
16
+ type: null,
17
+ default: ""
18
+ } },
15
19
  setup(__props) {
20
+ const props = __props;
21
+ const checkedProps = computed(() => ({ label: checkedProp(props["label"], {
22
+ kind: "terminal",
23
+ name: "string"
24
+ }, false, "label", void 0, void 0) }));
25
+ checkedProps.value;
26
+ watchSyncEffect(() => {
27
+ checkedProps.value;
28
+ });
29
+ function nativeAttrs(attrs) {
30
+ const names = Object.keys(attrs);
31
+ if (!names.some((name) => Object.hasOwn(Object.prototype, name))) return attrs;
32
+ return Object.fromEntries(names.map((name) => [Object.hasOwn(Object.prototype, name) ? name === "__proto__" ? "__Proto__" : name[0].toUpperCase() + name.slice(1) : name, attrs[name]]));
33
+ }
34
+ const componentInstance = getCurrentInstance();
35
+ function reflectedProp(name, kebab, value, fallback, bound, separator) {
36
+ const incoming = componentInstance?.vnode.props;
37
+ if (!bound && (incoming === null || incoming === void 0 || !Object.hasOwn(incoming, name) && !Object.hasOwn(incoming, kebab))) return fallback;
38
+ if (value === null || value === void 0) return void 0;
39
+ return Array.isArray(value) && separator !== void 0 ? value.join(separator) : typeof value === "object" ? JSON.stringify(value) : String(value);
40
+ }
41
+ const hydrationNode = getCurrentInstance()?.vnode.el;
42
+ if (typeof window !== "undefined" && hydrationNode != null && (!(hydrationNode instanceof Element) || hydrationNode.localName !== "div")) throw Object.assign(/* @__PURE__ */ new Error("HR005: Server markup for <ui-menu-group> has an incompatible root."), {
43
+ name: "HtmlDiagnosticError",
44
+ diagnostic: Object.freeze({
45
+ code: "HR005",
46
+ message: "Server markup for <ui-menu-group> has an incompatible root."
47
+ })
48
+ });
16
49
  return (_ctx, _cache) => {
17
50
  return openBlock(), createElementBlock("div", mergeProps({
18
51
  "data-component": "ui-menu-group",
19
52
  role: "group"
20
- }, _ctx.$attrs, { "aria-label": __props.label }), [__props.label ? (openBlock(), createElementBlock("div", _hoisted_2, toDisplayString(__props.label), 1)) : createCommentVNode("v-if", true), renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_1);
53
+ }, nativeAttrs(_ctx.$attrs), {
54
+ "aria-label": checkedProps.value.label ?? void 0,
55
+ "data-label": reflectedProp("label", "label", checkedProps.value.label, void 0, false)
56
+ }), [checkedProps.value.label ? (openBlock(), createElementBlock("div", _hoisted_2, toDisplayString(checkedProps.value.label), 1)) : createCommentVNode("v-if", true), renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_1);
21
57
  };
22
58
  }
23
- }), [["__scopeId", "data-v-53e0d9bc"]]);
59
+ }), [["__scopeId", "data-v-f740eea8"]]);
24
60
  //#endregion
25
61
  export { UiMenuGroup_default as t };