@threadlabs/looma 0.21.6 → 0.22.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 (416) hide show
  1. package/components/ui-affordance-scope/ui-affordance-scope.html +1 -1
  2. package/components/ui-avatar/ui-avatar.html +4 -4
  3. package/components/ui-avatar-group/ui-avatar-group.html +2 -2
  4. package/components/ui-checkbox/ui-checkbox.html +1 -1
  5. package/components/ui-combobox/ui-combobox.html +18 -18
  6. package/components/ui-context-menu/ui-context-menu.html +1 -1
  7. package/components/ui-dialog/ui-dialog.html +2 -2
  8. package/components/ui-disclosure/ui-disclosure.html +4 -4
  9. package/components/ui-editable/ui-editable.html +3 -3
  10. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +5 -5
  11. package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +5 -5
  12. package/components/ui-editor-slash-menu/ui-editor-slash-menu.html +3 -3
  13. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +2 -2
  14. package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +3 -7
  15. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +6 -6
  16. package/components/ui-listbox/ui-listbox.html +6 -6
  17. package/components/ui-menu/ui-menu.html +1 -1
  18. package/components/ui-menu-item/ui-menu-item.html +1 -1
  19. package/components/ui-popover/ui-popover.html +1 -1
  20. package/components/ui-radio/ui-radio.html +1 -1
  21. package/components/ui-radio-group/ui-radio-group.html +1 -1
  22. package/components/ui-search-shell/ui-search-shell.html +1 -1
  23. package/components/ui-sidebar/ui-sidebar.html +2 -2
  24. package/components/ui-switch/ui-switch.html +1 -1
  25. package/components/ui-switcher/ui-switcher.html +1 -1
  26. package/components/ui-tabs/ui-tabs.html +2 -2
  27. package/components/ui-toast-region/ui-toast-region.html +1 -1
  28. package/components/ui-tooltip/ui-tooltip.html +1 -1
  29. package/components/ui-tree-item/ui-tree-item.html +4 -4
  30. package/dist/index.js +1 -1
  31. package/package.json +2 -2
  32. package/styles/ui-action-bar.css +1 -1
  33. package/styles/ui-affordance-scope.css +1 -1
  34. package/styles/ui-avatar-group.css +1 -1
  35. package/styles/ui-avatar.css +1 -1
  36. package/styles/ui-badge.css +1 -1
  37. package/styles/ui-breadcrumb-item.css +1 -1
  38. package/styles/ui-breadcrumbs.css +1 -1
  39. package/styles/ui-button.css +1 -1
  40. package/styles/ui-callout.css +1 -1
  41. package/styles/ui-card.css +1 -1
  42. package/styles/ui-checkbox.css +1 -1
  43. package/styles/ui-cluster.css +1 -1
  44. package/styles/ui-combobox.css +1 -1
  45. package/styles/ui-container.css +1 -1
  46. package/styles/ui-context-menu.css +1 -1
  47. package/styles/ui-cover.css +1 -1
  48. package/styles/ui-description-item.css +1 -1
  49. package/styles/ui-description-list.css +1 -1
  50. package/styles/ui-dialog.css +1 -1
  51. package/styles/ui-disclosure.css +1 -1
  52. package/styles/ui-editable.css +1 -1
  53. package/styles/ui-editor-insert-table-grid.css +1 -1
  54. package/styles/ui-editor-mention-menu-item.css +1 -1
  55. package/styles/ui-editor-mention-menu.css +1 -1
  56. package/styles/ui-editor-slash-menu-group.css +1 -1
  57. package/styles/ui-editor-slash-menu-item.css +1 -1
  58. package/styles/ui-editor-slash-menu.css +1 -1
  59. package/styles/ui-editor-table-context-menu.css +1 -1
  60. package/styles/ui-editor-table-overlay.css +1 -1
  61. package/styles/ui-editor-table-toolbar.css +1 -1
  62. package/styles/ui-editor-toolbar.css +1 -1
  63. package/styles/ui-floating-action-button.css +1 -1
  64. package/styles/ui-form-field.css +1 -1
  65. package/styles/ui-grid.css +1 -1
  66. package/styles/ui-icon-button.css +1 -1
  67. package/styles/ui-icon.css +1 -1
  68. package/styles/ui-input-group.css +1 -1
  69. package/styles/ui-input.css +1 -1
  70. package/styles/ui-list-item.css +1 -1
  71. package/styles/ui-list.css +1 -1
  72. package/styles/ui-listbox.css +1 -1
  73. package/styles/ui-menu-group.css +1 -1
  74. package/styles/ui-menu-item.css +1 -1
  75. package/styles/ui-menu.css +1 -1
  76. package/styles/ui-meter.css +1 -1
  77. package/styles/ui-nav-item.css +1 -1
  78. package/styles/ui-page-header.css +1 -1
  79. package/styles/ui-popover.css +1 -1
  80. package/styles/ui-radio-group.css +1 -1
  81. package/styles/ui-radio.css +1 -1
  82. package/styles/ui-reel.css +1 -1
  83. package/styles/ui-scroll-area.css +1 -1
  84. package/styles/ui-search-result-row.css +1 -1
  85. package/styles/ui-search-shell.css +1 -1
  86. package/styles/ui-section.css +1 -1
  87. package/styles/ui-select.css +1 -1
  88. package/styles/ui-separator.css +1 -1
  89. package/styles/ui-sidebar.css +1 -1
  90. package/styles/ui-spinner.css +1 -1
  91. package/styles/ui-stack.css +1 -1
  92. package/styles/ui-status-message.css +1 -1
  93. package/styles/ui-switch.css +1 -1
  94. package/styles/ui-switcher.css +1 -1
  95. package/styles/ui-table.css +1 -1
  96. package/styles/ui-tabs.css +1 -1
  97. package/styles/ui-text.css +1 -1
  98. package/styles/ui-textarea.css +1 -1
  99. package/styles/ui-toast-region.css +1 -1
  100. package/styles/ui-toast.css +1 -1
  101. package/styles/ui-tooltip.css +1 -1
  102. package/styles/ui-top-bar.css +1 -1
  103. package/styles/ui-tree-item.css +1 -1
  104. package/styles/ui-tree.css +1 -1
  105. package/vanilla/UiActionBar.d.ts +1 -1
  106. package/vanilla/UiActionBar.js +1 -1
  107. package/vanilla/UiAffordanceScope.d.ts +1 -1
  108. package/vanilla/UiAffordanceScope.js +2 -2
  109. package/vanilla/UiAvatar.d.ts +1 -1
  110. package/vanilla/UiAvatar.js +2 -2
  111. package/vanilla/UiAvatarGroup.d.ts +1 -1
  112. package/vanilla/UiAvatarGroup.js +2 -2
  113. package/vanilla/UiBadge.d.ts +1 -1
  114. package/vanilla/UiBadge.js +1 -1
  115. package/vanilla/UiBreadcrumbItem.d.ts +1 -1
  116. package/vanilla/UiBreadcrumbItem.js +1 -1
  117. package/vanilla/UiBreadcrumbs.d.ts +1 -1
  118. package/vanilla/UiBreadcrumbs.js +1 -1
  119. package/vanilla/UiButton.d.ts +1 -1
  120. package/vanilla/UiButton.js +1 -1
  121. package/vanilla/UiCallout.d.ts +1 -1
  122. package/vanilla/UiCallout.js +1 -1
  123. package/vanilla/UiCard.d.ts +1 -1
  124. package/vanilla/UiCard.js +1 -1
  125. package/vanilla/UiCheckbox.d.ts +1 -1
  126. package/vanilla/UiCheckbox.js +2 -2
  127. package/vanilla/UiCluster.d.ts +1 -1
  128. package/vanilla/UiCluster.js +1 -1
  129. package/vanilla/UiCombobox.d.ts +1 -1
  130. package/vanilla/UiCombobox.js +2 -2
  131. package/vanilla/UiContainer.d.ts +1 -1
  132. package/vanilla/UiContainer.js +1 -1
  133. package/vanilla/UiContextMenu.d.ts +1 -1
  134. package/vanilla/UiContextMenu.js +2 -2
  135. package/vanilla/UiCover.d.ts +1 -1
  136. package/vanilla/UiCover.js +1 -1
  137. package/vanilla/UiDescriptionItem.d.ts +1 -1
  138. package/vanilla/UiDescriptionItem.js +1 -1
  139. package/vanilla/UiDescriptionList.d.ts +1 -1
  140. package/vanilla/UiDescriptionList.js +1 -1
  141. package/vanilla/UiDialog.d.ts +1 -1
  142. package/vanilla/UiDialog.js +2 -2
  143. package/vanilla/UiDisclosure.d.ts +1 -1
  144. package/vanilla/UiDisclosure.js +2 -2
  145. package/vanilla/UiEditable.d.ts +1 -1
  146. package/vanilla/UiEditable.js +2 -2
  147. package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
  148. package/vanilla/UiEditorInsertTableGrid.js +2 -2
  149. package/vanilla/UiEditorMentionMenu.d.ts +1 -1
  150. package/vanilla/UiEditorMentionMenu.js +2 -2
  151. package/vanilla/UiEditorMentionMenuItem.d.ts +1 -1
  152. package/vanilla/UiEditorMentionMenuItem.js +1 -1
  153. package/vanilla/UiEditorSlashMenu.d.ts +1 -1
  154. package/vanilla/UiEditorSlashMenu.js +2 -2
  155. package/vanilla/UiEditorSlashMenuGroup.d.ts +1 -1
  156. package/vanilla/UiEditorSlashMenuGroup.js +1 -1
  157. package/vanilla/UiEditorSlashMenuItem.d.ts +1 -1
  158. package/vanilla/UiEditorSlashMenuItem.js +1 -1
  159. package/vanilla/UiEditorTableContextMenu.d.ts +1 -1
  160. package/vanilla/UiEditorTableContextMenu.js +2 -2
  161. package/vanilla/UiEditorTableOverlay.d.ts +1 -1
  162. package/vanilla/UiEditorTableOverlay.js +2 -2
  163. package/vanilla/UiEditorTableToolbar.d.ts +1 -1
  164. package/vanilla/UiEditorTableToolbar.js +2 -2
  165. package/vanilla/UiEditorToolbar.d.ts +1 -1
  166. package/vanilla/UiEditorToolbar.js +1 -1
  167. package/vanilla/UiFloatingActionButton.d.ts +1 -1
  168. package/vanilla/UiFloatingActionButton.js +1 -1
  169. package/vanilla/UiFormField.d.ts +1 -1
  170. package/vanilla/UiFormField.js +1 -1
  171. package/vanilla/UiGrid.d.ts +1 -1
  172. package/vanilla/UiGrid.js +1 -1
  173. package/vanilla/UiIcon.d.ts +1 -1
  174. package/vanilla/UiIcon.js +1 -1
  175. package/vanilla/UiIconButton.d.ts +1 -1
  176. package/vanilla/UiIconButton.js +1 -1
  177. package/vanilla/UiInput.d.ts +1 -1
  178. package/vanilla/UiInput.js +1 -1
  179. package/vanilla/UiInputGroup.d.ts +1 -1
  180. package/vanilla/UiInputGroup.js +1 -1
  181. package/vanilla/UiList.d.ts +1 -1
  182. package/vanilla/UiList.js +1 -1
  183. package/vanilla/UiListItem.d.ts +1 -1
  184. package/vanilla/UiListItem.js +1 -1
  185. package/vanilla/UiListbox.d.ts +1 -1
  186. package/vanilla/UiListbox.js +2 -2
  187. package/vanilla/UiMenu.d.ts +1 -1
  188. package/vanilla/UiMenu.js +2 -2
  189. package/vanilla/UiMenuGroup.d.ts +1 -1
  190. package/vanilla/UiMenuGroup.js +1 -1
  191. package/vanilla/UiMenuItem.d.ts +1 -1
  192. package/vanilla/UiMenuItem.js +2 -2
  193. package/vanilla/UiMeter.d.ts +1 -1
  194. package/vanilla/UiMeter.js +1 -1
  195. package/vanilla/UiNavItem.d.ts +1 -1
  196. package/vanilla/UiNavItem.js +1 -1
  197. package/vanilla/UiPageHeader.d.ts +1 -1
  198. package/vanilla/UiPageHeader.js +1 -1
  199. package/vanilla/UiPopover.d.ts +1 -1
  200. package/vanilla/UiPopover.js +2 -2
  201. package/vanilla/UiRadio.d.ts +1 -1
  202. package/vanilla/UiRadio.js +2 -2
  203. package/vanilla/UiRadioGroup.d.ts +1 -1
  204. package/vanilla/UiRadioGroup.js +2 -2
  205. package/vanilla/UiReel.d.ts +1 -1
  206. package/vanilla/UiReel.js +1 -1
  207. package/vanilla/UiScrollArea.d.ts +1 -1
  208. package/vanilla/UiScrollArea.js +1 -1
  209. package/vanilla/UiSearchResultRow.d.ts +1 -1
  210. package/vanilla/UiSearchResultRow.js +1 -1
  211. package/vanilla/UiSearchShell.d.ts +1 -1
  212. package/vanilla/UiSearchShell.js +2 -2
  213. package/vanilla/UiSection.d.ts +1 -1
  214. package/vanilla/UiSection.js +1 -1
  215. package/vanilla/UiSelect.d.ts +1 -1
  216. package/vanilla/UiSelect.js +1 -1
  217. package/vanilla/UiSeparator.d.ts +1 -1
  218. package/vanilla/UiSeparator.js +1 -1
  219. package/vanilla/UiSidebar.d.ts +1 -1
  220. package/vanilla/UiSidebar.js +2 -2
  221. package/vanilla/UiSpinner.d.ts +1 -1
  222. package/vanilla/UiSpinner.js +1 -1
  223. package/vanilla/UiStack.d.ts +1 -1
  224. package/vanilla/UiStack.js +1 -1
  225. package/vanilla/UiStatusMessage.d.ts +1 -1
  226. package/vanilla/UiStatusMessage.js +1 -1
  227. package/vanilla/UiSwitch.d.ts +1 -1
  228. package/vanilla/UiSwitch.js +2 -2
  229. package/vanilla/UiSwitcher.d.ts +1 -1
  230. package/vanilla/UiSwitcher.js +2 -2
  231. package/vanilla/UiTable.d.ts +1 -1
  232. package/vanilla/UiTable.js +1 -1
  233. package/vanilla/UiTabs.d.ts +1 -1
  234. package/vanilla/UiTabs.js +2 -2
  235. package/vanilla/UiText.d.ts +1 -1
  236. package/vanilla/UiText.js +1 -1
  237. package/vanilla/UiTextarea.d.ts +1 -1
  238. package/vanilla/UiTextarea.js +1 -1
  239. package/vanilla/UiToast.d.ts +1 -1
  240. package/vanilla/UiToast.js +1 -1
  241. package/vanilla/UiToastRegion.d.ts +1 -1
  242. package/vanilla/UiToastRegion.js +2 -2
  243. package/vanilla/UiTooltip.d.ts +1 -1
  244. package/vanilla/UiTooltip.js +2 -2
  245. package/vanilla/UiTopBar.d.ts +1 -1
  246. package/vanilla/UiTopBar.js +1 -1
  247. package/vanilla/UiTree.d.ts +1 -1
  248. package/vanilla/UiTree.js +1 -1
  249. package/vanilla/UiTreeItem.d.ts +1 -1
  250. package/vanilla/UiTreeItem.js +2 -2
  251. package/vue/UiActionBar.vue +1 -1
  252. package/vue/UiAffordanceScope.vue +25 -7
  253. package/vue/UiAvatar.vue +125 -30
  254. package/vue/UiAvatarGroup.d.ts +1 -1
  255. package/vue/UiAvatarGroup.vue +67 -21
  256. package/vue/UiBadge.vue +34 -8
  257. package/vue/UiBreadcrumbItem.vue +15 -4
  258. package/vue/UiBreadcrumbs.vue +14 -4
  259. package/vue/UiButton.vue +123 -42
  260. package/vue/UiCallout.vue +16 -4
  261. package/vue/UiCard.vue +46 -10
  262. package/vue/UiCheckbox.d.ts +5 -5
  263. package/vue/UiCheckbox.vue +73 -19
  264. package/vue/UiCluster.vue +39 -10
  265. package/vue/UiCombobox.d.ts +5 -5
  266. package/vue/UiCombobox.vue +317 -78
  267. package/vue/UiContainer.vue +23 -6
  268. package/vue/UiContextMenu.vue +24 -7
  269. package/vue/UiCover.vue +16 -4
  270. package/vue/UiDescriptionItem.vue +14 -4
  271. package/vue/UiDescriptionList.vue +33 -8
  272. package/vue/UiDialog.vue +79 -26
  273. package/vue/UiDisclosure.vue +101 -38
  274. package/vue/UiEditable.d.ts +3 -3
  275. package/vue/UiEditable.vue +107 -27
  276. package/vue/UiEditorInsertTableGrid.vue +47 -11
  277. package/vue/UiEditorMentionMenu.vue +99 -20
  278. package/vue/UiEditorMentionMenuItem.vue +29 -8
  279. package/vue/UiEditorSlashMenu.vue +85 -16
  280. package/vue/UiEditorSlashMenuGroup.vue +14 -4
  281. package/vue/UiEditorSlashMenuItem.vue +43 -12
  282. package/vue/UiEditorTableContextMenu.d.ts +1 -1
  283. package/vue/UiEditorTableContextMenu.vue +95 -19
  284. package/vue/UiEditorTableOverlay.vue +91 -7
  285. package/vue/UiEditorTableToolbar.vue +105 -16
  286. package/vue/UiEditorToolbar.vue +15 -4
  287. package/vue/UiFloatingActionButton.vue +31 -8
  288. package/vue/UiFormField.d.ts +1 -1
  289. package/vue/UiFormField.vue +31 -8
  290. package/vue/UiGrid.vue +30 -8
  291. package/vue/UiIcon.vue +15 -4
  292. package/vue/UiIconButton.vue +70 -24
  293. package/vue/UiInput.vue +114 -39
  294. package/vue/UiInputGroup.vue +15 -4
  295. package/vue/UiList.vue +47 -16
  296. package/vue/UiListItem.vue +24 -6
  297. package/vue/UiListbox.d.ts +3 -3
  298. package/vue/UiListbox.vue +72 -24
  299. package/vue/UiMenu.vue +55 -15
  300. package/vue/UiMenuGroup.vue +14 -4
  301. package/vue/UiMenuItem.d.ts +4 -4
  302. package/vue/UiMenuItem.vue +77 -27
  303. package/vue/UiMeter.vue +65 -16
  304. package/vue/UiNavItem.vue +48 -24
  305. package/vue/UiPageHeader.vue +16 -4
  306. package/vue/UiPopover.vue +46 -21
  307. package/vue/UiRadio.d.ts +4 -4
  308. package/vue/UiRadio.vue +58 -15
  309. package/vue/UiRadioGroup.d.ts +3 -3
  310. package/vue/UiRadioGroup.vue +66 -17
  311. package/vue/UiReel.d.ts +1 -1
  312. package/vue/UiReel.vue +31 -8
  313. package/vue/UiScrollArea.vue +16 -4
  314. package/vue/UiSearchResultRow.vue +23 -6
  315. package/vue/UiSearchShell.vue +38 -11
  316. package/vue/UiSection.vue +33 -8
  317. package/vue/UiSelect.d.ts +1 -1
  318. package/vue/UiSelect.vue +45 -20
  319. package/vue/UiSeparator.vue +16 -4
  320. package/vue/UiSidebar.d.ts +2 -2
  321. package/vue/UiSidebar.vue +86 -22
  322. package/vue/UiSpinner.vue +23 -6
  323. package/vue/UiStack.vue +31 -8
  324. package/vue/UiStatusMessage.vue +32 -8
  325. package/vue/UiSwitch.d.ts +4 -4
  326. package/vue/UiSwitch.vue +57 -15
  327. package/vue/UiSwitcher.vue +41 -17
  328. package/vue/UiTable.vue +24 -6
  329. package/vue/UiTabs.vue +60 -14
  330. package/vue/UiText.vue +98 -35
  331. package/vue/UiTextarea.d.ts +1 -1
  332. package/vue/UiTextarea.vue +67 -26
  333. package/vue/UiToast.vue +24 -6
  334. package/vue/UiToastRegion.vue +41 -13
  335. package/vue/UiTooltip.d.ts +1 -1
  336. package/vue/UiTooltip.vue +85 -30
  337. package/vue/UiTopBar.vue +1 -1
  338. package/vue/UiTree.vue +56 -14
  339. package/vue/UiTreeItem.d.ts +3 -3
  340. package/vue/UiTreeItem.vue +147 -36
  341. package/vue/chunks/UiActionBar.js +1 -1
  342. package/vue/chunks/UiAffordanceScope.js +34 -7
  343. package/vue/chunks/UiAvatar.js +141 -21
  344. package/vue/chunks/UiAvatarGroup.js +83 -16
  345. package/vue/chunks/UiBadge.js +57 -19
  346. package/vue/chunks/UiBreadcrumbItem.js +19 -6
  347. package/vue/chunks/UiBreadcrumbs.js +19 -6
  348. package/vue/chunks/UiButton.js +194 -42
  349. package/vue/chunks/UiCallout.js +27 -13
  350. package/vue/chunks/UiCard.js +83 -25
  351. package/vue/chunks/UiCheckbox.js +104 -17
  352. package/vue/chunks/UiCluster.js +70 -25
  353. package/vue/chunks/UiCombobox.js +441 -46
  354. package/vue/chunks/UiContainer.js +36 -11
  355. package/vue/chunks/UiContextMenu.js +33 -7
  356. package/vue/chunks/UiCover.js +20 -6
  357. package/vue/chunks/UiDescriptionItem.js +18 -5
  358. package/vue/chunks/UiDescriptionList.js +54 -17
  359. package/vue/chunks/UiDialog.js +115 -23
  360. package/vue/chunks/UiDisclosure.js +110 -24
  361. package/vue/chunks/UiEditable.js +146 -18
  362. package/vue/chunks/UiEditorInsertTableGrid.js +65 -10
  363. package/vue/chunks/UiEditorMentionMenu.js +210 -14
  364. package/vue/chunks/UiEditorMentionMenuItem.js +43 -8
  365. package/vue/chunks/UiEditorSlashMenu.js +186 -12
  366. package/vue/chunks/UiEditorSlashMenuGroup.js +19 -6
  367. package/vue/chunks/UiEditorSlashMenuItem.js +65 -10
  368. package/vue/chunks/UiEditorTableContextMenu.js +116 -16
  369. package/vue/chunks/UiEditorTableOverlay.js +188 -7
  370. package/vue/chunks/UiEditorTableToolbar.js +125 -16
  371. package/vue/chunks/UiEditorToolbar.js +19 -6
  372. package/vue/chunks/UiFloatingActionButton.js +43 -8
  373. package/vue/chunks/UiFormField.js +43 -8
  374. package/vue/chunks/UiGrid.js +52 -18
  375. package/vue/chunks/UiIcon.js +19 -6
  376. package/vue/chunks/UiIconButton.js +107 -21
  377. package/vue/chunks/UiInput.js +309 -30
  378. package/vue/chunks/UiInputGroup.js +19 -6
  379. package/vue/chunks/UiList.js +62 -10
  380. package/vue/chunks/UiListItem.js +33 -7
  381. package/vue/chunks/UiListbox.js +105 -13
  382. package/vue/chunks/UiMenu.js +79 -11
  383. package/vue/chunks/UiMenuGroup.js +19 -6
  384. package/vue/chunks/UiMenuItem.js +93 -28
  385. package/vue/chunks/UiMeter.js +96 -19
  386. package/vue/chunks/UiNavItem.js +74 -17
  387. package/vue/chunks/UiPageHeader.js +20 -6
  388. package/vue/chunks/UiPopover.js +58 -21
  389. package/vue/chunks/UiRadio.js +82 -15
  390. package/vue/chunks/UiRadioGroup.js +89 -12
  391. package/vue/chunks/UiReel.js +53 -18
  392. package/vue/chunks/UiScrollArea.js +20 -6
  393. package/vue/chunks/UiSearchResultRow.js +32 -7
  394. package/vue/chunks/UiSearchShell.js +55 -9
  395. package/vue/chunks/UiSection.js +49 -12
  396. package/vue/chunks/UiSelect.js +68 -13
  397. package/vue/chunks/UiSeparator.js +20 -6
  398. package/vue/chunks/UiSidebar.js +123 -19
  399. package/vue/chunks/UiSpinner.js +33 -7
  400. package/vue/chunks/UiStack.js +59 -24
  401. package/vue/chunks/UiStatusMessage.js +53 -16
  402. package/vue/chunks/UiSwitch.js +82 -15
  403. package/vue/chunks/UiSwitcher.js +70 -25
  404. package/vue/chunks/UiTable.js +33 -7
  405. package/vue/chunks/UiTabs.js +81 -11
  406. package/vue/chunks/UiText.js +169 -58
  407. package/vue/chunks/UiTextarea.js +101 -16
  408. package/vue/chunks/UiToast.js +39 -13
  409. package/vue/chunks/UiToastRegion.js +41 -14
  410. package/vue/chunks/UiTooltip.js +113 -30
  411. package/vue/chunks/UiTopBar.js +1 -1
  412. package/vue/chunks/UiTree.js +82 -15
  413. package/vue/chunks/UiTreeItem.js +184 -22
  414. package/vue/chunks/props.js +271 -35
  415. package/vue/components.css +1197 -1197
  416. package/vue/host.ts +6 -6
package/vue/UiInput.vue CHANGED
@@ -1,4 +1,4 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.14 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.15 for Vue 3.5. Do not edit. -->
2
2
  <script
3
3
  setup
4
4
  lang="ts"
@@ -23,10 +23,120 @@ import { computed, getCurrentInstance, ref, watchSyncEffect } from 'vue'
23
23
  import type { PropType } from 'vue'
24
24
  import { readBoundControl, vBindControl } from './control'
25
25
  import { createDispatch, useComponentHost } from './host'
26
- import { checkedProp, selectedPropNode } from './props'
26
+ import { checkedProp, selectedPropNode, vPropValidity } from './props'
27
27
 
28
28
  defineOptions({ inheritAttrs: false })
29
29
 
30
+ const propValidityContract = {
31
+ props: {
32
+ disabled: {
33
+ type: { kind: 'terminal', name: 'boolean' },
34
+ required: false,
35
+ target: { attribute: 'disabled' },
36
+ description: 'Prevents editing and form submission.',
37
+ default: false,
38
+ },
39
+ invalid: {
40
+ type: { kind: 'terminal', name: 'boolean' },
41
+ required: false,
42
+ target: { attribute: 'aria-invalid' },
43
+ description: 'Exposes invalid state to assistive technology and styling.',
44
+ default: false,
45
+ },
46
+ readonly: {
47
+ type: { kind: 'terminal', name: 'boolean' },
48
+ required: false,
49
+ target: { attribute: 'readonly' },
50
+ description: 'Allows selection without allowing edits.',
51
+ default: false,
52
+ },
53
+ required: {
54
+ type: { kind: 'terminal', name: 'boolean' },
55
+ required: false,
56
+ target: { attribute: 'required' },
57
+ description: 'Marks the control as required for form validation.',
58
+ default: false,
59
+ },
60
+ size: {
61
+ type: { kind: 'terminal', name: 'keyword' },
62
+ required: false,
63
+ target: { attribute: 'size' },
64
+ description:
65
+ 'Height, padding, and type size, matching Button\'s sizes so a field and a button of one size share a row. sm is the small control height (2rem by default)\n with smaller text, for compact rows such as a table row or a filter bar; md is the standard control height; lg is taller with roomier padding. Under a\n coarse pointer, sm grows to the 44px touch minimum and keeps body-size text. Change it after render through this option; the element\'s size property is\n the native one.',
66
+ values: ['sm', 'md', 'lg'],
67
+ default: 'md',
68
+ },
69
+ type: {
70
+ type: { kind: 'terminal', name: 'keyword' },
71
+ required: false,
72
+ target: { attribute: 'type' },
73
+ description:
74
+ 'The native input mode. Number and range modes accept numeric values; the other supported modes accept strings.',
75
+ values: [
76
+ 'text',
77
+ 'search',
78
+ 'tel',
79
+ 'url',
80
+ 'email',
81
+ 'password',
82
+ 'date',
83
+ 'month',
84
+ 'week',
85
+ 'time',
86
+ 'datetime-local',
87
+ 'number',
88
+ 'range',
89
+ 'color',
90
+ ],
91
+ default: 'text',
92
+ },
93
+ value: {
94
+ type: {
95
+ kind: 'selected',
96
+ from: 'type',
97
+ options: [
98
+ { value: 'text', type: { kind: 'terminal', name: 'string' } },
99
+ { value: 'search', type: { kind: 'terminal', name: 'string' } },
100
+ { value: 'tel', type: { kind: 'terminal', name: 'string' } },
101
+ { value: 'url', type: { kind: 'terminal', name: 'string' } },
102
+ { value: 'email', type: { kind: 'terminal', name: 'string' } },
103
+ { value: 'password', type: { kind: 'terminal', name: 'string' } },
104
+ { value: 'date', type: { kind: 'terminal', name: 'string' } },
105
+ { value: 'month', type: { kind: 'terminal', name: 'string' } },
106
+ { value: 'week', type: { kind: 'terminal', name: 'string' } },
107
+ { value: 'time', type: { kind: 'terminal', name: 'string' } },
108
+ { value: 'datetime-local', type: { kind: 'terminal', name: 'string' } },
109
+ { value: 'number', type: { kind: 'terminal', name: 'number' } },
110
+ { value: 'range', type: { kind: 'terminal', name: 'number' } },
111
+ { value: 'color', type: { kind: 'terminal', name: 'string' } },
112
+ ],
113
+ },
114
+ required: false,
115
+ target: { attribute: 'value' },
116
+ description:
117
+ 'The input\'s value: text, or a number for type="number" and type="range" fields. Setting or changing it replaces the live text; between changes the user\'s\n typing stands, so follow input events to keep it in step. A number field keeps text that means the same number, such as 1.0 for 1. It is also the input\'s\n default, so a form reset returns to it.',
118
+ select: {
119
+ from: 'type',
120
+ options: [
121
+ { value: 'text', type: { kind: 'terminal', name: 'string' } },
122
+ { value: 'search', type: { kind: 'terminal', name: 'string' } },
123
+ { value: 'tel', type: { kind: 'terminal', name: 'string' } },
124
+ { value: 'url', type: { kind: 'terminal', name: 'string' } },
125
+ { value: 'email', type: { kind: 'terminal', name: 'string' } },
126
+ { value: 'password', type: { kind: 'terminal', name: 'string' } },
127
+ { value: 'date', type: { kind: 'terminal', name: 'string' } },
128
+ { value: 'month', type: { kind: 'terminal', name: 'string' } },
129
+ { value: 'week', type: { kind: 'terminal', name: 'string' } },
130
+ { value: 'time', type: { kind: 'terminal', name: 'string' } },
131
+ { value: 'datetime-local', type: { kind: 'terminal', name: 'string' } },
132
+ { value: 'number', type: { kind: 'terminal', name: 'number' } },
133
+ { value: 'range', type: { kind: 'terminal', name: 'number' } },
134
+ { value: 'color', type: { kind: 'terminal', name: 'string' } },
135
+ ],
136
+ },
137
+ },
138
+ },
139
+ }
30
140
  const props = defineProps({
31
141
  disabled: { type: null as unknown as PropType<boolean | null>, default: false },
32
142
  invalid: { type: null as unknown as PropType<boolean | null>, default: false },
@@ -80,64 +190,32 @@ const checkedProps = computed(() => ({
80
190
  { kind: 'terminal', name: 'boolean' },
81
191
  false,
82
192
  'disabled',
83
- undefined,
84
- undefined,
85
193
  ) as boolean,
86
194
  invalid: checkedProp<boolean>(
87
195
  props['invalid'],
88
196
  { kind: 'terminal', name: 'boolean' },
89
197
  false,
90
198
  'invalid',
91
- undefined,
92
- undefined,
93
199
  ) as boolean,
94
200
  readonly: checkedProp<boolean>(
95
201
  props['readonly'],
96
202
  { kind: 'terminal', name: 'boolean' },
97
203
  false,
98
204
  'readonly',
99
- undefined,
100
- undefined,
101
205
  ) as boolean,
102
206
  required: checkedProp<boolean>(
103
207
  props['required'],
104
208
  { kind: 'terminal', name: 'boolean' },
105
209
  false,
106
210
  'required',
107
- undefined,
108
- undefined,
109
211
  ) as boolean,
110
212
  size: checkedProp<'sm' | 'md' | 'lg'>(
111
213
  props['size'],
112
214
  { kind: 'terminal', name: 'keyword' },
113
215
  false,
114
216
  'size',
115
- undefined,
116
- ['sm', 'md', 'lg'],
117
217
  ) as 'sm' | 'md' | 'lg',
118
- type: checkedProp<T0>(
119
- props['type'],
120
- { kind: 'terminal', name: 'keyword' },
121
- false,
122
- 'type',
123
- undefined,
124
- [
125
- 'text',
126
- 'search',
127
- 'tel',
128
- 'url',
129
- 'email',
130
- 'password',
131
- 'date',
132
- 'month',
133
- 'week',
134
- 'time',
135
- 'datetime-local',
136
- 'number',
137
- 'range',
138
- 'color',
139
- ],
140
- ) as T0,
218
+ type: checkedProp<T0>(props['type'], { kind: 'terminal', name: 'keyword' }, false, 'type') as T0,
141
219
  value: checkedProp<
142
220
  T0 extends 'text' ? string | null
143
221
  : T0 extends 'search' ? string | null
@@ -174,8 +252,6 @@ const checkedProps = computed(() => ({
174
252
  ]),
175
253
  false,
176
254
  'value',
177
- undefined,
178
- undefined,
179
255
  ),
180
256
  modelValue: checkedProp<
181
257
  T0 extends 'text' ? string | null
@@ -213,8 +289,6 @@ const checkedProps = computed(() => ({
213
289
  ]),
214
290
  false,
215
291
  'modelValue',
216
- undefined,
217
- undefined,
218
292
  ),
219
293
  }))
220
294
  void checkedProps.value
@@ -341,6 +415,7 @@ useComponentHost(() => import('../components/ui-input/ui-input.js'), {
341
415
  :readonly="checkedProps.readonly ?? undefined"
342
416
  :required="checkedProps.required ?? undefined"
343
417
  :aria-invalid="checkedProps.invalid ?? undefined"
418
+ v-prop-validity="{ contract: propValidityContract, values: { ...checkedProps } }"
344
419
  :data-disabled="reflectedProp('disabled', 'disabled', checkedProps.disabled, undefined, false)"
345
420
  :data-invalid="reflectedProp('invalid', 'invalid', checkedProps.invalid, undefined, false)"
346
421
  :data-readonly="reflectedProp('readonly', 'readonly', checkedProps.readonly, undefined, false)"
@@ -1,12 +1,24 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.14 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.15 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
3
  import { computed, getCurrentInstance, ref, watchSyncEffect } from 'vue'
4
4
  import type { PropType } from 'vue'
5
5
  import { createDispatch, useComponentHost } from './host'
6
- import { checkedProp } from './props'
6
+ import { checkedProp, vPropValidity } from './props'
7
7
 
8
8
  defineOptions({ inheritAttrs: false })
9
9
 
10
+ const propValidityContract = {
11
+ props: {
12
+ disabled: {
13
+ type: { kind: 'terminal', name: 'boolean' },
14
+ required: false,
15
+ target: { attribute: 'disabled' },
16
+ description:
17
+ 'Fades the group\'s framing to match a disabled input inside it. Disable the input itself too.',
18
+ default: false,
19
+ },
20
+ },
21
+ }
10
22
  const props = defineProps({
11
23
  disabled: { type: null as unknown as PropType<boolean | null>, default: false },
12
24
  })
@@ -16,8 +28,6 @@ const checkedProps = computed(() => ({
16
28
  { kind: 'terminal', name: 'boolean' },
17
29
  false,
18
30
  'disabled',
19
- undefined,
20
- undefined,
21
31
  ) as boolean,
22
32
  }))
23
33
  void checkedProps.value
@@ -100,6 +110,7 @@ useComponentHost(() => import('../components/ui-input-group/ui-input-group.js'),
100
110
  <div
101
111
  data-component="ui-input-group"
102
112
  v-bind="nativeAttrs($attrs)"
113
+ v-prop-validity="{ contract: propValidityContract, values: { ...checkedProps } }"
103
114
  :data-disabled="reflectedProp('disabled', 'disabled', checkedProps.disabled, undefined, false)"
104
115
  :data-ui-input-group-state="hostState || undefined"
105
116
  ref="root"
package/vue/UiList.vue CHANGED
@@ -1,12 +1,52 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.14 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.15 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
3
  import { computed, getCurrentInstance, useTemplateRef, watchSyncEffect } from 'vue'
4
4
  import type { PropType } from 'vue'
5
5
  import { preserveRootFocus } from './host'
6
- import { checkedProp } from './props'
6
+ import { checkedProp, vPropValidity } from './props'
7
7
 
8
8
  defineOptions({ inheritAttrs: false })
9
9
 
10
+ const propValidityContract = {
11
+ props: {
12
+ as: {
13
+ type: { kind: 'terminal', name: 'keyword' },
14
+ required: false,
15
+ target: { attribute: 'as' },
16
+ description:
17
+ 'The native list element. Use ol when item order matters; its native numbers are shown.',
18
+ values: ['ul', 'ol'],
19
+ default: 'ul',
20
+ },
21
+ density: {
22
+ type: { kind: 'terminal', name: 'keyword' },
23
+ required: false,
24
+ target: { attribute: 'density' },
25
+ description:
26
+ 'How much room each item takes. comfortable is a full row, easy to point at, for lists of things to open; compact sets items close together with no row\n padding, for a short list of facts inside other content, such as the features a plan includes.',
27
+ values: ['comfortable', 'compact'],
28
+ default: 'comfortable',
29
+ },
30
+ layout: {
31
+ type: { kind: 'terminal', name: 'keyword' },
32
+ required: false,
33
+ target: { attribute: 'layout' },
34
+ description:
35
+ 'How the items are laid out. Rows stack the items one per line, for a list read top to bottom. Grid sets them in as many columns as fit, each at least\n --ui-list-min-item-width (14rem) wide, for card items such as pinned or featured entries.',
36
+ values: ['rows', 'grid'],
37
+ default: 'rows',
38
+ },
39
+ markers: {
40
+ type: { kind: 'terminal', name: 'keyword' },
41
+ required: false,
42
+ target: { attribute: 'markers' },
43
+ description:
44
+ 'Show disc bullets for a ul of native li elements. An ol always shows native numbers.',
45
+ values: ['none', 'disc'],
46
+ default: 'none',
47
+ },
48
+ },
49
+ }
10
50
  const props = defineProps({
11
51
  as: { type: null as unknown as PropType<'ul' | 'ol' | null>, default: 'ul' },
12
52
  density: {
@@ -17,37 +57,26 @@ const props = defineProps({
17
57
  markers: { type: null as unknown as PropType<'none' | 'disc' | null>, default: 'none' },
18
58
  })
19
59
  const checkedProps = computed(() => ({
20
- as: checkedProp<'ul' | 'ol'>(
21
- props['as'],
22
- { kind: 'terminal', name: 'keyword' },
23
- false,
24
- 'as',
25
- undefined,
26
- ['ul', 'ol'],
27
- ) as 'ul' | 'ol',
60
+ as: checkedProp<'ul' | 'ol'>(props['as'], { kind: 'terminal', name: 'keyword' }, false, 'as') as
61
+ | 'ul'
62
+ | 'ol',
28
63
  density: checkedProp<'comfortable' | 'compact'>(
29
64
  props['density'],
30
65
  { kind: 'terminal', name: 'keyword' },
31
66
  false,
32
67
  'density',
33
- undefined,
34
- ['comfortable', 'compact'],
35
68
  ) as 'comfortable' | 'compact',
36
69
  layout: checkedProp<'rows' | 'grid'>(
37
70
  props['layout'],
38
71
  { kind: 'terminal', name: 'keyword' },
39
72
  false,
40
73
  'layout',
41
- undefined,
42
- ['rows', 'grid'],
43
74
  ) as 'rows' | 'grid',
44
75
  markers: checkedProp<'none' | 'disc'>(
45
76
  props['markers'],
46
77
  { kind: 'terminal', name: 'keyword' },
47
78
  false,
48
79
  'markers',
49
- undefined,
50
- ['none', 'disc'],
51
80
  ) as 'none' | 'disc',
52
81
  }))
53
82
  void checkedProps.value
@@ -128,6 +157,7 @@ const hostState = computed(() =>
128
157
  v-if="checkedProps.as === 'ol'"
129
158
  data-component="ui-list"
130
159
  v-bind="nativeAttrs($attrs)"
160
+ v-prop-validity="{ contract: propValidityContract, values: { ...checkedProps } }"
131
161
  :data-as="reflectedProp('as', 'as', checkedProps.as, undefined, false)"
132
162
  :data-density="reflectedProp('density', 'density', checkedProps.density, undefined, false)"
133
163
  :data-layout="reflectedProp('layout', 'layout', checkedProps.layout, undefined, false)"
@@ -142,6 +172,7 @@ const hostState = computed(() =>
142
172
  data-component="ui-list"
143
173
  role="list"
144
174
  v-bind="nativeAttrs($attrs)"
175
+ v-prop-validity="{ contract: propValidityContract, values: { ...checkedProps } }"
145
176
  :data-as="reflectedProp('as', 'as', checkedProps.as, undefined, false)"
146
177
  :data-density="reflectedProp('density', 'density', checkedProps.density, undefined, false)"
147
178
  :data-layout="reflectedProp('layout', 'layout', checkedProps.layout, undefined, false)"
@@ -1,11 +1,32 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.14 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.15 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
3
  import { computed, getCurrentInstance, watchSyncEffect } from 'vue'
4
4
  import type { PropType } from 'vue'
5
- import { checkedProp } from './props'
5
+ import { checkedProp, vPropValidity } from './props'
6
6
 
7
7
  defineOptions({ inheritAttrs: false })
8
8
 
9
+ const propValidityContract = {
10
+ props: {
11
+ current: {
12
+ type: { kind: 'terminal', name: 'boolean' },
13
+ required: false,
14
+ target: { attribute: 'aria-current' },
15
+ description:
16
+ 'Marks the item as the current one, such as the site you are in: it takes the selected surface and aria-current="true", which assistive technology\n announces. Set it on one item at a time.',
17
+ default: false,
18
+ },
19
+ variant: {
20
+ type: { kind: 'terminal', name: 'keyword' },
21
+ required: false,
22
+ target: { attribute: 'variant' },
23
+ description:
24
+ 'How the item is drawn. A row is flat and takes a hover surface when it is a link, for items read down a list. A card sits on a raised, bordered surface,\n for items set in a grid (a List with layout="grid"). Both have the same parts: leading, title, description, and trailing.',
25
+ values: ['row', 'card'],
26
+ default: 'row',
27
+ },
28
+ },
29
+ }
9
30
  const props = defineProps({
10
31
  current: { type: null as unknown as PropType<boolean | null>, default: false },
11
32
  variant: { type: null as unknown as PropType<'row' | 'card' | null>, default: 'row' },
@@ -16,16 +37,12 @@ const checkedProps = computed(() => ({
16
37
  { kind: 'terminal', name: 'boolean' },
17
38
  false,
18
39
  'current',
19
- undefined,
20
- undefined,
21
40
  ) as boolean,
22
41
  variant: checkedProp<'row' | 'card'>(
23
42
  props['variant'],
24
43
  { kind: 'terminal', name: 'keyword' },
25
44
  false,
26
45
  'variant',
27
- undefined,
28
- ['row', 'card'],
29
46
  ) as 'row' | 'card',
30
47
  }))
31
48
  void checkedProps.value
@@ -99,6 +116,7 @@ const hostState = computed(() =>
99
116
  data-component="ui-list-item"
100
117
  v-bind="nativeAttrs($attrs)"
101
118
  :aria-current="checkedProps.current ?? undefined"
119
+ v-prop-validity="{ contract: propValidityContract, values: { ...checkedProps } }"
102
120
  :data-current="reflectedProp('current', 'current', checkedProps.current, undefined, false)"
103
121
  :data-variant="reflectedProp('variant', 'variant', checkedProps.variant, undefined, false)"
104
122
  :data-ui-list-item-state="hostState || undefined"
@@ -37,12 +37,12 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
37
37
  default: null;
38
38
  };
39
39
  }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
40
- "update:value": (value: string) => any;
41
40
  change: (event: CustomEvent<{
42
41
  readonly value: string | null;
43
42
  readonly values: readonly (string)[];
44
43
  readonly trigger: "keyboard" | "pointer";
45
44
  }>) => any;
45
+ "update:value": (value: string) => any;
46
46
  "update:values": (value: readonly string[]) => any;
47
47
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
48
48
  disabled: {
@@ -78,21 +78,21 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
78
78
  default: null;
79
79
  };
80
80
  }>> & Readonly<{
81
- "onUpdate:value"?: ((value: string) => any) | undefined;
82
81
  onChange?: ((event: CustomEvent<{
83
82
  readonly value: string | null;
84
83
  readonly values: readonly (string)[];
85
84
  readonly trigger: "keyboard" | "pointer";
86
85
  }>) => any) | undefined;
86
+ "onUpdate:value"?: ((value: string) => any) | undefined;
87
87
  "onUpdate:values"?: ((value: readonly string[]) => any) | undefined;
88
88
  }>, {
89
89
  values: readonly string[] | null;
90
90
  name: string | null;
91
91
  value: string | null;
92
+ invalid: boolean | null;
92
93
  rows: number | null;
93
94
  disabled: boolean | null;
94
95
  multiple: boolean | null;
95
- invalid: boolean | null;
96
96
  required: boolean | null;
97
97
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
98
98
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
package/vue/UiListbox.vue CHANGED
@@ -1,21 +1,83 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.14 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.15 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
3
  import {
4
4
  computed,
5
5
  defineComponent,
6
6
  getCurrentInstance,
7
7
  h,
8
+ provide,
8
9
  ref,
9
10
  useTemplateRef,
10
11
  watchSyncEffect,
11
12
  } from 'vue'
12
13
  import type { PropType, VNode } from 'vue'
13
14
  import { createDispatch, useComponentHost } from './host'
14
- import { checkedProp } from './props'
15
+ import { checkedProp, vPropValidity } from './props'
15
16
  import UiScrollArea from './UiScrollArea.vue'
16
17
 
17
18
  defineOptions({ inheritAttrs: false })
18
19
 
20
+ const propValidityContract = {
21
+ props: {
22
+ disabled: {
23
+ type: { kind: 'terminal', name: 'boolean' },
24
+ required: false,
25
+ target: { attribute: 'aria-disabled' },
26
+ description: 'Prevents selection and form submission.',
27
+ default: false,
28
+ },
29
+ invalid: {
30
+ type: { kind: 'terminal', name: 'boolean' },
31
+ required: false,
32
+ target: { attribute: 'invalid' },
33
+ description: 'Exposes invalid state to assistive technology and styling.',
34
+ default: false,
35
+ },
36
+ multiple: {
37
+ type: { kind: 'terminal', name: 'boolean' },
38
+ required: false,
39
+ target: { attribute: 'aria-multiselectable' },
40
+ description: 'Allows several choices, each shown with a checkmark when selected.',
41
+ default: false,
42
+ },
43
+ name: {
44
+ type: { kind: 'terminal', name: 'string' },
45
+ required: false,
46
+ target: { attribute: 'name' },
47
+ description: 'The form field name used for each selected value.',
48
+ default: '',
49
+ },
50
+ required: {
51
+ type: { kind: 'terminal', name: 'boolean' },
52
+ required: false,
53
+ target: { attribute: 'aria-required' },
54
+ description: 'Requires at least one choice before form submission.',
55
+ default: false,
56
+ },
57
+ rows: {
58
+ type: { kind: 'terminal', name: 'number' },
59
+ required: false,
60
+ target: { attribute: 'size' },
61
+ description:
62
+ 'The maximum number of choices visible before the list scrolls. Use at least two.',
63
+ default: 5,
64
+ },
65
+ value: {
66
+ type: { kind: 'terminal', name: 'string' },
67
+ required: false,
68
+ target: { attribute: 'value' },
69
+ description:
70
+ 'The initial or externally set single selection. Authored selected options work when it is omitted.',
71
+ },
72
+ values: {
73
+ type: { kind: 'list', item: { kind: 'terminal', name: 'string' } },
74
+ required: false,
75
+ target: { attribute: 'values' },
76
+ description:
77
+ 'The initial or externally set selections in multiple mode. Authored selected options work when it is omitted.',
78
+ },
79
+ },
80
+ }
19
81
  const props = defineProps({
20
82
  disabled: { type: null as unknown as PropType<boolean | null>, default: false },
21
83
  invalid: { type: null as unknown as PropType<boolean | null>, default: false },
@@ -32,64 +94,43 @@ const checkedProps = computed(() => ({
32
94
  { kind: 'terminal', name: 'boolean' },
33
95
  false,
34
96
  'disabled',
35
- undefined,
36
- undefined,
37
97
  ) as boolean,
38
98
  invalid: checkedProp<boolean>(
39
99
  props['invalid'],
40
100
  { kind: 'terminal', name: 'boolean' },
41
101
  false,
42
102
  'invalid',
43
- undefined,
44
- undefined,
45
103
  ) as boolean,
46
104
  multiple: checkedProp<boolean>(
47
105
  props['multiple'],
48
106
  { kind: 'terminal', name: 'boolean' },
49
107
  false,
50
108
  'multiple',
51
- undefined,
52
- undefined,
53
109
  ) as boolean,
54
110
  name: checkedProp<string>(
55
111
  props['name'],
56
112
  { kind: 'terminal', name: 'string' },
57
113
  false,
58
114
  'name',
59
- undefined,
60
- undefined,
61
115
  ) as string,
62
116
  required: checkedProp<boolean>(
63
117
  props['required'],
64
118
  { kind: 'terminal', name: 'boolean' },
65
119
  false,
66
120
  'required',
67
- undefined,
68
- undefined,
69
121
  ) as boolean,
70
122
  rows: checkedProp<number>(
71
123
  props['rows'],
72
124
  { kind: 'terminal', name: 'number' },
73
125
  false,
74
126
  'rows',
75
- undefined,
76
- undefined,
77
127
  ) as number,
78
- value: checkedProp<string>(
79
- props['value'],
80
- { kind: 'terminal', name: 'string' },
81
- false,
82
- 'value',
83
- undefined,
84
- undefined,
85
- ),
128
+ value: checkedProp<string>(props['value'], { kind: 'terminal', name: 'string' }, false, 'value'),
86
129
  values: checkedProp<readonly (string)[]>(
87
130
  props['values'],
88
131
  { kind: 'list', item: { kind: 'terminal', name: 'string' } },
89
132
  false,
90
133
  'values',
91
- undefined,
92
- undefined,
93
134
  ),
94
135
  }))
95
136
  void checkedProps.value
@@ -203,6 +244,12 @@ const guardedBinding2 = computed(() => {
203
244
  }
204
245
  return guardedBinding2Previous = hasSelection.value ? true : undefined
205
246
  })
247
+ provide('html-next:ui-listbox:choices', choices)
248
+ provide('html-next:ui-listbox:selection', selection)
249
+ provide('html-next:ui-listbox:hasSelection', hasSelection)
250
+ provide('html-next:ui-listbox:active', active)
251
+ provide('html-next:ui-listbox:uid', uid)
252
+ provide('html-next:ui-listbox:validationError', validationError)
206
253
  const hydrationNode = hydrationInstance?.vnode.el
207
254
  if (
208
255
  typeof window !== 'undefined' && hydrationNode != null
@@ -303,6 +350,7 @@ function uniqueKeys<T>(
303
350
  :aria-required="checkedProps.required ?? undefined"
304
351
  :aria-invalid="guarded"
305
352
  :style="{ '--_rows': checkedProps.rows ?? undefined }"
353
+ v-prop-validity="{ contract: propValidityContract, values: { ...checkedProps } }"
306
354
  :data-disabled="reflectedProp('disabled', 'disabled', checkedProps.disabled, undefined, false)"
307
355
  :data-invalid="reflectedProp('invalid', 'invalid', checkedProps.invalid, undefined, false)"
308
356
  :data-multiple="reflectedProp('multiple', 'multiple', checkedProps.multiple, undefined, false)"