@threadlabs/looma 0.24.1 → 0.25.0

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 (497) hide show
  1. package/README.md +1 -1
  2. package/components/ui-affordance-scope/ui-affordance-scope.html +1 -1
  3. package/components/ui-affordance-scope/ui-affordance-scope.js +6 -1
  4. package/components/ui-avatar/ui-avatar.html +4 -4
  5. package/components/ui-avatar/ui-avatar.js +6 -1
  6. package/components/ui-avatar-group/ui-avatar-group.html +2 -2
  7. package/components/ui-avatar-group/ui-avatar-group.js +6 -1
  8. package/components/ui-badge/ui-badge.html +30 -30
  9. package/components/ui-breadcrumb-item/ui-breadcrumb-item.html +1 -1
  10. package/components/ui-button/ui-button.html +33 -33
  11. package/components/ui-button/ui-button.js +6 -1
  12. package/components/ui-callout/ui-callout.html +4 -4
  13. package/components/ui-card/ui-card.html +9 -9
  14. package/components/ui-checkbox/ui-checkbox.html +11 -11
  15. package/components/ui-checkbox/ui-checkbox.js +6 -1
  16. package/components/ui-cluster/ui-cluster.html +12 -12
  17. package/components/ui-combobox/ui-combobox.html +15 -17
  18. package/components/ui-combobox/ui-combobox.js +13 -15
  19. package/components/ui-container/ui-container.html +5 -5
  20. package/components/ui-context-menu/ui-context-menu.js +6 -1
  21. package/components/ui-cover/ui-cover.html +1 -1
  22. package/components/ui-description-list/ui-description-list.html +10 -10
  23. package/components/ui-dialog/ui-dialog.html +4 -4
  24. package/components/ui-dialog/ui-dialog.js +6 -1
  25. package/components/ui-disclosure/ui-disclosure.html +13 -13
  26. package/components/ui-disclosure/ui-disclosure.js +6 -1
  27. package/components/ui-editable/ui-editable.html +1 -1
  28. package/components/ui-editable/ui-editable.js +6 -1
  29. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.js +6 -1
  30. package/components/ui-editor-mention-menu/ui-editor-mention-menu.js +6 -1
  31. package/components/ui-editor-slash-menu/ui-editor-slash-menu.js +6 -1
  32. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.js +6 -1
  33. package/components/ui-editor-table-overlay/ui-editor-table-overlay.js +6 -1
  34. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.js +6 -1
  35. package/components/ui-editor-toolbar/ui-editor-toolbar.html +4 -4
  36. package/components/ui-editor-toolbar/ui-editor-toolbar.js +6 -1
  37. package/components/ui-floating-action-button/ui-floating-action-button.html +1 -1
  38. package/components/ui-form-field/ui-form-field.html +1 -1
  39. package/components/ui-form-field/ui-form-field.js +6 -1
  40. package/components/ui-grid/ui-grid.html +7 -7
  41. package/components/ui-icon-button/ui-icon-button.html +26 -26
  42. package/components/ui-icon-button/ui-icon-button.js +6 -1
  43. package/components/ui-image/ui-image.html +11 -11
  44. package/components/ui-image/ui-image.js +6 -1
  45. package/components/ui-input/ui-input.html +9 -7
  46. package/components/ui-input/ui-input.js +6 -1
  47. package/components/ui-input-group/ui-input-group.html +3 -3
  48. package/components/ui-input-group/ui-input-group.js +6 -1
  49. package/components/ui-list/ui-list.html +6 -6
  50. package/components/ui-list-item/ui-list-item.html +8 -8
  51. package/components/ui-listbox/ui-listbox.js +6 -1
  52. package/components/ui-menu/ui-menu.html +3 -3
  53. package/components/ui-menu/ui-menu.js +6 -1
  54. package/components/ui-menu-item/ui-menu-item.html +3 -3
  55. package/components/ui-menu-item/ui-menu-item.js +6 -1
  56. package/components/ui-meter/ui-meter.html +7 -7
  57. package/components/ui-nav-item/ui-nav-item.html +6 -6
  58. package/components/ui-page-header/ui-page-header.html +2 -2
  59. package/components/ui-popover/ui-popover.html +3 -3
  60. package/components/ui-popover/ui-popover.js +6 -1
  61. package/components/ui-radio/ui-radio.html +10 -10
  62. package/components/ui-radio/ui-radio.js +6 -1
  63. package/components/ui-radio-group/ui-radio-group.html +2 -2
  64. package/components/ui-radio-group/ui-radio-group.js +6 -1
  65. package/components/ui-reel/ui-reel.html +11 -11
  66. package/components/ui-scroll-area/ui-scroll-area.html +4 -4
  67. package/components/ui-scroll-area/ui-scroll-area.js +6 -1
  68. package/components/ui-search-result-row/ui-search-result-row.html +5 -5
  69. package/components/ui-search-shell/ui-search-shell.js +6 -1
  70. package/components/ui-section/ui-section.html +4 -4
  71. package/components/ui-select/ui-select.html +3 -3
  72. package/components/ui-select/ui-select.js +6 -1
  73. package/components/ui-separator/ui-separator.html +4 -4
  74. package/components/ui-sidebar/ui-sidebar.html +6 -6
  75. package/components/ui-sidebar/ui-sidebar.js +6 -1
  76. package/components/ui-spinner/ui-spinner.html +1 -1
  77. package/components/ui-stack/ui-stack.html +12 -12
  78. package/components/ui-status-message/ui-status-message.html +4 -4
  79. package/components/ui-switch/ui-switch.html +11 -11
  80. package/components/ui-switch/ui-switch.js +6 -1
  81. package/components/ui-switcher/ui-switcher.html +11 -11
  82. package/components/ui-switcher/ui-switcher.js +6 -1
  83. package/components/ui-table/ui-table.html +2 -2
  84. package/components/ui-table/ui-table.js +6 -1
  85. package/components/ui-tabs/ui-tabs.html +8 -8
  86. package/components/ui-tabs/ui-tabs.js +6 -1
  87. package/components/ui-text/ui-text.html +20 -20
  88. package/components/ui-textarea/ui-textarea.html +4 -4
  89. package/components/ui-textarea/ui-textarea.js +6 -1
  90. package/components/ui-toast/ui-toast.html +4 -4
  91. package/components/ui-toast/ui-toast.js +6 -1
  92. package/components/ui-toast-region/ui-toast-region.html +16 -11
  93. package/components/ui-toast-region/ui-toast-region.js +12 -9
  94. package/components/ui-tooltip/ui-tooltip.html +1 -1
  95. package/components/ui-tooltip/ui-tooltip.js +6 -1
  96. package/components/ui-tree/ui-tree.html +2 -2
  97. package/components/ui-tree/ui-tree.js +6 -1
  98. package/components/ui-tree-item/ui-tree-item.html +4 -4
  99. package/components/ui-tree-item/ui-tree-item.js +6 -1
  100. package/dist/index.js +10 -4
  101. package/package.json +3 -3
  102. package/styles/ui-action-bar.css +1 -1
  103. package/styles/ui-affordance-scope.css +1 -1
  104. package/styles/ui-avatar-group.css +1 -1
  105. package/styles/ui-avatar.css +1 -1
  106. package/styles/ui-badge.css +1 -1
  107. package/styles/ui-breadcrumb-item.css +1 -1
  108. package/styles/ui-breadcrumbs.css +1 -1
  109. package/styles/ui-button.css +1 -1
  110. package/styles/ui-callout.css +1 -1
  111. package/styles/ui-card.css +1 -1
  112. package/styles/ui-checkbox.css +1 -1
  113. package/styles/ui-cluster.css +1 -1
  114. package/styles/ui-combobox.css +1 -1
  115. package/styles/ui-container.css +1 -1
  116. package/styles/ui-context-menu.css +1 -1
  117. package/styles/ui-cover.css +1 -1
  118. package/styles/ui-description-item.css +1 -1
  119. package/styles/ui-description-list.css +1 -1
  120. package/styles/ui-dialog.css +1 -1
  121. package/styles/ui-disclosure.css +2 -2
  122. package/styles/ui-editable.css +1 -1
  123. package/styles/ui-editor-insert-table-grid.css +1 -1
  124. package/styles/ui-editor-mention-menu-item.css +1 -1
  125. package/styles/ui-editor-mention-menu.css +1 -1
  126. package/styles/ui-editor-slash-menu-group.css +1 -1
  127. package/styles/ui-editor-slash-menu-item.css +1 -1
  128. package/styles/ui-editor-slash-menu.css +1 -1
  129. package/styles/ui-editor-table-context-menu.css +1 -1
  130. package/styles/ui-editor-table-overlay.css +1 -1
  131. package/styles/ui-editor-table-toolbar.css +1 -1
  132. package/styles/ui-editor-toolbar.css +1 -1
  133. package/styles/ui-floating-action-button.css +1 -1
  134. package/styles/ui-form-field.css +1 -1
  135. package/styles/ui-grid.css +1 -1
  136. package/styles/ui-icon-button.css +1 -1
  137. package/styles/ui-icon.css +1 -1
  138. package/styles/ui-image.css +1 -1
  139. package/styles/ui-input-group.css +1 -1
  140. package/styles/ui-input.css +1 -1
  141. package/styles/ui-list-item.css +1 -1
  142. package/styles/ui-list.css +1 -1
  143. package/styles/ui-listbox.css +1 -1
  144. package/styles/ui-menu-group.css +1 -1
  145. package/styles/ui-menu-item.css +1 -1
  146. package/styles/ui-menu.css +1 -1
  147. package/styles/ui-meter.css +1 -1
  148. package/styles/ui-nav-item.css +1 -1
  149. package/styles/ui-page-header.css +1 -1
  150. package/styles/ui-popover.css +1 -1
  151. package/styles/ui-radio-group.css +1 -1
  152. package/styles/ui-radio.css +1 -1
  153. package/styles/ui-reel.css +1 -1
  154. package/styles/ui-scroll-area.css +1 -1
  155. package/styles/ui-search-result-row.css +1 -1
  156. package/styles/ui-search-shell.css +1 -1
  157. package/styles/ui-section.css +1 -1
  158. package/styles/ui-select.css +1 -1
  159. package/styles/ui-separator.css +1 -1
  160. package/styles/ui-sidebar.css +2 -2
  161. package/styles/ui-spinner.css +1 -1
  162. package/styles/ui-stack.css +1 -1
  163. package/styles/ui-status-message.css +1 -1
  164. package/styles/ui-switch.css +1 -1
  165. package/styles/ui-switcher.css +1 -1
  166. package/styles/ui-table.css +1 -1
  167. package/styles/ui-tabs.css +1 -1
  168. package/styles/ui-text.css +1 -1
  169. package/styles/ui-textarea.css +1 -1
  170. package/styles/ui-toast-region.css +1 -1
  171. package/styles/ui-toast.css +1 -1
  172. package/styles/ui-tooltip.css +1 -1
  173. package/styles/ui-top-bar.css +1 -1
  174. package/styles/ui-tree-item.css +1 -1
  175. package/styles/ui-tree.css +1 -1
  176. package/vanilla/UiActionBar.d.ts +1 -1
  177. package/vanilla/UiActionBar.js +1 -1
  178. package/vanilla/UiAffordanceScope.d.ts +1 -1
  179. package/vanilla/UiAffordanceScope.js +1 -1
  180. package/vanilla/UiAvatar.d.ts +1 -1
  181. package/vanilla/UiAvatar.js +1 -1
  182. package/vanilla/UiAvatarGroup.d.ts +1 -1
  183. package/vanilla/UiAvatarGroup.js +1 -1
  184. package/vanilla/UiBadge.d.ts +1 -1
  185. package/vanilla/UiBadge.js +1 -1
  186. package/vanilla/UiBreadcrumbItem.d.ts +1 -1
  187. package/vanilla/UiBreadcrumbItem.js +1 -1
  188. package/vanilla/UiBreadcrumbs.d.ts +1 -1
  189. package/vanilla/UiBreadcrumbs.js +1 -1
  190. package/vanilla/UiButton.d.ts +1 -1
  191. package/vanilla/UiButton.js +1 -1
  192. package/vanilla/UiCallout.d.ts +1 -1
  193. package/vanilla/UiCallout.js +1 -1
  194. package/vanilla/UiCard.d.ts +1 -1
  195. package/vanilla/UiCard.js +1 -1
  196. package/vanilla/UiCheckbox.d.ts +1 -1
  197. package/vanilla/UiCheckbox.js +1 -1
  198. package/vanilla/UiCluster.d.ts +1 -1
  199. package/vanilla/UiCluster.js +1 -1
  200. package/vanilla/UiCombobox.d.ts +1 -3
  201. package/vanilla/UiCombobox.js +2 -2
  202. package/vanilla/UiContainer.d.ts +1 -1
  203. package/vanilla/UiContainer.js +1 -1
  204. package/vanilla/UiContextMenu.d.ts +1 -1
  205. package/vanilla/UiContextMenu.js +1 -1
  206. package/vanilla/UiCover.d.ts +1 -1
  207. package/vanilla/UiCover.js +1 -1
  208. package/vanilla/UiDescriptionItem.d.ts +1 -1
  209. package/vanilla/UiDescriptionItem.js +1 -1
  210. package/vanilla/UiDescriptionList.d.ts +1 -1
  211. package/vanilla/UiDescriptionList.js +1 -1
  212. package/vanilla/UiDialog.d.ts +1 -1
  213. package/vanilla/UiDialog.js +1 -1
  214. package/vanilla/UiDisclosure.d.ts +1 -1
  215. package/vanilla/UiDisclosure.js +1 -1
  216. package/vanilla/UiEditable.d.ts +1 -1
  217. package/vanilla/UiEditable.js +1 -1
  218. package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
  219. package/vanilla/UiEditorInsertTableGrid.js +1 -1
  220. package/vanilla/UiEditorMentionMenu.d.ts +1 -1
  221. package/vanilla/UiEditorMentionMenu.js +1 -1
  222. package/vanilla/UiEditorMentionMenuItem.d.ts +1 -1
  223. package/vanilla/UiEditorMentionMenuItem.js +1 -1
  224. package/vanilla/UiEditorSlashMenu.d.ts +1 -1
  225. package/vanilla/UiEditorSlashMenu.js +1 -1
  226. package/vanilla/UiEditorSlashMenuGroup.d.ts +1 -1
  227. package/vanilla/UiEditorSlashMenuGroup.js +1 -1
  228. package/vanilla/UiEditorSlashMenuItem.d.ts +1 -1
  229. package/vanilla/UiEditorSlashMenuItem.js +1 -1
  230. package/vanilla/UiEditorTableContextMenu.d.ts +1 -1
  231. package/vanilla/UiEditorTableContextMenu.js +1 -1
  232. package/vanilla/UiEditorTableOverlay.d.ts +1 -1
  233. package/vanilla/UiEditorTableOverlay.js +1 -1
  234. package/vanilla/UiEditorTableToolbar.d.ts +1 -1
  235. package/vanilla/UiEditorTableToolbar.js +1 -1
  236. package/vanilla/UiEditorToolbar.d.ts +1 -1
  237. package/vanilla/UiEditorToolbar.js +1 -1
  238. package/vanilla/UiFloatingActionButton.d.ts +1 -1
  239. package/vanilla/UiFloatingActionButton.js +1 -1
  240. package/vanilla/UiFormField.d.ts +1 -1
  241. package/vanilla/UiFormField.js +1 -1
  242. package/vanilla/UiGrid.d.ts +1 -1
  243. package/vanilla/UiGrid.js +1 -1
  244. package/vanilla/UiIcon.d.ts +1 -1
  245. package/vanilla/UiIcon.js +1 -1
  246. package/vanilla/UiIconButton.d.ts +1 -1
  247. package/vanilla/UiIconButton.js +1 -1
  248. package/vanilla/UiImage.d.ts +1 -1
  249. package/vanilla/UiImage.js +1 -1
  250. package/vanilla/UiInput.d.ts +4 -4
  251. package/vanilla/UiInput.js +2 -2
  252. package/vanilla/UiInputGroup.d.ts +1 -1
  253. package/vanilla/UiInputGroup.js +1 -1
  254. package/vanilla/UiList.d.ts +1 -1
  255. package/vanilla/UiList.js +1 -1
  256. package/vanilla/UiListItem.d.ts +1 -1
  257. package/vanilla/UiListItem.js +1 -1
  258. package/vanilla/UiListbox.d.ts +1 -1
  259. package/vanilla/UiListbox.js +1 -1
  260. package/vanilla/UiMenu.d.ts +1 -1
  261. package/vanilla/UiMenu.js +1 -1
  262. package/vanilla/UiMenuGroup.d.ts +1 -1
  263. package/vanilla/UiMenuGroup.js +1 -1
  264. package/vanilla/UiMenuItem.d.ts +1 -1
  265. package/vanilla/UiMenuItem.js +1 -1
  266. package/vanilla/UiMeter.d.ts +1 -1
  267. package/vanilla/UiMeter.js +1 -1
  268. package/vanilla/UiNavItem.d.ts +1 -1
  269. package/vanilla/UiNavItem.js +1 -1
  270. package/vanilla/UiPageHeader.d.ts +1 -1
  271. package/vanilla/UiPageHeader.js +1 -1
  272. package/vanilla/UiPopover.d.ts +1 -1
  273. package/vanilla/UiPopover.js +1 -1
  274. package/vanilla/UiRadio.d.ts +1 -1
  275. package/vanilla/UiRadio.js +1 -1
  276. package/vanilla/UiRadioGroup.d.ts +1 -1
  277. package/vanilla/UiRadioGroup.js +1 -1
  278. package/vanilla/UiReel.d.ts +1 -1
  279. package/vanilla/UiReel.js +1 -1
  280. package/vanilla/UiScrollArea.d.ts +1 -1
  281. package/vanilla/UiScrollArea.js +1 -1
  282. package/vanilla/UiSearchResultRow.d.ts +1 -1
  283. package/vanilla/UiSearchResultRow.js +1 -1
  284. package/vanilla/UiSearchShell.d.ts +1 -1
  285. package/vanilla/UiSearchShell.js +1 -1
  286. package/vanilla/UiSection.d.ts +1 -1
  287. package/vanilla/UiSection.js +1 -1
  288. package/vanilla/UiSelect.d.ts +1 -1
  289. package/vanilla/UiSelect.js +1 -1
  290. package/vanilla/UiSeparator.d.ts +1 -1
  291. package/vanilla/UiSeparator.js +1 -1
  292. package/vanilla/UiSidebar.d.ts +1 -1
  293. package/vanilla/UiSidebar.js +1 -1
  294. package/vanilla/UiSpinner.d.ts +1 -1
  295. package/vanilla/UiSpinner.js +1 -1
  296. package/vanilla/UiStack.d.ts +1 -1
  297. package/vanilla/UiStack.js +1 -1
  298. package/vanilla/UiStatusMessage.d.ts +1 -1
  299. package/vanilla/UiStatusMessage.js +1 -1
  300. package/vanilla/UiSwitch.d.ts +1 -1
  301. package/vanilla/UiSwitch.js +1 -1
  302. package/vanilla/UiSwitcher.d.ts +1 -1
  303. package/vanilla/UiSwitcher.js +1 -1
  304. package/vanilla/UiTable.d.ts +1 -1
  305. package/vanilla/UiTable.js +1 -1
  306. package/vanilla/UiTabs.d.ts +1 -1
  307. package/vanilla/UiTabs.js +1 -1
  308. package/vanilla/UiText.d.ts +1 -1
  309. package/vanilla/UiText.js +1 -1
  310. package/vanilla/UiTextarea.d.ts +1 -1
  311. package/vanilla/UiTextarea.js +1 -1
  312. package/vanilla/UiToast.d.ts +1 -1
  313. package/vanilla/UiToast.js +1 -1
  314. package/vanilla/UiToastRegion.d.ts +2 -2
  315. package/vanilla/UiToastRegion.js +2 -2
  316. package/vanilla/UiTooltip.d.ts +1 -1
  317. package/vanilla/UiTooltip.js +1 -1
  318. package/vanilla/UiTopBar.d.ts +1 -1
  319. package/vanilla/UiTopBar.js +1 -1
  320. package/vanilla/UiTree.d.ts +1 -1
  321. package/vanilla/UiTree.js +1 -1
  322. package/vanilla/UiTreeItem.d.ts +1 -1
  323. package/vanilla/UiTreeItem.js +1 -1
  324. package/vue/UiActionBar.vue +1 -1
  325. package/vue/UiAffordanceScope.vue +8 -1
  326. package/vue/UiAvatar.d.ts +6 -9
  327. package/vue/UiAvatar.vue +71 -20
  328. package/vue/UiAvatarGroup.d.ts +7 -10
  329. package/vue/UiAvatarGroup.vue +45 -12
  330. package/vue/UiBadge.vue +1 -1
  331. package/vue/UiBreadcrumbItem.vue +1 -1
  332. package/vue/UiBreadcrumbs.vue +1 -1
  333. package/vue/UiButton.vue +1 -1
  334. package/vue/UiCallout.vue +1 -1
  335. package/vue/UiCard.vue +1 -1
  336. package/vue/UiCheckbox.d.ts +8 -11
  337. package/vue/UiCheckbox.vue +34 -11
  338. package/vue/UiCluster.vue +1 -1
  339. package/vue/UiCombobox.d.ts +60 -66
  340. package/vue/UiCombobox.vue +476 -124
  341. package/vue/UiContainer.vue +1 -1
  342. package/vue/UiContextMenu.vue +18 -9
  343. package/vue/UiCover.vue +1 -1
  344. package/vue/UiDescriptionItem.vue +1 -1
  345. package/vue/UiDescriptionList.vue +1 -1
  346. package/vue/UiDialog.d.ts +8 -11
  347. package/vue/UiDialog.vue +39 -12
  348. package/vue/UiDisclosure.d.ts +12 -15
  349. package/vue/UiDisclosure.vue +70 -24
  350. package/vue/UiEditable.d.ts +3 -3
  351. package/vue/UiEditable.vue +60 -21
  352. package/vue/UiEditorInsertTableGrid.d.ts +2 -2
  353. package/vue/UiEditorInsertTableGrid.vue +75 -14
  354. package/vue/UiEditorMentionMenu.d.ts +10 -13
  355. package/vue/UiEditorMentionMenu.vue +50 -7
  356. package/vue/UiEditorMentionMenuItem.vue +1 -1
  357. package/vue/UiEditorSlashMenu.d.ts +12 -15
  358. package/vue/UiEditorSlashMenu.vue +48 -7
  359. package/vue/UiEditorSlashMenuGroup.vue +1 -1
  360. package/vue/UiEditorSlashMenuItem.vue +1 -1
  361. package/vue/UiEditorTableContextMenu.vue +73 -4
  362. package/vue/UiEditorTableOverlay.d.ts +2 -2
  363. package/vue/UiEditorTableOverlay.vue +202 -38
  364. package/vue/UiEditorTableToolbar.d.ts +2 -2
  365. package/vue/UiEditorTableToolbar.vue +128 -7
  366. package/vue/UiEditorToolbar.vue +3 -3
  367. package/vue/UiFloatingActionButton.vue +1 -1
  368. package/vue/UiFormField.vue +1 -1
  369. package/vue/UiGrid.vue +1 -1
  370. package/vue/UiIcon.vue +1 -1
  371. package/vue/UiIconButton.vue +1 -1
  372. package/vue/UiImage.vue +7 -6
  373. package/vue/UiInput.d.ts +5 -5
  374. package/vue/UiInput.vue +15 -3
  375. package/vue/UiInputGroup.vue +1 -1
  376. package/vue/UiList.vue +1 -1
  377. package/vue/UiListItem.vue +1 -1
  378. package/vue/UiListbox.d.ts +6 -9
  379. package/vue/UiListbox.vue +70 -19
  380. package/vue/UiMenu.vue +20 -10
  381. package/vue/UiMenuGroup.vue +1 -1
  382. package/vue/UiMenuItem.d.ts +13 -16
  383. package/vue/UiMenuItem.vue +30 -7
  384. package/vue/UiMeter.vue +1 -1
  385. package/vue/UiNavItem.vue +1 -1
  386. package/vue/UiPageHeader.vue +1 -1
  387. package/vue/UiPopover.vue +12 -4
  388. package/vue/UiRadio.d.ts +8 -11
  389. package/vue/UiRadio.vue +34 -11
  390. package/vue/UiRadioGroup.vue +16 -7
  391. package/vue/UiReel.vue +1 -1
  392. package/vue/UiScrollArea.vue +3 -3
  393. package/vue/UiSearchResultRow.vue +1 -1
  394. package/vue/UiSearchShell.vue +14 -6
  395. package/vue/UiSection.vue +1 -1
  396. package/vue/UiSelect.vue +3 -2
  397. package/vue/UiSeparator.vue +1 -1
  398. package/vue/UiSidebar.d.ts +7 -10
  399. package/vue/UiSidebar.vue +44 -12
  400. package/vue/UiSpinner.vue +1 -1
  401. package/vue/UiStack.vue +1 -1
  402. package/vue/UiStatusMessage.vue +1 -1
  403. package/vue/UiSwitch.d.ts +8 -11
  404. package/vue/UiSwitch.vue +34 -11
  405. package/vue/UiSwitcher.vue +8 -1
  406. package/vue/UiTable.vue +1 -1
  407. package/vue/UiTabs.vue +30 -8
  408. package/vue/UiText.vue +1 -1
  409. package/vue/UiTextarea.vue +2 -2
  410. package/vue/UiToast.vue +7 -6
  411. package/vue/UiToastRegion.d.ts +15 -3
  412. package/vue/UiToastRegion.vue +90 -45
  413. package/vue/UiTooltip.d.ts +9 -12
  414. package/vue/UiTooltip.vue +30 -7
  415. package/vue/UiTopBar.vue +1 -1
  416. package/vue/UiTree.vue +17 -13
  417. package/vue/UiTreeItem.d.ts +15 -18
  418. package/vue/UiTreeItem.vue +79 -30
  419. package/vue/chunks/UiActionBar.js +1 -1
  420. package/vue/chunks/UiAffordanceScope.js +6 -2
  421. package/vue/chunks/UiAvatar.js +37 -10
  422. package/vue/chunks/UiAvatarGroup.js +26 -7
  423. package/vue/chunks/UiBadge.js +2 -2
  424. package/vue/chunks/UiBreadcrumbItem.js +2 -2
  425. package/vue/chunks/UiBreadcrumbs.js +2 -2
  426. package/vue/chunks/UiButton.js +2 -2
  427. package/vue/chunks/UiCallout.js +2 -2
  428. package/vue/chunks/UiCard.js +2 -2
  429. package/vue/chunks/UiCheckbox.js +25 -12
  430. package/vue/chunks/UiCluster.js +2 -2
  431. package/vue/chunks/UiCombobox.js +628 -117
  432. package/vue/chunks/UiContainer.js +2 -2
  433. package/vue/chunks/UiContextMenu.js +14 -10
  434. package/vue/chunks/UiCover.js +2 -2
  435. package/vue/chunks/UiDescriptionItem.js +2 -2
  436. package/vue/chunks/UiDescriptionList.js +2 -2
  437. package/vue/chunks/UiDialog.js +29 -11
  438. package/vue/chunks/UiDisclosure.js +44 -14
  439. package/vue/chunks/UiEditable.js +33 -9
  440. package/vue/chunks/UiEditorInsertTableGrid.js +98 -14
  441. package/vue/chunks/UiEditorMentionMenu.js +76 -9
  442. package/vue/chunks/UiEditorMentionMenuItem.js +2 -2
  443. package/vue/chunks/UiEditorSlashMenu.js +70 -11
  444. package/vue/chunks/UiEditorSlashMenuGroup.js +2 -2
  445. package/vue/chunks/UiEditorSlashMenuItem.js +2 -2
  446. package/vue/chunks/UiEditorTableContextMenu.js +120 -2
  447. package/vue/chunks/UiEditorTableOverlay.js +306 -12
  448. package/vue/chunks/UiEditorTableToolbar.js +215 -3
  449. package/vue/chunks/UiEditorToolbar.js +8 -8
  450. package/vue/chunks/UiFloatingActionButton.js +2 -2
  451. package/vue/chunks/UiFormField.js +2 -2
  452. package/vue/chunks/UiGrid.js +2 -2
  453. package/vue/chunks/UiIcon.js +2 -2
  454. package/vue/chunks/UiIconButton.js +2 -2
  455. package/vue/chunks/UiImage.js +12 -12
  456. package/vue/chunks/UiInput.js +34 -4
  457. package/vue/chunks/UiInputGroup.js +2 -2
  458. package/vue/chunks/UiList.js +2 -2
  459. package/vue/chunks/UiListItem.js +2 -2
  460. package/vue/chunks/UiListbox.js +96 -12
  461. package/vue/chunks/UiMenu.js +6 -2
  462. package/vue/chunks/UiMenuGroup.js +2 -2
  463. package/vue/chunks/UiMenuItem.js +15 -3
  464. package/vue/chunks/UiMeter.js +2 -2
  465. package/vue/chunks/UiNavItem.js +2 -2
  466. package/vue/chunks/UiPageHeader.js +2 -2
  467. package/vue/chunks/UiPopover.js +6 -2
  468. package/vue/chunks/UiRadio.js +25 -12
  469. package/vue/chunks/UiRadioGroup.js +6 -2
  470. package/vue/chunks/UiReel.js +2 -2
  471. package/vue/chunks/UiScrollArea.js +8 -8
  472. package/vue/chunks/UiSearchResultRow.js +2 -2
  473. package/vue/chunks/UiSearchShell.js +9 -4
  474. package/vue/chunks/UiSection.js +2 -2
  475. package/vue/chunks/UiSelect.js +5 -3
  476. package/vue/chunks/UiSeparator.js +2 -2
  477. package/vue/chunks/UiSidebar.js +28 -5
  478. package/vue/chunks/UiSpinner.js +2 -2
  479. package/vue/chunks/UiStack.js +2 -2
  480. package/vue/chunks/UiStatusMessage.js +2 -2
  481. package/vue/chunks/UiSwitch.js +25 -12
  482. package/vue/chunks/UiSwitcher.js +6 -2
  483. package/vue/chunks/UiTable.js +2 -2
  484. package/vue/chunks/UiTabs.js +39 -10
  485. package/vue/chunks/UiText.js +2 -2
  486. package/vue/chunks/UiTextarea.js +3 -2
  487. package/vue/chunks/UiToast.js +8 -8
  488. package/vue/chunks/UiToastRegion.js +86 -20
  489. package/vue/chunks/UiTooltip.js +15 -3
  490. package/vue/chunks/UiTopBar.js +1 -1
  491. package/vue/chunks/UiTree.js +2 -2
  492. package/vue/chunks/UiTreeItem.js +84 -51
  493. package/vue/chunks/control.js +9 -2
  494. package/vue/chunks/host.js +203 -29
  495. package/vue/chunks/props.js +43 -7
  496. package/vue/components.css +1345 -1345
  497. package/vue/host.ts +286 -42
@@ -66,7 +66,7 @@
66
66
  transition: background-color var(--ui-motion-fast) var(--ui-motion-ease), border-color var(--ui-motion-fast) var(--ui-motion-ease);
67
67
  }
68
68
 
69
- :host-state([variant="card"]) {
69
+ :host([variant="card"]) {
70
70
  padding-block: var(--ui-list-item-padding-block, var(--ui-space-3));
71
71
  padding-inline: var(--ui-list-item-padding-inline, var(--ui-space-4));
72
72
  border: var(--ui-border-width) solid var(--ui-border-strong);
@@ -78,15 +78,15 @@
78
78
  background: var(--ui-surface-hover);
79
79
  }
80
80
 
81
- :host-state([variant="card"]):has(.title a[href]:hover) {
81
+ :host([variant="card"]):has(.title a[href]:hover) {
82
82
  border-color: var(--ui-border-strong);
83
83
  }
84
84
 
85
- :host-state([highlighted]) {
85
+ :host([highlighted]) {
86
86
  background: var(--ui-selection-surface);
87
87
  }
88
88
 
89
- :host-state([current]) {
89
+ :host([current]) {
90
90
  background: var(--ui-selection-surface);
91
91
  color: var(--ui-selection-text);
92
92
  }
@@ -108,7 +108,7 @@
108
108
  font-size: var(--_ui-list-item-icon-size, var(--ui-font-size-lg));
109
109
  }
110
110
 
111
- :host-state([current]) .leading {
111
+ :host([current]) .leading {
112
112
  color: var(--ui-selection-text);
113
113
  }
114
114
 
@@ -137,8 +137,8 @@
137
137
  white-space: nowrap;
138
138
  }
139
139
 
140
- :host-state([wrap]) .title,
141
- :host-state([wrap]) .description {
140
+ :host([wrap]) .title,
141
+ :host([wrap]) .description {
142
142
  white-space: normal;
143
143
  overflow-wrap: anywhere;
144
144
  }
@@ -184,7 +184,7 @@
184
184
  outline: var(--ui-focus-width) solid Highlight;
185
185
  outline-offset: calc(-1 * var(--ui-focus-width));
186
186
  }
187
- :is(:host-state([current]), :host-state([highlighted])):not(:has(a:focus-visible)) {
187
+ :is(:host([current]), :host([highlighted])):not(:has(a:focus-visible)) {
188
188
  outline: var(--ui-border-width) solid Highlight;
189
189
  outline-offset: calc(-1 * var(--ui-border-width));
190
190
  }
@@ -13,7 +13,7 @@ function readOptions(container) {
13
13
  }));
14
14
  }
15
15
 
16
- export default function controller(host) {
16
+ function connect(host) {
17
17
  const element = host.element;
18
18
  const { options: authored, validity } = host.refs;
19
19
  const form = element.closest("form");
@@ -169,3 +169,8 @@ export default function controller(host) {
169
169
  validity.removeEventListener("invalid", onInvalid);
170
170
  };
171
171
  }
172
+
173
+ /** Keep DOM setup and its cleanup tied to each connection, including reconnects. */
174
+ export default function controller(host) {
175
+ host.on("connect", () => connect(host));
176
+ }
@@ -55,7 +55,7 @@
55
55
 
56
56
  /* Compact sets its items' defaults, so nothing has to rescale a global; an item's own hooks
57
57
  still win. */
58
- :host-state([density="compact"]) {
58
+ :host([density="compact"]) {
59
59
  --_ui-default-menu-item-padding-block: var(--ui-space-1);
60
60
  --_ui-default-menu-item-padding-inline: var(--ui-space-2);
61
61
  --_ui-default-menu-item-font-size: var(--ui-font-size-sm);
@@ -65,7 +65,7 @@
65
65
  }
66
66
 
67
67
  /* Small follows its trigger down: an item's own hooks still win. */
68
- :host-state([size="sm"]) {
68
+ :host([size="sm"]) {
69
69
  --_ui-default-menu-item-padding-block: var(--ui-space-0-5);
70
70
  --_ui-default-menu-item-padding-inline: var(--ui-space-2);
71
71
  --_ui-default-menu-item-font-size: var(--ui-font-size-xs);
@@ -126,7 +126,7 @@
126
126
  border-block-start: var(--ui-border-width) solid var(--ui-border-divider);
127
127
  }
128
128
 
129
- :host:not(:host-state([internalOpen])):not(:host-state([inline])) {
129
+ :host:not(:host-state([internalOpen])):not(:host([inline])) {
130
130
  display: none;
131
131
  }
132
132
 
@@ -11,7 +11,7 @@ function disabled(item) {
11
11
  return item.getAttribute("aria-disabled") === "true" || item.hasAttribute("disabled") || item.getAttribute("disabled") === "true";
12
12
  }
13
13
 
14
- export default function controller(host) {
14
+ function connect(host) {
15
15
  const element = host.element;
16
16
  const document = element.ownerDocument;
17
17
  const overlayId = `ui-menu-${Math.random().toString(36).slice(2, 11)}`;
@@ -136,3 +136,8 @@ export default function controller(host) {
136
136
  releaseAnchor();
137
137
  };
138
138
  }
139
+
140
+ /** Keep DOM setup and its cleanup tied to each connection, including reconnects. */
141
+ export default function controller(host) {
142
+ host.on("connect", () => connect(host));
143
+ }
@@ -113,18 +113,18 @@
113
113
  --_ui-default-icon-size: 0.75rem;
114
114
  }
115
115
 
116
- :host-state([type="action"]) .indicator {
116
+ :host([type="action"]) .indicator {
117
117
  display: none;
118
118
  }
119
119
 
120
- :host-state([type="checkbox"])[aria-checked="true"] .indicator {
120
+ :host([type="checkbox"])[aria-checked="true"] .indicator {
121
121
  border-color: var(--ui-accent);
122
122
  background: var(--ui-accent);
123
123
  }
124
124
 
125
125
  /* A menu marks its chosen item with a check, as menus conventionally do; a radio circle reads
126
126
  as a form control. The empty slot keeps unchosen labels aligned with the chosen one. */
127
- :host-state([type="radio"]) .indicator {
127
+ :host([type="radio"]) .indicator {
128
128
  border-color: transparent;
129
129
  color: var(--ui-text-secondary);
130
130
  }
@@ -2,7 +2,7 @@ function radioScope(item) {
2
2
  return item.closest('[role="group"]') ?? item.closest('[role="menu"]');
3
3
  }
4
4
 
5
- export default function controller(host) {
5
+ function connect(host) {
6
6
  const item = host.element;
7
7
  let external = Boolean(host.props.checked.value);
8
8
  host.state.internalChecked = external;
@@ -45,3 +45,8 @@ export default function controller(host) {
45
45
  item.removeEventListener("ui-menu-item-clear", onClear);
46
46
  };
47
47
  }
48
+
49
+ /** Keep DOM setup and its cleanup tied to each connection, including reconnects. */
50
+ export default function controller(host) {
51
+ host.on("connect", () => connect(host));
52
+ }
@@ -61,7 +61,7 @@
61
61
  outline: var(--ui-border-width) solid transparent;
62
62
  }
63
63
 
64
- :host-state([size="sm"]) {
64
+ :host([size="sm"]) {
65
65
  inline-size: var(--ui-meter-inline-size, 5rem);
66
66
  block-size: var(--ui-space-1);
67
67
  }
@@ -74,23 +74,23 @@
74
74
  box-shadow: inset 0 1px rgb(255 255 255 / 0.26), inset 0 -1px rgb(0 0 0 / 0.1);
75
75
  }
76
76
 
77
- :host-state([tone="accent"]) {
77
+ :host([tone="accent"]) {
78
78
  --_meter-fill: var(--ui-accent-solid);
79
79
  }
80
80
 
81
- :host-state([tone="info"]) {
81
+ :host([tone="info"]) {
82
82
  --_meter-fill: var(--ui-info-solid);
83
83
  }
84
84
 
85
- :host-state([tone="success"]) {
85
+ :host([tone="success"]) {
86
86
  --_meter-fill: var(--ui-success-solid);
87
87
  }
88
88
 
89
- :host-state([tone="warning"]) {
89
+ :host([tone="warning"]) {
90
90
  --_meter-fill: var(--ui-warning-solid);
91
91
  }
92
92
 
93
- :host-state([tone="danger"]) {
93
+ :host([tone="danger"]) {
94
94
  --_meter-fill: var(--ui-danger-solid);
95
95
  }
96
96
 
@@ -154,7 +154,7 @@
154
154
  mask-image: repeating-linear-gradient(to right, #000 0 var(--_meter-segment), transparent 0 var(--_meter-period));
155
155
  }
156
156
 
157
- :host-state([size="sm"])[data-ui-meter-segments] {
157
+ :host([size="sm"])[data-ui-meter-segments] {
158
158
  --_meter-gap: var(--ui-space-0-5);
159
159
  }
160
160
 
@@ -113,7 +113,7 @@
113
113
  color: var(--ui-selection-text);
114
114
  }
115
115
 
116
- :host-state([variant="line"]) {
116
+ :host([variant="line"]) {
117
117
  border-radius: 0;
118
118
  }
119
119
 
@@ -130,14 +130,14 @@
130
130
  border-inline-start: var(--_indicator-width) solid var(--_indicator-color);
131
131
  }
132
132
 
133
- :host-state([variant="line"])[aria-current] .indicator {
133
+ :host([variant="line"])[aria-current] .indicator {
134
134
  display: block;
135
135
  }
136
136
 
137
137
  @media (forced-colors: active) {
138
138
  /* System colors may erase the selected fill. Trace the complete surface, without
139
139
  creating an edge stripe; the stronger keyboard focus outline keeps precedence. */
140
- :host-state([variant="surface"])[aria-current]:not(:focus-visible) {
140
+ :host([variant="surface"])[aria-current]:not(:focus-visible) {
141
141
  outline: var(--ui-border-width) solid Highlight;
142
142
  outline-offset: calc(-1 * var(--ui-border-width));
143
143
  }
@@ -186,17 +186,17 @@
186
186
  line-height: var(--ui-line-height-tight);
187
187
  }
188
188
 
189
- :host-state([density="compact"]) {
189
+ :host([density="compact"]) {
190
190
  min-block-size: var(--ui-nav-compact-min-block-size);
191
191
  padding-block: var(--ui-nav-compact-padding-block);
192
192
  padding-inline: var(--ui-nav-compact-padding-inline);
193
193
  }
194
- :host-state([density="compact"]) .label {
194
+ :host([density="compact"]) .label {
195
195
  font-size: var(--ui-font-size-sm);
196
196
  }
197
197
 
198
198
  @media (pointer: coarse) {
199
- :host-state([density="compact"]) {
199
+ :host([density="compact"]) {
200
200
  min-block-size: var(--ui-control-min-block-size);
201
201
  }
202
202
  }
@@ -73,12 +73,12 @@
73
73
  gap: var(--ui-space-2);
74
74
  }
75
75
 
76
- :host-state([align="center"]) {
76
+ :host([align="center"]) {
77
77
  flex-direction: column;
78
78
  text-align: center;
79
79
  }
80
80
 
81
- :host-state([align="center"]) .copy {
81
+ :host([align="center"]) .copy {
82
82
  align-items: center;
83
83
  flex-basis: auto;
84
84
  }
@@ -122,15 +122,15 @@
122
122
  }
123
123
  }
124
124
 
125
- :host-state([size="sm"]) {
125
+ :host([size="sm"]) {
126
126
  inline-size: min(22rem, calc(100vw - var(--ui-space-2) * 2));
127
127
  max-inline-size: min(22rem, calc(100vw - var(--ui-space-2) * 2));
128
128
  }
129
- :host-state([size="md"]) {
129
+ :host([size="md"]) {
130
130
  inline-size: min(28rem, calc(100vw - var(--ui-space-2) * 2));
131
131
  max-inline-size: min(28rem, calc(100vw - var(--ui-space-2) * 2));
132
132
  }
133
- :host-state([size="lg"]) {
133
+ :host([size="lg"]) {
134
134
  inline-size: min(36rem, calc(100vw - var(--ui-space-2) * 2));
135
135
  max-inline-size: min(36rem, calc(100vw - var(--ui-space-2) * 2));
136
136
  }
@@ -1,6 +1,6 @@
1
1
  import { closeOverlay, createAnchoredSurface, createIdResolver, openOverlay, requestTopOverlayClose } from "../shared/overlay.js";
2
2
 
3
- export default function controller(host) {
3
+ function connect(host) {
4
4
  const element = host.element;
5
5
  const document = element.ownerDocument;
6
6
  const offset = () => {
@@ -98,3 +98,8 @@ export default function controller(host) {
98
98
  releaseAnchor();
99
99
  };
100
100
  }
101
+
102
+ /** Keep DOM setup and its cleanup tied to each connection, including reconnects. */
103
+ export default function controller(host) {
104
+ host.on("connect", () => connect(host));
105
+ }
@@ -90,44 +90,44 @@
90
90
  outline-offset: var(--ui-focus-width);
91
91
  }
92
92
 
93
- :host-state([disabled]) {
93
+ :host([disabled]) {
94
94
  color: var(--ui-disabled-text);
95
95
  cursor: not-allowed;
96
96
  }
97
- :host-state([disabled]) .description {
97
+ :host([disabled]) .description {
98
98
  color: var(--ui-disabled-text);
99
99
  }
100
- :host-state([disabled]) input {
100
+ :host([disabled]) input {
101
101
  cursor: not-allowed;
102
102
  }
103
103
 
104
104
  /* A sized choice keeps its box and aligns instead: the label takes that size's field type size,
105
105
  and the first line centres in that control height, so the label shares a row's baseline.
106
106
  Multi-line labels and descriptions still grow downward from that first line. */
107
- :host-state([size="sm"]) {
107
+ :host([size="sm"]) {
108
108
  --_font: var(--ui-font-size-sm);
109
109
  --_row: var(--ui-control-size-sm);
110
110
  }
111
111
 
112
- :host-state([size="lg"]) {
112
+ :host([size="lg"]) {
113
113
  --_font: var(--ui-font-size-md);
114
114
  --_row: var(--ui-control-size-lg);
115
115
  }
116
116
 
117
- :host-state([size="sm"]),
118
- :host-state([size="lg"]) {
117
+ :host([size="sm"]),
118
+ :host([size="lg"]) {
119
119
  --_line: calc(var(--_font) * var(--ui-line-height-md));
120
120
  font-size: var(--_font);
121
121
  padding-block: calc((var(--_row) - var(--_line)) / 2);
122
122
  }
123
123
 
124
- :host-state([size="sm"]) input,
125
- :host-state([size="lg"]) input {
124
+ :host([size="sm"]) input,
125
+ :host([size="lg"]) input {
126
126
  margin-top: calc((var(--_line) - var(--_ui-radio-size, 1.125rem)) / 2 + 1px);
127
127
  }
128
128
 
129
129
  @media (pointer: coarse) {
130
- :host-state([size="sm"]) {
130
+ :host([size="sm"]) {
131
131
  --_row: var(--ui-control-min-block-size);
132
132
  }
133
133
  }
@@ -6,7 +6,7 @@ import { trackTrigger } from "../shared/trigger.js";
6
6
  // `checked` sets the control initially and whenever it changes; the user's changes update the state.
7
7
  // A form reset returns the control to `checked`. Vue writes the checked attribute on every render, so
8
8
  // the native default alone cannot hold it there.
9
- export default function controller(host) {
9
+ function connect(host) {
10
10
  const input = host.refs.input;
11
11
  describeInput(input, host.refs.description);
12
12
  const [trigger, stopTracking] = trackTrigger(host);
@@ -40,3 +40,8 @@ export default function controller(host) {
40
40
  input.removeEventListener("change", onChange);
41
41
  };
42
42
  }
43
+
44
+ /** Keep DOM setup and its cleanup tied to each connection, including reconnects. */
45
+ export default function controller(host) {
46
+ host.on("connect", () => connect(host));
47
+ }
@@ -64,11 +64,11 @@
64
64
  clear: both;
65
65
  }
66
66
 
67
- :host-state([invalid]) legend {
67
+ :host([invalid]) legend {
68
68
  color: var(--_ui-radio-group-invalid-text);
69
69
  }
70
70
 
71
- :host-state([orientation="vertical"]) {
71
+ :host([orientation="vertical"]) {
72
72
  display: inline-grid;
73
73
  justify-items: start;
74
74
  }
@@ -7,7 +7,7 @@ let groups = 0;
7
7
  // Native radios that share a name already move and check with the arrow keys. The group gives its
8
8
  // radios that name, applies a controlled value, and reports the user's choice. Its fieldset disables
9
9
  // them, so a radio's own disabled is never overwritten.
10
- export default function controller(host) {
10
+ function connect(host) {
11
11
  const element = host.element;
12
12
  const name = String(host.props.name.value || `ui-radio-group-${++groups}`);
13
13
  const [trigger, stopTracking] = trackTrigger(host);
@@ -60,3 +60,8 @@ export default function controller(host) {
60
60
  element.removeEventListener("change", onChange);
61
61
  };
62
62
  }
63
+
64
+ /** Keep DOM setup and its cleanup tied to each connection, including reconnects. */
65
+ export default function controller(host) {
66
+ host.on("connect", () => connect(host));
67
+ }
@@ -68,37 +68,37 @@
68
68
  flex: 0 0 var(--_ui-reel-item-width, var(--_reel-item-width));
69
69
  }
70
70
 
71
- :host-state([gap="xs"]) {
71
+ :host([gap="xs"]) {
72
72
  --_reel-gap: var(--ui-space-2);
73
73
  }
74
- :host-state([gap="s"]) {
74
+ :host([gap="s"]) {
75
75
  --_reel-gap: var(--ui-space-3);
76
76
  }
77
- :host-state([gap="m"]) {
77
+ :host([gap="m"]) {
78
78
  --_reel-gap: var(--ui-space-4);
79
79
  }
80
- :host-state([gap="l"]) {
80
+ :host([gap="l"]) {
81
81
  --_reel-gap: var(--ui-space-5);
82
82
  }
83
- :host-state([gap="xl"]) {
83
+ :host([gap="xl"]) {
84
84
  --_reel-gap: var(--ui-space-6);
85
85
  }
86
- :host-state([itemWidth="sm"]) {
86
+ :host([itemWidth="sm"]) {
87
87
  --_reel-item-width: 12rem;
88
88
  }
89
- :host-state([itemWidth="md"]) {
89
+ :host([itemWidth="md"]) {
90
90
  --_reel-item-width: 16rem;
91
91
  }
92
- :host-state([itemWidth="lg"]) {
92
+ :host([itemWidth="lg"]) {
93
93
  --_reel-item-width: 20rem;
94
94
  }
95
- :host-state([snap]) {
95
+ :host([snap]) {
96
96
  scroll-snap-type: inline mandatory;
97
97
  }
98
- :host-state([snap="start"]) > :slotted(*) {
98
+ :host([snap="start"]) > :slotted(*) {
99
99
  scroll-snap-align: start;
100
100
  }
101
- :host-state([snap="center"]) > :slotted(*) {
101
+ :host([snap="center"]) > :slotted(*) {
102
102
  scroll-snap-align: center;
103
103
  }
104
104
 
@@ -36,7 +36,7 @@
36
36
  display: flow-root;
37
37
  }
38
38
 
39
- :host-state([orientation="horizontal"]) {
39
+ :host([orientation="horizontal"]) {
40
40
  overflow-x: auto;
41
41
  overflow-y: hidden;
42
42
  --_ui-scroll-fade-direction: var(--_ui-scroll-fade-inline);
@@ -46,13 +46,13 @@
46
46
  --_ui-scroll-fade-inline: to left;
47
47
  }
48
48
 
49
- :host-state([size="sm"]) {
49
+ :host([size="sm"]) {
50
50
  max-block-size: calc(9.375rem + var(--ui-scroll-fade-size, 24px));
51
51
  }
52
- :host-state([size="md"]) {
52
+ :host([size="md"]) {
53
53
  max-block-size: 20rem;
54
54
  }
55
- :host-state([size="lg"]) {
55
+ :host([size="lg"]) {
56
56
  max-block-size: 30rem;
57
57
  }
58
58
 
@@ -1,4 +1,4 @@
1
- export default function controller(host) {
1
+ function connect(host) {
2
2
  const area = host.element;
3
3
  let frame = 0;
4
4
 
@@ -30,3 +30,8 @@ export default function controller(host) {
30
30
  if (frame) cancelAnimationFrame(frame);
31
31
  };
32
32
  }
33
+
34
+ /** Keep DOM setup and its cleanup tied to each connection, including reconnects. */
35
+ export default function controller(host) {
36
+ host.on("connect", () => connect(host));
37
+ }
@@ -71,7 +71,7 @@
71
71
  transition: background-color var(--ui-motion-fast) var(--ui-motion-ease);
72
72
  }
73
73
 
74
- :host-state([density="compact"]) {
74
+ :host([density="compact"]) {
75
75
  min-block-size: var(--ui-search-result-row-min-height, 3.125rem);
76
76
  padding-block: var(--ui-search-result-row-padding-block, var(--ui-space-1));
77
77
  padding-inline: var(--ui-search-result-row-padding-inline, var(--ui-space-2));
@@ -81,12 +81,12 @@
81
81
  }
82
82
 
83
83
  /* Slot wrappers own their line boxes even when an app makes buttons inherit body typography. */
84
- :host-state([density="compact"]) .title {
84
+ :host([density="compact"]) .title {
85
85
  font-size: var(--ui-font-size-sm);
86
86
  line-height: var(--ui-line-height);
87
87
  }
88
88
 
89
- :host-state([density="compact"]) .meta {
89
+ :host([density="compact"]) .meta {
90
90
  font-size: var(--ui-font-size-xs);
91
91
  line-height: var(--ui-line-height);
92
92
  }
@@ -95,7 +95,7 @@
95
95
  background: var(--ui-search-result-row-hover-surface, color-mix(in srgb, var(--ui-surface) 85%, black 3%));
96
96
  }
97
97
 
98
- :host-state([selected]) {
98
+ :host([selected]) {
99
99
  background: var(
100
100
  --ui-search-result-row-selected-bg,
101
101
  var(--ui-selection-surface)
@@ -151,7 +151,7 @@
151
151
  }
152
152
 
153
153
  @media (forced-colors: active) {
154
- :host-state([selected]):not(:focus-visible):not(:disabled) {
154
+ :host([selected]):not(:focus-visible):not(:disabled) {
155
155
  outline: var(--ui-border-width) solid Highlight;
156
156
  outline-offset: calc(-1 * var(--ui-border-width));
157
157
  }
@@ -2,7 +2,7 @@ import { closeOverlay, openOverlay } from "../shared/overlay.js";
2
2
  import { trackTrigger } from "../shared/trigger.js";
3
3
 
4
4
  /** Owns native dialog state while leaving query and result state to the application. */
5
- export default function controller(host) {
5
+ function connect(host) {
6
6
  const dialog = host.refs.dialog;
7
7
  const document = dialog.ownerDocument;
8
8
  const overlayId = `ui-search-shell-${Math.random().toString(36).slice(2, 11)}`;
@@ -95,3 +95,8 @@ export default function controller(host) {
95
95
  closeOverlay(document, overlayId);
96
96
  };
97
97
  }
98
+
99
+ /** Keep DOM setup and its cleanup tied to each connection, including reconnects. */
100
+ export default function controller(host) {
101
+ host.on("connect", () => connect(host));
102
+ }
@@ -28,19 +28,19 @@
28
28
  min-inline-size: 0;
29
29
  }
30
30
 
31
- :host-state([variant="card"]) {
31
+ :host([variant="card"]) {
32
32
  padding: var(--ui-space-5);
33
33
  border: var(--ui-border-width) solid var(--ui-border-strong);
34
34
  border-radius: var(--ui-radius-lg);
35
35
  background: var(--ui-surface-raised);
36
36
  }
37
37
 
38
- :host-state([variant="divided"]) {
38
+ :host([variant="divided"]) {
39
39
  padding-block-start: var(--ui-space-6);
40
40
  border-block-start: var(--ui-border-width) solid var(--ui-border-divider);
41
41
  }
42
42
 
43
- :host-state([variant="card"][tone="danger"]) {
43
+ :host([variant="card"][tone="danger"]) {
44
44
  border-color: color-mix(in srgb, var(--ui-danger) 45%, var(--ui-border-default));
45
45
  border-inline-start: var(--ui-accent-line-width) solid var(--ui-danger);
46
46
  background: var(--ui-danger-soft);
@@ -70,7 +70,7 @@
70
70
  line-height: var(--ui-line-height-tight);
71
71
  }
72
72
 
73
- :host-state([tone="danger"]) .heading {
73
+ :host([tone="danger"]) .heading {
74
74
  color: var(--ui-danger);
75
75
  }
76
76
 
@@ -127,7 +127,7 @@
127
127
  cursor: not-allowed;
128
128
  }
129
129
 
130
- :host-state([size="sm"]) {
130
+ :host([size="sm"]) {
131
131
  min-block-size: var(--ui-control-size-sm);
132
132
  padding: var(--ui-space-1) var(--ui-space-2);
133
133
  padding-inline-end: calc(var(--ui-space-2) + var(--ui-icon-size-sm) + var(--ui-space-1));
@@ -136,7 +136,7 @@
136
136
  font-size: var(--ui-font-size-sm);
137
137
  }
138
138
 
139
- :host-state([size="lg"]) {
139
+ :host([size="lg"]) {
140
140
  min-block-size: var(--ui-control-size-lg);
141
141
  padding: var(--ui-space-3) var(--ui-space-4);
142
142
  padding-inline-end: calc(var(--ui-space-4) + 1.5rem);
@@ -147,7 +147,7 @@
147
147
  /* Under touch a small field is still a touch-sized target, as a small button is, and keeps
148
148
  body-size text: below 16px, iOS zooms the page into the focused field. */
149
149
  @media (pointer: coarse) {
150
- :host-state([size="sm"]) {
150
+ :host([size="sm"]) {
151
151
  min-block-size: var(--ui-control-min-block-size);
152
152
  font-size: inherit;
153
153
  }
@@ -1,7 +1,7 @@
1
1
  // A controlled value can arrive before its projected <option> elements, so it is applied again
2
2
  // whenever the options change. The value's option is also marked the native default, so a form
3
3
  // reset returns to it rather than to the first option.
4
- export default function controller(host) {
4
+ function connect(host) {
5
5
  const select = host.element;
6
6
  const apply = () => {
7
7
  const value = host.props.value.value;
@@ -17,3 +17,8 @@ export default function controller(host) {
17
17
  observer.disconnect();
18
18
  };
19
19
  }
20
+
21
+ /** Keep DOM setup and its cleanup tied to each connection, including reconnects. */
22
+ export default function controller(host) {
23
+ host.on("connect", () => connect(host));
24
+ }