@threadlabs/looma 0.28.5 → 0.28.7

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 (453) hide show
  1. package/components/ui-editor-block-actions/ui-editor-block-actions.html +20 -0
  2. package/components/ui-editor-block-actions/ui-editor-block-actions.js +14 -0
  3. package/components/ui-editor-image-toolbar/ui-editor-image-toolbar.html +7 -6
  4. package/components/ui-editor-image-toolbar/ui-editor-image-toolbar.js +2 -1
  5. package/components/ui-editor-link-card/ui-editor-link-card.html +57 -0
  6. package/components/ui-editor-link-card/ui-editor-link-card.js +27 -0
  7. package/components/ui-editor-mention-menu-item/ui-editor-mention-menu-item.html +3 -2
  8. package/dist/index.js +36 -34
  9. package/package.json +3 -2
  10. package/styles/ui-action-bar.css +13 -6
  11. package/styles/ui-affordance-scope.css +12 -5
  12. package/styles/ui-avatar-group.css +17 -10
  13. package/styles/ui-avatar.css +23 -16
  14. package/styles/ui-badge.css +78 -71
  15. package/styles/ui-breadcrumb-item.css +12 -5
  16. package/styles/ui-breadcrumbs.css +10 -3
  17. package/styles/ui-button.css +79 -72
  18. package/styles/ui-callout.css +29 -22
  19. package/styles/ui-card.css +25 -18
  20. package/styles/ui-checkbox.css +45 -37
  21. package/styles/ui-cluster.css +34 -27
  22. package/styles/ui-combobox.css +46 -39
  23. package/styles/ui-container.css +20 -13
  24. package/styles/ui-context-menu.css +17 -10
  25. package/styles/ui-cover.css +12 -5
  26. package/styles/ui-description-item.css +10 -3
  27. package/styles/ui-description-list.css +20 -13
  28. package/styles/ui-dialog.css +44 -35
  29. package/styles/ui-disclosure.css +32 -25
  30. package/styles/ui-editable.css +15 -8
  31. package/styles/ui-editor-block-actions.css +1 -0
  32. package/styles/ui-editor-image-toolbar.css +1 -1
  33. package/styles/ui-editor-insert-table-grid.css +11 -4
  34. package/styles/ui-editor-link-card.css +1 -0
  35. package/styles/ui-editor-mention-menu-item.css +17 -8
  36. package/styles/ui-editor-mention-menu.css +14 -7
  37. package/styles/ui-editor-slash-menu-group.css +10 -3
  38. package/styles/ui-editor-slash-menu-item.css +15 -8
  39. package/styles/ui-editor-slash-menu.css +15 -8
  40. package/styles/ui-editor-surface.css +10 -3
  41. package/styles/ui-editor-table-context-menu.css +17 -10
  42. package/styles/ui-editor-table-overlay.css +17 -10
  43. package/styles/ui-editor-table-toolbar.css +22 -15
  44. package/styles/ui-editor-toolbar.css +18 -11
  45. package/styles/ui-floating-action-button.css +21 -14
  46. package/styles/ui-form-field.css +20 -13
  47. package/styles/ui-grid.css +21 -14
  48. package/styles/ui-icon-button.css +80 -73
  49. package/styles/ui-icon.css +14 -7
  50. package/styles/ui-image.css +25 -18
  51. package/styles/ui-input-group.css +34 -27
  52. package/styles/ui-input.css +42 -35
  53. package/styles/ui-list-item.css +33 -26
  54. package/styles/ui-list.css +22 -15
  55. package/styles/ui-listbox.css +22 -14
  56. package/styles/ui-menu-group.css +10 -3
  57. package/styles/ui-menu-item.css +29 -22
  58. package/styles/ui-menu.css +25 -18
  59. package/styles/ui-meter.css +36 -29
  60. package/styles/ui-nav-item.css +26 -19
  61. package/styles/ui-page-header.css +12 -5
  62. package/styles/ui-popover.css +27 -20
  63. package/styles/ui-radio-group.css +14 -6
  64. package/styles/ui-radio.css +24 -17
  65. package/styles/ui-reel.css +28 -21
  66. package/styles/ui-scroll-area.css +22 -15
  67. package/styles/ui-search-result-row.css +28 -21
  68. package/styles/ui-search-shell.css +24 -17
  69. package/styles/ui-section.css +14 -7
  70. package/styles/ui-select.css +33 -26
  71. package/styles/ui-separator.css +17 -10
  72. package/styles/ui-sidebar.css +35 -28
  73. package/styles/ui-spinner.css +32 -23
  74. package/styles/ui-stack.css +29 -21
  75. package/styles/ui-status-message.css +14 -7
  76. package/styles/ui-switch.css +29 -22
  77. package/styles/ui-switcher.css +27 -20
  78. package/styles/ui-table.css +14 -7
  79. package/styles/ui-tabs.css +24 -17
  80. package/styles/ui-text.css +35 -28
  81. package/styles/ui-textarea.css +37 -30
  82. package/styles/ui-toast-region.css +74 -63
  83. package/styles/ui-toast.css +21 -14
  84. package/styles/ui-tooltip.css +38 -31
  85. package/styles/ui-top-bar.css +19 -12
  86. package/styles/ui-tree-item.css +79 -71
  87. package/styles/ui-tree.css +18 -11
  88. package/vanilla/UiActionBar.d.ts +1 -1
  89. package/vanilla/UiActionBar.js +1 -1
  90. package/vanilla/UiAffordanceScope.d.ts +1 -1
  91. package/vanilla/UiAffordanceScope.js +1 -1
  92. package/vanilla/UiAvatar.d.ts +1 -1
  93. package/vanilla/UiAvatar.js +1 -1
  94. package/vanilla/UiAvatarGroup.d.ts +1 -1
  95. package/vanilla/UiAvatarGroup.js +1 -1
  96. package/vanilla/UiBadge.d.ts +1 -1
  97. package/vanilla/UiBadge.js +1 -1
  98. package/vanilla/UiBreadcrumbItem.d.ts +1 -1
  99. package/vanilla/UiBreadcrumbItem.js +1 -1
  100. package/vanilla/UiBreadcrumbs.d.ts +1 -1
  101. package/vanilla/UiBreadcrumbs.js +1 -1
  102. package/vanilla/UiButton.d.ts +1 -1
  103. package/vanilla/UiButton.js +19 -57
  104. package/vanilla/UiCallout.d.ts +1 -1
  105. package/vanilla/UiCallout.js +25 -73
  106. package/vanilla/UiCard.d.ts +1 -1
  107. package/vanilla/UiCard.js +1 -1
  108. package/vanilla/UiCheckbox.d.ts +1 -1
  109. package/vanilla/UiCheckbox.js +1 -1
  110. package/vanilla/UiCluster.d.ts +1 -1
  111. package/vanilla/UiCluster.js +1 -1
  112. package/vanilla/UiCombobox.d.ts +1 -1
  113. package/vanilla/UiCombobox.js +60 -166
  114. package/vanilla/UiContainer.d.ts +1 -1
  115. package/vanilla/UiContainer.js +1 -1
  116. package/vanilla/UiContextMenu.d.ts +1 -1
  117. package/vanilla/UiContextMenu.js +1 -1
  118. package/vanilla/UiCover.d.ts +1 -1
  119. package/vanilla/UiCover.js +1 -1
  120. package/vanilla/UiDescriptionItem.d.ts +1 -1
  121. package/vanilla/UiDescriptionItem.js +1 -1
  122. package/vanilla/UiDescriptionList.d.ts +1 -1
  123. package/vanilla/UiDescriptionList.js +1 -1
  124. package/vanilla/UiDialog.d.ts +1 -1
  125. package/vanilla/UiDialog.js +4 -10
  126. package/vanilla/UiDisclosure.d.ts +1 -1
  127. package/vanilla/UiDisclosure.js +1 -1
  128. package/vanilla/UiEditable.d.ts +1 -1
  129. package/vanilla/UiEditable.js +7 -19
  130. package/vanilla/UiEditorBlockActions.d.ts +16 -0
  131. package/vanilla/UiEditorBlockActions.js +41 -0
  132. package/vanilla/UiEditorImageToolbar.d.ts +1 -1
  133. package/vanilla/UiEditorImageToolbar.js +2 -2
  134. package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
  135. package/vanilla/UiEditorInsertTableGrid.js +1 -1
  136. package/vanilla/UiEditorLinkCard.d.ts +20 -0
  137. package/vanilla/UiEditorLinkCard.js +153 -0
  138. package/vanilla/UiEditorMentionMenu.d.ts +1 -1
  139. package/vanilla/UiEditorMentionMenu.js +17 -37
  140. package/vanilla/UiEditorMentionMenuItem.d.ts +1 -1
  141. package/vanilla/UiEditorMentionMenuItem.js +4 -10
  142. package/vanilla/UiEditorSlashMenu.d.ts +1 -1
  143. package/vanilla/UiEditorSlashMenu.js +5 -4
  144. package/vanilla/UiEditorSlashMenuGroup.d.ts +1 -1
  145. package/vanilla/UiEditorSlashMenuGroup.js +1 -1
  146. package/vanilla/UiEditorSlashMenuItem.d.ts +1 -1
  147. package/vanilla/UiEditorSlashMenuItem.js +7 -19
  148. package/vanilla/UiEditorSurface.d.ts +1 -1
  149. package/vanilla/UiEditorSurface.js +1 -1
  150. package/vanilla/UiEditorTableContextMenu.d.ts +1 -1
  151. package/vanilla/UiEditorTableContextMenu.js +6 -14
  152. package/vanilla/UiEditorTableOverlay.d.ts +1 -1
  153. package/vanilla/UiEditorTableOverlay.js +9 -25
  154. package/vanilla/UiEditorTableToolbar.d.ts +1 -1
  155. package/vanilla/UiEditorTableToolbar.js +25 -77
  156. package/vanilla/UiEditorToolbar.d.ts +1 -1
  157. package/vanilla/UiEditorToolbar.js +1 -1
  158. package/vanilla/UiFloatingActionButton.d.ts +1 -1
  159. package/vanilla/UiFloatingActionButton.js +1 -1
  160. package/vanilla/UiFormField.d.ts +1 -1
  161. package/vanilla/UiFormField.js +1 -1
  162. package/vanilla/UiGrid.d.ts +1 -1
  163. package/vanilla/UiGrid.js +1 -1
  164. package/vanilla/UiIcon.d.ts +1 -1
  165. package/vanilla/UiIcon.js +15 -47
  166. package/vanilla/UiIconButton.d.ts +1 -1
  167. package/vanilla/UiIconButton.js +4 -10
  168. package/vanilla/UiImage.d.ts +1 -1
  169. package/vanilla/UiImage.js +1 -1
  170. package/vanilla/UiInput.d.ts +1 -1
  171. package/vanilla/UiInput.js +1 -1
  172. package/vanilla/UiInputGroup.d.ts +1 -1
  173. package/vanilla/UiInputGroup.js +1 -1
  174. package/vanilla/UiList.d.ts +1 -1
  175. package/vanilla/UiList.js +1 -1
  176. package/vanilla/UiListItem.d.ts +1 -1
  177. package/vanilla/UiListItem.js +1 -1
  178. package/vanilla/UiListbox.d.ts +1 -1
  179. package/vanilla/UiListbox.js +4 -10
  180. package/vanilla/UiMenu.d.ts +1 -1
  181. package/vanilla/UiMenu.js +1 -1
  182. package/vanilla/UiMenuGroup.d.ts +1 -1
  183. package/vanilla/UiMenuGroup.js +4 -10
  184. package/vanilla/UiMenuItem.d.ts +1 -1
  185. package/vanilla/UiMenuItem.js +4 -10
  186. package/vanilla/UiMeter.d.ts +1 -1
  187. package/vanilla/UiMeter.js +13 -33
  188. package/vanilla/UiNavItem.d.ts +1 -1
  189. package/vanilla/UiNavItem.js +1 -1
  190. package/vanilla/UiPageHeader.d.ts +1 -1
  191. package/vanilla/UiPageHeader.js +1 -1
  192. package/vanilla/UiPopover.d.ts +1 -1
  193. package/vanilla/UiPopover.js +1 -1
  194. package/vanilla/UiRadio.d.ts +1 -1
  195. package/vanilla/UiRadio.js +1 -1
  196. package/vanilla/UiRadioGroup.d.ts +1 -1
  197. package/vanilla/UiRadioGroup.js +1 -1
  198. package/vanilla/UiReel.d.ts +1 -1
  199. package/vanilla/UiReel.js +1 -1
  200. package/vanilla/UiScrollArea.d.ts +1 -1
  201. package/vanilla/UiScrollArea.js +1 -1
  202. package/vanilla/UiSearchResultRow.d.ts +1 -1
  203. package/vanilla/UiSearchResultRow.js +1 -1
  204. package/vanilla/UiSearchShell.d.ts +1 -1
  205. package/vanilla/UiSearchShell.js +1 -1
  206. package/vanilla/UiSection.d.ts +1 -1
  207. package/vanilla/UiSection.js +1 -1
  208. package/vanilla/UiSelect.d.ts +1 -1
  209. package/vanilla/UiSelect.js +1 -1
  210. package/vanilla/UiSeparator.d.ts +1 -1
  211. package/vanilla/UiSeparator.js +1 -1
  212. package/vanilla/UiSidebar.d.ts +1 -1
  213. package/vanilla/UiSidebar.js +1 -1
  214. package/vanilla/UiSpinner.d.ts +1 -1
  215. package/vanilla/UiSpinner.js +1 -1
  216. package/vanilla/UiStack.d.ts +1 -1
  217. package/vanilla/UiStack.js +1 -1
  218. package/vanilla/UiStatusMessage.d.ts +1 -1
  219. package/vanilla/UiStatusMessage.js +1 -1
  220. package/vanilla/UiSwitch.d.ts +1 -1
  221. package/vanilla/UiSwitch.js +1 -1
  222. package/vanilla/UiSwitcher.d.ts +1 -1
  223. package/vanilla/UiSwitcher.js +1 -1
  224. package/vanilla/UiTable.d.ts +1 -1
  225. package/vanilla/UiTable.js +1 -1
  226. package/vanilla/UiTabs.d.ts +1 -1
  227. package/vanilla/UiTabs.js +1 -1
  228. package/vanilla/UiText.d.ts +1 -1
  229. package/vanilla/UiText.js +1 -1
  230. package/vanilla/UiTextarea.d.ts +1 -1
  231. package/vanilla/UiTextarea.js +1 -1
  232. package/vanilla/UiToast.d.ts +1 -1
  233. package/vanilla/UiToast.js +1 -1
  234. package/vanilla/UiToastRegion.d.ts +1 -1
  235. package/vanilla/UiToastRegion.js +1 -1
  236. package/vanilla/UiTooltip.d.ts +1 -1
  237. package/vanilla/UiTooltip.js +1 -1
  238. package/vanilla/UiTopBar.d.ts +1 -1
  239. package/vanilla/UiTopBar.js +1 -1
  240. package/vanilla/UiTree.d.ts +1 -1
  241. package/vanilla/UiTree.js +1 -1
  242. package/vanilla/UiTreeItem.d.ts +1 -1
  243. package/vanilla/UiTreeItem.js +7 -19
  244. package/vanilla/index.js +2 -0
  245. package/vue/UiActionBar.vue +46 -78
  246. package/vue/UiAffordanceScope.vue +27 -66
  247. package/vue/UiAvatar.d.ts +10 -7
  248. package/vue/UiAvatar.vue +100 -218
  249. package/vue/UiAvatarGroup.d.ts +10 -7
  250. package/vue/UiAvatarGroup.vue +78 -160
  251. package/vue/UiBadge.d.ts +1 -1
  252. package/vue/UiBadge.vue +483 -520
  253. package/vue/UiBreadcrumbItem.vue +52 -123
  254. package/vue/UiBreadcrumbs.vue +27 -70
  255. package/vue/UiButton.d.ts +2 -2
  256. package/vue/UiButton.vue +420 -471
  257. package/vue/UiCallout.vue +131 -175
  258. package/vue/UiCard.d.ts +1 -1
  259. package/vue/UiCard.vue +112 -151
  260. package/vue/UiCheckbox.d.ts +13 -10
  261. package/vue/UiCheckbox.vue +160 -221
  262. package/vue/UiCluster.d.ts +1 -1
  263. package/vue/UiCluster.vue +84 -128
  264. package/vue/UiCombobox.d.ts +71 -68
  265. package/vue/UiCombobox.vue +417 -743
  266. package/vue/UiContainer.vue +43 -87
  267. package/vue/UiContextMenu.d.ts +6 -6
  268. package/vue/UiContextMenu.vue +78 -117
  269. package/vue/UiCover.vue +29 -69
  270. package/vue/UiDescriptionItem.vue +39 -82
  271. package/vue/UiDescriptionList.vue +64 -107
  272. package/vue/UiDialog.d.ts +22 -19
  273. package/vue/UiDialog.vue +193 -246
  274. package/vue/UiDisclosure.d.ts +22 -19
  275. package/vue/UiDisclosure.vue +192 -283
  276. package/vue/UiEditable.d.ts +5 -5
  277. package/vue/UiEditable.vue +124 -207
  278. package/vue/UiEditorBlockActions.d.ts +33 -0
  279. package/vue/UiEditorBlockActions.js +2 -0
  280. package/vue/UiEditorBlockActions.vue +125 -0
  281. package/vue/UiEditorImageToolbar.d.ts +2 -2
  282. package/vue/UiEditorImageToolbar.vue +45 -256
  283. package/vue/UiEditorInsertTableGrid.d.ts +2 -2
  284. package/vue/UiEditorInsertTableGrid.vue +98 -266
  285. package/vue/UiEditorLinkCard.d.ts +58 -0
  286. package/vue/UiEditorLinkCard.js +2 -0
  287. package/vue/UiEditorLinkCard.vue +319 -0
  288. package/vue/UiEditorMentionMenu.d.ts +15 -12
  289. package/vue/UiEditorMentionMenu.vue +150 -239
  290. package/vue/UiEditorMentionMenuItem.vue +66 -110
  291. package/vue/UiEditorSlashMenu.d.ts +16 -13
  292. package/vue/UiEditorSlashMenu.vue +172 -253
  293. package/vue/UiEditorSlashMenuGroup.vue +25 -69
  294. package/vue/UiEditorSlashMenuItem.vue +67 -115
  295. package/vue/UiEditorSurface.vue +19 -63
  296. package/vue/UiEditorTableContextMenu.vue +135 -269
  297. package/vue/UiEditorTableOverlay.d.ts +2 -2
  298. package/vue/UiEditorTableOverlay.vue +310 -479
  299. package/vue/UiEditorTableToolbar.d.ts +2 -2
  300. package/vue/UiEditorTableToolbar.vue +182 -357
  301. package/vue/UiEditorToolbar.vue +143 -183
  302. package/vue/UiFloatingActionButton.vue +70 -114
  303. package/vue/UiFormField.d.ts +1 -1
  304. package/vue/UiFormField.vue +76 -117
  305. package/vue/UiGrid.d.ts +1 -1
  306. package/vue/UiGrid.vue +65 -103
  307. package/vue/UiIcon.vue +32 -106
  308. package/vue/UiIconButton.d.ts +2 -2
  309. package/vue/UiIconButton.vue +359 -411
  310. package/vue/UiImage.vue +145 -180
  311. package/vue/UiInput.vue +158 -190
  312. package/vue/UiInputGroup.vue +199 -239
  313. package/vue/UiList.vue +67 -109
  314. package/vue/UiListItem.vue +154 -201
  315. package/vue/UiListbox.d.ts +10 -7
  316. package/vue/UiListbox.vue +86 -260
  317. package/vue/UiMenu.d.ts +11 -11
  318. package/vue/UiMenu.vue +118 -152
  319. package/vue/UiMenuGroup.vue +21 -67
  320. package/vue/UiMenuItem.d.ts +19 -16
  321. package/vue/UiMenuItem.vue +169 -262
  322. package/vue/UiMeter.d.ts +4 -4
  323. package/vue/UiMeter.vue +166 -680
  324. package/vue/UiNavItem.vue +140 -213
  325. package/vue/UiPageHeader.vue +81 -127
  326. package/vue/UiPopover.d.ts +7 -7
  327. package/vue/UiPopover.vue +90 -129
  328. package/vue/UiRadio.d.ts +12 -9
  329. package/vue/UiRadio.vue +91 -149
  330. package/vue/UiRadioGroup.d.ts +2 -2
  331. package/vue/UiRadioGroup.vue +47 -85
  332. package/vue/UiReel.vue +89 -130
  333. package/vue/UiScrollArea.d.ts +1 -1
  334. package/vue/UiScrollArea.vue +78 -119
  335. package/vue/UiSearchResultRow.vue +96 -149
  336. package/vue/UiSearchShell.d.ts +2 -2
  337. package/vue/UiSearchShell.vue +159 -196
  338. package/vue/UiSection.vue +105 -149
  339. package/vue/UiSelect.d.ts +1 -1
  340. package/vue/UiSelect.vue +114 -146
  341. package/vue/UiSeparator.vue +42 -85
  342. package/vue/UiSidebar.d.ts +10 -7
  343. package/vue/UiSidebar.vue +193 -260
  344. package/vue/UiSpinner.vue +54 -130
  345. package/vue/UiStack.vue +66 -107
  346. package/vue/UiStatusMessage.d.ts +1 -1
  347. package/vue/UiStatusMessage.vue +61 -135
  348. package/vue/UiSwitch.d.ts +12 -9
  349. package/vue/UiSwitch.vue +136 -194
  350. package/vue/UiSwitcher.vue +69 -107
  351. package/vue/UiTable.vue +121 -156
  352. package/vue/UiTabs.d.ts +1 -1
  353. package/vue/UiTabs.vue +139 -267
  354. package/vue/UiText.d.ts +4 -4
  355. package/vue/UiText.vue +145 -184
  356. package/vue/UiTextarea.d.ts +2 -2
  357. package/vue/UiTextarea.vue +162 -194
  358. package/vue/UiToast.vue +70 -118
  359. package/vue/UiToastRegion.vue +157 -276
  360. package/vue/UiTooltip.d.ts +21 -18
  361. package/vue/UiTooltip.vue +174 -234
  362. package/vue/UiTopBar.vue +48 -76
  363. package/vue/UiTree.vue +46 -79
  364. package/vue/UiTreeItem.d.ts +18 -15
  365. package/vue/UiTreeItem.vue +526 -668
  366. package/vue/chunks/UiActionBar.js +5 -17
  367. package/vue/chunks/UiAffordanceScope.js +7 -26
  368. package/vue/chunks/UiAvatar.js +20 -74
  369. package/vue/chunks/UiAvatarGroup.js +14 -56
  370. package/vue/chunks/UiBadge.js +10 -28
  371. package/vue/chunks/UiBreadcrumbItem.js +11 -41
  372. package/vue/chunks/UiBreadcrumbs.js +7 -25
  373. package/vue/chunks/UiButton.js +80 -103
  374. package/vue/chunks/UiCallout.js +9 -27
  375. package/vue/chunks/UiCard.js +33 -53
  376. package/vue/chunks/UiCheckbox.js +14 -46
  377. package/vue/chunks/UiCluster.js +13 -31
  378. package/vue/chunks/UiCombobox.js +99 -237
  379. package/vue/chunks/UiContainer.js +9 -27
  380. package/vue/chunks/UiContextMenu.js +7 -26
  381. package/vue/chunks/UiCover.js +7 -25
  382. package/vue/chunks/UiDescriptionItem.js +6 -24
  383. package/vue/chunks/UiDescriptionList.js +9 -27
  384. package/vue/chunks/UiDialog.js +18 -47
  385. package/vue/chunks/UiDisclosure.js +19 -66
  386. package/vue/chunks/UiEditable.js +18 -60
  387. package/vue/chunks/UiEditorBlockActions.js +127 -0
  388. package/vue/chunks/UiEditorImageToolbar.js +40 -127
  389. package/vue/chunks/UiEditorInsertTableGrid.js +14 -112
  390. package/vue/chunks/UiEditorLinkCard.js +356 -0
  391. package/vue/chunks/UiEditorMentionMenu.js +16 -54
  392. package/vue/chunks/UiEditorMentionMenuItem.js +10 -28
  393. package/vue/chunks/UiEditorSlashMenu.js +17 -46
  394. package/vue/chunks/UiEditorSlashMenuGroup.js +7 -25
  395. package/vue/chunks/UiEditorSlashMenuItem.js +16 -31
  396. package/vue/chunks/UiEditorSurface.js +7 -25
  397. package/vue/chunks/UiEditorTableContextMenu.js +25 -102
  398. package/vue/chunks/UiEditorTableOverlay.js +41 -104
  399. package/vue/chunks/UiEditorTableToolbar.js +44 -122
  400. package/vue/chunks/UiEditorToolbar.js +7 -26
  401. package/vue/chunks/UiFloatingActionButton.js +10 -28
  402. package/vue/chunks/UiFormField.js +8 -27
  403. package/vue/chunks/UiGrid.js +10 -28
  404. package/vue/chunks/UiIcon.js +21 -74
  405. package/vue/chunks/UiIconButton.js +18 -50
  406. package/vue/chunks/UiImage.js +14 -33
  407. package/vue/chunks/UiInput.js +12 -31
  408. package/vue/chunks/UiInputGroup.js +10 -29
  409. package/vue/chunks/UiList.js +17 -37
  410. package/vue/chunks/UiListItem.js +12 -30
  411. package/vue/chunks/UiListbox.js +22 -124
  412. package/vue/chunks/UiMenu.js +13 -32
  413. package/vue/chunks/UiMenuGroup.js +8 -26
  414. package/vue/chunks/UiMenuItem.js +35 -80
  415. package/vue/chunks/UiMeter.js +17 -351
  416. package/vue/chunks/UiNavItem.js +23 -57
  417. package/vue/chunks/UiPageHeader.js +7 -25
  418. package/vue/chunks/UiPopover.js +9 -28
  419. package/vue/chunks/UiRadio.js +11 -43
  420. package/vue/chunks/UiRadioGroup.js +13 -32
  421. package/vue/chunks/UiReel.js +10 -28
  422. package/vue/chunks/UiScrollArea.js +10 -29
  423. package/vue/chunks/UiSearchResultRow.js +10 -28
  424. package/vue/chunks/UiSearchShell.js +9 -28
  425. package/vue/chunks/UiSection.js +9 -27
  426. package/vue/chunks/UiSelect.js +10 -29
  427. package/vue/chunks/UiSeparator.js +10 -28
  428. package/vue/chunks/UiSidebar.js +15 -47
  429. package/vue/chunks/UiSpinner.js +8 -44
  430. package/vue/chunks/UiStack.js +12 -30
  431. package/vue/chunks/UiStatusMessage.js +10 -42
  432. package/vue/chunks/UiSwitch.js +11 -43
  433. package/vue/chunks/UiSwitcher.js +9 -28
  434. package/vue/chunks/UiTable.js +7 -26
  435. package/vue/chunks/UiTabs.js +15 -91
  436. package/vue/chunks/UiText.js +148 -168
  437. package/vue/chunks/UiTextarea.js +16 -35
  438. package/vue/chunks/UiToast.js +13 -37
  439. package/vue/chunks/UiToastRegion.js +16 -88
  440. package/vue/chunks/UiTooltip.js +14 -46
  441. package/vue/chunks/UiTopBar.js +5 -17
  442. package/vue/chunks/UiTree.js +13 -32
  443. package/vue/chunks/UiTreeItem.js +34 -90
  444. package/vue/chunks/_plugin-vue_export-helper.js +904 -1
  445. package/vue/chunks/control.js +3 -0
  446. package/vue/chunks/props.js +1 -1
  447. package/vue/components.css +7689 -7617
  448. package/vue/editor/index.js +30 -95
  449. package/vue/editor/primitives.d.ts +8 -2
  450. package/vue/host.ts +999 -14
  451. package/vue/index.d.ts +2 -0
  452. package/vue/index.js +5 -3
  453. package/vue/chunks/host.js +0 -443
@@ -1,20 +1,15 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.35 for Vue 3.5. Do not edit. -->
2
- <script lang="ts">
3
- const htmlNextAuthoredCheck2Reported = new Set<string>()
4
- function htmlNextAuthoredCheck2(accepted: boolean, location: string, message: string): boolean {
5
- if (!accepted && !htmlNextAuthoredCheck2Reported.has(location)) {
6
- htmlNextAuthoredCheck2Reported.add(location)
7
- console.warn(message)
8
- }
9
- return accepted
10
- }
11
- </script>
12
-
1
+ <!-- Generated by HTML Next 1.0.0-alpha.51 for Vue 3.5. Do not edit. -->
13
2
  <script setup lang="ts">
14
3
  import { computed, getCurrentInstance, provide, ref, useTemplateRef, watchSyncEffect } from 'vue'
15
4
  import type { PropType } from 'vue'
16
5
  import { vBindControl } from './control'
17
- import { createDispatch, useComponentHost } from './host'
6
+ import {
7
+ checkHydratedRoot,
8
+ createDispatch,
9
+ nativeAttrs,
10
+ useComponentHost,
11
+ useReflectedProp,
12
+ } from './host'
18
13
  import { acceptsControllerWrite } from './props'
19
14
  import { checkedProp, propValidityState, vPropValidity } from './props'
20
15
 
@@ -187,38 +182,7 @@ void checkedProps.value
187
182
  watchSyncEffect(() => {
188
183
  void checkedProps.value
189
184
  })
190
- function nativeAttrs(attrs: Record<string, unknown>): Record<string, unknown> {
191
- const names = Object.keys(attrs)
192
- if (!names.some((name) => Object.hasOwn(Object.prototype, name))) return attrs
193
- return Object.fromEntries(names.map((name) => [
194
- Object.hasOwn(Object.prototype, name)
195
- ? name === '__proto__' ? '__Proto__' : name[0]!.toUpperCase() + name.slice(1)
196
- : name,
197
- attrs[name],
198
- ]))
199
- }
200
- const componentInstance = getCurrentInstance()
201
- function reflectedProp(
202
- name: string,
203
- kebab: string,
204
- value: unknown,
205
- fallback: string | undefined,
206
- bound: boolean,
207
- separator?: string,
208
- ): string | undefined {
209
- const incoming = componentInstance?.vnode.props
210
- if (
211
- !bound
212
- && (incoming === null || incoming === undefined
213
- || (!Object.hasOwn(incoming, name) && !Object.hasOwn(incoming, kebab)))
214
- ) return fallback
215
- if (value === null || value === undefined) return undefined
216
- return Array.isArray(value) && separator !== undefined
217
- ? value.join(separator)
218
- : typeof value === 'object'
219
- ? JSON.stringify(value)
220
- : String(value)
221
- }
185
+ const reflectedProp = useReflectedProp()
222
186
  const hydrationInstance = getCurrentInstance()
223
187
  const emit = defineEmits<{
224
188
  'update:checked': [value: boolean]
@@ -238,34 +202,8 @@ const root = ref<HTMLElement | null>(null)
238
202
  const inputElement = useTemplateRef<HTMLElement>('inputElement')
239
203
  const descriptionElement = useTemplateRef<HTMLElement>('descriptionElement')
240
204
  const internalChecked = ref(false)
241
- let guardedPrevious: any
242
- const guarded = computed(() => {
243
- if (
244
- !(htmlNextAuthoredCheck2(
245
- internalChecked.value == null || typeof internalChecked.value === 'boolean',
246
- '$internalChecked:internalChecked',
247
- './components/ui-checkbox/ui-checkbox.html: HR007: Reference internalChecked does not satisfy its declared type.',
248
- ))
249
- ) return guardedPrevious
250
- return guardedPrevious = internalChecked.value
251
- })
252
205
  provide('html-next:ui-checkbox:internalChecked', internalChecked)
253
- const hydrationNode = hydrationInstance?.vnode.el
254
- if (
255
- typeof window !== 'undefined' && hydrationNode != null
256
- && (!(hydrationNode instanceof Element) || hydrationNode.localName !== ('label'))
257
- ) {
258
- throw Object.assign(
259
- new Error('HR005: Server markup for <ui-checkbox> has an incompatible root.'),
260
- {
261
- name: 'HtmlDiagnosticError',
262
- diagnostic: Object.freeze({
263
- code: 'HR005',
264
- message: 'Server markup for <ui-checkbox> has an incompatible root.',
265
- }),
266
- },
267
- )
268
- }
206
+ checkHydratedRoot('label', 'ui-checkbox')
269
207
 
270
208
  /** The values the styles' :host-state() rules test. */
271
209
  const hostState = computed(() =>
@@ -334,7 +272,7 @@ useComponentHost(() => import('../components/ui-checkbox/ui-checkbox.js'), {
334
272
 
335
273
  <template>
336
274
  <label
337
- data-component="ui-checkbox"
275
+ class="ui-checkbox"
338
276
  v-bind="nativeAttrs($attrs)"
339
277
  v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
340
278
  :data-checked="reflectedProp('checked', 'checked', checkedProps.checked, undefined, false)"
@@ -387,102 +325,9 @@ useComponentHost(() => import('../components/ui-checkbox/ui-checkbox.js'), {
387
325
  inherits: false;
388
326
  }
389
327
 
390
- [data-component~="ui-checkbox"] {
391
- /* Hooks do not inherit, so the parts below read them from the root. */
392
- --_ui-checkbox-size: var(--ui-checkbox-size);
393
- --_ui-checkbox-invalid-border: var(
394
- --ui-checkbox-invalid-border,
395
- var(--ui-field-danger, var(--ui-danger-solid))
396
- );
397
-
398
- display: inline-flex;
399
- align-items: flex-start;
400
- gap: var(--ui-checkbox-gap, var(--ui-space-2));
401
- max-inline-size: 100%;
402
- color: var(--ui-text-primary);
403
- cursor: pointer;
404
- }
405
-
406
328
  /* The label, and under it an optional line saying what the choice means. */
407
- .text {
408
- display: flex;
409
- flex-direction: column;
410
- gap: var(--ui-space-1);
411
- min-inline-size: 0;
412
- }
413
-
414
- .label {
415
- min-inline-size: 0;
416
- line-height: var(--ui-line-height-md);
417
- }
418
-
419
- .description {
420
- color: var(--ui-text-secondary);
421
- font-size: var(--ui-font-size-sm);
422
- line-height: var(--ui-line-height);
423
- }
424
-
425
- .description:empty {
426
- display: none;
427
- }
428
-
429
- input {
430
- appearance: none;
431
- -webkit-appearance: none;
432
- position: relative;
433
- flex: 0 0 auto;
434
- inline-size: var(--_ui-checkbox-size, 1.125rem);
435
- block-size: var(--_ui-checkbox-size, 1.125rem);
436
- margin: 0.125em 0 0;
437
- border: var(--ui-border-width) solid var(--ui-control-border, var(--ui-border-strong));
438
- border-radius: var(--ui-radius-sm);
439
- background: var(--ui-control-surface, var(--ui-surface-default));
440
- box-shadow: var(--ui-control-inset);
441
- cursor: pointer;
442
- transition:
443
- background-color var(--ui-motion-fast) var(--ui-motion-ease),
444
- border-color var(--ui-motion-fast) var(--ui-motion-ease),
445
- box-shadow var(--ui-motion-fast) var(--ui-motion-ease);
446
- }
447
-
448
- input::after {
449
- content: "";
450
- position: absolute;
451
- opacity: 0;
452
- transition: opacity 120ms var(--ui-motion-ease);
453
- }
454
-
455
- input:checked,
456
- input:indeterminate {
457
- border-color: var(--ui-accent-solid);
458
- background: var(--ui-accent-solid);
459
- box-shadow: var(--ui-control-inset);
460
- }
461
329
 
462
330
  /* Centre the tick's box and lift it slightly for the rotated check shape. */
463
- input:checked::after {
464
- inset: 0;
465
- margin: auto;
466
- inline-size: 0.28rem;
467
- block-size: 0.5rem;
468
- /* Longhands, not `border: solid var(...)`: lowering drops a shorthand that omits a
469
- component, which left the tick with no style and no colour. */
470
- border-style: solid;
471
- border-color: var(--ui-text-on-accent);
472
- border-width: 0 0.125rem 0.125rem 0;
473
- opacity: 1;
474
- transform: translateY(-0.09rem) rotate(45deg);
475
- animation: ui-checkbox-check 180ms var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1)) both;
476
- }
477
-
478
- input:indeterminate::after {
479
- inset: 50% 0.23rem auto;
480
- block-size: 0.125rem;
481
- border-radius: var(--ui-radius-round);
482
- background: var(--ui-text-on-accent);
483
- opacity: 1;
484
- transform: translateY(-50%);
485
- }
486
331
 
487
332
  @keyframes ui-checkbox-check {
488
333
  from {
@@ -499,73 +344,167 @@ input:indeterminate::after {
499
344
  }
500
345
  }
501
346
 
502
- @media (prefers-reduced-motion: reduce) {
347
+ /* A sized choice keeps its box and aligns instead: the label takes that size's field type size,
348
+ and the first line centres in that control height, so the label shares a row's baseline.
349
+ Multi-line labels and descriptions still grow downward from that first line. */
350
+
351
+ /* A component that sets its display still honours the hidden attribute on its root. */
352
+
353
+ @scope (.ui-checkbox) {
354
+ :scope:where(:scope) {
355
+ /* Hooks do not inherit, so the parts below read them from the root. */
356
+ --_ui-checkbox-size: var(--ui-checkbox-size);
357
+ --_ui-checkbox-invalid-border: var(
358
+ --ui-checkbox-invalid-border,
359
+ var(--ui-field-danger, var(--ui-danger-solid))
360
+ );
361
+
362
+ display: inline-flex;
363
+ align-items: flex-start;
364
+ gap: var(--ui-checkbox-gap, var(--ui-space-2));
365
+ max-inline-size: 100%;
366
+ color: var(--ui-text-primary);
367
+ cursor: pointer;
368
+ }
369
+ .text {
370
+ display: flex;
371
+ flex-direction: column;
372
+ gap: var(--ui-space-1);
373
+ min-inline-size: 0;
374
+ }
375
+
376
+ .label {
377
+ min-inline-size: 0;
378
+ line-height: var(--ui-line-height-md);
379
+ }
380
+
381
+ .description {
382
+ color: var(--ui-text-secondary);
383
+ font-size: var(--ui-font-size-sm);
384
+ line-height: var(--ui-line-height);
385
+ }
386
+
387
+ .description:empty {
388
+ display: none;
389
+ }
390
+
391
+ input {
392
+ appearance: none;
393
+ -webkit-appearance: none;
394
+ position: relative;
395
+ flex: 0 0 auto;
396
+ inline-size: var(--_ui-checkbox-size, 1.125rem);
397
+ block-size: var(--_ui-checkbox-size, 1.125rem);
398
+ margin: 0.125em 0 0;
399
+ border: var(--ui-border-width) solid var(--ui-control-border, var(--ui-border-strong));
400
+ border-radius: var(--ui-radius-sm);
401
+ background: var(--ui-control-surface, var(--ui-surface-default));
402
+ box-shadow: var(--ui-control-inset);
403
+ cursor: pointer;
404
+ transition:
405
+ background-color var(--ui-motion-fast) var(--ui-motion-ease),
406
+ border-color var(--ui-motion-fast) var(--ui-motion-ease),
407
+ box-shadow var(--ui-motion-fast) var(--ui-motion-ease);
408
+ }
409
+
503
410
  input::after {
504
- transition: none;
505
- animation: none;
411
+ content: "";
412
+ position: absolute;
413
+ opacity: 0;
414
+ transition: opacity 120ms var(--ui-motion-ease);
506
415
  }
507
- }
508
416
 
509
- input:hover:enabled {
510
- border-color: var(--ui-accent-solid);
511
- }
417
+ input:checked, input:indeterminate {
418
+ border-color: var(--ui-accent-solid);
419
+ background: var(--ui-accent-solid);
420
+ box-shadow: var(--ui-control-inset);
421
+ }
422
+ input:checked::after {
423
+ inset: 0;
424
+ margin: auto;
425
+ inline-size: 0.28rem;
426
+ block-size: 0.5rem;
427
+ /* Longhands, not `border: solid var(...)`: lowering drops a shorthand that omits a
428
+ component, which left the tick with no style and no colour. */
429
+ border-style: solid;
430
+ border-color: var(--ui-text-on-accent);
431
+ border-width: 0 0.125rem 0.125rem 0;
432
+ opacity: 1;
433
+ transform: translateY(-0.09rem) rotate(45deg);
434
+ animation: ui-checkbox-check 180ms var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1))
435
+ both;
436
+ }
512
437
 
513
- input:focus-visible {
514
- outline: var(--ui-focus-width) solid var(--ui-focus-ring, var(--ui-accent-solid));
515
- outline-offset: var(--ui-focus-width);
516
- }
438
+ input:indeterminate::after {
439
+ inset: 50% 0.23rem auto;
440
+ block-size: 0.125rem;
441
+ border-radius: var(--ui-radius-round);
442
+ background: var(--ui-text-on-accent);
443
+ opacity: 1;
444
+ transform: translateY(-50%);
445
+ }
517
446
 
518
- [data-component~="ui-checkbox"][data-ui-checkbox-state~="invalid"] input {
519
- border-color: var(--_ui-checkbox-invalid-border);
520
- }
447
+ @media (prefers-reduced-motion: reduce) {
448
+ input::after {
449
+ transition: none;
450
+ animation: none;
451
+ }
452
+ }
521
453
 
522
- [data-component~="ui-checkbox"][data-ui-checkbox-state~="disabled"] {
523
- color: var(--ui-disabled-text);
524
- cursor: not-allowed;
525
- }
526
- [data-component~="ui-checkbox"][data-ui-checkbox-state~="disabled"] .description {
527
- color: var(--ui-disabled-text);
528
- }
529
- [data-component~="ui-checkbox"][data-ui-checkbox-state~="disabled"] input {
530
- border-color: var(--ui-disabled-border);
531
- background: var(--ui-disabled-surface);
532
- box-shadow: none;
533
- cursor: not-allowed;
534
- }
454
+ input:hover:enabled {
455
+ border-color: var(--ui-accent-solid);
456
+ }
535
457
 
536
- /* A sized choice keeps its box and aligns instead: the label takes that size's field type size,
537
- and the first line centres in that control height, so the label shares a row's baseline.
538
- Multi-line labels and descriptions still grow downward from that first line. */
539
- [data-component~="ui-checkbox"][data-ui-checkbox-state~="size=sm"] {
540
- --_font: var(--ui-font-size-sm);
541
- --_row: var(--ui-control-size-sm);
542
- }
458
+ input:focus-visible {
459
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring, var(--ui-accent-solid));
460
+ outline-offset: var(--ui-focus-width);
461
+ }
543
462
 
544
- [data-component~="ui-checkbox"][data-ui-checkbox-state~="size=lg"] {
545
- --_font: var(--ui-font-size-md);
546
- --_row: var(--ui-control-size-lg);
547
- }
463
+ :scope[data-ui-checkbox-state~="invalid"] input {
464
+ border-color: var(--_ui-checkbox-invalid-border);
465
+ }
548
466
 
549
- [data-component~="ui-checkbox"][data-ui-checkbox-state~="size=sm"],
550
- [data-component~="ui-checkbox"][data-ui-checkbox-state~="size=lg"] {
551
- --_line: calc(var(--_font) * var(--ui-line-height-md));
552
- font-size: var(--_font);
553
- padding-block: calc((var(--_row) - var(--_line)) / 2);
554
- }
467
+ :scope:where(:scope):is([data-ui-checkbox-state~="disabled"]) {
468
+ color: var(--ui-disabled-text);
469
+ cursor: not-allowed;
470
+ }
471
+ :scope[data-ui-checkbox-state~="disabled"] .description {
472
+ color: var(--ui-disabled-text);
473
+ }
474
+ :scope[data-ui-checkbox-state~="disabled"] input {
475
+ border-color: var(--ui-disabled-border);
476
+ background: var(--ui-disabled-surface);
477
+ box-shadow: none;
478
+ cursor: not-allowed;
479
+ }
480
+ :scope:where(:scope):is([data-ui-checkbox-state~="size=sm"]) {
481
+ --_font: var(--ui-font-size-sm);
482
+ --_row: var(--ui-control-size-sm);
483
+ }
555
484
 
556
- [data-component~="ui-checkbox"][data-ui-checkbox-state~="size=sm"] input,
557
- [data-component~="ui-checkbox"][data-ui-checkbox-state~="size=lg"] input {
558
- margin-top: calc((var(--_line) - var(--_ui-checkbox-size, 1.125rem)) / 2);
559
- }
485
+ :scope:where(:scope):is([data-ui-checkbox-state~="size=lg"]) {
486
+ --_font: var(--ui-font-size-md);
487
+ --_row: var(--ui-control-size-lg);
488
+ }
560
489
 
561
- @media (pointer: coarse) {
562
- [data-component~="ui-checkbox"][data-ui-checkbox-state~="size=sm"] {
563
- --_row: var(--ui-control-min-block-size);
490
+ :scope:where(:scope):is([data-ui-checkbox-state~="size=sm"]),
491
+ :scope:where(:scope):is([data-ui-checkbox-state~="size=lg"]) {
492
+ --_line: calc(var(--_font) * var(--ui-line-height-md));
493
+ font-size: var(--_font);
494
+ padding-block: calc((var(--_row) - var(--_line)) / 2);
564
495
  }
565
- }
566
496
 
567
- /* A component that sets its display still honours the hidden attribute on its root. */
568
- [data-component~="ui-checkbox"][hidden] {
569
- display: none;
497
+ :scope[data-ui-checkbox-state~="size=sm"] input, :scope[data-ui-checkbox-state~="size=lg"] input {
498
+ margin-top: calc((var(--_line) - var(--_ui-checkbox-size, 1.125rem)) / 2);
499
+ }
500
+
501
+ @media (pointer: coarse) {
502
+ :scope:where(:scope):is([data-ui-checkbox-state~="size=sm"]) {
503
+ --_row: var(--ui-control-min-block-size);
504
+ }
505
+ }
506
+ :scope:where(:scope):is([hidden]) {
507
+ display: none;
508
+ }
570
509
  }
571
510
  </style>
@@ -62,9 +62,9 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
62
62
  default: null;
63
63
  };
64
64
  }>> & Readonly<{}>, {
65
+ fixed: boolean | null;
65
66
  align: "center" | "start" | "stretch" | "end" | "baseline" | null;
66
67
  padding: "s" | "none" | "m" | "l" | null;
67
- fixed: boolean | null;
68
68
  gap: "s" | "xs" | "m" | "l" | "xl" | null;
69
69
  justify: "center" | "start" | "end" | "between" | null;
70
70
  wrap: "wrap" | "nowrap" | null;
package/vue/UiCluster.vue CHANGED
@@ -1,7 +1,8 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.35 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.51 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
- import { computed, getCurrentInstance, watchSyncEffect } from 'vue'
3
+ import { computed, watchSyncEffect } from 'vue'
4
4
  import type { PropType } from 'vue'
5
+ import { checkHydratedRoot, nativeAttrs, useReflectedProp } from './host'
5
6
  import { checkedProp, vPropValidity } from './props'
6
7
 
7
8
  defineOptions({ inheritAttrs: false })
@@ -148,56 +149,9 @@ void checkedProps.value
148
149
  watchSyncEffect(() => {
149
150
  void checkedProps.value
150
151
  })
151
- function nativeAttrs(attrs: Record<string, unknown>): Record<string, unknown> {
152
- const names = Object.keys(attrs)
153
- if (!names.some((name) => Object.hasOwn(Object.prototype, name))) return attrs
154
- return Object.fromEntries(names.map((name) => [
155
- Object.hasOwn(Object.prototype, name)
156
- ? name === '__proto__' ? '__Proto__' : name[0]!.toUpperCase() + name.slice(1)
157
- : name,
158
- attrs[name],
159
- ]))
160
- }
161
- const componentInstance = getCurrentInstance()
162
- function reflectedProp(
163
- name: string,
164
- kebab: string,
165
- value: unknown,
166
- fallback: string | undefined,
167
- bound: boolean,
168
- separator?: string,
169
- ): string | undefined {
170
- const incoming = componentInstance?.vnode.props
171
- if (
172
- !bound
173
- && (incoming === null || incoming === undefined
174
- || (!Object.hasOwn(incoming, name) && !Object.hasOwn(incoming, kebab)))
175
- ) return fallback
176
- if (value === null || value === undefined) return undefined
177
- return Array.isArray(value) && separator !== undefined
178
- ? value.join(separator)
179
- : typeof value === 'object'
180
- ? JSON.stringify(value)
181
- : String(value)
182
- }
183
- const hydrationInstance = getCurrentInstance()
152
+ const reflectedProp = useReflectedProp()
184
153
 
185
- const hydrationNode = hydrationInstance?.vnode.el
186
- if (
187
- typeof window !== 'undefined' && hydrationNode != null
188
- && (!(hydrationNode instanceof Element) || hydrationNode.localName !== ('div'))
189
- ) {
190
- throw Object.assign(
191
- new Error('HR005: Server markup for <ui-cluster> has an incompatible root.'),
192
- {
193
- name: 'HtmlDiagnosticError',
194
- diagnostic: Object.freeze({
195
- code: 'HR005',
196
- message: 'Server markup for <ui-cluster> has an incompatible root.',
197
- }),
198
- },
199
- )
200
- }
154
+ checkHydratedRoot('div', 'ui-cluster')
201
155
 
202
156
  /** The values the styles' :host-state() rules test. */
203
157
  const hostState = computed(() =>
@@ -224,7 +178,7 @@ const hostState = computed(() =>
224
178
 
225
179
  <template>
226
180
  <div
227
- data-component="ui-cluster"
181
+ class="ui-cluster"
228
182
  v-bind="nativeAttrs($attrs)"
229
183
  v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
230
184
  :data-align="reflectedProp('align', 'align', checkedProps.align, undefined, false)"
@@ -247,84 +201,86 @@ const hostState = computed(() =>
247
201
  inherits: false;
248
202
  }
249
203
 
250
- [data-component~="ui-cluster"] {
251
- --_layout-gap: var(--ui-space-3);
252
- display: flex;
253
- flex-wrap: wrap;
254
- align-items: center;
255
- gap: var(--ui-cluster-gap, var(--_layout-gap));
256
- min-inline-size: 0;
257
- max-inline-size: 100%;
258
- margin: 0;
259
- }
204
+ /* A component that sets its display still honours the hidden attribute on its root. */
260
205
 
261
- [data-component~="ui-cluster"][data-ui-cluster-state~="fixed"] {
262
- flex: none;
263
- }
264
- [data-component~="ui-cluster"][data-ui-cluster-state~="padding=s"] {
265
- padding: var(--ui-space-2);
266
- }
267
- [data-component~="ui-cluster"][data-ui-cluster-state~="padding=m"] {
268
- padding: var(--ui-space-3);
269
- }
270
- [data-component~="ui-cluster"][data-ui-cluster-state~="padding=l"] {
271
- padding: var(--ui-space-4);
272
- }
273
- [data-component~="ui-cluster"][data-ui-cluster-state~="paddingEnd=s"] {
274
- padding-inline-end: var(--ui-space-2);
275
- }
276
- [data-component~="ui-cluster"][data-ui-cluster-state~="paddingEnd=m"] {
277
- padding-inline-end: var(--ui-space-3);
278
- }
279
- [data-component~="ui-cluster"][data-ui-cluster-state~="paddingEnd=l"] {
280
- padding-inline-end: var(--ui-space-4);
281
- }
282
- [data-component~="ui-cluster"][data-ui-cluster-state~="paddingEnd=xl"] {
283
- padding-inline-end: calc(var(--ui-space-4) * 4);
284
- }
206
+ @scope (.ui-cluster) {
207
+ :scope:where(:scope) {
208
+ --_layout-gap: var(--ui-space-3);
209
+ display: flex;
210
+ flex-wrap: wrap;
211
+ align-items: center;
212
+ gap: var(--ui-cluster-gap, var(--_layout-gap));
213
+ min-inline-size: 0;
214
+ max-inline-size: 100%;
215
+ margin: 0;
216
+ }
285
217
 
286
- [data-component~="ui-cluster"][data-ui-cluster-state~="gap=xs"] {
287
- --_layout-gap: var(--ui-space-2);
288
- }
289
- [data-component~="ui-cluster"][data-ui-cluster-state~="gap=s"] {
290
- --_layout-gap: var(--ui-space-3);
291
- }
292
- [data-component~="ui-cluster"][data-ui-cluster-state~="gap=m"] {
293
- --_layout-gap: var(--ui-space-4);
294
- }
295
- [data-component~="ui-cluster"][data-ui-cluster-state~="gap=l"] {
296
- --_layout-gap: var(--ui-space-5);
297
- }
298
- [data-component~="ui-cluster"][data-ui-cluster-state~="gap=xl"] {
299
- --_layout-gap: var(--ui-space-6);
300
- }
301
- [data-component~="ui-cluster"][data-ui-cluster-state~="align=start"] {
302
- align-items: flex-start;
303
- }
304
- [data-component~="ui-cluster"][data-ui-cluster-state~="align=end"] {
305
- align-items: flex-end;
306
- }
307
- [data-component~="ui-cluster"][data-ui-cluster-state~="align=baseline"] {
308
- align-items: baseline;
309
- }
310
- [data-component~="ui-cluster"][data-ui-cluster-state~="align=stretch"] {
311
- align-items: stretch;
312
- }
313
- [data-component~="ui-cluster"][data-ui-cluster-state~="justify=center"] {
314
- justify-content: center;
315
- }
316
- [data-component~="ui-cluster"][data-ui-cluster-state~="justify=end"] {
317
- justify-content: flex-end;
318
- }
319
- [data-component~="ui-cluster"][data-ui-cluster-state~="justify=between"] {
320
- justify-content: space-between;
321
- }
322
- [data-component~="ui-cluster"][data-ui-cluster-state~="wrap=nowrap"] {
323
- flex-wrap: nowrap;
324
- }
218
+ :scope:where(:scope):is([data-ui-cluster-state~="fixed"]) {
219
+ flex: none;
220
+ }
221
+ :scope:where(:scope):is([data-ui-cluster-state~="padding=s"]) {
222
+ padding: var(--ui-space-2);
223
+ }
224
+ :scope:where(:scope):is([data-ui-cluster-state~="padding=m"]) {
225
+ padding: var(--ui-space-3);
226
+ }
227
+ :scope:where(:scope):is([data-ui-cluster-state~="padding=l"]) {
228
+ padding: var(--ui-space-4);
229
+ }
230
+ :scope:where(:scope):is([data-ui-cluster-state~="paddingEnd=s"]) {
231
+ padding-inline-end: var(--ui-space-2);
232
+ }
233
+ :scope:where(:scope):is([data-ui-cluster-state~="paddingEnd=m"]) {
234
+ padding-inline-end: var(--ui-space-3);
235
+ }
236
+ :scope:where(:scope):is([data-ui-cluster-state~="paddingEnd=l"]) {
237
+ padding-inline-end: var(--ui-space-4);
238
+ }
239
+ :scope:where(:scope):is([data-ui-cluster-state~="paddingEnd=xl"]) {
240
+ padding-inline-end: calc(var(--ui-space-4) * 4);
241
+ }
325
242
 
326
- /* A component that sets its display still honours the hidden attribute on its root. */
327
- [data-component~="ui-cluster"][hidden] {
328
- display: none;
243
+ :scope:where(:scope):is([data-ui-cluster-state~="gap=xs"]) {
244
+ --_layout-gap: var(--ui-space-2);
245
+ }
246
+ :scope:where(:scope):is([data-ui-cluster-state~="gap=s"]) {
247
+ --_layout-gap: var(--ui-space-3);
248
+ }
249
+ :scope:where(:scope):is([data-ui-cluster-state~="gap=m"]) {
250
+ --_layout-gap: var(--ui-space-4);
251
+ }
252
+ :scope:where(:scope):is([data-ui-cluster-state~="gap=l"]) {
253
+ --_layout-gap: var(--ui-space-5);
254
+ }
255
+ :scope:where(:scope):is([data-ui-cluster-state~="gap=xl"]) {
256
+ --_layout-gap: var(--ui-space-6);
257
+ }
258
+ :scope:where(:scope):is([data-ui-cluster-state~="align=start"]) {
259
+ align-items: flex-start;
260
+ }
261
+ :scope:where(:scope):is([data-ui-cluster-state~="align=end"]) {
262
+ align-items: flex-end;
263
+ }
264
+ :scope:where(:scope):is([data-ui-cluster-state~="align=baseline"]) {
265
+ align-items: baseline;
266
+ }
267
+ :scope:where(:scope):is([data-ui-cluster-state~="align=stretch"]) {
268
+ align-items: stretch;
269
+ }
270
+ :scope:where(:scope):is([data-ui-cluster-state~="justify=center"]) {
271
+ justify-content: center;
272
+ }
273
+ :scope:where(:scope):is([data-ui-cluster-state~="justify=end"]) {
274
+ justify-content: flex-end;
275
+ }
276
+ :scope:where(:scope):is([data-ui-cluster-state~="justify=between"]) {
277
+ justify-content: space-between;
278
+ }
279
+ :scope:where(:scope):is([data-ui-cluster-state~="wrap=nowrap"]) {
280
+ flex-wrap: nowrap;
281
+ }
282
+ :scope:where(:scope):is([hidden]) {
283
+ display: none;
284
+ }
329
285
  }
330
286
  </style>