@threadlabs/looma 0.21.6 → 0.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) 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/editor/index.js +5 -2
  417. package/vue/editor/primitives.d.ts +4 -1
  418. package/vue/host.ts +6 -6
@@ -1,13 +1,97 @@
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
- import { computed, getCurrentInstance, ref, useTemplateRef, watchSyncEffect } from 'vue'
3
+ import { computed, getCurrentInstance, provide, ref, useTemplateRef, watchSyncEffect } from 'vue'
4
4
  import type { PropType } from 'vue'
5
5
  import { vBindControl } from './control'
6
6
  import { createDispatch, useComponentHost } from './host'
7
- import { checkedProp } from './props'
7
+ import { checkedProp, vPropValidity } from './props'
8
8
 
9
9
  defineOptions({ inheritAttrs: false })
10
10
 
11
+ const propValidityContract = {
12
+ props: {
13
+ actions: {
14
+ type: { kind: 'terminal', name: 'boolean' },
15
+ required: false,
16
+ target: { attribute: 'actions' },
17
+ description:
18
+ 'Show explicit Save and Cancel buttons while editing. Without them, Enter or leaving the field saves and Escape cancels.',
19
+ default: false,
20
+ },
21
+ cancelLabel: {
22
+ type: { kind: 'terminal', name: 'string' },
23
+ required: false,
24
+ target: { attribute: 'cancellabel' },
25
+ description: 'Visible text for the Cancel action.',
26
+ default: 'Cancel',
27
+ },
28
+ disabled: {
29
+ type: { kind: 'terminal', name: 'boolean' },
30
+ required: false,
31
+ target: { attribute: 'disabled' },
32
+ description: 'Prevents entering or changing edit mode.',
33
+ default: false,
34
+ },
35
+ edit: {
36
+ type: { kind: 'terminal', name: 'boolean' },
37
+ required: false,
38
+ target: { attribute: 'edit' },
39
+ description: 'Whether edit mode is active initially or when set externally.',
40
+ default: false,
41
+ },
42
+ hint: {
43
+ type: { kind: 'terminal', name: 'string' },
44
+ required: false,
45
+ target: { attribute: 'hint' },
46
+ description:
47
+ 'Optional text shown beside the value to signal it is editable (for example "Edit").',
48
+ default: '',
49
+ },
50
+ label: {
51
+ type: { kind: 'terminal', name: 'string' },
52
+ required: false,
53
+ target: { attribute: 'aria-label' },
54
+ description: 'Accessible name for the editor.',
55
+ default: 'Edit value',
56
+ },
57
+ maxLength: {
58
+ type: { kind: 'terminal', name: 'number' },
59
+ required: false,
60
+ target: { attribute: 'maxlength' },
61
+ description: 'Maximum draft length; 0 leaves the length unrestricted.',
62
+ default: 0,
63
+ },
64
+ placeholder: {
65
+ type: { kind: 'terminal', name: 'string' },
66
+ required: false,
67
+ target: { attribute: 'placeholder' },
68
+ description: 'Hint shown in the text input while the draft is empty.',
69
+ default: '',
70
+ },
71
+ required: {
72
+ type: { kind: 'terminal', name: 'boolean' },
73
+ required: false,
74
+ target: { attribute: 'required' },
75
+ description: 'Prevent an empty draft from being saved.',
76
+ default: false,
77
+ },
78
+ saveLabel: {
79
+ type: { kind: 'terminal', name: 'string' },
80
+ required: false,
81
+ target: { attribute: 'savelabel' },
82
+ description: 'Visible text for the Save action.',
83
+ default: 'Save',
84
+ },
85
+ value: {
86
+ type: { kind: 'terminal', name: 'string' },
87
+ required: false,
88
+ target: { attribute: 'value' },
89
+ description:
90
+ 'The displayed value, and the text the editor starts from. It is not a form field: nothing is submitted with a form, so a form that needs the value copies\n it from the change event into a field of its own.',
91
+ default: '',
92
+ },
93
+ },
94
+ }
11
95
  const props = defineProps({
12
96
  actions: { type: null as unknown as PropType<boolean | null>, default: false },
13
97
  cancelLabel: { type: null as unknown as PropType<string | null>, default: 'Cancel' },
@@ -27,88 +111,66 @@ const checkedProps = computed(() => ({
27
111
  { kind: 'terminal', name: 'boolean' },
28
112
  false,
29
113
  'actions',
30
- undefined,
31
- undefined,
32
114
  ) as boolean,
33
115
  cancelLabel: checkedProp<string>(
34
116
  props['cancelLabel'],
35
117
  { kind: 'terminal', name: 'string' },
36
118
  false,
37
119
  'cancelLabel',
38
- undefined,
39
- undefined,
40
120
  ) as string,
41
121
  disabled: checkedProp<boolean>(
42
122
  props['disabled'],
43
123
  { kind: 'terminal', name: 'boolean' },
44
124
  false,
45
125
  'disabled',
46
- undefined,
47
- undefined,
48
126
  ) as boolean,
49
127
  edit: checkedProp<boolean>(
50
128
  props['edit'],
51
129
  { kind: 'terminal', name: 'boolean' },
52
130
  false,
53
131
  'edit',
54
- undefined,
55
- undefined,
56
132
  ) as boolean,
57
133
  hint: checkedProp<string>(
58
134
  props['hint'],
59
135
  { kind: 'terminal', name: 'string' },
60
136
  false,
61
137
  'hint',
62
- undefined,
63
- undefined,
64
138
  ) as string,
65
139
  label: checkedProp<string>(
66
140
  props['label'],
67
141
  { kind: 'terminal', name: 'string' },
68
142
  false,
69
143
  'label',
70
- undefined,
71
- undefined,
72
144
  ) as string,
73
145
  maxLength: checkedProp<number>(
74
146
  props['maxLength'],
75
147
  { kind: 'terminal', name: 'number' },
76
148
  false,
77
149
  'maxLength',
78
- undefined,
79
- undefined,
80
150
  ) as number,
81
151
  placeholder: checkedProp<string>(
82
152
  props['placeholder'],
83
153
  { kind: 'terminal', name: 'string' },
84
154
  false,
85
155
  'placeholder',
86
- undefined,
87
- undefined,
88
156
  ) as string,
89
157
  required: checkedProp<boolean>(
90
158
  props['required'],
91
159
  { kind: 'terminal', name: 'boolean' },
92
160
  false,
93
161
  'required',
94
- undefined,
95
- undefined,
96
162
  ) as boolean,
97
163
  saveLabel: checkedProp<string>(
98
164
  props['saveLabel'],
99
165
  { kind: 'terminal', name: 'string' },
100
166
  false,
101
167
  'saveLabel',
102
- undefined,
103
- undefined,
104
168
  ) as string,
105
169
  value: checkedProp<string>(
106
170
  props['value'],
107
171
  { kind: 'terminal', name: 'string' },
108
172
  false,
109
173
  'value',
110
- undefined,
111
- undefined,
112
174
  ) as string,
113
175
  }))
114
176
  void checkedProps.value
@@ -188,6 +250,23 @@ const inputElement = useTemplateRef<HTMLElement>('input')
188
250
  const internalEdit = ref(false)
189
251
  const internalValue = ref('')
190
252
  const draft = ref('')
253
+ let guardedPrevious: any
254
+ const guarded = computed(() => {
255
+ if (!(internalValue.value == null || typeof internalValue.value === 'string')) {
256
+ return guardedPrevious
257
+ }
258
+ return guardedPrevious = internalValue.value
259
+ })
260
+ let guardedBindingPrevious: any
261
+ const guardedBinding = computed(() => {
262
+ if (!(internalEdit.value == null || typeof internalEdit.value === 'boolean')) {
263
+ return guardedBindingPrevious
264
+ }
265
+ return guardedBindingPrevious = checkedProps.value.disabled || !internalEdit.value
266
+ })
267
+ provide('html-next:ui-editable:internalEdit', internalEdit)
268
+ provide('html-next:ui-editable:internalValue', internalValue)
269
+ provide('html-next:ui-editable:draft', draft)
191
270
  const hydrationNode = hydrationInstance?.vnode.el
192
271
  if (
193
272
  typeof window !== 'undefined' && hydrationNode != null
@@ -269,6 +348,7 @@ useComponentHost(() => import('../components/ui-editable/ui-editable.js'), {
269
348
  <div
270
349
  data-component="ui-editable"
271
350
  v-bind="nativeAttrs($attrs)"
351
+ v-prop-validity="{ contract: propValidityContract, values: { ...checkedProps } }"
272
352
  :data-actions="reflectedProp('actions', 'actions', checkedProps.actions, undefined, false)"
273
353
  :data-cancel-label="reflectedProp('cancelLabel', 'cancel-label', checkedProps.cancelLabel, undefined, false)"
274
354
  :data-disabled="reflectedProp('disabled', 'disabled', checkedProps.disabled, undefined, false)"
@@ -290,7 +370,7 @@ useComponentHost(() => import('../components/ui-editable/ui-editable.js'), {
290
370
  :disabled="checkedProps.disabled ?? undefined"
291
371
  ref="preview"
292
372
  >
293
- <span class="text">{{ internalValue }}</span>
373
+ <span class="text">{{ guarded }}</span>
294
374
  <span v-if="checkedProps.hint" class="hint" aria-hidden="true">{{
295
375
  checkedProps.hint
296
376
  }}</span>
@@ -302,7 +382,7 @@ useComponentHost(() => import('../components/ui-editable/ui-editable.js'), {
302
382
  :aria-label="checkedProps.label ?? undefined"
303
383
  :placeholder="checkedProps.placeholder ?? undefined"
304
384
  :required="checkedProps.required ?? undefined"
305
- :disabled="checkedProps.disabled || !internalEdit"
385
+ :disabled="guardedBinding"
306
386
  ref="input"
307
387
  >
308
388
  </div>
@@ -1,10 +1,11 @@
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,
@@ -12,10 +13,42 @@ import {
12
13
  import type { PropType, VNode } from 'vue'
13
14
  import { vBindControl } from './control'
14
15
  import { createDispatch, useComponentHost } from './host'
15
- import { checkedProp } from './props'
16
+ import { checkedProp, vPropValidity } from './props'
16
17
 
17
18
  defineOptions({ inheritAttrs: false })
18
19
 
20
+ const propValidityContract = {
21
+ props: {
22
+ headerRow: {
23
+ type: { kind: 'terminal', name: 'boolean' },
24
+ required: false,
25
+ target: { attribute: 'headerrow' },
26
+ description: 'Whether table insertion initially includes a header row.',
27
+ default: false,
28
+ },
29
+ maxCols: {
30
+ type: { kind: 'terminal', name: 'integer' },
31
+ required: false,
32
+ target: { attribute: 'maxcols' },
33
+ description: 'The most columns the grid offers (at most 10).',
34
+ default: 8,
35
+ },
36
+ maxRows: {
37
+ type: { kind: 'terminal', name: 'integer' },
38
+ required: false,
39
+ target: { attribute: 'maxrows' },
40
+ description: 'The most rows the grid offers (at most 10).',
41
+ default: 8,
42
+ },
43
+ open: {
44
+ type: { kind: 'terminal', name: 'boolean' },
45
+ required: false,
46
+ target: { attribute: 'open' },
47
+ description: 'Whether the grid is shown.',
48
+ default: false,
49
+ },
50
+ },
51
+ }
19
52
  const props = defineProps({
20
53
  headerRow: { type: null as unknown as PropType<boolean | null>, default: false },
21
54
  maxCols: { type: null as unknown as PropType<number | null>, default: 8 },
@@ -28,32 +61,24 @@ const checkedProps = computed(() => ({
28
61
  { kind: 'terminal', name: 'boolean' },
29
62
  false,
30
63
  'headerRow',
31
- undefined,
32
- undefined,
33
64
  ) as boolean,
34
65
  maxCols: checkedProp<number>(
35
66
  props['maxCols'],
36
67
  { kind: 'terminal', name: 'integer' },
37
68
  false,
38
69
  'maxCols',
39
- undefined,
40
- undefined,
41
70
  ) as number,
42
71
  maxRows: checkedProp<number>(
43
72
  props['maxRows'],
44
73
  { kind: 'terminal', name: 'integer' },
45
74
  false,
46
75
  'maxRows',
47
- undefined,
48
- undefined,
49
76
  ) as number,
50
77
  open: checkedProp<boolean>(
51
78
  props['open'],
52
79
  { kind: 'terminal', name: 'boolean' },
53
80
  false,
54
81
  'open',
55
- undefined,
56
- undefined,
57
82
  ) as boolean,
58
83
  }))
59
84
  void checkedProps.value
@@ -137,6 +162,16 @@ const rows = ref(8)
137
162
  const cols = ref(8)
138
163
  const hint = ref('')
139
164
  const withHeaderRow = ref(false)
165
+ let guardedPrevious: any
166
+ const guarded = computed(() => {
167
+ if (!(hint.value == null || typeof hint.value === 'string')) return guardedPrevious
168
+ return guardedPrevious = hint.value
169
+ })
170
+ provide('html-next:ui-editor-insert-table-grid:cells', cells)
171
+ provide('html-next:ui-editor-insert-table-grid:rows', rows)
172
+ provide('html-next:ui-editor-insert-table-grid:cols', cols)
173
+ provide('html-next:ui-editor-insert-table-grid:hint', hint)
174
+ provide('html-next:ui-editor-insert-table-grid:withHeaderRow', withHeaderRow)
140
175
  const hydrationNode = hydrationInstance?.vnode.el
141
176
  if (
142
177
  typeof window !== 'undefined' && hydrationNode != null
@@ -220,13 +255,14 @@ function uniqueKeys<T>(
220
255
  data-component="ui-editor-insert-table-grid"
221
256
  v-bind="nativeAttrs($attrs)"
222
257
  :hidden="!checkedProps.open"
258
+ v-prop-validity="{ contract: propValidityContract, values: { ...checkedProps } }"
223
259
  :data-header-row="reflectedProp('headerRow', 'header-row', checkedProps.headerRow, undefined, false)"
224
260
  :data-max-cols="reflectedProp('maxCols', 'max-cols', checkedProps.maxCols, undefined, false)"
225
261
  :data-max-rows="reflectedProp('maxRows', 'max-rows', checkedProps.maxRows, undefined, false)"
226
262
  :data-open="reflectedProp('open', 'open', checkedProps.open, undefined, false)"
227
263
  ref="root"
228
264
  >
229
- <p class="hint">{{ hint }}</p>
265
+ <p class="hint">{{ guarded }}</p>
230
266
  <div
231
267
  class="grid"
232
268
  role="group"
@@ -1,12 +1,96 @@
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
- import { computed, getCurrentInstance, ref, useTemplateRef, watchSyncEffect } from 'vue'
3
+ import { computed, getCurrentInstance, provide, ref, useTemplateRef, 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
+ anchorRect: {
13
+ type: {
14
+ kind: 'object',
15
+ fields: [
16
+ { name: 'left', type: { kind: 'terminal', name: 'number' }, optional: true },
17
+ { name: 'top', type: { kind: 'terminal', name: 'number' }, optional: true },
18
+ { name: 'right', type: { kind: 'terminal', name: 'number' }, optional: true },
19
+ { name: 'bottom', type: { kind: 'terminal', name: 'number' }, optional: true },
20
+ { name: 'x', type: { kind: 'terminal', name: 'number' }, optional: true },
21
+ { name: 'y', type: { kind: 'terminal', name: 'number' }, optional: true },
22
+ { name: 'width', type: { kind: 'terminal', name: 'number' }, optional: true },
23
+ { name: 'height', type: { kind: 'terminal', name: 'number' }, optional: true },
24
+ ],
25
+ open: false,
26
+ },
27
+ required: false,
28
+ target: { attribute: 'anchorrect' },
29
+ description: 'Where the @ was typed, in viewport coordinates.',
30
+ },
31
+ items: {
32
+ type: {
33
+ kind: 'list',
34
+ item: {
35
+ kind: 'object',
36
+ fields: [
37
+ { name: 'id', type: { kind: 'terminal', name: 'string' }, optional: false },
38
+ { name: 'label', type: { kind: 'terminal', name: 'string' }, optional: false },
39
+ { name: 'detail', type: { kind: 'terminal', name: 'string' }, optional: true },
40
+ { name: 'initials', type: { kind: 'terminal', name: 'string' }, optional: true },
41
+ ],
42
+ open: false,
43
+ },
44
+ },
45
+ required: false,
46
+ target: { attribute: 'items' },
47
+ description: 'The people the menu offers.',
48
+ },
49
+ label: {
50
+ type: { kind: 'terminal', name: 'string' },
51
+ required: false,
52
+ target: { attribute: 'label' },
53
+ description: 'Accessible name of the suggestion list.',
54
+ default: 'Mentions',
55
+ },
56
+ loading: {
57
+ type: { kind: 'terminal', name: 'boolean' },
58
+ required: false,
59
+ target: { attribute: 'aria-busy' },
60
+ description: 'Whether a search is in progress.',
61
+ default: false,
62
+ },
63
+ loadingLabel: {
64
+ type: { kind: 'terminal', name: 'string' },
65
+ required: false,
66
+ target: { attribute: 'loadinglabel' },
67
+ description: 'Status text shown while loading an empty result list.',
68
+ default: 'Searching…',
69
+ },
70
+ open: {
71
+ type: { kind: 'terminal', name: 'boolean' },
72
+ required: false,
73
+ target: { attribute: 'open' },
74
+ description: 'Whether the menu is open.',
75
+ default: false,
76
+ },
77
+ query: {
78
+ type: { kind: 'terminal', name: 'string' },
79
+ required: false,
80
+ target: { attribute: 'query' },
81
+ description: 'The text typed after the @.',
82
+ default: '',
83
+ },
84
+ selectedIndex: {
85
+ type: { kind: 'terminal', name: 'integer' },
86
+ required: false,
87
+ target: { attribute: 'selectedindex' },
88
+ description:
89
+ 'The zero-based index of the highlighted person, capped at the last one shown, and announced through aria-activedescendant. The menu does not handle arrow\n keys itself: the editor sets this as the user moves, while hovering a person highlights them and reports a highlight event.',
90
+ default: 0,
91
+ },
92
+ },
93
+ }
10
94
  const props = defineProps({
11
95
  anchorRect: {
12
96
  type: null as unknown as PropType<
@@ -71,8 +155,6 @@ const checkedProps = computed(() => ({
71
155
  },
72
156
  false,
73
157
  'anchorRect',
74
- undefined,
75
- undefined,
76
158
  ),
77
159
  items: checkedProp<
78
160
  readonly ({
@@ -98,56 +180,42 @@ const checkedProps = computed(() => ({
98
180
  },
99
181
  false,
100
182
  'items',
101
- undefined,
102
- undefined,
103
183
  ),
104
184
  label: checkedProp<string>(
105
185
  props['label'],
106
186
  { kind: 'terminal', name: 'string' },
107
187
  false,
108
188
  'label',
109
- undefined,
110
- undefined,
111
189
  ) as string,
112
190
  loading: checkedProp<boolean>(
113
191
  props['loading'],
114
192
  { kind: 'terminal', name: 'boolean' },
115
193
  false,
116
194
  'loading',
117
- undefined,
118
- undefined,
119
195
  ) as boolean,
120
196
  loadingLabel: checkedProp<string>(
121
197
  props['loadingLabel'],
122
198
  { kind: 'terminal', name: 'string' },
123
199
  false,
124
200
  'loadingLabel',
125
- undefined,
126
- undefined,
127
201
  ) as string,
128
202
  open: checkedProp<boolean>(
129
203
  props['open'],
130
204
  { kind: 'terminal', name: 'boolean' },
131
205
  false,
132
206
  'open',
133
- undefined,
134
- undefined,
135
207
  ) as boolean,
136
208
  query: checkedProp<string>(
137
209
  props['query'],
138
210
  { kind: 'terminal', name: 'string' },
139
211
  false,
140
212
  'query',
141
- undefined,
142
- undefined,
143
213
  ) as string,
144
214
  selectedIndex: checkedProp<number>(
145
215
  props['selectedIndex'],
146
216
  { kind: 'terminal', name: 'integer' },
147
217
  false,
148
218
  'selectedIndex',
149
- undefined,
150
- undefined,
151
219
  ) as number,
152
220
  }))
153
221
  void checkedProps.value
@@ -199,6 +267,16 @@ const rows = ref<{ id: string; label: string; detail?: string; initials: string
199
267
  const searching = ref(false)
200
268
  const active = ref(0)
201
269
  const prefix = ref('ui-editor-mention-menu')
270
+ let guardedPrevious: any
271
+ const guarded = computed(() => {
272
+ if (!(visible.value == null || typeof visible.value === 'boolean')) return guardedPrevious
273
+ return guardedPrevious = !visible.value
274
+ })
275
+ provide('html-next:ui-editor-mention-menu:visible', visible)
276
+ provide('html-next:ui-editor-mention-menu:rows', rows)
277
+ provide('html-next:ui-editor-mention-menu:searching', searching)
278
+ provide('html-next:ui-editor-mention-menu:active', active)
279
+ provide('html-next:ui-editor-mention-menu:prefix', prefix)
202
280
  const hydrationNode = hydrationInstance?.vnode.el
203
281
  if (
204
282
  typeof window !== 'undefined' && hydrationNode != null
@@ -247,7 +325,8 @@ useComponentHost(() => import('../components/ui-editor-mention-menu/ui-editor-me
247
325
  role="listbox"
248
326
  v-bind="nativeAttrs($attrs)"
249
327
  :aria-busy="checkedProps.loading ?? undefined"
250
- :hidden="!visible"
328
+ :hidden="guarded"
329
+ v-prop-validity="{ contract: propValidityContract, values: { ...checkedProps } }"
251
330
  :data-anchor-rect="reflectedProp('anchorRect', 'anchor-rect', checkedProps.anchorRect, undefined, false)"
252
331
  :data-items="reflectedProp('items', 'items', checkedProps.items, undefined, false)"
253
332
  :data-label="reflectedProp('label', 'label', checkedProps.label, undefined, false)"
@@ -1,11 +1,37 @@
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
+ detail: {
12
+ type: { kind: 'terminal', name: 'string' },
13
+ required: false,
14
+ target: { attribute: 'detail' },
15
+ description: 'Secondary text, such as a team or role.',
16
+ default: '',
17
+ },
18
+ initials: {
19
+ type: { kind: 'terminal', name: 'string' },
20
+ required: false,
21
+ target: { attribute: 'initials' },
22
+ description: 'Text fallback for the start slot when no avatar is supplied.',
23
+ default: '',
24
+ },
25
+ value: {
26
+ type: { kind: 'terminal', name: 'string' },
27
+ required: false,
28
+ target: { attribute: 'data-value' },
29
+ description:
30
+ 'Stable identifier reported by the containing Mention Menu when this person is chosen.',
31
+ default: '',
32
+ },
33
+ },
34
+ }
9
35
  const props = defineProps({
10
36
  detail: { type: null as unknown as PropType<string | null>, default: '' },
11
37
  initials: { type: null as unknown as PropType<string | null>, default: '' },
@@ -17,24 +43,18 @@ const checkedProps = computed(() => ({
17
43
  { kind: 'terminal', name: 'string' },
18
44
  false,
19
45
  'detail',
20
- undefined,
21
- undefined,
22
46
  ) as string,
23
47
  initials: checkedProp<string>(
24
48
  props['initials'],
25
49
  { kind: 'terminal', name: 'string' },
26
50
  false,
27
51
  'initials',
28
- undefined,
29
- undefined,
30
52
  ) as string,
31
53
  value: checkedProp<string>(
32
54
  props['value'],
33
55
  { kind: 'terminal', name: 'string' },
34
56
  false,
35
57
  'value',
36
- undefined,
37
- undefined,
38
58
  ) as string,
39
59
  }))
40
60
  void checkedProps.value
@@ -99,6 +119,7 @@ if (
99
119
  role="option"
100
120
  tabindex="-1"
101
121
  v-bind="nativeAttrs($attrs)"
122
+ v-prop-validity="{ contract: propValidityContract, values: { ...checkedProps } }"
102
123
  :data-detail="reflectedProp('detail', 'detail', checkedProps.detail, undefined, false)"
103
124
  :data-initials="reflectedProp('initials', 'initials', checkedProps.initials, undefined, false)"
104
125
  :data-value="reflectedProp('value', 'value', checkedProps.value, undefined, true)"