@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,9 +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
3
  import { computed, getCurrentInstance, ref, watchSyncEffect } from 'vue'
4
4
  import type { PropType } from 'vue'
5
5
  import { readBoundControl, vBindControl } from './control'
6
- import { createDispatch, useComponentHost } from './host'
6
+ import {
7
+ checkHydratedRoot,
8
+ createDispatch,
9
+ nativeAttrs,
10
+ useComponentHost,
11
+ useReflectedProp,
12
+ } from './host'
7
13
  import { checkedProp, propValidityState, vPropValidity } from './props'
8
14
 
9
15
  defineOptions({ inheritAttrs: false })
@@ -177,38 +183,7 @@ void checkedProps.value
177
183
  watchSyncEffect(() => {
178
184
  void checkedProps.value
179
185
  })
180
- function nativeAttrs(attrs: Record<string, unknown>): Record<string, unknown> {
181
- const names = Object.keys(attrs)
182
- if (!names.some((name) => Object.hasOwn(Object.prototype, name))) return attrs
183
- return Object.fromEntries(names.map((name) => [
184
- Object.hasOwn(Object.prototype, name)
185
- ? name === '__proto__' ? '__Proto__' : name[0]!.toUpperCase() + name.slice(1)
186
- : name,
187
- attrs[name],
188
- ]))
189
- }
190
- const componentInstance = getCurrentInstance()
191
- function reflectedProp(
192
- name: string,
193
- kebab: string,
194
- value: unknown,
195
- fallback: string | undefined,
196
- bound: boolean,
197
- separator?: string,
198
- ): string | undefined {
199
- const incoming = componentInstance?.vnode.props
200
- if (
201
- !bound
202
- && (incoming === null || incoming === undefined
203
- || (!Object.hasOwn(incoming, name) && !Object.hasOwn(incoming, kebab)))
204
- ) return fallback
205
- if (value === null || value === undefined) return undefined
206
- return Array.isArray(value) && separator !== undefined
207
- ? value.join(separator)
208
- : typeof value === 'object'
209
- ? JSON.stringify(value)
210
- : String(value)
211
- }
186
+ const reflectedProp = useReflectedProp()
212
187
  const hydrationInstance = getCurrentInstance()
213
188
  const emit = defineEmits<{
214
189
  'update:modelValue': [value: string]
@@ -219,22 +194,7 @@ const model = computed({
219
194
  })
220
195
 
221
196
  const root = ref<HTMLElement | null>(null)
222
- const hydrationNode = hydrationInstance?.vnode.el
223
- if (
224
- typeof window !== 'undefined' && hydrationNode != null
225
- && (!(hydrationNode instanceof Element) || hydrationNode.localName !== ('textarea'))
226
- ) {
227
- throw Object.assign(
228
- new Error('HR005: Server markup for <ui-textarea> has an incompatible root.'),
229
- {
230
- name: 'HtmlDiagnosticError',
231
- diagnostic: Object.freeze({
232
- code: 'HR005',
233
- message: 'Server markup for <ui-textarea> has an incompatible root.',
234
- }),
235
- },
236
- )
237
- }
197
+ checkHydratedRoot('textarea', 'ui-textarea')
238
198
 
239
199
  /** The values the styles' :host-state() rules test. */
240
200
  const hostState = computed(() =>
@@ -282,14 +242,14 @@ useComponentHost(() => import('../components/ui-textarea/ui-textarea.js'), {
282
242
 
283
243
  <template>
284
244
  <textarea
285
- data-component="ui-textarea"
245
+ class="ui-textarea"
286
246
  v-bind="nativeAttrs($attrs)"
287
247
  :disabled="checkedProps.disabled ?? undefined"
288
248
  :readonly="checkedProps.readonly ?? undefined"
289
249
  :required="checkedProps.required ?? undefined"
290
250
  :aria-invalid="checkedProps.invalid ?? undefined"
291
251
  :rows="checkedProps.rows ?? undefined"
292
- :style="{ '--_rows': checkedProps.rows ?? undefined, '--_max-rows': checkedProps.maxRows ?? undefined }"
252
+ :style="{ '--_rows': checkedProps.rows?.toString(), '--_max-rows': checkedProps.maxRows?.toString() }"
293
253
  v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
294
254
  :data-autosize="reflectedProp('autosize', 'autosize', checkedProps.autosize, undefined, false)"
295
255
  :data-disabled="reflectedProp('disabled', 'disabled', checkedProps.disabled, undefined, false)"
@@ -360,163 +320,171 @@ useComponentHost(() => import('../components/ui-textarea/ui-textarea.js'), {
360
320
  inherits: false;
361
321
  }
362
322
 
363
- [data-component~="ui-textarea"] {
364
- box-sizing: border-box;
365
- display: inline-block;
366
- inline-size: 100%;
367
- min-inline-size: 0;
368
- min-block-size: calc(3rem * 2);
369
- margin: 0;
370
- --_padding-block: var(--ui-space-2);
371
- padding: var(--ui-space-2) var(--ui-space-3);
372
- padding-inline-end: var(
373
- --ui-textarea-padding-inline-end,
374
- var(--_ui-default-textarea-padding-inline-end, var(--ui-space-3))
375
- );
376
- appearance: none;
377
- resize: vertical;
378
- border: var(
379
- --ui-textarea-border-width,
380
- var(--_ui-default-textarea-border-width, var(--ui-border-width))
381
- ) solid
382
- var(
383
- --ui-textarea-border,
384
- var(--_ui-default-textarea-border, var(--ui-control-border, var(--ui-border-strong)))
385
- );
386
- border-radius: var(
387
- --ui-textarea-radius,
388
- var(--_ui-default-textarea-radius, var(--ui-field-radius, var(--ui-radius-md)))
389
- );
390
- background: var(
391
- --ui-textarea-surface,
392
- var(--_ui-default-textarea-surface, var(--ui-control-surface, var(--ui-surface-elevated)))
393
- );
394
- color: var(--ui-text-primary);
395
- font: inherit;
396
- line-height: var(--ui-line-height-md);
397
- box-shadow: var(
398
- --ui-textarea-shadow,
399
- var(--_ui-default-textarea-shadow, var(--ui-control-inset))
400
- );
401
- transition:
402
- border-color var(--ui-motion-fast) var(--ui-motion-ease),
403
- box-shadow var(--ui-motion-fast) var(--ui-motion-ease),
404
- background-color var(--ui-motion-fast) var(--ui-motion-ease);
405
- }
406
-
407
323
  /* Tabbing into a field selects its text; tint that selection softly instead of the page highlight. */
408
- [data-component~="ui-textarea"]::selection {
409
- background: color-mix(in srgb, var(--ui-accent-solid) 20%, transparent);
410
- color: inherit;
411
- }
412
324
 
413
- [data-component~="ui-textarea"]::placeholder {
414
- color: var(--ui-control-placeholder, var(--ui-text-secondary));
415
- opacity: 1;
416
- }
325
+ /* The app's invalid flag, or the browser's own verdict once the user has left an invalid field. */
417
326
 
418
- [data-component~="ui-textarea"]:hover:not(:focus):not(:disabled):not(:read-only):not([aria-invalid="true"]):not(:is(:user-invalid, [data-user-invalid])) {
419
- border-color: var(
420
- --ui-textarea-border-hover,
421
- var(
422
- --_ui-default-textarea-border-hover,
423
- var(--ui-control-border-hover, var(--ui-text-secondary))
424
- )
425
- );
426
- }
327
+ /* Below 16px, iOS zooms the page into the focused field, so touch keeps body-size text. */
427
328
 
428
- [data-component~="ui-textarea"]:focus-visible {
429
- border-color: var(
430
- --ui-textarea-focus-border,
431
- var(--_ui-default-textarea-focus-border, var(--ui-control-focus, var(--ui-accent-solid)))
432
- );
433
- outline: var(--ui-textarea-focus-outline, var(--_ui-default-textarea-focus-outline, none));
434
- box-shadow: var(
435
- --ui-textarea-focus-shadow,
436
- var(
437
- --_ui-default-textarea-focus-shadow,
438
- var(--ui-control-inset),
439
- var(--ui-control-focus-halo-shadow)
440
- )
441
- );
442
- }
329
+ /* A component that sets its display still honours the hidden attribute on its root. */
443
330
 
444
- /* The app's invalid flag, or the browser's own verdict once the user has left an invalid field. */
445
- [data-component~="ui-textarea"][aria-invalid="true"],
446
- [data-component~="ui-textarea"]:is(:user-invalid, [data-user-invalid]) {
447
- border-color: var(
448
- --ui-textarea-invalid-border,
449
- var(--_ui-default-textarea-invalid-border, var(--ui-field-danger, var(--ui-danger-solid)))
450
- );
451
- }
331
+ @scope (.ui-textarea) {
332
+ :scope:where(:scope) {
333
+ box-sizing: border-box;
334
+ display: inline-block;
335
+ inline-size: 100%;
336
+ min-inline-size: 0;
337
+ min-block-size: calc(3rem * 2);
338
+ margin: 0;
339
+ --_padding-block: var(--ui-space-2);
340
+ padding: var(--ui-space-2) var(--ui-space-3);
341
+ padding-inline-end: var(
342
+ --ui-textarea-padding-inline-end,
343
+ var(--_ui-default-textarea-padding-inline-end, var(--ui-space-3))
344
+ );
345
+ appearance: none;
346
+ resize: vertical;
347
+ border: var(
348
+ --ui-textarea-border-width,
349
+ var(--_ui-default-textarea-border-width, var(--ui-border-width))
350
+ ) solid
351
+ var(
352
+ --ui-textarea-border,
353
+ var(--_ui-default-textarea-border, var(--ui-control-border, var(--ui-border-strong)))
354
+ );
355
+ border-radius: var(
356
+ --ui-textarea-radius,
357
+ var(--_ui-default-textarea-radius, var(--ui-field-radius, var(--ui-radius-md)))
358
+ );
359
+ background: var(
360
+ --ui-textarea-surface,
361
+ var(--_ui-default-textarea-surface, var(--ui-control-surface, var(--ui-surface-elevated)))
362
+ );
363
+ color: var(--ui-text-primary);
364
+ font: inherit;
365
+ line-height: var(--ui-line-height-md);
366
+ box-shadow: var(
367
+ --ui-textarea-shadow,
368
+ var(--_ui-default-textarea-shadow, var(--ui-control-inset))
369
+ );
370
+ transition:
371
+ border-color var(--ui-motion-fast) var(--ui-motion-ease),
372
+ box-shadow var(--ui-motion-fast) var(--ui-motion-ease),
373
+ background-color var(--ui-motion-fast) var(--ui-motion-ease);
374
+ }
375
+ :scope:where(:scope)::selection {
376
+ background: color-mix(in srgb, var(--ui-accent-solid) 20%, transparent);
377
+ color: inherit;
378
+ }
379
+
380
+ :scope:where(:scope)::placeholder {
381
+ color: var(--ui-control-placeholder, var(--ui-text-secondary));
382
+ opacity: 1;
383
+ }
452
384
 
453
- [data-component~="ui-textarea"]:is([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])):focus-visible {
454
- box-shadow: var(
455
- --ui-textarea-invalid-focus-shadow,
456
- var(
457
- --_ui-default-textarea-invalid-focus-shadow,
458
- var(--ui-control-inset),
459
- 0 0 0 calc(var(--ui-focus-width) * 1.5) color-mix(
460
- in srgb,
461
- var(
462
- --ui-textarea-invalid-border,
463
- var(--_ui-default-textarea-invalid-border, var(--ui-field-danger, var(--ui-danger-solid)))
464
- ) 22%,
465
- transparent
385
+ :scope:where(:scope):is(:hover:not(:focus):not(:disabled):not(:read-only):not([aria-invalid="true"]):not(:is(:user-invalid, [data-user-invalid]))) {
386
+ border-color: var(
387
+ --ui-textarea-border-hover,
388
+ var(
389
+ --_ui-default-textarea-border-hover,
390
+ var(--ui-control-border-hover, var(--ui-text-secondary))
466
391
  )
467
- )
468
- );
469
- }
392
+ );
393
+ }
470
394
 
471
- [data-component~="ui-textarea"]:disabled {
472
- background: var(--ui-control-surface-disabled, var(--ui-surface-muted));
473
- color: var(--ui-disabled-text);
474
- box-shadow: none;
475
- cursor: not-allowed;
476
- }
395
+ :scope:where(:scope):is(:focus-visible) {
396
+ border-color: var(
397
+ --ui-textarea-focus-border,
398
+ var(--_ui-default-textarea-focus-border, var(--ui-control-focus, var(--ui-accent-solid)))
399
+ );
400
+ outline: var(--ui-textarea-focus-outline, var(--_ui-default-textarea-focus-outline, none));
401
+ box-shadow: var(
402
+ --ui-textarea-focus-shadow,
403
+ var(
404
+ --_ui-default-textarea-focus-shadow,
405
+ var(--ui-control-inset),
406
+ var(--ui-control-focus-halo-shadow)
407
+ )
408
+ );
409
+ }
410
+ :scope:where(:scope):is([aria-invalid="true"]),
411
+ :scope:where(:scope):is(:is(:user-invalid, [data-user-invalid])) {
412
+ border-color: var(
413
+ --ui-textarea-invalid-border,
414
+ var(--_ui-default-textarea-invalid-border, var(--ui-field-danger, var(--ui-danger-solid)))
415
+ );
416
+ }
477
417
 
478
- [data-component~="ui-textarea"][data-ui-textarea-state~="size=sm"] {
479
- --_padding-block: var(--ui-space-1);
480
- padding: var(--ui-space-1) var(--ui-space-2);
481
- padding-inline-end: var(
482
- --ui-textarea-padding-inline-end,
483
- var(--_ui-default-textarea-padding-inline-end, var(--ui-space-2))
484
- );
485
- font-size: var(--ui-font-size-sm);
486
- }
418
+ :scope:where(:scope):is(:is([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])):focus-visible) {
419
+ box-shadow: var(
420
+ --ui-textarea-invalid-focus-shadow,
421
+ var(
422
+ --_ui-default-textarea-invalid-focus-shadow,
423
+ var(--ui-control-inset),
424
+ 0 0 0 calc(var(--ui-focus-width) * 1.5) color-mix(
425
+ in srgb,
426
+ var(
427
+ --ui-textarea-invalid-border,
428
+ var(
429
+ --_ui-default-textarea-invalid-border,
430
+ var(--ui-field-danger, var(--ui-danger-solid))
431
+ )
432
+ ) 22%,
433
+ transparent
434
+ )
435
+ )
436
+ );
437
+ }
487
438
 
488
- [data-component~="ui-textarea"][data-ui-textarea-state~="size=lg"] {
489
- --_padding-block: var(--ui-space-3);
490
- padding: var(--ui-space-3) var(--ui-space-4);
491
- padding-inline-end: var(
492
- --ui-textarea-padding-inline-end,
493
- var(--_ui-default-textarea-padding-inline-end, var(--ui-space-4))
494
- );
495
- font-size: var(--ui-font-size-md);
496
- }
439
+ :scope:where(:scope):is(:disabled) {
440
+ background: var(--ui-control-surface-disabled, var(--ui-surface-muted));
441
+ color: var(--ui-disabled-text);
442
+ box-shadow: none;
443
+ cursor: not-allowed;
444
+ }
497
445
 
498
- [data-component~="ui-textarea"][data-ui-textarea-state~="maxRows"] {
499
- max-block-size: calc(
500
- max(var(--_rows), var(--_max-rows)) * 1lh + var(--_padding-block) + var(--_padding-block) + 2px
501
- );
502
- }
446
+ :scope:where(:scope):is([data-ui-textarea-state~="size=sm"]) {
447
+ --_padding-block: var(--ui-space-1);
448
+ padding: var(--ui-space-1) var(--ui-space-2);
449
+ padding-inline-end: var(
450
+ --ui-textarea-padding-inline-end,
451
+ var(--_ui-default-textarea-padding-inline-end, var(--ui-space-2))
452
+ );
453
+ font-size: var(--ui-font-size-sm);
454
+ }
503
455
 
504
- @supports (field-sizing: content) {
505
- [data-component~="ui-textarea"][data-ui-textarea-state~="autosize"] {
506
- field-sizing: content;
507
- min-block-size: calc(var(--_rows) * 1lh + var(--_padding-block) + var(--_padding-block) + 2px);
456
+ :scope:where(:scope):is([data-ui-textarea-state~="size=lg"]) {
457
+ --_padding-block: var(--ui-space-3);
458
+ padding: var(--ui-space-3) var(--ui-space-4);
459
+ padding-inline-end: var(
460
+ --ui-textarea-padding-inline-end,
461
+ var(--_ui-default-textarea-padding-inline-end, var(--ui-space-4))
462
+ );
463
+ font-size: var(--ui-font-size-md);
508
464
  }
509
- }
510
465
 
511
- /* Below 16px, iOS zooms the page into the focused field, so touch keeps body-size text. */
512
- @media (pointer: coarse) {
513
- [data-component~="ui-textarea"][data-ui-textarea-state~="size=sm"] {
514
- font-size: inherit;
466
+ :scope:where(:scope):is([data-ui-textarea-state~="maxRows"]) {
467
+ max-block-size: calc(
468
+ max(var(--_rows), var(--_max-rows)) * 1lh + var(--_padding-block) + var(--_padding-block) +
469
+ 2px
470
+ );
515
471
  }
516
- }
517
472
 
518
- /* A component that sets its display still honours the hidden attribute on its root. */
519
- [data-component~="ui-textarea"][hidden] {
520
- display: none;
473
+ @supports (field-sizing: content) {
474
+ :scope:where(:scope):is([data-ui-textarea-state~="autosize"]) {
475
+ field-sizing: content;
476
+ min-block-size: calc(
477
+ var(--_rows) * 1lh + var(--_padding-block) + var(--_padding-block) + 2px
478
+ );
479
+ }
480
+ }
481
+ @media (pointer: coarse) {
482
+ :scope:where(:scope):is([data-ui-textarea-state~="size=sm"]) {
483
+ font-size: inherit;
484
+ }
485
+ }
486
+ :scope:where(:scope):is([hidden]) {
487
+ display: none;
488
+ }
521
489
  }
522
490
  </style>
package/vue/UiToast.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
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
+ attribute,
7
+ checkHydratedRoot,
8
+ createDispatch,
9
+ nativeAttrs,
10
+ useComponentHost,
11
+ useReflectedProp,
12
+ } from './host'
6
13
  import { checkedProp, propValidityState, vPropValidity } from './props'
7
14
  import UiIcon from './UiIcon.vue'
8
15
  import UiIconButton from './UiIconButton.vue'
@@ -58,38 +65,7 @@ void checkedProps.value
58
65
  watchSyncEffect(() => {
59
66
  void checkedProps.value
60
67
  })
61
- function nativeAttrs(attrs: Record<string, unknown>): Record<string, unknown> {
62
- const names = Object.keys(attrs)
63
- if (!names.some((name) => Object.hasOwn(Object.prototype, name))) return attrs
64
- return Object.fromEntries(names.map((name) => [
65
- Object.hasOwn(Object.prototype, name)
66
- ? name === '__proto__' ? '__Proto__' : name[0]!.toUpperCase() + name.slice(1)
67
- : name,
68
- attrs[name],
69
- ]))
70
- }
71
- const componentInstance = getCurrentInstance()
72
- function reflectedProp(
73
- name: string,
74
- kebab: string,
75
- value: unknown,
76
- fallback: string | undefined,
77
- bound: boolean,
78
- separator?: string,
79
- ): string | undefined {
80
- const incoming = componentInstance?.vnode.props
81
- if (
82
- !bound
83
- && (incoming === null || incoming === undefined
84
- || (!Object.hasOwn(incoming, name) && !Object.hasOwn(incoming, kebab)))
85
- ) return fallback
86
- if (value === null || value === undefined) return undefined
87
- return Array.isArray(value) && separator !== undefined
88
- ? value.join(separator)
89
- : typeof value === 'object'
90
- ? JSON.stringify(value)
91
- : String(value)
92
- }
68
+ const reflectedProp = useReflectedProp()
93
69
  const hydrationInstance = getCurrentInstance()
94
70
  const emit = defineEmits<{
95
71
  dismiss: [
@@ -105,19 +81,7 @@ const emit = defineEmits<{
105
81
 
106
82
  const root = ref<HTMLElement | null>(null)
107
83
  const actionElement = useTemplateRef<HTMLElement>('actionElement')
108
- const hydrationNode = hydrationInstance?.vnode.el
109
- if (
110
- typeof window !== 'undefined' && hydrationNode != null
111
- && (!(hydrationNode instanceof Element) || hydrationNode.localName !== ('div'))
112
- ) {
113
- throw Object.assign(new Error('HR005: Server markup for <ui-toast> has an incompatible root.'), {
114
- name: 'HtmlDiagnosticError',
115
- diagnostic: Object.freeze({
116
- code: 'HR005',
117
- message: 'Server markup for <ui-toast> has an incompatible root.',
118
- }),
119
- })
120
- }
84
+ checkHydratedRoot('div', 'ui-toast')
121
85
 
122
86
  /** The values the styles' :host-state() rules test. */
123
87
  const hostState = computed(() =>
@@ -163,24 +127,11 @@ useComponentHost(() => import('../components/ui-toast/ui-toast.js'), {
163
127
  propValidityState({ contract: propValidityContract, values: { ...props } }, name),
164
128
  refs: { action: actionElement },
165
129
  })
166
-
167
- function text(value: unknown): string {
168
- if (Array.isArray(value)) return value.map(text).join(' ')
169
- return value === null || value === undefined || typeof value === 'object' ? '' : String(value)
170
- }
171
-
172
- function attribute(value: unknown): any {
173
- if (
174
- value === null || value === undefined || value === false
175
- || (typeof value === 'object' && !Array.isArray(value))
176
- ) return undefined
177
- return value === true ? '' : text(value)
178
- }
179
130
  </script>
180
131
 
181
132
  <template>
182
133
  <div
183
- data-component="ui-toast"
134
+ class="ui-toast"
184
135
  v-bind="nativeAttrs($attrs)"
185
136
  :role="attribute(
186
137
  (({
@@ -200,12 +151,12 @@ function attribute(value: unknown): any {
200
151
  <div class="message"><slot /></div>
201
152
  <div class="action" ref="actionElement"><slot name="action" /></div>
202
153
  <UiIconButton
203
- class="dismiss"
154
+ class="ui-icon-button dismiss"
204
155
  size="sm"
205
156
  variant="ghost"
206
157
  label="Dismiss notification"
207
158
  :round="true"
208
- ><UiIcon name="x" /></UiIconButton>
159
+ ><UiIcon class="ui-icon" name="x" /></UiIconButton>
209
160
  </div>
210
161
  </template>
211
162
 
@@ -231,64 +182,65 @@ function attribute(value: unknown): any {
231
182
  syntax: "*";
232
183
  inherits: false;
233
184
  }
185
+ @scope (.ui-toast) to (.ui-icon-button, .ui-icon) {
186
+ :scope:where(:scope) {
187
+ --_ui-toast-accent: var(--ui-border-strong);
188
+ --_ui-toast-surface: var(--ui-surface-muted);
234
189
 
235
- [data-component~="ui-toast"] {
236
- --_ui-toast-accent: var(--ui-border-strong);
237
- --_ui-toast-surface: var(--ui-surface-muted);
238
-
239
- display: flex;
240
- align-items: center;
241
- gap: var(--ui-space-2);
242
- box-sizing: border-box;
243
- inline-size: 100%;
244
- margin: 0;
245
- padding: var(--ui-space-3) var(--ui-space-4);
246
- /* The close button's internal space supplies the rest of the trailing inset. */
247
- padding-inline-end: var(--ui-space-2);
248
- border: var(--ui-border-width) solid
249
- var(
250
- --ui-toast-border,
251
- var(--ui-overlay-border, var(--ui-toast-accent, var(--_ui-toast-accent)))
190
+ display: flex;
191
+ align-items: center;
192
+ gap: var(--ui-space-2);
193
+ box-sizing: border-box;
194
+ inline-size: 100%;
195
+ margin: 0;
196
+ padding: var(--ui-space-3) var(--ui-space-4);
197
+ /* The close button's internal space supplies the rest of the trailing inset. */
198
+ padding-inline-end: var(--ui-space-2);
199
+ border: var(--ui-border-width) solid
200
+ var(
201
+ --ui-toast-border,
202
+ var(--ui-overlay-border, var(--ui-toast-accent, var(--_ui-toast-accent)))
203
+ );
204
+ border-radius: var(--ui-toast-radius, var(--ui-overlay-radius, var(--ui-radius-lg)));
205
+ background: var(--ui-toast-surface, var(--ui-overlay-surface, var(--_ui-toast-surface)));
206
+ color: var(--ui-text-primary);
207
+ font-family: var(--ui-font-family-sans);
208
+ font-size: var(--ui-font-size-sm);
209
+ font-weight: var(--ui-font-normal);
210
+ line-height: var(--ui-line-height-md);
211
+ box-shadow: var(
212
+ --ui-toast-shadow,
213
+ var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg)))
252
214
  );
253
- border-radius: var(--ui-toast-radius, var(--ui-overlay-radius, var(--ui-radius-lg)));
254
- background: var(--ui-toast-surface, var(--ui-overlay-surface, var(--_ui-toast-surface)));
255
- color: var(--ui-text-primary);
256
- font-family: var(--ui-font-family-sans);
257
- font-size: var(--ui-font-size-sm);
258
- font-weight: var(--ui-font-normal);
259
- line-height: var(--ui-line-height-md);
260
- box-shadow: var(
261
- --ui-toast-shadow,
262
- var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg)))
263
- );
264
- pointer-events: auto;
265
- }
215
+ pointer-events: auto;
216
+ }
266
217
 
267
- [data-component~="ui-toast"][data-ui-toast-state~="tone=info"] {
268
- --_ui-toast-accent: var(--ui-info-solid);
269
- --_ui-toast-surface: var(--ui-info-soft);
270
- }
271
- [data-component~="ui-toast"][data-ui-toast-state~="tone=success"] {
272
- --_ui-toast-accent: var(--ui-success-solid);
273
- --_ui-toast-surface: var(--ui-success-soft);
274
- }
275
- [data-component~="ui-toast"][data-ui-toast-state~="tone=warning"] {
276
- --_ui-toast-accent: var(--ui-warning-solid);
277
- --_ui-toast-surface: var(--ui-warning-soft);
278
- }
279
- [data-component~="ui-toast"][data-ui-toast-state~="tone=danger"] {
280
- --_ui-toast-accent: var(--ui-danger-solid);
281
- --_ui-toast-surface: var(--ui-danger-soft);
282
- }
218
+ :scope:where(:scope):is([data-ui-toast-state~="tone=info"]) {
219
+ --_ui-toast-accent: var(--ui-info-solid);
220
+ --_ui-toast-surface: var(--ui-info-soft);
221
+ }
222
+ :scope:where(:scope):is([data-ui-toast-state~="tone=success"]) {
223
+ --_ui-toast-accent: var(--ui-success-solid);
224
+ --_ui-toast-surface: var(--ui-success-soft);
225
+ }
226
+ :scope:where(:scope):is([data-ui-toast-state~="tone=warning"]) {
227
+ --_ui-toast-accent: var(--ui-warning-solid);
228
+ --_ui-toast-surface: var(--ui-warning-soft);
229
+ }
230
+ :scope:where(:scope):is([data-ui-toast-state~="tone=danger"]) {
231
+ --_ui-toast-accent: var(--ui-danger-solid);
232
+ --_ui-toast-surface: var(--ui-danger-soft);
233
+ }
283
234
 
284
- .message {
285
- min-inline-size: 0;
286
- flex: 1;
287
- }
288
- .action:not(:has(> *)) {
289
- display: none;
290
- }
291
- [data-component~="ui-toast"][hidden] {
292
- display: none;
235
+ .message {
236
+ min-inline-size: 0;
237
+ flex: 1;
238
+ }
239
+ .action:not(:has(> *)) {
240
+ display: none;
241
+ }
242
+ :scope:where(:scope):is([hidden]) {
243
+ display: none;
244
+ }
293
245
  }
294
246
  </style>