@threadlabs/looma 0.28.5 → 0.28.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (453) hide show
  1. package/components/ui-editor-block-actions/ui-editor-block-actions.html +20 -0
  2. package/components/ui-editor-block-actions/ui-editor-block-actions.js +14 -0
  3. package/components/ui-editor-image-toolbar/ui-editor-image-toolbar.html +7 -6
  4. package/components/ui-editor-image-toolbar/ui-editor-image-toolbar.js +2 -1
  5. package/components/ui-editor-link-card/ui-editor-link-card.html +57 -0
  6. package/components/ui-editor-link-card/ui-editor-link-card.js +27 -0
  7. package/components/ui-editor-mention-menu-item/ui-editor-mention-menu-item.html +3 -2
  8. package/dist/index.js +36 -34
  9. package/package.json +3 -2
  10. package/styles/ui-action-bar.css +13 -6
  11. package/styles/ui-affordance-scope.css +12 -5
  12. package/styles/ui-avatar-group.css +17 -10
  13. package/styles/ui-avatar.css +23 -16
  14. package/styles/ui-badge.css +78 -71
  15. package/styles/ui-breadcrumb-item.css +12 -5
  16. package/styles/ui-breadcrumbs.css +10 -3
  17. package/styles/ui-button.css +79 -72
  18. package/styles/ui-callout.css +29 -22
  19. package/styles/ui-card.css +25 -18
  20. package/styles/ui-checkbox.css +45 -37
  21. package/styles/ui-cluster.css +34 -27
  22. package/styles/ui-combobox.css +46 -39
  23. package/styles/ui-container.css +20 -13
  24. package/styles/ui-context-menu.css +17 -10
  25. package/styles/ui-cover.css +12 -5
  26. package/styles/ui-description-item.css +10 -3
  27. package/styles/ui-description-list.css +20 -13
  28. package/styles/ui-dialog.css +44 -35
  29. package/styles/ui-disclosure.css +32 -25
  30. package/styles/ui-editable.css +15 -8
  31. package/styles/ui-editor-block-actions.css +1 -0
  32. package/styles/ui-editor-image-toolbar.css +1 -1
  33. package/styles/ui-editor-insert-table-grid.css +11 -4
  34. package/styles/ui-editor-link-card.css +1 -0
  35. package/styles/ui-editor-mention-menu-item.css +17 -8
  36. package/styles/ui-editor-mention-menu.css +14 -7
  37. package/styles/ui-editor-slash-menu-group.css +10 -3
  38. package/styles/ui-editor-slash-menu-item.css +15 -8
  39. package/styles/ui-editor-slash-menu.css +15 -8
  40. package/styles/ui-editor-surface.css +10 -3
  41. package/styles/ui-editor-table-context-menu.css +17 -10
  42. package/styles/ui-editor-table-overlay.css +17 -10
  43. package/styles/ui-editor-table-toolbar.css +22 -15
  44. package/styles/ui-editor-toolbar.css +18 -11
  45. package/styles/ui-floating-action-button.css +21 -14
  46. package/styles/ui-form-field.css +20 -13
  47. package/styles/ui-grid.css +21 -14
  48. package/styles/ui-icon-button.css +80 -73
  49. package/styles/ui-icon.css +14 -7
  50. package/styles/ui-image.css +25 -18
  51. package/styles/ui-input-group.css +34 -27
  52. package/styles/ui-input.css +42 -35
  53. package/styles/ui-list-item.css +33 -26
  54. package/styles/ui-list.css +22 -15
  55. package/styles/ui-listbox.css +22 -14
  56. package/styles/ui-menu-group.css +10 -3
  57. package/styles/ui-menu-item.css +29 -22
  58. package/styles/ui-menu.css +25 -18
  59. package/styles/ui-meter.css +36 -29
  60. package/styles/ui-nav-item.css +26 -19
  61. package/styles/ui-page-header.css +12 -5
  62. package/styles/ui-popover.css +27 -20
  63. package/styles/ui-radio-group.css +14 -6
  64. package/styles/ui-radio.css +24 -17
  65. package/styles/ui-reel.css +28 -21
  66. package/styles/ui-scroll-area.css +22 -15
  67. package/styles/ui-search-result-row.css +28 -21
  68. package/styles/ui-search-shell.css +24 -17
  69. package/styles/ui-section.css +14 -7
  70. package/styles/ui-select.css +33 -26
  71. package/styles/ui-separator.css +17 -10
  72. package/styles/ui-sidebar.css +35 -28
  73. package/styles/ui-spinner.css +32 -23
  74. package/styles/ui-stack.css +29 -21
  75. package/styles/ui-status-message.css +14 -7
  76. package/styles/ui-switch.css +29 -22
  77. package/styles/ui-switcher.css +27 -20
  78. package/styles/ui-table.css +14 -7
  79. package/styles/ui-tabs.css +24 -17
  80. package/styles/ui-text.css +35 -28
  81. package/styles/ui-textarea.css +37 -30
  82. package/styles/ui-toast-region.css +74 -63
  83. package/styles/ui-toast.css +21 -14
  84. package/styles/ui-tooltip.css +38 -31
  85. package/styles/ui-top-bar.css +19 -12
  86. package/styles/ui-tree-item.css +79 -71
  87. package/styles/ui-tree.css +18 -11
  88. package/vanilla/UiActionBar.d.ts +1 -1
  89. package/vanilla/UiActionBar.js +1 -1
  90. package/vanilla/UiAffordanceScope.d.ts +1 -1
  91. package/vanilla/UiAffordanceScope.js +1 -1
  92. package/vanilla/UiAvatar.d.ts +1 -1
  93. package/vanilla/UiAvatar.js +1 -1
  94. package/vanilla/UiAvatarGroup.d.ts +1 -1
  95. package/vanilla/UiAvatarGroup.js +1 -1
  96. package/vanilla/UiBadge.d.ts +1 -1
  97. package/vanilla/UiBadge.js +1 -1
  98. package/vanilla/UiBreadcrumbItem.d.ts +1 -1
  99. package/vanilla/UiBreadcrumbItem.js +1 -1
  100. package/vanilla/UiBreadcrumbs.d.ts +1 -1
  101. package/vanilla/UiBreadcrumbs.js +1 -1
  102. package/vanilla/UiButton.d.ts +1 -1
  103. package/vanilla/UiButton.js +19 -57
  104. package/vanilla/UiCallout.d.ts +1 -1
  105. package/vanilla/UiCallout.js +25 -73
  106. package/vanilla/UiCard.d.ts +1 -1
  107. package/vanilla/UiCard.js +1 -1
  108. package/vanilla/UiCheckbox.d.ts +1 -1
  109. package/vanilla/UiCheckbox.js +1 -1
  110. package/vanilla/UiCluster.d.ts +1 -1
  111. package/vanilla/UiCluster.js +1 -1
  112. package/vanilla/UiCombobox.d.ts +1 -1
  113. package/vanilla/UiCombobox.js +60 -166
  114. package/vanilla/UiContainer.d.ts +1 -1
  115. package/vanilla/UiContainer.js +1 -1
  116. package/vanilla/UiContextMenu.d.ts +1 -1
  117. package/vanilla/UiContextMenu.js +1 -1
  118. package/vanilla/UiCover.d.ts +1 -1
  119. package/vanilla/UiCover.js +1 -1
  120. package/vanilla/UiDescriptionItem.d.ts +1 -1
  121. package/vanilla/UiDescriptionItem.js +1 -1
  122. package/vanilla/UiDescriptionList.d.ts +1 -1
  123. package/vanilla/UiDescriptionList.js +1 -1
  124. package/vanilla/UiDialog.d.ts +1 -1
  125. package/vanilla/UiDialog.js +4 -10
  126. package/vanilla/UiDisclosure.d.ts +1 -1
  127. package/vanilla/UiDisclosure.js +1 -1
  128. package/vanilla/UiEditable.d.ts +1 -1
  129. package/vanilla/UiEditable.js +7 -19
  130. package/vanilla/UiEditorBlockActions.d.ts +16 -0
  131. package/vanilla/UiEditorBlockActions.js +41 -0
  132. package/vanilla/UiEditorImageToolbar.d.ts +1 -1
  133. package/vanilla/UiEditorImageToolbar.js +2 -2
  134. package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
  135. package/vanilla/UiEditorInsertTableGrid.js +1 -1
  136. package/vanilla/UiEditorLinkCard.d.ts +20 -0
  137. package/vanilla/UiEditorLinkCard.js +153 -0
  138. package/vanilla/UiEditorMentionMenu.d.ts +1 -1
  139. package/vanilla/UiEditorMentionMenu.js +17 -37
  140. package/vanilla/UiEditorMentionMenuItem.d.ts +1 -1
  141. package/vanilla/UiEditorMentionMenuItem.js +4 -10
  142. package/vanilla/UiEditorSlashMenu.d.ts +1 -1
  143. package/vanilla/UiEditorSlashMenu.js +5 -4
  144. package/vanilla/UiEditorSlashMenuGroup.d.ts +1 -1
  145. package/vanilla/UiEditorSlashMenuGroup.js +1 -1
  146. package/vanilla/UiEditorSlashMenuItem.d.ts +1 -1
  147. package/vanilla/UiEditorSlashMenuItem.js +7 -19
  148. package/vanilla/UiEditorSurface.d.ts +1 -1
  149. package/vanilla/UiEditorSurface.js +1 -1
  150. package/vanilla/UiEditorTableContextMenu.d.ts +1 -1
  151. package/vanilla/UiEditorTableContextMenu.js +6 -14
  152. package/vanilla/UiEditorTableOverlay.d.ts +1 -1
  153. package/vanilla/UiEditorTableOverlay.js +9 -25
  154. package/vanilla/UiEditorTableToolbar.d.ts +1 -1
  155. package/vanilla/UiEditorTableToolbar.js +25 -77
  156. package/vanilla/UiEditorToolbar.d.ts +1 -1
  157. package/vanilla/UiEditorToolbar.js +1 -1
  158. package/vanilla/UiFloatingActionButton.d.ts +1 -1
  159. package/vanilla/UiFloatingActionButton.js +1 -1
  160. package/vanilla/UiFormField.d.ts +1 -1
  161. package/vanilla/UiFormField.js +1 -1
  162. package/vanilla/UiGrid.d.ts +1 -1
  163. package/vanilla/UiGrid.js +1 -1
  164. package/vanilla/UiIcon.d.ts +1 -1
  165. package/vanilla/UiIcon.js +15 -47
  166. package/vanilla/UiIconButton.d.ts +1 -1
  167. package/vanilla/UiIconButton.js +4 -10
  168. package/vanilla/UiImage.d.ts +1 -1
  169. package/vanilla/UiImage.js +1 -1
  170. package/vanilla/UiInput.d.ts +1 -1
  171. package/vanilla/UiInput.js +1 -1
  172. package/vanilla/UiInputGroup.d.ts +1 -1
  173. package/vanilla/UiInputGroup.js +1 -1
  174. package/vanilla/UiList.d.ts +1 -1
  175. package/vanilla/UiList.js +1 -1
  176. package/vanilla/UiListItem.d.ts +1 -1
  177. package/vanilla/UiListItem.js +1 -1
  178. package/vanilla/UiListbox.d.ts +1 -1
  179. package/vanilla/UiListbox.js +4 -10
  180. package/vanilla/UiMenu.d.ts +1 -1
  181. package/vanilla/UiMenu.js +1 -1
  182. package/vanilla/UiMenuGroup.d.ts +1 -1
  183. package/vanilla/UiMenuGroup.js +4 -10
  184. package/vanilla/UiMenuItem.d.ts +1 -1
  185. package/vanilla/UiMenuItem.js +4 -10
  186. package/vanilla/UiMeter.d.ts +1 -1
  187. package/vanilla/UiMeter.js +13 -33
  188. package/vanilla/UiNavItem.d.ts +1 -1
  189. package/vanilla/UiNavItem.js +1 -1
  190. package/vanilla/UiPageHeader.d.ts +1 -1
  191. package/vanilla/UiPageHeader.js +1 -1
  192. package/vanilla/UiPopover.d.ts +1 -1
  193. package/vanilla/UiPopover.js +1 -1
  194. package/vanilla/UiRadio.d.ts +1 -1
  195. package/vanilla/UiRadio.js +1 -1
  196. package/vanilla/UiRadioGroup.d.ts +1 -1
  197. package/vanilla/UiRadioGroup.js +1 -1
  198. package/vanilla/UiReel.d.ts +1 -1
  199. package/vanilla/UiReel.js +1 -1
  200. package/vanilla/UiScrollArea.d.ts +1 -1
  201. package/vanilla/UiScrollArea.js +1 -1
  202. package/vanilla/UiSearchResultRow.d.ts +1 -1
  203. package/vanilla/UiSearchResultRow.js +1 -1
  204. package/vanilla/UiSearchShell.d.ts +1 -1
  205. package/vanilla/UiSearchShell.js +1 -1
  206. package/vanilla/UiSection.d.ts +1 -1
  207. package/vanilla/UiSection.js +1 -1
  208. package/vanilla/UiSelect.d.ts +1 -1
  209. package/vanilla/UiSelect.js +1 -1
  210. package/vanilla/UiSeparator.d.ts +1 -1
  211. package/vanilla/UiSeparator.js +1 -1
  212. package/vanilla/UiSidebar.d.ts +1 -1
  213. package/vanilla/UiSidebar.js +1 -1
  214. package/vanilla/UiSpinner.d.ts +1 -1
  215. package/vanilla/UiSpinner.js +1 -1
  216. package/vanilla/UiStack.d.ts +1 -1
  217. package/vanilla/UiStack.js +1 -1
  218. package/vanilla/UiStatusMessage.d.ts +1 -1
  219. package/vanilla/UiStatusMessage.js +1 -1
  220. package/vanilla/UiSwitch.d.ts +1 -1
  221. package/vanilla/UiSwitch.js +1 -1
  222. package/vanilla/UiSwitcher.d.ts +1 -1
  223. package/vanilla/UiSwitcher.js +1 -1
  224. package/vanilla/UiTable.d.ts +1 -1
  225. package/vanilla/UiTable.js +1 -1
  226. package/vanilla/UiTabs.d.ts +1 -1
  227. package/vanilla/UiTabs.js +1 -1
  228. package/vanilla/UiText.d.ts +1 -1
  229. package/vanilla/UiText.js +1 -1
  230. package/vanilla/UiTextarea.d.ts +1 -1
  231. package/vanilla/UiTextarea.js +1 -1
  232. package/vanilla/UiToast.d.ts +1 -1
  233. package/vanilla/UiToast.js +1 -1
  234. package/vanilla/UiToastRegion.d.ts +1 -1
  235. package/vanilla/UiToastRegion.js +1 -1
  236. package/vanilla/UiTooltip.d.ts +1 -1
  237. package/vanilla/UiTooltip.js +1 -1
  238. package/vanilla/UiTopBar.d.ts +1 -1
  239. package/vanilla/UiTopBar.js +1 -1
  240. package/vanilla/UiTree.d.ts +1 -1
  241. package/vanilla/UiTree.js +1 -1
  242. package/vanilla/UiTreeItem.d.ts +1 -1
  243. package/vanilla/UiTreeItem.js +7 -19
  244. package/vanilla/index.js +2 -0
  245. package/vue/UiActionBar.vue +46 -78
  246. package/vue/UiAffordanceScope.vue +27 -66
  247. package/vue/UiAvatar.d.ts +10 -7
  248. package/vue/UiAvatar.vue +100 -218
  249. package/vue/UiAvatarGroup.d.ts +10 -7
  250. package/vue/UiAvatarGroup.vue +78 -160
  251. package/vue/UiBadge.d.ts +1 -1
  252. package/vue/UiBadge.vue +483 -520
  253. package/vue/UiBreadcrumbItem.vue +52 -123
  254. package/vue/UiBreadcrumbs.vue +27 -70
  255. package/vue/UiButton.d.ts +2 -2
  256. package/vue/UiButton.vue +420 -471
  257. package/vue/UiCallout.vue +131 -175
  258. package/vue/UiCard.d.ts +1 -1
  259. package/vue/UiCard.vue +112 -151
  260. package/vue/UiCheckbox.d.ts +13 -10
  261. package/vue/UiCheckbox.vue +160 -221
  262. package/vue/UiCluster.d.ts +1 -1
  263. package/vue/UiCluster.vue +84 -128
  264. package/vue/UiCombobox.d.ts +71 -68
  265. package/vue/UiCombobox.vue +417 -743
  266. package/vue/UiContainer.vue +43 -87
  267. package/vue/UiContextMenu.d.ts +6 -6
  268. package/vue/UiContextMenu.vue +78 -117
  269. package/vue/UiCover.vue +29 -69
  270. package/vue/UiDescriptionItem.vue +39 -82
  271. package/vue/UiDescriptionList.vue +64 -107
  272. package/vue/UiDialog.d.ts +22 -19
  273. package/vue/UiDialog.vue +193 -246
  274. package/vue/UiDisclosure.d.ts +22 -19
  275. package/vue/UiDisclosure.vue +192 -283
  276. package/vue/UiEditable.d.ts +5 -5
  277. package/vue/UiEditable.vue +124 -207
  278. package/vue/UiEditorBlockActions.d.ts +33 -0
  279. package/vue/UiEditorBlockActions.js +2 -0
  280. package/vue/UiEditorBlockActions.vue +125 -0
  281. package/vue/UiEditorImageToolbar.d.ts +2 -2
  282. package/vue/UiEditorImageToolbar.vue +45 -256
  283. package/vue/UiEditorInsertTableGrid.d.ts +2 -2
  284. package/vue/UiEditorInsertTableGrid.vue +98 -266
  285. package/vue/UiEditorLinkCard.d.ts +58 -0
  286. package/vue/UiEditorLinkCard.js +2 -0
  287. package/vue/UiEditorLinkCard.vue +319 -0
  288. package/vue/UiEditorMentionMenu.d.ts +15 -12
  289. package/vue/UiEditorMentionMenu.vue +150 -239
  290. package/vue/UiEditorMentionMenuItem.vue +66 -110
  291. package/vue/UiEditorSlashMenu.d.ts +16 -13
  292. package/vue/UiEditorSlashMenu.vue +172 -253
  293. package/vue/UiEditorSlashMenuGroup.vue +25 -69
  294. package/vue/UiEditorSlashMenuItem.vue +67 -115
  295. package/vue/UiEditorSurface.vue +19 -63
  296. package/vue/UiEditorTableContextMenu.vue +135 -269
  297. package/vue/UiEditorTableOverlay.d.ts +2 -2
  298. package/vue/UiEditorTableOverlay.vue +310 -479
  299. package/vue/UiEditorTableToolbar.d.ts +2 -2
  300. package/vue/UiEditorTableToolbar.vue +182 -357
  301. package/vue/UiEditorToolbar.vue +143 -183
  302. package/vue/UiFloatingActionButton.vue +70 -114
  303. package/vue/UiFormField.d.ts +1 -1
  304. package/vue/UiFormField.vue +76 -117
  305. package/vue/UiGrid.d.ts +1 -1
  306. package/vue/UiGrid.vue +65 -103
  307. package/vue/UiIcon.vue +32 -106
  308. package/vue/UiIconButton.d.ts +2 -2
  309. package/vue/UiIconButton.vue +359 -411
  310. package/vue/UiImage.vue +145 -180
  311. package/vue/UiInput.vue +158 -190
  312. package/vue/UiInputGroup.vue +199 -239
  313. package/vue/UiList.vue +67 -109
  314. package/vue/UiListItem.vue +154 -201
  315. package/vue/UiListbox.d.ts +10 -7
  316. package/vue/UiListbox.vue +86 -260
  317. package/vue/UiMenu.d.ts +11 -11
  318. package/vue/UiMenu.vue +118 -152
  319. package/vue/UiMenuGroup.vue +21 -67
  320. package/vue/UiMenuItem.d.ts +19 -16
  321. package/vue/UiMenuItem.vue +169 -262
  322. package/vue/UiMeter.d.ts +4 -4
  323. package/vue/UiMeter.vue +166 -680
  324. package/vue/UiNavItem.vue +140 -213
  325. package/vue/UiPageHeader.vue +81 -127
  326. package/vue/UiPopover.d.ts +7 -7
  327. package/vue/UiPopover.vue +90 -129
  328. package/vue/UiRadio.d.ts +12 -9
  329. package/vue/UiRadio.vue +91 -149
  330. package/vue/UiRadioGroup.d.ts +2 -2
  331. package/vue/UiRadioGroup.vue +47 -85
  332. package/vue/UiReel.vue +89 -130
  333. package/vue/UiScrollArea.d.ts +1 -1
  334. package/vue/UiScrollArea.vue +78 -119
  335. package/vue/UiSearchResultRow.vue +96 -149
  336. package/vue/UiSearchShell.d.ts +2 -2
  337. package/vue/UiSearchShell.vue +159 -196
  338. package/vue/UiSection.vue +105 -149
  339. package/vue/UiSelect.d.ts +1 -1
  340. package/vue/UiSelect.vue +114 -146
  341. package/vue/UiSeparator.vue +42 -85
  342. package/vue/UiSidebar.d.ts +10 -7
  343. package/vue/UiSidebar.vue +193 -260
  344. package/vue/UiSpinner.vue +54 -130
  345. package/vue/UiStack.vue +66 -107
  346. package/vue/UiStatusMessage.d.ts +1 -1
  347. package/vue/UiStatusMessage.vue +61 -135
  348. package/vue/UiSwitch.d.ts +12 -9
  349. package/vue/UiSwitch.vue +136 -194
  350. package/vue/UiSwitcher.vue +69 -107
  351. package/vue/UiTable.vue +121 -156
  352. package/vue/UiTabs.d.ts +1 -1
  353. package/vue/UiTabs.vue +139 -267
  354. package/vue/UiText.d.ts +4 -4
  355. package/vue/UiText.vue +145 -184
  356. package/vue/UiTextarea.d.ts +2 -2
  357. package/vue/UiTextarea.vue +162 -194
  358. package/vue/UiToast.vue +70 -118
  359. package/vue/UiToastRegion.vue +157 -276
  360. package/vue/UiTooltip.d.ts +21 -18
  361. package/vue/UiTooltip.vue +174 -234
  362. package/vue/UiTopBar.vue +48 -76
  363. package/vue/UiTree.vue +46 -79
  364. package/vue/UiTreeItem.d.ts +18 -15
  365. package/vue/UiTreeItem.vue +526 -668
  366. package/vue/chunks/UiActionBar.js +5 -17
  367. package/vue/chunks/UiAffordanceScope.js +7 -26
  368. package/vue/chunks/UiAvatar.js +20 -74
  369. package/vue/chunks/UiAvatarGroup.js +14 -56
  370. package/vue/chunks/UiBadge.js +10 -28
  371. package/vue/chunks/UiBreadcrumbItem.js +11 -41
  372. package/vue/chunks/UiBreadcrumbs.js +7 -25
  373. package/vue/chunks/UiButton.js +80 -103
  374. package/vue/chunks/UiCallout.js +9 -27
  375. package/vue/chunks/UiCard.js +33 -53
  376. package/vue/chunks/UiCheckbox.js +14 -46
  377. package/vue/chunks/UiCluster.js +13 -31
  378. package/vue/chunks/UiCombobox.js +99 -237
  379. package/vue/chunks/UiContainer.js +9 -27
  380. package/vue/chunks/UiContextMenu.js +7 -26
  381. package/vue/chunks/UiCover.js +7 -25
  382. package/vue/chunks/UiDescriptionItem.js +6 -24
  383. package/vue/chunks/UiDescriptionList.js +9 -27
  384. package/vue/chunks/UiDialog.js +18 -47
  385. package/vue/chunks/UiDisclosure.js +19 -66
  386. package/vue/chunks/UiEditable.js +18 -60
  387. package/vue/chunks/UiEditorBlockActions.js +127 -0
  388. package/vue/chunks/UiEditorImageToolbar.js +40 -127
  389. package/vue/chunks/UiEditorInsertTableGrid.js +14 -112
  390. package/vue/chunks/UiEditorLinkCard.js +356 -0
  391. package/vue/chunks/UiEditorMentionMenu.js +16 -54
  392. package/vue/chunks/UiEditorMentionMenuItem.js +10 -28
  393. package/vue/chunks/UiEditorSlashMenu.js +17 -46
  394. package/vue/chunks/UiEditorSlashMenuGroup.js +7 -25
  395. package/vue/chunks/UiEditorSlashMenuItem.js +16 -31
  396. package/vue/chunks/UiEditorSurface.js +7 -25
  397. package/vue/chunks/UiEditorTableContextMenu.js +25 -102
  398. package/vue/chunks/UiEditorTableOverlay.js +41 -104
  399. package/vue/chunks/UiEditorTableToolbar.js +44 -122
  400. package/vue/chunks/UiEditorToolbar.js +7 -26
  401. package/vue/chunks/UiFloatingActionButton.js +10 -28
  402. package/vue/chunks/UiFormField.js +8 -27
  403. package/vue/chunks/UiGrid.js +10 -28
  404. package/vue/chunks/UiIcon.js +21 -74
  405. package/vue/chunks/UiIconButton.js +18 -50
  406. package/vue/chunks/UiImage.js +14 -33
  407. package/vue/chunks/UiInput.js +12 -31
  408. package/vue/chunks/UiInputGroup.js +10 -29
  409. package/vue/chunks/UiList.js +17 -37
  410. package/vue/chunks/UiListItem.js +12 -30
  411. package/vue/chunks/UiListbox.js +22 -124
  412. package/vue/chunks/UiMenu.js +13 -32
  413. package/vue/chunks/UiMenuGroup.js +8 -26
  414. package/vue/chunks/UiMenuItem.js +35 -80
  415. package/vue/chunks/UiMeter.js +17 -351
  416. package/vue/chunks/UiNavItem.js +23 -57
  417. package/vue/chunks/UiPageHeader.js +7 -25
  418. package/vue/chunks/UiPopover.js +9 -28
  419. package/vue/chunks/UiRadio.js +11 -43
  420. package/vue/chunks/UiRadioGroup.js +13 -32
  421. package/vue/chunks/UiReel.js +10 -28
  422. package/vue/chunks/UiScrollArea.js +10 -29
  423. package/vue/chunks/UiSearchResultRow.js +10 -28
  424. package/vue/chunks/UiSearchShell.js +9 -28
  425. package/vue/chunks/UiSection.js +9 -27
  426. package/vue/chunks/UiSelect.js +10 -29
  427. package/vue/chunks/UiSeparator.js +10 -28
  428. package/vue/chunks/UiSidebar.js +15 -47
  429. package/vue/chunks/UiSpinner.js +8 -44
  430. package/vue/chunks/UiStack.js +12 -30
  431. package/vue/chunks/UiStatusMessage.js +10 -42
  432. package/vue/chunks/UiSwitch.js +11 -43
  433. package/vue/chunks/UiSwitcher.js +9 -28
  434. package/vue/chunks/UiTable.js +7 -26
  435. package/vue/chunks/UiTabs.js +15 -91
  436. package/vue/chunks/UiText.js +148 -168
  437. package/vue/chunks/UiTextarea.js +16 -35
  438. package/vue/chunks/UiToast.js +13 -37
  439. package/vue/chunks/UiToastRegion.js +16 -88
  440. package/vue/chunks/UiTooltip.js +14 -46
  441. package/vue/chunks/UiTopBar.js +5 -17
  442. package/vue/chunks/UiTree.js +13 -32
  443. package/vue/chunks/UiTreeItem.js +34 -90
  444. package/vue/chunks/_plugin-vue_export-helper.js +904 -1
  445. package/vue/chunks/control.js +3 -0
  446. package/vue/chunks/props.js +1 -1
  447. package/vue/components.css +7689 -7617
  448. package/vue/editor/index.js +30 -95
  449. package/vue/editor/primitives.d.ts +8 -2
  450. package/vue/host.ts +999 -14
  451. package/vue/index.d.ts +2 -0
  452. package/vue/index.js +5 -3
  453. package/vue/chunks/host.js +0 -443
@@ -1,8 +1,14 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.35 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.51 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
3
  import { computed, getCurrentInstance, ref, watchSyncEffect } from 'vue'
4
4
  import type { PropType } from 'vue'
5
- import { createDispatch, useComponentHost } from './host'
5
+ import {
6
+ checkHydratedRoot,
7
+ createDispatch,
8
+ nativeAttrs,
9
+ useComponentHost,
10
+ useReflectedProp,
11
+ } from './host'
6
12
  import { checkedProp, propValidityState, vPropValidity } from './props'
7
13
 
8
14
  defineOptions({ inheritAttrs: false })
@@ -111,57 +117,11 @@ void checkedProps.value
111
117
  watchSyncEffect(() => {
112
118
  void checkedProps.value
113
119
  })
114
- function nativeAttrs(attrs: Record<string, unknown>): Record<string, unknown> {
115
- const names = Object.keys(attrs)
116
- if (!names.some((name) => Object.hasOwn(Object.prototype, name))) return attrs
117
- return Object.fromEntries(names.map((name) => [
118
- Object.hasOwn(Object.prototype, name)
119
- ? name === '__proto__' ? '__Proto__' : name[0]!.toUpperCase() + name.slice(1)
120
- : name,
121
- attrs[name],
122
- ]))
123
- }
124
- const componentInstance = getCurrentInstance()
125
- function reflectedProp(
126
- name: string,
127
- kebab: string,
128
- value: unknown,
129
- fallback: string | undefined,
130
- bound: boolean,
131
- separator?: string,
132
- ): string | undefined {
133
- const incoming = componentInstance?.vnode.props
134
- if (
135
- !bound
136
- && (incoming === null || incoming === undefined
137
- || (!Object.hasOwn(incoming, name) && !Object.hasOwn(incoming, kebab)))
138
- ) return fallback
139
- if (value === null || value === undefined) return undefined
140
- return Array.isArray(value) && separator !== undefined
141
- ? value.join(separator)
142
- : typeof value === 'object'
143
- ? JSON.stringify(value)
144
- : String(value)
145
- }
120
+ const reflectedProp = useReflectedProp()
146
121
  const hydrationInstance = getCurrentInstance()
147
122
 
148
123
  const root = ref<HTMLElement | null>(null)
149
- const hydrationNode = hydrationInstance?.vnode.el
150
- if (
151
- typeof window !== 'undefined' && hydrationNode != null
152
- && (!(hydrationNode instanceof Element) || hydrationNode.localName !== ('div'))
153
- ) {
154
- throw Object.assign(
155
- new Error('HR005: Server markup for <ui-input-group> has an incompatible root.'),
156
- {
157
- name: 'HtmlDiagnosticError',
158
- diagnostic: Object.freeze({
159
- code: 'HR005',
160
- message: 'Server markup for <ui-input-group> has an incompatible root.',
161
- }),
162
- },
163
- )
164
- }
124
+ checkHydratedRoot('div', 'ui-input-group')
165
125
 
166
126
  /** The values the styles' :host-state() rules test. */
167
127
  const hostState = computed(() =>
@@ -205,7 +165,7 @@ useComponentHost(() => import('../components/ui-input-group/ui-input-group.js'),
205
165
 
206
166
  <template>
207
167
  <div
208
- data-component="ui-input-group"
168
+ class="ui-input-group"
209
169
  v-bind="nativeAttrs($attrs)"
210
170
  v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
211
171
  :data-action-position="reflectedProp('actionPosition', 'action-position', checkedProps.actionPosition, undefined, false)"
@@ -244,220 +204,220 @@ useComponentHost(() => import('../components/ui-input-group/ui-input-group.js'),
244
204
  whole value is. The action slot takes one button at the end, inside the border, for the one
245
205
  thing the field is for ("Continue" after a site's address), so it reads as the field's action
246
206
  and not the form's. */
247
- [data-component~="ui-input-group"] {
248
- /* The group's own border and height stand for the input's, so the group is a lone Input's height.
249
- Hooks do not inherit, so these are defaults for the input; its own hooks still win. */
250
- --_ui-default-input-border-width: 0;
251
- --_ui-default-input-min-block-size: 0;
252
- --_ui-default-input-border: transparent;
253
- --_ui-default-input-border-hover: transparent;
254
- --_ui-default-input-focus-border: transparent;
255
- --_ui-default-input-invalid-border: transparent;
256
- --_ui-default-input-invalid-focus-shadow: none;
257
- --_ui-default-input-shadow: none;
258
- --_ui-default-input-focus-shadow: none;
259
- --_ui-default-input-focus-outline: none;
260
- --_ui-default-input-radius: 0;
261
- --_ui-default-input-surface: transparent;
262
- --_ui-default-textarea-border-width: 0;
263
- --_ui-default-textarea-border: transparent;
264
- --_ui-default-textarea-border-hover: transparent;
265
- --_ui-default-textarea-focus-border: transparent;
266
- --_ui-default-textarea-invalid-border: transparent;
267
- --_ui-default-textarea-invalid-focus-shadow: none;
268
- --_ui-default-textarea-shadow: none;
269
- --_ui-default-textarea-focus-shadow: none;
270
- --_ui-default-textarea-focus-outline: none;
271
- --_ui-default-textarea-radius: 0;
272
- --_ui-default-textarea-surface: transparent;
273
-
274
- display: flex;
275
- align-items: stretch;
276
- box-sizing: border-box;
277
- inline-size: 100%;
278
- min-inline-size: 0;
279
- min-block-size: var(--ui-control-size-md);
280
- /* The frame reads the shared control tokens with a lone Input's fallbacks, so the two match. */
281
- border: var(--ui-border-width) solid var(--ui-control-border, var(--ui-border-strong));
282
- border-radius: var(--ui-input-group-radius, var(--ui-field-radius, var(--ui-radius-md)));
283
- background: var(--ui-control-surface, var(--ui-surface-elevated));
284
- box-shadow: var(--ui-control-inset);
285
- overflow: hidden;
286
- /* A press anywhere in the frame focuses the input. */
287
- cursor: text;
288
- transition:
289
- border-color var(--ui-motion-fast) var(--ui-motion-ease),
290
- box-shadow var(--ui-motion-fast) var(--ui-motion-ease);
291
- }
292
-
293
- [data-component~="ui-input-group"][data-ui-input-group-state~="variant=subtle"] {
294
- border-color: var(--ui-border);
295
- background: var(--ui-surface-muted);
296
- box-shadow: none;
297
- }
298
207
 
299
208
  /* The frame takes its input's size, so a small group lines up with small buttons and fields. */
300
- [data-component~="ui-input-group"]:has(.field [data-ui-input-state~="size=sm"]) {
301
- min-block-size: var(--ui-control-size-sm);
302
- }
303
209
 
304
- [data-component~="ui-input-group"]:has(.field [data-ui-input-state~="size=lg"]) {
305
- min-block-size: var(--ui-control-size-lg);
306
- }
210
+ /* The ring shows when the field's input would show its own: when it is focus-visible, which a
211
+ text input is for a pointer as well as a keyboard. A focused action button draws its own. */
307
212
 
308
- @media (pointer: coarse) {
309
- [data-component~="ui-input-group"] {
310
- min-block-size: max(var(--ui-control-size-md), var(--ui-control-min-block-size));
311
- }
213
+ /* Forced colors drop box shadows, so the focus ring becomes an outline. */
312
214
 
313
- [data-component~="ui-input-group"]:has(.field [data-ui-input-state~="size=sm"]) {
314
- min-block-size: var(--ui-control-min-block-size);
315
- }
316
- }
215
+ /* Fixed text is part of the value, but should not look editable. */
317
216
 
318
- [data-component~="ui-input-group"]:hover:not(:has(:is(input, textarea):focus, :is(input, textarea):disabled, :is(input, textarea):read-only, [aria-invalid="true"], :is(:user-invalid, [data-user-invalid]))) {
319
- border-color: var(--ui-control-border-hover, var(--ui-text-secondary));
320
- }
217
+ /* Centred rather than padded above and below: the group is exactly a lone Input's height, so a
218
+ small button sits inside it with the difference split evenly, and the field keeps its height. */
321
219
 
322
- /* The ring shows when the field's input would show its own: when it is focus-visible, which a
323
- text input is for a pointer as well as a keyboard. A focused action button draws its own. */
324
- [data-component~="ui-input-group"]:has(.field :is(input, textarea):focus-visible) {
325
- border-color: var(--ui-control-focus, var(--ui-accent-solid));
326
- box-shadow:
327
- var(--ui-control-inset),
328
- var(--ui-control-focus-halo-shadow);
329
- }
220
+ /* Multiline text owns the first row; its action remains inside the same frame below it. */
330
221
 
331
- [data-component~="ui-input-group"]:has([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])) {
332
- border-color: var(
333
- --ui-input-group-invalid-border,
334
- var(--ui-field-danger, var(--ui-danger-solid))
335
- );
336
- }
222
+ /* The same textarea keeps its full resizeable box. Its text reserves the action's live width,
223
+ so a translated label or pending indicator cannot cover what the person types. */
337
224
 
338
- [data-component~="ui-input-group"]:has(:is(input, textarea):is([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])):focus-visible) {
339
- box-shadow: var(
340
- --ui-input-group-invalid-focus-shadow,
341
- var(--ui-control-inset),
342
- 0 0 0 calc(var(--ui-focus-width) * 1.5) color-mix(
343
- in srgb,
344
- var(--ui-input-group-invalid-border, var(--ui-field-danger, var(--ui-danger-solid))) 22%,
345
- transparent
346
- )
347
- );
348
- }
225
+ /* A component that sets its display still honours the hidden attribute on its root. */
349
226
 
350
- /* Forced colors drop box shadows, so the focus ring becomes an outline. */
351
- @media (forced-colors: active) {
352
- [data-component~="ui-input-group"]:has(:is(input, textarea):focus-visible) {
353
- outline: var(--ui-focus-width) solid Highlight;
354
- outline-offset: var(--ui-border-width);
227
+ @scope (.ui-input-group) {
228
+ :scope:where(:scope) {
229
+ /* The group's own border and height stand for the input's, so the group is a lone Input's height.
230
+ Hooks do not inherit, so these are defaults for the input; its own hooks still win. */
231
+ --_ui-default-input-border-width: 0;
232
+ --_ui-default-input-min-block-size: 0;
233
+ --_ui-default-input-border: transparent;
234
+ --_ui-default-input-border-hover: transparent;
235
+ --_ui-default-input-focus-border: transparent;
236
+ --_ui-default-input-invalid-border: transparent;
237
+ --_ui-default-input-invalid-focus-shadow: none;
238
+ --_ui-default-input-shadow: none;
239
+ --_ui-default-input-focus-shadow: none;
240
+ --_ui-default-input-focus-outline: none;
241
+ --_ui-default-input-radius: 0;
242
+ --_ui-default-input-surface: transparent;
243
+ --_ui-default-textarea-border-width: 0;
244
+ --_ui-default-textarea-border: transparent;
245
+ --_ui-default-textarea-border-hover: transparent;
246
+ --_ui-default-textarea-focus-border: transparent;
247
+ --_ui-default-textarea-invalid-border: transparent;
248
+ --_ui-default-textarea-invalid-focus-shadow: none;
249
+ --_ui-default-textarea-shadow: none;
250
+ --_ui-default-textarea-focus-shadow: none;
251
+ --_ui-default-textarea-focus-outline: none;
252
+ --_ui-default-textarea-radius: 0;
253
+ --_ui-default-textarea-surface: transparent;
254
+
255
+ display: flex;
256
+ align-items: stretch;
257
+ box-sizing: border-box;
258
+ inline-size: 100%;
259
+ min-inline-size: 0;
260
+ min-block-size: var(--ui-control-size-md);
261
+ /* The frame reads the shared control tokens with a lone Input's fallbacks, so the two match. */
262
+ border: var(--ui-border-width) solid var(--ui-control-border, var(--ui-border-strong));
263
+ border-radius: var(--ui-input-group-radius, var(--ui-field-radius, var(--ui-radius-md)));
264
+ background: var(--ui-control-surface, var(--ui-surface-elevated));
265
+ box-shadow: var(--ui-control-inset);
266
+ overflow: hidden;
267
+ /* A press anywhere in the frame focuses the input. */
268
+ cursor: text;
269
+ transition:
270
+ border-color var(--ui-motion-fast) var(--ui-motion-ease),
271
+ box-shadow var(--ui-motion-fast) var(--ui-motion-ease);
355
272
  }
356
- }
357
273
 
358
- [data-component~="ui-input-group"][data-ui-input-group-state~="disabled"],
359
- [data-component~="ui-input-group"]:has(:is(input, textarea):disabled) {
360
- background: var(--ui-control-surface-disabled, var(--ui-surface-muted));
361
- box-shadow: none;
362
- cursor: not-allowed;
363
- }
364
-
365
- .field {
366
- display: flex;
367
- flex: 1;
368
- min-inline-size: 0;
369
- }
274
+ :scope:where(:scope):is([data-ui-input-group-state~="variant=subtle"]) {
275
+ border-color: var(--ui-border);
276
+ background: var(--ui-surface-muted);
277
+ box-shadow: none;
278
+ }
279
+ :scope:where(:scope):is(:has(.field [data-ui-input-state~="size=sm"])) {
280
+ min-block-size: var(--ui-control-size-sm);
281
+ }
370
282
 
371
- .affix {
372
- display: inline-flex;
373
- flex: none;
374
- align-items: center;
375
- padding-inline: var(--ui-space-2);
376
- color: var(--ui-text-muted);
377
- font-family: var(--ui-font-family-mono);
378
- font-size: var(--ui-font-size-sm);
379
- white-space: nowrap;
380
- }
283
+ :scope:where(:scope):is(:has(.field [data-ui-input-state~="size=lg"])) {
284
+ min-block-size: var(--ui-control-size-lg);
285
+ }
381
286
 
382
- /* Fixed text is part of the value, but should not look editable. */
383
- .affix:has([slot="prefix"]),
384
- .affix:has([slot="suffix"]) {
385
- background: var(--ui-surface-muted);
386
- }
287
+ @media (pointer: coarse) {
288
+ :scope:where(:scope) {
289
+ min-block-size: max(var(--ui-control-size-md), var(--ui-control-min-block-size));
290
+ }
387
291
 
388
- .affix:has([slot="prefix"]) {
389
- border-inline-end: var(--ui-border-width) solid var(--ui-border-divider);
390
- }
292
+ :scope:where(:scope):is(:has(.field [data-ui-input-state~="size=sm"])) {
293
+ min-block-size: var(--ui-control-min-block-size);
294
+ }
295
+ }
391
296
 
392
- .affix:has([slot="suffix"]) {
393
- border-inline-start: var(--ui-border-width) solid var(--ui-border-divider);
394
- }
297
+ :scope:where(:scope):is(:hover:not(:has(:is(input, textarea):focus, :is(input, textarea):disabled, :is(input, textarea):read-only, [aria-invalid="true"], :is(:user-invalid, [data-user-invalid])))) {
298
+ border-color: var(--ui-control-border-hover, var(--ui-text-secondary));
299
+ }
300
+ :scope:where(:scope):is(:has(.field :is(input, textarea):focus-visible)) {
301
+ border-color: var(--ui-control-focus, var(--ui-accent-solid));
302
+ box-shadow:
303
+ var(--ui-control-inset),
304
+ var(--ui-control-focus-halo-shadow);
305
+ }
395
306
 
396
- [data-component~="ui-input-group"][data-ui-input-group-state~="prefixKind=icon"] {
397
- --_ui-default-input-padding-inline-start: var(--ui-space-2);
398
- }
399
- [data-component~="ui-input-group"][data-ui-input-group-state~="prefixKind=icon"]
400
- .affix:first-child {
401
- padding-inline-end: 0;
402
- border-inline-end: 0;
403
- background: transparent;
404
- }
307
+ :scope:where(:scope):is(:has([aria-invalid="true"], :is(:user-invalid, [data-user-invalid]))) {
308
+ border-color: var(
309
+ --ui-input-group-invalid-border,
310
+ var(--ui-field-danger, var(--ui-danger-solid))
311
+ );
312
+ }
405
313
 
406
- /* Centred rather than padded above and below: the group is exactly a lone Input's height, so a
407
- small button sits inside it with the difference split evenly, and the field keeps its height. */
408
- .action {
409
- display: flex;
410
- flex: none;
411
- align-items: center;
412
- padding-inline: var(--ui-space-1);
413
- }
314
+ :scope:where(:scope):is(:has(:is(input, textarea):is([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])):focus-visible)) {
315
+ box-shadow: var(
316
+ --ui-input-group-invalid-focus-shadow,
317
+ var(--ui-control-inset),
318
+ 0 0 0 calc(var(--ui-focus-width) * 1.5) color-mix(
319
+ in srgb,
320
+ var(--ui-input-group-invalid-border, var(--ui-field-danger, var(--ui-danger-solid))) 22%,
321
+ transparent
322
+ )
323
+ );
324
+ }
325
+ @media (forced-colors: active) {
326
+ :scope:where(:scope):is(:has(:is(input, textarea):focus-visible)) {
327
+ outline: var(--ui-focus-width) solid Highlight;
328
+ outline-offset: var(--ui-border-width);
329
+ }
330
+ }
414
331
 
415
- /* Multiline text owns the first row; its action remains inside the same frame below it. */
416
- [data-component~="ui-input-group"][data-ui-input-group-state~="multiline"] {
417
- display: grid;
418
- grid-template-columns: auto minmax(0, 1fr) auto;
419
- }
332
+ :scope:where(:scope):is([data-ui-input-group-state~="disabled"]),
333
+ :scope:where(:scope):is(:has(:is(input, textarea):disabled)) {
334
+ background: var(--ui-control-surface-disabled, var(--ui-surface-muted));
335
+ box-shadow: none;
336
+ cursor: not-allowed;
337
+ }
420
338
 
421
- [data-component~="ui-input-group"][data-ui-input-group-state~="multiline"] .field {
422
- grid-column: 2;
423
- }
339
+ .field {
340
+ display: flex;
341
+ flex: 1;
342
+ min-inline-size: 0;
343
+ }
424
344
 
425
- [data-component~="ui-input-group"][data-ui-input-group-state~="multiline"] .action {
426
- grid-column: 1 / -1;
427
- justify-content: end;
428
- padding: var(--ui-space-2);
429
- padding-block-start: 0;
430
- }
345
+ .affix {
346
+ display: inline-flex;
347
+ flex: none;
348
+ align-items: center;
349
+ padding-inline: var(--ui-space-2);
350
+ color: var(--ui-text-muted);
351
+ font-family: var(--ui-font-family-mono);
352
+ font-size: var(--ui-font-size-sm);
353
+ white-space: nowrap;
354
+ }
355
+ .affix:has([slot="prefix"]), .affix:has([slot="suffix"]) {
356
+ background: var(--ui-surface-muted);
357
+ }
431
358
 
432
- /* The same textarea keeps its full resizeable box. Its text reserves the action's live width,
433
- so a translated label or pending indicator cannot cover what the person types. */
434
- [data-component~="ui-input-group"][data-ui-input-group-state~="multiline"][data-ui-input-group-state~="actionPosition=top-end"] {
435
- --_ui-default-textarea-padding-inline-end: calc(
436
- var(--_ui-input-group-action-inline-size, 7rem) + var(--ui-space-3)
437
- );
438
- }
359
+ .affix:has([slot="prefix"]) {
360
+ border-inline-end: var(--ui-border-width) solid var(--ui-border-divider);
361
+ }
439
362
 
440
- [data-component~="ui-input-group"][data-ui-input-group-state~="multiline"][data-ui-input-group-state~="actionPosition=top-end"]
441
- .field {
442
- grid-row: 1;
443
- }
363
+ .affix:has([slot="suffix"]) {
364
+ border-inline-start: var(--ui-border-width) solid var(--ui-border-divider);
365
+ }
444
366
 
445
- [data-component~="ui-input-group"][data-ui-input-group-state~="multiline"][data-ui-input-group-state~="actionPosition=top-end"]
367
+ :scope:where(:scope):is([data-ui-input-group-state~="prefixKind=icon"]) {
368
+ --_ui-default-input-padding-inline-start: var(--ui-space-2);
369
+ }
370
+ :scope[data-ui-input-group-state~="prefixKind=icon"] .affix:first-child {
371
+ padding-inline-end: 0;
372
+ border-inline-end: 0;
373
+ background: transparent;
374
+ }
446
375
  .action {
447
- grid-column: 2;
448
- grid-row: 1;
449
- align-self: start;
450
- justify-self: end;
451
- padding: var(--ui-space-2);
452
- }
376
+ display: flex;
377
+ flex: none;
378
+ align-items: center;
379
+ padding-inline: var(--ui-space-1);
380
+ }
381
+ :scope:where(:scope):is([data-ui-input-group-state~="multiline"]) {
382
+ display: grid;
383
+ grid-template-columns: auto minmax(0, 1fr) auto;
384
+ }
453
385
 
454
- .affix:empty,
455
- .action:empty {
456
- display: none;
457
- }
386
+ :scope[data-ui-input-group-state~="multiline"] .field {
387
+ grid-column: 2;
388
+ }
458
389
 
459
- /* A component that sets its display still honours the hidden attribute on its root. */
460
- [data-component~="ui-input-group"][hidden] {
461
- display: none;
390
+ :scope[data-ui-input-group-state~="multiline"] .action {
391
+ grid-column: 1 / -1;
392
+ justify-content: end;
393
+ padding: var(--ui-space-2);
394
+ padding-block-start: 0;
395
+ }
396
+ :scope:where(:scope):is([data-ui-input-group-state~="multiline"][data-ui-input-group-state~="actionPosition=top-end"]) {
397
+ --_ui-default-textarea-padding-inline-end: calc(
398
+ var(--_ui-input-group-action-inline-size, 7rem) + var(--ui-space-3)
399
+ );
400
+ }
401
+
402
+ :scope[data-ui-input-group-state~="multiline"][data-ui-input-group-state~="actionPosition=top-end"]
403
+ .field {
404
+ grid-row: 1;
405
+ }
406
+
407
+ :scope[data-ui-input-group-state~="multiline"][data-ui-input-group-state~="actionPosition=top-end"]
408
+ .action {
409
+ grid-column: 2;
410
+ grid-row: 1;
411
+ align-self: start;
412
+ justify-self: end;
413
+ padding: var(--ui-space-2);
414
+ }
415
+
416
+ .affix:empty, .action:empty {
417
+ display: none;
418
+ }
419
+ :scope:where(:scope):is([hidden]) {
420
+ display: none;
421
+ }
462
422
  }
463
423
  </style>