@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
package/vue/UiNavItem.vue CHANGED
@@ -1,8 +1,15 @@
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, useTemplateRef, watchSyncEffect } from 'vue'
3
+ import { computed, useTemplateRef, watchSyncEffect } from 'vue'
4
4
  import type { PropType } from 'vue'
5
- import { preserveRootFocus } from './host'
5
+ import {
6
+ attribute,
7
+ checkHydratedRoot,
8
+ concat,
9
+ nativeAttrs,
10
+ preserveRootFocus,
11
+ useReflectedProp,
12
+ } from './host'
6
13
  import { checkedProp, vPropValidity } from './props'
7
14
 
8
15
  defineOptions({ inheritAttrs: false })
@@ -146,39 +153,7 @@ void checkedProps.value
146
153
  watchSyncEffect(() => {
147
154
  void checkedProps.value
148
155
  })
149
- function nativeAttrs(attrs: Record<string, unknown>): Record<string, unknown> {
150
- const names = Object.keys(attrs)
151
- if (!names.some((name) => Object.hasOwn(Object.prototype, name))) return attrs
152
- return Object.fromEntries(names.map((name) => [
153
- Object.hasOwn(Object.prototype, name)
154
- ? name === '__proto__' ? '__Proto__' : name[0]!.toUpperCase() + name.slice(1)
155
- : name,
156
- attrs[name],
157
- ]))
158
- }
159
- const componentInstance = getCurrentInstance()
160
- function reflectedProp(
161
- name: string,
162
- kebab: string,
163
- value: unknown,
164
- fallback: string | undefined,
165
- bound: boolean,
166
- separator?: string,
167
- ): string | undefined {
168
- const incoming = componentInstance?.vnode.props
169
- if (
170
- !bound
171
- && (incoming === null || incoming === undefined
172
- || (!Object.hasOwn(incoming, name) && !Object.hasOwn(incoming, kebab)))
173
- ) return fallback
174
- if (value === null || value === undefined) return undefined
175
- return Array.isArray(value) && separator !== undefined
176
- ? value.join(separator)
177
- : typeof value === 'object'
178
- ? JSON.stringify(value)
179
- : String(value)
180
- }
181
- const hydrationInstance = getCurrentInstance()
156
+ const reflectedProp = useReflectedProp()
182
157
 
183
158
  const rootArmElement = useTemplateRef<HTMLElement>('@html-next/root')
184
159
  const root = rootArmElement
@@ -259,23 +234,7 @@ const guardedBinding = computed(() => {
259
234
  concat(checkedProps.value.current),
260
235
  ))
261
236
  })
262
- const hydrationNode = hydrationInstance?.vnode.el
263
- if (
264
- typeof window !== 'undefined' && hydrationNode != null
265
- && (!(hydrationNode instanceof Element)
266
- || hydrationNode.localName !== ((checkedProps.value.as === 'a') ? 'a' : ('button')))
267
- ) {
268
- throw Object.assign(
269
- new Error('HR005: Server markup for <ui-nav-item> has an incompatible root.'),
270
- {
271
- name: 'HtmlDiagnosticError',
272
- diagnostic: Object.freeze({
273
- code: 'HR005',
274
- message: 'Server markup for <ui-nav-item> has an incompatible root.',
275
- }),
276
- },
277
- )
278
- }
237
+ checkHydratedRoot((checkedProps.value.as === 'a') ? 'a' : ('button'), 'ui-nav-item')
279
238
 
280
239
  /** The values the styles' :host-state() rules test. */
281
240
  const hostState = computed(() =>
@@ -288,43 +247,12 @@ const hostState = computed(() =>
288
247
  && `density=${encodeURIComponent(checkedProps.value.density)}`,
289
248
  ].filter(Boolean).join(' ')
290
249
  )
291
-
292
- function text(value: unknown): string {
293
- if (Array.isArray(value)) return value.map(text).join(' ')
294
- return value === null || value === undefined || typeof value === 'object' ? '' : String(value)
295
- }
296
-
297
- function attribute(value: unknown): any {
298
- if (
299
- value === null || value === undefined || value === false
300
- || (typeof value === 'object' && !Array.isArray(value))
301
- ) return undefined
302
- return value === true ? '' : text(value)
303
- }
304
-
305
- // A nonempty scalar call cannot produce the invalid-result sentinel.
306
- type ConcatResult<T extends unknown[]> = T extends
307
- [
308
- string | number | boolean | null | undefined,
309
- ...(string | number | boolean | null | undefined)[],
310
- ] ? string | undefined
311
- : string | symbol | undefined
312
- function concat<T extends unknown[]>(...values: T): ConcatResult<T> {
313
- if (values.some(value => value === Symbol.for('html-next.invalid-result'))) {
314
- return Symbol.for('html-next.invalid-result') as ConcatResult<T>
315
- }
316
- if (values.some(value => value === undefined)) return undefined as ConcatResult<T>
317
- if (values.length === 0 || values.some(value => typeof value === 'object' && value !== null)) {
318
- return Symbol.for('html-next.invalid-result') as ConcatResult<T>
319
- }
320
- return values.map(value => value === null ? '' : String(value)).join('') as ConcatResult<T>
321
- }
322
250
  </script>
323
251
 
324
252
  <template>
325
253
  <a
326
254
  v-if="checkedProps.as === 'a'"
327
- data-component="ui-nav-item"
255
+ class="ui-nav-item"
328
256
  v-bind="nativeAttrs($attrs)"
329
257
  :href="checkedProps.href ?? undefined"
330
258
  :target="checkedProps.target ?? undefined"
@@ -347,7 +275,7 @@ function concat<T extends unknown[]>(...values: T): ConcatResult<T> {
347
275
  <span class="trailing"><slot name="trailing" /></span></a>
348
276
  <button
349
277
  v-else
350
- data-component="ui-nav-item"
278
+ class="ui-nav-item"
351
279
  type="button"
352
280
  v-bind="nativeAttrs($attrs)"
353
281
  :aria-current="guardedBinding"
@@ -393,158 +321,157 @@ function concat<T extends unknown[]>(...values: T): ConcatResult<T> {
393
321
  default slot), and an optional line under it (description), such as the record a section
394
322
  belongs to. Label and description are one line each and end in an ellipsis, so every item in a
395
323
  navigation has the same height and the rail never grows sideways. */
396
- [data-component~="ui-nav-item"] {
397
- --_indicator-width: var(--ui-nav-item-indicator-width, var(--ui-accent-line-width));
398
- --_indicator-color: var(--ui-nav-item-indicator-color, var(--ui-accent));
399
- position: relative;
400
- box-sizing: border-box;
401
- display: flex;
402
- align-items: center;
403
- gap: var(--ui-nav-gap);
404
- inline-size: var(--ui-nav-item-inline-size, 100%);
405
- min-inline-size: 0;
406
- min-block-size: var(--ui-nav-min-block-size);
407
- margin: 0;
408
- padding-block: var(--ui-nav-padding-block);
409
- padding-inline: var(--ui-nav-padding-inline);
410
- border: 0;
411
- border-radius: var(--ui-selection-radius);
412
- background: transparent;
413
- color: var(--ui-text-secondary);
414
- font: inherit;
415
- font-weight: var(--ui-font-normal);
416
- text-align: start;
417
- text-decoration: none;
418
- cursor: pointer;
419
- appearance: none;
420
- transition:
421
- background-color var(--ui-motion-fast) var(--ui-motion-ease),
422
- color var(--ui-motion-fast) var(--ui-motion-ease);
423
- }
424
-
425
- [data-component~="ui-nav-item"]:hover:not([aria-current]) {
426
- background: var(--_ui-selection-context-surface, var(--ui-nav-hover-surface));
427
- color: var(--ui-text-primary);
428
- }
429
324
 
430
325
  /* The ring is an outline, drawn inside the item: forced colors keep an outline where they drop a
431
326
  box shadow, and a scrolling rail cannot clip a ring that stays within the item. */
432
- [data-component~="ui-nav-item"]:focus-visible {
433
- outline: var(--ui-focus-width) solid var(--ui-focus-ring);
434
- outline-offset: calc(-1 * var(--ui-focus-width));
435
- }
436
-
437
- [data-component~="ui-nav-item"][aria-current] {
438
- background: var(
439
- --ui-nav-item-current-surface,
440
- var(--_ui-selection-context-surface, var(--ui-selection-surface))
441
- );
442
- color: var(--_ui-selection-context-text, var(--ui-selection-text));
443
- }
444
327
 
445
328
  /* A complete inset edge separates pale fills without changing rail geometry. */
446
- [data-component~="ui-nav-item"][data-ui-nav-item-state~="variant=surface"]:is(:hover, [aria-current]) {
447
- box-shadow: inset 0 0 0 var(--ui-border-width)
448
- var(--_ui-selection-context-border, var(--ui-selection-border));
449
- }
450
-
451
- [data-component~="ui-nav-item"][data-ui-nav-item-state~="variant=line"] {
452
- border-radius: 0;
453
- }
454
329
 
455
330
  /* A line treatment has straight corners and a continuous edge. Surface treatment has
456
331
  shared rounded corners and no edge marker; never combine the two geometries.
457
332
  The line is a border, not a fill: forced colors replace backgrounds but keep a
458
333
  border, so the current item stays marked in high contrast. Logical edges mirror it in a
459
334
  right-to-left page. */
460
- .indicator {
461
- position: absolute;
462
- inset-block: 0;
463
- inset-inline-start: 0;
464
- display: none;
465
- border-inline-start: var(--_indicator-width) solid var(--_indicator-color);
466
- }
467
335
 
468
- [data-component~="ui-nav-item"][data-ui-nav-item-state~="variant=line"][aria-current] .indicator {
469
- display: block;
470
- }
336
+ /* An unused region takes no space. */
337
+
338
+ /* A component that sets its display still honours the hidden attribute on its root. */
339
+
340
+ @scope (.ui-nav-item) {
341
+ :scope:where(:scope) {
342
+ --_indicator-width: var(--ui-nav-item-indicator-width, var(--ui-accent-line-width));
343
+ --_indicator-color: var(--ui-nav-item-indicator-color, var(--ui-accent));
344
+ position: relative;
345
+ box-sizing: border-box;
346
+ display: flex;
347
+ align-items: center;
348
+ gap: var(--ui-nav-gap);
349
+ inline-size: var(--ui-nav-item-inline-size, 100%);
350
+ min-inline-size: 0;
351
+ min-block-size: var(--ui-nav-min-block-size);
352
+ margin: 0;
353
+ padding-block: var(--ui-nav-padding-block);
354
+ padding-inline: var(--ui-nav-padding-inline);
355
+ border: 0;
356
+ border-radius: var(--ui-selection-radius);
357
+ background: transparent;
358
+ color: var(--ui-text-secondary);
359
+ font: inherit;
360
+ font-weight: var(--ui-font-normal);
361
+ text-align: start;
362
+ text-decoration: none;
363
+ cursor: pointer;
364
+ appearance: none;
365
+ transition:
366
+ background-color var(--ui-motion-fast) var(--ui-motion-ease),
367
+ color var(--ui-motion-fast) var(--ui-motion-ease);
368
+ }
471
369
 
472
- @media (forced-colors: active) {
473
- /* System colors may erase the selected fill. Trace the complete surface, without
474
- creating an edge stripe; the stronger keyboard focus outline keeps precedence. */
475
- [data-component~="ui-nav-item"][data-ui-nav-item-state~="variant=surface"][aria-current]:not(:focus-visible) {
476
- outline: var(--ui-border-width) solid Highlight;
477
- outline-offset: calc(-1 * var(--ui-border-width));
370
+ :scope:where(:scope):is(:hover:not([aria-current])) {
371
+ background: var(--_ui-selection-context-surface, var(--ui-nav-hover-surface));
372
+ color: var(--ui-text-primary);
373
+ }
374
+ :scope:where(:scope):is(:focus-visible) {
375
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring);
376
+ outline-offset: calc(-1 * var(--ui-focus-width));
377
+ }
378
+
379
+ :scope:where(:scope):is([aria-current]) {
380
+ background: var(
381
+ --ui-nav-item-current-surface,
382
+ var(--_ui-selection-context-surface, var(--ui-selection-surface))
383
+ );
384
+ color: var(--_ui-selection-context-text, var(--ui-selection-text));
385
+ }
386
+ :scope:where(:scope):is([data-ui-nav-item-state~="variant=surface"]:is(:hover, [aria-current])) {
387
+ box-shadow: inset 0 0 0 var(--ui-border-width)
388
+ var(--_ui-selection-context-border, var(--ui-selection-border));
389
+ }
390
+
391
+ :scope:where(:scope):is([data-ui-nav-item-state~="variant=line"]) {
392
+ border-radius: 0;
478
393
  }
479
394
  .indicator {
480
- border-inline-start-color: Highlight;
395
+ position: absolute;
396
+ inset-block: 0;
397
+ inset-inline-start: 0;
398
+ display: none;
399
+ border-inline-start: var(--_indicator-width) solid var(--_indicator-color);
481
400
  }
482
- }
483
401
 
484
- .leading,
485
- .trailing {
486
- display: inline-flex;
487
- flex: none;
488
- align-items: center;
489
- justify-content: center;
490
- inline-size: var(--ui-nav-icon-size);
491
- color: inherit;
492
- font-size: var(--ui-nav-icon-size);
493
- }
402
+ :scope[data-ui-nav-item-state~="variant=line"][aria-current] .indicator {
403
+ display: block;
404
+ }
494
405
 
495
- .content {
496
- display: flex;
497
- flex: 1;
498
- flex-direction: column;
499
- gap: var(--ui-space-0-5, 2px);
500
- min-inline-size: 0;
501
- }
406
+ @media (forced-colors: active) {
407
+ /* System colors may erase the selected fill. Trace the complete surface, without
408
+ creating an edge stripe; the stronger keyboard focus outline keeps precedence. */
409
+ :scope:where(:scope):is([data-ui-nav-item-state~="variant=surface"][aria-current]:not(:focus-visible)) {
410
+ outline: var(--ui-border-width) solid Highlight;
411
+ outline-offset: calc(-1 * var(--ui-border-width));
412
+ }
413
+ .indicator {
414
+ border-inline-start-color: Highlight;
415
+ }
416
+ }
502
417
 
503
- .label,
504
- .description {
505
- display: block;
506
- min-inline-size: 0;
507
- overflow: hidden;
508
- text-overflow: ellipsis;
509
- white-space: nowrap;
510
- }
418
+ .leading, .trailing {
419
+ display: inline-flex;
420
+ flex: none;
421
+ align-items: center;
422
+ justify-content: center;
423
+ inline-size: var(--ui-nav-icon-size);
424
+ color: inherit;
425
+ font-size: var(--ui-nav-icon-size);
426
+ }
511
427
 
512
- .label {
513
- font-size: var(--ui-font-size-md);
514
- line-height: var(--ui-line-height-tight);
515
- }
428
+ .content {
429
+ display: flex;
430
+ flex: 1;
431
+ flex-direction: column;
432
+ gap: var(--ui-space-0-5, 2px);
433
+ min-inline-size: 0;
434
+ }
516
435
 
517
- .description {
518
- color: var(--ui-text-muted);
519
- font-size: var(--ui-font-size-sm);
520
- font-weight: var(--ui-font-normal);
521
- line-height: var(--ui-line-height-tight);
522
- }
436
+ .label, .description {
437
+ display: block;
438
+ min-inline-size: 0;
439
+ overflow: hidden;
440
+ text-overflow: ellipsis;
441
+ white-space: nowrap;
442
+ }
523
443
 
524
- [data-component~="ui-nav-item"][data-ui-nav-item-state~="density=compact"] {
525
- min-block-size: var(--ui-nav-compact-min-block-size);
526
- padding-block: var(--ui-nav-compact-padding-block);
527
- padding-inline: var(--ui-nav-compact-padding-inline);
528
- }
529
- [data-component~="ui-nav-item"][data-ui-nav-item-state~="density=compact"] .label {
530
- font-size: var(--ui-font-size-sm);
531
- }
444
+ .label {
445
+ font-size: var(--ui-font-size-md);
446
+ line-height: var(--ui-line-height-tight);
447
+ }
532
448
 
533
- @media (pointer: coarse) {
534
- [data-component~="ui-nav-item"][data-ui-nav-item-state~="density=compact"] {
535
- min-block-size: var(--ui-control-min-block-size);
449
+ .description {
450
+ color: var(--ui-text-muted);
451
+ font-size: var(--ui-font-size-sm);
452
+ font-weight: var(--ui-font-normal);
453
+ line-height: var(--ui-line-height-tight);
536
454
  }
537
- }
538
455
 
539
- /* An unused region takes no space. */
540
- .leading:empty,
541
- .trailing:empty,
542
- .description:empty {
543
- display: none;
544
- }
456
+ :scope:where(:scope):is([data-ui-nav-item-state~="density=compact"]) {
457
+ min-block-size: var(--ui-nav-compact-min-block-size);
458
+ padding-block: var(--ui-nav-compact-padding-block);
459
+ padding-inline: var(--ui-nav-compact-padding-inline);
460
+ }
461
+ :scope[data-ui-nav-item-state~="density=compact"] .label {
462
+ font-size: var(--ui-font-size-sm);
463
+ }
545
464
 
546
- /* A component that sets its display still honours the hidden attribute on its root. */
547
- [data-component~="ui-nav-item"][hidden] {
548
- display: none;
465
+ @media (pointer: coarse) {
466
+ :scope:where(:scope):is([data-ui-nav-item-state~="density=compact"]) {
467
+ min-block-size: var(--ui-control-min-block-size);
468
+ }
469
+ }
470
+ .leading:empty, .trailing:empty, .description:empty {
471
+ display: none;
472
+ }
473
+ :scope:where(:scope):is([hidden]) {
474
+ display: none;
475
+ }
549
476
  }
550
477
  </style>
@@ -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 })
@@ -36,56 +37,9 @@ void checkedProps.value
36
37
  watchSyncEffect(() => {
37
38
  void checkedProps.value
38
39
  })
39
- function nativeAttrs(attrs: Record<string, unknown>): Record<string, unknown> {
40
- const names = Object.keys(attrs)
41
- if (!names.some((name) => Object.hasOwn(Object.prototype, name))) return attrs
42
- return Object.fromEntries(names.map((name) => [
43
- Object.hasOwn(Object.prototype, name)
44
- ? name === '__proto__' ? '__Proto__' : name[0]!.toUpperCase() + name.slice(1)
45
- : name,
46
- attrs[name],
47
- ]))
48
- }
49
- const componentInstance = getCurrentInstance()
50
- function reflectedProp(
51
- name: string,
52
- kebab: string,
53
- value: unknown,
54
- fallback: string | undefined,
55
- bound: boolean,
56
- separator?: string,
57
- ): string | undefined {
58
- const incoming = componentInstance?.vnode.props
59
- if (
60
- !bound
61
- && (incoming === null || incoming === undefined
62
- || (!Object.hasOwn(incoming, name) && !Object.hasOwn(incoming, kebab)))
63
- ) return fallback
64
- if (value === null || value === undefined) return undefined
65
- return Array.isArray(value) && separator !== undefined
66
- ? value.join(separator)
67
- : typeof value === 'object'
68
- ? JSON.stringify(value)
69
- : String(value)
70
- }
71
- const hydrationInstance = getCurrentInstance()
72
-
73
- const hydrationNode = hydrationInstance?.vnode.el
74
- if (
75
- typeof window !== 'undefined' && hydrationNode != null
76
- && (!(hydrationNode instanceof Element) || hydrationNode.localName !== ('header'))
77
- ) {
78
- throw Object.assign(
79
- new Error('HR005: Server markup for <ui-page-header> has an incompatible root.'),
80
- {
81
- name: 'HtmlDiagnosticError',
82
- diagnostic: Object.freeze({
83
- code: 'HR005',
84
- message: 'Server markup for <ui-page-header> has an incompatible root.',
85
- }),
86
- },
87
- )
88
- }
40
+ const reflectedProp = useReflectedProp()
41
+
42
+ checkHydratedRoot('header', 'ui-page-header')
89
43
 
90
44
  /** The values the styles' :host-state() rules test. */
91
45
  const hostState = computed(() =>
@@ -98,7 +52,7 @@ const hostState = computed(() =>
98
52
 
99
53
  <template>
100
54
  <header
101
- data-component="ui-page-header"
55
+ class="ui-page-header"
102
56
  v-bind="nativeAttrs($attrs)"
103
57
  v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
104
58
  :data-align="reflectedProp('align', 'align', checkedProps.align, undefined, false)"
@@ -116,81 +70,81 @@ const hostState = computed(() =>
116
70
  /* The top of a view: its title (the page's one h1), with an optional icon or mark before it, a
117
71
  short eyebrow above it, a line or two of description under it, and the view's own actions at
118
72
  the end. Every view titles itself the same way, at the same size. */
119
- [data-component~="ui-page-header"] {
120
- display: flex;
121
- flex-wrap: wrap;
122
- inline-size: 100%;
123
- align-items: center;
124
- gap: var(--ui-space-3) var(--ui-space-4);
125
- min-inline-size: 0;
126
- }
127
-
128
- .leading {
129
- display: inline-flex;
130
- flex: none;
131
- align-self: center;
132
- color: var(--ui-text-muted);
133
- font-size: var(--ui-font-size-2xl);
134
- }
135
-
136
- .copy {
137
- display: flex;
138
- flex: 1 1 16rem;
139
- flex-direction: column;
140
- gap: var(--ui-space-1);
141
- min-inline-size: 0;
142
- }
143
-
144
- .eyebrow {
145
- color: var(--ui-text-muted);
146
- font-size: var(--ui-font-size-xs);
147
- font-weight: var(--ui-font-semibold);
148
- letter-spacing: 0.06em;
149
- text-transform: uppercase;
150
- }
151
-
152
- .title {
153
- margin: 0;
154
- color: var(--ui-text-primary);
155
- font-size: var(--ui-font-size-2xl);
156
- font-weight: var(--ui-font-bold, 700);
157
- line-height: var(--ui-line-height-tight);
158
- overflow-wrap: anywhere;
159
- }
160
-
161
- .description {
162
- color: var(--ui-text-secondary);
163
- font-size: var(--ui-font-size-md);
164
- line-height: var(--ui-line-height);
165
- }
166
-
167
- .actions {
168
- display: inline-flex;
169
- flex: none;
170
- flex-wrap: wrap;
171
- align-items: center;
172
- gap: var(--ui-space-2);
173
- }
174
-
175
- [data-component~="ui-page-header"][data-ui-page-header-state~="align=center"] {
176
- flex-direction: column;
177
- text-align: center;
178
- }
179
-
180
- [data-component~="ui-page-header"][data-ui-page-header-state~="align=center"] .copy {
181
- align-items: center;
182
- flex-basis: auto;
183
- }
184
-
185
- .leading:empty,
186
- .eyebrow:empty,
187
- .description:empty,
188
- .actions:empty {
189
- display: none;
190
- }
191
73
 
192
74
  /* A component that sets its display still honours the hidden attribute on its root. */
193
- [data-component~="ui-page-header"][hidden] {
194
- display: none;
75
+
76
+ @scope (.ui-page-header) {
77
+ :scope:where(:scope) {
78
+ display: flex;
79
+ flex-wrap: wrap;
80
+ inline-size: 100%;
81
+ align-items: center;
82
+ gap: var(--ui-space-3) var(--ui-space-4);
83
+ min-inline-size: 0;
84
+ }
85
+
86
+ .leading {
87
+ display: inline-flex;
88
+ flex: none;
89
+ align-self: center;
90
+ color: var(--ui-text-muted);
91
+ font-size: var(--ui-font-size-2xl);
92
+ }
93
+
94
+ .copy {
95
+ display: flex;
96
+ flex: 1 1 16rem;
97
+ flex-direction: column;
98
+ gap: var(--ui-space-1);
99
+ min-inline-size: 0;
100
+ }
101
+
102
+ .eyebrow {
103
+ color: var(--ui-text-muted);
104
+ font-size: var(--ui-font-size-xs);
105
+ font-weight: var(--ui-font-semibold);
106
+ letter-spacing: 0.06em;
107
+ text-transform: uppercase;
108
+ }
109
+
110
+ .title {
111
+ margin: 0;
112
+ color: var(--ui-text-primary);
113
+ font-size: var(--ui-font-size-2xl);
114
+ font-weight: var(--ui-font-bold, 700);
115
+ line-height: var(--ui-line-height-tight);
116
+ overflow-wrap: anywhere;
117
+ }
118
+
119
+ .description {
120
+ color: var(--ui-text-secondary);
121
+ font-size: var(--ui-font-size-md);
122
+ line-height: var(--ui-line-height);
123
+ }
124
+
125
+ .actions {
126
+ display: inline-flex;
127
+ flex: none;
128
+ flex-wrap: wrap;
129
+ align-items: center;
130
+ gap: var(--ui-space-2);
131
+ }
132
+
133
+ :scope:where(:scope):is([data-ui-page-header-state~="align=center"]) {
134
+ flex-direction: column;
135
+ text-align: center;
136
+ }
137
+
138
+ :scope[data-ui-page-header-state~="align=center"] .copy {
139
+ align-items: center;
140
+ flex-basis: auto;
141
+ }
142
+
143
+ .leading:empty, .eyebrow:empty, .description:empty, .actions:empty {
144
+ display: none;
145
+ }
146
+ :scope:where(:scope):is([hidden]) {
147
+ display: none;
148
+ }
195
149
  }
196
150
  </style>