@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,8 +1,14 @@
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
3
  import { computed, getCurrentInstance, provide, ref, watchSyncEffect } from 'vue'
4
4
  import type { PropType } from 'vue'
5
- import { createDispatch, useComponentHost } from './host'
5
+ import {
6
+ checkHydratedRoot,
7
+ createDispatch,
8
+ nativeAttrs,
9
+ useComponentHost,
10
+ useReflectedProp,
11
+ } from './host'
6
12
  import { acceptsControllerWrite } from './props'
7
13
  import { checkedProp, propValidityState, vPropValidity } from './props'
8
14
 
@@ -145,38 +151,7 @@ void checkedProps.value
145
151
  watchSyncEffect(() => {
146
152
  void checkedProps.value
147
153
  })
148
- function nativeAttrs(attrs: Record<string, unknown>): Record<string, unknown> {
149
- const names = Object.keys(attrs)
150
- if (!names.some((name) => Object.hasOwn(Object.prototype, name))) return attrs
151
- return Object.fromEntries(names.map((name) => [
152
- Object.hasOwn(Object.prototype, name)
153
- ? name === '__proto__' ? '__Proto__' : name[0]!.toUpperCase() + name.slice(1)
154
- : name,
155
- attrs[name],
156
- ]))
157
- }
158
- const componentInstance = getCurrentInstance()
159
- function reflectedProp(
160
- name: string,
161
- kebab: string,
162
- value: unknown,
163
- fallback: string | undefined,
164
- bound: boolean,
165
- separator?: string,
166
- ): string | undefined {
167
- const incoming = componentInstance?.vnode.props
168
- if (
169
- !bound
170
- && (incoming === null || incoming === undefined
171
- || (!Object.hasOwn(incoming, name) && !Object.hasOwn(incoming, kebab)))
172
- ) return fallback
173
- if (value === null || value === undefined) return undefined
174
- return Array.isArray(value) && separator !== undefined
175
- ? value.join(separator)
176
- : typeof value === 'object'
177
- ? JSON.stringify(value)
178
- : String(value)
179
- }
154
+ const reflectedProp = useReflectedProp()
180
155
  const hydrationInstance = getCurrentInstance()
181
156
  const emit = defineEmits<{
182
157
  'update:value': [value: string]
@@ -203,22 +178,7 @@ const emit = defineEmits<{
203
178
  const root = ref<HTMLElement | null>(null)
204
179
  const internalValue = ref('')
205
180
  provide('html-next:ui-radio-group:internalValue', internalValue)
206
- const hydrationNode = hydrationInstance?.vnode.el
207
- if (
208
- typeof window !== 'undefined' && hydrationNode != null
209
- && (!(hydrationNode instanceof Element) || hydrationNode.localName !== ('fieldset'))
210
- ) {
211
- throw Object.assign(
212
- new Error('HR005: Server markup for <ui-radio-group> has an incompatible root.'),
213
- {
214
- name: 'HtmlDiagnosticError',
215
- diagnostic: Object.freeze({
216
- code: 'HR005',
217
- message: 'Server markup for <ui-radio-group> has an incompatible root.',
218
- }),
219
- },
220
- )
221
- }
181
+ checkHydratedRoot('fieldset', 'ui-radio-group')
222
182
 
223
183
  /** The values the styles' :host-state() rules test. */
224
184
  const hostState = computed(() =>
@@ -288,7 +248,7 @@ useComponentHost(() => import('../components/ui-radio-group/ui-radio-group.js'),
288
248
 
289
249
  <template>
290
250
  <fieldset
291
- data-component="ui-radio-group"
251
+ class="ui-radio-group"
292
252
  role="radiogroup"
293
253
  v-bind="nativeAttrs($attrs)"
294
254
  :aria-required="checkedProps.required ?? undefined"
@@ -316,44 +276,46 @@ useComponentHost(() => import('../components/ui-radio-group/ui-radio-group.js'),
316
276
  inherits: false;
317
277
  }
318
278
 
319
- [data-component~="ui-radio-group"] {
320
- --_ui-radio-group-invalid-text: var(
321
- --ui-radio-group-invalid-text,
322
- var(--ui-field-danger, var(--ui-danger-solid))
323
- );
324
- display: inline-flex;
325
- align-items: center;
326
- gap: var(--ui-space-2);
327
- min-inline-size: 0;
328
- margin: 0;
329
- padding: 0;
330
- border: 0;
331
- }
279
+ /* A component that sets its display still honours the hidden attribute on its root. */
332
280
 
333
- legend {
334
- float: inline-start;
335
- inline-size: 100%;
336
- margin: 0 0 var(--ui-space-2);
337
- padding: 0;
338
- color: var(--ui-text-primary);
339
- font-weight: var(--ui-font-medium);
340
- }
281
+ @scope (.ui-radio-group) {
282
+ :scope:where(:scope) {
283
+ --_ui-radio-group-invalid-text: var(
284
+ --ui-radio-group-invalid-text,
285
+ var(--ui-field-danger, var(--ui-danger-solid))
286
+ );
287
+ display: inline-flex;
288
+ align-items: center;
289
+ gap: var(--ui-space-2);
290
+ min-inline-size: 0;
291
+ margin: 0;
292
+ padding: 0;
293
+ border: 0;
294
+ }
341
295
 
342
- legend + * {
343
- clear: both;
344
- }
296
+ legend {
297
+ float: inline-start;
298
+ inline-size: 100%;
299
+ margin: 0 0 var(--ui-space-2);
300
+ padding: 0;
301
+ color: var(--ui-text-primary);
302
+ font-weight: var(--ui-font-medium);
303
+ }
345
304
 
346
- [data-component~="ui-radio-group"][data-ui-radio-group-state~="invalid"] legend {
347
- color: var(--_ui-radio-group-invalid-text);
348
- }
305
+ legend + * {
306
+ clear: both;
307
+ }
349
308
 
350
- [data-component~="ui-radio-group"][data-ui-radio-group-state~="orientation=vertical"] {
351
- display: inline-grid;
352
- justify-items: start;
353
- }
309
+ :scope[data-ui-radio-group-state~="invalid"] legend {
310
+ color: var(--_ui-radio-group-invalid-text);
311
+ }
354
312
 
355
- /* A component that sets its display still honours the hidden attribute on its root. */
356
- [data-component~="ui-radio-group"][hidden] {
357
- display: none;
313
+ :scope:where(:scope):is([data-ui-radio-group-state~="orientation=vertical"]) {
314
+ display: inline-grid;
315
+ justify-items: start;
316
+ }
317
+ :scope:where(:scope):is([hidden]) {
318
+ display: none;
319
+ }
358
320
  }
359
321
  </style>
package/vue/UiReel.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 })
@@ -67,53 +68,9 @@ void checkedProps.value
67
68
  watchSyncEffect(() => {
68
69
  void checkedProps.value
69
70
  })
70
- function nativeAttrs(attrs: Record<string, unknown>): Record<string, unknown> {
71
- const names = Object.keys(attrs)
72
- if (!names.some((name) => Object.hasOwn(Object.prototype, name))) return attrs
73
- return Object.fromEntries(names.map((name) => [
74
- Object.hasOwn(Object.prototype, name)
75
- ? name === '__proto__' ? '__Proto__' : name[0]!.toUpperCase() + name.slice(1)
76
- : name,
77
- attrs[name],
78
- ]))
79
- }
80
- const componentInstance = getCurrentInstance()
81
- function reflectedProp(
82
- name: string,
83
- kebab: string,
84
- value: unknown,
85
- fallback: string | undefined,
86
- bound: boolean,
87
- separator?: string,
88
- ): string | undefined {
89
- const incoming = componentInstance?.vnode.props
90
- if (
91
- !bound
92
- && (incoming === null || incoming === undefined
93
- || (!Object.hasOwn(incoming, name) && !Object.hasOwn(incoming, kebab)))
94
- ) return fallback
95
- if (value === null || value === undefined) return undefined
96
- return Array.isArray(value) && separator !== undefined
97
- ? value.join(separator)
98
- : typeof value === 'object'
99
- ? JSON.stringify(value)
100
- : String(value)
101
- }
102
- const hydrationInstance = getCurrentInstance()
71
+ const reflectedProp = useReflectedProp()
103
72
 
104
- const hydrationNode = hydrationInstance?.vnode.el
105
- if (
106
- typeof window !== 'undefined' && hydrationNode != null
107
- && (!(hydrationNode instanceof Element) || hydrationNode.localName !== ('div'))
108
- ) {
109
- throw Object.assign(new Error('HR005: Server markup for <ui-reel> has an incompatible root.'), {
110
- name: 'HtmlDiagnosticError',
111
- diagnostic: Object.freeze({
112
- code: 'HR005',
113
- message: 'Server markup for <ui-reel> has an incompatible root.',
114
- }),
115
- })
116
- }
73
+ checkHydratedRoot('div', 'ui-reel')
117
74
 
118
75
  /** The values the styles' :host-state() rules test. */
119
76
  const hostState = computed(() =>
@@ -131,7 +88,7 @@ const hostState = computed(() =>
131
88
 
132
89
  <template>
133
90
  <div
134
- data-component="ui-reel"
91
+ class="ui-reel"
135
92
  role="region"
136
93
  tabindex="0"
137
94
  v-bind="nativeAttrs($attrs)"
@@ -156,92 +113,94 @@ const hostState = computed(() =>
156
113
  inherits: false;
157
114
  }
158
115
 
159
- [data-component~="ui-reel"] {
160
- /* Hooks do not inherit, so the parts below read them from the root. */
161
- --_ui-reel-item-width: var(--ui-reel-item-width);
116
+ /* Each end that hides items fades: the scroll fade every Looma scroller uses (see ui-scroll-area). */
162
117
 
163
- --_reel-gap: var(--ui-space-4);
164
- --_reel-item-width: auto;
165
- display: flex;
166
- inline-size: 100%;
167
- gap: var(--ui-reel-gap, var(--_reel-gap));
168
- min-inline-size: 0;
169
- max-inline-size: 100%;
170
- margin: 0;
171
- overflow-x: auto;
172
- overflow-y: hidden;
173
- overscroll-behavior-inline: contain;
174
- }
118
+ /* A component that sets its display still honours the hidden attribute on its root. */
175
119
 
176
- /* Each end that hides items fades: the scroll fade every Looma scroller uses (see ui-scroll-area). */
177
- [data-component~="ui-reel"] {
178
- --_ui-scroll-fade-direction: to right;
179
- --_ui-scroll-fade-size: var(--ui-scroll-fade-size, 24px);
180
- mask-image: linear-gradient(
181
- var(--_ui-scroll-fade-direction),
182
- transparent,
183
- #000 var(--_ui-scroll-fade-start),
184
- #000 calc(100% - var(--_ui-scroll-fade-end)),
185
- transparent
186
- );
187
- animation:
188
- ui-scroll-fade-start linear,
189
- ui-scroll-fade-start-hold linear,
190
- ui-scroll-fade-end-hold linear,
191
- ui-scroll-fade-end linear;
192
- animation-timeline: scroll(self inline);
193
- animation-range:
194
- 0 var(--_ui-scroll-fade-size),
195
- var(--_ui-scroll-fade-size) calc(100% + 1px),
196
- -1px calc(100% - var(--_ui-scroll-fade-size)),
197
- calc(100% - var(--_ui-scroll-fade-size)) 100%;
198
- }
120
+ @scope (.ui-reel) {
121
+ :scope:where(:scope) {
122
+ /* Hooks do not inherit, so the parts below read them from the root. */
123
+ --_ui-reel-item-width: var(--ui-reel-item-width);
199
124
 
200
- [data-component~="ui-reel"]:dir(rtl) {
201
- --_ui-scroll-fade-direction: to left;
202
- }
125
+ --_reel-gap: var(--ui-space-4);
126
+ --_reel-item-width: auto;
127
+ display: flex;
128
+ inline-size: 100%;
129
+ gap: var(--ui-reel-gap, var(--_reel-gap));
130
+ min-inline-size: 0;
131
+ max-inline-size: 100%;
132
+ margin: 0;
133
+ overflow-x: auto;
134
+ overflow-y: hidden;
135
+ overscroll-behavior-inline: contain;
136
+ }
137
+ :scope:where(:scope) {
138
+ --_ui-scroll-fade-direction: to right;
139
+ --_ui-scroll-fade-size: var(--ui-scroll-fade-size, 24px);
140
+ mask-image: linear-gradient(
141
+ var(--_ui-scroll-fade-direction),
142
+ transparent,
143
+ #000 var(--_ui-scroll-fade-start),
144
+ #000 calc(100% - var(--_ui-scroll-fade-end)),
145
+ transparent
146
+ );
147
+ animation:
148
+ ui-scroll-fade-start linear,
149
+ ui-scroll-fade-start-hold linear,
150
+ ui-scroll-fade-end-hold linear,
151
+ ui-scroll-fade-end linear;
152
+ animation-timeline: scroll(self inline);
153
+ animation-range:
154
+ 0 var(--_ui-scroll-fade-size),
155
+ var(--_ui-scroll-fade-size) calc(100% + 1px),
156
+ -1px calc(100% - var(--_ui-scroll-fade-size)),
157
+ calc(100% - var(--_ui-scroll-fade-size)) 100%;
158
+ }
203
159
 
204
- [data-component~="ui-reel"] > :slotted(*) {
205
- min-inline-size: 0;
206
- flex: 0 0 var(--_ui-reel-item-width, var(--_reel-item-width));
207
- }
160
+ :scope:where(:scope):is(:dir(rtl)) {
161
+ --_ui-scroll-fade-direction: to left;
162
+ }
208
163
 
209
- [data-component~="ui-reel"][data-ui-reel-state~="gap=xs"] {
210
- --_reel-gap: var(--ui-space-2);
211
- }
212
- [data-component~="ui-reel"][data-ui-reel-state~="gap=s"] {
213
- --_reel-gap: var(--ui-space-3);
214
- }
215
- [data-component~="ui-reel"][data-ui-reel-state~="gap=m"] {
216
- --_reel-gap: var(--ui-space-4);
217
- }
218
- [data-component~="ui-reel"][data-ui-reel-state~="gap=l"] {
219
- --_reel-gap: var(--ui-space-5);
220
- }
221
- [data-component~="ui-reel"][data-ui-reel-state~="gap=xl"] {
222
- --_reel-gap: var(--ui-space-6);
223
- }
224
- [data-component~="ui-reel"][data-ui-reel-state~="itemWidth=sm"] {
225
- --_reel-item-width: 12rem;
226
- }
227
- [data-component~="ui-reel"][data-ui-reel-state~="itemWidth=md"] {
228
- --_reel-item-width: 16rem;
229
- }
230
- [data-component~="ui-reel"][data-ui-reel-state~="itemWidth=lg"] {
231
- --_reel-item-width: 20rem;
232
- }
233
- [data-component~="ui-reel"][data-ui-reel-state~="snap"] {
234
- scroll-snap-type: inline mandatory;
235
- }
236
- [data-component~="ui-reel"][data-ui-reel-state~="snap=start"] > :slotted(*) {
237
- scroll-snap-align: start;
238
- }
239
- [data-component~="ui-reel"][data-ui-reel-state~="snap=center"] > :slotted(*) {
240
- scroll-snap-align: center;
241
- }
164
+ :scope > :slotted(*) {
165
+ min-inline-size: 0;
166
+ flex: 0 0 var(--_ui-reel-item-width, var(--_reel-item-width));
167
+ }
242
168
 
243
- /* A component that sets its display still honours the hidden attribute on its root. */
244
- [data-component~="ui-reel"][hidden] {
245
- display: none;
169
+ :scope:where(:scope):is([data-ui-reel-state~="gap=xs"]) {
170
+ --_reel-gap: var(--ui-space-2);
171
+ }
172
+ :scope:where(:scope):is([data-ui-reel-state~="gap=s"]) {
173
+ --_reel-gap: var(--ui-space-3);
174
+ }
175
+ :scope:where(:scope):is([data-ui-reel-state~="gap=m"]) {
176
+ --_reel-gap: var(--ui-space-4);
177
+ }
178
+ :scope:where(:scope):is([data-ui-reel-state~="gap=l"]) {
179
+ --_reel-gap: var(--ui-space-5);
180
+ }
181
+ :scope:where(:scope):is([data-ui-reel-state~="gap=xl"]) {
182
+ --_reel-gap: var(--ui-space-6);
183
+ }
184
+ :scope:where(:scope):is([data-ui-reel-state~="itemWidth=sm"]) {
185
+ --_reel-item-width: 12rem;
186
+ }
187
+ :scope:where(:scope):is([data-ui-reel-state~="itemWidth=md"]) {
188
+ --_reel-item-width: 16rem;
189
+ }
190
+ :scope:where(:scope):is([data-ui-reel-state~="itemWidth=lg"]) {
191
+ --_reel-item-width: 20rem;
192
+ }
193
+ :scope:where(:scope):is([data-ui-reel-state~="snap"]) {
194
+ scroll-snap-type: inline mandatory;
195
+ }
196
+ :scope[data-ui-reel-state~="snap=start"] > :slotted(*) {
197
+ scroll-snap-align: start;
198
+ }
199
+ :scope[data-ui-reel-state~="snap=center"] > :slotted(*) {
200
+ scroll-snap-align: center;
201
+ }
202
+ :scope:where(:scope):is([hidden]) {
203
+ display: none;
204
+ }
246
205
  }
247
206
  </style>
@@ -48,8 +48,8 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
48
48
  }>> & Readonly<{}>, {
49
49
  fill: boolean | null;
50
50
  size: "sm" | "md" | "lg" | "content" | null;
51
- padding: "none" | "xs" | "sm" | "md" | "lg" | null;
52
51
  trim: boolean | null;
52
+ padding: "none" | "xs" | "sm" | "md" | "lg" | null;
53
53
  orientation: "vertical" | "horizontal" | null;
54
54
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
55
55
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -1,8 +1,14 @@
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
3
  import { computed, getCurrentInstance, ref, useTemplateRef, watchSyncEffect } from 'vue'
4
4
  import type { PropType } from 'vue'
5
- import { createDispatch, useComponentHost } from './host'
5
+ import {
6
+ checkHydratedRoot,
7
+ createDispatch,
8
+ nativeAttrs,
9
+ useComponentHost,
10
+ useReflectedProp,
11
+ } from './host'
6
12
  import { checkedProp, propValidityState, vPropValidity } from './props'
7
13
 
8
14
  defineOptions({ inheritAttrs: false })
@@ -118,58 +124,12 @@ void checkedProps.value
118
124
  watchSyncEffect(() => {
119
125
  void checkedProps.value
120
126
  })
121
- function nativeAttrs(attrs: Record<string, unknown>): Record<string, unknown> {
122
- const names = Object.keys(attrs)
123
- if (!names.some((name) => Object.hasOwn(Object.prototype, name))) return attrs
124
- return Object.fromEntries(names.map((name) => [
125
- Object.hasOwn(Object.prototype, name)
126
- ? name === '__proto__' ? '__Proto__' : name[0]!.toUpperCase() + name.slice(1)
127
- : name,
128
- attrs[name],
129
- ]))
130
- }
131
- const componentInstance = getCurrentInstance()
132
- function reflectedProp(
133
- name: string,
134
- kebab: string,
135
- value: unknown,
136
- fallback: string | undefined,
137
- bound: boolean,
138
- separator?: string,
139
- ): string | undefined {
140
- const incoming = componentInstance?.vnode.props
141
- if (
142
- !bound
143
- && (incoming === null || incoming === undefined
144
- || (!Object.hasOwn(incoming, name) && !Object.hasOwn(incoming, kebab)))
145
- ) return fallback
146
- if (value === null || value === undefined) return undefined
147
- return Array.isArray(value) && separator !== undefined
148
- ? value.join(separator)
149
- : typeof value === 'object'
150
- ? JSON.stringify(value)
151
- : String(value)
152
- }
127
+ const reflectedProp = useReflectedProp()
153
128
  const hydrationInstance = getCurrentInstance()
154
129
 
155
130
  const root = ref<HTMLElement | null>(null)
156
131
  const contentElement = useTemplateRef<HTMLElement>('contentElement')
157
- const hydrationNode = hydrationInstance?.vnode.el
158
- if (
159
- typeof window !== 'undefined' && hydrationNode != null
160
- && (!(hydrationNode instanceof Element) || hydrationNode.localName !== ('div'))
161
- ) {
162
- throw Object.assign(
163
- new Error('HR005: Server markup for <ui-scroll-area> has an incompatible root.'),
164
- {
165
- name: 'HtmlDiagnosticError',
166
- diagnostic: Object.freeze({
167
- code: 'HR005',
168
- message: 'Server markup for <ui-scroll-area> has an incompatible root.',
169
- }),
170
- },
171
- )
172
- }
132
+ checkHydratedRoot('div', 'ui-scroll-area')
173
133
 
174
134
  /** The values the styles' :host-state() rules test. */
175
135
  const hostState = computed(() =>
@@ -213,7 +173,7 @@ useComponentHost(() => import('../components/ui-scroll-area/ui-scroll-area.js'),
213
173
 
214
174
  <template>
215
175
  <div
216
- data-component="ui-scroll-area"
176
+ class="ui-scroll-area"
217
177
  v-bind="nativeAttrs($attrs)"
218
178
  v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
219
179
  :data-fill="reflectedProp('fill', 'fill', checkedProps.fill, undefined, false)"
@@ -232,82 +192,81 @@ useComponentHost(() => import('../components/ui-scroll-area/ui-scroll-area.js'),
232
192
  /* The controller sets each fade length from overflow and scroll position. The mask blends
233
193
  into whatever is behind the area without needing to know its colour. Before upgrade, its
234
194
  zero-length defaults leave the authored scroll area fully visible. */
235
- [data-component~="ui-scroll-area"][data-ui-scroll-area-state~="fill"] {
236
- flex: 1;
237
- }
238
195
 
239
- [data-component~="ui-scroll-area"] {
240
- display: block;
241
- box-sizing: border-box;
242
- min-block-size: 0;
243
- min-inline-size: 0;
244
- overflow-x: hidden;
245
- overflow-y: auto;
246
- overscroll-behavior: contain;
247
- --_ui-scroll-fade-direction: to bottom;
248
- --_ui-scroll-fade-inline: to right;
249
- --_ui-scroll-fade-size: var(--ui-scroll-fade-size, 24px);
250
- mask-image: linear-gradient(
251
- var(--_ui-scroll-fade-direction),
252
- transparent,
253
- #000 var(--_ui-scroll-fade-start),
254
- #000 calc(100% - var(--_ui-scroll-fade-end)),
255
- transparent
256
- );
257
- }
196
+ /* Trim projected edges without changing spacing inside an item. */
258
197
 
259
- .content {
260
- display: flow-root;
261
- }
198
+ /* A component that sets its display still honours the hidden attribute on its root. */
262
199
 
263
- /* Trim projected edges without changing spacing inside an item. */
264
- [data-component~="ui-scroll-area"][data-ui-scroll-area-state~="trim"]
265
- .content
266
- > :slotted(:first-child) {
267
- margin-block-start: 0;
268
- }
200
+ @scope (.ui-scroll-area) {
201
+ :scope:where(:scope):is([data-ui-scroll-area-state~="fill"]) {
202
+ flex: 1;
203
+ }
269
204
 
270
- [data-component~="ui-scroll-area"][data-ui-scroll-area-state~="trim"]
271
- .content
272
- > :slotted(:last-child) {
273
- margin-block-end: 0;
274
- }
205
+ :scope:where(:scope) {
206
+ display: block;
207
+ box-sizing: border-box;
208
+ min-block-size: 0;
209
+ min-inline-size: 0;
210
+ overflow-x: hidden;
211
+ overflow-y: auto;
212
+ overscroll-behavior: contain;
213
+ --_ui-scroll-fade-direction: to bottom;
214
+ --_ui-scroll-fade-inline: to right;
215
+ --_ui-scroll-fade-size: var(--ui-scroll-fade-size, 24px);
216
+ mask-image: linear-gradient(
217
+ var(--_ui-scroll-fade-direction),
218
+ transparent,
219
+ #000 var(--_ui-scroll-fade-start),
220
+ #000 calc(100% - var(--_ui-scroll-fade-end)),
221
+ transparent
222
+ );
223
+ }
275
224
 
276
- [data-component~="ui-scroll-area"][data-ui-scroll-area-state~="orientation=horizontal"] {
277
- overflow-x: auto;
278
- overflow-y: hidden;
279
- --_ui-scroll-fade-direction: var(--_ui-scroll-fade-inline);
280
- }
225
+ .content {
226
+ display: flow-root;
227
+ }
228
+ :scope[data-ui-scroll-area-state~="trim"] .content > :slotted(:first-child) {
229
+ margin-block-start: 0;
230
+ }
281
231
 
282
- [data-component~="ui-scroll-area"]:dir(rtl) {
283
- --_ui-scroll-fade-inline: to left;
284
- }
232
+ :scope[data-ui-scroll-area-state~="trim"] .content > :slotted(:last-child) {
233
+ margin-block-end: 0;
234
+ }
285
235
 
286
- [data-component~="ui-scroll-area"][data-ui-scroll-area-state~="size=sm"] {
287
- max-block-size: calc(9.375rem + var(--ui-scroll-fade-size, 24px));
288
- }
289
- [data-component~="ui-scroll-area"][data-ui-scroll-area-state~="size=md"] {
290
- max-block-size: 20rem;
291
- }
292
- [data-component~="ui-scroll-area"][data-ui-scroll-area-state~="size=lg"] {
293
- max-block-size: 30rem;
294
- }
236
+ :scope:where(:scope):is([data-ui-scroll-area-state~="orientation=horizontal"]) {
237
+ overflow-x: auto;
238
+ overflow-y: hidden;
239
+ --_ui-scroll-fade-direction: var(--_ui-scroll-fade-inline);
240
+ }
295
241
 
296
- [data-component~="ui-scroll-area"][data-ui-scroll-area-state~="padding=xs"] {
297
- padding: var(--ui-space-2);
298
- }
299
- [data-component~="ui-scroll-area"][data-ui-scroll-area-state~="padding=sm"] {
300
- padding: var(--ui-space-3);
301
- }
302
- [data-component~="ui-scroll-area"][data-ui-scroll-area-state~="padding=md"] {
303
- padding: var(--ui-space-5);
304
- }
305
- [data-component~="ui-scroll-area"][data-ui-scroll-area-state~="padding=lg"] {
306
- padding: var(--ui-space-6);
307
- }
242
+ :scope:where(:scope):is(:dir(rtl)) {
243
+ --_ui-scroll-fade-inline: to left;
244
+ }
308
245
 
309
- /* A component that sets its display still honours the hidden attribute on its root. */
310
- [data-component~="ui-scroll-area"][hidden] {
311
- display: none;
246
+ :scope:where(:scope):is([data-ui-scroll-area-state~="size=sm"]) {
247
+ max-block-size: calc(9.375rem + var(--ui-scroll-fade-size, 24px));
248
+ }
249
+ :scope:where(:scope):is([data-ui-scroll-area-state~="size=md"]) {
250
+ max-block-size: 20rem;
251
+ }
252
+ :scope:where(:scope):is([data-ui-scroll-area-state~="size=lg"]) {
253
+ max-block-size: 30rem;
254
+ }
255
+
256
+ :scope:where(:scope):is([data-ui-scroll-area-state~="padding=xs"]) {
257
+ padding: var(--ui-space-2);
258
+ }
259
+ :scope:where(:scope):is([data-ui-scroll-area-state~="padding=sm"]) {
260
+ padding: var(--ui-space-3);
261
+ }
262
+ :scope:where(:scope):is([data-ui-scroll-area-state~="padding=md"]) {
263
+ padding: var(--ui-space-5);
264
+ }
265
+ :scope:where(:scope):is([data-ui-scroll-area-state~="padding=lg"]) {
266
+ padding: var(--ui-space-6);
267
+ }
268
+ :scope:where(:scope):is([hidden]) {
269
+ display: none;
270
+ }
312
271
  }
313
272
  </style>