@threadlabs/looma 0.28.4 → 0.28.6

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