@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
@@ -1,7 +1,7 @@
1
1
  import { normalizeAnchor, positionMenu } from "../shared/editor.js";
2
2
 
3
3
  // Places the menu at the @ and derives its rows; the template renders them.
4
- export default function controller(host) {
4
+ function connect(host) {
5
5
  const element = host.element;
6
6
  const authoredLabel = element.hasAttribute("aria-label") || element.hasAttribute("aria-labelledby");
7
7
  const place = () => {
@@ -70,3 +70,8 @@ export default function controller(host) {
70
70
  window.visualViewport?.removeEventListener("scroll", place);
71
71
  };
72
72
  }
73
+
74
+ /** Keep DOM setup and its cleanup tied to each connection, including reconnects. */
75
+ export default function controller(host) {
76
+ host.on("connect", () => connect(host));
77
+ }
@@ -1,7 +1,7 @@
1
1
  import { normalizeAnchor, positionMenu } from "../shared/editor.js";
2
2
 
3
3
  // Places the menu at the slash and tracks the highlighted item; the template renders the items.
4
- export default function controller(host) {
4
+ function connect(host) {
5
5
  const element = host.element;
6
6
  const authoredLabel = element.hasAttribute("aria-label") || element.hasAttribute("aria-labelledby");
7
7
  const place = () => {
@@ -76,3 +76,8 @@ export default function controller(host) {
76
76
  window.visualViewport?.removeEventListener("scroll", place);
77
77
  };
78
78
  }
79
+
80
+ /** Keep DOM setup and its cleanup tied to each connection, including reconnects. */
81
+ export default function controller(host) {
82
+ host.on("connect", () => connect(host));
83
+ }
@@ -26,7 +26,7 @@ const sections = [
26
26
  ];
27
27
 
28
28
  // Lists the actions the selection permits, and nudges the open menu back inside the viewport.
29
- export default function controller(host) {
29
+ function connect(host) {
30
30
  const element = host.element;
31
31
  let frame;
32
32
  const nudge = () => {
@@ -81,3 +81,8 @@ export default function controller(host) {
81
81
  if (frame) cancelAnimationFrame(frame);
82
82
  };
83
83
  }
84
+
85
+ /** Keep DOM setup and its cleanup tied to each connection, including reconnects. */
86
+ export default function controller(host) {
87
+ host.on("connect", () => connect(host));
88
+ }
@@ -49,7 +49,7 @@ function createProximity(scope, selector = ".handle[data-ui-affordance]", radius
49
49
  } };
50
50
  }
51
51
 
52
- export default function controller(host) {
52
+ function connect(host) {
53
53
  const element = host.element;
54
54
  const proximity = createProximity(element);
55
55
  let drag = null;
@@ -175,3 +175,8 @@ export default function controller(host) {
175
175
  element.removeEventListener("focusout", leave);
176
176
  };
177
177
  }
178
+
179
+ /** Keep DOM setup and its cleanup tied to each connection, including reconnects. */
180
+ export default function controller(host) {
181
+ host.on("connect", () => connect(host));
182
+ }
@@ -7,7 +7,7 @@ const overflowSections = [
7
7
  ];
8
8
 
9
9
  // Lists the actions the table selection permits; the overflow menu opens and closes here.
10
- export default function controller(host) {
10
+ function connect(host) {
11
11
  const element = host.element;
12
12
  const positionMenu = () => {
13
13
  const button = element.querySelector(".more");
@@ -81,3 +81,8 @@ export default function controller(host) {
81
81
  window.visualViewport?.removeEventListener("resize", positionMenu);
82
82
  };
83
83
  }
84
+
85
+ /** Keep DOM setup and its cleanup tied to each connection, including reconnects. */
86
+ export default function controller(host) {
87
+ host.on("connect", () => connect(host));
88
+ }
@@ -72,7 +72,7 @@
72
72
  margin: 0 var(--ui-editor-toolbar-divider-margin, 4px);
73
73
  }
74
74
 
75
- :host-state([floating]) {
75
+ :host([floating]) {
76
76
  position: relative;
77
77
  top: auto;
78
78
  width: max-content;
@@ -99,7 +99,7 @@
99
99
  box-shadow: var(--ui-editor-toolbar-mobile-shadow, 0 -2px 8px rgb(0 0 0 / 0.06));
100
100
  }
101
101
 
102
- :host-state([floating]) {
102
+ :host([floating]) {
103
103
  position: relative;
104
104
  inset: auto;
105
105
  min-height: auto;
@@ -119,7 +119,7 @@
119
119
  }
120
120
 
121
121
  /* Inside LoomaEditor's mobile shell, the toolbar is a scroll-snapping strip. */
122
- .looma-editor__mobile-toolbar-shell :host-state([floating]) {
122
+ .looma-editor__mobile-toolbar-shell :host([floating]) {
123
123
  width: 100%;
124
124
  max-width: none;
125
125
  min-height: 100%;
@@ -131,7 +131,7 @@
131
131
  backdrop-filter: none;
132
132
  }
133
133
 
134
- .looma-editor__mobile-toolbar-shell :host-state([floating]) .strip {
134
+ .looma-editor__mobile-toolbar-shell :host([floating]) .strip {
135
135
  scroll-snap-type: x mandatory;
136
136
  }
137
137
 
@@ -1,7 +1,7 @@
1
1
  const selector = 'button, a[href], [role="button"], select, input:not([type="hidden"])';
2
2
 
3
3
  /** Keep one Tab stop in the toolbar; arrow keys move among its enabled authored controls. */
4
- export default function controller(host) {
4
+ function connect(host) {
5
5
  const strip = host.refs.strip;
6
6
  let current = null;
7
7
  const controls = () => Array.from(strip.querySelectorAll(selector)).filter((element) =>
@@ -44,3 +44,8 @@ export default function controller(host) {
44
44
  strip.removeEventListener("keydown", onKeydown);
45
45
  };
46
46
  }
47
+
48
+ /** Keep DOM setup and its cleanup tied to each connection, including reconnects. */
49
+ export default function controller(host) {
50
+ host.on("connect", () => connect(host));
51
+ }
@@ -82,7 +82,7 @@
82
82
  }
83
83
 
84
84
  @media (min-width: 768px) {
85
- :host-state([mobileOnly]) {
85
+ :host([mobileOnly]) {
86
86
  display: none;
87
87
  }
88
88
  }
@@ -112,7 +112,7 @@
112
112
  display: none;
113
113
  }
114
114
 
115
- :host-state([invalid]) .error {
115
+ :host([invalid]) .error {
116
116
  display: contents;
117
117
  }
118
118
 
@@ -11,7 +11,7 @@ function descriptionIds(input) {
11
11
  return Array.from(new Set((input.getAttribute("aria-describedby") ?? "").split(/\s+/).filter(Boolean)));
12
12
  }
13
13
 
14
- export default function controller(host) {
14
+ function connect(host) {
15
15
  const element = host.element;
16
16
  let activeInput = null;
17
17
  let owned = new Set();
@@ -74,3 +74,8 @@ export default function controller(host) {
74
74
  removeOwned(activeInput);
75
75
  };
76
76
  }
77
+
78
+ /** Keep DOM setup and its cleanup tied to each connection, including reconnects. */
79
+ export default function controller(host) {
80
+ host.on("connect", () => connect(host));
81
+ }
@@ -45,25 +45,25 @@
45
45
  margin: 0;
46
46
  }
47
47
 
48
- :host-state([gap="xs"]) {
48
+ :host([gap="xs"]) {
49
49
  --_grid-gap: var(--ui-space-2);
50
50
  }
51
- :host-state([gap="s"]) {
51
+ :host([gap="s"]) {
52
52
  --_grid-gap: var(--ui-space-3);
53
53
  }
54
- :host-state([gap="m"]) {
54
+ :host([gap="m"]) {
55
55
  --_grid-gap: var(--ui-space-4);
56
56
  }
57
- :host-state([gap="l"]) {
57
+ :host([gap="l"]) {
58
58
  --_grid-gap: var(--ui-space-5);
59
59
  }
60
- :host-state([gap="xl"]) {
60
+ :host([gap="xl"]) {
61
61
  --_grid-gap: var(--ui-space-6);
62
62
  }
63
- :host-state([min="md"]) {
63
+ :host([min="md"]) {
64
64
  --_grid-min: 16rem;
65
65
  }
66
- :host-state([min="lg"]) {
66
+ :host([min="lg"]) {
67
67
  --_grid-min: 20rem;
68
68
  }
69
69
 
@@ -121,11 +121,11 @@
121
121
  color: var(--ui-text-secondary);
122
122
  }
123
123
 
124
- :host-state([anticipatory]) {
124
+ :host([anticipatory]) {
125
125
  position: relative;
126
126
  }
127
127
 
128
- :host-state([anticipatory])::before {
128
+ :host([anticipatory])::before {
129
129
  content: "";
130
130
  position: absolute;
131
131
  inset: 50% auto auto 50%;
@@ -140,26 +140,26 @@
140
140
  pointer-events: none;
141
141
  }
142
142
 
143
- :host-state([anticipatory]):disabled::before {
143
+ :host([anticipatory]):disabled::before {
144
144
  opacity: 0;
145
145
  }
146
146
 
147
147
  /* At rest an anticipatory button shows only its guide dot. The icon grows into place when
148
148
  proximity, hover, or focus reveals it; the button's hit area and guide remain stable. */
149
- :host-state([anticipatory]) .content {
149
+ :host([anticipatory]) .content {
150
150
  opacity: 1;
151
151
  transform: scale(1);
152
152
  transition: opacity var(--ui-motion-fast) var(--ui-motion-ease), transform calc(var(--ui-motion-fast) * 2) cubic-bezier(0.2, 1.4, 0.35, 1);
153
153
  }
154
154
 
155
155
  @media (hover: hover) and (pointer: fine) {
156
- :host-state([anticipatory]):not(:host-state([variant="solid"]), :host-state([loading]), :host-state([pending]), :disabled, [data-ui-proximity="near"], :hover, :focus-visible) {
156
+ :host([anticipatory]):not(:host([variant="solid"]), :host([loading]), :host([pending]), :disabled, [data-ui-proximity="near"], :hover, :focus-visible) {
157
157
  border-color: transparent;
158
158
  background-color: transparent;
159
159
  box-shadow: none;
160
160
  }
161
161
 
162
- :host-state([anticipatory]):not(:host-state([variant="solid"]), :host-state([loading]), :host-state([pending]), :disabled, [data-ui-proximity="near"], :hover, :focus-visible)
162
+ :host([anticipatory]):not(:host([variant="solid"]), :host([loading]), :host([pending]), :disabled, [data-ui-proximity="near"], :hover, :focus-visible)
163
163
  .content {
164
164
  opacity: 0;
165
165
  transform: scale(0.65);
@@ -167,7 +167,7 @@
167
167
  }
168
168
  }
169
169
 
170
- :host-state([anticipatory]):is(:host-state([variant="solid"]), [data-ui-proximity="near"], :hover, :focus-visible)::before {
170
+ :host([anticipatory]):is(:host([variant="solid"]), [data-ui-proximity="near"], :hover, :focus-visible)::before {
171
171
  opacity: 0;
172
172
  }
173
173
 
@@ -198,7 +198,7 @@
198
198
  }
199
199
 
200
200
  @media (hover: none), (pointer: coarse) {
201
- :host-state([anticipatory])::before {
201
+ :host([anticipatory])::before {
202
202
  opacity: 0;
203
203
  }
204
204
  }
@@ -233,7 +233,7 @@
233
233
  transform: translate(-50%, -50%);
234
234
  }
235
235
 
236
- :host-state([size="sm"]) {
236
+ :host([size="sm"]) {
237
237
  --_size: 1.75rem;
238
238
  inline-size: var(--ui-icon-button-size, var(--_size));
239
239
  block-size: var(--ui-icon-button-size, var(--_size));
@@ -241,7 +241,7 @@
241
241
  min-block-size: var(--ui-icon-button-size, var(--_size));
242
242
  }
243
243
 
244
- :host-state([size="lg"]) {
244
+ :host([size="lg"]) {
245
245
  --_size: 2.5rem;
246
246
  inline-size: var(--ui-icon-button-size, var(--_size));
247
247
  block-size: var(--ui-icon-button-size, var(--_size));
@@ -250,33 +250,33 @@
250
250
  }
251
251
 
252
252
  /* A text button's companion uses control geometry; compact icon buttons keep their own density. */
253
- :host-state([matchButton]) {
253
+ :host([matchButton]) {
254
254
  --_size: var(--ui-control-size-md);
255
255
  block-size: auto;
256
256
  align-self: stretch;
257
257
  }
258
258
 
259
- :host-state([matchButton][size="sm"]) {
259
+ :host([matchButton][size="sm"]) {
260
260
  --_size: var(--ui-control-size-sm);
261
261
  }
262
262
 
263
- :host-state([matchButton][size="lg"]) {
263
+ :host([matchButton][size="lg"]) {
264
264
  --_size: var(--ui-control-size-lg);
265
265
  }
266
266
 
267
267
  @media (pointer: coarse) {
268
- :host-state([matchButton]) {
268
+ :host([matchButton]) {
269
269
  inline-size: max(var(--ui-icon-button-size, var(--_size)), var(--ui-control-min-block-size));
270
270
  min-inline-size: max(var(--ui-icon-button-size, var(--_size)), var(--ui-control-min-block-size));
271
271
  min-block-size: max(var(--ui-icon-button-size, var(--_size)), var(--ui-control-min-block-size));
272
272
  }
273
273
  }
274
274
 
275
- :host-state([round]) {
275
+ :host([round]) {
276
276
  border-radius: var(--ui-radius-round);
277
277
  }
278
278
 
279
- :host-state([variant="outline"]) {
279
+ :host([variant="outline"]) {
280
280
  border-color: var(--ui-icon-button-border, var(--ui-control-border, var(--ui-border-strong)));
281
281
  background-color: var(--ui-icon-button-outline-surface, var(--ui-surface-default));
282
282
  background-image: var(--ui-raised-highlight);
@@ -284,7 +284,7 @@
284
284
  box-shadow: var(--ui-raised);
285
285
  }
286
286
 
287
- :host-state([variant="solid"]) {
287
+ :host([variant="solid"]) {
288
288
  background-color: var(--ui-icon-button-solid-surface, var(--ui-accent-solid));
289
289
  background-image: var(--ui-raised-highlight);
290
290
  color: var(--ui-icon-button-solid-text, var(--ui-text-on-accent));
@@ -300,15 +300,15 @@
300
300
  color: var(--ui-icon-button-hover-text, var(--ui-text-primary));
301
301
  }
302
302
 
303
- :host-state([variant="outline"]):hover:enabled:not([aria-disabled="true"]) {
303
+ :host([variant="outline"]):hover:enabled:not([aria-disabled="true"]) {
304
304
  border-color: var(--ui-icon-button-hover-border, var(--ui-control-border-hover, var(--ui-control-border)));
305
305
  }
306
306
 
307
- :host-state([variant="solid"]):hover:enabled:not([aria-disabled="true"]) {
307
+ :host([variant="solid"]):hover:enabled:not([aria-disabled="true"]) {
308
308
  background-color: var(--ui-icon-button-solid-hover-surface, var(--ui-accent-hover));
309
309
  }
310
310
 
311
- :host-state([variant="ghost"])[aria-expanded="true"]:enabled:not([aria-disabled="true"]) {
311
+ :host([variant="ghost"])[aria-expanded="true"]:enabled:not([aria-disabled="true"]) {
312
312
  background-color: var(--ui-icon-button-active-surface, color-mix(in srgb, currentColor 16%, transparent));
313
313
  color: var(--ui-icon-button-hover-text, var(--ui-text-primary));
314
314
  box-shadow: var(--ui-pressed);
@@ -318,7 +318,7 @@
318
318
  transform: scale(var(--ui-icon-button-active-scale, 0.96));
319
319
  }
320
320
 
321
- :is(:host-state([loading]), :host-state([pending])) {
321
+ :is(:host([loading]), :host([pending])) {
322
322
  cursor: progress;
323
323
  }
324
324
 
@@ -328,12 +328,12 @@
328
328
  justify-content: center;
329
329
  }
330
330
 
331
- :is(:host-state([loading]), :host-state([pending])) .content {
331
+ :is(:host([loading]), :host([pending])) .content {
332
332
  display: none;
333
333
  }
334
334
 
335
335
  @media (prefers-reduced-motion: reduce) {
336
- :host-state([anticipatory]) .content {
336
+ :host([anticipatory]) .content {
337
337
  transition: none;
338
338
  }
339
339
  }
@@ -355,7 +355,7 @@
355
355
  background-image: none;
356
356
  }
357
357
 
358
- :host-state([variant="ghost"]):disabled {
358
+ :host([variant="ghost"]):disabled {
359
359
  border-color: transparent;
360
360
  }
361
361
 
@@ -367,11 +367,11 @@
367
367
  --_ui-default-icon-stroke-width: var(--_ui-icon-button-icon-stroke-width, 1.75);
368
368
  }
369
369
 
370
- :host-state([size="sm"]) {
370
+ :host([size="sm"]) {
371
371
  --_icon-button-icon-default: var(--ui-icon-size-sm);
372
372
  }
373
373
 
374
- :host-state([size="lg"]) {
374
+ :host([size="lg"]) {
375
375
  --_icon-button-icon-default: var(--ui-icon-size-lg);
376
376
  }
377
377
 
@@ -1,5 +1,5 @@
1
1
  // Marks an anticipatory button for the enclosing ui-affordance-scope, which reveals it on proximity.
2
- export default function controller(host) {
2
+ function connect(host) {
3
3
  const stop = host.effect(() => {
4
4
  if (host.props.anticipatory.value) host.element.setAttribute("data-ui-affordance", "button");
5
5
  else host.element.removeAttribute("data-ui-affordance");
@@ -15,3 +15,8 @@ export default function controller(host) {
15
15
  host.element.removeEventListener("click", onClick, true);
16
16
  };
17
17
  }
18
+
19
+ /** Keep DOM setup and its cleanup tied to each connection, including reconnects. */
20
+ export default function controller(host) {
21
+ host.on("connect", () => connect(host));
22
+ }
@@ -40,25 +40,25 @@
40
40
  margin: 0;
41
41
  padding: var(--ui-space-3) 0;
42
42
  }
43
- :host-state([placement="center"]) {
43
+ :host([placement="center"]) {
44
44
  justify-content: center;
45
45
  }
46
- :host-state([placement="wrap-left"]) {
46
+ :host([placement="wrap-left"]) {
47
47
  float: left;
48
48
  padding-inline-end: var(--ui-space-4);
49
49
  }
50
- :host-state([placement="wrap-right"]) {
50
+ :host([placement="wrap-right"]) {
51
51
  float: right;
52
52
  padding-inline-start: var(--ui-space-4);
53
53
  }
54
- :host:is(:host-state([placement="wrap-left"]), :host-state([placement="wrap-right"])) {
54
+ :host:is(:host([placement="wrap-left"]), :host([placement="wrap-right"])) {
55
55
  inline-size: calc(var(--_ui-image-width, calc(100% / 3)) + var(--ui-space-4));
56
56
  }
57
- :host:is(:host-state([placement="wrap-left"]), :host-state([placement="wrap-right"])) .frame {
57
+ :host:is(:host([placement="wrap-left"]), :host([placement="wrap-right"])) .frame {
58
58
  inline-size: 100%;
59
59
  }
60
- :host:is(:host-state([placement="wrap-left"]), :host-state([placement="wrap-right"])) .frame img,
61
- :host:is(:host-state([placement="wrap-left"]), :host-state([placement="wrap-right"])) .frame :slotted(img) {
60
+ :host:is(:host([placement="wrap-left"]), :host([placement="wrap-right"])) .frame img,
61
+ :host:is(:host([placement="wrap-left"]), :host([placement="wrap-right"])) .frame :slotted(img) {
62
62
  inline-size: 100%;
63
63
  }
64
64
  .frame {
@@ -80,7 +80,7 @@
80
80
  :host[data-resizing] .frame img, :host[data-resizing] .frame :slotted(img) {
81
81
  inline-size: 100%;
82
82
  }
83
- :host-state([selected]) .frame {
83
+ :host([selected]) .frame {
84
84
  outline: var(--ui-focus-width) solid var(--ui-focus-ring);
85
85
  outline-offset: var(--ui-border-width);
86
86
  }
@@ -130,12 +130,12 @@
130
130
  display: none;
131
131
  }
132
132
  @media (max-width: 767px) {
133
- :host:is(:host-state([placement="wrap-left"]), :host-state([placement="wrap-right"])) {
133
+ :host:is(:host([placement="wrap-left"]), :host([placement="wrap-right"])) {
134
134
  float: none;
135
135
  inline-size: 100%;
136
136
  padding-inline: 0;
137
137
  }
138
- :host:is(:host-state([placement="wrap-left"]), :host-state([placement="wrap-right"])) .handles {
138
+ :host:is(:host([placement="wrap-left"]), :host([placement="wrap-right"])) .handles {
139
139
  display: none;
140
140
  }
141
141
  }
@@ -165,7 +165,7 @@
165
165
  }
166
166
  }
167
167
  @media (forced-colors: active) {
168
- :host-state([selected]) .frame, .handle:focus-visible {
168
+ :host([selected]) .frame, .handle:focus-visible {
169
169
  outline-color: Highlight;
170
170
  }
171
171
  .handle::after {
@@ -2,7 +2,7 @@
2
2
  * @lifecycle Pointer capture ends on release, Escape, cancellation, or teardown.
3
3
  * Only release commits a drag, so consumers can make it one undo operation.
4
4
  */
5
- export default function controller(host) {
5
+ function connect(host) {
6
6
  const root = host.element;
7
7
  const frame = host.refs.frame;
8
8
  const document = root.ownerDocument;
@@ -105,3 +105,8 @@ export default function controller(host) {
105
105
  document.removeEventListener("keydown", onEscape, true);
106
106
  };
107
107
  }
108
+
109
+ /** Keep DOM setup and its cleanup tied to each connection, including reconnects. */
110
+ export default function controller(host) {
111
+ host.on("connect", () => connect(host));
112
+ }
@@ -3,9 +3,10 @@
3
3
  <prop
4
4
  name="type"
5
5
  type="keyword"
6
- values="text, search, tel, url, email, password, date, month, week, time, datetime-local, number, range, color"
6
+ values="text, search, tel, url, email, password, date, month, week, time, datetime-local, number, range, color, file"
7
7
  default="text"
8
- >The native input mode. Number and range modes accept numeric values; the other supported modes accept strings.</prop>
8
+ >The native input mode. Number and range modes accept numeric values; the other supported modes accept strings. File inputs expose selected files through
9
+ the native change event's target.files. Their value can only be set to an empty string to clear the selection.</prop>
9
10
  <type name="input-value" from="type">
10
11
  <option value="text" type="string"></option>
11
12
  <option value="search" type="string"></option>
@@ -21,6 +22,7 @@
21
22
  <option value="number" type="number"></option>
22
23
  <option value="range" type="number"></option>
23
24
  <option value="color" type="string"></option>
25
+ <option value="file" type="string"></option>
24
26
  </type>
25
27
  <prop name="value" type="input-value"
26
28
  >The input's value: text, or a number for type="number" and type="range" fields. Setting or changing it replaces the live text; between changes the user's
@@ -118,13 +120,13 @@
118
120
  }
119
121
 
120
122
  /* Each size reads the hook and then an Input Group's default first, so a group, which draws the frame, can zero it. */
121
- :host-state([size="sm"]) {
123
+ :host([size="sm"]) {
122
124
  min-block-size: var(--ui-input-min-block-size, var(--_ui-default-input-min-block-size, var(--ui-control-size-sm)));
123
125
  padding: var(--ui-space-1) var(--ui-space-2);
124
126
  font-size: var(--ui-font-size-sm);
125
127
  }
126
128
 
127
- :host-state([size="lg"]) {
129
+ :host([size="lg"]) {
128
130
  min-block-size: var(--ui-input-min-block-size, var(--_ui-default-input-min-block-size, var(--ui-control-size-lg)));
129
131
  padding: var(--ui-space-3) var(--ui-space-4);
130
132
  font-size: var(--ui-font-size-md);
@@ -134,12 +136,12 @@
134
136
  body-size text: below 16px, iOS zooms the page into the focused field. */
135
137
  @media (pointer: coarse) {
136
138
  :host,
137
- :host-state([size="sm"]),
138
- :host-state([size="lg"]) {
139
+ :host([size="sm"]),
140
+ :host([size="lg"]) {
139
141
  font-size: var(--ui-font-size-md);
140
142
  }
141
143
 
142
- :host-state([size="sm"]) {
144
+ :host([size="sm"]) {
143
145
  min-block-size: var(--ui-input-min-block-size, var(--_ui-default-input-min-block-size, var(--ui-control-min-block-size)));
144
146
  }
145
147
  }
@@ -1,6 +1,6 @@
1
1
  // The value attribute only sets the default; a controlled value is applied to the live input. The
2
2
  // value is also made the native default, so a form reset returns to it.
3
- export default function controller(host) {
3
+ function connect(host) {
4
4
  return host.effect(() => {
5
5
  const value = host.props.value.value;
6
6
  if (value === undefined || value === null) return;
@@ -14,3 +14,8 @@ export default function controller(host) {
14
14
  input.value = text;
15
15
  });
16
16
  }
17
+
18
+ /** Keep DOM setup and its cleanup tied to each connection, including reconnects. */
19
+ export default function controller(host) {
20
+ host.on("connect", () => connect(host));
21
+ }
@@ -116,7 +116,7 @@
116
116
  }
117
117
  }
118
118
 
119
- :host-state([disabled]),
119
+ :host([disabled]),
120
120
  :host:has(input:disabled) {
121
121
  background: var(--ui-control-surface-disabled, var(--ui-surface-muted));
122
122
  box-shadow: none;
@@ -154,10 +154,10 @@
154
154
  border-inline-start: var(--ui-border-width) solid var(--ui-border-divider);
155
155
  }
156
156
 
157
- :host-state([prefixKind="icon"]) {
157
+ :host([prefixKind="icon"]) {
158
158
  --_ui-default-input-padding-inline-start: var(--ui-space-2);
159
159
  }
160
- :host-state([prefixKind="icon"]) .affix:first-child {
160
+ :host([prefixKind="icon"]) .affix:first-child {
161
161
  padding-inline-end: 0;
162
162
  border-inline-end: 0;
163
163
  background: transparent;
@@ -15,7 +15,7 @@ const affixProblem = (affix) =>
15
15
  // instead, so the input's name stays its label and the affix is read once, with the input. The
16
16
  // consumer's own aria-describedby (or a Form Field's) is kept. A press on an affix, or anywhere in
17
17
  // the box outside the input, focuses the input without moving its caret or selecting the affix.
18
- export default function controller(host) {
18
+ function connect(host) {
19
19
  const element = host.element;
20
20
  let owned = [];
21
21
  let described = null;
@@ -65,3 +65,8 @@ export default function controller(host) {
65
65
  element.removeEventListener("click", onClick);
66
66
  };
67
67
  }
68
+
69
+ /** Keep DOM setup and its cleanup tied to each connection, including reconnects. */
70
+ export default function controller(host) {
71
+ host.on("connect", () => connect(host));
72
+ }
@@ -41,16 +41,16 @@
41
41
  list-style: none;
42
42
  }
43
43
 
44
- :host-state([as="ol"]),
45
- :host-state([markers="disc"]) {
44
+ :host([as="ol"]),
45
+ :host([markers="disc"]) {
46
46
  padding-inline-start: var(--ui-space-5);
47
47
  }
48
48
 
49
- :host-state([as="ol"]) {
49
+ :host([as="ol"]) {
50
50
  list-style: decimal;
51
51
  }
52
52
 
53
- :host-state([markers="disc"]) {
53
+ :host([markers="disc"]) {
54
54
  list-style: disc;
55
55
  }
56
56
 
@@ -72,7 +72,7 @@
72
72
  }
73
73
 
74
74
  /* Compact passes its size to the items through private properties, which cross into each item. */
75
- :host-state([density="compact"]) {
75
+ :host([density="compact"]) {
76
76
  --_list-gap: var(--ui-list-gap, var(--ui-space-2));
77
77
  --_ui-list-item-min-size: 0;
78
78
  --_ui-list-item-padding-block: 0;
@@ -82,7 +82,7 @@
82
82
  --_ui-list-native-padding-inline: 0;
83
83
  }
84
84
 
85
- :host-state([layout="grid"]) {
85
+ :host([layout="grid"]) {
86
86
  --_list-gap: var(--ui-list-gap, var(--ui-space-3));
87
87
  display: grid;
88
88
  grid-template-columns: repeat(auto-fill, minmax(min(100%, var(--_list-min-item-width)), 1fr));