@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,19 +1,16 @@
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, useTemplateRef, watchSyncEffect } from 'vue'
15
4
  import type { PropType } from 'vue'
16
- import { createDispatch, useComponentHost } from './host'
5
+ import {
6
+ checkHydratedRoot,
7
+ concat,
8
+ createDispatch,
9
+ isInteger,
10
+ nativeAttrs,
11
+ useComponentHost,
12
+ useReflectedProp,
13
+ } from './host'
17
14
  import { acceptsControllerWrite } from './props'
18
15
  import { checkedProp, propValidityState, vPropValidity } from './props'
19
16
 
@@ -252,38 +249,7 @@ void checkedProps.value
252
249
  watchSyncEffect(() => {
253
250
  void checkedProps.value
254
251
  })
255
- function nativeAttrs(attrs: Record<string, unknown>): Record<string, unknown> {
256
- const names = Object.keys(attrs)
257
- if (!names.some((name) => Object.hasOwn(Object.prototype, name))) return attrs
258
- return Object.fromEntries(names.map((name) => [
259
- Object.hasOwn(Object.prototype, name)
260
- ? name === '__proto__' ? '__Proto__' : name[0]!.toUpperCase() + name.slice(1)
261
- : name,
262
- attrs[name],
263
- ]))
264
- }
265
- const componentInstance = getCurrentInstance()
266
- function reflectedProp(
267
- name: string,
268
- kebab: string,
269
- value: unknown,
270
- fallback: string | undefined,
271
- bound: boolean,
272
- separator?: string,
273
- ): string | undefined {
274
- const incoming = componentInstance?.vnode.props
275
- if (
276
- !bound
277
- && (incoming === null || incoming === undefined
278
- || (!Object.hasOwn(incoming, name) && !Object.hasOwn(incoming, kebab)))
279
- ) return fallback
280
- if (value === null || value === undefined) return undefined
281
- return Array.isArray(value) && separator !== undefined
282
- ? value.join(separator)
283
- : typeof value === 'object'
284
- ? JSON.stringify(value)
285
- : String(value)
286
- }
252
+ const reflectedProp = useReflectedProp()
287
253
  const hydrationInstance = getCurrentInstance()
288
254
  const emit = defineEmits<{
289
255
  highlight: [event: CustomEvent<{ readonly index: number; readonly value: string }>]
@@ -297,38 +263,12 @@ const rows = ref<{ id: string; label: string; detail?: string; initials: string
297
263
  const searching = ref(false)
298
264
  const active = ref(0)
299
265
  const prefix = ref('ui-editor-mention-menu')
300
- let guardedPrevious: any
301
- const guarded = computed(() => {
302
- if (
303
- !(htmlNextAuthoredCheck2(
304
- visible.value == null || typeof visible.value === 'boolean',
305
- 'not $visible:visible',
306
- './components/ui-editor-mention-menu/ui-editor-mention-menu.html: HR007: Reference visible does not satisfy its declared type.',
307
- ))
308
- ) return guardedPrevious
309
- return guardedPrevious = !visible.value
310
- })
311
266
  provide('html-next:ui-editor-mention-menu:visible', visible)
312
267
  provide('html-next:ui-editor-mention-menu:rows', rows)
313
268
  provide('html-next:ui-editor-mention-menu:searching', searching)
314
269
  provide('html-next:ui-editor-mention-menu:active', active)
315
270
  provide('html-next:ui-editor-mention-menu:prefix', prefix)
316
- const hydrationNode = hydrationInstance?.vnode.el
317
- if (
318
- typeof window !== 'undefined' && hydrationNode != null
319
- && (!(hydrationNode instanceof Element) || hydrationNode.localName !== ('div'))
320
- ) {
321
- throw Object.assign(
322
- new Error('HR005: Server markup for <ui-editor-mention-menu> has an incompatible root.'),
323
- {
324
- name: 'HtmlDiagnosticError',
325
- diagnostic: Object.freeze({
326
- code: 'HR005',
327
- message: 'Server markup for <ui-editor-mention-menu> has an incompatible root.',
328
- }),
329
- },
330
- )
331
- }
271
+ checkHydratedRoot('div', 'ui-editor-mention-menu')
332
272
 
333
273
  const isHighlightDetail = (
334
274
  detail: unknown,
@@ -397,33 +337,15 @@ useComponentHost(() => import('../components/ui-editor-mention-menu/ui-editor-me
397
337
  refs: { empty: emptyElement },
398
338
  state: { visible, rows, searching, active, prefix },
399
339
  })
400
-
401
- // A nonempty scalar call cannot produce the invalid-result sentinel.
402
- type ConcatResult<T extends unknown[]> = T extends
403
- [
404
- string | number | boolean | null | undefined,
405
- ...(string | number | boolean | null | undefined)[],
406
- ] ? string | undefined
407
- : string | symbol | undefined
408
- function concat<T extends unknown[]>(...values: T): ConcatResult<T> {
409
- if (values.some(value => value === Symbol.for('html-next.invalid-result'))) {
410
- return Symbol.for('html-next.invalid-result') as ConcatResult<T>
411
- }
412
- if (values.some(value => value === undefined)) return undefined as ConcatResult<T>
413
- if (values.length === 0 || values.some(value => typeof value === 'object' && value !== null)) {
414
- return Symbol.for('html-next.invalid-result') as ConcatResult<T>
415
- }
416
- return values.map(value => value === null ? '' : String(value)).join('') as ConcatResult<T>
417
- }
418
340
  </script>
419
341
 
420
342
  <template>
421
343
  <div
422
- data-component="ui-editor-mention-menu"
344
+ class="ui-editor-mention-menu"
423
345
  role="listbox"
424
346
  v-bind="nativeAttrs($attrs)"
425
347
  :aria-busy="checkedProps.loading ?? undefined"
426
- :hidden="guarded"
348
+ :hidden="!visible"
427
349
  v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
428
350
  :data-anchor-rect="reflectedProp('anchorRect', 'anchor-rect', checkedProps.anchorRect, undefined, false)"
429
351
  :data-items="reflectedProp('items', 'items', checkedProps.items, undefined, false)"
@@ -460,163 +382,152 @@ function concat<T extends unknown[]>(...values: T): ConcatResult<T> {
460
382
  </template>
461
383
 
462
384
  <style scoped>
463
- [data-component~="ui-editor-mention-menu"][popover] {
464
- position: fixed;
465
- inset: auto;
466
- margin: 0;
467
- }
468
-
469
- [data-component~="ui-editor-mention-menu"] {
470
- user-select: none;
471
- }
472
-
473
- [data-component~="ui-editor-mention-menu"] {
474
- display: flex;
475
- overflow: hidden;
476
- flex-direction: column;
477
- background: var(--ui-surface);
478
- border: var(--ui-border-width) solid var(--ui-border-strong);
479
- border-radius: var(--ui-radius-dialog);
480
- box-shadow: var(--ui-shadow-lg, 0 8px 24px rgb(0 0 0 / 0.12));
481
- }
482
-
483
- .header {
484
- display: flex;
485
- align-items: center;
486
- justify-content: space-between;
487
- gap: var(--ui-space-3);
488
- padding: var(--ui-space-2) var(--ui-space-3);
489
- color: var(--ui-text-secondary);
490
- border-bottom: var(--ui-border-width) solid var(--ui-border-divider);
491
- font-size: var(--ui-font-size-xs);
492
- font-weight: var(--ui-font-semibold);
493
- }
494
-
495
- [data-component~="ui-editor-mention-menu"] > .header:empty,
496
- [data-component~="ui-editor-mention-menu"] > .empty:empty {
497
- display: none;
498
- }
499
-
500
- .empty {
501
- padding: var(--ui-space-3);
502
- color: var(--ui-text-muted);
503
- font-size: var(--ui-font-size-sm);
504
- }
505
-
506
- .hint {
507
- overflow: hidden;
508
- color: var(--ui-text-muted);
509
- font-weight: var(--ui-font-normal);
510
- text-overflow: ellipsis;
511
- white-space: nowrap;
512
- }
513
-
514
- .list {
515
- max-height: 280px;
516
- padding: var(--ui-space-1) 0;
517
- margin: 0;
518
- overflow-y: auto;
519
- overscroll-behavior: contain;
520
- list-style: none;
521
- /* Each edge that hides content fades: the scroll fade every Looma scroller uses (see ui-scroll-area). */
522
- --_ui-scroll-fade-direction: to bottom;
523
- --_ui-scroll-fade-size: var(--ui-scroll-fade-size, 24px);
524
- mask-image: linear-gradient(
525
- var(--_ui-scroll-fade-direction),
526
- transparent,
527
- #000 var(--_ui-scroll-fade-start),
528
- #000 calc(100% - var(--_ui-scroll-fade-end)),
529
- transparent
530
- );
531
- animation:
532
- ui-scroll-fade-start linear,
533
- ui-scroll-fade-start-hold linear,
534
- ui-scroll-fade-end-hold linear,
535
- ui-scroll-fade-end linear;
536
- animation-timeline: scroll(self block);
537
- animation-range:
538
- 0 var(--_ui-scroll-fade-size),
539
- var(--_ui-scroll-fade-size) calc(100% + 1px),
540
- -1px calc(100% - var(--_ui-scroll-fade-size)),
541
- calc(100% - var(--_ui-scroll-fade-size)) 100%;
542
- }
543
-
544
- .item {
545
- display: flex;
546
- align-items: center;
547
- min-height: 44px;
548
- padding: var(--ui-space-2) var(--ui-space-3);
549
- gap: var(--ui-space-3);
550
- cursor: pointer;
551
- }
552
-
553
- .item.active {
554
- background: var(--ui-accent-subtle, rgb(59 130 246 / 0.1));
555
- }
556
-
557
385
  /* The highlight and the initials circle share a tint; on the highlighted row the circle takes
558
- the surface and a fine accent ring, so the initials stay visible. */
559
- .item.active .avatar {
560
- background: var(--ui-surface);
561
- box-shadow: inset 0 0 0 1px var(--ui-accent-soft, var(--ui-accent-subtle));
562
- }
563
-
564
- .avatar {
565
- display: inline-flex;
566
- align-items: center;
567
- justify-content: center;
568
- width: 32px;
569
- height: 32px;
570
- flex: 0 0 auto;
571
- color: var(--ui-accent-active, var(--ui-accent-solid));
572
- background: var(--ui-accent-soft, var(--ui-accent-subtle));
573
- border-radius: var(--ui-radius-round);
574
- font-size: var(--ui-font-size-xs);
575
- font-weight: var(--ui-font-semibold);
576
- }
386
+ the surface and a fine accent ring, so the initials stay visible. */
387
+ @scope (.ui-editor-mention-menu) {
388
+ :scope:where(:scope):is([popover]) {
389
+ position: fixed;
390
+ inset: auto;
391
+ margin: 0;
392
+ }
393
+ :scope:where(:scope) {
394
+ user-select: none;
395
+ }
396
+ :scope:where(:scope) {
397
+ display: flex;
398
+ overflow: hidden;
399
+ flex-direction: column;
400
+ background: var(--ui-surface);
401
+ border: var(--ui-border-width) solid var(--ui-border-strong);
402
+ border-radius: var(--ui-radius-dialog);
403
+ box-shadow: var(--ui-shadow-lg, 0 8px 24px rgb(0 0 0 / 0.12));
404
+ }
405
+ .header {
406
+ display: flex;
407
+ align-items: center;
408
+ justify-content: space-between;
409
+ gap: var(--ui-space-3);
410
+ padding: var(--ui-space-2) var(--ui-space-3);
411
+ color: var(--ui-text-secondary);
412
+ border-bottom: var(--ui-border-width) solid var(--ui-border-divider);
413
+ font-size: var(--ui-font-size-xs);
414
+ font-weight: var(--ui-font-semibold);
415
+ }
416
+ :scope > .header:empty, :scope > .empty:empty {
417
+ display: none;
418
+ }
419
+ .empty {
420
+ padding: var(--ui-space-3);
421
+ color: var(--ui-text-muted);
422
+ font-size: var(--ui-font-size-sm);
423
+ }
424
+ .hint {
425
+ overflow: hidden;
426
+ color: var(--ui-text-muted);
427
+ font-weight: var(--ui-font-normal);
428
+ text-overflow: ellipsis;
429
+ white-space: nowrap;
430
+ }
431
+ .list {
432
+ max-height: 280px;
433
+ padding: var(--ui-space-1) 0;
434
+ margin: 0;
435
+ overflow-y: auto;
436
+ overscroll-behavior: contain;
437
+ list-style: none;
438
+ /* Each edge that hides content fades: the scroll fade every Looma scroller uses (see ui-scroll-area). */
439
+ --_ui-scroll-fade-direction: to bottom;
440
+ --_ui-scroll-fade-size: var(--ui-scroll-fade-size, 24px);
441
+ mask-image: linear-gradient(
442
+ var(--_ui-scroll-fade-direction),
443
+ transparent,
444
+ #000 var(--_ui-scroll-fade-start),
445
+ #000 calc(100% - var(--_ui-scroll-fade-end)),
446
+ transparent
447
+ );
448
+ animation:
449
+ ui-scroll-fade-start linear,
450
+ ui-scroll-fade-start-hold linear,
451
+ ui-scroll-fade-end-hold linear,
452
+ ui-scroll-fade-end linear;
453
+ animation-timeline: scroll(self block);
454
+ animation-range:
455
+ 0 var(--_ui-scroll-fade-size),
456
+ var(--_ui-scroll-fade-size) calc(100% + 1px),
457
+ -1px calc(100% - var(--_ui-scroll-fade-size)),
458
+ calc(100% - var(--_ui-scroll-fade-size)) 100%;
459
+ }
460
+ .item {
461
+ display: flex;
462
+ align-items: center;
463
+ min-height: 44px;
464
+ padding: var(--ui-space-2) var(--ui-space-3);
465
+ gap: var(--ui-space-3);
466
+ cursor: pointer;
467
+ }
468
+ .item.active {
469
+ background: var(--ui-accent-subtle, rgb(59 130 246 / 0.1));
470
+ }
471
+ .item.active .avatar {
472
+ background: var(--ui-surface);
473
+ box-shadow: inset 0 0 0 1px var(--ui-accent-soft, var(--ui-accent-subtle));
474
+ }
577
475
 
578
- .body {
579
- display: flex;
580
- min-width: 0;
581
- flex-direction: column;
582
- }
476
+ .avatar {
477
+ display: inline-flex;
478
+ align-items: center;
479
+ justify-content: center;
480
+ width: 32px;
481
+ height: 32px;
482
+ flex: 0 0 auto;
483
+ color: var(--ui-accent-active, var(--ui-accent-solid));
484
+ background: var(--ui-accent-soft, var(--ui-accent-subtle));
485
+ border-radius: var(--ui-radius-round);
486
+ font-size: var(--ui-font-size-xs);
487
+ font-weight: var(--ui-font-semibold);
488
+ }
583
489
 
584
- .label,
585
- .detail {
586
- overflow: hidden;
587
- text-overflow: ellipsis;
588
- white-space: nowrap;
589
- }
490
+ .body {
491
+ display: flex;
492
+ min-width: 0;
493
+ flex-direction: column;
494
+ }
590
495
 
591
- .label {
592
- color: var(--ui-text-primary);
593
- font-size: var(--ui-font-size-sm);
594
- font-weight: var(--ui-font-medium);
595
- }
496
+ .label, .detail {
497
+ overflow: hidden;
498
+ text-overflow: ellipsis;
499
+ white-space: nowrap;
500
+ }
596
501
 
597
- .detail,
598
- .loading {
599
- color: var(--ui-text-muted);
600
- font-size: var(--ui-font-size-xs);
601
- }
502
+ .label {
503
+ color: var(--ui-text-primary);
504
+ font-size: var(--ui-font-size-sm);
505
+ font-weight: var(--ui-font-medium);
506
+ }
602
507
 
603
- .loading {
604
- min-height: 44px;
605
- padding: var(--ui-space-3);
606
- }
508
+ .detail, .loading {
509
+ color: var(--ui-text-muted);
510
+ font-size: var(--ui-font-size-xs);
511
+ }
607
512
 
608
- @media (max-width: 767px) {
609
- [data-component~="ui-editor-mention-menu"] {
610
- border-bottom: 0;
611
- border-radius: var(--ui-radius-dialog) var(--ui-radius-dialog) 0 0;
513
+ .loading {
514
+ min-height: 44px;
515
+ padding: var(--ui-space-3);
612
516
  }
613
517
 
614
- .list {
615
- max-height: calc(60dvh - 48px);
518
+ @media (max-width: 767px) {
519
+ :scope:where(:scope) {
520
+ border-bottom: 0;
521
+ border-radius: var(--ui-radius-dialog) var(--ui-radius-dialog) 0 0;
522
+ }
523
+
524
+ .list {
525
+ max-height: calc(60dvh - 48px);
526
+ }
616
527
  }
617
- }
618
528
 
619
- [data-component~="ui-editor-mention-menu"][hidden] {
620
- display: none;
529
+ :scope:where(:scope):is([hidden]) {
530
+ display: none;
531
+ }
621
532
  }
622
533
  </style>
@@ -1,7 +1,8 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.35 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.51 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
- import { computed, getCurrentInstance, watchSyncEffect } from 'vue'
3
+ import { computed, watchSyncEffect } from 'vue'
4
4
  import type { PropType } from 'vue'
5
+ import { checkHydratedRoot, nativeAttrs, useReflectedProp } from './host'
5
6
  import { checkedProp, vPropValidity } from './props'
6
7
 
7
8
  defineOptions({ inheritAttrs: false })
@@ -65,61 +66,14 @@ void checkedProps.value
65
66
  watchSyncEffect(() => {
66
67
  void checkedProps.value
67
68
  })
68
- function nativeAttrs(attrs: Record<string, unknown>): Record<string, unknown> {
69
- const names = Object.keys(attrs)
70
- if (!names.some((name) => Object.hasOwn(Object.prototype, name))) return attrs
71
- return Object.fromEntries(names.map((name) => [
72
- Object.hasOwn(Object.prototype, name)
73
- ? name === '__proto__' ? '__Proto__' : name[0]!.toUpperCase() + name.slice(1)
74
- : name,
75
- attrs[name],
76
- ]))
77
- }
78
- const componentInstance = getCurrentInstance()
79
- function reflectedProp(
80
- name: string,
81
- kebab: string,
82
- value: unknown,
83
- fallback: string | undefined,
84
- bound: boolean,
85
- separator?: string,
86
- ): string | undefined {
87
- const incoming = componentInstance?.vnode.props
88
- if (
89
- !bound
90
- && (incoming === null || incoming === undefined
91
- || (!Object.hasOwn(incoming, name) && !Object.hasOwn(incoming, kebab)))
92
- ) return fallback
93
- if (value === null || value === undefined) return undefined
94
- return Array.isArray(value) && separator !== undefined
95
- ? value.join(separator)
96
- : typeof value === 'object'
97
- ? JSON.stringify(value)
98
- : String(value)
99
- }
100
- const hydrationInstance = getCurrentInstance()
69
+ const reflectedProp = useReflectedProp()
101
70
 
102
- const hydrationNode = hydrationInstance?.vnode.el
103
- if (
104
- typeof window !== 'undefined' && hydrationNode != null
105
- && (!(hydrationNode instanceof Element) || hydrationNode.localName !== ('li'))
106
- ) {
107
- throw Object.assign(
108
- new Error('HR005: Server markup for <ui-editor-mention-menu-item> has an incompatible root.'),
109
- {
110
- name: 'HtmlDiagnosticError',
111
- diagnostic: Object.freeze({
112
- code: 'HR005',
113
- message: 'Server markup for <ui-editor-mention-menu-item> has an incompatible root.',
114
- }),
115
- },
116
- )
117
- }
71
+ checkHydratedRoot('li', 'ui-editor-mention-menu-item')
118
72
  </script>
119
73
 
120
74
  <template>
121
75
  <li
122
- data-component="ui-editor-mention-menu-item"
76
+ class="ui-editor-mention-menu-item"
123
77
  role="option"
124
78
  tabindex="-1"
125
79
  v-bind="nativeAttrs($attrs)"
@@ -137,71 +91,73 @@ if (
137
91
  </template>
138
92
 
139
93
  <style scoped>
140
- [data-component~="ui-editor-mention-menu-item"] {
141
- display: flex;
142
- align-items: center;
143
- min-block-size: 44px;
144
- padding: var(--ui-space-2) var(--ui-space-3);
145
- gap: var(--ui-space-3);
146
- cursor: pointer;
147
- list-style: none;
148
- }
149
-
150
- [data-component~="ui-editor-mention-menu-item"][aria-selected="true"] {
151
- background: var(--ui-accent-subtle);
152
- }
153
-
154
94
  /* The highlight and the initials circle share a tint; on the highlighted row the circle takes
155
- the surface and a fine accent ring, so the initials stay visible. */
156
- [data-component~="ui-editor-mention-menu-item"][aria-selected="true"] .avatar {
157
- background: var(--ui-surface);
158
- box-shadow: inset 0 0 0 1px var(--ui-accent-soft);
159
- }
95
+ the surface and a fine accent ring, so the initials stay visible. */
160
96
 
161
- /* A slotted Avatar (a person's photo) is its own circle. */
162
- [data-component~="ui-editor-mention-menu-item"] .avatar:has(> [data-component~="ui-avatar"]) {
163
- background: none;
164
- box-shadow: none;
165
- }
97
+ /* A slotted Avatar (a person's photo) is its own circle. Its root carries data-component in HTML
98
+ and its tag as a class in Vue; neither tool lowers a component tag inside :has(). */
166
99
 
167
- .avatar {
168
- display: inline-flex;
169
- align-items: center;
170
- justify-content: center;
171
- inline-size: 32px;
172
- block-size: 32px;
173
- flex: 0 0 auto;
174
- color: var(--ui-accent-active);
175
- background: var(--ui-accent-soft);
176
- border-radius: var(--ui-radius-round);
177
- font-size: var(--ui-font-size-xs);
178
- font-weight: var(--ui-font-semibold);
179
- }
100
+ @scope (.ui-editor-mention-menu-item) {
101
+ :scope:where(:scope) {
102
+ display: flex;
103
+ align-items: center;
104
+ min-block-size: 44px;
105
+ padding: var(--ui-space-2) var(--ui-space-3);
106
+ gap: var(--ui-space-3);
107
+ cursor: pointer;
108
+ list-style: none;
109
+ }
110
+ :scope:where(:scope):is([aria-selected="true"]) {
111
+ background: var(--ui-accent-subtle);
112
+ }
113
+ :scope[aria-selected="true"] .avatar {
114
+ background: var(--ui-surface);
115
+ box-shadow: inset 0 0 0 1px var(--ui-accent-soft);
116
+ }
117
+ :scope .avatar:has(> :is([data-component~="ui-avatar"], .ui-avatar)) {
118
+ background: none;
119
+ box-shadow: none;
120
+ }
180
121
 
181
- .body {
182
- display: flex;
183
- min-inline-size: 0;
184
- flex-direction: column;
185
- }
122
+ .avatar {
123
+ display: inline-flex;
124
+ align-items: center;
125
+ justify-content: center;
126
+ inline-size: 32px;
127
+ block-size: 32px;
128
+ flex: 0 0 auto;
129
+ color: var(--ui-accent-active);
130
+ background: var(--ui-accent-soft);
131
+ border-radius: var(--ui-radius-round);
132
+ font-size: var(--ui-font-size-xs);
133
+ font-weight: var(--ui-font-semibold);
134
+ }
186
135
 
187
- .label, .detail {
188
- overflow: hidden;
189
- text-overflow: ellipsis;
190
- white-space: nowrap;
191
- }
136
+ .body {
137
+ display: flex;
138
+ min-inline-size: 0;
139
+ flex-direction: column;
140
+ }
192
141
 
193
- .label {
194
- color: var(--ui-text-primary);
195
- font-size: var(--ui-font-size-sm);
196
- font-weight: var(--ui-font-medium);
197
- }
142
+ .label, .detail {
143
+ overflow: hidden;
144
+ text-overflow: ellipsis;
145
+ white-space: nowrap;
146
+ }
198
147
 
199
- .detail {
200
- color: var(--ui-text-muted);
201
- font-size: var(--ui-font-size-xs);
202
- }
148
+ .label {
149
+ color: var(--ui-text-primary);
150
+ font-size: var(--ui-font-size-sm);
151
+ font-weight: var(--ui-font-medium);
152
+ }
153
+
154
+ .detail {
155
+ color: var(--ui-text-muted);
156
+ font-size: var(--ui-font-size-xs);
157
+ }
203
158
 
204
- [data-component~="ui-editor-mention-menu-item"][hidden] {
205
- display: none;
159
+ :scope:where(:scope):is([hidden]) {
160
+ display: none;
161
+ }
206
162
  }
207
163
  </style>