@threadlabs/looma 0.23.15 → 0.23.17

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 (403) hide show
  1. package/components/ui-avatar/ui-avatar.html +1 -1
  2. package/components/ui-avatar-group/ui-avatar-group.html +1 -3
  3. package/components/ui-breadcrumb-item/ui-breadcrumb-item.html +1 -1
  4. package/components/ui-button/ui-button.html +4 -4
  5. package/components/ui-combobox/ui-combobox.html +19 -21
  6. package/components/ui-description-item/ui-description-item.html +1 -1
  7. package/components/ui-dialog/ui-dialog.html +1 -1
  8. package/components/ui-disclosure/ui-disclosure.html +1 -1
  9. package/components/ui-editable/ui-editable.html +4 -4
  10. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +1 -1
  11. package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +2 -2
  12. package/components/ui-editor-mention-menu-item/ui-editor-mention-menu-item.html +2 -2
  13. package/components/ui-editor-slash-menu-group/ui-editor-slash-menu-group.html +1 -1
  14. package/components/ui-editor-slash-menu-item/ui-editor-slash-menu-item.html +1 -1
  15. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +2 -2
  16. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +2 -2
  17. package/components/ui-icon-button/ui-icon-button.html +28 -1
  18. package/components/ui-listbox/ui-listbox.html +2 -2
  19. package/components/ui-menu-group/ui-menu-group.html +1 -1
  20. package/components/ui-menu-item/ui-menu-item.html +1 -1
  21. package/components/ui-meter/ui-meter.html +7 -8
  22. package/components/ui-nav-item/ui-nav-item.html +2 -2
  23. package/components/ui-radio-group/ui-radio-group.html +1 -1
  24. package/components/ui-section/ui-section.html +1 -1
  25. package/components/ui-spinner/ui-spinner.html +4 -4
  26. package/components/ui-status-message/ui-status-message.html +2 -2
  27. package/components/ui-tabs/ui-tabs.html +1 -1
  28. package/components/ui-toast-region/ui-toast-region.html +1 -1
  29. package/components/ui-tree-item/ui-tree-item.html +3 -3
  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 +29 -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 +1 -1
  109. package/vanilla/UiAvatar.d.ts +1 -1
  110. package/vanilla/UiAvatar.js +9 -7
  111. package/vanilla/UiAvatarGroup.d.ts +1 -1
  112. package/vanilla/UiAvatarGroup.js +4 -4
  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 +2 -2
  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 +2 -2
  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 +1 -1
  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 +29 -25
  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 +1 -1
  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 +5 -5
  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 +16 -14
  143. package/vanilla/UiDisclosure.d.ts +1 -1
  144. package/vanilla/UiDisclosure.js +4 -4
  145. package/vanilla/UiEditable.d.ts +1 -1
  146. package/vanilla/UiEditable.js +35 -27
  147. package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
  148. package/vanilla/UiEditorInsertTableGrid.js +20 -18
  149. package/vanilla/UiEditorMentionMenu.d.ts +1 -1
  150. package/vanilla/UiEditorMentionMenu.js +27 -25
  151. package/vanilla/UiEditorMentionMenuItem.d.ts +1 -1
  152. package/vanilla/UiEditorMentionMenuItem.js +6 -4
  153. package/vanilla/UiEditorSlashMenu.d.ts +1 -1
  154. package/vanilla/UiEditorSlashMenu.js +1 -1
  155. package/vanilla/UiEditorSlashMenuGroup.d.ts +1 -1
  156. package/vanilla/UiEditorSlashMenuGroup.js +9 -7
  157. package/vanilla/UiEditorSlashMenuItem.d.ts +1 -1
  158. package/vanilla/UiEditorSlashMenuItem.js +4 -2
  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 +1 -1
  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 +2 -1
  176. package/vanilla/UiIconButton.js +5 -2
  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 +1 -1
  189. package/vanilla/UiMenuGroup.d.ts +1 -1
  190. package/vanilla/UiMenuGroup.js +4 -2
  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 +2 -2
  195. package/vanilla/UiNavItem.d.ts +1 -1
  196. package/vanilla/UiNavItem.js +2 -2
  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 +1 -1
  201. package/vanilla/UiRadio.d.ts +1 -1
  202. package/vanilla/UiRadio.js +1 -1
  203. package/vanilla/UiRadioGroup.d.ts +1 -1
  204. package/vanilla/UiRadioGroup.js +4 -4
  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 +1 -1
  213. package/vanilla/UiSection.d.ts +1 -1
  214. package/vanilla/UiSection.js +4 -4
  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 +1 -1
  221. package/vanilla/UiSpinner.d.ts +1 -1
  222. package/vanilla/UiSpinner.js +2 -2
  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 +4 -4
  227. package/vanilla/UiSwitch.d.ts +1 -1
  228. package/vanilla/UiSwitch.js +1 -1
  229. package/vanilla/UiSwitcher.d.ts +1 -1
  230. package/vanilla/UiSwitcher.js +1 -1
  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 +1 -1
  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 +4 -4
  251. package/vue/UiActionBar.vue +1 -1
  252. package/vue/UiAffordanceScope.vue +1 -1
  253. package/vue/UiAvatar.vue +1 -1
  254. package/vue/UiAvatarGroup.vue +9 -2
  255. package/vue/UiBadge.vue +1 -1
  256. package/vue/UiBreadcrumbItem.vue +55 -9
  257. package/vue/UiBreadcrumbs.vue +1 -1
  258. package/vue/UiButton.vue +162 -37
  259. package/vue/UiCallout.vue +1 -1
  260. package/vue/UiCard.vue +1 -1
  261. package/vue/UiCheckbox.vue +8 -1
  262. package/vue/UiCluster.vue +1 -1
  263. package/vue/UiCombobox.d.ts +1 -1
  264. package/vue/UiCombobox.vue +190 -73
  265. package/vue/UiContainer.vue +1 -1
  266. package/vue/UiContextMenu.vue +1 -1
  267. package/vue/UiCover.vue +1 -1
  268. package/vue/UiDescriptionItem.vue +1 -1
  269. package/vue/UiDescriptionList.vue +1 -1
  270. package/vue/UiDialog.vue +1 -1
  271. package/vue/UiDisclosure.vue +1 -1
  272. package/vue/UiEditable.vue +9 -4
  273. package/vue/UiEditorInsertTableGrid.vue +19 -2
  274. package/vue/UiEditorMentionMenu.vue +20 -2
  275. package/vue/UiEditorMentionMenuItem.vue +1 -1
  276. package/vue/UiEditorSlashMenu.vue +1 -1
  277. package/vue/UiEditorSlashMenuGroup.vue +1 -1
  278. package/vue/UiEditorSlashMenuItem.vue +1 -1
  279. package/vue/UiEditorTableContextMenu.vue +46 -5
  280. package/vue/UiEditorTableOverlay.vue +55 -26
  281. package/vue/UiEditorTableToolbar.vue +46 -5
  282. package/vue/UiEditorToolbar.vue +1 -1
  283. package/vue/UiFloatingActionButton.vue +1 -1
  284. package/vue/UiFormField.vue +1 -1
  285. package/vue/UiGrid.vue +1 -1
  286. package/vue/UiIcon.vue +1 -1
  287. package/vue/UiIconButton.d.ts +9 -0
  288. package/vue/UiIconButton.vue +104 -14
  289. package/vue/UiInput.vue +1 -1
  290. package/vue/UiInputGroup.vue +1 -1
  291. package/vue/UiList.vue +1 -1
  292. package/vue/UiListItem.vue +1 -1
  293. package/vue/UiListbox.vue +47 -13
  294. package/vue/UiMenu.vue +1 -1
  295. package/vue/UiMenuGroup.vue +1 -1
  296. package/vue/UiMenuItem.vue +46 -10
  297. package/vue/UiMeter.d.ts +2 -2
  298. package/vue/UiMeter.vue +675 -97
  299. package/vue/UiNavItem.vue +97 -39
  300. package/vue/UiPageHeader.vue +1 -1
  301. package/vue/UiPopover.vue +1 -1
  302. package/vue/UiRadio.vue +8 -1
  303. package/vue/UiRadioGroup.vue +1 -1
  304. package/vue/UiReel.vue +1 -1
  305. package/vue/UiScrollArea.vue +1 -1
  306. package/vue/UiSearchResultRow.vue +1 -1
  307. package/vue/UiSearchShell.vue +1 -1
  308. package/vue/UiSection.vue +1 -1
  309. package/vue/UiSelect.vue +1 -1
  310. package/vue/UiSeparator.vue +1 -1
  311. package/vue/UiSidebar.vue +1 -1
  312. package/vue/UiSpinner.vue +159 -31
  313. package/vue/UiStack.vue +1 -1
  314. package/vue/UiStatusMessage.vue +42 -4
  315. package/vue/UiSwitch.vue +8 -1
  316. package/vue/UiSwitcher.vue +1 -1
  317. package/vue/UiTable.vue +1 -1
  318. package/vue/UiTabs.vue +20 -2
  319. package/vue/UiText.d.ts +1 -1
  320. package/vue/UiText.vue +1 -1
  321. package/vue/UiTextarea.vue +1 -1
  322. package/vue/UiToast.vue +1 -1
  323. package/vue/UiToastRegion.vue +20 -2
  324. package/vue/UiTooltip.vue +1 -1
  325. package/vue/UiTopBar.vue +1 -1
  326. package/vue/UiTree.vue +1 -1
  327. package/vue/UiTreeItem.vue +113 -25
  328. package/vue/chunks/UiActionBar.js +1 -1
  329. package/vue/chunks/UiAffordanceScope.js +1 -1
  330. package/vue/chunks/UiAvatar.js +1 -1
  331. package/vue/chunks/UiAvatarGroup.js +7 -2
  332. package/vue/chunks/UiBadge.js +1 -1
  333. package/vue/chunks/UiBreadcrumbItem.js +27 -12
  334. package/vue/chunks/UiBreadcrumbs.js +1 -1
  335. package/vue/chunks/UiButton.js +67 -29
  336. package/vue/chunks/UiCallout.js +1 -1
  337. package/vue/chunks/UiCard.js +1 -1
  338. package/vue/chunks/UiCheckbox.js +6 -1
  339. package/vue/chunks/UiCluster.js +1 -1
  340. package/vue/chunks/UiCombobox.js +155 -56
  341. package/vue/chunks/UiContainer.js +1 -1
  342. package/vue/chunks/UiContextMenu.js +1 -1
  343. package/vue/chunks/UiCover.js +1 -1
  344. package/vue/chunks/UiDescriptionItem.js +1 -1
  345. package/vue/chunks/UiDescriptionList.js +1 -1
  346. package/vue/chunks/UiDialog.js +1 -1
  347. package/vue/chunks/UiDisclosure.js +1 -1
  348. package/vue/chunks/UiEditable.js +10 -5
  349. package/vue/chunks/UiEditorInsertTableGrid.js +18 -3
  350. package/vue/chunks/UiEditorMentionMenu.js +8 -2
  351. package/vue/chunks/UiEditorMentionMenuItem.js +1 -1
  352. package/vue/chunks/UiEditorSlashMenu.js +1 -1
  353. package/vue/chunks/UiEditorSlashMenuGroup.js +1 -1
  354. package/vue/chunks/UiEditorSlashMenuItem.js +1 -1
  355. package/vue/chunks/UiEditorTableContextMenu.js +13 -7
  356. package/vue/chunks/UiEditorTableOverlay.js +43 -23
  357. package/vue/chunks/UiEditorTableToolbar.js +13 -7
  358. package/vue/chunks/UiEditorToolbar.js +1 -1
  359. package/vue/chunks/UiFloatingActionButton.js +1 -1
  360. package/vue/chunks/UiFormField.js +1 -1
  361. package/vue/chunks/UiGrid.js +1 -1
  362. package/vue/chunks/UiIcon.js +1 -1
  363. package/vue/chunks/UiIconButton.js +48 -11
  364. package/vue/chunks/UiInput.js +1 -1
  365. package/vue/chunks/UiInputGroup.js +1 -1
  366. package/vue/chunks/UiList.js +1 -1
  367. package/vue/chunks/UiListItem.js +1 -1
  368. package/vue/chunks/UiListbox.js +29 -15
  369. package/vue/chunks/UiMenu.js +1 -1
  370. package/vue/chunks/UiMenuGroup.js +1 -1
  371. package/vue/chunks/UiMenuItem.js +23 -9
  372. package/vue/chunks/UiMeter.js +373 -37
  373. package/vue/chunks/UiNavItem.js +67 -39
  374. package/vue/chunks/UiPageHeader.js +1 -1
  375. package/vue/chunks/UiPopover.js +1 -1
  376. package/vue/chunks/UiRadio.js +6 -1
  377. package/vue/chunks/UiRadioGroup.js +1 -1
  378. package/vue/chunks/UiReel.js +1 -1
  379. package/vue/chunks/UiScrollArea.js +1 -1
  380. package/vue/chunks/UiSearchResultRow.js +1 -1
  381. package/vue/chunks/UiSearchShell.js +1 -1
  382. package/vue/chunks/UiSection.js +1 -1
  383. package/vue/chunks/UiSelect.js +1 -1
  384. package/vue/chunks/UiSeparator.js +1 -1
  385. package/vue/chunks/UiSidebar.js +1 -1
  386. package/vue/chunks/UiSpinner.js +75 -36
  387. package/vue/chunks/UiStack.js +1 -1
  388. package/vue/chunks/UiStatusMessage.js +21 -6
  389. package/vue/chunks/UiSwitch.js +6 -1
  390. package/vue/chunks/UiSwitcher.js +1 -1
  391. package/vue/chunks/UiTable.js +1 -1
  392. package/vue/chunks/UiTabs.js +8 -2
  393. package/vue/chunks/UiText.js +1 -1
  394. package/vue/chunks/UiTextarea.js +1 -1
  395. package/vue/chunks/UiToast.js +1 -1
  396. package/vue/chunks/UiToastRegion.js +8 -2
  397. package/vue/chunks/UiTooltip.js +1 -1
  398. package/vue/chunks/UiTopBar.js +1 -1
  399. package/vue/chunks/UiTree.js +1 -1
  400. package/vue/chunks/UiTreeItem.js +52 -19
  401. package/vue/chunks/props.js +11 -6
  402. package/vue/components.css +1321 -1298
  403. package/vue/host.ts +15 -3
@@ -1,4 +1,4 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.19 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.25 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
3
  import {
4
4
  computed,
@@ -450,6 +450,24 @@ function attribute(value: unknown): any {
450
450
  return value === true ? '' : text(value)
451
451
  }
452
452
 
453
+ // A nonempty scalar call cannot produce the invalid-result sentinel.
454
+ type ConcatResult<T extends unknown[]> = T extends
455
+ [
456
+ string | number | boolean | null | undefined,
457
+ ...(string | number | boolean | null | undefined)[],
458
+ ] ? string | undefined
459
+ : string | symbol | undefined
460
+ function concat<T extends unknown[]>(...values: T): ConcatResult<T> {
461
+ if (values.some(value => value === Symbol.for('html-next.invalid-result'))) {
462
+ return Symbol.for('html-next.invalid-result') as ConcatResult<T>
463
+ }
464
+ if (values.some(value => value === undefined)) return undefined as ConcatResult<T>
465
+ if (values.length === 0 || values.some(value => typeof value === 'object' && value !== null)) {
466
+ return Symbol.for('html-next.invalid-result') as ConcatResult<T>
467
+ }
468
+ return values.map(value => value === null ? '' : String(value)).join('') as ConcatResult<T>
469
+ }
470
+
453
471
  function uniqueKeys<T>(
454
472
  items: readonly T[],
455
473
  keyOf: (
@@ -527,12 +545,35 @@ function uniqueKeys<T>(
527
545
  :key="item.action"
528
546
  type="button"
529
547
  :role="attribute(
530
- (({ true: 'menuitemcheckbox', false: 'menuitem' }) as Record<string, any>)[`${item.checkable}`],
548
+ ((objectValue: any, indexValue: any) =>
549
+ objectValue === Symbol.for('html-next.invalid-result')
550
+ || indexValue === Symbol.for('html-next.invalid-result')
551
+ ? Symbol.for('html-next.invalid-result')
552
+ : objectValue[indexValue])(
553
+ { true: 'menuitemcheckbox', false: 'menuitem' },
554
+ concat(item.checkable),
555
+ ),
531
556
  )"
532
- :aria-checked="typeof ((({ true: item.checked, false: null }) as Record<string, any>)[`${item.checkable}`])
557
+ :aria-checked="typeof (((objectValue: any, indexValue: any) =>
558
+ objectValue === Symbol.for('html-next.invalid-result')
559
+ || indexValue === Symbol.for('html-next.invalid-result')
560
+ ? Symbol.for('html-next.invalid-result')
561
+ : objectValue[indexValue])({ true: item.checked, false: null }, concat(item.checkable)))
533
562
  === 'boolean'
534
- ? String((({ true: item.checked, false: null }) as Record<string, any>)[`${item.checkable}`])
535
- : attribute((({ true: item.checked, false: null }) as Record<string, any>)[`${item.checkable}`])"
563
+ ? String(
564
+ ((objectValue: any, indexValue: any) =>
565
+ objectValue === Symbol.for('html-next.invalid-result')
566
+ || indexValue === Symbol.for('html-next.invalid-result')
567
+ ? Symbol.for('html-next.invalid-result')
568
+ : objectValue[indexValue])({ true: item.checked, false: null }, concat(item.checkable)),
569
+ )
570
+ : attribute(
571
+ ((objectValue: any, indexValue: any) =>
572
+ objectValue === Symbol.for('html-next.invalid-result')
573
+ || indexValue === Symbol.for('html-next.invalid-result')
574
+ ? Symbol.for('html-next.invalid-result')
575
+ : objectValue[indexValue])({ true: item.checked, false: null }, concat(item.checkable)),
576
+ )"
536
577
  :data-action="item.action"
537
578
  :class="{ danger: item.danger }"
538
579
  >
@@ -1,4 +1,4 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.19 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.25 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
3
  import {
4
4
  computed,
@@ -368,45 +368,74 @@ const active = ref<
368
368
  const activeKey = ref('')
369
369
  let guardedPrevious: any
370
370
  const guarded = computed(() => {
371
- if (!(hovered.value?.['rowIndex'] == null || Number.isInteger(hovered.value?.['rowIndex']))) {
371
+ if (!(hovered.value?.['rowOffset'] == null || typeof hovered.value?.['rowOffset'] === 'string')) {
372
372
  return guardedPrevious
373
373
  }
374
- return guardedPrevious = hovered.value?.rowIndex
374
+ return guardedPrevious = hovered.value?.rowOffset
375
375
  })
376
376
  let guardedBindingPrevious: any
377
377
  const guardedBinding = computed(() => {
378
- if (
379
- !(hovered.value?.['columnIndex'] == null || Number.isInteger(hovered.value?.['columnIndex']))
380
- ) return guardedBindingPrevious
381
- return guardedBindingPrevious = hovered.value?.columnIndex
378
+ if (!(hovered.value?.['rowIndex'] == null || Number.isInteger(hovered.value?.['rowIndex']))) {
379
+ return guardedBindingPrevious
380
+ }
381
+ return guardedBindingPrevious = hovered.value?.rowIndex
382
382
  })
383
383
  let guardedBinding2Previous: any
384
384
  const guardedBinding2 = computed(() => {
385
- if (!(hovered.value?.['rowIndex'] == null || Number.isInteger(hovered.value?.['rowIndex']))) {
386
- return guardedBinding2Previous
387
- }
388
- return guardedBinding2Previous = hovered.value?.rowIndex
385
+ if (
386
+ !(hovered.value?.['columnIndex'] == null || Number.isInteger(hovered.value?.['columnIndex']))
387
+ ) return guardedBinding2Previous
388
+ return guardedBinding2Previous = hovered.value?.columnIndex
389
389
  })
390
390
  let guardedBinding3Previous: any
391
391
  const guardedBinding3 = computed(() => {
392
392
  if (
393
- !(hovered.value?.['columnIndex'] == null || Number.isInteger(hovered.value?.['columnIndex']))
393
+ !(hovered.value?.['columnOffset'] == null
394
+ || typeof hovered.value?.['columnOffset'] === 'string')
394
395
  ) return guardedBinding3Previous
395
- return guardedBinding3Previous = hovered.value?.columnIndex
396
+ return guardedBinding3Previous = hovered.value?.columnOffset
396
397
  })
397
398
  let guardedBinding4Previous: any
398
399
  const guardedBinding4 = computed(() => {
399
- if (!(active.value?.['rowIndex'] == null || Number.isInteger(active.value?.['rowIndex']))) {
400
+ if (!(hovered.value?.['rowIndex'] == null || Number.isInteger(hovered.value?.['rowIndex']))) {
400
401
  return guardedBinding4Previous
401
402
  }
402
- return guardedBinding4Previous = active.value?.rowIndex
403
+ return guardedBinding4Previous = hovered.value?.rowIndex
403
404
  })
404
405
  let guardedBinding5Previous: any
405
406
  const guardedBinding5 = computed(() => {
407
+ if (
408
+ !(hovered.value?.['columnIndex'] == null || Number.isInteger(hovered.value?.['columnIndex']))
409
+ ) return guardedBinding5Previous
410
+ return guardedBinding5Previous = hovered.value?.columnIndex
411
+ })
412
+ let guardedBinding6Previous: any
413
+ const guardedBinding6 = computed(() => {
414
+ if (!(active.value?.['menuLeft'] == null || typeof active.value?.['menuLeft'] === 'string')) {
415
+ return guardedBinding6Previous
416
+ }
417
+ return guardedBinding6Previous = active.value?.menuLeft
418
+ })
419
+ let guardedBinding7Previous: any
420
+ const guardedBinding7 = computed(() => {
421
+ if (!(active.value?.['menuTop'] == null || typeof active.value?.['menuTop'] === 'string')) {
422
+ return guardedBinding7Previous
423
+ }
424
+ return guardedBinding7Previous = active.value?.menuTop
425
+ })
426
+ let guardedBinding8Previous: any
427
+ const guardedBinding8 = computed(() => {
428
+ if (!(active.value?.['rowIndex'] == null || Number.isInteger(active.value?.['rowIndex']))) {
429
+ return guardedBinding8Previous
430
+ }
431
+ return guardedBinding8Previous = active.value?.rowIndex
432
+ })
433
+ let guardedBinding9Previous: any
434
+ const guardedBinding9 = computed(() => {
406
435
  if (!(active.value?.['columnIndex'] == null || Number.isInteger(active.value?.['columnIndex']))) {
407
- return guardedBinding5Previous
436
+ return guardedBinding9Previous
408
437
  }
409
- return guardedBinding5Previous = active.value?.columnIndex
438
+ return guardedBinding9Previous = active.value?.columnIndex
410
439
  })
411
440
  provide('html-next:ui-editor-table-overlay:rows', rows)
412
441
  provide('html-next:ui-editor-table-overlay:cols', cols)
@@ -613,9 +642,9 @@ function uniqueKeys<T>(
613
642
  data-action="select-row"
614
643
  title="Drag row to reorder; click for actions"
615
644
  aria-label="Row actions"
616
- :data-row-index="guarded"
617
- :data-column-index="guardedBinding"
618
- :style="{ top: hovered?.rowOffset ?? undefined }"
645
+ :data-row-index="guardedBinding"
646
+ :data-column-index="guardedBinding2"
647
+ :style="{ top: guarded }"
619
648
  >
620
649
  <span class="glyph"><UiIcon name="grip-vertical" /></span>
621
650
  </button>
@@ -625,9 +654,9 @@ function uniqueKeys<T>(
625
654
  data-action="select-column"
626
655
  title="Drag column to reorder; click for actions"
627
656
  aria-label="Column actions"
628
- :data-row-index="guardedBinding2"
629
- :data-column-index="guardedBinding3"
630
- :style="{ left: hovered?.columnOffset ?? undefined }"
657
+ :data-row-index="guardedBinding4"
658
+ :data-column-index="guardedBinding5"
659
+ :style="{ left: guardedBinding3 }"
631
660
  >
632
661
  <span class="glyph"><UiIcon name="grip-horizontal" /></span>
633
662
  </button></template>
@@ -638,9 +667,9 @@ function uniqueKeys<T>(
638
667
  data-action="open-cell-menu"
639
668
  title="Cell actions"
640
669
  aria-label="Cell actions"
641
- :data-row-index="guardedBinding4"
642
- :data-column-index="guardedBinding5"
643
- :style="{ left: active?.menuLeft ?? undefined, top: active?.menuTop ?? undefined }"
670
+ :data-row-index="guardedBinding8"
671
+ :data-column-index="guardedBinding9"
672
+ :style="{ left: guardedBinding6, top: guardedBinding7 }"
644
673
  >
645
674
  <UiIcon name="chevron-down" />
646
675
  </button>
@@ -1,4 +1,4 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.19 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.25 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
3
  import {
4
4
  computed,
@@ -469,6 +469,24 @@ function attribute(value: unknown): any {
469
469
  return value === true ? '' : text(value)
470
470
  }
471
471
 
472
+ // A nonempty scalar call cannot produce the invalid-result sentinel.
473
+ type ConcatResult<T extends unknown[]> = T extends
474
+ [
475
+ string | number | boolean | null | undefined,
476
+ ...(string | number | boolean | null | undefined)[],
477
+ ] ? string | undefined
478
+ : string | symbol | undefined
479
+ function concat<T extends unknown[]>(...values: T): ConcatResult<T> {
480
+ if (values.some(value => value === Symbol.for('html-next.invalid-result'))) {
481
+ return Symbol.for('html-next.invalid-result') as ConcatResult<T>
482
+ }
483
+ if (values.some(value => value === undefined)) return undefined as ConcatResult<T>
484
+ if (values.length === 0 || values.some(value => typeof value === 'object' && value !== null)) {
485
+ return Symbol.for('html-next.invalid-result') as ConcatResult<T>
486
+ }
487
+ return values.map(value => value === null ? '' : String(value)).join('') as ConcatResult<T>
488
+ }
489
+
472
490
  function uniqueKeys<T>(
473
491
  items: readonly T[],
474
492
  keyOf: (
@@ -594,12 +612,35 @@ function uniqueKeys<T>(
594
612
  :key="item.action"
595
613
  type="button"
596
614
  :role="attribute(
597
- (({ true: 'menuitemcheckbox', false: 'menuitem' }) as Record<string, any>)[`${item.checkable}`],
615
+ ((objectValue: any, indexValue: any) =>
616
+ objectValue === Symbol.for('html-next.invalid-result')
617
+ || indexValue === Symbol.for('html-next.invalid-result')
618
+ ? Symbol.for('html-next.invalid-result')
619
+ : objectValue[indexValue])(
620
+ { true: 'menuitemcheckbox', false: 'menuitem' },
621
+ concat(item.checkable),
622
+ ),
598
623
  )"
599
- :aria-checked="typeof ((({ true: item.checked, false: null }) as Record<string, any>)[`${item.checkable}`])
624
+ :aria-checked="typeof (((objectValue: any, indexValue: any) =>
625
+ objectValue === Symbol.for('html-next.invalid-result')
626
+ || indexValue === Symbol.for('html-next.invalid-result')
627
+ ? Symbol.for('html-next.invalid-result')
628
+ : objectValue[indexValue])({ true: item.checked, false: null }, concat(item.checkable)))
600
629
  === 'boolean'
601
- ? String((({ true: item.checked, false: null }) as Record<string, any>)[`${item.checkable}`])
602
- : attribute((({ true: item.checked, false: null }) as Record<string, any>)[`${item.checkable}`])"
630
+ ? String(
631
+ ((objectValue: any, indexValue: any) =>
632
+ objectValue === Symbol.for('html-next.invalid-result')
633
+ || indexValue === Symbol.for('html-next.invalid-result')
634
+ ? Symbol.for('html-next.invalid-result')
635
+ : objectValue[indexValue])({ true: item.checked, false: null }, concat(item.checkable)),
636
+ )
637
+ : attribute(
638
+ ((objectValue: any, indexValue: any) =>
639
+ objectValue === Symbol.for('html-next.invalid-result')
640
+ || indexValue === Symbol.for('html-next.invalid-result')
641
+ ? Symbol.for('html-next.invalid-result')
642
+ : objectValue[indexValue])({ true: item.checked, false: null }, concat(item.checkable)),
643
+ )"
603
644
  :data-action="item.action"
604
645
  :class="{ danger: item.danger }"
605
646
  >
@@ -1,4 +1,4 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.19 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.25 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
3
  import { computed, getCurrentInstance, ref, useTemplateRef, watchSyncEffect } from 'vue'
4
4
  import type { PropType } from 'vue'
@@ -1,4 +1,4 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.19 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.25 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'
@@ -1,4 +1,4 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.19 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.25 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'
package/vue/UiGrid.vue CHANGED
@@ -1,4 +1,4 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.19 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.25 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'
package/vue/UiIcon.vue CHANGED
@@ -1,4 +1,4 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.19 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.25 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'
@@ -20,6 +20,10 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
20
20
  type: PropType<boolean | null>;
21
21
  default: boolean;
22
22
  };
23
+ matchButton: {
24
+ type: PropType<boolean | null>;
25
+ default: boolean;
26
+ };
23
27
  pending: {
24
28
  type: PropType<boolean | null>;
25
29
  default: boolean;
@@ -53,6 +57,10 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
53
57
  type: PropType<boolean | null>;
54
58
  default: boolean;
55
59
  };
60
+ matchButton: {
61
+ type: PropType<boolean | null>;
62
+ default: boolean;
63
+ };
56
64
  pending: {
57
65
  type: PropType<boolean | null>;
58
66
  default: boolean;
@@ -78,6 +86,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
78
86
  loading: boolean | null;
79
87
  pending: boolean | null;
80
88
  anticipatory: boolean | null;
89
+ matchButton: boolean | null;
81
90
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
82
91
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
83
92
  declare const _default: typeof __VLS_export;
@@ -1,4 +1,4 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.19 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.25 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'
@@ -40,6 +40,14 @@ const propValidityContract = {
40
40
  'Keeps the button focusable and named while work is in progress. It shows a spinner, states aria-disabled and aria-busy, and prevents activation until\n cleared.',
41
41
  default: false,
42
42
  },
43
+ matchButton: {
44
+ type: { kind: 'terminal', name: 'boolean' },
45
+ required: false,
46
+ target: { attribute: 'data-match-button' },
47
+ description:
48
+ 'Matches a boxed Button of the same size when the two share a flex row. Uses the control-size theme tokens and stretches to the row\'s height, including\n touch-sized controls. Leave it off for compact toolbar and inline icon buttons.',
49
+ default: false,
50
+ },
43
51
  pending: {
44
52
  type: { kind: 'terminal', name: 'boolean' },
45
53
  required: false,
@@ -79,6 +87,7 @@ const props = defineProps({
79
87
  disabled: { type: null as unknown as PropType<boolean | null>, default: false },
80
88
  label: { type: null as unknown as PropType<string | null>, default: null },
81
89
  loading: { type: null as unknown as PropType<boolean | null>, default: false },
90
+ matchButton: { type: null as unknown as PropType<boolean | null>, default: false },
82
91
  pending: { type: null as unknown as PropType<boolean | null>, default: false },
83
92
  round: { type: null as unknown as PropType<boolean | null>, default: false },
84
93
  size: { type: null as unknown as PropType<'sm' | 'md' | 'lg' | null>, default: 'md' },
@@ -92,6 +101,7 @@ const acceptedProps: Record<string, unknown> = {
92
101
  disabled: false,
93
102
  label: null,
94
103
  loading: false,
104
+ matchButton: false,
95
105
  pending: false,
96
106
  round: false,
97
107
  size: 'md',
@@ -126,6 +136,13 @@ const checkedProps = computed(() => ({
126
136
  'loading',
127
137
  acceptedProps,
128
138
  ) as boolean,
139
+ matchButton: checkedProp<boolean>(
140
+ props['matchButton'],
141
+ { kind: 'terminal', name: 'boolean' },
142
+ false,
143
+ 'matchButton',
144
+ acceptedProps,
145
+ ) as boolean,
129
146
  pending: checkedProp<boolean>(
130
147
  props['pending'],
131
148
  { kind: 'terminal', name: 'boolean' },
@@ -194,6 +211,44 @@ function reflectedProp(
194
211
  const hydrationInstance = getCurrentInstance()
195
212
 
196
213
  const root = ref<HTMLElement | null>(null)
214
+ let guardedPrevious: any = null
215
+ const guarded = computed(() => {
216
+ const candidate: any = ((objectValue: any, indexValue: any) =>
217
+ objectValue === Symbol.for('html-next.invalid-result')
218
+ || indexValue === Symbol.for('html-next.invalid-result')
219
+ ? Symbol.for('html-next.invalid-result')
220
+ : objectValue[indexValue])(
221
+ { true: 'true', false: null },
222
+ concat(checkedProps.value.loading || checkedProps.value.pending),
223
+ )
224
+ if (candidate === Symbol.for('html-next.invalid-result')) {
225
+ return guardedPrevious
226
+ }
227
+ return guardedPrevious = typeof (((objectValue: any, indexValue: any) =>
228
+ objectValue === Symbol.for('html-next.invalid-result')
229
+ || indexValue === Symbol.for('html-next.invalid-result')
230
+ ? Symbol.for('html-next.invalid-result')
231
+ : objectValue[indexValue])(
232
+ { true: 'true', false: null },
233
+ concat(checkedProps.value.loading || checkedProps.value.pending),
234
+ )) === 'boolean'
235
+ ? String(((objectValue: any, indexValue: any) =>
236
+ objectValue === Symbol.for('html-next.invalid-result')
237
+ || indexValue === Symbol.for('html-next.invalid-result')
238
+ ? Symbol.for('html-next.invalid-result')
239
+ : objectValue[indexValue])(
240
+ { true: 'true', false: null },
241
+ concat(checkedProps.value.loading || checkedProps.value.pending),
242
+ ))
243
+ : attribute(((objectValue: any, indexValue: any) =>
244
+ objectValue === Symbol.for('html-next.invalid-result')
245
+ || indexValue === Symbol.for('html-next.invalid-result')
246
+ ? Symbol.for('html-next.invalid-result')
247
+ : objectValue[indexValue])(
248
+ { true: 'true', false: null },
249
+ concat(checkedProps.value.loading || checkedProps.value.pending),
250
+ ))
251
+ })
197
252
  const hydrationNode = hydrationInstance?.vnode.el
198
253
  if (
199
254
  typeof window !== 'undefined' && hydrationNode != null
@@ -222,6 +277,7 @@ const hostState = computed(() =>
222
277
  checkedProps.value.pending && 'pending',
223
278
  checkedProps.value.size && 'size',
224
279
  checkedProps.value.size != null && `size=${encodeURIComponent(checkedProps.value.size)}`,
280
+ checkedProps.value.matchButton && 'matchButton',
225
281
  checkedProps.value.round && 'round',
226
282
  ].filter(Boolean).join(' ')
227
283
  )
@@ -248,6 +304,7 @@ useComponentHost(() => import('../components/ui-icon-button/ui-icon-button.js'),
248
304
  'disabled',
249
305
  'label',
250
306
  'loading',
307
+ 'matchButton',
251
308
  'pending',
252
309
  'round',
253
310
  'size',
@@ -269,6 +326,24 @@ function attribute(value: unknown): any {
269
326
  ) return undefined
270
327
  return value === true ? '' : text(value)
271
328
  }
329
+
330
+ // A nonempty scalar call cannot produce the invalid-result sentinel.
331
+ type ConcatResult<T extends unknown[]> = T extends
332
+ [
333
+ string | number | boolean | null | undefined,
334
+ ...(string | number | boolean | null | undefined)[],
335
+ ] ? string | undefined
336
+ : string | symbol | undefined
337
+ function concat<T extends unknown[]>(...values: T): ConcatResult<T> {
338
+ if (values.some(value => value === Symbol.for('html-next.invalid-result'))) {
339
+ return Symbol.for('html-next.invalid-result') as ConcatResult<T>
340
+ }
341
+ if (values.some(value => value === undefined)) return undefined as ConcatResult<T>
342
+ if (values.length === 0 || values.some(value => typeof value === 'object' && value !== null)) {
343
+ return Symbol.for('html-next.invalid-result') as ConcatResult<T>
344
+ }
345
+ return values.map(value => value === null ? '' : String(value)).join('') as ConcatResult<T>
346
+ }
272
347
  </script>
273
348
 
274
349
  <template>
@@ -278,25 +353,14 @@ function attribute(value: unknown): any {
278
353
  v-bind="nativeAttrs($attrs)"
279
354
  :disabled="checkedProps.disabled ?? undefined"
280
355
  :aria-label="checkedProps.label ?? undefined"
281
- :aria-disabled="typeof ((({ true: 'true', false: null }) as Record<string, any>)[
282
- `${checkedProps.loading || checkedProps.pending}`
283
- ]) === 'boolean'
284
- ? String(
285
- (({ true: 'true', false: null }) as Record<string, any>)[
286
- `${checkedProps.loading || checkedProps.pending}`
287
- ],
288
- )
289
- : attribute(
290
- (({ true: 'true', false: null }) as Record<string, any>)[
291
- `${checkedProps.loading || checkedProps.pending}`
292
- ],
293
- )"
356
+ :aria-disabled="guarded"
294
357
  :aria-busy="checkedProps.loading || checkedProps.pending"
295
358
  v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
296
359
  :data-anticipatory="reflectedProp('anticipatory', 'anticipatory', checkedProps.anticipatory, undefined, false)"
297
360
  :data-disabled="reflectedProp('disabled', 'disabled', checkedProps.disabled, undefined, false)"
298
361
  :data-label="reflectedProp('label', 'label', checkedProps.label, undefined, false)"
299
362
  :data-loading="reflectedProp('loading', 'loading', checkedProps.loading, undefined, false)"
363
+ :data-match-button="reflectedProp('matchButton', 'match-button', checkedProps.matchButton, undefined, true)"
300
364
  :data-pending="reflectedProp('pending', 'pending', checkedProps.pending, undefined, false)"
301
365
  :data-round="reflectedProp('round', 'round', checkedProps.round, undefined, false)"
302
366
  :data-size="reflectedProp('size', 'size', checkedProps.size, undefined, false)"
@@ -527,6 +591,32 @@ html[data-ui-input-modality="touch"] [data-component~="ui-icon-button"]::after {
527
591
  min-block-size: var(--ui-icon-button-size, var(--_size));
528
592
  }
529
593
 
594
+ /* A text button's companion uses control geometry; compact icon buttons keep their own density. */
595
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="matchButton"] {
596
+ --_size: var(--ui-control-size-md);
597
+ block-size: auto;
598
+ align-self: stretch;
599
+ }
600
+
601
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="matchButton"][data-ui-icon-button-state~="size=sm"] {
602
+ --_size: var(--ui-control-size-sm);
603
+ }
604
+
605
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="matchButton"][data-ui-icon-button-state~="size=lg"] {
606
+ --_size: var(--ui-control-size-lg);
607
+ }
608
+
609
+ @media (pointer: coarse) {
610
+ [data-component~="ui-icon-button"][data-ui-icon-button-state~="matchButton"] {
611
+ inline-size: max(var(--ui-icon-button-size, var(--_size)), var(--ui-control-min-block-size));
612
+ min-inline-size: max(
613
+ var(--ui-icon-button-size, var(--_size)),
614
+ var(--ui-control-min-block-size)
615
+ );
616
+ min-block-size: max(var(--ui-icon-button-size, var(--_size)), var(--ui-control-min-block-size));
617
+ }
618
+ }
619
+
530
620
  [data-component~="ui-icon-button"][data-ui-icon-button-state~="round"] {
531
621
  border-radius: var(--ui-radius-round);
532
622
  }
package/vue/UiInput.vue CHANGED
@@ -1,4 +1,4 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.19 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.25 for Vue 3.5. Do not edit. -->
2
2
  <script
3
3
  setup
4
4
  lang="ts"
@@ -1,4 +1,4 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.19 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.25 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'
package/vue/UiList.vue CHANGED
@@ -1,4 +1,4 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.19 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.25 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'
@@ -1,4 +1,4 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.19 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.25 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'