@threadlabs/looma 0.31.3 → 0.31.5

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 (414) hide show
  1. package/dist/index.js +1 -1
  2. package/editor/chunks/extensions.js +23 -13
  3. package/package.json +3 -3
  4. package/styles/ui-action-bar.css +1 -1
  5. package/styles/ui-affordance-scope.css +1 -1
  6. package/styles/ui-avatar-group.css +1 -1
  7. package/styles/ui-avatar.css +1 -1
  8. package/styles/ui-badge.css +1 -1
  9. package/styles/ui-breadcrumb-item.css +1 -1
  10. package/styles/ui-breadcrumbs.css +1 -1
  11. package/styles/ui-button.css +1 -1
  12. package/styles/ui-callout.css +1 -1
  13. package/styles/ui-card.css +1 -1
  14. package/styles/ui-checkbox.css +1 -1
  15. package/styles/ui-cluster.css +1 -1
  16. package/styles/ui-combobox.css +393 -1
  17. package/styles/ui-container.css +1 -1
  18. package/styles/ui-context-menu.css +1 -1
  19. package/styles/ui-cover.css +1 -1
  20. package/styles/ui-description-item.css +1 -1
  21. package/styles/ui-description-list.css +1 -1
  22. package/styles/ui-dialog.css +232 -1
  23. package/styles/ui-disclosure.css +1 -1
  24. package/styles/ui-editable.css +1 -1
  25. package/styles/ui-editor-block-actions.css +1 -1
  26. package/styles/ui-editor-chip-editor.css +1 -1
  27. package/styles/ui-editor-code-language.css +1 -1
  28. package/styles/ui-editor-footnote-editor.css +1 -1
  29. package/styles/ui-editor-image-toolbar.css +1 -1
  30. package/styles/ui-editor-insert-table-grid.css +1 -1
  31. package/styles/ui-editor-link-card.css +1 -1
  32. package/styles/ui-editor-link-form.css +1 -1
  33. package/styles/ui-editor-mention-menu-item.css +1 -1
  34. package/styles/ui-editor-mention-menu.css +1 -1
  35. package/styles/ui-editor-slash-menu-group.css +1 -1
  36. package/styles/ui-editor-slash-menu-item.css +1 -1
  37. package/styles/ui-editor-slash-menu.css +1 -1
  38. package/styles/ui-editor-surface.css +1 -1
  39. package/styles/ui-editor-table-context-menu.css +1 -1
  40. package/styles/ui-editor-table-overlay.css +1 -1
  41. package/styles/ui-editor-table-toolbar.css +1 -1
  42. package/styles/ui-editor-toolbar.css +1 -1
  43. package/styles/ui-floating-action-button.css +1 -1
  44. package/styles/ui-form-field.css +1 -1
  45. package/styles/ui-grid.css +1 -1
  46. package/styles/ui-icon-button.css +1 -1
  47. package/styles/ui-icon.css +1 -1
  48. package/styles/ui-image.css +1 -1
  49. package/styles/ui-input-group.css +1 -1
  50. package/styles/ui-input.css +1 -1
  51. package/styles/ui-list-item.css +1 -1
  52. package/styles/ui-list.css +1 -1
  53. package/styles/ui-listbox.css +97 -1
  54. package/styles/ui-menu-group.css +1 -1
  55. package/styles/ui-menu-item.css +1 -1
  56. package/styles/ui-menu.css +1 -1
  57. package/styles/ui-meter.css +1 -1
  58. package/styles/ui-nav-item.css +1 -1
  59. package/styles/ui-page-header.css +1 -1
  60. package/styles/ui-popover.css +1 -1
  61. package/styles/ui-radio-group.css +1 -1
  62. package/styles/ui-radio.css +1 -1
  63. package/styles/ui-reel.css +1 -1
  64. package/styles/ui-scroll-area.css +1 -1
  65. package/styles/ui-search-result-row.css +1 -1
  66. package/styles/ui-search-shell.css +1 -1
  67. package/styles/ui-section.css +1 -1
  68. package/styles/ui-select.css +1 -1
  69. package/styles/ui-separator.css +1 -1
  70. package/styles/ui-sidebar.css +1 -1
  71. package/styles/ui-spinner.css +1 -1
  72. package/styles/ui-stack.css +1 -1
  73. package/styles/ui-status-message.css +1 -1
  74. package/styles/ui-swatch.css +1 -1
  75. package/styles/ui-switch.css +1 -1
  76. package/styles/ui-switcher.css +1 -1
  77. package/styles/ui-table.css +1 -1
  78. package/styles/ui-tabs.css +1 -1
  79. package/styles/ui-text.css +1 -1
  80. package/styles/ui-textarea.css +1 -1
  81. package/styles/ui-toast-region.css +199 -1
  82. package/styles/ui-toast.css +77 -1
  83. package/styles/ui-tooltip.css +1 -1
  84. package/styles/ui-top-bar.css +1 -1
  85. package/styles/ui-tree-item.css +559 -1
  86. package/styles/ui-tree.css +1 -1
  87. package/vanilla/UiActionBar.d.ts +1 -1
  88. package/vanilla/UiActionBar.js +1 -1
  89. package/vanilla/UiAffordanceScope.d.ts +1 -1
  90. package/vanilla/UiAffordanceScope.js +1 -1
  91. package/vanilla/UiAvatar.d.ts +1 -1
  92. package/vanilla/UiAvatar.js +1 -1
  93. package/vanilla/UiAvatarGroup.d.ts +1 -1
  94. package/vanilla/UiAvatarGroup.js +1 -1
  95. package/vanilla/UiBadge.d.ts +1 -1
  96. package/vanilla/UiBadge.js +1 -1
  97. package/vanilla/UiBreadcrumbItem.d.ts +1 -1
  98. package/vanilla/UiBreadcrumbItem.js +1 -1
  99. package/vanilla/UiBreadcrumbs.d.ts +1 -1
  100. package/vanilla/UiBreadcrumbs.js +1 -1
  101. package/vanilla/UiButton.d.ts +1 -1
  102. package/vanilla/UiButton.js +1 -1
  103. package/vanilla/UiCallout.d.ts +1 -1
  104. package/vanilla/UiCallout.js +1 -1
  105. package/vanilla/UiCard.d.ts +1 -1
  106. package/vanilla/UiCard.js +1 -1
  107. package/vanilla/UiCheckbox.d.ts +1 -1
  108. package/vanilla/UiCheckbox.js +1 -1
  109. package/vanilla/UiCluster.d.ts +1 -1
  110. package/vanilla/UiCluster.js +1 -1
  111. package/vanilla/UiCombobox.d.ts +1 -1
  112. package/vanilla/UiCombobox.js +2 -2
  113. package/vanilla/UiContainer.d.ts +1 -1
  114. package/vanilla/UiContainer.js +1 -1
  115. package/vanilla/UiContextMenu.d.ts +1 -1
  116. package/vanilla/UiContextMenu.js +1 -1
  117. package/vanilla/UiCover.d.ts +1 -1
  118. package/vanilla/UiCover.js +1 -1
  119. package/vanilla/UiDescriptionItem.d.ts +1 -1
  120. package/vanilla/UiDescriptionItem.js +1 -1
  121. package/vanilla/UiDescriptionList.d.ts +1 -1
  122. package/vanilla/UiDescriptionList.js +1 -1
  123. package/vanilla/UiDialog.d.ts +1 -1
  124. package/vanilla/UiDialog.js +1 -1
  125. package/vanilla/UiDisclosure.d.ts +1 -1
  126. package/vanilla/UiDisclosure.js +1 -1
  127. package/vanilla/UiEditable.d.ts +1 -1
  128. package/vanilla/UiEditable.js +1 -1
  129. package/vanilla/UiEditorBlockActions.d.ts +1 -1
  130. package/vanilla/UiEditorBlockActions.js +1 -1
  131. package/vanilla/UiEditorChipEditor.d.ts +1 -1
  132. package/vanilla/UiEditorChipEditor.js +1 -1
  133. package/vanilla/UiEditorCodeLanguage.d.ts +1 -1
  134. package/vanilla/UiEditorCodeLanguage.js +1 -1
  135. package/vanilla/UiEditorFootnoteEditor.d.ts +1 -1
  136. package/vanilla/UiEditorFootnoteEditor.js +1 -1
  137. package/vanilla/UiEditorImageToolbar.d.ts +1 -1
  138. package/vanilla/UiEditorImageToolbar.js +1 -1
  139. package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
  140. package/vanilla/UiEditorInsertTableGrid.js +1 -1
  141. package/vanilla/UiEditorLinkCard.d.ts +1 -1
  142. package/vanilla/UiEditorLinkCard.js +1 -1
  143. package/vanilla/UiEditorLinkForm.d.ts +1 -1
  144. package/vanilla/UiEditorLinkForm.js +1 -1
  145. package/vanilla/UiEditorMentionMenu.d.ts +1 -1
  146. package/vanilla/UiEditorMentionMenu.js +1 -1
  147. package/vanilla/UiEditorMentionMenuItem.d.ts +1 -1
  148. package/vanilla/UiEditorMentionMenuItem.js +1 -1
  149. package/vanilla/UiEditorSlashMenu.d.ts +1 -1
  150. package/vanilla/UiEditorSlashMenu.js +1 -1
  151. package/vanilla/UiEditorSlashMenuGroup.d.ts +1 -1
  152. package/vanilla/UiEditorSlashMenuGroup.js +1 -1
  153. package/vanilla/UiEditorSlashMenuItem.d.ts +1 -1
  154. package/vanilla/UiEditorSlashMenuItem.js +1 -1
  155. package/vanilla/UiEditorSurface.d.ts +1 -1
  156. package/vanilla/UiEditorSurface.js +1 -1
  157. package/vanilla/UiEditorTableContextMenu.d.ts +1 -1
  158. package/vanilla/UiEditorTableContextMenu.js +1 -1
  159. package/vanilla/UiEditorTableOverlay.d.ts +1 -1
  160. package/vanilla/UiEditorTableOverlay.js +1 -1
  161. package/vanilla/UiEditorTableToolbar.d.ts +1 -1
  162. package/vanilla/UiEditorTableToolbar.js +1 -1
  163. package/vanilla/UiEditorToolbar.d.ts +1 -1
  164. package/vanilla/UiEditorToolbar.js +1 -1
  165. package/vanilla/UiFloatingActionButton.d.ts +1 -1
  166. package/vanilla/UiFloatingActionButton.js +1 -1
  167. package/vanilla/UiFormField.d.ts +1 -1
  168. package/vanilla/UiFormField.js +1 -1
  169. package/vanilla/UiGrid.d.ts +1 -1
  170. package/vanilla/UiGrid.js +1 -1
  171. package/vanilla/UiIcon.d.ts +1 -1
  172. package/vanilla/UiIcon.js +1 -1
  173. package/vanilla/UiIconButton.d.ts +1 -1
  174. package/vanilla/UiIconButton.js +1 -1
  175. package/vanilla/UiImage.d.ts +1 -1
  176. package/vanilla/UiImage.js +1 -1
  177. package/vanilla/UiInput.d.ts +1 -1
  178. package/vanilla/UiInput.js +1 -1
  179. package/vanilla/UiInputGroup.d.ts +1 -1
  180. package/vanilla/UiInputGroup.js +1 -1
  181. package/vanilla/UiList.d.ts +1 -1
  182. package/vanilla/UiList.js +1 -1
  183. package/vanilla/UiListItem.d.ts +1 -1
  184. package/vanilla/UiListItem.js +1 -1
  185. package/vanilla/UiListbox.d.ts +1 -1
  186. package/vanilla/UiListbox.js +2 -2
  187. package/vanilla/UiMenu.d.ts +1 -1
  188. package/vanilla/UiMenu.js +1 -1
  189. package/vanilla/UiMenuGroup.d.ts +1 -1
  190. package/vanilla/UiMenuGroup.js +1 -1
  191. package/vanilla/UiMenuItem.d.ts +1 -1
  192. package/vanilla/UiMenuItem.js +1 -1
  193. package/vanilla/UiMeter.d.ts +1 -1
  194. package/vanilla/UiMeter.js +1 -1
  195. package/vanilla/UiNavItem.d.ts +1 -1
  196. package/vanilla/UiNavItem.js +1 -1
  197. package/vanilla/UiPageHeader.d.ts +1 -1
  198. package/vanilla/UiPageHeader.js +1 -1
  199. package/vanilla/UiPopover.d.ts +1 -1
  200. package/vanilla/UiPopover.js +1 -1
  201. package/vanilla/UiRadio.d.ts +1 -1
  202. package/vanilla/UiRadio.js +1 -1
  203. package/vanilla/UiRadioGroup.d.ts +1 -1
  204. package/vanilla/UiRadioGroup.js +1 -1
  205. package/vanilla/UiReel.d.ts +1 -1
  206. package/vanilla/UiReel.js +1 -1
  207. package/vanilla/UiScrollArea.d.ts +1 -1
  208. package/vanilla/UiScrollArea.js +1 -1
  209. package/vanilla/UiSearchResultRow.d.ts +1 -1
  210. package/vanilla/UiSearchResultRow.js +1 -1
  211. package/vanilla/UiSearchShell.d.ts +1 -1
  212. package/vanilla/UiSearchShell.js +1 -1
  213. package/vanilla/UiSection.d.ts +1 -1
  214. package/vanilla/UiSection.js +1 -1
  215. package/vanilla/UiSelect.d.ts +1 -1
  216. package/vanilla/UiSelect.js +1 -1
  217. package/vanilla/UiSeparator.d.ts +1 -1
  218. package/vanilla/UiSeparator.js +1 -1
  219. package/vanilla/UiSidebar.d.ts +1 -1
  220. package/vanilla/UiSidebar.js +1 -1
  221. package/vanilla/UiSpinner.d.ts +1 -1
  222. package/vanilla/UiSpinner.js +1 -1
  223. package/vanilla/UiStack.d.ts +1 -1
  224. package/vanilla/UiStack.js +1 -1
  225. package/vanilla/UiStatusMessage.d.ts +1 -1
  226. package/vanilla/UiStatusMessage.js +1 -1
  227. package/vanilla/UiSwatch.d.ts +1 -1
  228. package/vanilla/UiSwatch.js +1 -1
  229. package/vanilla/UiSwitch.d.ts +1 -1
  230. package/vanilla/UiSwitch.js +1 -1
  231. package/vanilla/UiSwitcher.d.ts +1 -1
  232. package/vanilla/UiSwitcher.js +1 -1
  233. package/vanilla/UiTable.d.ts +1 -1
  234. package/vanilla/UiTable.js +1 -1
  235. package/vanilla/UiTabs.d.ts +1 -1
  236. package/vanilla/UiTabs.js +1 -1
  237. package/vanilla/UiText.d.ts +1 -1
  238. package/vanilla/UiText.js +1 -1
  239. package/vanilla/UiTextarea.d.ts +1 -1
  240. package/vanilla/UiTextarea.js +1 -1
  241. package/vanilla/UiToast.d.ts +1 -1
  242. package/vanilla/UiToast.js +1 -1
  243. package/vanilla/UiToastRegion.d.ts +1 -1
  244. package/vanilla/UiToastRegion.js +1 -1
  245. package/vanilla/UiTooltip.d.ts +1 -1
  246. package/vanilla/UiTooltip.js +1 -1
  247. package/vanilla/UiTopBar.d.ts +1 -1
  248. package/vanilla/UiTopBar.js +1 -1
  249. package/vanilla/UiTree.d.ts +1 -1
  250. package/vanilla/UiTree.js +1 -1
  251. package/vanilla/UiTreeItem.d.ts +1 -1
  252. package/vanilla/UiTreeItem.js +1 -1
  253. package/vue/UiActionBar.vue +1 -1
  254. package/vue/UiAffordanceScope.vue +1 -1
  255. package/vue/UiAvatar.vue +1 -1
  256. package/vue/UiAvatarGroup.vue +1 -1
  257. package/vue/UiBadge.vue +1 -1
  258. package/vue/UiBreadcrumbItem.vue +1 -1
  259. package/vue/UiBreadcrumbs.vue +1 -1
  260. package/vue/UiButton.vue +1 -1
  261. package/vue/UiCallout.vue +1 -1
  262. package/vue/UiCard.vue +1 -1
  263. package/vue/UiCheckbox.vue +1 -1
  264. package/vue/UiCluster.vue +1 -1
  265. package/vue/UiCombobox.vue +362 -4
  266. package/vue/UiContainer.vue +1 -1
  267. package/vue/UiContextMenu.vue +1 -1
  268. package/vue/UiCover.vue +1 -1
  269. package/vue/UiDescriptionItem.vue +1 -1
  270. package/vue/UiDescriptionList.vue +1 -1
  271. package/vue/UiDialog.vue +200 -1
  272. package/vue/UiDisclosure.vue +1 -1
  273. package/vue/UiEditable.vue +1 -1
  274. package/vue/UiEditorBlockActions.vue +1 -1
  275. package/vue/UiEditorChipEditor.vue +1 -1
  276. package/vue/UiEditorCodeLanguage.vue +1 -1
  277. package/vue/UiEditorFootnoteEditor.vue +1 -1
  278. package/vue/UiEditorImageToolbar.vue +1 -1
  279. package/vue/UiEditorInsertTableGrid.vue +1 -1
  280. package/vue/UiEditorLinkCard.vue +1 -1
  281. package/vue/UiEditorLinkForm.vue +1 -1
  282. package/vue/UiEditorMentionMenu.vue +1 -1
  283. package/vue/UiEditorMentionMenuItem.vue +1 -1
  284. package/vue/UiEditorSlashMenu.vue +1 -1
  285. package/vue/UiEditorSlashMenuGroup.vue +1 -1
  286. package/vue/UiEditorSlashMenuItem.vue +1 -1
  287. package/vue/UiEditorSurface.vue +1 -1
  288. package/vue/UiEditorTableContextMenu.vue +1 -1
  289. package/vue/UiEditorTableOverlay.vue +1 -1
  290. package/vue/UiEditorTableToolbar.vue +1 -1
  291. package/vue/UiEditorToolbar.vue +1 -1
  292. package/vue/UiFloatingActionButton.vue +1 -1
  293. package/vue/UiFormField.vue +1 -1
  294. package/vue/UiGrid.vue +1 -1
  295. package/vue/UiIcon.vue +1 -1
  296. package/vue/UiIconButton.vue +1 -1
  297. package/vue/UiImage.vue +1 -1
  298. package/vue/UiInput.vue +1 -1
  299. package/vue/UiInputGroup.vue +1 -1
  300. package/vue/UiList.vue +1 -1
  301. package/vue/UiListItem.vue +1 -1
  302. package/vue/UiListbox.vue +79 -1
  303. package/vue/UiMenu.vue +1 -1
  304. package/vue/UiMenuGroup.vue +1 -1
  305. package/vue/UiMenuItem.vue +1 -1
  306. package/vue/UiMeter.vue +1 -1
  307. package/vue/UiNavItem.vue +1 -1
  308. package/vue/UiPageHeader.vue +1 -1
  309. package/vue/UiPopover.vue +1 -1
  310. package/vue/UiRadio.vue +1 -1
  311. package/vue/UiRadioGroup.vue +1 -1
  312. package/vue/UiReel.vue +1 -1
  313. package/vue/UiScrollArea.vue +1 -1
  314. package/vue/UiSearchResultRow.vue +1 -1
  315. package/vue/UiSearchShell.vue +1 -1
  316. package/vue/UiSection.vue +1 -1
  317. package/vue/UiSelect.vue +1 -1
  318. package/vue/UiSeparator.vue +1 -1
  319. package/vue/UiSidebar.vue +1 -1
  320. package/vue/UiSpinner.vue +1 -1
  321. package/vue/UiStack.vue +1 -1
  322. package/vue/UiStatusMessage.vue +1 -1
  323. package/vue/UiSwatch.vue +1 -1
  324. package/vue/UiSwitch.vue +1 -1
  325. package/vue/UiSwitcher.vue +1 -1
  326. package/vue/UiTable.vue +1 -1
  327. package/vue/UiTabs.vue +1 -1
  328. package/vue/UiText.vue +1 -1
  329. package/vue/UiTextarea.vue +1 -1
  330. package/vue/UiToast.vue +62 -1
  331. package/vue/UiToastRegion.vue +142 -1
  332. package/vue/UiTooltip.vue +1 -1
  333. package/vue/UiTopBar.vue +1 -1
  334. package/vue/UiTree.vue +1 -1
  335. package/vue/UiTreeItem.vue +635 -1
  336. package/vue/chunks/UiActionBar.js +1 -1
  337. package/vue/chunks/UiAffordanceScope.js +1 -1
  338. package/vue/chunks/UiAvatar.js +1 -1
  339. package/vue/chunks/UiAvatarGroup.js +1 -1
  340. package/vue/chunks/UiBadge.js +1 -1
  341. package/vue/chunks/UiBreadcrumbItem.js +1 -1
  342. package/vue/chunks/UiBreadcrumbs.js +1 -1
  343. package/vue/chunks/UiButton.js +1 -1
  344. package/vue/chunks/UiCallout.js +1 -1
  345. package/vue/chunks/UiCard.js +1 -1
  346. package/vue/chunks/UiCheckbox.js +1 -1
  347. package/vue/chunks/UiCluster.js +1 -1
  348. package/vue/chunks/UiCombobox.js +2 -1
  349. package/vue/chunks/UiContainer.js +1 -1
  350. package/vue/chunks/UiContextMenu.js +1 -1
  351. package/vue/chunks/UiCover.js +1 -1
  352. package/vue/chunks/UiDescriptionItem.js +1 -1
  353. package/vue/chunks/UiDescriptionList.js +1 -1
  354. package/vue/chunks/UiDialog.js +1 -1
  355. package/vue/chunks/UiDisclosure.js +1 -1
  356. package/vue/chunks/UiEditable.js +1 -1
  357. package/vue/chunks/UiEditorInsertTableGrid.js +1 -1
  358. package/vue/chunks/UiEditorMentionMenu.js +1 -1
  359. package/vue/chunks/UiEditorMentionMenuItem.js +1 -1
  360. package/vue/chunks/UiEditorSlashMenu.js +1 -1
  361. package/vue/chunks/UiEditorSlashMenuGroup.js +1 -1
  362. package/vue/chunks/UiEditorSlashMenuItem.js +1 -1
  363. package/vue/chunks/UiEditorSurface.js +1 -1
  364. package/vue/chunks/UiEditorTableContextMenu.js +1 -1
  365. package/vue/chunks/UiEditorTableOverlay.js +1 -1
  366. package/vue/chunks/UiEditorTableToolbar.js +1 -1
  367. package/vue/chunks/UiEditorToolbar.js +1 -1
  368. package/vue/chunks/UiFloatingActionButton.js +1 -1
  369. package/vue/chunks/UiFormField.js +1 -1
  370. package/vue/chunks/UiGrid.js +1 -1
  371. package/vue/chunks/UiIcon.js +1 -1
  372. package/vue/chunks/UiIconButton.js +1 -1
  373. package/vue/chunks/UiImage.js +1 -1
  374. package/vue/chunks/UiInput.js +1 -1
  375. package/vue/chunks/UiInputGroup.js +1 -1
  376. package/vue/chunks/UiList.js +1 -1
  377. package/vue/chunks/UiListItem.js +1 -1
  378. package/vue/chunks/UiListbox.js +2 -1
  379. package/vue/chunks/UiMenu.js +1 -1
  380. package/vue/chunks/UiMenuGroup.js +1 -1
  381. package/vue/chunks/UiMenuItem.js +1 -1
  382. package/vue/chunks/UiMeter.js +1 -1
  383. package/vue/chunks/UiNavItem.js +1 -1
  384. package/vue/chunks/UiPageHeader.js +1 -1
  385. package/vue/chunks/UiPopover.js +1 -1
  386. package/vue/chunks/UiRadio.js +1 -1
  387. package/vue/chunks/UiRadioGroup.js +1 -1
  388. package/vue/chunks/UiReel.js +1 -1
  389. package/vue/chunks/UiScrollArea.js +1 -1
  390. package/vue/chunks/UiSearchResultRow.js +1 -1
  391. package/vue/chunks/UiSearchShell.js +1 -1
  392. package/vue/chunks/UiSection.js +1 -1
  393. package/vue/chunks/UiSelect.js +1 -1
  394. package/vue/chunks/UiSeparator.js +1 -1
  395. package/vue/chunks/UiSidebar.js +1 -1
  396. package/vue/chunks/UiSpinner.js +1 -1
  397. package/vue/chunks/UiStack.js +1 -1
  398. package/vue/chunks/UiStatusMessage.js +1 -1
  399. package/vue/chunks/UiSwatch.js +1 -1
  400. package/vue/chunks/UiSwitch.js +1 -1
  401. package/vue/chunks/UiSwitcher.js +1 -1
  402. package/vue/chunks/UiTable.js +1 -1
  403. package/vue/chunks/UiTabs.js +1 -1
  404. package/vue/chunks/UiText.js +1 -1
  405. package/vue/chunks/UiTextarea.js +1 -1
  406. package/vue/chunks/UiToast.js +1 -1
  407. package/vue/chunks/UiToastRegion.js +1 -1
  408. package/vue/chunks/UiTooltip.js +1 -1
  409. package/vue/chunks/UiTopBar.js +1 -1
  410. package/vue/chunks/UiTree.js +1 -1
  411. package/vue/chunks/UiTreeItem.js +1 -1
  412. package/vue/components.css +1705 -370
  413. package/vue/editor/index.js +7 -7
  414. package/vue/host.ts +1 -1
@@ -945,12 +945,12 @@ ol:where([data-hn-ui-breadcrumbs]) {
945
945
  }
946
946
 
947
947
  /* A rounded SVG arc grows and recedes over a quiet full-circle track. */
948
- @keyframes ui-spinner-rotate-87fd2b5f {
948
+ @keyframes ui-spinner-rotate-f38ab49c {
949
949
  100% {
950
950
  transform: rotate(1turn);
951
951
  }
952
952
  }
953
- @keyframes ui-spinner-dash-87fd2b5f {
953
+ @keyframes ui-spinner-dash-f38ab49c {
954
954
  0% {
955
955
  stroke-dasharray: 1, 150;
956
956
  stroke-dashoffset: 0;
@@ -986,7 +986,7 @@ svg {
986
986
  display: block;
987
987
  inline-size: 100%;
988
988
  block-size: 100%;
989
- animation: ui-spinner-rotate-87fd2b5f 2s linear infinite;
989
+ animation: ui-spinner-rotate-f38ab49c 2s linear infinite;
990
990
  }
991
991
  circle {
992
992
  stroke-width: 3;
@@ -999,7 +999,7 @@ circle {
999
999
  stroke: currentColor;
1000
1000
  stroke-dasharray: 90, 150;
1001
1001
  stroke-dashoffset: 0;
1002
- animation: ui-spinner-dash-87fd2b5f 1.5s ease-in-out infinite;
1002
+ animation: ui-spinner-dash-f38ab49c 1.5s ease-in-out infinite;
1003
1003
  }
1004
1004
  @media (prefers-reduced-motion: reduce) {
1005
1005
  svg,.arc {
@@ -1783,7 +1783,7 @@ html[data-ui-input-modality="touch"]
1783
1783
  /* The label, and under it an optional line saying what the choice means. */
1784
1784
 
1785
1785
  /* Centre the tick's box and lift it slightly for the rotated check shape. */
1786
- @keyframes ui-checkbox-check-aac88235 {
1786
+ @keyframes ui-checkbox-check-6120eba6 {
1787
1787
  from {
1788
1788
  opacity: 0;
1789
1789
  transform: translateY(-0.09rem) rotate(45deg) scale(0.55);
@@ -1878,7 +1878,7 @@ input:checked:where([data-hn-ui-checkbox])::after {
1878
1878
  border-width: 0 0.125rem 0.125rem 0;
1879
1879
  opacity: 1;
1880
1880
  transform: translateY(-0.09rem) rotate(45deg);
1881
- animation: ui-checkbox-check-aac88235 180ms var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1))
1881
+ animation: ui-checkbox-check-6120eba6 180ms var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1))
1882
1882
  both;
1883
1883
  }
1884
1884
  input:indeterminate:where([data-hn-ui-checkbox])::after {
@@ -2654,148 +2654,490 @@ button:where([data-hn-ui-combobox]) {
2654
2654
  display: none;
2655
2655
  }
2656
2656
  }
2657
+ @scope ([data-slotted~="ui-combobox"]:not([data-hn])) to ([data-hn], [data-slotted]) {
2658
+ :where(.ui-combobox):where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-combobox"]))):where([data-hn-ui-combobox]) {
2659
+ /* Hooks do not inherit, so the parts below read them from the root. */
2660
+ --_ui-combobox-label-text: var(--ui-combobox-label-text);
2661
+ --_ui-combobox-label-font-size: var(--ui-combobox-label-font-size);
2662
+ --_ui-combobox-affordance-text: var(--ui-combobox-affordance-text);
2663
+ --_ui-combobox-max-block-size: var(--ui-combobox-max-block-size);
2664
+ --_ui-combobox-option-text: var(--ui-combobox-option-text);
2665
+ --_ui-combobox-message-text: var(--ui-combobox-message-text);
2666
+ --_ui-combobox-option-check: var(--ui-combobox-option-check);
2667
+ --_ui-combobox-item-min-block-size: var(--ui-combobox-item-min-block-size);
2668
+ --_ui-combobox-item-input-min-inline-size: var(--ui-combobox-item-input-min-inline-size);
2669
+ --_ui-combobox-item-item-max-inline-size: var(--ui-combobox-item-item-max-inline-size);
2670
+ --_ui-combobox-radius: var(--ui-combobox-radius);
2671
+ --_ui-combobox-invalid-border: var(--ui-combobox-invalid-border);
2672
+ --_ui-combobox-popup-surface: var(--ui-combobox-popup-surface);
2673
+ --_ui-combobox-popup-border: var(--ui-combobox-popup-border);
2674
+ --_ui-combobox-popup-radius: var(--ui-combobox-popup-radius);
2675
+ --_ui-combobox-popup-shadow: var(--ui-combobox-popup-shadow);
2657
2676
 
2658
- /* This component's hooks style the element they are set on, and never a nested one. */
2659
- @property --ui-container-gutters {
2660
- syntax: "*";
2661
- inherits: false;
2662
- }
2663
- @property --ui-container-measure {
2664
- syntax: "*";
2665
- inherits: false;
2677
+ --_row: var(--ui-control-size-md);
2678
+ display: grid;
2679
+ gap: var(--ui-space-1);
2680
+ min-inline-size: 0;
2681
+ color: var(--ui-text-primary);
2682
+ font: inherit;
2666
2683
  }
2667
-
2668
- /* A component that sets its display still honours the hidden attribute on its root. */
2669
- @scope (.ui-container) to ([data-hn]) {
2670
- :scope:where([data-hn-ui-container]) {
2671
- --_container-measure: 65ch;
2672
- --_container-gutters: var(--ui-space-4);
2673
- display: block;
2674
- inline-size: 100%;
2675
- max-inline-size: var(--ui-container-measure, var(--_container-measure));
2676
- margin-inline: auto;
2677
- padding-inline: var(--ui-container-gutters, var(--_container-gutters));
2684
+ label:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2685
+ color: var(--_ui-combobox-label-text, var(--ui-text-primary));
2686
+ font-size: var(--_ui-combobox-label-font-size, var(--ui-font-size-sm));
2687
+ font-weight: 500;
2678
2688
  }
2679
- :scope[data-ui-container-state~="measure=narrow"]:where([data-hn-ui-container]) {
2680
- --_container-measure: 45ch;
2689
+ .control:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2690
+ display: flex;
2691
+ align-items: center;
2692
+ gap: var(--ui-space-2);
2693
+ min-inline-size: 0;
2681
2694
  }
2682
- :scope[data-ui-container-state~="fill"]:where([data-hn-ui-container]) {
2695
+ .field:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2683
2696
  box-sizing: border-box;
2697
+ min-block-size: var(--_row);
2698
+ flex: 1 1 auto;
2684
2699
  display: flex;
2685
- flex-direction: column;
2686
- flex: 1;
2687
2700
  min-inline-size: 0;
2688
- min-block-size: 0;
2701
+ border: var(--ui-border-width) solid var(--ui-control-border, var(--ui-border-default));
2702
+ border-radius: var(--_ui-combobox-radius, var(--ui-field-radius, var(--ui-radius-md)));
2703
+ background: var(--ui-control-surface, var(--ui-surface-default));
2704
+ box-shadow: var(--ui-control-inset);
2705
+ transition:
2706
+ border-color var(--ui-motion-fast) var(--ui-motion-ease),
2707
+ box-shadow var(--ui-motion-fast) var(--ui-motion-ease);
2689
2708
  }
2690
- :scope[data-ui-container-state~="measure=wide"]:where([data-hn-ui-container]) {
2691
- --_container-measure: 80ch;
2709
+ .field:focus-within:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2710
+ border-color: var(--ui-control-focus, var(--ui-accent-solid));
2711
+ box-shadow:
2712
+ var(--ui-control-inset),
2713
+ var(--ui-control-focus-halo-shadow);
2692
2714
  }
2693
- :scope[data-ui-container-state~="gutters=s"]:where([data-hn-ui-container]) {
2694
- --_container-gutters: var(--ui-space-3);
2715
+ .entry:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2716
+ display: flex;
2717
+ flex: 1 1 auto;
2718
+ min-inline-size: 0;
2695
2719
  }
2696
- :scope[data-ui-container-state~="gutters=m"]:where([data-hn-ui-container]) {
2697
- --_container-gutters: var(--ui-space-4);
2720
+ .help:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2721
+ flex: none;
2722
+ display: inline-flex;
2723
+ align-items: center;
2724
+ justify-content: center;
2725
+ inline-size: var(--ui-control-size-sm);
2726
+ block-size: var(--ui-control-size-sm);
2727
+ padding: 0;
2728
+ border: 0;
2729
+ border-radius: var(--ui-radius-round);
2730
+ background: transparent;
2731
+ color: var(--ui-text-secondary);
2732
+ cursor: pointer;
2733
+ transition:
2734
+ background-color var(--ui-motion-fast) var(--ui-motion-ease),
2735
+ color var(--ui-motion-fast) var(--ui-motion-ease);
2698
2736
  }
2699
- :scope[data-ui-container-state~="gutters=l"]:where([data-hn-ui-container]) {
2700
- --_container-gutters: var(--ui-space-5);
2737
+ .help:hover:enabled:where(:scope, :scope *):where([data-hn-ui-combobox]),.help[aria-expanded="true"]:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2738
+ background: color-mix(in srgb, currentColor 8%, transparent);
2739
+ color: var(--ui-text-primary);
2701
2740
  }
2702
- :scope[hidden]:where([data-hn-ui-container]) {
2703
- display: none;
2741
+ .help:focus-visible:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2742
+ outline: none;
2743
+ box-shadow: var(--ui-focus-halo);
2704
2744
  }
2745
+ .help:disabled:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2746
+ color: var(--ui-disabled-text);
2747
+ cursor: not-allowed;
2705
2748
  }
2706
-
2707
- /* This component's hooks style the element they are set on, and never a nested one. */
2708
- @property --ui-context-menu-surface {
2709
- syntax: "*";
2710
- inherits: false;
2749
+ .help-icon:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2750
+ inline-size: var(--ui-icon-size-sm);
2751
+ block-size: var(--ui-icon-size-sm);
2711
2752
  }
2712
- @property --ui-context-menu-border {
2713
- syntax: "*";
2714
- inherits: false;
2753
+ input:where(:not([data-hn], [data-slotted]:not([data-slotted~="ui-combobox"]))):where(:scope, :scope
2754
+ *):where([data-hn-ui-combobox])::selection {
2755
+ background: color-mix(in srgb, var(--ui-accent-solid) 20%, transparent);
2756
+ color: inherit;
2715
2757
  }
2716
- @property --ui-context-menu-radius {
2717
- syntax: "*";
2718
- inherits: false;
2758
+ input:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2759
+ appearance: none;
2760
+ width: 100%;
2761
+ min-inline-size: 0;
2762
+ min-block-size: calc(var(--_row) - 2 * var(--ui-border-width));
2763
+ box-sizing: border-box;
2764
+ border: 0;
2765
+ border-radius: inherit;
2766
+ background: transparent;
2767
+ color: inherit;
2768
+ font: inherit;
2769
+ line-height: var(--ui-line-height-tight);
2770
+ padding: var(--ui-space-2) var(--ui-space-3);
2771
+ margin: 0;
2772
+ outline: none;
2719
2773
  }
2720
- @property --ui-context-menu-shadow {
2721
- syntax: "*";
2722
- inherits: false;
2774
+ :where(.ui-combobox)[data-ui-combobox-state~="size=sm"]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-combobox"]))):where([data-hn-ui-combobox]) {
2775
+ --_row: var(--ui-control-size-sm);
2723
2776
  }
2724
- @property --ui-context-menu-z-index {
2725
- syntax: "*";
2726
- inherits: false;
2777
+ :where(.ui-combobox)[data-ui-combobox-state~="size=sm"]
2778
+ input:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-combobox"]))):where([data-hn-ui-combobox]) {
2779
+ padding: var(--ui-space-1) var(--ui-space-2);
2780
+ font-size: var(--ui-font-size-sm);
2727
2781
  }
2728
-
2729
- /* A component that sets its display still honours the hidden attribute on its root. */
2730
- @scope (.ui-context-menu) to ([data-hn]) {
2731
- :scope:where([data-hn-ui-context-menu]) {
2732
- /* Hooks do not inherit, so the parts below read them from the root. */
2733
- --_ui-context-menu-surface: var(--ui-context-menu-surface);
2734
- --_ui-context-menu-border: var(--ui-context-menu-border);
2735
- --_ui-context-menu-radius: var(--ui-context-menu-radius);
2736
- --_ui-context-menu-shadow: var(--ui-context-menu-shadow);
2737
- --_ui-context-menu-z-index: var(--ui-context-menu-z-index);
2738
-
2739
- display: contents;
2782
+ :where(.ui-combobox)[data-ui-combobox-state~="size=lg"]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-combobox"]))):where([data-hn-ui-combobox]) {
2783
+ --_row: var(--ui-control-size-lg);
2740
2784
  }
2741
- .menu:where([data-hn-ui-context-menu]) {
2742
- position: fixed;
2743
- inset: auto;
2744
- margin: 0;
2745
- display: flex;
2746
- flex-direction: column;
2785
+ :where(.ui-combobox)[data-ui-combobox-state~="size=lg"]
2786
+ input:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-combobox"]))):where([data-hn-ui-combobox]) {
2787
+ padding: var(--ui-space-3) var(--ui-space-4);
2788
+ font-size: var(--ui-font-size-md);
2789
+ }
2790
+ button:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2791
+ appearance: none;
2792
+ display: inline-grid;
2793
+ place-items: center;
2794
+ align-self: stretch;
2795
+ border: 0;
2796
+ border-radius: var(--ui-radius-md);
2797
+ background: transparent;
2798
+ color: var(--_ui-combobox-affordance-text, var(--ui-text-secondary));
2799
+ font: inherit;
2800
+ font-weight: 400;
2801
+ min-inline-size: 2rem;
2802
+ padding: 0 var(--ui-space-1);
2803
+ cursor: pointer;
2804
+ }
2805
+ .affordance-icon:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2806
+ display: block;
2807
+ inline-size: var(--ui-icon-size-sm);
2808
+ block-size: var(--ui-icon-size-sm);
2809
+ }
2810
+ button:hover:enabled:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2811
+ background: var(--ui-surface-muted);
2812
+ color: var(--ui-text-primary);
2813
+ }
2814
+ button:focus-visible:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2815
+ outline: none;
2816
+ background: var(--ui-surface-muted);
2817
+ box-shadow: inset 0 0 0 var(--ui-focus-width)
2818
+ color-mix(in srgb, var(--ui-focus-ring) 45%, transparent);
2819
+ }
2820
+ input:disabled:where(:scope, :scope *):where([data-hn-ui-combobox]),button:disabled:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2821
+ color: var(--ui-disabled-text);
2822
+ cursor: not-allowed;
2823
+ }
2824
+ .field:has(input:disabled):where(:scope, :scope *):where([data-hn-ui-combobox]) {
2825
+ background: var(--ui-control-surface-disabled, var(--ui-surface-muted));
2826
+ }
2827
+ :where(.ui-combobox)[data-ui-combobox-state~="validationStatus=error"]
2828
+ .field:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-combobox"]))):where([data-hn-ui-combobox]),:where(.ui-combobox)[data-ui-combobox-state~="invalid"]
2829
+ .field:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-combobox"]))):where([data-hn-ui-combobox]) {
2830
+ border-color: var(
2831
+ --_ui-combobox-invalid-border,
2832
+ var(--ui-field-danger, var(--ui-danger-solid, var(--ui-accent-active)))
2833
+ );
2834
+ }
2835
+ .popup:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2747
2836
  box-sizing: border-box;
2837
+ min-inline-size: 12rem;
2838
+ max-inline-size: calc(100vw - 1rem);
2839
+ max-block-size: var(--_ui-combobox-max-block-size, 18rem);
2840
+ overflow: auto;
2841
+ margin: 0;
2748
2842
  padding: var(--ui-space-1);
2843
+ border: var(--ui-border-width) solid
2844
+ var(--_ui-combobox-popup-border, var(--ui-overlay-border, var(--ui-border-strong)));
2845
+ border-radius: var(--_ui-combobox-popup-radius, var(--ui-overlay-radius, var(--ui-radius-md)));
2749
2846
  background: var(
2750
- --_ui-context-menu-surface,
2847
+ --_ui-combobox-popup-surface,
2751
2848
  var(--ui-overlay-surface, var(--ui-surface-elevated))
2752
2849
  );
2753
- border: var(--ui-border-width) solid
2754
- var(--_ui-context-menu-border, var(--ui-overlay-border, var(--ui-border-strong)));
2755
- border-radius: var(--_ui-context-menu-radius, var(--ui-overlay-radius, var(--ui-radius-lg)));
2850
+ color: var(--ui-text-primary);
2756
2851
  box-shadow: var(
2757
- --_ui-context-menu-shadow,
2852
+ --_ui-combobox-popup-shadow,
2758
2853
  var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg)))
2759
2854
  );
2760
- outline: 0;
2761
- overflow: auto;
2762
- z-index: var(--_ui-context-menu-z-index, 1000);
2763
- min-width: 12rem;
2764
- opacity: 0;
2765
- transform: translateY(-4px) scale(0.99);
2766
- transition:
2767
- opacity var(--ui-motion-fast) var(--ui-motion-ease),
2768
- transform var(--ui-motion-fast) var(--ui-motion-ease),
2769
- display var(--ui-motion-fast) allow-discrete,
2770
- overlay var(--ui-motion-fast) allow-discrete;
2771
- }
2772
- .menu hr:where([data-hn-ui-context-menu]) {
2773
- align-self: stretch;
2774
- block-size: 0;
2775
- margin: var(--ui-space-1) 0;
2776
- border: 0;
2777
- border-block-start: var(--ui-border-width) solid var(--ui-border-divider);
2778
- }
2779
- .menu:popover-open:where([data-hn-ui-context-menu]) {
2780
- opacity: 1;
2781
- transform: translateY(0) scale(1);
2782
- }
2783
- @starting-style {
2784
- .menu:popover-open:where([data-hn-ui-context-menu]) {
2785
- opacity: 0;
2786
- transform: translateY(-4px) scale(0.99);
2787
- }
2788
2855
  }
2789
- .menu[hidden]:where([data-hn-ui-context-menu]),.menu[popover]:not(:popover-open):where([data-hn-ui-context-menu]) {
2856
+ [hidden]:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2790
2857
  display: none;
2791
2858
  }
2792
- @media (prefers-reduced-motion: reduce) {
2793
- .menu:where([data-hn-ui-context-menu]) {
2794
- transition: none;
2795
- }
2859
+ .option[aria-disabled="true"]:where(:scope, :scope *)
2860
+ .primary:where([data-hn-ui-combobox]),.option[aria-disabled="true"]:where(:scope, :scope *)
2861
+ .secondary:where([data-hn-ui-combobox]) {
2862
+ color: var(--ui-disabled-text);
2796
2863
  }
2797
- :scope[hidden]:where([data-hn-ui-context-menu]) {
2798
- display: none;
2864
+ .primary:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2865
+ display: block;
2866
+ color: var(--_ui-combobox-option-text, inherit);
2867
+ font-weight: 500;
2868
+ }
2869
+ .detail:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2870
+ display: grid;
2871
+ gap: var(--ui-space-0-5);
2872
+ min-inline-size: 0;
2873
+ }
2874
+ .line:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2875
+ display: flex;
2876
+ flex-wrap: wrap;
2877
+ align-items: center;
2878
+ gap: var(--ui-space-2);
2879
+ }
2880
+ .description:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2881
+ color: var(--ui-text-muted);
2882
+ font-size: var(--ui-font-size-sm);
2883
+ line-height: var(--ui-line-height-md);
2884
+ }
2885
+ .message:where(:scope, :scope *):where([data-hn-ui-combobox]),.group:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2886
+ color: var(--_ui-combobox-message-text, var(--ui-text-secondary));
2887
+ font-weight: 400;
2888
+ font-size: var(--ui-font-size-sm);
2889
+ line-height: var(--ui-line-height-md);
2890
+ overflow-wrap: anywhere;
2891
+ }
2892
+ .group:where(:scope, :scope *):where([data-hn-ui-combobox]),.popup:where(:scope, :scope *) .message:where([data-hn-ui-combobox]) {
2893
+ padding: var(--ui-space-2) var(--ui-space-3);
2894
+ }
2895
+ .sr-only:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2896
+ position: absolute;
2897
+ inline-size: 1px;
2898
+ block-size: 1px;
2899
+ overflow: hidden;
2900
+ clip-path: inset(50%);
2901
+ white-space: nowrap;
2902
+ }
2903
+ @media (pointer: coarse) {
2904
+ :where(.ui-combobox):where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-combobox"]))):where([data-hn-ui-combobox]) {
2905
+ --_row: max(var(--ui-control-size-md), var(--ui-control-min-block-size));
2906
+ }
2907
+ button:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2908
+ min-inline-size: 2.75rem;
2909
+ min-block-size: calc(var(--_row) - 2 * var(--ui-border-width));
2910
+ }
2911
+ /* Under touch a small field is still a touch-sized target, as a small button is, and keeps
2912
+ body-size text: below 16px, iOS zooms the page into the focused field. */
2913
+ :where(.ui-combobox)[data-ui-combobox-state~="size=sm"]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-combobox"]))):where([data-hn-ui-combobox]) {
2914
+ --_row: var(--ui-control-min-block-size);
2915
+ }
2916
+ :where(.ui-combobox)[data-ui-combobox-state~="size=sm"]
2917
+ input:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-combobox"]))):where([data-hn-ui-combobox]) {
2918
+ font-size: inherit;
2919
+ }
2920
+ }
2921
+ @media (forced-colors: active) {
2922
+ .field:where(:scope, :scope *):where([data-hn-ui-combobox]),.popup:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2923
+ border-color: CanvasText;
2924
+ }
2925
+ .option.active:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2926
+ outline-color: Highlight;
2927
+ }
2928
+ }
2929
+ :where(.ui-combobox)[data-ui-combobox-state~="multiple"]
2930
+ .field:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-combobox"]))):where([data-hn-ui-combobox]) {
2931
+ align-items: center;
2932
+ min-block-size: var(--_ui-combobox-item-min-block-size, var(--_row));
2933
+ padding: var(--ui-space-1);
2934
+ }
2935
+ :where(.ui-combobox)[data-ui-combobox-state~="multiple"]
2936
+ .entry:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-combobox"]))):where([data-hn-ui-combobox]) {
2937
+ align-items: center;
2938
+ gap: var(--ui-space-1);
2939
+ overflow-x: auto;
2940
+ scrollbar-width: none;
2941
+ }
2942
+ :where(.ui-combobox)[data-ui-combobox-state~="multiple"]
2943
+ .entry:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-combobox"]))):where([data-hn-ui-combobox])::-webkit-scrollbar {
2944
+ display: none;
2945
+ }
2946
+ :where(.ui-combobox)[data-ui-combobox-state~="multiple"]
2947
+ input:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-combobox"]))):where([data-hn-ui-combobox]) {
2948
+ flex: 1 0 var(--_ui-combobox-item-input-min-inline-size, 5rem);
2949
+ width: auto;
2950
+ min-block-size: 1.75rem;
2951
+ padding: var(--ui-space-0-5) var(--ui-space-1);
2952
+ }
2953
+ :where(.ui-combobox)[data-ui-combobox-state~="multiple"]:where(.ui-combobox)[data-ui-combobox-state~="size=sm"]
2954
+ .field:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-combobox"]))):where([data-hn-ui-combobox]) {
2955
+ min-block-size: 0;
2956
+ padding: var(--ui-space-0-5);
2957
+ }
2958
+ :where(.ui-combobox)[data-ui-combobox-state~="multiple"]:where(.ui-combobox)[data-ui-combobox-state~="size=sm"]
2959
+ input:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-combobox"]))):where([data-hn-ui-combobox]) {
2960
+ min-block-size: calc(var(--_row) - 2 * var(--ui-border-width) - 2 * var(--ui-space-0-5));
2961
+ padding: 0 var(--ui-space-1);
2962
+ }
2963
+ :where(.ui-combobox)[data-ui-combobox-state~="multiple"]:where(.ui-combobox)[data-ui-combobox-state~="size=lg"]
2964
+ .field:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-combobox"]))):where([data-hn-ui-combobox]) {
2965
+ min-block-size: 0;
2966
+ }
2967
+ :where(.ui-combobox)[data-ui-combobox-state~="multiple"]:where(.ui-combobox)[data-ui-combobox-state~="size=lg"]
2968
+ input:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-combobox"]))):where([data-hn-ui-combobox]) {
2969
+ min-block-size: calc(
2970
+ var(--ui-control-size-lg) - 2 * var(--ui-border-width) - 2 * var(--ui-space-1)
2971
+ );
2972
+ }
2973
+ .item:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2974
+ appearance: none;
2975
+ display: inline-flex;
2976
+ flex: none;
2977
+ min-inline-size: 0;
2978
+ max-inline-size: min(100%, var(--_ui-combobox-item-item-max-inline-size, 12rem));
2979
+ overflow: hidden;
2980
+ padding: 0;
2981
+ border: 0;
2982
+ border-radius: var(--ui-radius-sm);
2983
+ background: transparent;
2984
+ color: inherit;
2985
+ font: inherit;
2986
+ cursor: default;
2987
+ }
2988
+ .item:focus-visible:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2989
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring);
2990
+ outline-offset: var(--ui-border-width);
2991
+ }
2992
+ .item:disabled:where(:scope, :scope *):where([data-hn-ui-combobox]) {
2993
+ color: var(--ui-disabled-text);
2994
+ }
2995
+ :where(.ui-combobox)[hidden]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-combobox"]))):where([data-hn-ui-combobox]) {
2996
+ display: none;
2997
+ }
2998
+ }
2999
+
3000
+ /* This component's hooks style the element they are set on, and never a nested one. */
3001
+ @property --ui-container-gutters {
3002
+ syntax: "*";
3003
+ inherits: false;
3004
+ }
3005
+ @property --ui-container-measure {
3006
+ syntax: "*";
3007
+ inherits: false;
3008
+ }
3009
+
3010
+ /* A component that sets its display still honours the hidden attribute on its root. */
3011
+ @scope (.ui-container) to ([data-hn]) {
3012
+ :scope:where([data-hn-ui-container]) {
3013
+ --_container-measure: 65ch;
3014
+ --_container-gutters: var(--ui-space-4);
3015
+ display: block;
3016
+ inline-size: 100%;
3017
+ max-inline-size: var(--ui-container-measure, var(--_container-measure));
3018
+ margin-inline: auto;
3019
+ padding-inline: var(--ui-container-gutters, var(--_container-gutters));
3020
+ }
3021
+ :scope[data-ui-container-state~="measure=narrow"]:where([data-hn-ui-container]) {
3022
+ --_container-measure: 45ch;
3023
+ }
3024
+ :scope[data-ui-container-state~="fill"]:where([data-hn-ui-container]) {
3025
+ box-sizing: border-box;
3026
+ display: flex;
3027
+ flex-direction: column;
3028
+ flex: 1;
3029
+ min-inline-size: 0;
3030
+ min-block-size: 0;
3031
+ }
3032
+ :scope[data-ui-container-state~="measure=wide"]:where([data-hn-ui-container]) {
3033
+ --_container-measure: 80ch;
3034
+ }
3035
+ :scope[data-ui-container-state~="gutters=s"]:where([data-hn-ui-container]) {
3036
+ --_container-gutters: var(--ui-space-3);
3037
+ }
3038
+ :scope[data-ui-container-state~="gutters=m"]:where([data-hn-ui-container]) {
3039
+ --_container-gutters: var(--ui-space-4);
3040
+ }
3041
+ :scope[data-ui-container-state~="gutters=l"]:where([data-hn-ui-container]) {
3042
+ --_container-gutters: var(--ui-space-5);
3043
+ }
3044
+ :scope[hidden]:where([data-hn-ui-container]) {
3045
+ display: none;
3046
+ }
3047
+ }
3048
+
3049
+ /* This component's hooks style the element they are set on, and never a nested one. */
3050
+ @property --ui-context-menu-surface {
3051
+ syntax: "*";
3052
+ inherits: false;
3053
+ }
3054
+ @property --ui-context-menu-border {
3055
+ syntax: "*";
3056
+ inherits: false;
3057
+ }
3058
+ @property --ui-context-menu-radius {
3059
+ syntax: "*";
3060
+ inherits: false;
3061
+ }
3062
+ @property --ui-context-menu-shadow {
3063
+ syntax: "*";
3064
+ inherits: false;
3065
+ }
3066
+ @property --ui-context-menu-z-index {
3067
+ syntax: "*";
3068
+ inherits: false;
3069
+ }
3070
+
3071
+ /* A component that sets its display still honours the hidden attribute on its root. */
3072
+ @scope (.ui-context-menu) to ([data-hn]) {
3073
+ :scope:where([data-hn-ui-context-menu]) {
3074
+ /* Hooks do not inherit, so the parts below read them from the root. */
3075
+ --_ui-context-menu-surface: var(--ui-context-menu-surface);
3076
+ --_ui-context-menu-border: var(--ui-context-menu-border);
3077
+ --_ui-context-menu-radius: var(--ui-context-menu-radius);
3078
+ --_ui-context-menu-shadow: var(--ui-context-menu-shadow);
3079
+ --_ui-context-menu-z-index: var(--ui-context-menu-z-index);
3080
+
3081
+ display: contents;
3082
+ }
3083
+ .menu:where([data-hn-ui-context-menu]) {
3084
+ position: fixed;
3085
+ inset: auto;
3086
+ margin: 0;
3087
+ display: flex;
3088
+ flex-direction: column;
3089
+ box-sizing: border-box;
3090
+ padding: var(--ui-space-1);
3091
+ background: var(
3092
+ --_ui-context-menu-surface,
3093
+ var(--ui-overlay-surface, var(--ui-surface-elevated))
3094
+ );
3095
+ border: var(--ui-border-width) solid
3096
+ var(--_ui-context-menu-border, var(--ui-overlay-border, var(--ui-border-strong)));
3097
+ border-radius: var(--_ui-context-menu-radius, var(--ui-overlay-radius, var(--ui-radius-lg)));
3098
+ box-shadow: var(
3099
+ --_ui-context-menu-shadow,
3100
+ var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg)))
3101
+ );
3102
+ outline: 0;
3103
+ overflow: auto;
3104
+ z-index: var(--_ui-context-menu-z-index, 1000);
3105
+ min-width: 12rem;
3106
+ opacity: 0;
3107
+ transform: translateY(-4px) scale(0.99);
3108
+ transition:
3109
+ opacity var(--ui-motion-fast) var(--ui-motion-ease),
3110
+ transform var(--ui-motion-fast) var(--ui-motion-ease),
3111
+ display var(--ui-motion-fast) allow-discrete,
3112
+ overlay var(--ui-motion-fast) allow-discrete;
3113
+ }
3114
+ .menu hr:where([data-hn-ui-context-menu]) {
3115
+ align-self: stretch;
3116
+ block-size: 0;
3117
+ margin: var(--ui-space-1) 0;
3118
+ border: 0;
3119
+ border-block-start: var(--ui-border-width) solid var(--ui-border-divider);
3120
+ }
3121
+ .menu:popover-open:where([data-hn-ui-context-menu]) {
3122
+ opacity: 1;
3123
+ transform: translateY(0) scale(1);
3124
+ }
3125
+ @starting-style {
3126
+ .menu:popover-open:where([data-hn-ui-context-menu]) {
3127
+ opacity: 0;
3128
+ transform: translateY(-4px) scale(0.99);
3129
+ }
3130
+ }
3131
+ .menu[hidden]:where([data-hn-ui-context-menu]),.menu[popover]:not(:popover-open):where([data-hn-ui-context-menu]) {
3132
+ display: none;
3133
+ }
3134
+ @media (prefers-reduced-motion: reduce) {
3135
+ .menu:where([data-hn-ui-context-menu]) {
3136
+ transition: none;
3137
+ }
3138
+ }
3139
+ :scope[hidden]:where([data-hn-ui-context-menu]) {
3140
+ display: none;
2799
3141
  }
2800
3142
  }
2801
3143
 
@@ -3042,13 +3384,13 @@ dd:where([data-hn-ui-description-item]) {
3042
3384
  /* A CSS-drawn X. */
3043
3385
 
3044
3386
  /* A touch target, like Button on coarse pointers. */
3045
- @keyframes ui-dialog-enter-0e4bd8b5 {
3387
+ @keyframes ui-dialog-enter-3b5ed45a {
3046
3388
  from {
3047
3389
  opacity: 0;
3048
3390
  transform: scale(0.96);
3049
3391
  }
3050
3392
  }
3051
- @keyframes ui-dialog-backdrop-enter-0e4bd8b5 {
3393
+ @keyframes ui-dialog-backdrop-enter-3b5ed45a {
3052
3394
  from {
3053
3395
  background-color: transparent;
3054
3396
  }
@@ -3096,7 +3438,7 @@ from {
3096
3438
  pointer-events: auto;
3097
3439
  opacity: 1;
3098
3440
  transform: scale(1);
3099
- animation: ui-dialog-enter-0e4bd8b5 var(--ui-dialog-duration, var(--ui-motion-base))
3441
+ animation: ui-dialog-enter-3b5ed45a var(--ui-dialog-duration, var(--ui-motion-base))
3100
3442
  var(--ui-motion-ease);
3101
3443
  }
3102
3444
  :scope[data-ui-dialog-state~="size=sm"]:where([data-hn-ui-dialog]) {
@@ -3217,7 +3559,7 @@ footer:empty:where([data-hn-ui-dialog]) {
3217
3559
  }
3218
3560
  :scope[open]:modal:where([data-hn-ui-dialog])::backdrop {
3219
3561
  background-color: var(--ui-overlay-backdrop);
3220
- animation: ui-dialog-backdrop-enter-0e4bd8b5 var(--_ui-dialog-duration, var(--ui-motion-base))
3562
+ animation: ui-dialog-backdrop-enter-3b5ed45a var(--_ui-dialog-duration, var(--ui-motion-base))
3221
3563
  var(--ui-motion-ease);
3222
3564
  }
3223
3565
  :scope[open][data-ui-backdrop-hidden]:where([data-hn-ui-dialog])::backdrop {
@@ -3226,24 +3568,205 @@ footer:empty:where([data-hn-ui-dialog]) {
3226
3568
  transition: none;
3227
3569
  }
3228
3570
  }
3571
+ @scope ([data-slotted~="ui-dialog"]:not([data-hn])) to ([data-hn], [data-slotted]) {
3572
+ :where(.ui-dialog):where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-dialog"]))):where([data-hn-ui-dialog]) {
3573
+ /* Hooks do not inherit, so the parts below read them from the root. */
3574
+ --_ui-dialog-duration: var(--ui-dialog-duration);
3229
3575
 
3230
- /* This component's hooks style the element they are set on, and never a nested one. */
3231
- @property --ui-disclosure-trigger-min-block-size {
3232
- syntax: "*";
3233
- inherits: false;
3234
- }
3235
- @property --ui-disclosure-trigger-padding-block {
3236
- syntax: "*";
3237
- inherits: false;
3238
- }
3239
- @property --ui-disclosure-trigger-padding-inline {
3240
- syntax: "*";
3241
- inherits: false;
3242
- }
3243
-
3244
- /* Density resolves into the summary row's own values; the public tokens still override them. */
3245
-
3246
- /* An accordion row, not a field: no enclosing box, just a divider, so it never reads as a
3576
+ position: fixed;
3577
+ inset: 0;
3578
+ box-sizing: border-box;
3579
+ inline-size: min(
3580
+ calc(100% - var(--ui-dialog-viewport-gap, var(--ui-space-4)) * 2),
3581
+ var(--ui-dialog-max-width, var(--_ui-dialog-size, 440px))
3582
+ );
3583
+ max-inline-size: none;
3584
+ max-block-size: calc(100dvh - var(--ui-dialog-viewport-gap, var(--ui-space-4)) * 2);
3585
+ margin: auto;
3586
+ padding: 0;
3587
+ overflow: hidden;
3588
+ flex-direction: column;
3589
+ background: var(--ui-dialog-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
3590
+ border: var(--ui-border-width) solid
3591
+ var(--ui-dialog-border, var(--ui-overlay-border, var(--ui-border-strong)));
3592
+ border-radius: var(--ui-dialog-radius, var(--ui-overlay-radius, var(--ui-radius-dialog)));
3593
+ box-shadow: var(
3594
+ --ui-dialog-shadow,
3595
+ var(--ui-overlay-shadow, var(--ui-elevation-dialog, var(--ui-shadow-xl)))
3596
+ );
3597
+ visibility: hidden;
3598
+ pointer-events: none;
3599
+ opacity: 0;
3600
+ transform: scale(0.96);
3601
+ transition:
3602
+ opacity var(--ui-dialog-duration, var(--ui-motion-base)) var(--ui-motion-ease),
3603
+ transform var(--ui-dialog-duration, var(--ui-motion-base)) var(--ui-motion-ease),
3604
+ visibility var(--ui-dialog-duration, var(--ui-motion-base)),
3605
+ display var(--ui-dialog-duration, var(--ui-motion-base)) var(--ui-motion-ease) allow-discrete,
3606
+ overlay var(--ui-dialog-duration, var(--ui-motion-base)) var(--ui-motion-ease) allow-discrete;
3607
+ }
3608
+ :where(.ui-dialog)[open]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-dialog"]))):where([data-hn-ui-dialog]) {
3609
+ display: flex;
3610
+ visibility: visible;
3611
+ pointer-events: auto;
3612
+ opacity: 1;
3613
+ transform: scale(1);
3614
+ animation: ui-dialog-enter-3b5ed45a var(--ui-dialog-duration, var(--ui-motion-base))
3615
+ var(--ui-motion-ease);
3616
+ }
3617
+ :where(.ui-dialog)[data-ui-dialog-state~="size=sm"]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-dialog"]))):where([data-hn-ui-dialog]) {
3618
+ --_ui-dialog-size: 360px;
3619
+ }
3620
+ :where(.ui-dialog)[data-ui-dialog-state~="size=lg"]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-dialog"]))):where([data-hn-ui-dialog]) {
3621
+ --_ui-dialog-size: 640px;
3622
+ }
3623
+ :where(.ui-dialog)[data-ui-dialog-state~="size=fullscreen"]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-dialog"]))):where([data-hn-ui-dialog]) {
3624
+ inset: 0;
3625
+ inline-size: 100%;
3626
+ block-size: 100dvh;
3627
+ max-block-size: none;
3628
+ margin: 0;
3629
+ border-radius: var(--ui-dialog-radius, 0);
3630
+ }
3631
+ :where(.ui-dialog)[data-ui-dialog-state~="alert"]
3632
+ .close:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-dialog"]))):where([data-hn-ui-dialog]) {
3633
+ display: none;
3634
+ }
3635
+ header:where(:scope, :scope *):where([data-hn-ui-dialog]) {
3636
+ display: flex;
3637
+ align-items: center;
3638
+ gap: var(--ui-space-3);
3639
+ flex: none;
3640
+ /* The title's ink sits inside its line box and the taller close target. Balance that
3641
+ visible top inset against the action row's bottom inset, not just the boxes. */
3642
+ padding: calc(var(--ui-space-3) + var(--ui-space-1) / 2) var(--ui-space-3) var(--ui-space-3)
3643
+ var(--ui-space-5);
3644
+ }
3645
+ :where(.ui-dialog)[data-ui-dialog-state~="alert"]
3646
+ header:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-dialog"]))):where([data-hn-ui-dialog]) {
3647
+ padding: var(--ui-space-5) var(--ui-space-5) var(--ui-space-3);
3648
+ }
3649
+ :where(.ui-dialog)
3650
+ .title:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-dialog"]))):where([data-hn-ui-dialog]) {
3651
+ flex: 1;
3652
+ min-inline-size: 0;
3653
+ margin: 0;
3654
+ padding: 0;
3655
+ border: 0;
3656
+ color: var(--ui-text-primary);
3657
+ letter-spacing: normal;
3658
+ font-size: var(--ui-font-size-lg);
3659
+ font-weight: var(--ui-font-semibold);
3660
+ line-height: var(--ui-line-height-tight);
3661
+ }
3662
+ .close:where(:scope, :scope *):where([data-hn-ui-dialog]) {
3663
+ display: inline-grid;
3664
+ place-items: center;
3665
+ flex: none;
3666
+ margin-inline-start: auto;
3667
+ inline-size: var(--ui-control-size-sm);
3668
+ block-size: var(--ui-control-size-sm);
3669
+ padding: 0;
3670
+ border: 0;
3671
+ border-radius: var(--ui-radius-round);
3672
+ background: transparent;
3673
+ color: var(--ui-text-secondary);
3674
+ cursor: pointer;
3675
+ transition:
3676
+ background-color var(--ui-motion-fast) var(--ui-motion-ease),
3677
+ color var(--ui-motion-fast) var(--ui-motion-ease);
3678
+ }
3679
+ .close:where(:not([data-hn], [data-slotted]:not([data-slotted~="ui-dialog"]))):where(:scope, :scope
3680
+ *):where([data-hn-ui-dialog])::before,.close:where(:not([data-hn], [data-slotted]:not([data-slotted~="ui-dialog"]))):where(:scope, :scope
3681
+ *):where([data-hn-ui-dialog])::after {
3682
+ content: "";
3683
+ grid-area: 1 / 1;
3684
+ inline-size: 0.875rem;
3685
+ block-size: 1.5px;
3686
+ border-radius: 1px;
3687
+ background: currentColor;
3688
+ transform: rotate(45deg);
3689
+ }
3690
+ .close:where(:not([data-hn], [data-slotted]:not([data-slotted~="ui-dialog"]))):where(:scope, :scope
3691
+ *):where([data-hn-ui-dialog])::after {
3692
+ transform: rotate(-45deg);
3693
+ }
3694
+ .close:hover:where(:scope, :scope *):where([data-hn-ui-dialog]) {
3695
+ background: var(--ui-surface-muted);
3696
+ color: var(--ui-text-primary);
3697
+ }
3698
+ .close:focus-visible:where(:scope, :scope *):where([data-hn-ui-dialog]) {
3699
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring);
3700
+ outline-offset: var(--ui-focus-width);
3701
+ }
3702
+ @media (pointer: coarse) {
3703
+ .close:where(:scope, :scope *):where([data-hn-ui-dialog]) {
3704
+ inline-size: var(--ui-control-min-block-size);
3705
+ block-size: var(--ui-control-min-block-size);
3706
+ }
3707
+ }
3708
+ html[data-ui-input-modality="touch"]
3709
+ :where(.ui-dialog)
3710
+ .close:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-dialog"]))):where([data-hn-ui-dialog]) {
3711
+ inline-size: var(--ui-control-min-block-size);
3712
+ block-size: var(--ui-control-min-block-size);
3713
+ }
3714
+ .body:where(:scope, :scope *):where([data-hn-ui-dialog]) {
3715
+ display: flex;
3716
+ flex-direction: column;
3717
+ flex: 1 1 auto;
3718
+ min-block-size: 0;
3719
+ padding: var(--ui-space-3) var(--ui-space-5) var(--ui-space-5);
3720
+ }
3721
+ footer:where(:scope, :scope *):where([data-hn-ui-dialog]) {
3722
+ display: flex;
3723
+ flex: none;
3724
+ flex-wrap: wrap;
3725
+ justify-content: flex-end;
3726
+ gap: var(--ui-space-2);
3727
+ padding: 0 var(--ui-space-5) var(--ui-space-5);
3728
+ }
3729
+ footer:empty:where(:scope, :scope *):where([data-hn-ui-dialog]) {
3730
+ display: none;
3731
+ }
3732
+ :where(.ui-dialog):where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-dialog"]))):where([data-hn-ui-dialog])::backdrop {
3733
+ background-color: transparent;
3734
+ transition:
3735
+ background-color var(--_ui-dialog-duration, var(--ui-motion-base)) var(--ui-motion-ease),
3736
+ display var(--_ui-dialog-duration, var(--ui-motion-base)) var(--ui-motion-ease)
3737
+ allow-discrete,
3738
+ overlay var(--_ui-dialog-duration, var(--ui-motion-base)) var(--ui-motion-ease)
3739
+ allow-discrete;
3740
+ }
3741
+ :where(.ui-dialog)[open]:modal:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-dialog"]))):where([data-hn-ui-dialog])::backdrop {
3742
+ background-color: var(--ui-overlay-backdrop);
3743
+ animation: ui-dialog-backdrop-enter-3b5ed45a var(--_ui-dialog-duration, var(--ui-motion-base))
3744
+ var(--ui-motion-ease);
3745
+ }
3746
+ :where(.ui-dialog)[open][data-ui-backdrop-hidden]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-dialog"]))):where([data-hn-ui-dialog])::backdrop {
3747
+ background-color: transparent;
3748
+ animation: none;
3749
+ transition: none;
3750
+ }
3751
+ }
3752
+
3753
+ /* This component's hooks style the element they are set on, and never a nested one. */
3754
+ @property --ui-disclosure-trigger-min-block-size {
3755
+ syntax: "*";
3756
+ inherits: false;
3757
+ }
3758
+ @property --ui-disclosure-trigger-padding-block {
3759
+ syntax: "*";
3760
+ inherits: false;
3761
+ }
3762
+ @property --ui-disclosure-trigger-padding-inline {
3763
+ syntax: "*";
3764
+ inherits: false;
3765
+ }
3766
+
3767
+ /* Density resolves into the summary row's own values; the public tokens still override them. */
3768
+
3769
+ /* An accordion row, not a field: no enclosing box, just a divider, so it never reads as a
3247
3770
  * select or combobox. Stacked disclosures share their dividers. */
3248
3771
 
3249
3772
  /* A bounded accordion owns one flexible body, so its trigger never scrolls away. The
@@ -7499,6 +8022,73 @@ ul:where([data-hn-ui-editor-slash-menu-group]) {
7499
8022
  display: none;
7500
8023
  }
7501
8024
  }
8025
+ @scope ([data-slotted~="ui-listbox"]:not([data-hn])) to ([data-hn], [data-slotted]) {
8026
+ :where(.ui-listbox):where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-listbox"]))):where([data-hn-ui-listbox]) {
8027
+ position: relative;
8028
+ box-sizing: border-box;
8029
+ display: block;
8030
+ inline-size: 100%;
8031
+ min-inline-size: 0;
8032
+ margin: 0;
8033
+ padding: var(--ui-space-1);
8034
+ border: var(--ui-border-width) solid var(--ui-listbox-border, var(--ui-control-border));
8035
+ border-radius: var(--ui-listbox-radius, var(--ui-field-radius, var(--ui-radius-md)));
8036
+ background: var(--ui-listbox-surface, var(--ui-control-surface));
8037
+ color: var(--ui-text-primary);
8038
+ font: inherit;
8039
+ line-height: var(--ui-line-height-md);
8040
+ box-shadow: var(--ui-control-inset);
8041
+ outline: none;
8042
+ }
8043
+ .choices:where(:scope, :scope *):where([data-hn-ui-listbox]) {
8044
+ display: flex;
8045
+ flex-direction: column;
8046
+ max-block-size: calc(max(2, var(--_rows, 5)) * var(--ui-control-size-md));
8047
+ }
8048
+ :where(.ui-listbox):not([data-enhanced]):where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-listbox"]))):where([data-hn-ui-listbox]) {
8049
+ padding: 0;
8050
+ border: 0;
8051
+ background: transparent;
8052
+ box-shadow: none;
8053
+ }
8054
+ :where(.ui-listbox):not([data-enhanced])
8055
+ .choices:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-listbox"]))):where([data-hn-ui-listbox]),:where(.ui-listbox)[data-enhanced]
8056
+ .fallback:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-listbox"]))):where([data-hn-ui-listbox]) {
8057
+ display: none;
8058
+ }
8059
+ .fallback:where(:scope, :scope *):where([data-hn-ui-listbox]) {
8060
+ box-sizing: border-box;
8061
+ inline-size: 100%;
8062
+ font: inherit;
8063
+ }
8064
+ .validity:where(:scope, :scope *):where([data-hn-ui-listbox]) {
8065
+ position: absolute;
8066
+ inline-size: 1px;
8067
+ block-size: 1px;
8068
+ overflow: hidden;
8069
+ clip-path: inset(50%);
8070
+ opacity: 0;
8071
+ pointer-events: none;
8072
+ }
8073
+ :where(.ui-listbox):focus-visible:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-listbox"]))):where([data-hn-ui-listbox]) {
8074
+ border-color: var(--ui-control-focus);
8075
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring);
8076
+ outline-offset: var(--ui-focus-width);
8077
+ box-shadow: var(--ui-listbox-focus-shadow, var(--ui-focus-halo));
8078
+ }
8079
+ :where(.ui-listbox)[aria-invalid="true"]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-listbox"]))):where([data-hn-ui-listbox]) {
8080
+ border-color: var(--ui-listbox-invalid-border, var(--ui-field-danger, var(--ui-danger)));
8081
+ }
8082
+ :where(.ui-listbox)[aria-disabled="true"]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-listbox"]))):where([data-hn-ui-listbox]) {
8083
+ background: var(--ui-control-surface-disabled);
8084
+ color: var(--ui-disabled-text);
8085
+ box-shadow: none;
8086
+ cursor: not-allowed;
8087
+ }
8088
+ :where(.ui-listbox)[hidden]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-listbox"]))):where([data-hn-ui-listbox]) {
8089
+ display: none;
8090
+ }
8091
+ }
7502
8092
 
7503
8093
  @scope (.ui-menu-group) to ([data-hn]) {
7504
8094
  :scope:where([data-hn-ui-menu-group]) {
@@ -9418,17 +10008,76 @@ input:where([data-hn-ui-switch]),input:where([data-hn-ui-switch])::after {
9418
10008
  display: none;
9419
10009
  }
9420
10010
  }
10011
+ @scope ([data-slotted~="ui-toast"]:not([data-hn])) to ([data-hn], [data-slotted]) {
10012
+ :where(.ui-toast):where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-toast"]))):where([data-hn-ui-toast]) {
10013
+ --_ui-toast-accent: var(--ui-border-strong);
10014
+ --_ui-toast-surface: var(--ui-surface-muted);
9421
10015
 
9422
- /* This component's hooks style the element they are set on, and never a nested one. */
9423
- @property --ui-toast-region-surface {
9424
- syntax: "*";
9425
- inherits: false;
10016
+ display: flex;
10017
+ align-items: center;
10018
+ gap: var(--ui-space-2);
10019
+ box-sizing: border-box;
10020
+ inline-size: 100%;
10021
+ margin: 0;
10022
+ padding: var(--ui-space-3) var(--ui-space-4);
10023
+ /* The close button's internal space supplies the rest of the trailing inset. */
10024
+ padding-inline-end: var(--ui-space-2);
10025
+ border: var(--ui-border-width) solid
10026
+ var(
10027
+ --ui-toast-border,
10028
+ var(--ui-overlay-border, var(--ui-toast-accent, var(--_ui-toast-accent)))
10029
+ );
10030
+ border-radius: var(--ui-toast-radius, var(--ui-overlay-radius, var(--ui-radius-lg)));
10031
+ background: var(--ui-toast-surface, var(--ui-overlay-surface, var(--_ui-toast-surface)));
10032
+ color: var(--ui-text-primary);
10033
+ font-family: var(--ui-font-family-sans);
10034
+ font-size: var(--ui-font-size-sm);
10035
+ font-weight: var(--ui-font-normal);
10036
+ line-height: var(--ui-line-height-md);
10037
+ box-shadow: var(
10038
+ --ui-toast-shadow,
10039
+ var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg)))
10040
+ );
10041
+ pointer-events: auto;
9426
10042
  }
9427
- @property --ui-toast-region-border {
9428
- syntax: "*";
9429
- inherits: false;
10043
+ :where(.ui-toast)[data-ui-toast-state~="tone=info"]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-toast"]))):where([data-hn-ui-toast]) {
10044
+ --_ui-toast-accent: var(--ui-info-solid);
10045
+ --_ui-toast-surface: var(--ui-info-soft);
9430
10046
  }
9431
- @property --ui-toast-region-radius {
10047
+ :where(.ui-toast)[data-ui-toast-state~="tone=success"]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-toast"]))):where([data-hn-ui-toast]) {
10048
+ --_ui-toast-accent: var(--ui-success-solid);
10049
+ --_ui-toast-surface: var(--ui-success-soft);
10050
+ }
10051
+ :where(.ui-toast)[data-ui-toast-state~="tone=warning"]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-toast"]))):where([data-hn-ui-toast]) {
10052
+ --_ui-toast-accent: var(--ui-warning-solid);
10053
+ --_ui-toast-surface: var(--ui-warning-soft);
10054
+ }
10055
+ :where(.ui-toast)[data-ui-toast-state~="tone=danger"]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-toast"]))):where([data-hn-ui-toast]) {
10056
+ --_ui-toast-accent: var(--ui-danger-solid);
10057
+ --_ui-toast-surface: var(--ui-danger-soft);
10058
+ }
10059
+ .message:where(:scope, :scope *):where([data-hn-ui-toast]) {
10060
+ min-inline-size: 0;
10061
+ flex: 1;
10062
+ }
10063
+ .action:not(:has(> *)):where(:scope, :scope *):where([data-hn-ui-toast]) {
10064
+ display: none;
10065
+ }
10066
+ :where(.ui-toast)[hidden]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-toast"]))):where([data-hn-ui-toast]) {
10067
+ display: none;
10068
+ }
10069
+ }
10070
+
10071
+ /* This component's hooks style the element they are set on, and never a nested one. */
10072
+ @property --ui-toast-region-surface {
10073
+ syntax: "*";
10074
+ inherits: false;
10075
+ }
10076
+ @property --ui-toast-region-border {
10077
+ syntax: "*";
10078
+ inherits: false;
10079
+ }
10080
+ @property --ui-toast-region-radius {
9432
10081
  syntax: "*";
9433
10082
  inherits: false;
9434
10083
  }
@@ -9446,7 +10095,7 @@ input:where([data-hn-ui-switch]),input:where([data-hn-ui-switch])::after {
9446
10095
  }
9447
10096
 
9448
10097
  /* Leaving slides on down and fades; the controller removes the toast when this ends. */
9449
- @keyframes ui-toast-enter-cab264c9 {
10098
+ @keyframes ui-toast-enter-1bebce00 {
9450
10099
  from {
9451
10100
  opacity: 0;
9452
10101
  transform: translateY(-1rem);
@@ -9456,7 +10105,7 @@ to {
9456
10105
  transform: translateY(0);
9457
10106
  }
9458
10107
  }
9459
- @keyframes ui-toast-exit-cab264c9 {
10108
+ @keyframes ui-toast-exit-1bebce00 {
9460
10109
  from {
9461
10110
  opacity: 1;
9462
10111
  transform: translateY(0);
@@ -9466,7 +10115,7 @@ to {
9466
10115
  transform: translateY(0.75rem);
9467
10116
  }
9468
10117
  }
9469
- @keyframes ui-toast-enter-bottom-cab264c9 {
10118
+ @keyframes ui-toast-enter-bottom-1bebce00 {
9470
10119
  from {
9471
10120
  opacity: 0;
9472
10121
  transform: translateY(1rem);
@@ -9476,7 +10125,7 @@ to {
9476
10125
  transform: translateY(0);
9477
10126
  }
9478
10127
  }
9479
- @keyframes ui-toast-exit-bottom-cab264c9 {
10128
+ @keyframes ui-toast-exit-bottom-1bebce00 {
9480
10129
  from {
9481
10130
  opacity: 1;
9482
10131
  transform: translateY(0);
@@ -9567,7 +10216,7 @@ to {
9567
10216
  --_ui-toast-region-shadow,
9568
10217
  var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg)))
9569
10218
  );
9570
- animation: ui-toast-enter-cab264c9 var(--_ui-toast-region-enter-duration, 0.32s)
10219
+ animation: ui-toast-enter-1bebce00 var(--_ui-toast-region-enter-duration, 0.32s)
9571
10220
  var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1)) both;
9572
10221
  }
9573
10222
  .toast[data-tone="info"]:where([data-hn-ui-toast-region]) {
@@ -9587,17 +10236,17 @@ to {
9587
10236
  --_ui-toast-region-tone-surface: var(--ui-danger-soft);
9588
10237
  }
9589
10238
  .toast.closing:where([data-hn-ui-toast-region]) {
9590
- animation: ui-toast-exit-cab264c9 var(--_ui-toast-region-exit-duration, 0.22s) var(--ui-motion-ease)
10239
+ animation: ui-toast-exit-1bebce00 var(--_ui-toast-region-exit-duration, 0.22s) var(--ui-motion-ease)
9591
10240
  both;
9592
10241
  pointer-events: none;
9593
10242
  }
9594
10243
  :is(:scope[data-ui-toast-region-state~="placement=bottom"], :scope[data-ui-toast-region-state~="placement=bottom-start"], :scope[data-ui-toast-region-state~="placement=bottom-end"])
9595
10244
  .toast:where([data-hn-ui-toast-region]) {
9596
- animation-name: ui-toast-enter-bottom-cab264c9;
10245
+ animation-name: ui-toast-enter-bottom-1bebce00;
9597
10246
  }
9598
10247
  :is(:scope[data-ui-toast-region-state~="placement=bottom"], :scope[data-ui-toast-region-state~="placement=bottom-start"], :scope[data-ui-toast-region-state~="placement=bottom-end"])
9599
10248
  .toast.closing:where([data-hn-ui-toast-region]) {
9600
- animation-name: ui-toast-exit-bottom-cab264c9;
10249
+ animation-name: ui-toast-exit-bottom-1bebce00;
9601
10250
  }
9602
10251
  @media (prefers-reduced-motion: reduce) {
9603
10252
  .toast:where([data-hn-ui-toast-region]),.toast.closing:where([data-hn-ui-toast-region]) {
@@ -9615,6 +10264,130 @@ to {
9615
10264
  display: none;
9616
10265
  }
9617
10266
  }
10267
+ @scope ([data-slotted~="ui-toast-region"]:not([data-hn])) to ([data-hn], [data-slotted]) {
10268
+ :where(.ui-toast-region):where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-toast-region"]))):where([data-hn-ui-toast-region]) {
10269
+ /* Hooks do not inherit, so the parts below read them from the root. */
10270
+ --_ui-toast-region-surface: var(--ui-toast-region-surface);
10271
+ --_ui-toast-region-border: var(--ui-toast-region-border);
10272
+ --_ui-toast-region-radius: var(--ui-toast-region-radius);
10273
+ --_ui-toast-region-shadow: var(--ui-toast-region-shadow);
10274
+ --_ui-toast-region-enter-duration: var(--ui-toast-region-enter-duration);
10275
+ --_ui-toast-region-exit-duration: var(--ui-toast-region-exit-duration);
10276
+
10277
+ position: fixed;
10278
+ top: calc(var(--ui-space-4) + env(safe-area-inset-top));
10279
+ right: auto;
10280
+ bottom: auto;
10281
+ left: 50%;
10282
+ transform: translateX(-50%);
10283
+ z-index: 9999;
10284
+ display: grid;
10285
+ gap: var(--ui-space-2);
10286
+ inline-size: min(24rem, calc(100vw - var(--ui-space-4) * 2));
10287
+ max-inline-size: 100%;
10288
+ box-sizing: border-box;
10289
+ margin: 0;
10290
+ padding: 0;
10291
+ overflow: visible;
10292
+ border: 0;
10293
+ outline: 0;
10294
+ background: transparent;
10295
+ box-shadow: none;
10296
+ pointer-events: none;
10297
+ }
10298
+ :where(.ui-toast-region):not(:popover-open):where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-toast-region"]))):where([data-hn-ui-toast-region]) {
10299
+ display: none;
10300
+ }
10301
+ :where(.ui-toast-region)[data-ui-toast-region-state~="placement=top-start"]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-toast-region"]))):where([data-hn-ui-toast-region]),:where(.ui-toast-region)[data-ui-toast-region-state~="placement=bottom-start"]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-toast-region"]))):where([data-hn-ui-toast-region]) {
10302
+ left: auto;
10303
+ right: auto;
10304
+ inset-inline-start: calc(var(--ui-space-4) + env(safe-area-inset-left));
10305
+ transform: none;
10306
+ }
10307
+ :where(.ui-toast-region)[data-ui-toast-region-state~="placement=top-end"]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-toast-region"]))):where([data-hn-ui-toast-region]),:where(.ui-toast-region)[data-ui-toast-region-state~="placement=bottom-end"]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-toast-region"]))):where([data-hn-ui-toast-region]) {
10308
+ left: auto;
10309
+ right: auto;
10310
+ inset-inline-end: calc(var(--ui-space-4) + env(safe-area-inset-right));
10311
+ transform: none;
10312
+ }
10313
+ :where(.ui-toast-region)[data-ui-toast-region-state~="placement=bottom"]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-toast-region"]))):where([data-hn-ui-toast-region]),:where(.ui-toast-region)[data-ui-toast-region-state~="placement=bottom-start"]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-toast-region"]))):where([data-hn-ui-toast-region]),:where(.ui-toast-region)[data-ui-toast-region-state~="placement=bottom-end"]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-toast-region"]))):where([data-hn-ui-toast-region]) {
10314
+ top: auto;
10315
+ bottom: calc(var(--ui-space-4) + env(safe-area-inset-bottom));
10316
+ }
10317
+ .toast:where(:scope, :scope *):where([data-hn-ui-toast-region]) {
10318
+ --_ui-toast-region-accent: var(--ui-border-strong);
10319
+ --_ui-toast-region-tone-surface: var(--ui-surface-muted);
10320
+ display: grid;
10321
+ grid-template-columns: 1fr auto;
10322
+ gap: var(--ui-space-2);
10323
+ align-items: start;
10324
+ border: var(--ui-border-width) solid
10325
+ var(--_ui-toast-region-border, var(--ui-overlay-border, var(--_ui-toast-region-accent)));
10326
+ border-radius: var(--_ui-toast-region-radius, var(--ui-overlay-radius, var(--ui-radius-lg)));
10327
+ padding: var(--ui-space-3) var(--ui-space-4);
10328
+ /* The close button's internal space supplies the rest of the trailing inset. */
10329
+ padding-inline-end: var(--ui-space-2);
10330
+ background: var(
10331
+ --_ui-toast-region-surface,
10332
+ var(--ui-overlay-surface, var(--_ui-toast-region-tone-surface))
10333
+ );
10334
+ color: var(--ui-text-primary);
10335
+ font-family: var(--ui-font-family-sans);
10336
+ font-size: var(--ui-font-size-sm);
10337
+ font-weight: var(--ui-font-normal);
10338
+ line-height: var(--ui-line-height-md);
10339
+ box-shadow: var(
10340
+ --_ui-toast-region-shadow,
10341
+ var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg)))
10342
+ );
10343
+ animation: ui-toast-enter-1bebce00 var(--_ui-toast-region-enter-duration, 0.32s)
10344
+ var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1)) both;
10345
+ }
10346
+ .toast[data-tone="info"]:where(:scope, :scope *):where([data-hn-ui-toast-region]) {
10347
+ --_ui-toast-region-accent: var(--ui-info-solid);
10348
+ --_ui-toast-region-tone-surface: var(--ui-info-soft);
10349
+ }
10350
+ .toast[data-tone="success"]:where(:scope, :scope *):where([data-hn-ui-toast-region]) {
10351
+ --_ui-toast-region-accent: var(--ui-success-solid);
10352
+ --_ui-toast-region-tone-surface: var(--ui-success-soft);
10353
+ }
10354
+ .toast[data-tone="warning"]:where(:scope, :scope *):where([data-hn-ui-toast-region]) {
10355
+ --_ui-toast-region-accent: var(--ui-warning-solid);
10356
+ --_ui-toast-region-tone-surface: var(--ui-warning-soft);
10357
+ }
10358
+ .toast[data-tone="danger"]:where(:scope, :scope *):where([data-hn-ui-toast-region]) {
10359
+ --_ui-toast-region-accent: var(--ui-danger-solid);
10360
+ --_ui-toast-region-tone-surface: var(--ui-danger-soft);
10361
+ }
10362
+ .toast.closing:where(:scope, :scope *):where([data-hn-ui-toast-region]) {
10363
+ animation: ui-toast-exit-1bebce00 var(--_ui-toast-region-exit-duration, 0.22s) var(--ui-motion-ease)
10364
+ both;
10365
+ pointer-events: none;
10366
+ }
10367
+ :is(:where(.ui-toast-region)[data-ui-toast-region-state~="placement=bottom"], :where(.ui-toast-region)[data-ui-toast-region-state~="placement=bottom-start"], :where(.ui-toast-region)[data-ui-toast-region-state~="placement=bottom-end"])
10368
+ .toast:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-toast-region"]))):where([data-hn-ui-toast-region]) {
10369
+ animation-name: ui-toast-enter-bottom-1bebce00;
10370
+ }
10371
+ :is(:where(.ui-toast-region)[data-ui-toast-region-state~="placement=bottom"], :where(.ui-toast-region)[data-ui-toast-region-state~="placement=bottom-start"], :where(.ui-toast-region)[data-ui-toast-region-state~="placement=bottom-end"])
10372
+ .toast.closing:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-toast-region"]))):where([data-hn-ui-toast-region]) {
10373
+ animation-name: ui-toast-exit-bottom-1bebce00;
10374
+ }
10375
+ @media (prefers-reduced-motion: reduce) {
10376
+ .toast:where(:scope, :scope *):where([data-hn-ui-toast-region]),.toast.closing:where(:scope, :scope *):where([data-hn-ui-toast-region]) {
10377
+ animation: none;
10378
+ }
10379
+ }
10380
+ .message:where(:scope, :scope *):where([data-hn-ui-toast-region]) {
10381
+ min-inline-size: 0;
10382
+ align-self: center;
10383
+ }
10384
+ .dismiss:where(:scope, :scope *):where([data-hn-ui-toast-region]) {
10385
+ align-self: center;
10386
+ }
10387
+ :where(.ui-toast-region)[hidden]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-toast-region"]))):where([data-hn-ui-toast-region]) {
10388
+ display: none;
10389
+ }
10390
+ }
9618
10391
 
9619
10392
  /* This component's hooks style the element they are set on, and never a nested one. */
9620
10393
  @property --ui-top-bar-actions-gap {
@@ -9718,107 +10491,625 @@ to {
9718
10491
  :scope[data-ui-tree-state~="marquee"]:where([data-hn-ui-tree]) {
9719
10492
  --_ui-default-tree-item-marquee: 1;
9720
10493
  }
9721
- :scope[data-ui-tree-state~="density=compact"]:where([data-hn-ui-tree]) {
9722
- --_ui-default-tree-item-min-block-size: var(--ui-control-size-sm);
9723
- --_ui-default-tree-item-font-size: var(--ui-font-size-sm);
9724
- --_ui-default-tree-item-label-padding-block: 0;
10494
+ :scope[data-ui-tree-state~="density=compact"]:where([data-hn-ui-tree]) {
10495
+ --_ui-default-tree-item-min-block-size: var(--ui-control-size-sm);
10496
+ --_ui-default-tree-item-font-size: var(--ui-font-size-sm);
10497
+ --_ui-default-tree-item-label-padding-block: 0;
10498
+ }
10499
+ :scope:where([data-hn-ui-tree]) {
10500
+ /* Hooks do not inherit: the tree hands its own to its items here, and a tree nested in an item
10501
+ starts again from its own settings. */
10502
+ --_ui-tree-indent: var(--ui-tree-indent);
10503
+ --_ui-tree-drop-color: var(--ui-tree-drop-color);
10504
+ --_ui-default-tree-item-marquee: initial;
10505
+ --_ui-default-tree-item-min-block-size: initial;
10506
+ --_ui-default-tree-item-font-size: initial;
10507
+ --_ui-default-tree-item-label-padding-block: initial;
10508
+ display: block;
10509
+ min-inline-size: 0;
10510
+ padding-inline-start: var(--ui-tree-gutter, 0px);
10511
+ }
10512
+ :scope[data-move-mode]:where([data-hn-ui-tree])::after {
10513
+ content: "Choose a destination row, or use Up and Down; Right nests inside a branch. Enter places it, Escape cancels.";
10514
+ display: block;
10515
+ padding: var(--ui-space-2);
10516
+ color: var(--ui-text-secondary);
10517
+ font-size: var(--ui-font-size-sm);
10518
+ }
10519
+ :scope[hidden]:where([data-hn-ui-tree]) {
10520
+ display: none;
10521
+ }
10522
+ }
10523
+
10524
+ /* This component's hooks style the element they are set on, and never a nested one. */
10525
+ @property --ui-tree-item-depth {
10526
+ syntax: "*";
10527
+ inherits: false;
10528
+ }
10529
+ @property --ui-tree-item-font-size {
10530
+ syntax: "*";
10531
+ inherits: false;
10532
+ }
10533
+ @property --ui-tree-item-label-padding-block {
10534
+ syntax: "*";
10535
+ inherits: false;
10536
+ }
10537
+ @property --ui-tree-item-label-padding-inline {
10538
+ syntax: "*";
10539
+ inherits: false;
10540
+ }
10541
+ @property --ui-tree-item-min-block-size {
10542
+ syntax: "*";
10543
+ inherits: false;
10544
+ }
10545
+
10546
+ /* Selection is the same surface recipe as destination and choice rows. */
10547
+
10548
+ /* Child combinators: drop feedback belongs to this item's own row, not the rows nested in it. */
10549
+
10550
+ /* Lucide grip-vertical, filling the handle as in Looma 0.2. */
10551
+
10552
+ /* Slotted content is outside this scope, so :has() cannot see it; hide only a truly empty slot. */
10553
+
10554
+ /* Icons match the label's size (as in Knit's tree): an unsized SVG would otherwise render 300×150. */
10555
+
10556
+ /* The label spans the row's height and centres its content, so slotted content (a link) can
10557
+ stretch to fill the row as its own hit area; the padding tokens remove the inset. */
10558
+
10559
+ /* Slotted label content fills the cell, so a link is the row's hit area rather than sizing to
10560
+ its own text and reading as overflow. */
10561
+
10562
+ /* The controls sit over the label's end, so the text fades out where they begin. The fade is
10563
+ the truncation mark while it shows: an ellipsis under it would read as a second one. */
10564
+
10565
+ /* A hovered row reads its whole name: the label slides far enough to show the end, rests
10566
+ there, and starts again. Only when it actually overflows — the controller measures by how
10567
+ much — after the controls have taken their place over its end — and hands over the distance
10568
+ and a duration from it, so every name moves at the same speed. */
10569
+
10570
+ /* This comes after the hover fade, which it replaces at the same specificity. While the name
10571
+ slides, the label reaches back under the icon (the controller measures how far) with its text
10572
+ where it was, and fades out across the gap before the icon, fully gone where the icon begins
10573
+ to cover it: the name slips under the icon rather than stopping at a hard edge beside it. */
10574
+ @keyframes ui-tree-item-marquee-fc4c8748 {
10575
+ from {
10576
+ transform: translateX(0);
10577
+ }
10578
+ to {
10579
+ transform: translateX(var(--_marquee-distance));
10580
+ }
10581
+ }
10582
+
10583
+ /* Reduced motion keeps the fade, which already says the name continues. */
10584
+
10585
+ /* Without hover there is no reveal, so the controls keep their own column. */
10586
+
10587
+ /* The handle sits beside what it drags. A leaf row has no disclosure, so the handle takes that
10588
+ empty column, right before the icon; a branch's disclosure is there, so its handle sits just
10589
+ outside the row. It is bare until pointed at: a resting surface behind it read as a faint
10590
+ patch rather than as a control. */
10591
+
10592
+ /* A component that sets its display still honours the hidden attribute on its root. */
10593
+ @scope (.ui-tree-item) to ([data-hn]) {
10594
+ :scope:where([data-hn-ui-tree-item]) {
10595
+ /* Hooks do not inherit, so the parts below read them from the root. The tree's density
10596
+ sets the defaults, in --_ui-default-*. */
10597
+ --_ui-tree-item-min-block-size: var(
10598
+ --ui-tree-item-min-block-size,
10599
+ var(--_ui-default-tree-item-min-block-size)
10600
+ );
10601
+ --_ui-tree-item-font-size: var(
10602
+ --ui-tree-item-font-size,
10603
+ var(--_ui-default-tree-item-font-size)
10604
+ );
10605
+ --_ui-tree-item-label-padding-block: var(
10606
+ --ui-tree-item-label-padding-block,
10607
+ var(--_ui-default-tree-item-label-padding-block)
10608
+ );
10609
+ --_ui-tree-item-label-padding-inline: var(--ui-tree-item-label-padding-inline);
10610
+
10611
+ --_tree-row-min-height: 32px;
10612
+ --_tree-disclosure-size: 16px;
10613
+
10614
+ position: relative;
10615
+ display: block;
10616
+ min-inline-size: 0;
10617
+ margin-inline-start: calc(var(--_ui-tree-item-indent-step, 0) * var(--_ui-tree-indent, 16px));
10618
+ }
10619
+ .row:where([data-hn-ui-tree-item]) {
10620
+ position: relative;
10621
+ display: grid;
10622
+ grid-template-columns: var(--_tree-disclosure-size) auto minmax(0, 1fr);
10623
+ align-items: center;
10624
+ min-block-size: var(--_ui-tree-item-min-block-size, var(--_tree-row-min-height));
10625
+ min-inline-size: 0;
10626
+ font-size: var(--_ui-tree-item-font-size, var(--ui-font-size-sm));
10627
+ border-radius: var(--ui-selection-radius);
10628
+ color: var(--ui-text-secondary);
10629
+ transition:
10630
+ background-color var(--ui-motion-fast) var(--ui-motion-ease),
10631
+ color var(--ui-motion-fast) var(--ui-motion-ease),
10632
+ opacity var(--ui-motion-fast) var(--ui-motion-ease),
10633
+ box-shadow var(--ui-motion-fast) var(--ui-motion-ease),
10634
+ min-block-size var(--ui-motion-base) var(--ui-motion-ease);
10635
+ }
10636
+ .row:hover:where([data-hn-ui-tree-item]),.row:focus-within:where([data-hn-ui-tree-item]) {
10637
+ color: var(--ui-text-primary);
10638
+ background: var(--_ui-selection-context-surface, var(--ui-surface-muted));
10639
+ box-shadow: inset 0 0 0 var(--ui-border-width)
10640
+ var(--_ui-selection-context-border, var(--ui-selection-border));
10641
+ }
10642
+ :scope[data-ui-tree-item-state~="selected"] > .row:where([data-hn-ui-tree-item]) {
10643
+ color: var(--_ui-selection-context-text, var(--ui-selection-text));
10644
+ background: var(--_ui-selection-context-surface, var(--ui-selection-surface));
10645
+ box-shadow: inset 0 0 0 var(--ui-border-width)
10646
+ var(--_ui-selection-context-border, var(--ui-selection-border));
10647
+ }
10648
+ :scope[data-ui-tree-item-state~="selected"]:not([aria-disabled="true"])
10649
+ > .row
10650
+ > .leading:where([data-hn-ui-tree-item]) {
10651
+ color: var(--_ui-selection-context-text, var(--ui-selection-text));
10652
+ }
10653
+ :scope[data-ui-tree-item-state~="disabled"] .row:where([data-hn-ui-tree-item]) {
10654
+ color: var(--ui-disabled-text);
10655
+ background: var(--ui-disabled-surface);
10656
+ box-shadow: none;
10657
+ }
10658
+ :scope[data-dragging]:not([data-move-source]) .row:where([data-hn-ui-tree-item]) {
10659
+ opacity: 0.42;
10660
+ }
10661
+ :scope[data-move-source] > .row > .label:where([data-hn-ui-tree-item]),:scope[data-move-source] > .row > .leading:where([data-hn-ui-tree-item]) {
10662
+ opacity: 0.42;
10663
+ }
10664
+ :scope:focus:where([data-hn-ui-tree-item]) {
10665
+ outline: none;
10666
+ }
10667
+ :scope:focus-visible .row:where([data-hn-ui-tree-item]) {
10668
+ box-shadow: 0 0 0 var(--ui-focus-width) var(--ui-focus-ring);
10669
+ }
10670
+ :scope[data-drop-position="inside"] > .row:where([data-hn-ui-tree-item]) {
10671
+ background: var(--ui-accent-subtle);
10672
+ box-shadow: inset 0 0 0 var(--ui-accent-line-width)
10673
+ var(--_ui-tree-drop-color, var(--ui-accent-solid));
10674
+ }
10675
+ .disclosure:where([data-hn-ui-tree-item]),.disclosure-spacer:where([data-hn-ui-tree-item]) {
10676
+ grid-column: 1;
10677
+ grid-row: 1;
10678
+ inline-size: var(--_tree-disclosure-size);
10679
+ block-size: 28px;
10680
+ }
10681
+ .disclosure:where([data-hn-ui-tree-item]) {
10682
+ display: grid;
10683
+ /* Start-aligned: the chevron's ink, not its hit area, aligns with the content above it. */
10684
+ place-items: center start;
10685
+ padding: 0;
10686
+ color: var(--ui-text-muted);
10687
+ background: transparent;
10688
+ border: 0;
10689
+ border-radius: var(--ui-radius-sm);
10690
+ cursor: pointer;
10691
+ }
10692
+ .disclosure[hidden]:where([data-hn-ui-tree-item]) {
10693
+ display: none;
10694
+ }
10695
+ .selection-hit:where([data-hn-ui-tree-item]) {
10696
+ display: none;
10697
+ grid-column: 2;
10698
+ grid-row: 1;
10699
+ place-items: center;
10700
+ inline-size: 1.25rem;
10701
+ block-size: var(--_ui-tree-item-min-block-size, var(--_tree-row-min-height));
10702
+ cursor: pointer;
10703
+ }
10704
+ .selection-checkbox:where([data-hn-ui-tree-item]) {
10705
+ inline-size: 1rem;
10706
+ block-size: 1rem;
10707
+ margin: 0;
10708
+ accent-color: var(--ui-accent-solid);
10709
+ }
10710
+ :scope[data-selection-mode="multiple"] > .row:where([data-hn-ui-tree-item]) {
10711
+ grid-template-columns: var(--_tree-disclosure-size) 1.25rem auto minmax(0, 1fr);
10712
+ }
10713
+ :scope[data-selection-mode="multiple"]
10714
+ > .row
10715
+ > .selection-hit:where([data-hn-ui-tree-item]) {
10716
+ display: grid;
10717
+ }
10718
+ :scope[data-selection-mode="multiple"] > .row > .leading:where([data-hn-ui-tree-item]) {
10719
+ grid-column: 3;
10720
+ }
10721
+ :scope[data-selection-mode="multiple"] > .row > .label:where([data-hn-ui-tree-item]) {
10722
+ grid-column: 4;
10723
+ }
10724
+ .disclosure:hover:where([data-hn-ui-tree-item]) {
10725
+ color: var(--ui-text-primary);
10726
+ background: var(--ui-surface-elevated);
10727
+ }
10728
+ .disclosure-icon:where([data-hn-ui-tree-item]) {
10729
+ display: grid;
10730
+ place-items: center;
10731
+ inline-size: 12px;
10732
+ block-size: 12px;
10733
+ transform: rotate(-90deg);
10734
+ transition: transform var(--ui-motion-fast) var(--ui-motion-ease);
10735
+ }
10736
+ .disclosure-icon:where([data-hn-ui-tree-item])::before {
10737
+ display: block;
10738
+ inline-size: 0.375rem;
10739
+ block-size: 0.375rem;
10740
+ border-inline-end: 1.5px solid currentColor;
10741
+ border-block-end: 1.5px solid currentColor;
10742
+ content: "";
10743
+ /* A chevron's ink sits below its box centre; lift it so it centres optically (in either rotation). */
10744
+ transform: translateY(-20%) rotate(45deg);
10745
+ }
10746
+ :scope[aria-expanded="true"]
10747
+ > .row
10748
+ > .disclosure
10749
+ > .disclosure-icon:where([data-hn-ui-tree-item]) {
10750
+ transform: rotate(0deg);
10751
+ }
10752
+ .drag-handle svg:where([data-hn-ui-tree-item]) {
10753
+ display: block;
10754
+ inline-size: 100%;
10755
+ block-size: 100%;
10756
+ }
10757
+ .leading:where([data-hn-ui-tree-item]) {
10758
+ display: inline-grid;
10759
+ place-items: center;
10760
+ grid-column: 2;
10761
+ grid-row: 1;
10762
+ inline-size: 1em;
10763
+ block-size: 1em;
10764
+ margin-inline-start: var(--ui-space-1);
10765
+ color: var(--ui-text-muted);
10766
+ /* Above the label, so a sliding name passes under the icon. */
10767
+ position: relative;
10768
+ z-index: 1;
10769
+ }
10770
+ .leading:empty:where([data-hn-ui-tree-item]) {
10771
+ display: none;
10772
+ }
10773
+ :where(:not([data-hn-ui-tree-item])):is(svg),:where(:not([data-hn-ui-tree-item])):is(img) {
10774
+ display: block;
10775
+ inline-size: 1em;
10776
+ block-size: 1em;
10777
+ flex: none;
10778
+ }
10779
+ .label:where([data-hn-ui-tree-item]) {
10780
+ grid-column: 3;
10781
+ grid-row: 1;
10782
+ align-self: stretch;
10783
+ display: flex;
10784
+ align-items: center;
10785
+ min-inline-size: 0;
10786
+ /* The cell clips: a name longer than the row slides inside it rather than over its icons. */
10787
+ overflow: hidden;
10788
+ padding: var(--_ui-tree-item-label-padding-block, var(--ui-space-1))
10789
+ var(--_ui-tree-item-label-padding-inline, var(--ui-space-2));
10790
+ /* The length of the fade before the controls. The label's one flex child lays out no gap; this
10791
+ is where the controller reads the length in pixels to stop a sliding name before the fade. */
10792
+ column-gap: var(--ui-space-1);
10793
+ }
10794
+ .label-text:where([data-hn-ui-tree-item]) {
10795
+ display: flex;
10796
+ align-items: center;
10797
+ /* Stretches, so slotted content can still be the row's full-height hit area. */
10798
+ align-self: stretch;
10799
+ block-size: 100%;
10800
+ min-inline-size: 0;
10801
+ inline-size: 100%;
10802
+ white-space: nowrap;
10803
+ }
10804
+ .label-text > :where(:not([data-hn-ui-tree-item])):is(*) {
10805
+ flex: 1 1 auto;
10806
+ min-inline-size: 0;
10807
+ }
10808
+ .row:hover > .label:where([data-hn-ui-tree-item]),.row:focus-within > .label:where([data-hn-ui-tree-item]),:scope[data-ui-tree-item-state~="actionsVisible"]
10809
+ > .row
10810
+ > .label:where([data-hn-ui-tree-item]),:scope[data-move-source] > .row > .label:where([data-hn-ui-tree-item]) {
10811
+ text-overflow: clip;
10812
+ mask-image: linear-gradient(
10813
+ to right,
10814
+ #000 calc(100% - var(--_tree-actions-width, 1.75rem) - var(--ui-space-1)),
10815
+ transparent calc(100% - var(--_tree-actions-width, 1.75rem))
10816
+ );
10817
+ }
10818
+ .row:hover > .label:dir(rtl):where([data-hn-ui-tree-item]),.row:focus-within > .label:dir(rtl):where([data-hn-ui-tree-item]),:scope[data-ui-tree-item-state~="actionsVisible"]
10819
+ > .row
10820
+ > .label:dir(rtl):where([data-hn-ui-tree-item]),:scope[data-move-source] > .row > .label:dir(rtl):where([data-hn-ui-tree-item]) {
10821
+ mask-image: linear-gradient(
10822
+ to left,
10823
+ #000 calc(100% - var(--_tree-actions-width, 1.75rem) - var(--ui-space-1)),
10824
+ transparent calc(100% - var(--_tree-actions-width, 1.75rem))
10825
+ );
10826
+ }
10827
+ .row[data-ui-marquee] > .label > .label-text:where([data-hn-ui-tree-item]) {
10828
+ /* Once per pass: the controller restarts it after a rest at the end, so the name holds still
10829
+ long enough to read rather than sliding back and forth. */
10830
+ animation: ui-tree-item-marquee-fc4c8748 var(--_marquee-duration) linear 0.5s 1 normal forwards;
10831
+ will-change: transform;
10832
+ }
10833
+ .row[data-ui-marquee] > .label:where([data-hn-ui-tree-item]) {
10834
+ margin-inline-start: calc(-1 * var(--_marquee-lead, 0px));
10835
+ padding-inline-start: calc(
10836
+ var(--_marquee-lead, 0px) + var(--_ui-tree-item-label-padding-inline, var(--ui-space-2))
10837
+ );
10838
+ mask-image: linear-gradient(
10839
+ to right,
10840
+ transparent var(--_marquee-icon-width, 0px),
10841
+ #000 calc(
10842
+ var(--_marquee-lead, 0px) + var(--_ui-tree-item-label-padding-inline, var(--ui-space-2))
10843
+ ),
10844
+ #000 calc(100% - var(--_tree-actions-width, 1.75rem) - var(--ui-space-1)),
10845
+ transparent calc(100% - var(--_tree-actions-width, 1.75rem))
10846
+ );
10847
+ }
10848
+ .row[data-ui-marquee] > .label:dir(rtl):where([data-hn-ui-tree-item]) {
10849
+ mask-image: linear-gradient(
10850
+ to left,
10851
+ transparent var(--_marquee-icon-width, 0px),
10852
+ #000 calc(
10853
+ var(--_marquee-lead, 0px) + var(--_ui-tree-item-label-padding-inline, var(--ui-space-2))
10854
+ ),
10855
+ #000 calc(100% - var(--_tree-actions-width, 1.75rem) - var(--ui-space-1)),
10856
+ transparent calc(100% - var(--_tree-actions-width, 1.75rem))
10857
+ );
10858
+ }
10859
+ @media (prefers-reduced-motion: reduce) {
10860
+ .row[data-ui-marquee] > .label > .label-text:where([data-hn-ui-tree-item]) {
10861
+ animation: none;
10862
+ }
10863
+ }
10864
+ .row:hover > .label > :where(:not([data-hn-ui-tree-item])):is(*),.row:focus-within > .label > :where(:not([data-hn-ui-tree-item])):is(*) {
10865
+ text-overflow: clip;
10866
+ }
10867
+ .actions:where([data-hn-ui-tree-item]) {
10868
+ position: absolute;
10869
+ z-index: 1;
10870
+ inset-block: 0;
10871
+ inset-inline-end: 0;
10872
+ display: inline-flex;
10873
+ align-items: center;
10874
+ min-inline-size: 0;
10875
+ opacity: 0;
10876
+ pointer-events: none;
10877
+ transition: opacity var(--ui-motion-fast) var(--ui-motion-ease);
10878
+ }
10879
+ .row:hover > .actions:where([data-hn-ui-tree-item]),.row:focus-within > .actions:where([data-hn-ui-tree-item]),:scope[data-ui-tree-item-state~="actionsVisible"]
10880
+ > .row
10881
+ > .actions:where([data-hn-ui-tree-item]),:scope[data-move-source] > .row > .actions:where([data-hn-ui-tree-item]) {
10882
+ opacity: 1;
10883
+ pointer-events: auto;
10884
+ }
10885
+ @media (hover: none), (pointer: coarse) {
10886
+ .row:where([data-hn-ui-tree-item]) {
10887
+ grid-template-columns: var(--_tree-disclosure-size) auto minmax(0, 1fr) auto;
10888
+ }
10889
+ .actions:where([data-hn-ui-tree-item]) {
10890
+ position: static;
10891
+ grid-column: 4;
10892
+ grid-row: 1;
10893
+ padding-inline-start: 0;
10894
+ background: none;
10895
+ opacity: 1;
10896
+ pointer-events: auto;
10897
+ }
10898
+ .row:is(:hover, :focus-within) > .label:where([data-hn-ui-tree-item]),.row:is(:hover, :focus-within) > .label:dir(rtl):where([data-hn-ui-tree-item]),:scope[data-move-source] > .row > .label:where([data-hn-ui-tree-item]),:scope[data-move-source] > .row > .label:dir(rtl):where([data-hn-ui-tree-item]) {
10899
+ mask-image: none;
10900
+ }
10901
+ .row[data-ui-marquee] > .label:where([data-hn-ui-tree-item]) {
10902
+ mask-image: linear-gradient(
10903
+ to right,
10904
+ transparent var(--_marquee-icon-width, 0px),
10905
+ #000 calc(
10906
+ var(--_marquee-lead, 0px) + var(--_ui-tree-item-label-padding-inline, var(--ui-space-2))
10907
+ )
10908
+ );
10909
+ }
10910
+
10911
+ /* Persistent content has its own column on touch. Fade only the label's end. */
10912
+ :scope[data-ui-tree-item-state~="actionsVisible"]
10913
+ > .row
10914
+ > .label:where([data-hn-ui-tree-item]) {
10915
+ mask-image: linear-gradient(to right, #000 calc(100% - var(--ui-space-1)), transparent 100%);
10916
+ }
10917
+ :scope[data-ui-tree-item-state~="actionsVisible"]
10918
+ > .row
10919
+ > .label:dir(rtl):where([data-hn-ui-tree-item]) {
10920
+ mask-image: linear-gradient(to left, #000 calc(100% - var(--ui-space-1)), transparent 100%);
10921
+ }
10922
+ .row[data-ui-marquee] > .label:dir(rtl):where([data-hn-ui-tree-item]) {
10923
+ mask-image: linear-gradient(
10924
+ to left,
10925
+ transparent var(--_marquee-icon-width, 0px),
10926
+ #000 calc(
10927
+ var(--_marquee-lead, 0px) + var(--_ui-tree-item-label-padding-inline, var(--ui-space-2))
10928
+ )
10929
+ );
10930
+ }
10931
+ :scope[data-selection-mode="multiple"] > .row:where([data-hn-ui-tree-item]) {
10932
+ grid-template-columns: var(--_tree-disclosure-size) 1.25rem auto minmax(0, 1fr) auto;
10933
+ }
10934
+ :scope[data-selection-mode="multiple"]
10935
+ > .row
10936
+ > .actions:where([data-hn-ui-tree-item]) {
10937
+ grid-column: 5;
10938
+ }
10939
+ }
10940
+ .drag-handle:where([data-hn-ui-tree-item]) {
10941
+ position: absolute;
10942
+ z-index: 2;
10943
+ inset-block-start: 50%;
10944
+ inset-inline-start: 0;
10945
+ inline-size: var(--_tree-disclosure-size);
10946
+ block-size: 24px;
10947
+ display: grid;
10948
+ place-items: center;
10949
+ padding: 5px 2px;
10950
+ color: var(--ui-text-muted);
10951
+ background: transparent;
10952
+ border: 0;
10953
+ border-radius: var(--ui-radius-sm);
10954
+ cursor: grab;
10955
+ /* Hidden until the row is hovered, but always hittable: the handle sits outside the row, and moving
10956
+ the pointer onto it must not hide it on the way. */
10957
+ opacity: 0;
10958
+ transform: translateY(-50%);
10959
+ transition: opacity var(--ui-motion-fast) var(--ui-motion-ease);
10960
+ }
10961
+ .row:hover .drag-handle:where([data-hn-ui-tree-item]),.drag-handle:hover:where([data-hn-ui-tree-item]),.drag-handle:focus-visible:where([data-hn-ui-tree-item]),:scope[data-dragging] > .row > .drag-handle:where([data-hn-ui-tree-item]) {
10962
+ opacity: 1;
10963
+ }
10964
+ :scope[data-ui-tree-item-state~="isContainer"]
10965
+ > .row
10966
+ > .drag-handle:where([data-hn-ui-tree-item]) {
10967
+ inset-inline-start: calc(-1 * var(--_tree-disclosure-size) - 2px);
10968
+ }
10969
+ .drag-handle:hover:where([data-hn-ui-tree-item]),.drag-handle:focus-visible:where([data-hn-ui-tree-item]) {
10970
+ color: var(--ui-text-primary);
10971
+ background: var(--ui-surface-hover);
10972
+ }
10973
+ .drag-handle:active:where([data-hn-ui-tree-item]) {
10974
+ cursor: grabbing;
10975
+ }
10976
+ .drop-indicator:where([data-hn-ui-tree-item]) {
10977
+ position: absolute;
10978
+ z-index: 3;
10979
+ inset-inline: 1px;
10980
+ display: none;
10981
+ block-size: var(--ui-accent-line-width);
10982
+ border-radius: var(--ui-radius-round);
10983
+ background: var(--_ui-tree-drop-color, var(--ui-accent-solid));
10984
+ pointer-events: none;
10985
+ }
10986
+ .drop-indicator:where([data-hn-ui-tree-item])::before,.drop-indicator:where([data-hn-ui-tree-item])::after {
10987
+ content: "";
10988
+ position: absolute;
10989
+ inset-block-start: 50%;
10990
+ inline-size: 7px;
10991
+ block-size: 7px;
10992
+ border: var(--ui-accent-line-width) solid var(--_ui-tree-drop-color, var(--ui-accent-solid));
10993
+ border-radius: var(--ui-radius-round);
10994
+ background: var(--ui-surface-elevated);
10995
+ transform: translateY(-50%);
10996
+ }
10997
+ .drop-indicator:where([data-hn-ui-tree-item])::before {
10998
+ inset-inline-start: -1px;
10999
+ }
11000
+ .drop-indicator:where([data-hn-ui-tree-item])::after {
11001
+ inset-inline-end: -1px;
11002
+ }
11003
+ :scope[data-drop-position="before"]
11004
+ > .row
11005
+ > .row-drop-indicator:where([data-hn-ui-tree-item]) {
11006
+ display: block;
11007
+ inset-block-start: calc(-0.5 * var(--ui-accent-line-width));
11008
+ }
11009
+ :scope[data-drop-position="after"]
11010
+ > .subtree-drop-indicator:where([data-hn-ui-tree-item]) {
11011
+ display: block;
11012
+ inset-block-end: calc(-0.5 * var(--ui-accent-line-width));
11013
+ }
11014
+ .children[hidden]:where([data-hn-ui-tree-item]) {
11015
+ display: none;
11016
+ }
11017
+ html[data-ui-input-modality="touch"] :scope:where([data-hn-ui-tree-item]) {
11018
+ --_tree-row-min-height: 44px;
11019
+ }
11020
+ html[data-ui-input-modality="touch"] :scope .row:where([data-hn-ui-tree-item]) {
11021
+ grid-template-columns: 44px var(--_tree-disclosure-size) auto minmax(0, 1fr);
11022
+ }
11023
+ html[data-ui-input-modality="touch"] :scope .drag-handle:where([data-hn-ui-tree-item]),html[data-ui-input-modality="touch"]
11024
+ :scope[data-ui-tree-item-state~="isContainer"]
11025
+ > .row
11026
+ > .drag-handle:where([data-hn-ui-tree-item]) {
11027
+ position: relative;
11028
+ grid-column: 1;
11029
+ grid-row: 1;
11030
+ inset: auto;
11031
+ inline-size: 44px;
11032
+ block-size: 44px;
11033
+ padding: 14px;
11034
+ opacity: 1;
11035
+ transform: none;
11036
+ cursor: pointer;
11037
+ }
11038
+ html[data-ui-input-modality="touch"] :scope .disclosure:where([data-hn-ui-tree-item]) {
11039
+ grid-column: 2;
11040
+ }
11041
+ html[data-ui-input-modality="touch"] :scope .leading:where([data-hn-ui-tree-item]) {
11042
+ grid-column: 3;
11043
+ }
11044
+ html[data-ui-input-modality="touch"] :scope .label:where([data-hn-ui-tree-item]) {
11045
+ grid-column: 4;
11046
+ }
11047
+ html[data-ui-input-modality="touch"]
11048
+ :scope[data-selection-mode="multiple"]
11049
+ > .row:where([data-hn-ui-tree-item]) {
11050
+ grid-template-columns: 44px var(--_tree-disclosure-size) 44px auto minmax(0, 1fr);
11051
+ }
11052
+ html[data-ui-input-modality="touch"]
11053
+ :scope[data-selection-mode="multiple"]
11054
+ > .row
11055
+ > .selection-hit:where([data-hn-ui-tree-item]) {
11056
+ grid-column: 3;
11057
+ inline-size: 44px;
11058
+ block-size: 44px;
11059
+ }
11060
+ html[data-ui-input-modality="touch"]
11061
+ :scope[data-selection-mode="multiple"]
11062
+ > .row
11063
+ > .leading:where([data-hn-ui-tree-item]) {
11064
+ grid-column: 4;
9725
11065
  }
9726
- :scope:where([data-hn-ui-tree]) {
9727
- /* Hooks do not inherit: the tree hands its own to its items here, and a tree nested in an item
9728
- starts again from its own settings. */
9729
- --_ui-tree-indent: var(--ui-tree-indent);
9730
- --_ui-tree-drop-color: var(--ui-tree-drop-color);
9731
- --_ui-default-tree-item-marquee: initial;
9732
- --_ui-default-tree-item-min-block-size: initial;
9733
- --_ui-default-tree-item-font-size: initial;
9734
- --_ui-default-tree-item-label-padding-block: initial;
9735
- display: block;
9736
- min-inline-size: 0;
9737
- padding-inline-start: var(--ui-tree-gutter, 0px);
11066
+ html[data-ui-input-modality="touch"]
11067
+ :scope[data-selection-mode="multiple"]
11068
+ > .row
11069
+ > .label:where([data-hn-ui-tree-item]) {
11070
+ grid-column: 5;
9738
11071
  }
9739
- :scope[data-move-mode]:where([data-hn-ui-tree])::after {
9740
- content: "Choose a destination row, or use Up and Down; Right nests inside a branch. Enter places it, Escape cancels.";
9741
- display: block;
9742
- padding: var(--ui-space-2);
9743
- color: var(--ui-text-secondary);
9744
- font-size: var(--ui-font-size-sm);
11072
+ @media (hover: none), (pointer: coarse) {
11073
+ html[data-ui-input-modality="touch"] :scope .row:where([data-hn-ui-tree-item]) {
11074
+ grid-template-columns: 44px var(--_tree-disclosure-size) auto minmax(0, 1fr) auto;
9745
11075
  }
9746
- :scope[hidden]:where([data-hn-ui-tree]) {
9747
- display: none;
11076
+ html[data-ui-input-modality="touch"] :scope .actions:where([data-hn-ui-tree-item]) {
11077
+ grid-column: 5;
9748
11078
  }
11079
+ html[data-ui-input-modality="touch"]
11080
+ :scope[data-selection-mode="multiple"]
11081
+ > .row:where([data-hn-ui-tree-item]) {
11082
+ grid-template-columns: 44px var(--_tree-disclosure-size) 44px auto minmax(0, 1fr) auto;
9749
11083
  }
9750
-
9751
- /* This component's hooks style the element they are set on, and never a nested one. */
9752
- @property --ui-tree-item-depth {
9753
- syntax: "*";
9754
- inherits: false;
11084
+ html[data-ui-input-modality="touch"]
11085
+ :scope[data-selection-mode="multiple"]
11086
+ > .row
11087
+ > .actions:where([data-hn-ui-tree-item]) {
11088
+ grid-column: 6;
9755
11089
  }
9756
- @property --ui-tree-item-font-size {
9757
- syntax: "*";
9758
- inherits: false;
9759
11090
  }
9760
- @property --ui-tree-item-label-padding-block {
9761
- syntax: "*";
9762
- inherits: false;
11091
+ @media (prefers-reduced-motion: reduce) {
11092
+ .row:where([data-hn-ui-tree-item]),.disclosure-icon:where([data-hn-ui-tree-item]),.drag-handle:where([data-hn-ui-tree-item]) {
11093
+ transition: none;
9763
11094
  }
9764
- @property --ui-tree-item-label-padding-inline {
9765
- syntax: "*";
9766
- inherits: false;
9767
11095
  }
9768
- @property --ui-tree-item-min-block-size {
9769
- syntax: "*";
9770
- inherits: false;
11096
+ @media (forced-colors: active) {
11097
+ :scope:focus-visible > .row:where([data-hn-ui-tree-item]) {
11098
+ outline: var(--ui-focus-width) solid Highlight;
11099
+ outline-offset: calc(-1 * var(--ui-focus-width));
9771
11100
  }
9772
-
9773
- /* Selection is the same surface recipe as destination and choice rows. */
9774
-
9775
- /* Child combinators: drop feedback belongs to this item's own row, not the rows nested in it. */
9776
-
9777
- /* Lucide grip-vertical, filling the handle as in Looma 0.2. */
9778
-
9779
- /* Slotted content is outside this scope, so :has() cannot see it; hide only a truly empty slot. */
9780
-
9781
- /* Icons match the label's size (as in Knit's tree): an unsized SVG would otherwise render 300×150. */
9782
-
9783
- /* The label spans the row's height and centres its content, so slotted content (a link) can
9784
- stretch to fill the row as its own hit area; the padding tokens remove the inset. */
9785
-
9786
- /* Slotted label content fills the cell, so a link is the row's hit area rather than sizing to
9787
- its own text and reading as overflow. */
9788
-
9789
- /* The controls sit over the label's end, so the text fades out where they begin. The fade is
9790
- the truncation mark while it shows: an ellipsis under it would read as a second one. */
9791
-
9792
- /* A hovered row reads its whole name: the label slides far enough to show the end, rests
9793
- there, and starts again. Only when it actually overflows — the controller measures by how
9794
- much — after the controls have taken their place over its end — and hands over the distance
9795
- and a duration from it, so every name moves at the same speed. */
9796
-
9797
- /* This comes after the hover fade, which it replaces at the same specificity. While the name
9798
- slides, the label reaches back under the icon (the controller measures how far) with its text
9799
- where it was, and fades out across the gap before the icon, fully gone where the icon begins
9800
- to cover it: the name slips under the icon rather than stopping at a hard edge beside it. */
9801
- @keyframes ui-tree-item-marquee-16fe002b {
9802
- from {
9803
- transform: translateX(0);
11101
+ :scope[data-ui-tree-item-state~="selected"]:not(:focus-visible):not([aria-disabled="true"])
11102
+ > .row:where([data-hn-ui-tree-item]) {
11103
+ outline: var(--ui-border-width) solid Highlight;
11104
+ outline-offset: calc(-1 * var(--ui-border-width));
9804
11105
  }
9805
- to {
9806
- transform: translateX(var(--_marquee-distance));
9807
11106
  }
11107
+ :scope[hidden]:where([data-hn-ui-tree-item]) {
11108
+ display: none;
9808
11109
  }
9809
-
9810
- /* Reduced motion keeps the fade, which already says the name continues. */
9811
-
9812
- /* Without hover there is no reveal, so the controls keep their own column. */
9813
-
9814
- /* The handle sits beside what it drags. A leaf row has no disclosure, so the handle takes that
9815
- empty column, right before the icon; a branch's disclosure is there, so its handle sits just
9816
- outside the row. It is bare until pointed at: a resting surface behind it read as a faint
9817
- patch rather than as a control. */
9818
-
9819
- /* A component that sets its display still honours the hidden attribute on its root. */
9820
- @scope (.ui-tree-item) to ([data-hn]) {
9821
- :scope:where([data-hn-ui-tree-item]) {
11110
+ }
11111
+ @scope ([data-slotted~="ui-tree-item"]:not([data-hn])) to ([data-hn], [data-slotted]) {
11112
+ :where(.ui-tree-item):where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
9822
11113
  /* Hooks do not inherit, so the parts below read them from the root. The tree's density
9823
11114
  sets the defaults, in --_ui-default-*. */
9824
11115
  --_ui-tree-item-min-block-size: var(
@@ -9843,7 +11134,7 @@ to {
9843
11134
  min-inline-size: 0;
9844
11135
  margin-inline-start: calc(var(--_ui-tree-item-indent-step, 0) * var(--_ui-tree-indent, 16px));
9845
11136
  }
9846
- .row:where([data-hn-ui-tree-item]) {
11137
+ .row:where(:scope, :scope *):where([data-hn-ui-tree-item]) {
9847
11138
  position: relative;
9848
11139
  display: grid;
9849
11140
  grid-template-columns: var(--_tree-disclosure-size) auto minmax(0, 1fr);
@@ -9860,52 +11151,61 @@ to {
9860
11151
  box-shadow var(--ui-motion-fast) var(--ui-motion-ease),
9861
11152
  min-block-size var(--ui-motion-base) var(--ui-motion-ease);
9862
11153
  }
9863
- .row:hover:where([data-hn-ui-tree-item]),.row:focus-within:where([data-hn-ui-tree-item]) {
11154
+ .row:hover:where(:scope, :scope *):where([data-hn-ui-tree-item]),.row:focus-within:where(:scope, :scope *):where([data-hn-ui-tree-item]) {
9864
11155
  color: var(--ui-text-primary);
9865
11156
  background: var(--_ui-selection-context-surface, var(--ui-surface-muted));
9866
11157
  box-shadow: inset 0 0 0 var(--ui-border-width)
9867
11158
  var(--_ui-selection-context-border, var(--ui-selection-border));
9868
11159
  }
9869
- :scope[data-ui-tree-item-state~="selected"] > .row:where([data-hn-ui-tree-item]) {
11160
+ :where(.ui-tree-item)[data-ui-tree-item-state~="selected"]
11161
+ > .row:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
9870
11162
  color: var(--_ui-selection-context-text, var(--ui-selection-text));
9871
11163
  background: var(--_ui-selection-context-surface, var(--ui-selection-surface));
9872
11164
  box-shadow: inset 0 0 0 var(--ui-border-width)
9873
11165
  var(--_ui-selection-context-border, var(--ui-selection-border));
9874
11166
  }
9875
- :scope[data-ui-tree-item-state~="selected"]:not([aria-disabled="true"])
11167
+ :where(.ui-tree-item)[data-ui-tree-item-state~="selected"]:not([aria-disabled="true"])
9876
11168
  > .row
9877
- > .leading:where([data-hn-ui-tree-item]) {
11169
+ > .leading:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
9878
11170
  color: var(--_ui-selection-context-text, var(--ui-selection-text));
9879
11171
  }
9880
- :scope[data-ui-tree-item-state~="disabled"] .row:where([data-hn-ui-tree-item]) {
11172
+ :where(.ui-tree-item)[data-ui-tree-item-state~="disabled"]
11173
+ .row:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
9881
11174
  color: var(--ui-disabled-text);
9882
11175
  background: var(--ui-disabled-surface);
9883
11176
  box-shadow: none;
9884
11177
  }
9885
- :scope[data-dragging]:not([data-move-source]) .row:where([data-hn-ui-tree-item]) {
11178
+ :where(.ui-tree-item)[data-dragging]:not([data-move-source])
11179
+ .row:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
9886
11180
  opacity: 0.42;
9887
11181
  }
9888
- :scope[data-move-source] > .row > .label:where([data-hn-ui-tree-item]),:scope[data-move-source] > .row > .leading:where([data-hn-ui-tree-item]) {
11182
+ :where(.ui-tree-item)[data-move-source]
11183
+ > .row
11184
+ > .label:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]),:where(.ui-tree-item)[data-move-source]
11185
+ > .row
11186
+ > .leading:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
9889
11187
  opacity: 0.42;
9890
11188
  }
9891
- :scope:focus:where([data-hn-ui-tree-item]) {
11189
+ :where(.ui-tree-item):focus:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
9892
11190
  outline: none;
9893
11191
  }
9894
- :scope:focus-visible .row:where([data-hn-ui-tree-item]) {
11192
+ :where(.ui-tree-item):focus-visible
11193
+ .row:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
9895
11194
  box-shadow: 0 0 0 var(--ui-focus-width) var(--ui-focus-ring);
9896
11195
  }
9897
- :scope[data-drop-position="inside"] > .row:where([data-hn-ui-tree-item]) {
11196
+ :where(.ui-tree-item)[data-drop-position="inside"]
11197
+ > .row:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
9898
11198
  background: var(--ui-accent-subtle);
9899
11199
  box-shadow: inset 0 0 0 var(--ui-accent-line-width)
9900
11200
  var(--_ui-tree-drop-color, var(--ui-accent-solid));
9901
11201
  }
9902
- .disclosure:where([data-hn-ui-tree-item]),.disclosure-spacer:where([data-hn-ui-tree-item]) {
11202
+ .disclosure:where(:scope, :scope *):where([data-hn-ui-tree-item]),.disclosure-spacer:where(:scope, :scope *):where([data-hn-ui-tree-item]) {
9903
11203
  grid-column: 1;
9904
11204
  grid-row: 1;
9905
11205
  inline-size: var(--_tree-disclosure-size);
9906
11206
  block-size: 28px;
9907
11207
  }
9908
- .disclosure:where([data-hn-ui-tree-item]) {
11208
+ .disclosure:where(:scope, :scope *):where([data-hn-ui-tree-item]) {
9909
11209
  display: grid;
9910
11210
  /* Start-aligned: the chevron's ink, not its hit area, aligns with the content above it. */
9911
11211
  place-items: center start;
@@ -9916,10 +11216,10 @@ to {
9916
11216
  border-radius: var(--ui-radius-sm);
9917
11217
  cursor: pointer;
9918
11218
  }
9919
- .disclosure[hidden]:where([data-hn-ui-tree-item]) {
11219
+ .disclosure[hidden]:where(:scope, :scope *):where([data-hn-ui-tree-item]) {
9920
11220
  display: none;
9921
11221
  }
9922
- .selection-hit:where([data-hn-ui-tree-item]) {
11222
+ .selection-hit:where(:scope, :scope *):where([data-hn-ui-tree-item]) {
9923
11223
  display: none;
9924
11224
  grid-column: 2;
9925
11225
  grid-row: 1;
@@ -9928,31 +11228,36 @@ to {
9928
11228
  block-size: var(--_ui-tree-item-min-block-size, var(--_tree-row-min-height));
9929
11229
  cursor: pointer;
9930
11230
  }
9931
- .selection-checkbox:where([data-hn-ui-tree-item]) {
11231
+ .selection-checkbox:where(:scope, :scope *):where([data-hn-ui-tree-item]) {
9932
11232
  inline-size: 1rem;
9933
11233
  block-size: 1rem;
9934
11234
  margin: 0;
9935
11235
  accent-color: var(--ui-accent-solid);
9936
11236
  }
9937
- :scope[data-selection-mode="multiple"] > .row:where([data-hn-ui-tree-item]) {
11237
+ :where(.ui-tree-item)[data-selection-mode="multiple"]
11238
+ > .row:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
9938
11239
  grid-template-columns: var(--_tree-disclosure-size) 1.25rem auto minmax(0, 1fr);
9939
11240
  }
9940
- :scope[data-selection-mode="multiple"]
11241
+ :where(.ui-tree-item)[data-selection-mode="multiple"]
9941
11242
  > .row
9942
- > .selection-hit:where([data-hn-ui-tree-item]) {
11243
+ > .selection-hit:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
9943
11244
  display: grid;
9944
11245
  }
9945
- :scope[data-selection-mode="multiple"] > .row > .leading:where([data-hn-ui-tree-item]) {
11246
+ :where(.ui-tree-item)[data-selection-mode="multiple"]
11247
+ > .row
11248
+ > .leading:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
9946
11249
  grid-column: 3;
9947
11250
  }
9948
- :scope[data-selection-mode="multiple"] > .row > .label:where([data-hn-ui-tree-item]) {
11251
+ :where(.ui-tree-item)[data-selection-mode="multiple"]
11252
+ > .row
11253
+ > .label:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
9949
11254
  grid-column: 4;
9950
11255
  }
9951
- .disclosure:hover:where([data-hn-ui-tree-item]) {
11256
+ .disclosure:hover:where(:scope, :scope *):where([data-hn-ui-tree-item]) {
9952
11257
  color: var(--ui-text-primary);
9953
11258
  background: var(--ui-surface-elevated);
9954
11259
  }
9955
- .disclosure-icon:where([data-hn-ui-tree-item]) {
11260
+ .disclosure-icon:where(:scope, :scope *):where([data-hn-ui-tree-item]) {
9956
11261
  display: grid;
9957
11262
  place-items: center;
9958
11263
  inline-size: 12px;
@@ -9960,7 +11265,8 @@ to {
9960
11265
  transform: rotate(-90deg);
9961
11266
  transition: transform var(--ui-motion-fast) var(--ui-motion-ease);
9962
11267
  }
9963
- .disclosure-icon:where([data-hn-ui-tree-item])::before {
11268
+ .disclosure-icon:where(:not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where(:scope, :scope
11269
+ *):where([data-hn-ui-tree-item])::before {
9964
11270
  display: block;
9965
11271
  inline-size: 0.375rem;
9966
11272
  block-size: 0.375rem;
@@ -9970,18 +11276,18 @@ to {
9970
11276
  /* A chevron's ink sits below its box centre; lift it so it centres optically (in either rotation). */
9971
11277
  transform: translateY(-20%) rotate(45deg);
9972
11278
  }
9973
- :scope[aria-expanded="true"]
11279
+ :where(.ui-tree-item)[aria-expanded="true"]
9974
11280
  > .row
9975
11281
  > .disclosure
9976
- > .disclosure-icon:where([data-hn-ui-tree-item]) {
11282
+ > .disclosure-icon:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
9977
11283
  transform: rotate(0deg);
9978
11284
  }
9979
- .drag-handle svg:where([data-hn-ui-tree-item]) {
11285
+ .drag-handle:where(:scope, :scope *) svg:where([data-hn-ui-tree-item]) {
9980
11286
  display: block;
9981
11287
  inline-size: 100%;
9982
11288
  block-size: 100%;
9983
11289
  }
9984
- .leading:where([data-hn-ui-tree-item]) {
11290
+ .leading:where(:scope, :scope *):where([data-hn-ui-tree-item]) {
9985
11291
  display: inline-grid;
9986
11292
  place-items: center;
9987
11293
  grid-column: 2;
@@ -9994,16 +11300,10 @@ to {
9994
11300
  position: relative;
9995
11301
  z-index: 1;
9996
11302
  }
9997
- .leading:empty:where([data-hn-ui-tree-item]) {
11303
+ .leading:empty:where(:scope, :scope *):where([data-hn-ui-tree-item]) {
9998
11304
  display: none;
9999
11305
  }
10000
- :where(:not([data-hn-ui-tree-item])):is(svg),:where(:not([data-hn-ui-tree-item])):is(img) {
10001
- display: block;
10002
- inline-size: 1em;
10003
- block-size: 1em;
10004
- flex: none;
10005
- }
10006
- .label:where([data-hn-ui-tree-item]) {
11306
+ .label:where(:scope, :scope *):where([data-hn-ui-tree-item]) {
10007
11307
  grid-column: 3;
10008
11308
  grid-row: 1;
10009
11309
  align-self: stretch;
@@ -10018,7 +11318,7 @@ to {
10018
11318
  is where the controller reads the length in pixels to stop a sliding name before the fade. */
10019
11319
  column-gap: var(--ui-space-1);
10020
11320
  }
10021
- .label-text:where([data-hn-ui-tree-item]) {
11321
+ .label-text:where(:scope, :scope *):where([data-hn-ui-tree-item]) {
10022
11322
  display: flex;
10023
11323
  align-items: center;
10024
11324
  /* Stretches, so slotted content can still be the row's full-height hit area. */
@@ -10028,13 +11328,11 @@ to {
10028
11328
  inline-size: 100%;
10029
11329
  white-space: nowrap;
10030
11330
  }
10031
- .label-text > :where(:not([data-hn-ui-tree-item])):is(*) {
10032
- flex: 1 1 auto;
10033
- min-inline-size: 0;
10034
- }
10035
- .row:hover > .label:where([data-hn-ui-tree-item]),.row:focus-within > .label:where([data-hn-ui-tree-item]),:scope[data-ui-tree-item-state~="actionsVisible"]
11331
+ .row:hover:where(:scope, :scope *) > .label:where([data-hn-ui-tree-item]),.row:focus-within:where(:scope, :scope *) > .label:where([data-hn-ui-tree-item]),:where(.ui-tree-item)[data-ui-tree-item-state~="actionsVisible"]
10036
11332
  > .row
10037
- > .label:where([data-hn-ui-tree-item]),:scope[data-move-source] > .row > .label:where([data-hn-ui-tree-item]) {
11333
+ > .label:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]),:where(.ui-tree-item)[data-move-source]
11334
+ > .row
11335
+ > .label:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10038
11336
  text-overflow: clip;
10039
11337
  mask-image: linear-gradient(
10040
11338
  to right,
@@ -10042,22 +11340,27 @@ to {
10042
11340
  transparent calc(100% - var(--_tree-actions-width, 1.75rem))
10043
11341
  );
10044
11342
  }
10045
- .row:hover > .label:dir(rtl):where([data-hn-ui-tree-item]),.row:focus-within > .label:dir(rtl):where([data-hn-ui-tree-item]),:scope[data-ui-tree-item-state~="actionsVisible"]
11343
+ .row:hover:where(:scope, :scope *) > .label:dir(rtl):where([data-hn-ui-tree-item]),.row:focus-within:where(:scope, :scope *)
11344
+ > .label:dir(rtl):where([data-hn-ui-tree-item]),:where(.ui-tree-item)[data-ui-tree-item-state~="actionsVisible"]
10046
11345
  > .row
10047
- > .label:dir(rtl):where([data-hn-ui-tree-item]),:scope[data-move-source] > .row > .label:dir(rtl):where([data-hn-ui-tree-item]) {
11346
+ > .label:dir(rtl):where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]),:where(.ui-tree-item)[data-move-source]
11347
+ > .row
11348
+ > .label:dir(rtl):where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10048
11349
  mask-image: linear-gradient(
10049
11350
  to left,
10050
11351
  #000 calc(100% - var(--_tree-actions-width, 1.75rem) - var(--ui-space-1)),
10051
11352
  transparent calc(100% - var(--_tree-actions-width, 1.75rem))
10052
11353
  );
10053
11354
  }
10054
- .row[data-ui-marquee] > .label > .label-text:where([data-hn-ui-tree-item]) {
11355
+ .row[data-ui-marquee]:where(:scope, :scope *)
11356
+ > .label
11357
+ > .label-text:where([data-hn-ui-tree-item]) {
10055
11358
  /* Once per pass: the controller restarts it after a rest at the end, so the name holds still
10056
11359
  long enough to read rather than sliding back and forth. */
10057
- animation: ui-tree-item-marquee-16fe002b var(--_marquee-duration) linear 0.5s 1 normal forwards;
11360
+ animation: ui-tree-item-marquee-fc4c8748 var(--_marquee-duration) linear 0.5s 1 normal forwards;
10058
11361
  will-change: transform;
10059
11362
  }
10060
- .row[data-ui-marquee] > .label:where([data-hn-ui-tree-item]) {
11363
+ .row[data-ui-marquee]:where(:scope, :scope *) > .label:where([data-hn-ui-tree-item]) {
10061
11364
  margin-inline-start: calc(-1 * var(--_marquee-lead, 0px));
10062
11365
  padding-inline-start: calc(
10063
11366
  var(--_marquee-lead, 0px) + var(--_ui-tree-item-label-padding-inline, var(--ui-space-2))
@@ -10072,7 +11375,8 @@ to {
10072
11375
  transparent calc(100% - var(--_tree-actions-width, 1.75rem))
10073
11376
  );
10074
11377
  }
10075
- .row[data-ui-marquee] > .label:dir(rtl):where([data-hn-ui-tree-item]) {
11378
+ .row[data-ui-marquee]:where(:scope, :scope *)
11379
+ > .label:dir(rtl):where([data-hn-ui-tree-item]) {
10076
11380
  mask-image: linear-gradient(
10077
11381
  to left,
10078
11382
  transparent var(--_marquee-icon-width, 0px),
@@ -10084,14 +11388,13 @@ to {
10084
11388
  );
10085
11389
  }
10086
11390
  @media (prefers-reduced-motion: reduce) {
10087
- .row[data-ui-marquee] > .label > .label-text:where([data-hn-ui-tree-item]) {
11391
+ .row[data-ui-marquee]:where(:scope, :scope *)
11392
+ > .label
11393
+ > .label-text:where([data-hn-ui-tree-item]) {
10088
11394
  animation: none;
10089
11395
  }
10090
11396
  }
10091
- .row:hover > .label > :where(:not([data-hn-ui-tree-item])):is(*),.row:focus-within > .label > :where(:not([data-hn-ui-tree-item])):is(*) {
10092
- text-overflow: clip;
10093
- }
10094
- .actions:where([data-hn-ui-tree-item]) {
11397
+ .actions:where(:scope, :scope *):where([data-hn-ui-tree-item]) {
10095
11398
  position: absolute;
10096
11399
  z-index: 1;
10097
11400
  inset-block: 0;
@@ -10103,17 +11406,19 @@ to {
10103
11406
  pointer-events: none;
10104
11407
  transition: opacity var(--ui-motion-fast) var(--ui-motion-ease);
10105
11408
  }
10106
- .row:hover > .actions:where([data-hn-ui-tree-item]),.row:focus-within > .actions:where([data-hn-ui-tree-item]),:scope[data-ui-tree-item-state~="actionsVisible"]
11409
+ .row:hover:where(:scope, :scope *) > .actions:where([data-hn-ui-tree-item]),.row:focus-within:where(:scope, :scope *) > .actions:where([data-hn-ui-tree-item]),:where(.ui-tree-item)[data-ui-tree-item-state~="actionsVisible"]
10107
11410
  > .row
10108
- > .actions:where([data-hn-ui-tree-item]),:scope[data-move-source] > .row > .actions:where([data-hn-ui-tree-item]) {
11411
+ > .actions:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]),:where(.ui-tree-item)[data-move-source]
11412
+ > .row
11413
+ > .actions:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10109
11414
  opacity: 1;
10110
11415
  pointer-events: auto;
10111
11416
  }
10112
11417
  @media (hover: none), (pointer: coarse) {
10113
- .row:where([data-hn-ui-tree-item]) {
11418
+ .row:where(:scope, :scope *):where([data-hn-ui-tree-item]) {
10114
11419
  grid-template-columns: var(--_tree-disclosure-size) auto minmax(0, 1fr) auto;
10115
11420
  }
10116
- .actions:where([data-hn-ui-tree-item]) {
11421
+ .actions:where(:scope, :scope *):where([data-hn-ui-tree-item]) {
10117
11422
  position: static;
10118
11423
  grid-column: 4;
10119
11424
  grid-row: 1;
@@ -10122,10 +11427,16 @@ to {
10122
11427
  opacity: 1;
10123
11428
  pointer-events: auto;
10124
11429
  }
10125
- .row:is(:hover, :focus-within) > .label:where([data-hn-ui-tree-item]),.row:is(:hover, :focus-within) > .label:dir(rtl):where([data-hn-ui-tree-item]),:scope[data-move-source] > .row > .label:where([data-hn-ui-tree-item]),:scope[data-move-source] > .row > .label:dir(rtl):where([data-hn-ui-tree-item]) {
11430
+ .row:is(:hover, :focus-within):where(:scope, :scope *)
11431
+ > .label:where([data-hn-ui-tree-item]),.row:is(:hover, :focus-within):where(:scope, :scope *)
11432
+ > .label:dir(rtl):where([data-hn-ui-tree-item]),:where(.ui-tree-item)[data-move-source]
11433
+ > .row
11434
+ > .label:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]),:where(.ui-tree-item)[data-move-source]
11435
+ > .row
11436
+ > .label:dir(rtl):where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10126
11437
  mask-image: none;
10127
11438
  }
10128
- .row[data-ui-marquee] > .label:where([data-hn-ui-tree-item]) {
11439
+ .row[data-ui-marquee]:where(:scope, :scope *) > .label:where([data-hn-ui-tree-item]) {
10129
11440
  mask-image: linear-gradient(
10130
11441
  to right,
10131
11442
  transparent var(--_marquee-icon-width, 0px),
@@ -10136,17 +11447,18 @@ to {
10136
11447
  }
10137
11448
 
10138
11449
  /* Persistent content has its own column on touch. Fade only the label's end. */
10139
- :scope[data-ui-tree-item-state~="actionsVisible"]
11450
+ :where(.ui-tree-item)[data-ui-tree-item-state~="actionsVisible"]
10140
11451
  > .row
10141
- > .label:where([data-hn-ui-tree-item]) {
11452
+ > .label:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10142
11453
  mask-image: linear-gradient(to right, #000 calc(100% - var(--ui-space-1)), transparent 100%);
10143
11454
  }
10144
- :scope[data-ui-tree-item-state~="actionsVisible"]
11455
+ :where(.ui-tree-item)[data-ui-tree-item-state~="actionsVisible"]
10145
11456
  > .row
10146
- > .label:dir(rtl):where([data-hn-ui-tree-item]) {
11457
+ > .label:dir(rtl):where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10147
11458
  mask-image: linear-gradient(to left, #000 calc(100% - var(--ui-space-1)), transparent 100%);
10148
11459
  }
10149
- .row[data-ui-marquee] > .label:dir(rtl):where([data-hn-ui-tree-item]) {
11460
+ .row[data-ui-marquee]:where(:scope, :scope *)
11461
+ > .label:dir(rtl):where([data-hn-ui-tree-item]) {
10150
11462
  mask-image: linear-gradient(
10151
11463
  to left,
10152
11464
  transparent var(--_marquee-icon-width, 0px),
@@ -10155,16 +11467,17 @@ to {
10155
11467
  )
10156
11468
  );
10157
11469
  }
10158
- :scope[data-selection-mode="multiple"] > .row:where([data-hn-ui-tree-item]) {
11470
+ :where(.ui-tree-item)[data-selection-mode="multiple"]
11471
+ > .row:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10159
11472
  grid-template-columns: var(--_tree-disclosure-size) 1.25rem auto minmax(0, 1fr) auto;
10160
11473
  }
10161
- :scope[data-selection-mode="multiple"]
11474
+ :where(.ui-tree-item)[data-selection-mode="multiple"]
10162
11475
  > .row
10163
- > .actions:where([data-hn-ui-tree-item]) {
11476
+ > .actions:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10164
11477
  grid-column: 5;
10165
11478
  }
10166
11479
  }
10167
- .drag-handle:where([data-hn-ui-tree-item]) {
11480
+ .drag-handle:where(:scope, :scope *):where([data-hn-ui-tree-item]) {
10168
11481
  position: absolute;
10169
11482
  z-index: 2;
10170
11483
  inset-block-start: 50%;
@@ -10185,22 +11498,24 @@ to {
10185
11498
  transform: translateY(-50%);
10186
11499
  transition: opacity var(--ui-motion-fast) var(--ui-motion-ease);
10187
11500
  }
10188
- .row:hover .drag-handle:where([data-hn-ui-tree-item]),.drag-handle:hover:where([data-hn-ui-tree-item]),.drag-handle:focus-visible:where([data-hn-ui-tree-item]),:scope[data-dragging] > .row > .drag-handle:where([data-hn-ui-tree-item]) {
11501
+ .row:hover:where(:scope, :scope *) .drag-handle:where([data-hn-ui-tree-item]),.drag-handle:hover:where(:scope, :scope *):where([data-hn-ui-tree-item]),.drag-handle:focus-visible:where(:scope, :scope *):where([data-hn-ui-tree-item]),:where(.ui-tree-item)[data-dragging]
11502
+ > .row
11503
+ > .drag-handle:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10189
11504
  opacity: 1;
10190
11505
  }
10191
- :scope[data-ui-tree-item-state~="isContainer"]
11506
+ :where(.ui-tree-item)[data-ui-tree-item-state~="isContainer"]
10192
11507
  > .row
10193
- > .drag-handle:where([data-hn-ui-tree-item]) {
11508
+ > .drag-handle:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10194
11509
  inset-inline-start: calc(-1 * var(--_tree-disclosure-size) - 2px);
10195
11510
  }
10196
- .drag-handle:hover:where([data-hn-ui-tree-item]),.drag-handle:focus-visible:where([data-hn-ui-tree-item]) {
11511
+ .drag-handle:hover:where(:scope, :scope *):where([data-hn-ui-tree-item]),.drag-handle:focus-visible:where(:scope, :scope *):where([data-hn-ui-tree-item]) {
10197
11512
  color: var(--ui-text-primary);
10198
11513
  background: var(--ui-surface-hover);
10199
11514
  }
10200
- .drag-handle:active:where([data-hn-ui-tree-item]) {
11515
+ .drag-handle:active:where(:scope, :scope *):where([data-hn-ui-tree-item]) {
10201
11516
  cursor: grabbing;
10202
11517
  }
10203
- .drop-indicator:where([data-hn-ui-tree-item]) {
11518
+ .drop-indicator:where(:scope, :scope *):where([data-hn-ui-tree-item]) {
10204
11519
  position: absolute;
10205
11520
  z-index: 3;
10206
11521
  inset-inline: 1px;
@@ -10210,7 +11525,9 @@ to {
10210
11525
  background: var(--_ui-tree-drop-color, var(--ui-accent-solid));
10211
11526
  pointer-events: none;
10212
11527
  }
10213
- .drop-indicator:where([data-hn-ui-tree-item])::before,.drop-indicator:where([data-hn-ui-tree-item])::after {
11528
+ .drop-indicator:where(:not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where(:scope, :scope
11529
+ *):where([data-hn-ui-tree-item])::before,.drop-indicator:where(:not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where(:scope, :scope
11530
+ *):where([data-hn-ui-tree-item])::after {
10214
11531
  content: "";
10215
11532
  position: absolute;
10216
11533
  inset-block-start: 50%;
@@ -10221,36 +11538,43 @@ to {
10221
11538
  background: var(--ui-surface-elevated);
10222
11539
  transform: translateY(-50%);
10223
11540
  }
10224
- .drop-indicator:where([data-hn-ui-tree-item])::before {
11541
+ .drop-indicator:where(:not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where(:scope, :scope
11542
+ *):where([data-hn-ui-tree-item])::before {
10225
11543
  inset-inline-start: -1px;
10226
11544
  }
10227
- .drop-indicator:where([data-hn-ui-tree-item])::after {
11545
+ .drop-indicator:where(:not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where(:scope, :scope
11546
+ *):where([data-hn-ui-tree-item])::after {
10228
11547
  inset-inline-end: -1px;
10229
11548
  }
10230
- :scope[data-drop-position="before"]
11549
+ :where(.ui-tree-item)[data-drop-position="before"]
10231
11550
  > .row
10232
- > .row-drop-indicator:where([data-hn-ui-tree-item]) {
11551
+ > .row-drop-indicator:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10233
11552
  display: block;
10234
11553
  inset-block-start: calc(-0.5 * var(--ui-accent-line-width));
10235
11554
  }
10236
- :scope[data-drop-position="after"]
10237
- > .subtree-drop-indicator:where([data-hn-ui-tree-item]) {
11555
+ :where(.ui-tree-item)[data-drop-position="after"]
11556
+ > .subtree-drop-indicator:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10238
11557
  display: block;
10239
11558
  inset-block-end: calc(-0.5 * var(--ui-accent-line-width));
10240
11559
  }
10241
- .children[hidden]:where([data-hn-ui-tree-item]) {
11560
+ .children[hidden]:where(:scope, :scope *):where([data-hn-ui-tree-item]) {
10242
11561
  display: none;
10243
11562
  }
10244
- html[data-ui-input-modality="touch"] :scope:where([data-hn-ui-tree-item]) {
11563
+ html[data-ui-input-modality="touch"]
11564
+ :where(.ui-tree-item):where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10245
11565
  --_tree-row-min-height: 44px;
10246
11566
  }
10247
- html[data-ui-input-modality="touch"] :scope .row:where([data-hn-ui-tree-item]) {
11567
+ html[data-ui-input-modality="touch"]
11568
+ :where(.ui-tree-item)
11569
+ .row:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10248
11570
  grid-template-columns: 44px var(--_tree-disclosure-size) auto minmax(0, 1fr);
10249
11571
  }
10250
- html[data-ui-input-modality="touch"] :scope .drag-handle:where([data-hn-ui-tree-item]),html[data-ui-input-modality="touch"]
10251
- :scope[data-ui-tree-item-state~="isContainer"]
11572
+ html[data-ui-input-modality="touch"]
11573
+ :where(.ui-tree-item)
11574
+ .drag-handle:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]),html[data-ui-input-modality="touch"]
11575
+ :where(.ui-tree-item)[data-ui-tree-item-state~="isContainer"]
10252
11576
  > .row
10253
- > .drag-handle:where([data-hn-ui-tree-item]) {
11577
+ > .drag-handle:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10254
11578
  position: relative;
10255
11579
  grid-column: 1;
10256
11580
  grid-row: 1;
@@ -10262,76 +11586,87 @@ html[data-ui-input-modality="touch"] :scope .drag-handle:where([data-hn-ui-tree-
10262
11586
  transform: none;
10263
11587
  cursor: pointer;
10264
11588
  }
10265
- html[data-ui-input-modality="touch"] :scope .disclosure:where([data-hn-ui-tree-item]) {
11589
+ html[data-ui-input-modality="touch"]
11590
+ :where(.ui-tree-item)
11591
+ .disclosure:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10266
11592
  grid-column: 2;
10267
11593
  }
10268
- html[data-ui-input-modality="touch"] :scope .leading:where([data-hn-ui-tree-item]) {
11594
+ html[data-ui-input-modality="touch"]
11595
+ :where(.ui-tree-item)
11596
+ .leading:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10269
11597
  grid-column: 3;
10270
11598
  }
10271
- html[data-ui-input-modality="touch"] :scope .label:where([data-hn-ui-tree-item]) {
11599
+ html[data-ui-input-modality="touch"]
11600
+ :where(.ui-tree-item)
11601
+ .label:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10272
11602
  grid-column: 4;
10273
11603
  }
10274
11604
  html[data-ui-input-modality="touch"]
10275
- :scope[data-selection-mode="multiple"]
10276
- > .row:where([data-hn-ui-tree-item]) {
11605
+ :where(.ui-tree-item)[data-selection-mode="multiple"]
11606
+ > .row:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10277
11607
  grid-template-columns: 44px var(--_tree-disclosure-size) 44px auto minmax(0, 1fr);
10278
11608
  }
10279
11609
  html[data-ui-input-modality="touch"]
10280
- :scope[data-selection-mode="multiple"]
11610
+ :where(.ui-tree-item)[data-selection-mode="multiple"]
10281
11611
  > .row
10282
- > .selection-hit:where([data-hn-ui-tree-item]) {
11612
+ > .selection-hit:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10283
11613
  grid-column: 3;
10284
11614
  inline-size: 44px;
10285
11615
  block-size: 44px;
10286
11616
  }
10287
11617
  html[data-ui-input-modality="touch"]
10288
- :scope[data-selection-mode="multiple"]
11618
+ :where(.ui-tree-item)[data-selection-mode="multiple"]
10289
11619
  > .row
10290
- > .leading:where([data-hn-ui-tree-item]) {
11620
+ > .leading:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10291
11621
  grid-column: 4;
10292
11622
  }
10293
11623
  html[data-ui-input-modality="touch"]
10294
- :scope[data-selection-mode="multiple"]
11624
+ :where(.ui-tree-item)[data-selection-mode="multiple"]
10295
11625
  > .row
10296
- > .label:where([data-hn-ui-tree-item]) {
11626
+ > .label:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10297
11627
  grid-column: 5;
10298
11628
  }
10299
11629
  @media (hover: none), (pointer: coarse) {
10300
- html[data-ui-input-modality="touch"] :scope .row:where([data-hn-ui-tree-item]) {
11630
+ html[data-ui-input-modality="touch"]
11631
+ :where(.ui-tree-item)
11632
+ .row:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10301
11633
  grid-template-columns: 44px var(--_tree-disclosure-size) auto minmax(0, 1fr) auto;
10302
11634
  }
10303
- html[data-ui-input-modality="touch"] :scope .actions:where([data-hn-ui-tree-item]) {
11635
+ html[data-ui-input-modality="touch"]
11636
+ :where(.ui-tree-item)
11637
+ .actions:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10304
11638
  grid-column: 5;
10305
11639
  }
10306
11640
  html[data-ui-input-modality="touch"]
10307
- :scope[data-selection-mode="multiple"]
10308
- > .row:where([data-hn-ui-tree-item]) {
11641
+ :where(.ui-tree-item)[data-selection-mode="multiple"]
11642
+ > .row:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10309
11643
  grid-template-columns: 44px var(--_tree-disclosure-size) 44px auto minmax(0, 1fr) auto;
10310
11644
  }
10311
11645
  html[data-ui-input-modality="touch"]
10312
- :scope[data-selection-mode="multiple"]
11646
+ :where(.ui-tree-item)[data-selection-mode="multiple"]
10313
11647
  > .row
10314
- > .actions:where([data-hn-ui-tree-item]) {
11648
+ > .actions:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10315
11649
  grid-column: 6;
10316
11650
  }
10317
11651
  }
10318
11652
  @media (prefers-reduced-motion: reduce) {
10319
- .row:where([data-hn-ui-tree-item]),.disclosure-icon:where([data-hn-ui-tree-item]),.drag-handle:where([data-hn-ui-tree-item]) {
11653
+ .row:where(:scope, :scope *):where([data-hn-ui-tree-item]),.disclosure-icon:where(:scope, :scope *):where([data-hn-ui-tree-item]),.drag-handle:where(:scope, :scope *):where([data-hn-ui-tree-item]) {
10320
11654
  transition: none;
10321
11655
  }
10322
11656
  }
10323
11657
  @media (forced-colors: active) {
10324
- :scope:focus-visible > .row:where([data-hn-ui-tree-item]) {
11658
+ :where(.ui-tree-item):focus-visible
11659
+ > .row:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10325
11660
  outline: var(--ui-focus-width) solid Highlight;
10326
11661
  outline-offset: calc(-1 * var(--ui-focus-width));
10327
11662
  }
10328
- :scope[data-ui-tree-item-state~="selected"]:not(:focus-visible):not([aria-disabled="true"])
10329
- > .row:where([data-hn-ui-tree-item]) {
11663
+ :where(.ui-tree-item)[data-ui-tree-item-state~="selected"]:not(:focus-visible):not([aria-disabled="true"])
11664
+ > .row:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10330
11665
  outline: var(--ui-border-width) solid Highlight;
10331
11666
  outline-offset: calc(-1 * var(--ui-border-width));
10332
11667
  }
10333
11668
  }
10334
- :scope[hidden]:where([data-hn-ui-tree-item]) {
11669
+ :where(.ui-tree-item)[hidden]:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-tree-item"]))):where([data-hn-ui-tree-item]) {
10335
11670
  display: none;
10336
11671
  }
10337
11672
  }
@@ -11004,7 +12339,7 @@ html[data-ui-input-modality="touch"]
11004
12339
  width: 3px;
11005
12340
  background: var(--ui-affordance-direct-color, var(--ui-accent-solid, #5b55d6));
11006
12341
  }
11007
- /* Generated by HTML Next 1.0.0-alpha.67. Do not edit. */
12342
+ /* Generated by HTML Next 1.0.0-alpha.69. Do not edit. */
11008
12343
  @supports (-moz-appearance: none) {
11009
12344
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
11010
12345
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
@@ -11553,7 +12888,7 @@ html[data-ui-input-modality="touch"]
11553
12888
 
11554
12889
  /* A component that sets its display still honours the hidden attribute on its root. */
11555
12890
  }
11556
- /* Generated by HTML Next 1.0.0-alpha.67. Do not edit. */
12891
+ /* Generated by HTML Next 1.0.0-alpha.69. Do not edit. */
11557
12892
  @supports (-moz-appearance: none) {
11558
12893
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
11559
12894
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
@@ -11587,7 +12922,7 @@ html[data-ui-input-modality="touch"]
11587
12922
 
11588
12923
  /* A component that sets its display still honours the hidden attribute on its root. */
11589
12924
  }
11590
- /* Generated by HTML Next 1.0.0-alpha.67. Do not edit. */
12925
+ /* Generated by HTML Next 1.0.0-alpha.69. Do not edit. */
11591
12926
  @supports (-moz-appearance: none) {
11592
12927
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
11593
12928
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
@@ -11688,7 +13023,7 @@ html[data-ui-input-modality="touch"]
11688
13023
 
11689
13024
  /* A component that sets its display still honours the hidden attribute on its root. */
11690
13025
  }
11691
- /* Generated by HTML Next 1.0.0-alpha.67. Do not edit. */
13026
+ /* Generated by HTML Next 1.0.0-alpha.69. Do not edit. */
11692
13027
  @supports (-moz-appearance: none) {
11693
13028
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
11694
13029
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
@@ -11819,7 +13154,7 @@ html[data-ui-input-modality="touch"]
11819
13154
 
11820
13155
  /* A component that sets its display still honours the hidden attribute on its root. */
11821
13156
  }
11822
- /* Generated by HTML Next 1.0.0-alpha.67. Do not edit. */
13157
+ /* Generated by HTML Next 1.0.0-alpha.69. Do not edit. */
11823
13158
  @supports (-moz-appearance: none) {
11824
13159
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
11825
13160
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
@@ -11873,7 +13208,7 @@ html[data-ui-input-modality="touch"]
11873
13208
 
11874
13209
  /* A component that sets its display still honours the hidden attribute on its root. */
11875
13210
  }
11876
- /* Generated by HTML Next 1.0.0-alpha.67. Do not edit. */
13211
+ /* Generated by HTML Next 1.0.0-alpha.69. Do not edit. */
11877
13212
  @supports (-moz-appearance: none) {
11878
13213
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
11879
13214
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
@@ -12349,7 +13684,7 @@ html[data-ui-input-modality="touch"]
12349
13684
 
12350
13685
  /* A component that sets its display still honours the hidden attribute on its root. */
12351
13686
  }
12352
- /* Generated by HTML Next 1.0.0-alpha.67. Do not edit. */
13687
+ /* Generated by HTML Next 1.0.0-alpha.69. Do not edit. */
12353
13688
  @supports (-moz-appearance: none) {
12354
13689
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
12355
13690
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
@@ -12447,7 +13782,7 @@ html[data-ui-input-modality="touch"]
12447
13782
 
12448
13783
  /* A component that sets its display still honours the hidden attribute on its root. */
12449
13784
  }
12450
- /* Generated by HTML Next 1.0.0-alpha.67. Do not edit. */
13785
+ /* Generated by HTML Next 1.0.0-alpha.69. Do not edit. */
12451
13786
  @supports (-moz-appearance: none) {
12452
13787
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
12453
13788
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
@@ -12611,7 +13946,7 @@ html[data-ui-input-modality="touch"]
12611
13946
  @media (prefers-reduced-motion: reduce) {
12612
13947
  }
12613
13948
  }
12614
- /* Generated by HTML Next 1.0.0-alpha.67. Do not edit. */
13949
+ /* Generated by HTML Next 1.0.0-alpha.69. Do not edit. */
12615
13950
  @supports (-moz-appearance: none) {
12616
13951
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
12617
13952
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
@@ -12806,7 +14141,7 @@ html[data-ui-input-modality="touch"]
12806
14141
 
12807
14142
  /* A component that sets its display still honours the hidden attribute on its root. */
12808
14143
  }
12809
- /* Generated by HTML Next 1.0.0-alpha.67. Do not edit. */
14144
+ /* Generated by HTML Next 1.0.0-alpha.69. Do not edit. */
12810
14145
  @supports (-moz-appearance: none) {
12811
14146
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
12812
14147
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
@@ -12950,7 +14285,7 @@ html[data-ui-input-modality="touch"]
12950
14285
  @media (prefers-reduced-motion: reduce) {
12951
14286
  }
12952
14287
  }
12953
- /* Generated by HTML Next 1.0.0-alpha.67. Do not edit. */
14288
+ /* Generated by HTML Next 1.0.0-alpha.69. Do not edit. */
12954
14289
  @supports (-moz-appearance: none) {
12955
14290
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
12956
14291
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
@@ -13037,7 +14372,7 @@ html[data-ui-input-modality="touch"]
13037
14372
 
13038
14373
  /* A component that sets its display still honours the hidden attribute on its root. */
13039
14374
  }
13040
- /* Generated by HTML Next 1.0.0-alpha.67. Do not edit. */
14375
+ /* Generated by HTML Next 1.0.0-alpha.69. Do not edit. */
13041
14376
  @supports (-moz-appearance: none) {
13042
14377
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
13043
14378
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
@@ -13191,7 +14526,7 @@ html[data-ui-input-modality="touch"]
13191
14526
 
13192
14527
  /* A component that sets its display still honours the hidden attribute on its root. */
13193
14528
  }
13194
- /* Generated by HTML Next 1.0.0-alpha.67. Do not edit. */
14529
+ /* Generated by HTML Next 1.0.0-alpha.69. Do not edit. */
13195
14530
  @supports (-moz-appearance: none) {
13196
14531
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
13197
14532
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
@@ -13436,7 +14771,7 @@ html[data-ui-input-modality="touch"]
13436
14771
  @media (prefers-reduced-motion: reduce) {
13437
14772
  }
13438
14773
  }
13439
- /* Generated by HTML Next 1.0.0-alpha.67. Do not edit. */
14774
+ /* Generated by HTML Next 1.0.0-alpha.69. Do not edit. */
13440
14775
  @supports (-moz-appearance: none) {
13441
14776
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
13442
14777
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
@@ -13657,7 +14992,7 @@ html[data-ui-input-modality="touch"]
13657
14992
 
13658
14993
  /* A component that sets its display still honours the hidden attribute on its root. */
13659
14994
  }
13660
- /* Generated by HTML Next 1.0.0-alpha.67. Do not edit. */
14995
+ /* Generated by HTML Next 1.0.0-alpha.69. Do not edit. */
13661
14996
  @supports (-moz-appearance: none) {
13662
14997
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
13663
14998
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
@@ -13881,7 +15216,7 @@ html[data-ui-input-modality="touch"]
13881
15216
 
13882
15217
  /* A component that sets its display still honours the hidden attribute on its root. */
13883
15218
  }
13884
- /* Generated by HTML Next 1.0.0-alpha.67. Do not edit. */
15219
+ /* Generated by HTML Next 1.0.0-alpha.69. Do not edit. */
13885
15220
  @supports (-moz-appearance: none) {
13886
15221
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
13887
15222
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
@@ -14092,7 +15427,7 @@ html[data-ui-input-modality="touch"]
14092
15427
 
14093
15428
  /* A component that sets its display still honours the hidden attribute on its root. */
14094
15429
  }
14095
- /* Generated by HTML Next 1.0.0-alpha.67. Do not edit. */
15430
+ /* Generated by HTML Next 1.0.0-alpha.69. Do not edit. */
14096
15431
  @supports (-moz-appearance: none) {
14097
15432
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
14098
15433
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
@@ -14147,7 +15482,7 @@ html[data-ui-input-modality="touch"]
14147
15482
 
14148
15483
  /* The root is the hr, so the rules name :host; a bare hr matches only a descendant. */
14149
15484
  }
14150
- /* Generated by HTML Next 1.0.0-alpha.67. Do not edit. */
15485
+ /* Generated by HTML Next 1.0.0-alpha.69. Do not edit. */
14151
15486
  @supports (-moz-appearance: none) {
14152
15487
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
14153
15488
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
@@ -14327,7 +15662,7 @@ html[data-ui-input-modality="touch"]
14327
15662
 
14328
15663
  /* A component that sets its display still honours the hidden attribute on its root. */
14329
15664
  }
14330
- /* Generated by HTML Next 1.0.0-alpha.67. Do not edit. */
15665
+ /* Generated by HTML Next 1.0.0-alpha.69. Do not edit. */
14331
15666
  @supports (-moz-appearance: none) {
14332
15667
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
14333
15668
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }