@threadlabs/looma 0.29.10 → 0.29.12

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 (412) hide show
  1. package/editor/node-views/image.d.ts +10 -0
  2. package/editor/node-views/table-of-contents.d.ts +8 -0
  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 +1 -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 +1 -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-image-toolbar.css +1 -1
  29. package/styles/ui-editor-insert-table-grid.css +1 -1
  30. package/styles/ui-editor-link-card.css +1 -1
  31. package/styles/ui-editor-link-form.css +1 -1
  32. package/styles/ui-editor-mention-menu-item.css +1 -1
  33. package/styles/ui-editor-mention-menu.css +1 -1
  34. package/styles/ui-editor-slash-menu-group.css +1 -1
  35. package/styles/ui-editor-slash-menu-item.css +1 -1
  36. package/styles/ui-editor-slash-menu.css +1 -1
  37. package/styles/ui-editor-surface.css +1 -1
  38. package/styles/ui-editor-table-context-menu.css +1 -1
  39. package/styles/ui-editor-table-overlay.css +1 -1
  40. package/styles/ui-editor-table-toolbar.css +1 -1
  41. package/styles/ui-editor-toolbar.css +1 -1
  42. package/styles/ui-floating-action-button.css +1 -1
  43. package/styles/ui-form-field.css +1 -1
  44. package/styles/ui-grid.css +1 -1
  45. package/styles/ui-icon-button.css +1 -1
  46. package/styles/ui-icon.css +1 -1
  47. package/styles/ui-image.css +1 -1
  48. package/styles/ui-input-group.css +1 -1
  49. package/styles/ui-input.css +1 -1
  50. package/styles/ui-list-item.css +1 -1
  51. package/styles/ui-list.css +1 -1
  52. package/styles/ui-listbox.css +1 -1
  53. package/styles/ui-menu-group.css +1 -1
  54. package/styles/ui-menu-item.css +1 -1
  55. package/styles/ui-menu.css +1 -1
  56. package/styles/ui-meter.css +1 -1
  57. package/styles/ui-nav-item.css +1 -1
  58. package/styles/ui-page-header.css +1 -1
  59. package/styles/ui-popover.css +1 -1
  60. package/styles/ui-radio-group.css +1 -1
  61. package/styles/ui-radio.css +1 -1
  62. package/styles/ui-reel.css +1 -1
  63. package/styles/ui-scroll-area.css +1 -1
  64. package/styles/ui-search-result-row.css +1 -1
  65. package/styles/ui-search-shell.css +1 -1
  66. package/styles/ui-section.css +1 -1
  67. package/styles/ui-select.css +1 -1
  68. package/styles/ui-separator.css +1 -1
  69. package/styles/ui-sidebar.css +1 -1
  70. package/styles/ui-spinner.css +1 -1
  71. package/styles/ui-stack.css +1 -1
  72. package/styles/ui-status-message.css +1 -1
  73. package/styles/ui-swatch.css +1 -1
  74. package/styles/ui-switch.css +1 -1
  75. package/styles/ui-switcher.css +1 -1
  76. package/styles/ui-table.css +1 -1
  77. package/styles/ui-tabs.css +1 -1
  78. package/styles/ui-text.css +1 -1
  79. package/styles/ui-textarea.css +1 -1
  80. package/styles/ui-toast-region.css +1 -1
  81. package/styles/ui-toast.css +1 -1
  82. package/styles/ui-tooltip.css +1 -1
  83. package/styles/ui-top-bar.css +1 -1
  84. package/styles/ui-tree-item.css +1 -1
  85. package/styles/ui-tree.css +1 -1
  86. package/vanilla/UiActionBar.d.ts +1 -1
  87. package/vanilla/UiActionBar.js +1 -1
  88. package/vanilla/UiAffordanceScope.d.ts +1 -1
  89. package/vanilla/UiAffordanceScope.js +1 -1
  90. package/vanilla/UiAvatar.d.ts +1 -1
  91. package/vanilla/UiAvatar.js +1 -1
  92. package/vanilla/UiAvatarGroup.d.ts +1 -1
  93. package/vanilla/UiAvatarGroup.js +1 -1
  94. package/vanilla/UiBadge.d.ts +1 -1
  95. package/vanilla/UiBadge.js +1 -1
  96. package/vanilla/UiBreadcrumbItem.d.ts +1 -1
  97. package/vanilla/UiBreadcrumbItem.js +1 -1
  98. package/vanilla/UiBreadcrumbs.d.ts +1 -1
  99. package/vanilla/UiBreadcrumbs.js +1 -1
  100. package/vanilla/UiButton.d.ts +1 -1
  101. package/vanilla/UiButton.js +1 -1
  102. package/vanilla/UiCallout.d.ts +1 -1
  103. package/vanilla/UiCallout.js +1 -1
  104. package/vanilla/UiCard.d.ts +1 -1
  105. package/vanilla/UiCard.js +1 -1
  106. package/vanilla/UiCheckbox.d.ts +1 -1
  107. package/vanilla/UiCheckbox.js +1 -1
  108. package/vanilla/UiCluster.d.ts +1 -1
  109. package/vanilla/UiCluster.js +1 -1
  110. package/vanilla/UiCombobox.d.ts +1 -1
  111. package/vanilla/UiCombobox.js +1 -1
  112. package/vanilla/UiContainer.d.ts +1 -1
  113. package/vanilla/UiContainer.js +1 -1
  114. package/vanilla/UiContextMenu.d.ts +1 -1
  115. package/vanilla/UiContextMenu.js +1 -1
  116. package/vanilla/UiCover.d.ts +1 -1
  117. package/vanilla/UiCover.js +1 -1
  118. package/vanilla/UiDescriptionItem.d.ts +1 -1
  119. package/vanilla/UiDescriptionItem.js +1 -1
  120. package/vanilla/UiDescriptionList.d.ts +1 -1
  121. package/vanilla/UiDescriptionList.js +1 -1
  122. package/vanilla/UiDialog.d.ts +1 -1
  123. package/vanilla/UiDialog.js +1 -1
  124. package/vanilla/UiDisclosure.d.ts +1 -1
  125. package/vanilla/UiDisclosure.js +1 -1
  126. package/vanilla/UiEditable.d.ts +1 -1
  127. package/vanilla/UiEditable.js +1 -1
  128. package/vanilla/UiEditorBlockActions.d.ts +1 -1
  129. package/vanilla/UiEditorBlockActions.js +1 -1
  130. package/vanilla/UiEditorChipEditor.d.ts +1 -1
  131. package/vanilla/UiEditorChipEditor.js +1 -1
  132. package/vanilla/UiEditorCodeLanguage.d.ts +1 -1
  133. package/vanilla/UiEditorCodeLanguage.js +1 -1
  134. package/vanilla/UiEditorImageToolbar.d.ts +1 -1
  135. package/vanilla/UiEditorImageToolbar.js +1 -1
  136. package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
  137. package/vanilla/UiEditorInsertTableGrid.js +1 -1
  138. package/vanilla/UiEditorLinkCard.d.ts +1 -1
  139. package/vanilla/UiEditorLinkCard.js +1 -1
  140. package/vanilla/UiEditorLinkForm.d.ts +1 -1
  141. package/vanilla/UiEditorLinkForm.js +1 -1
  142. package/vanilla/UiEditorMentionMenu.d.ts +1 -1
  143. package/vanilla/UiEditorMentionMenu.js +1 -1
  144. package/vanilla/UiEditorMentionMenuItem.d.ts +1 -1
  145. package/vanilla/UiEditorMentionMenuItem.js +1 -1
  146. package/vanilla/UiEditorSlashMenu.d.ts +1 -1
  147. package/vanilla/UiEditorSlashMenu.js +1 -1
  148. package/vanilla/UiEditorSlashMenuGroup.d.ts +1 -1
  149. package/vanilla/UiEditorSlashMenuGroup.js +1 -1
  150. package/vanilla/UiEditorSlashMenuItem.d.ts +1 -1
  151. package/vanilla/UiEditorSlashMenuItem.js +1 -1
  152. package/vanilla/UiEditorSurface.d.ts +1 -1
  153. package/vanilla/UiEditorSurface.js +1 -1
  154. package/vanilla/UiEditorTableContextMenu.d.ts +1 -1
  155. package/vanilla/UiEditorTableContextMenu.js +1 -1
  156. package/vanilla/UiEditorTableOverlay.d.ts +1 -1
  157. package/vanilla/UiEditorTableOverlay.js +1 -1
  158. package/vanilla/UiEditorTableToolbar.d.ts +1 -1
  159. package/vanilla/UiEditorTableToolbar.js +1 -1
  160. package/vanilla/UiEditorToolbar.d.ts +1 -1
  161. package/vanilla/UiEditorToolbar.js +1 -1
  162. package/vanilla/UiFloatingActionButton.d.ts +1 -1
  163. package/vanilla/UiFloatingActionButton.js +1 -1
  164. package/vanilla/UiFormField.d.ts +1 -1
  165. package/vanilla/UiFormField.js +1 -1
  166. package/vanilla/UiGrid.d.ts +1 -1
  167. package/vanilla/UiGrid.js +1 -1
  168. package/vanilla/UiIcon.d.ts +1 -1
  169. package/vanilla/UiIcon.js +1 -1
  170. package/vanilla/UiIconButton.d.ts +1 -1
  171. package/vanilla/UiIconButton.js +1 -1
  172. package/vanilla/UiImage.d.ts +1 -1
  173. package/vanilla/UiImage.js +1 -1
  174. package/vanilla/UiInput.d.ts +1 -1
  175. package/vanilla/UiInput.js +1 -1
  176. package/vanilla/UiInputGroup.d.ts +1 -1
  177. package/vanilla/UiInputGroup.js +1 -1
  178. package/vanilla/UiList.d.ts +1 -1
  179. package/vanilla/UiList.js +1 -1
  180. package/vanilla/UiListItem.d.ts +1 -1
  181. package/vanilla/UiListItem.js +1 -1
  182. package/vanilla/UiListbox.d.ts +1 -1
  183. package/vanilla/UiListbox.js +1 -1
  184. package/vanilla/UiMenu.d.ts +1 -1
  185. package/vanilla/UiMenu.js +1 -1
  186. package/vanilla/UiMenuGroup.d.ts +1 -1
  187. package/vanilla/UiMenuGroup.js +1 -1
  188. package/vanilla/UiMenuItem.d.ts +1 -1
  189. package/vanilla/UiMenuItem.js +1 -1
  190. package/vanilla/UiMeter.d.ts +1 -1
  191. package/vanilla/UiMeter.js +1 -1
  192. package/vanilla/UiNavItem.d.ts +1 -1
  193. package/vanilla/UiNavItem.js +1 -1
  194. package/vanilla/UiPageHeader.d.ts +1 -1
  195. package/vanilla/UiPageHeader.js +1 -1
  196. package/vanilla/UiPopover.d.ts +1 -1
  197. package/vanilla/UiPopover.js +1 -1
  198. package/vanilla/UiRadio.d.ts +1 -1
  199. package/vanilla/UiRadio.js +1 -1
  200. package/vanilla/UiRadioGroup.d.ts +1 -1
  201. package/vanilla/UiRadioGroup.js +1 -1
  202. package/vanilla/UiReel.d.ts +1 -1
  203. package/vanilla/UiReel.js +1 -1
  204. package/vanilla/UiScrollArea.d.ts +1 -1
  205. package/vanilla/UiScrollArea.js +1 -1
  206. package/vanilla/UiSearchResultRow.d.ts +1 -1
  207. package/vanilla/UiSearchResultRow.js +1 -1
  208. package/vanilla/UiSearchShell.d.ts +1 -1
  209. package/vanilla/UiSearchShell.js +1 -1
  210. package/vanilla/UiSection.d.ts +1 -1
  211. package/vanilla/UiSection.js +1 -1
  212. package/vanilla/UiSelect.d.ts +1 -1
  213. package/vanilla/UiSelect.js +1 -1
  214. package/vanilla/UiSeparator.d.ts +1 -1
  215. package/vanilla/UiSeparator.js +1 -1
  216. package/vanilla/UiSidebar.d.ts +1 -1
  217. package/vanilla/UiSidebar.js +1 -1
  218. package/vanilla/UiSpinner.d.ts +1 -1
  219. package/vanilla/UiSpinner.js +1 -1
  220. package/vanilla/UiStack.d.ts +1 -1
  221. package/vanilla/UiStack.js +1 -1
  222. package/vanilla/UiStatusMessage.d.ts +1 -1
  223. package/vanilla/UiStatusMessage.js +1 -1
  224. package/vanilla/UiSwatch.d.ts +1 -1
  225. package/vanilla/UiSwatch.js +1 -1
  226. package/vanilla/UiSwitch.d.ts +1 -1
  227. package/vanilla/UiSwitch.js +1 -1
  228. package/vanilla/UiSwitcher.d.ts +1 -1
  229. package/vanilla/UiSwitcher.js +1 -1
  230. package/vanilla/UiTable.d.ts +1 -1
  231. package/vanilla/UiTable.js +1 -1
  232. package/vanilla/UiTabs.d.ts +1 -1
  233. package/vanilla/UiTabs.js +1 -1
  234. package/vanilla/UiText.d.ts +1 -1
  235. package/vanilla/UiText.js +1 -1
  236. package/vanilla/UiTextarea.d.ts +1 -1
  237. package/vanilla/UiTextarea.js +1 -1
  238. package/vanilla/UiToast.d.ts +1 -1
  239. package/vanilla/UiToast.js +1 -1
  240. package/vanilla/UiToastRegion.d.ts +1 -1
  241. package/vanilla/UiToastRegion.js +1 -1
  242. package/vanilla/UiTooltip.d.ts +1 -1
  243. package/vanilla/UiTooltip.js +1 -1
  244. package/vanilla/UiTopBar.d.ts +1 -1
  245. package/vanilla/UiTopBar.js +1 -1
  246. package/vanilla/UiTree.d.ts +1 -1
  247. package/vanilla/UiTree.js +1 -1
  248. package/vanilla/UiTreeItem.d.ts +1 -1
  249. package/vanilla/UiTreeItem.js +1 -1
  250. package/vue/UiActionBar.vue +1 -1
  251. package/vue/UiAffordanceScope.vue +1 -1
  252. package/vue/UiAvatar.vue +1 -1
  253. package/vue/UiAvatarGroup.vue +1 -1
  254. package/vue/UiBadge.vue +1 -1
  255. package/vue/UiBreadcrumbItem.vue +1 -1
  256. package/vue/UiBreadcrumbs.vue +1 -1
  257. package/vue/UiButton.vue +1 -1
  258. package/vue/UiCallout.vue +1 -1
  259. package/vue/UiCard.vue +1 -1
  260. package/vue/UiCheckbox.vue +1 -1
  261. package/vue/UiCluster.vue +1 -1
  262. package/vue/UiCombobox.vue +1 -1
  263. package/vue/UiContainer.vue +1 -1
  264. package/vue/UiContextMenu.vue +1 -1
  265. package/vue/UiCover.vue +1 -1
  266. package/vue/UiDescriptionItem.vue +1 -1
  267. package/vue/UiDescriptionList.vue +1 -1
  268. package/vue/UiDialog.vue +1 -1
  269. package/vue/UiDisclosure.vue +1 -1
  270. package/vue/UiEditable.vue +1 -1
  271. package/vue/UiEditorBlockActions.vue +1 -1
  272. package/vue/UiEditorChipEditor.vue +1 -1
  273. package/vue/UiEditorCodeLanguage.vue +1 -1
  274. package/vue/UiEditorImageToolbar.vue +1 -1
  275. package/vue/UiEditorInsertTableGrid.vue +1 -1
  276. package/vue/UiEditorLinkCard.vue +1 -1
  277. package/vue/UiEditorLinkForm.vue +1 -1
  278. package/vue/UiEditorMentionMenu.vue +1 -1
  279. package/vue/UiEditorMentionMenuItem.vue +1 -1
  280. package/vue/UiEditorSlashMenu.vue +1 -1
  281. package/vue/UiEditorSlashMenuGroup.vue +1 -1
  282. package/vue/UiEditorSlashMenuItem.vue +1 -1
  283. package/vue/UiEditorSurface.vue +1 -1
  284. package/vue/UiEditorTableContextMenu.vue +1 -1
  285. package/vue/UiEditorTableOverlay.vue +1 -1
  286. package/vue/UiEditorTableToolbar.vue +1 -1
  287. package/vue/UiEditorToolbar.vue +1 -1
  288. package/vue/UiFloatingActionButton.vue +1 -1
  289. package/vue/UiFormField.vue +1 -1
  290. package/vue/UiGrid.vue +1 -1
  291. package/vue/UiIcon.vue +1 -1
  292. package/vue/UiIconButton.vue +1 -1
  293. package/vue/UiImage.vue +1 -1
  294. package/vue/UiInput.vue +1 -1
  295. package/vue/UiInputGroup.vue +1 -1
  296. package/vue/UiList.vue +1 -1
  297. package/vue/UiListItem.vue +1 -1
  298. package/vue/UiListbox.vue +1 -1
  299. package/vue/UiMenu.vue +1 -1
  300. package/vue/UiMenuGroup.vue +1 -1
  301. package/vue/UiMenuItem.vue +1 -1
  302. package/vue/UiMeter.vue +1 -1
  303. package/vue/UiNavItem.vue +1 -1
  304. package/vue/UiPageHeader.vue +1 -1
  305. package/vue/UiPopover.vue +1 -1
  306. package/vue/UiRadio.vue +1 -1
  307. package/vue/UiRadioGroup.vue +1 -1
  308. package/vue/UiReel.vue +1 -1
  309. package/vue/UiScrollArea.vue +1 -1
  310. package/vue/UiSearchResultRow.vue +1 -1
  311. package/vue/UiSearchShell.vue +1 -1
  312. package/vue/UiSection.vue +1 -1
  313. package/vue/UiSelect.vue +1 -1
  314. package/vue/UiSeparator.vue +1 -1
  315. package/vue/UiSidebar.vue +1 -1
  316. package/vue/UiSpinner.vue +1 -1
  317. package/vue/UiStack.vue +1 -1
  318. package/vue/UiStatusMessage.vue +1 -1
  319. package/vue/UiSwatch.vue +1 -1
  320. package/vue/UiSwitch.vue +1 -1
  321. package/vue/UiSwitcher.vue +1 -1
  322. package/vue/UiTable.vue +1 -1
  323. package/vue/UiTabs.vue +1 -1
  324. package/vue/UiText.vue +1 -1
  325. package/vue/UiTextarea.vue +1 -1
  326. package/vue/UiToast.vue +1 -1
  327. package/vue/UiToastRegion.vue +1 -1
  328. package/vue/UiTooltip.vue +1 -1
  329. package/vue/UiTopBar.vue +1 -1
  330. package/vue/UiTree.vue +1 -1
  331. package/vue/UiTreeItem.vue +1 -1
  332. package/vue/chunks/UiActionBar.js +1 -1
  333. package/vue/chunks/UiAffordanceScope.js +1 -1
  334. package/vue/chunks/UiAvatar.js +1 -1
  335. package/vue/chunks/UiAvatarGroup.js +1 -1
  336. package/vue/chunks/UiBadge.js +1 -1
  337. package/vue/chunks/UiBreadcrumbItem.js +1 -1
  338. package/vue/chunks/UiBreadcrumbs.js +1 -1
  339. package/vue/chunks/UiButton.js +1 -1
  340. package/vue/chunks/UiCallout.js +1 -1
  341. package/vue/chunks/UiCard.js +1 -1
  342. package/vue/chunks/UiCheckbox.js +1 -1
  343. package/vue/chunks/UiCluster.js +1 -1
  344. package/vue/chunks/UiCombobox.js +1 -1
  345. package/vue/chunks/UiContainer.js +1 -1
  346. package/vue/chunks/UiContextMenu.js +1 -1
  347. package/vue/chunks/UiCover.js +1 -1
  348. package/vue/chunks/UiDescriptionItem.js +1 -1
  349. package/vue/chunks/UiDescriptionList.js +1 -1
  350. package/vue/chunks/UiDialog.js +1 -1
  351. package/vue/chunks/UiDisclosure.js +1 -1
  352. package/vue/chunks/UiEditable.js +1 -1
  353. package/vue/chunks/UiEditorInsertTableGrid.js +1 -1
  354. package/vue/chunks/UiEditorMentionMenu.js +1 -1
  355. package/vue/chunks/UiEditorMentionMenuItem.js +1 -1
  356. package/vue/chunks/UiEditorSlashMenu.js +1 -1
  357. package/vue/chunks/UiEditorSlashMenuGroup.js +1 -1
  358. package/vue/chunks/UiEditorSlashMenuItem.js +1 -1
  359. package/vue/chunks/UiEditorSurface.js +1 -1
  360. package/vue/chunks/UiEditorTableContextMenu.js +1 -1
  361. package/vue/chunks/UiEditorTableOverlay.js +1 -1
  362. package/vue/chunks/UiEditorTableToolbar.js +1 -1
  363. package/vue/chunks/UiEditorToolbar.js +1 -1
  364. package/vue/chunks/UiFloatingActionButton.js +1 -1
  365. package/vue/chunks/UiFormField.js +1 -1
  366. package/vue/chunks/UiGrid.js +1 -1
  367. package/vue/chunks/UiIcon.js +1 -1
  368. package/vue/chunks/UiIconButton.js +1 -1
  369. package/vue/chunks/UiImage.js +1 -1
  370. package/vue/chunks/UiInput.js +1 -1
  371. package/vue/chunks/UiInputGroup.js +1 -1
  372. package/vue/chunks/UiList.js +1 -1
  373. package/vue/chunks/UiListItem.js +1 -1
  374. package/vue/chunks/UiListbox.js +1 -1
  375. package/vue/chunks/UiMenu.js +1 -1
  376. package/vue/chunks/UiMenuGroup.js +1 -1
  377. package/vue/chunks/UiMenuItem.js +1 -1
  378. package/vue/chunks/UiMeter.js +1 -1
  379. package/vue/chunks/UiNavItem.js +1 -1
  380. package/vue/chunks/UiPageHeader.js +1 -1
  381. package/vue/chunks/UiPopover.js +1 -1
  382. package/vue/chunks/UiRadio.js +1 -1
  383. package/vue/chunks/UiRadioGroup.js +1 -1
  384. package/vue/chunks/UiReel.js +1 -1
  385. package/vue/chunks/UiScrollArea.js +1 -1
  386. package/vue/chunks/UiSearchResultRow.js +1 -1
  387. package/vue/chunks/UiSearchShell.js +1 -1
  388. package/vue/chunks/UiSection.js +1 -1
  389. package/vue/chunks/UiSelect.js +1 -1
  390. package/vue/chunks/UiSeparator.js +1 -1
  391. package/vue/chunks/UiSidebar.js +1 -1
  392. package/vue/chunks/UiSpinner.js +1 -1
  393. package/vue/chunks/UiStack.js +1 -1
  394. package/vue/chunks/UiStatusMessage.js +1 -1
  395. package/vue/chunks/UiSwatch.js +1 -1
  396. package/vue/chunks/UiSwitch.js +1 -1
  397. package/vue/chunks/UiSwitcher.js +1 -1
  398. package/vue/chunks/UiTable.js +1 -1
  399. package/vue/chunks/UiTabs.js +1 -1
  400. package/vue/chunks/UiText.js +1 -1
  401. package/vue/chunks/UiTextarea.js +1 -1
  402. package/vue/chunks/UiToast.js +1 -1
  403. package/vue/chunks/UiToastRegion.js +1 -1
  404. package/vue/chunks/UiTooltip.js +1 -1
  405. package/vue/chunks/UiTopBar.js +1 -1
  406. package/vue/chunks/UiTree.js +1 -1
  407. package/vue/chunks/UiTreeItem.js +1 -1
  408. package/vue/components.css +1667 -1050
  409. package/vue/editor/index.js +5535 -3656
  410. package/vue/host.ts +1 -1
  411. package/vue/editor/image.d.ts +0 -7
  412. package/vue/editor/table-of-contents.d.ts +0 -7
@@ -939,12 +939,12 @@ ol:where([data-hn-ui-breadcrumbs]) {
939
939
  }
940
940
 
941
941
  /* A rounded SVG arc grows and recedes over a quiet full-circle track. */
942
- @keyframes ui-spinner-rotate-7acb6679 {
942
+ @keyframes ui-spinner-rotate-39d314ea {
943
943
  100% {
944
944
  transform: rotate(1turn);
945
945
  }
946
946
  }
947
- @keyframes ui-spinner-dash-7acb6679 {
947
+ @keyframes ui-spinner-dash-39d314ea {
948
948
  0% {
949
949
  stroke-dasharray: 1, 150;
950
950
  stroke-dashoffset: 0;
@@ -980,7 +980,7 @@ svg {
980
980
  display: block;
981
981
  inline-size: 100%;
982
982
  block-size: 100%;
983
- animation: ui-spinner-rotate-7acb6679 2s linear infinite;
983
+ animation: ui-spinner-rotate-39d314ea 2s linear infinite;
984
984
  }
985
985
  circle {
986
986
  stroke-width: 3;
@@ -993,7 +993,7 @@ circle {
993
993
  stroke: currentColor;
994
994
  stroke-dasharray: 90, 150;
995
995
  stroke-dashoffset: 0;
996
- animation: ui-spinner-dash-7acb6679 1.5s ease-in-out infinite;
996
+ animation: ui-spinner-dash-39d314ea 1.5s ease-in-out infinite;
997
997
  }
998
998
  @media (prefers-reduced-motion: reduce) {
999
999
  svg,.arc {
@@ -1777,7 +1777,7 @@ html[data-ui-input-modality="touch"]
1777
1777
  /* The label, and under it an optional line saying what the choice means. */
1778
1778
 
1779
1779
  /* Centre the tick's box and lift it slightly for the rotated check shape. */
1780
- @keyframes ui-checkbox-check-fe145372 {
1780
+ @keyframes ui-checkbox-check-6e1c7414 {
1781
1781
  from {
1782
1782
  opacity: 0;
1783
1783
  transform: translateY(-0.09rem) rotate(45deg) scale(0.55);
@@ -1872,7 +1872,7 @@ input:checked:where([data-hn-ui-checkbox])::after {
1872
1872
  border-width: 0 0.125rem 0.125rem 0;
1873
1873
  opacity: 1;
1874
1874
  transform: translateY(-0.09rem) rotate(45deg);
1875
- animation: ui-checkbox-check-fe145372 180ms var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1))
1875
+ animation: ui-checkbox-check-6e1c7414 180ms var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1))
1876
1876
  both;
1877
1877
  }
1878
1878
  input:indeterminate:where([data-hn-ui-checkbox])::after {
@@ -3036,13 +3036,13 @@ dd:where([data-hn-ui-description-item]) {
3036
3036
  /* A CSS-drawn X. */
3037
3037
 
3038
3038
  /* A touch target, like Button on coarse pointers. */
3039
- @keyframes ui-dialog-enter-539eaebb {
3039
+ @keyframes ui-dialog-enter-c6e7c0af {
3040
3040
  from {
3041
3041
  opacity: 0;
3042
3042
  transform: scale(0.96);
3043
3043
  }
3044
3044
  }
3045
- @keyframes ui-dialog-backdrop-enter-539eaebb {
3045
+ @keyframes ui-dialog-backdrop-enter-c6e7c0af {
3046
3046
  from {
3047
3047
  background-color: transparent;
3048
3048
  }
@@ -3090,7 +3090,7 @@ from {
3090
3090
  pointer-events: auto;
3091
3091
  opacity: 1;
3092
3092
  transform: scale(1);
3093
- animation: ui-dialog-enter-539eaebb var(--ui-dialog-duration, var(--ui-motion-base))
3093
+ animation: ui-dialog-enter-c6e7c0af var(--ui-dialog-duration, var(--ui-motion-base))
3094
3094
  var(--ui-motion-ease);
3095
3095
  }
3096
3096
  :scope[data-ui-dialog-state~="size=sm"]:where([data-hn-ui-dialog]) {
@@ -3208,7 +3208,7 @@ footer:empty:where([data-hn-ui-dialog]) {
3208
3208
  }
3209
3209
  :scope[open]:modal:where([data-hn-ui-dialog])::backdrop {
3210
3210
  background-color: var(--ui-overlay-backdrop);
3211
- animation: ui-dialog-backdrop-enter-539eaebb var(--_ui-dialog-duration, var(--ui-motion-base))
3211
+ animation: ui-dialog-backdrop-enter-c6e7c0af var(--_ui-dialog-duration, var(--ui-motion-base))
3212
3212
  var(--ui-motion-ease);
3213
3213
  }
3214
3214
  :scope[open][data-ui-backdrop-hidden]:where([data-hn-ui-dialog])::backdrop {
@@ -9432,7 +9432,7 @@ input:where([data-hn-ui-switch]),input:where([data-hn-ui-switch])::after {
9432
9432
  }
9433
9433
 
9434
9434
  /* Leaving slides on down and fades; the controller removes the toast when this ends. */
9435
- @keyframes ui-toast-enter-f573d590 {
9435
+ @keyframes ui-toast-enter-4af986cc {
9436
9436
  from {
9437
9437
  opacity: 0;
9438
9438
  transform: translateY(-1rem);
@@ -9442,7 +9442,7 @@ to {
9442
9442
  transform: translateY(0);
9443
9443
  }
9444
9444
  }
9445
- @keyframes ui-toast-exit-f573d590 {
9445
+ @keyframes ui-toast-exit-4af986cc {
9446
9446
  from {
9447
9447
  opacity: 1;
9448
9448
  transform: translateY(0);
@@ -9452,7 +9452,7 @@ to {
9452
9452
  transform: translateY(0.75rem);
9453
9453
  }
9454
9454
  }
9455
- @keyframes ui-toast-enter-bottom-f573d590 {
9455
+ @keyframes ui-toast-enter-bottom-4af986cc {
9456
9456
  from {
9457
9457
  opacity: 0;
9458
9458
  transform: translateY(1rem);
@@ -9462,7 +9462,7 @@ to {
9462
9462
  transform: translateY(0);
9463
9463
  }
9464
9464
  }
9465
- @keyframes ui-toast-exit-bottom-f573d590 {
9465
+ @keyframes ui-toast-exit-bottom-4af986cc {
9466
9466
  from {
9467
9467
  opacity: 1;
9468
9468
  transform: translateY(0);
@@ -9553,7 +9553,7 @@ to {
9553
9553
  --_ui-toast-region-shadow,
9554
9554
  var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg)))
9555
9555
  );
9556
- animation: ui-toast-enter-f573d590 var(--_ui-toast-region-enter-duration, 0.32s)
9556
+ animation: ui-toast-enter-4af986cc var(--_ui-toast-region-enter-duration, 0.32s)
9557
9557
  var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1)) both;
9558
9558
  }
9559
9559
  .toast[data-tone="info"]:where([data-hn-ui-toast-region]) {
@@ -9573,17 +9573,17 @@ to {
9573
9573
  --_ui-toast-region-tone-surface: var(--ui-danger-soft);
9574
9574
  }
9575
9575
  .toast.closing:where([data-hn-ui-toast-region]) {
9576
- animation: ui-toast-exit-f573d590 var(--_ui-toast-region-exit-duration, 0.22s) var(--ui-motion-ease)
9576
+ animation: ui-toast-exit-4af986cc var(--_ui-toast-region-exit-duration, 0.22s) var(--ui-motion-ease)
9577
9577
  both;
9578
9578
  pointer-events: none;
9579
9579
  }
9580
9580
  :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"])
9581
9581
  .toast:where([data-hn-ui-toast-region]) {
9582
- animation-name: ui-toast-enter-bottom-f573d590;
9582
+ animation-name: ui-toast-enter-bottom-4af986cc;
9583
9583
  }
9584
9584
  :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"])
9585
9585
  .toast.closing:where([data-hn-ui-toast-region]) {
9586
- animation-name: ui-toast-exit-bottom-f573d590;
9586
+ animation-name: ui-toast-exit-bottom-4af986cc;
9587
9587
  }
9588
9588
  @media (prefers-reduced-motion: reduce) {
9589
9589
  .toast:where([data-hn-ui-toast-region]),.toast.closing:where([data-hn-ui-toast-region]) {
@@ -9784,7 +9784,7 @@ to {
9784
9784
  slides, the label reaches back under the icon (the controller measures how far) with its text
9785
9785
  where it was, and fades out across the gap before the icon, fully gone where the icon begins
9786
9786
  to cover it: the name slips under the icon rather than stopping at a hard edge beside it. */
9787
- @keyframes ui-tree-item-marquee-fb8daa44 {
9787
+ @keyframes ui-tree-item-marquee-94992850 {
9788
9788
  from {
9789
9789
  transform: translateX(0);
9790
9790
  }
@@ -10040,7 +10040,7 @@ to {
10040
10040
  .row[data-ui-marquee] > .label > .label-text:where([data-hn-ui-tree-item]) {
10041
10041
  /* Once per pass: the controller restarts it after a rest at the end, so the name holds still
10042
10042
  long enough to read rather than sliding back and forth. */
10043
- animation: ui-tree-item-marquee-fb8daa44 var(--_marquee-duration) linear 0.5s 1 normal forwards;
10043
+ animation: ui-tree-item-marquee-94992850 var(--_marquee-duration) linear 0.5s 1 normal forwards;
10044
10044
  will-change: transform;
10045
10045
  }
10046
10046
  .row[data-ui-marquee] > .label:where([data-hn-ui-tree-item]) {
@@ -10965,7 +10965,7 @@ html[data-ui-input-modality="touch"]
10965
10965
  width: 3px;
10966
10966
  background: var(--ui-affordance-direct-color, var(--ui-accent-solid, #5b55d6));
10967
10967
  }
10968
- /* Generated by HTML Next 1.0.0-alpha.55. Do not edit. */
10968
+ /* Generated by HTML Next 1.0.0-alpha.57. Do not edit. */
10969
10969
  @supports (-moz-appearance: none) {
10970
10970
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
10971
10971
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
@@ -11514,228 +11514,7 @@ html[data-ui-input-modality="touch"]
11514
11514
 
11515
11515
  /* A component that sets its display still honours the hidden attribute on its root. */
11516
11516
  }
11517
- /* Generated by HTML Next 1.0.0-alpha.55. Do not edit. */
11518
- @supports (-moz-appearance: none) {
11519
- :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
11520
- :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
11521
- }
11522
- @supports (-moz-appearance: none) {
11523
- [data-component~="ui-checkbox"] { --html-next-scope-owner: "ui-checkbox" !important; }
11524
- }
11525
- @scope ([data-component~="ui-checkbox"]) to ([data-component], [data-slotted]) {
11526
- /* This component's hooks style the element they are set on, and never a nested one. */
11527
- @property --ui-checkbox-gap {
11528
- syntax: "*";
11529
- inherits: false;
11530
- }
11531
- @property --ui-checkbox-invalid-border {
11532
- syntax: "*";
11533
- inherits: false;
11534
- }
11535
- @property --ui-checkbox-size {
11536
- syntax: "*";
11537
- inherits: false;
11538
- }
11539
-
11540
- :scope:where([data-component~="ui-checkbox"]) {
11541
- /* Hooks do not inherit, so the parts below read them from the root. */
11542
- --_ui-checkbox-size: var(--ui-checkbox-size);
11543
- --_ui-checkbox-invalid-border: var(--ui-checkbox-invalid-border, var(--ui-field-danger, var(--ui-danger-solid)));
11544
-
11545
- display: inline-flex;
11546
- align-items: flex-start;
11547
- gap: var(--ui-checkbox-gap, var(--ui-space-2));
11548
- max-inline-size: 100%;
11549
- color: var(--ui-text-primary);
11550
- cursor: pointer;
11551
- }
11552
-
11553
- /* The label, and under it an optional line saying what the choice means. */
11554
- .text {
11555
- display: flex;
11556
- flex-direction: column;
11557
- gap: var(--ui-space-1);
11558
- min-inline-size: 0;
11559
- }
11560
-
11561
- .label {
11562
- min-inline-size: 0;
11563
- line-height: var(--ui-line-height-md);
11564
- }
11565
-
11566
- .description {
11567
- color: var(--ui-text-secondary);
11568
- font-size: var(--ui-font-size-sm);
11569
- line-height: var(--ui-line-height);
11570
- }
11571
-
11572
- .description:empty {
11573
- display: none;
11574
- }
11575
-
11576
- input {
11577
- appearance: none;
11578
- -webkit-appearance: none;
11579
- position: relative;
11580
- flex: 0 0 auto;
11581
- inline-size: var(--_ui-checkbox-size, 1.125rem);
11582
- block-size: var(--_ui-checkbox-size, 1.125rem);
11583
- margin: 0.125em 0 0;
11584
- border: var(--ui-border-width) solid var(--ui-control-border, var(--ui-border-strong));
11585
- border-radius: var(--ui-radius-sm);
11586
- background: var(--ui-control-surface, var(--ui-surface-default));
11587
- box-shadow: var(--ui-control-inset);
11588
- cursor: pointer;
11589
- transition:
11590
- background-color var(--ui-motion-fast) var(--ui-motion-ease),
11591
- border-color var(--ui-motion-fast) var(--ui-motion-ease),
11592
- box-shadow var(--ui-motion-fast) var(--ui-motion-ease);
11593
- }
11594
-
11595
- input:where(:not([data-component], [data-slotted]))::after {
11596
- content: "";
11597
- position: absolute;
11598
- opacity: 0;
11599
- transition: opacity 120ms var(--ui-motion-ease);
11600
- }
11601
-
11602
- input:checked,
11603
- input:indeterminate {
11604
- border-color: var(--ui-accent-solid);
11605
- background: var(--ui-accent-solid);
11606
- box-shadow: var(--ui-control-inset);
11607
- }
11608
-
11609
- /* Centre the tick's box and lift it slightly for the rotated check shape. */
11610
- input:checked:where(:not([data-component], [data-slotted]))::after {
11611
- inset: 0;
11612
- margin: auto;
11613
- inline-size: 0.28rem;
11614
- block-size: 0.5rem;
11615
- /* Longhands, not `border: solid var(...)`: lowering drops a shorthand that omits a
11616
- component, which left the tick with no style and no colour. */
11617
- border-style: solid;
11618
- border-color: var(--ui-text-on-accent);
11619
- border-width: 0 0.125rem 0.125rem 0;
11620
- opacity: 1;
11621
- transform: translateY(-0.09rem) rotate(45deg);
11622
- animation: ui-checkbox-check 180ms var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1)) both;
11623
- }
11624
-
11625
- input:indeterminate:where(:not([data-component], [data-slotted]))::after {
11626
- inset: 50% 0.23rem auto;
11627
- block-size: 0.125rem;
11628
- border-radius: var(--ui-radius-round);
11629
- background: var(--ui-text-on-accent);
11630
- opacity: 1;
11631
- transform: translateY(-50%);
11632
- }
11633
-
11634
- @keyframes ui-checkbox-check {
11635
- from {
11636
- opacity: 0;
11637
- transform: translateY(-0.09rem) rotate(45deg) scale(0.55);
11638
- }
11639
- 65% {
11640
- opacity: 1;
11641
- transform: translateY(-0.09rem) rotate(45deg) scale(1.12);
11642
- }
11643
- to {
11644
- opacity: 1;
11645
- transform: translateY(-0.09rem) rotate(45deg) scale(1);
11646
- }
11647
- }
11648
-
11649
- @media (prefers-reduced-motion: reduce) {
11650
- input:where(:not([data-component], [data-slotted]))::after {
11651
- transition: none;
11652
- animation: none;
11653
- }
11654
- }
11655
-
11656
- input:hover:enabled {
11657
- border-color: var(--ui-accent-solid);
11658
- }
11659
-
11660
- input:focus-visible {
11661
- outline: var(--ui-focus-width) solid var(--ui-focus-ring, var(--ui-accent-solid));
11662
- outline-offset: var(--ui-focus-width);
11663
- }
11664
-
11665
- :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="invalid"] input {
11666
- border-color: var(--_ui-checkbox-invalid-border);
11667
- }
11668
-
11669
- :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="disabled"] {
11670
- color: var(--ui-disabled-text);
11671
- cursor: not-allowed;
11672
- }
11673
- :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="disabled"] .description {
11674
- color: var(--ui-disabled-text);
11675
- }
11676
- :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="disabled"] input {
11677
- border-color: var(--ui-disabled-border);
11678
- background: var(--ui-disabled-surface);
11679
- box-shadow: none;
11680
- cursor: not-allowed;
11681
- }
11682
-
11683
- /* A sized choice keeps its box and aligns instead: the label takes that size's field type size,
11684
- and the first line centres in that control height, so the label shares a row's baseline.
11685
- Multi-line labels and descriptions still grow downward from that first line. */
11686
- :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=sm"] {
11687
- --_font: var(--ui-font-size-sm);
11688
- --_row: var(--ui-control-size-sm);
11689
- }
11690
-
11691
- :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=lg"] {
11692
- --_font: var(--ui-font-size-md);
11693
- --_row: var(--ui-control-size-lg);
11694
- }
11695
-
11696
- :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=sm"],
11697
- :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=lg"] {
11698
- --_line: calc(var(--_font) * var(--ui-line-height-md));
11699
- font-size: var(--_font);
11700
- padding-block: calc((var(--_row) - var(--_line)) / 2);
11701
- }
11702
-
11703
- :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=sm"] input,
11704
- :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=lg"] input {
11705
- margin-top: calc((var(--_line) - var(--_ui-checkbox-size, 1.125rem)) / 2);
11706
- }
11707
-
11708
- @media (pointer: coarse) {
11709
- :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=sm"] {
11710
- --_row: var(--ui-control-min-block-size);
11711
- }
11712
- }
11713
-
11714
- /* A component that sets its display still honours the hidden attribute on its root. */
11715
- :scope:where([data-component~="ui-checkbox"])[hidden] {
11716
- display: none;
11717
- }
11718
- }
11719
- @scope ([data-component~="ui-checkbox"]) to ([data-component]) {
11720
- /* This component's hooks style the element they are set on, and never a nested one. */
11721
-
11722
- /* The label, and under it an optional line saying what the choice means. */
11723
-
11724
- /* Centre the tick's box and lift it slightly for the rotated check shape. */
11725
-
11726
- @media (prefers-reduced-motion: reduce) {
11727
- }
11728
-
11729
- /* A sized choice keeps its box and aligns instead: the label takes that size's field type size,
11730
- and the first line centres in that control height, so the label shares a row's baseline.
11731
- Multi-line labels and descriptions still grow downward from that first line. */
11732
-
11733
- @media (pointer: coarse) {
11734
- }
11735
-
11736
- /* A component that sets its display still honours the hidden attribute on its root. */
11737
- }
11738
- /* Generated by HTML Next 1.0.0-alpha.55. Do not edit. */
11517
+ /* Generated by HTML Next 1.0.0-alpha.57. Do not edit. */
11739
11518
  @supports (-moz-appearance: none) {
11740
11519
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
11741
11520
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
@@ -11836,259 +11615,35 @@ html[data-ui-input-modality="touch"]
11836
11615
 
11837
11616
  /* A component that sets its display still honours the hidden attribute on its root. */
11838
11617
  }
11839
- /* Generated by HTML Next 1.0.0-alpha.55. Do not edit. */
11618
+ /* Generated by HTML Next 1.0.0-alpha.57. Do not edit. */
11840
11619
  @supports (-moz-appearance: none) {
11841
11620
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
11842
11621
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
11843
11622
  }
11844
11623
  @supports (-moz-appearance: none) {
11845
- [data-component~="ui-disclosure"] { --html-next-scope-owner: "ui-disclosure" !important; }
11624
+ [data-component~="ui-form-field"] { --html-next-scope-owner: "ui-form-field" !important; }
11846
11625
  }
11847
- @scope ([data-component~="ui-disclosure"]) to ([data-component], [data-slotted]) {
11626
+ @scope ([data-component~="ui-form-field"]) to ([data-component], [data-slotted]) {
11848
11627
  /* This component's hooks style the element they are set on, and never a nested one. */
11849
- @property --ui-disclosure-trigger-min-block-size {
11628
+ @property --ui-form-field-danger {
11850
11629
  syntax: "*";
11851
11630
  inherits: false;
11852
11631
  }
11853
- @property --ui-disclosure-trigger-padding-block {
11632
+ @property --ui-form-field-help-font-size {
11854
11633
  syntax: "*";
11855
11634
  inherits: false;
11856
11635
  }
11857
- @property --ui-disclosure-trigger-padding-inline {
11636
+ @property --ui-form-field-help-min-block-size {
11858
11637
  syntax: "*";
11859
11638
  inherits: false;
11860
11639
  }
11861
-
11862
- /* Density resolves into the summary row's own values; the public tokens still override them. */
11863
- :scope:where([data-component~="ui-disclosure"]) {
11864
- /* Hooks do not inherit, so the parts below read them from the root. */
11865
- --_ui-disclosure-trigger-min-block-size: var(--ui-disclosure-trigger-min-block-size);
11866
- --_ui-disclosure-trigger-padding-block: var(--ui-disclosure-trigger-padding-block);
11867
- --_ui-disclosure-trigger-padding-inline: var(--ui-disclosure-trigger-padding-inline);
11868
-
11869
- --_trigger-min-block-size: var(--ui-control-size);
11870
- --_trigger-padding-block: var(--ui-space-2);
11871
- --_trigger-padding-inline: var(--ui-space-3);
11640
+ @property --ui-form-field-help-text {
11641
+ syntax: "*";
11642
+ inherits: false;
11872
11643
  }
11873
-
11874
- :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="density=compact"] {
11875
- --_trigger-min-block-size: var(--ui-control-size-sm);
11876
- --_trigger-padding-block: var(--ui-space-1);
11877
- --_trigger-padding-inline: var(--ui-space-2);
11878
- }
11879
-
11880
- /* An accordion row, not a field: no enclosing box, just a divider, so it never reads as a
11881
- * select or combobox. Stacked disclosures share their dividers. */
11882
- :scope:where([data-component~="ui-disclosure"]) {
11883
- display: block;
11884
- inline-size: 100%;
11885
- overflow: clip;
11886
- border-block-end: var(--ui-border-width) solid var(--ui-border-divider);
11887
- color: var(--ui-text-primary);
11888
- }
11889
-
11890
- .trigger {
11891
- display: flex;
11892
- gap: var(--ui-space-3);
11893
- align-items: center;
11894
- inline-size: 100%;
11895
- min-block-size: var(--_ui-disclosure-trigger-min-block-size, var(--_trigger-min-block-size));
11896
- padding: var(--_ui-disclosure-trigger-padding-block, var(--_trigger-padding-block))
11897
- var(--_ui-disclosure-trigger-padding-inline, var(--_trigger-padding-inline));
11898
- border: 0;
11899
- background: transparent;
11900
- color: inherit;
11901
- font: inherit;
11902
- font-weight: var(--ui-font-semibold);
11903
- text-align: start;
11904
- cursor: pointer;
11905
- border-radius: var(--ui-radius-sm);
11906
- transition: background-color var(--ui-motion-fast) var(--ui-motion-ease);
11907
- }
11908
-
11909
- .trigger:hover:not(:disabled) {
11910
- background: color-mix(in srgb, currentColor 6%, transparent);
11911
- }
11912
- .trigger:focus-visible {
11913
- outline: none;
11914
- box-shadow: inset 0 0 0 var(--ui-focus-width) color-mix(in srgb, var(--ui-focus-ring) 45%, transparent);
11915
- }
11916
- .trigger:disabled {
11917
- color: var(--ui-disabled-text);
11918
- cursor: not-allowed;
11919
- }
11920
-
11921
- .summary {
11922
- flex: 1;
11923
- min-inline-size: 0;
11924
- }
11925
-
11926
- .leading,
11927
- .indicator {
11928
- display: inline-flex;
11929
- align-items: center;
11930
- justify-content: center;
11931
- flex: none;
11932
- }
11933
- .leading:empty {
11934
- display: none;
11935
- }
11936
- .indicator {
11937
- transition: transform var(--ui-motion-feedback) var(--ui-motion-feedback-ease);
11938
- }
11939
- :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="internalOpen"] .indicator {
11940
- transform: rotate(180deg);
11941
- }
11942
-
11943
- .chevron {
11944
- inline-size: 0.5rem;
11945
- block-size: 0.5rem;
11946
- border-inline-end: 2px solid currentColor;
11947
- border-block-end: 2px solid currentColor;
11948
- transform: rotate(45deg) translate(-1px, -1px);
11949
- }
11950
-
11951
- .panel {
11952
- display: grid;
11953
- grid-template-rows: 0fr;
11954
- transition: grid-template-rows var(--ui-motion-reveal) var(--ui-motion-reveal-ease), content-visibility var(--ui-motion-reveal) allow-discrete;
11955
- }
11956
-
11957
- .panel-inner {
11958
- min-block-size: 0;
11959
- overflow: hidden;
11960
- padding-inline: var(--ui-space-3);
11961
- }
11962
-
11963
- :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="internalOpen"] .panel {
11964
- grid-template-rows: 1fr;
11965
- }
11966
- :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="internalOpen"] .panel-inner {
11967
- padding-block: 0 var(--ui-space-3);
11968
- }
11969
-
11970
- /* A bounded accordion owns one flexible body, so its trigger never scrolls away. The
11971
- * normal content-sized layout and its animation remain unchanged when fill is omitted. */
11972
- :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"] {
11973
- display: flex;
11974
- flex-direction: column;
11975
- flex: 0 0 var(--_ui-disclosure-heading-size, var(--_trigger-min-block-size));
11976
- min-block-size: calc(var(--_ui-disclosure-heading-size, var(--_trigger-min-block-size)) + var(--ui-border-width));
11977
- transition: flex-grow var(--ui-motion-layout) var(--ui-motion-layout-ease);
11978
- border-block-end: 0;
11979
- border-block-start: var(--ui-border-width) solid var(--ui-border-divider);
11980
- }
11981
- :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"][data-ui-disclosure-state~="internalOpen"] {
11982
- flex-grow: 1;
11983
- }
11984
- :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"] .heading {
11985
- flex: none;
11986
- }
11987
- :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"] .trigger {
11988
- border-radius: 0;
11989
- }
11990
- :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"] .panel {
11991
- flex: 1;
11992
- min-block-size: 0;
11993
- }
11994
- :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"] .panel-inner {
11995
- display: flex;
11996
- flex-direction: column;
11997
- flex: 1;
11998
- min-block-size: 0;
11999
- padding: 0;
12000
- }
12001
-
12002
- :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="variant=navigation"] .trigger {
12003
- gap: var(--ui-nav-gap);
12004
- padding-inline: var(--ui-nav-padding-inline);
12005
- min-block-size: var(--ui-nav-min-block-size);
12006
- padding-block: var(--ui-nav-padding-block);
12007
- border-radius: var(--ui-selection-radius);
12008
- font-size: var(--ui-font-size-md);
12009
- font-weight: var(--ui-font-normal);
12010
- color: var(--ui-text-secondary);
12011
- }
12012
- :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="variant=navigation"][data-ui-disclosure-state~="density=compact"] .trigger {
12013
- padding-inline: var(--ui-nav-compact-padding-inline);
12014
- padding-block: var(--ui-nav-compact-padding-block);
12015
- min-block-size: var(--ui-nav-compact-min-block-size);
12016
- font-size: var(--ui-font-size-sm);
12017
- }
12018
- :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="variant=navigation"] .trigger:hover:not(:disabled) {
12019
- background: var(--ui-nav-hover-surface);
12020
- color: var(--ui-text-primary);
12021
- }
12022
- :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="variant=navigation"] :is(.leading, .indicator) {
12023
- inline-size: var(--ui-nav-icon-size);
12024
- font-size: var(--ui-nav-icon-size);
12025
- }
12026
- @media (pointer: coarse) {
12027
- :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="variant=navigation"][data-ui-disclosure-state~="density=compact"] .trigger {
12028
- min-block-size: var(--ui-control-min-block-size);
12029
- }
12030
- }
12031
-
12032
- @media (prefers-reduced-motion: reduce) {
12033
- :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"],
12034
- .panel,
12035
- .indicator {
12036
- transition: none;
12037
- }
12038
- }
12039
-
12040
- /* A component that sets its display still honours the hidden attribute on its root. */
12041
- :scope:where([data-component~="ui-disclosure"])[hidden] {
12042
- display: none;
12043
- }
12044
- }
12045
- @scope ([data-component~="ui-disclosure"]) to ([data-component]) {
12046
- /* This component's hooks style the element they are set on, and never a nested one. */
12047
-
12048
- /* Density resolves into the summary row's own values; the public tokens still override them. */
12049
-
12050
- /* An accordion row, not a field: no enclosing box, just a divider, so it never reads as a
12051
- * select or combobox. Stacked disclosures share their dividers. */
12052
-
12053
- /* A bounded accordion owns one flexible body, so its trigger never scrolls away. The
12054
- * normal content-sized layout and its animation remain unchanged when fill is omitted. */
12055
- @media (pointer: coarse) {
12056
- }
12057
-
12058
- @media (prefers-reduced-motion: reduce) {
12059
- }
12060
-
12061
- /* A component that sets its display still honours the hidden attribute on its root. */
12062
- }
12063
- /* Generated by HTML Next 1.0.0-alpha.55. Do not edit. */
12064
- @supports (-moz-appearance: none) {
12065
- :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
12066
- :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
12067
- }
12068
- @supports (-moz-appearance: none) {
12069
- [data-component~="ui-form-field"] { --html-next-scope-owner: "ui-form-field" !important; }
12070
- }
12071
- @scope ([data-component~="ui-form-field"]) to ([data-component], [data-slotted]) {
12072
- /* This component's hooks style the element they are set on, and never a nested one. */
12073
- @property --ui-form-field-danger {
12074
- syntax: "*";
12075
- inherits: false;
12076
- }
12077
- @property --ui-form-field-help-font-size {
12078
- syntax: "*";
12079
- inherits: false;
12080
- }
12081
- @property --ui-form-field-help-min-block-size {
12082
- syntax: "*";
12083
- inherits: false;
12084
- }
12085
- @property --ui-form-field-help-text {
12086
- syntax: "*";
12087
- inherits: false;
12088
- }
12089
- @property --ui-form-field-label-font-size {
12090
- syntax: "*";
12091
- inherits: false;
11644
+ @property --ui-form-field-label-font-size {
11645
+ syntax: "*";
11646
+ inherits: false;
12092
11647
  }
12093
11648
  @property --ui-form-field-label-text {
12094
11649
  syntax: "*";
@@ -12191,7 +11746,7 @@ html[data-ui-input-modality="touch"]
12191
11746
 
12192
11747
  /* A component that sets its display still honours the hidden attribute on its root. */
12193
11748
  }
12194
- /* Generated by HTML Next 1.0.0-alpha.55. Do not edit. */
11749
+ /* Generated by HTML Next 1.0.0-alpha.57. Do not edit. */
12195
11750
  @supports (-moz-appearance: none) {
12196
11751
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
12197
11752
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
@@ -12237,7 +11792,7 @@ html[data-ui-input-modality="touch"]
12237
11792
 
12238
11793
  /* A component that sets its display still honours the hidden attribute on its root. */
12239
11794
  }
12240
- /* Generated by HTML Next 1.0.0-alpha.55. Do not edit. */
11795
+ /* Generated by HTML Next 1.0.0-alpha.57. Do not edit. */
12241
11796
  @supports (-moz-appearance: none) {
12242
11797
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
12243
11798
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
@@ -12713,297 +12268,223 @@ html[data-ui-input-modality="touch"]
12713
12268
 
12714
12269
  /* A component that sets its display still honours the hidden attribute on its root. */
12715
12270
  }
12716
- /* Generated by HTML Next 1.0.0-alpha.55. Do not edit. */
12271
+ /* Generated by HTML Next 1.0.0-alpha.57. Do not edit. */
12717
12272
  @supports (-moz-appearance: none) {
12718
12273
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
12719
12274
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
12720
12275
  }
12721
12276
  @supports (-moz-appearance: none) {
12722
- [data-component~="ui-input"] { --html-next-scope-owner: "ui-input" !important; }
12277
+ [data-component~="ui-list"] { --html-next-scope-owner: "ui-list" !important; }
12723
12278
  }
12724
- @scope ([data-component~="ui-input"]) to ([data-component], [data-slotted]) {
12725
- /* This component's hooks style the element they are set on, and never a nested one. An Input
12726
- Group sets --_ui-default-input-* for the input inside it, below the input's own hooks. */
12727
- @property --ui-input-border {
12279
+ @scope ([data-component~="ui-list"]) to ([data-component], [data-slotted]) {
12280
+ /* This component's hooks style the element they are set on, and never a nested one. */
12281
+ @property --ui-list-gap {
12728
12282
  syntax: "*";
12729
12283
  inherits: false;
12730
12284
  }
12731
- @property --ui-input-border-hover {
12285
+ @property --ui-list-min-item-width {
12732
12286
  syntax: "*";
12733
12287
  inherits: false;
12734
12288
  }
12735
- @property --ui-input-border-width {
12736
- syntax: "*";
12737
- inherits: false;
12289
+
12290
+ /* A list of native li elements or structured ui-list-item components. It owns the spacing between them, so a view never sets it. The
12291
+ explicit list role keeps the list announced as one: some browsers drop it from a list with no
12292
+ markers. */
12293
+ :scope:where([data-component~="ui-list"]) {
12294
+ --_list-gap: var(--ui-list-gap, var(--ui-space-1));
12295
+ --_list-min-item-width: var(--ui-list-min-item-width, 14rem);
12296
+ display: flex;
12297
+ flex-direction: column;
12298
+ inline-size: 100%;
12299
+ gap: var(--_list-gap);
12300
+ min-inline-size: 0;
12301
+ margin: 0;
12302
+ padding: 0;
12303
+ list-style: none;
12738
12304
  }
12739
- @property --ui-input-focus-border {
12740
- syntax: "*";
12741
- inherits: false;
12305
+
12306
+ :scope:where([data-component~="ui-list"])[data-ui-list-state~="as=ol"],
12307
+ :scope:where([data-component~="ui-list"])[data-ui-list-state~="markers=disc"] {
12308
+ padding-inline-start: var(--ui-space-5);
12742
12309
  }
12743
- @property --ui-input-focus-outline {
12744
- syntax: "*";
12745
- inherits: false;
12310
+
12311
+ :scope:where([data-component~="ui-list"])[data-ui-list-state~="as=ol"] {
12312
+ list-style: decimal;
12746
12313
  }
12747
- @property --ui-input-focus-shadow {
12748
- syntax: "*";
12749
- inherits: false;
12314
+
12315
+ :scope:where([data-component~="ui-list"])[data-ui-list-state~="markers=disc"] {
12316
+ list-style: disc;
12750
12317
  }
12751
- @property --ui-input-inline-size {
12752
- syntax: "*";
12753
- inherits: false;
12318
+
12319
+ /* Compact passes its size to the items through private properties, which cross into each item. */
12320
+ :scope:where([data-component~="ui-list"])[data-ui-list-state~="density=compact"] {
12321
+ --_list-gap: var(--ui-list-gap, var(--ui-space-2));
12322
+ --_ui-list-item-min-size: 0;
12323
+ --_ui-list-item-padding-block: 0;
12324
+ --_ui-list-item-padding-inline: 0;
12325
+ --_ui-list-item-title-weight: var(--ui-font-normal);
12326
+ --_ui-list-native-padding-block: 0;
12327
+ --_ui-list-native-padding-inline: 0;
12754
12328
  }
12755
- @property --ui-input-invalid-border {
12756
- syntax: "*";
12757
- inherits: false;
12329
+
12330
+ :scope:where([data-component~="ui-list"])[data-ui-list-state~="layout=grid"] {
12331
+ --_list-gap: var(--ui-list-gap, var(--ui-space-3));
12332
+ display: grid;
12333
+ grid-template-columns: repeat(auto-fill, minmax(min(100%, var(--_list-min-item-width)), 1fr));
12758
12334
  }
12759
- @property --ui-input-invalid-focus-shadow {
12760
- syntax: "*";
12761
- inherits: false;
12762
- }
12763
- @property --ui-input-min-block-size {
12764
- syntax: "*";
12765
- inherits: false;
12766
- }
12767
- @property --ui-input-radius {
12768
- syntax: "*";
12769
- inherits: false;
12770
- }
12771
- @property --ui-input-shadow {
12772
- syntax: "*";
12773
- inherits: false;
12774
- }
12775
- @property --ui-input-surface {
12776
- syntax: "*";
12777
- inherits: false;
12335
+
12336
+ /* A component that sets its display still honours the hidden attribute on its root. */
12337
+ :scope:where([data-component~="ui-list"])[hidden] {
12338
+ display: none;
12778
12339
  }
12340
+ }
12341
+ @scope ([data-component~="ui-list"]) to ([data-component]) {
12342
+ /* This component's hooks style the element they are set on, and never a nested one. */
12779
12343
 
12780
- :scope:where([data-component~="ui-input"]) {
12344
+ /* A list of native li elements or structured ui-list-item components. It owns the spacing between them, so a view never sets it. The
12345
+ explicit list role keeps the list announced as one: some browsers drop it from a list with no
12346
+ markers. */
12347
+
12348
+ :scope:where([data-component~="ui-list"]) > :where([data-slotted], [data-slotted] *):is(li) {
12781
12349
  box-sizing: border-box;
12782
- display: inline-block;
12783
- inline-size: var(--ui-input-inline-size, 100%);
12784
12350
  min-inline-size: 0;
12785
- min-block-size: var(--ui-input-min-block-size, var(--_ui-default-input-min-block-size, var(--ui-control-size-md)));
12786
- margin: 0;
12787
- padding: var(--ui-space-2) var(--ui-space-3);
12788
- appearance: none;
12789
- padding-inline-start: var(--_ui-default-input-padding-inline-start, var(--ui-space-3));
12790
- border: var(--ui-input-border-width, var(--_ui-default-input-border-width, var(--ui-border-width))) solid
12791
- var(--ui-input-border, var(--_ui-default-input-border, var(--ui-control-border, var(--ui-border-strong))));
12792
- border-radius: var(--ui-input-radius, var(--_ui-default-input-radius, var(--ui-field-radius, var(--ui-radius-md))));
12793
- background: var(--ui-input-surface, var(--_ui-default-input-surface, var(--ui-control-surface, var(--ui-surface-elevated))));
12351
+ padding: var(--_ui-list-native-padding-block, var(--ui-space-2)) var(--_ui-list-native-padding-inline, var(--ui-space-3));
12352
+ border-radius: var(--ui-radius-md);
12794
12353
  color: var(--ui-text-primary);
12795
- font: inherit;
12796
- line-height: var(--ui-line-height-tight);
12797
- box-shadow: var(--ui-input-shadow, var(--_ui-default-input-shadow, var(--ui-control-inset)));
12798
- transition:
12799
- border-color var(--ui-motion-fast) var(--ui-motion-ease),
12800
- box-shadow var(--ui-motion-fast) var(--ui-motion-ease),
12801
- background-color var(--ui-motion-fast) var(--ui-motion-ease);
12802
- }
12803
-
12804
- /* Each size reads the hook and then an Input Group's default first, so a group, which draws the frame, can zero it. */
12805
- :scope:where([data-component~="ui-input"])[data-ui-input-state~="size=sm"] {
12806
- min-block-size: var(--ui-input-min-block-size, var(--_ui-default-input-min-block-size, var(--ui-control-size-sm)));
12807
- padding: var(--ui-space-1) var(--ui-space-2);
12808
- font-size: var(--ui-font-size-sm);
12809
- }
12810
-
12811
- :scope:where([data-component~="ui-input"])[data-ui-input-state~="size=lg"] {
12812
- min-block-size: var(--ui-input-min-block-size, var(--_ui-default-input-min-block-size, var(--ui-control-size-lg)));
12813
- padding: var(--ui-space-3) var(--ui-space-4);
12814
- font-size: var(--ui-font-size-md);
12815
- }
12816
-
12817
- /* Under touch a small field is still a touch-sized target, as a small button is, and keeps
12818
- body-size text: below 16px, iOS zooms the page into the focused field. */
12819
- @media (pointer: coarse) {
12820
- :scope:where([data-component~="ui-input"]) {
12821
- min-block-size: var(
12822
- --ui-input-min-block-size,
12823
- var(--_ui-default-input-min-block-size, max(var(--ui-control-size-md), var(--ui-control-min-block-size)))
12824
- );
12825
- }
12826
-
12827
- :scope:where([data-component~="ui-input"]),
12828
- :scope:where([data-component~="ui-input"])[data-ui-input-state~="size=sm"],
12829
- :scope:where([data-component~="ui-input"])[data-ui-input-state~="size=lg"] {
12830
- font-size: var(--ui-font-size-md);
12831
- }
12832
-
12833
- :scope:where([data-component~="ui-input"])[data-ui-input-state~="size=sm"] {
12834
- min-block-size: var(--ui-input-min-block-size, var(--_ui-default-input-min-block-size, var(--ui-control-min-block-size)));
12835
- }
12836
- }
12837
-
12838
- /* Tabbing into a field selects its text; tint that selection softly instead of the page highlight. */
12839
- :scope:where([data-component~="ui-input"])::selection {
12840
- background: color-mix(in srgb, var(--ui-accent-solid) 20%, transparent);
12841
- color: inherit;
12842
- }
12843
-
12844
- :scope:where([data-component~="ui-input"])::placeholder {
12845
- color: var(--ui-control-placeholder, var(--ui-text-secondary));
12846
- opacity: 1;
12847
- }
12848
-
12849
- :scope:where([data-component~="ui-input"]):hover:not(:focus):not(:disabled):not(:read-only):not([aria-invalid="true"]):not(:is(:user-invalid, [data-user-invalid])) {
12850
- border-color: var(--ui-input-border-hover, var(--_ui-default-input-border-hover, var(--ui-control-border-hover, var(--ui-text-secondary))));
12851
- }
12852
-
12853
- :scope:where([data-component~="ui-input"]):focus-visible {
12854
- border-color: var(--ui-input-focus-border, var(--_ui-default-input-focus-border, var(--ui-control-focus, var(--ui-accent-solid))));
12855
- outline: none;
12856
- box-shadow: var(--ui-input-focus-shadow, var(--_ui-default-input-focus-shadow, var(--ui-control-inset), var(--ui-control-focus-halo-shadow)));
12857
- }
12858
-
12859
- /* The app's invalid flag, or the browser's own verdict once the user has left an invalid field. */
12860
- :scope:where([data-component~="ui-input"])[aria-invalid="true"],
12861
- :scope:where([data-component~="ui-input"]):is(:user-invalid, [data-user-invalid]) {
12862
- border-color: var(--ui-input-invalid-border, var(--_ui-default-input-invalid-border, var(--ui-field-danger, var(--ui-danger-solid))));
12863
- }
12864
-
12865
- :scope:where([data-component~="ui-input"]):is([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])):focus-visible {
12866
- box-shadow: var(
12867
- --ui-input-invalid-focus-shadow,
12868
- var(
12869
- --_ui-default-input-invalid-focus-shadow,
12870
- var(--ui-control-inset),
12871
- 0 0 0 calc(var(--ui-focus-width) * 1.5) color-mix(
12872
- in srgb,
12873
- var(--ui-input-invalid-border, var(--ui-field-danger, var(--ui-danger-solid))) 22%,
12874
- transparent
12875
- )
12876
- )
12877
- );
12878
- }
12879
-
12880
- :scope:where([data-component~="ui-input"]):disabled {
12881
- background: var(--ui-control-surface-disabled, var(--ui-surface-muted));
12882
- color: var(--ui-disabled-text);
12883
- box-shadow: none;
12884
- cursor: not-allowed;
12885
- }
12886
-
12887
- /* Forced colors drop box shadows, so the focus ring becomes an outline. */
12888
- @media (forced-colors: active) {
12889
- :scope:where([data-component~="ui-input"]):focus-visible {
12890
- outline: var(--ui-input-focus-outline, var(--_ui-default-input-focus-outline, var(--ui-focus-width) solid Highlight));
12891
- outline-offset: var(--ui-border-width);
12892
- }
12893
- }
12894
-
12895
- /* No text-box-trim here: trimming a native input's line box below its line height lets the text
12896
- * scroll vertically inside the field. Native inputs already center their single line. */
12897
-
12898
- /* A component that sets its display still honours the hidden attribute on its root. */
12899
- :scope:where([data-component~="ui-input"])[hidden] {
12900
- display: none;
12901
- }
12902
- }
12903
- @scope ([data-component~="ui-input"]) to ([data-component]) {
12904
- /* This component's hooks style the element they are set on, and never a nested one. An Input
12905
- Group sets --_ui-default-input-* for the input inside it, below the input's own hooks. */
12906
-
12907
- /* Each size reads the hook and then an Input Group's default first, so a group, which draws the frame, can zero it. */
12908
-
12909
- /* Under touch a small field is still a touch-sized target, as a small button is, and keeps
12910
- body-size text: below 16px, iOS zooms the page into the focused field. */
12911
- @media (pointer: coarse) {
12354
+ list-style: inherit;
12912
12355
  }
12913
12356
 
12914
- /* Tabbing into a field selects its text; tint that selection softly instead of the page highlight. */
12915
-
12916
- /* The app's invalid flag, or the browser's own verdict once the user has left an invalid field. */
12917
-
12918
- /* Forced colors drop box shadows, so the focus ring becomes an outline. */
12919
- @media (forced-colors: active) {
12357
+ :scope:where([data-component~="ui-list"]) > :where([data-slotted], [data-slotted] *):is(li.card) {
12358
+ padding: var(--_ui-list-native-padding-block, var(--ui-space-3)) var(--_ui-list-native-padding-inline, var(--ui-space-4));
12359
+ border: var(--ui-border-width) solid var(--ui-border-strong);
12360
+ border-radius: var(--ui-radius-lg);
12361
+ background: var(--ui-surface-raised);
12362
+ list-style: none;
12920
12363
  }
12921
12364
 
12922
- /* No text-box-trim here: trimming a native input's line box below its line height lets the text
12923
- * scroll vertically inside the field. Native inputs already center their single line. */
12365
+ /* Compact passes its size to the items through private properties, which cross into each item. */
12924
12366
 
12925
12367
  /* A component that sets its display still honours the hidden attribute on its root. */
12926
12368
  }
12927
- /* Generated by HTML Next 1.0.0-alpha.55. Do not edit. */
12369
+ /* Generated by HTML Next 1.0.0-alpha.57. Do not edit. */
12928
12370
  @supports (-moz-appearance: none) {
12929
12371
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
12930
12372
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
12931
12373
  }
12932
12374
  @supports (-moz-appearance: none) {
12933
- [data-component~="ui-popover"] { --html-next-scope-owner: "ui-popover" !important; }
12375
+ [data-component~="ui-menu"] { --html-next-scope-owner: "ui-menu" !important; }
12934
12376
  }
12935
- @scope ([data-component~="ui-popover"]) to ([data-component], [data-slotted]) {
12377
+ @scope ([data-component~="ui-menu"]) to ([data-component], [data-slotted]) {
12936
12378
  /* This component's hooks style the element they are set on, and never a nested one. */
12937
- @property --ui-popover-surface {
12938
- syntax: "*";
12939
- inherits: false;
12940
- }
12941
- @property --ui-popover-border {
12942
- syntax: "*";
12943
- inherits: false;
12944
- }
12945
- @property --ui-popover-radius {
12379
+ @property --ui-menu-surface {
12946
12380
  syntax: "*";
12947
12381
  inherits: false;
12948
12382
  }
12949
- @property --ui-popover-shadow {
12383
+ @property --ui-menu-border {
12950
12384
  syntax: "*";
12951
12385
  inherits: false;
12952
12386
  }
12953
- @property --ui-popover-viewport-gap {
12387
+ @property --ui-menu-radius {
12954
12388
  syntax: "*";
12955
12389
  inherits: false;
12956
12390
  }
12957
- @property --ui-popover-offset {
12391
+ @property --ui-menu-shadow {
12958
12392
  syntax: "*";
12959
12393
  inherits: false;
12960
12394
  }
12961
- @property --ui-popover-padding {
12395
+ @property --ui-menu-viewport-gap {
12962
12396
  syntax: "*";
12963
12397
  inherits: false;
12964
12398
  }
12965
12399
 
12966
- :scope:where([data-component~="ui-popover"]) {
12967
- --_ui-popover-surface: var(--ui-popover-surface);
12968
- --_ui-popover-border: var(--ui-popover-border);
12969
- --_ui-popover-radius: var(--ui-popover-radius);
12970
- --_ui-popover-shadow: var(--ui-popover-shadow);
12971
- --_ui-popover-padding: var(--ui-popover-padding);
12400
+ /* Compact sets its items' defaults, so nothing has to rescale a global; an item's own hooks
12401
+ still win. */
12402
+ :scope:where([data-component~="ui-menu"])[data-ui-menu-state~="density=compact"] {
12403
+ --_ui-default-menu-item-padding-block: var(--ui-space-1);
12404
+ --_ui-default-menu-item-padding-inline: var(--ui-space-2);
12405
+ --_ui-default-menu-item-font-size: var(--ui-font-size-sm);
12406
+ --_ui-default-menu-item-radius: var(--ui-radius-sm);
12407
+ padding: var(--ui-space-1);
12408
+ gap: 0;
12409
+ }
12410
+
12411
+ /* Small follows its trigger down: an item's own hooks still win. */
12412
+ :scope:where([data-component~="ui-menu"])[data-ui-menu-state~="size=sm"] {
12413
+ --_ui-default-menu-item-padding-block: var(--ui-space-0-5);
12414
+ --_ui-default-menu-item-padding-inline: var(--ui-space-2);
12415
+ --_ui-default-menu-item-font-size: var(--ui-font-size-xs);
12416
+ --_ui-default-menu-item-radius: var(--ui-radius-sm);
12417
+ --_ui-default-menu-item-min-block-size: 1.5rem;
12418
+ --_ui-default-menu-indicator-size: 0.75rem;
12419
+ min-inline-size: min(8rem, calc(100vw - var(--ui-menu-viewport-gap, var(--ui-space-2)) * 2));
12420
+ padding: var(--ui-space-1);
12421
+ gap: 0;
12422
+ }
12423
+
12424
+ :scope:where([data-component~="ui-menu"])[data-ui-menu-state~="icons"] {
12425
+ --_ui-default-menu-icon-display: inline-flex;
12426
+ }
12427
+
12428
+ :scope:where([data-component~="ui-menu"]) {
12429
+ --_ui-menu-surface: var(--ui-menu-surface);
12430
+ --_ui-menu-border: var(--ui-menu-border);
12431
+ --_ui-menu-radius: var(--ui-menu-radius);
12432
+ --_ui-menu-shadow: var(--ui-menu-shadow);
12433
+ /* A menu nested in a compact one starts again from its own density. */
12434
+ --_ui-default-menu-item-padding-block: initial;
12435
+ --_ui-default-menu-item-padding-inline: initial;
12436
+ --_ui-default-menu-item-font-size: initial;
12437
+ --_ui-default-menu-item-radius: initial;
12438
+ --_ui-default-menu-item-min-block-size: initial;
12439
+ --_ui-default-menu-indicator-size: initial;
12440
+ --_ui-default-menu-icon-display: none;
12441
+ display: flex;
12442
+ flex-direction: column;
12972
12443
  box-sizing: border-box;
12973
- max-inline-size: min(
12974
- 20rem,
12975
- calc(100vw - var(--ui-popover-viewport-gap, var(--ui-space-2)) * 2)
12976
- );
12977
- max-block-size: calc(100dvh - var(--ui-popover-viewport-gap, var(--ui-space-2)) * 2);
12978
- overflow: visible;
12444
+ inline-size: max-content;
12445
+ min-inline-size: min(12rem, calc(100vw - var(--ui-menu-viewport-gap, var(--ui-space-2)) * 2));
12446
+ max-inline-size: calc(100vw - var(--ui-menu-viewport-gap, var(--ui-space-2)) * 2);
12979
12447
  padding: 0;
12980
12448
  border: 0;
12981
12449
  outline: 0;
12982
12450
  border-radius: 0;
12983
12451
  background: transparent;
12984
12452
  box-shadow: none;
12453
+ overflow: visible;
12985
12454
  }
12986
12455
 
12987
12456
  .surface {
12457
+ display: flex;
12458
+ flex-direction: column;
12988
12459
  box-sizing: border-box;
12989
12460
  max-inline-size: inherit;
12461
+ padding: var(--ui-space-1);
12462
+ background: var(--_ui-menu-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
12463
+ border: var(--ui-border-width) solid var(--_ui-menu-border, var(--ui-overlay-border, var(--ui-border-strong)));
12464
+ border-radius: var(--_ui-menu-radius, var(--ui-overlay-radius, var(--ui-radius-lg)));
12465
+ box-shadow: var(--_ui-menu-shadow, var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg))));
12990
12466
  max-block-size: inherit;
12991
12467
  overflow: auto;
12992
- padding: var(--_ui-popover-padding, var(--ui-space-3));
12993
- background: var(--_ui-popover-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
12994
- border: var(--ui-border-width) solid var(--_ui-popover-border, var(--ui-overlay-border, var(--ui-border-strong)));
12995
- border-radius: var(--_ui-popover-radius, var(--ui-overlay-radius, var(--ui-radius-lg)));
12996
- box-shadow: var(--_ui-popover-shadow, var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg))));
12997
12468
  }
12998
12469
 
12999
- :scope:where([data-component~="ui-popover"]):not([data-ui-popover-state~="internalOpen"]) {
12470
+ .surface hr {
12471
+ align-self: stretch;
12472
+ block-size: 0;
12473
+ margin: var(--ui-space-1) 0;
12474
+ border: 0;
12475
+ border-block-start: var(--ui-border-width) solid var(--ui-border-divider);
12476
+ }
12477
+
12478
+ :scope:where([data-component~="ui-menu"]):not([data-ui-menu-state~="internalOpen"]):not(:scope:where([data-component~="ui-menu"])[data-ui-menu-state~="inline"]) {
13000
12479
  display: none;
13001
12480
  }
13002
12481
 
13003
- :scope:where([data-component~="ui-popover"])[popover] {
12482
+ :scope:where([data-component~="ui-menu"])[popover] {
13004
12483
  position: fixed;
13005
12484
  inset: auto;
13006
12485
  margin: 0;
12486
+ overflow: visible;
12487
+ max-block-size: calc(100dvh - var(--ui-menu-viewport-gap, var(--ui-space-2)) * 2);
13007
12488
  opacity: 0;
13008
12489
  transform: translateY(-4px) scale(0.99);
13009
12490
  transition:
@@ -13013,368 +12494,319 @@ html[data-ui-input-modality="touch"]
13013
12494
  overlay var(--ui-motion-fast) allow-discrete;
13014
12495
  }
13015
12496
 
13016
- :scope:where([data-component~="ui-popover"])[popover]:popover-open {
12497
+ :scope:where([data-component~="ui-menu"])[popover]:popover-open {
13017
12498
  opacity: 1;
13018
12499
  transform: translateY(0) scale(1);
13019
12500
  }
13020
12501
 
13021
12502
  @starting-style {
13022
- :scope:where([data-component~="ui-popover"])[popover]:popover-open {
12503
+ :scope:where([data-component~="ui-menu"])[popover]:popover-open {
13023
12504
  opacity: 0;
13024
12505
  transform: translateY(-4px) scale(0.99);
13025
12506
  }
13026
12507
  }
13027
12508
 
13028
- :scope:where([data-component~="ui-popover"])[data-ui-popover-state~="size=sm"] {
13029
- inline-size: min(22rem, calc(100vw - var(--ui-space-2) * 2));
13030
- max-inline-size: min(22rem, calc(100vw - var(--ui-space-2) * 2));
13031
- }
13032
- :scope:where([data-component~="ui-popover"])[data-ui-popover-state~="size=md"] {
13033
- inline-size: min(28rem, calc(100vw - var(--ui-space-2) * 2));
13034
- max-inline-size: min(28rem, calc(100vw - var(--ui-space-2) * 2));
13035
- }
13036
- :scope:where([data-component~="ui-popover"])[data-ui-popover-state~="size=lg"] {
13037
- inline-size: min(36rem, calc(100vw - var(--ui-space-2) * 2));
13038
- max-inline-size: min(36rem, calc(100vw - var(--ui-space-2) * 2));
13039
- }
13040
-
13041
- :scope:where([data-component~="ui-popover"])[hidden] {
12509
+ :scope:where([data-component~="ui-menu"])[hidden] {
13042
12510
  display: none;
13043
12511
  }
13044
12512
 
13045
12513
  @media (prefers-reduced-motion: reduce) {
13046
- :scope:where([data-component~="ui-popover"])[popover] {
12514
+ :scope:where([data-component~="ui-menu"])[popover] {
13047
12515
  transition: none;
13048
12516
  }
13049
12517
  }
13050
12518
  }
13051
- @scope ([data-component~="ui-popover"]) to ([data-component]) {
12519
+ @scope ([data-component~="ui-menu"]) to ([data-component]) {
13052
12520
  /* This component's hooks style the element they are set on, and never a nested one. */
13053
12521
 
12522
+ /* Compact sets its items' defaults, so nothing has to rescale a global; an item's own hooks
12523
+ still win. */
12524
+
12525
+ /* Small follows its trigger down: an item's own hooks still win. */
12526
+
13054
12527
  @starting-style {
13055
12528
  }
13056
12529
 
13057
12530
  @media (prefers-reduced-motion: reduce) {
13058
12531
  }
13059
12532
  }
13060
- /* Generated by HTML Next 1.0.0-alpha.55. Do not edit. */
12533
+ /* Generated by HTML Next 1.0.0-alpha.57. Do not edit. */
13061
12534
  @supports (-moz-appearance: none) {
13062
12535
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
13063
12536
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
13064
12537
  }
13065
12538
  @supports (-moz-appearance: none) {
13066
- [data-component~="ui-stack"] { --html-next-scope-owner: "ui-stack" !important; }
12539
+ [data-component~="ui-menu-item"] { --html-next-scope-owner: "ui-menu-item" !important; }
13067
12540
  }
13068
- @scope ([data-component~="ui-stack"]) to ([data-component], [data-slotted]) {
12541
+ @scope ([data-component~="ui-menu-item"]) to ([data-component], [data-slotted]) {
13069
12542
  /* This component's hooks style the element they are set on, and never a nested one. */
13070
- @property --ui-stack-height {
12543
+ @property --ui-menu-item-font-size {
13071
12544
  syntax: "*";
13072
12545
  inherits: false;
13073
12546
  }
13074
-
13075
- @property --ui-stack-gap {
12547
+ @property --ui-menu-item-hover-surface {
13076
12548
  syntax: "*";
13077
12549
  inherits: false;
13078
12550
  }
13079
-
13080
- :scope:where([data-component~="ui-stack"]) {
13081
- --_layout-gap: var(--ui-space-4);
13082
- display: flex;
13083
- flex-direction: column;
13084
- align-items: stretch;
13085
- gap: var(--ui-stack-gap, var(--_layout-gap));
13086
- min-inline-size: 0;
13087
- max-inline-size: 100%;
13088
- margin: 0;
13089
- }
13090
-
13091
- :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="fill"] {
13092
- flex: 1;
13093
- min-block-size: 0;
12551
+ @property --ui-menu-item-min-block-size {
12552
+ syntax: "*";
12553
+ inherits: false;
13094
12554
  }
13095
- :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="height"] {
13096
- block-size: calc(var(--ui-stack-height, 0) * 1px);
13097
- min-block-size: 0;
12555
+ @property --ui-menu-item-padding-block {
12556
+ syntax: "*";
12557
+ inherits: false;
13098
12558
  }
13099
-
13100
- :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="gap=none"] {
13101
- --_layout-gap: 0px;
12559
+ @property --ui-menu-item-padding-inline {
12560
+ syntax: "*";
12561
+ inherits: false;
13102
12562
  }
13103
- :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="gap=xs"] {
13104
- --_layout-gap: var(--ui-space-2);
12563
+ @property --ui-menu-item-radius {
12564
+ syntax: "*";
12565
+ inherits: false;
13105
12566
  }
13106
- :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="gap=s"] {
13107
- --_layout-gap: var(--ui-space-3);
13108
- }
13109
- :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="gap=m"] {
13110
- --_layout-gap: var(--ui-space-4);
13111
- }
13112
- :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="gap=l"] {
13113
- --_layout-gap: var(--ui-space-5);
13114
- }
13115
- :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="gap=xl"] {
13116
- --_layout-gap: var(--ui-space-6);
13117
- }
13118
- :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="align=start"] {
13119
- align-items: flex-start;
13120
- }
13121
- :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="align=center"] {
12567
+
12568
+ :scope:where([data-component~="ui-menu-item"]) {
12569
+ display: flex;
13122
12570
  align-items: center;
12571
+ gap: var(--ui-space-2);
12572
+ box-sizing: border-box;
12573
+ width: 100%;
12574
+ padding: var(--ui-menu-item-padding-block, var(--_ui-default-menu-item-padding-block, var(--ui-space-2)))
12575
+ var(--ui-menu-item-padding-inline, var(--_ui-default-menu-item-padding-inline, var(--ui-space-3)));
12576
+ text-align: left;
12577
+ border-radius: var(--ui-menu-item-radius, var(--_ui-default-menu-item-radius, var(--ui-selection-radius)));
12578
+ color: var(--ui-text-primary);
12579
+ font-size: var(--ui-menu-item-font-size, var(--_ui-default-menu-item-font-size, var(--ui-font-size-md)));
12580
+ font-weight: var(--ui-font-medium);
12581
+ text-decoration: none;
12582
+ cursor: pointer;
12583
+ outline: none;
12584
+ transition: background-color var(--ui-motion-fast) var(--ui-motion-ease), color var(--ui-motion-fast) var(--ui-motion-ease);
13123
12585
  }
13124
- :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="align=end"] {
13125
- align-items: flex-end;
13126
- }
13127
- :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="justify=center"] {
12586
+
12587
+ /* A named icon has a fixed column; an icon-enabled menu reserves it on every row. */
12588
+ .icon {
12589
+ display: var(--_ui-default-menu-icon-display, none);
12590
+ align-items: center;
13128
12591
  justify-content: center;
13129
- }
13130
- :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="justify=end"] {
13131
- justify-content: flex-end;
13132
- }
13133
- :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="justify=between"] {
13134
- justify-content: space-between;
12592
+ flex: none;
12593
+ inline-size: var(--ui-icon-size-sm);
12594
+ block-size: var(--ui-icon-size-sm);
13135
12595
  }
13136
12596
 
13137
- /* A component that sets its display still honours the hidden attribute on its root. */
13138
- :scope:where([data-component~="ui-stack"])[hidden] {
13139
- display: none;
12597
+ .icon:not(:empty) {
12598
+ display: inline-flex;
13140
12599
  }
13141
- }
13142
- @scope ([data-component~="ui-stack"]) to ([data-component]) {
13143
- /* This component's hooks style the element they are set on, and never a nested one. */
13144
12600
 
13145
- /* A component that sets its display still honours the hidden attribute on its root. */
13146
- }
13147
- /* Generated by HTML Next 1.0.0-alpha.55. Do not edit. */
13148
- @supports (-moz-appearance: none) {
13149
- :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
13150
- :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
13151
- }
13152
- @supports (-moz-appearance: none) {
13153
- [data-component~="ui-text"] { --html-next-scope-owner: "ui-text" !important; }
13154
- }
13155
- @scope ([data-component~="ui-text"]) to ([data-component], [data-slotted]) {
13156
- /* Running text, set on the type scale and in a tone that says what it is, so a view never styles
13157
- text of its own. The root is a paragraph unless as= names a span, div, small, strong, label, or
13158
- heading. */
13159
- :scope:where([data-component~="ui-text"])[data-ui-text-state~="grow"] {
13160
- flex: 1;
12601
+ :scope:where([data-component~="ui-menu-item"])[data-ui-menu-item-state~="tone=danger"] {
12602
+ color: var(--ui-danger);
13161
12603
  }
13162
12604
 
13163
- :scope:where([data-component~="ui-text"]) {
13164
- margin: 0;
12605
+ .label {
12606
+ display: flex;
12607
+ align-items: center;
12608
+ gap: var(--ui-space-2);
12609
+ flex: 1;
13165
12610
  min-inline-size: 0;
13166
- color: var(--ui-text-primary);
13167
- text-align: start;
13168
12611
  }
13169
12612
 
13170
- /* A heading drops the browser's heading size and weight, so size and weight set it as they set
13171
- any text, and inherit keeps the text around it. */
13172
- :scope:where([data-component~="ui-text"]):is(h2, h3, h4, h5, h6) {
13173
- font-size: inherit;
13174
- font-weight: inherit;
12613
+ .indicator {
12614
+ display: inline-flex;
12615
+ align-items: center;
12616
+ justify-content: center;
12617
+ flex: none;
12618
+ box-sizing: border-box;
12619
+ inline-size: var(--_ui-default-menu-indicator-size, var(--ui-icon-size-sm));
12620
+ block-size: var(--_ui-default-menu-indicator-size, var(--ui-icon-size-sm));
12621
+ border: var(--ui-border-width) solid var(--ui-control-border);
12622
+ border-radius: var(--ui-radius-sm);
12623
+ color: var(--ui-surface);
12624
+ --_ui-default-icon-size: 0.75rem;
13175
12625
  }
13176
12626
 
13177
- :scope:where([data-component~="ui-text"])[data-ui-text-state~="size=xs"] {
13178
- font-size: var(--ui-font-size-xs);
13179
- line-height: var(--ui-line-height);
13180
- }
13181
- :scope:where([data-component~="ui-text"])[data-ui-text-state~="size=sm"] {
13182
- font-size: var(--ui-font-size-sm);
13183
- line-height: var(--ui-line-height);
13184
- }
13185
- :scope:where([data-component~="ui-text"])[data-ui-text-state~="size=md"] {
13186
- font-size: var(--ui-font-size-md);
13187
- line-height: var(--ui-line-height);
13188
- }
13189
- :scope:where([data-component~="ui-text"])[data-ui-text-state~="size=lg"] {
13190
- font-size: var(--ui-font-size-lg);
13191
- line-height: var(--ui-line-height-relaxed);
12627
+ :scope:where([data-component~="ui-menu-item"])[data-ui-menu-item-state~="type=action"] .indicator {
12628
+ display: none;
13192
12629
  }
13193
12630
 
13194
- /* Opt in at the text owner; trimming does not inherit from a surrounding layout. */
13195
- :scope:where([data-component~="ui-text"])[data-ui-text-state~="trim"] {
13196
- text-box-trim: trim-both;
13197
- text-box-edge: cap alphabetic;
12631
+ :scope:where([data-component~="ui-menu-item"])[data-ui-menu-item-state~="type=checkbox"][aria-checked="true"] .indicator {
12632
+ border-color: var(--ui-accent);
12633
+ background: var(--ui-accent);
13198
12634
  }
13199
12635
 
13200
- :scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=secondary"] {
12636
+ /* A menu marks its chosen item with a check, as menus conventionally do; a radio circle reads
12637
+ as a form control. The empty slot keeps unchosen labels aligned with the chosen one. */
12638
+ :scope:where([data-component~="ui-menu-item"])[data-ui-menu-item-state~="type=radio"] .indicator {
12639
+ border-color: transparent;
13201
12640
  color: var(--ui-text-secondary);
13202
12641
  }
13203
- :scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=muted"] {
13204
- color: var(--ui-text-muted);
13205
- }
13206
- :scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=accent"] {
13207
- color: var(--ui-accent-active);
13208
- }
13209
- /* Every status tone uses the text-safe token a subtle badge sets its words in, so text and badges
13210
- in one tone match, and each holds 4.5:1 on sunken surfaces where some base colours fall short. */
13211
- :scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=danger"] {
13212
- color: var(--ui-danger-subtle-text);
13213
- }
13214
- :scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=success"] {
13215
- color: var(--ui-success-subtle-text);
13216
- }
13217
- :scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=info"] {
13218
- color: var(--ui-info-subtle-text);
13219
- }
13220
- :scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=warning"] {
13221
- color: var(--ui-warning-subtle-text);
13222
- }
13223
12642
 
13224
- :scope:where([data-component~="ui-text"])[data-ui-text-state~="weight=normal"] {
12643
+ .shortcut {
12644
+ margin-inline-start: auto;
12645
+ color: var(--ui-text-secondary);
12646
+ font-size: var(--ui-font-size-sm);
13225
12647
  font-weight: var(--ui-font-normal);
13226
12648
  }
13227
- :scope:where([data-component~="ui-text"])[data-ui-text-state~="weight=medium"] {
13228
- font-weight: var(--ui-font-medium);
13229
- }
13230
- :scope:where([data-component~="ui-text"])[data-ui-text-state~="weight=semibold"] {
13231
- font-weight: var(--ui-font-semibold);
13232
- }
13233
12649
 
13234
- :scope:where([data-component~="ui-text"])[data-ui-text-state~="variant=eyebrow"] {
13235
- font-size: var(--ui-font-size-xs);
13236
- font-weight: var(--ui-font-semibold);
13237
- letter-spacing: 0.06em;
13238
- text-transform: uppercase;
12650
+ .shortcut:empty {
12651
+ display: none;
13239
12652
  }
13240
- :scope:where([data-component~="ui-text"])[data-ui-text-state~="variant=code"] {
13241
- font-family: var(--ui-font-family-mono);
12653
+
12654
+ /* A <kbd> takes the browser's monospace; the hint reads in the item's own type. */
12655
+
12656
+ /* Keep the text row at the shared control height where cap trimming is available. */
12657
+ @supports (text-box-trim: trim-both) {
12658
+ :scope:where([data-component~="ui-menu-item"]) {
12659
+ min-block-size: var(--ui-menu-item-min-block-size, var(--_ui-default-menu-item-min-block-size, var(--ui-control-size-md, 2.5rem)));
12660
+ text-box-trim: trim-both;
12661
+ text-box-edge: cap alphabetic;
12662
+ }
13242
12663
  }
13243
12664
 
13244
- /* A link in running text is underlined, so it stands apart from the words around it by more than
13245
- colour. */
12665
+ :scope:where([data-component~="ui-menu-item"]):is(:hover, :focus-visible):not([aria-disabled="true"]) {
12666
+ background: var(--ui-menu-item-hover-surface, var(--ui-surface-subtle));
12667
+ }
13246
12668
 
13247
- :scope:where([data-component~="ui-text"])[data-ui-text-state~="truncate"] {
13248
- overflow: hidden;
13249
- text-overflow: ellipsis;
13250
- white-space: nowrap;
12669
+ :scope:where([data-component~="ui-menu-item"]):focus-visible {
12670
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring);
12671
+ outline-offset: calc(-1 * var(--ui-focus-width));
13251
12672
  }
13252
12673
 
13253
- /* Trim ends the layout box at the baseline; preserve descending ink while clipping long labels. */
13254
- :scope:where([data-component~="ui-text"])[data-ui-text-state~="trim"][data-ui-text-state~="truncate"] {
13255
- overflow-x: clip;
13256
- overflow-y: visible;
12674
+ :scope:where([data-component~="ui-menu-item"])[aria-disabled="true"] {
12675
+ background: var(--ui-disabled-surface);
12676
+ color: var(--ui-disabled-text);
12677
+ cursor: not-allowed;
13257
12678
  }
13258
12679
 
13259
- :scope:where([data-component~="ui-text"])[data-ui-text-state~="align=center"] {
13260
- text-align: center;
12680
+ :scope:where([data-component~="ui-menu-item"])[aria-disabled="true"] .indicator {
12681
+ border-color: var(--ui-disabled-border);
12682
+ background: transparent;
12683
+ color: var(--ui-disabled-text);
13261
12684
  }
13262
12685
 
13263
- :scope:where([data-component~="ui-text"])[data-ui-text-state~="font=sans"] {
13264
- font-family: var(--ui-font-family-sans, sans-serif);
12686
+ :scope:where([data-component~="ui-menu-item"])[aria-disabled="true"] .indicator:where(:not([data-component], [data-slotted]))::after {
12687
+ background: var(--ui-disabled-text);
13265
12688
  }
13266
12689
 
13267
- :scope:where([data-component~="ui-text"])[data-ui-text-state~="wrap=anywhere"] {
13268
- overflow-wrap: anywhere;
12690
+ @media (forced-colors: active) {
12691
+ :scope:where([data-component~="ui-menu-item"]):focus-visible {
12692
+ outline-color: Highlight;
12693
+ }
13269
12694
  }
13270
12695
 
13271
12696
  /* A component that sets its display still honours the hidden attribute on its root. */
13272
- :scope:where([data-component~="ui-text"])[hidden] {
12697
+ :scope:where([data-component~="ui-menu-item"])[hidden] {
13273
12698
  display: none;
13274
12699
  }
13275
12700
  }
13276
- @scope ([data-component~="ui-text"]) to ([data-component]) {
13277
- /* Running text, set on the type scale and in a tone that says what it is, so a view never styles
13278
- text of its own. The root is a paragraph unless as= names a span, div, small, strong, label, or
13279
- heading. */
12701
+ @scope ([data-component~="ui-menu-item"]) to ([data-component]) {
12702
+ /* This component's hooks style the element they are set on, and never a nested one. */
13280
12703
 
13281
- /* A heading drops the browser's heading size and weight, so size and weight set it as they set
13282
- any text, and inherit keeps the text around it. */
12704
+ /* A named icon has a fixed column; an icon-enabled menu reserves it on every row. */
13283
12705
 
13284
- /* Opt in at the text owner; trimming does not inherit from a surrounding layout. */
13285
- /* Every status tone uses the text-safe token a subtle badge sets its words in, so text and badges
13286
- in one tone match, and each holds 4.5:1 on sunken surfaces where some base colours fall short. */
12706
+ .icon :where([data-slotted], [data-slotted] *):is(svg) {
12707
+ inline-size: 100%;
12708
+ block-size: 100%;
12709
+ }
13287
12710
 
13288
- /* A link in running text is underlined, so it stands apart from the words around it by more than
13289
- colour. */
13290
- :scope:where([data-component~="ui-text"]) :where([data-slotted], [data-slotted] *):is(a) {
13291
- color: var(--ui-accent-active);
13292
- text-decoration: underline;
13293
- text-decoration-thickness: 0.06em;
13294
- text-underline-offset: 0.18em;
12711
+ /* A menu marks its chosen item with a check, as menus conventionally do; a radio circle reads
12712
+ as a form control. The empty slot keeps unchosen labels aligned with the chosen one. */
12713
+
12714
+ /* A <kbd> takes the browser's monospace; the hint reads in the item's own type. */
12715
+ .shortcut :where([data-slotted], [data-slotted] *):is(kbd) {
12716
+ font: inherit;
13295
12717
  }
13296
12718
 
13297
- /* Trim ends the layout box at the baseline; preserve descending ink while clipping long labels. */
12719
+ /* Keep the text row at the shared control height where cap trimming is available. */
12720
+ @supports (text-box-trim: trim-both) {
12721
+ }
12722
+
12723
+ @media (forced-colors: active) {
12724
+ }
13298
12725
 
13299
12726
  /* A component that sets its display still honours the hidden attribute on its root. */
13300
12727
  }
13301
- /* Generated by HTML Next 1.0.0-alpha.55. Do not edit. */
12728
+ /* Generated by HTML Next 1.0.0-alpha.57. Do not edit. */
13302
12729
  @supports (-moz-appearance: none) {
13303
12730
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
13304
12731
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
13305
12732
  }
13306
12733
  @supports (-moz-appearance: none) {
13307
- [data-component~="ui-tooltip"] { --html-next-scope-owner: "ui-tooltip" !important; }
12734
+ [data-component~="ui-popover"] { --html-next-scope-owner: "ui-popover" !important; }
13308
12735
  }
13309
- @scope ([data-component~="ui-tooltip"]) to ([data-component], [data-slotted]) {
12736
+ @scope ([data-component~="ui-popover"]) to ([data-component], [data-slotted]) {
13310
12737
  /* This component's hooks style the element they are set on, and never a nested one. */
13311
- @property --ui-tooltip-arrow-size {
13312
- syntax: "*";
13313
- inherits: false;
13314
- }
13315
- @property --ui-tooltip-border {
13316
- syntax: "*";
13317
- inherits: false;
13318
- }
13319
- @property --ui-tooltip-inverse-surface {
12738
+ @property --ui-popover-surface {
13320
12739
  syntax: "*";
13321
12740
  inherits: false;
13322
12741
  }
13323
- @property --ui-tooltip-inverse-text {
12742
+ @property --ui-popover-border {
13324
12743
  syntax: "*";
13325
12744
  inherits: false;
13326
12745
  }
13327
- @property --ui-tooltip-max-inline-size {
12746
+ @property --ui-popover-radius {
13328
12747
  syntax: "*";
13329
12748
  inherits: false;
13330
12749
  }
13331
- @property --ui-tooltip-offset {
12750
+ @property --ui-popover-shadow {
13332
12751
  syntax: "*";
13333
12752
  inherits: false;
13334
12753
  }
13335
- @property --ui-tooltip-radius {
12754
+ @property --ui-popover-viewport-gap {
13336
12755
  syntax: "*";
13337
12756
  inherits: false;
13338
12757
  }
13339
- @property --ui-tooltip-shadow {
12758
+ @property --ui-popover-offset {
13340
12759
  syntax: "*";
13341
12760
  inherits: false;
13342
12761
  }
13343
- @property --ui-tooltip-surface {
12762
+ @property --ui-popover-padding {
13344
12763
  syntax: "*";
13345
12764
  inherits: false;
13346
12765
  }
13347
- @property --ui-tooltip-text {
13348
- syntax: "*";
13349
- inherits: false;
12766
+
12767
+ :scope:where([data-component~="ui-popover"]) {
12768
+ --_ui-popover-surface: var(--ui-popover-surface);
12769
+ --_ui-popover-border: var(--ui-popover-border);
12770
+ --_ui-popover-radius: var(--ui-popover-radius);
12771
+ --_ui-popover-shadow: var(--ui-popover-shadow);
12772
+ --_ui-popover-padding: var(--ui-popover-padding);
12773
+ box-sizing: border-box;
12774
+ max-inline-size: min(
12775
+ 20rem,
12776
+ calc(100vw - var(--ui-popover-viewport-gap, var(--ui-space-2)) * 2)
12777
+ );
12778
+ max-block-size: calc(100dvh - var(--ui-popover-viewport-gap, var(--ui-space-2)) * 2);
12779
+ overflow: visible;
12780
+ padding: 0;
12781
+ border: 0;
12782
+ outline: 0;
12783
+ border-radius: 0;
12784
+ background: transparent;
12785
+ box-shadow: none;
13350
12786
  }
13351
12787
 
13352
- :scope:where([data-component~="ui-tooltip"]) {
13353
- /* Hooks do not inherit, so the parts below read them from the root. */
13354
- --_ui-tooltip-border: var(--ui-tooltip-border);
13355
- --_ui-tooltip-max-inline-size: var(--ui-tooltip-max-inline-size);
13356
- --_ui-tooltip-radius: var(--ui-tooltip-radius);
13357
- --_ui-tooltip-surface: var(--ui-tooltip-surface);
13358
- --_ui-tooltip-text: var(--ui-tooltip-text);
13359
- --_ui-tooltip-shadow: var(--ui-tooltip-shadow);
13360
- --_ui-tooltip-inverse-surface: var(--ui-tooltip-inverse-surface);
13361
- --_ui-tooltip-inverse-text: var(--ui-tooltip-inverse-text);
13362
- --_ui-tooltip-arrow-size: var(--ui-tooltip-arrow-size);
12788
+ .surface {
12789
+ box-sizing: border-box;
12790
+ max-inline-size: inherit;
12791
+ max-block-size: inherit;
12792
+ overflow: auto;
12793
+ padding: var(--_ui-popover-padding, var(--ui-space-3));
12794
+ background: var(--_ui-popover-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
12795
+ border: var(--ui-border-width) solid var(--_ui-popover-border, var(--ui-overlay-border, var(--ui-border-strong)));
12796
+ border-radius: var(--_ui-popover-radius, var(--ui-overlay-radius, var(--ui-radius-lg)));
12797
+ box-shadow: var(--_ui-popover-shadow, var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg))));
12798
+ }
12799
+
12800
+ :scope:where([data-component~="ui-popover"]):not([data-ui-popover-state~="internalOpen"]) {
12801
+ display: none;
12802
+ }
13363
12803
 
12804
+ :scope:where([data-component~="ui-popover"])[popover] {
13364
12805
  position: fixed;
13365
12806
  inset: auto;
13366
12807
  margin: 0;
13367
- display: inline-block;
13368
- box-sizing: border-box;
13369
- padding: 0;
13370
- border: 0;
13371
- outline: 0;
13372
- border-radius: 0;
13373
- background: transparent;
13374
- /* The UA popover default (overflow: auto) would clip the arrow. */
13375
- overflow: visible;
13376
12808
  opacity: 0;
13377
- transform: translateY(4px);
12809
+ transform: translateY(-4px) scale(0.99);
13378
12810
  transition:
13379
12811
  opacity var(--ui-motion-fast) var(--ui-motion-ease),
13380
12812
  transform var(--ui-motion-fast) var(--ui-motion-ease),
@@ -13382,168 +12814,1193 @@ html[data-ui-input-modality="touch"]
13382
12814
  overlay var(--ui-motion-fast) allow-discrete;
13383
12815
  }
13384
12816
 
13385
- /* The label and the shortcut sit side by side, a gap apart, with the label wrapping on its own. */
13386
- .surface {
13387
- --_tooltip-line: var(--_ui-tooltip-border, var(--ui-overlay-border, var(--ui-border-strong)));
13388
- position: relative;
12817
+ :scope:where([data-component~="ui-popover"])[popover]:popover-open {
12818
+ opacity: 1;
12819
+ transform: translateY(0) scale(1);
12820
+ }
12821
+
12822
+ @starting-style {
12823
+ :scope:where([data-component~="ui-popover"])[popover]:popover-open {
12824
+ opacity: 0;
12825
+ transform: translateY(-4px) scale(0.99);
12826
+ }
12827
+ }
12828
+
12829
+ :scope:where([data-component~="ui-popover"])[data-ui-popover-state~="size=sm"] {
12830
+ inline-size: min(22rem, calc(100vw - var(--ui-space-2) * 2));
12831
+ max-inline-size: min(22rem, calc(100vw - var(--ui-space-2) * 2));
12832
+ }
12833
+ :scope:where([data-component~="ui-popover"])[data-ui-popover-state~="size=md"] {
12834
+ inline-size: min(28rem, calc(100vw - var(--ui-space-2) * 2));
12835
+ max-inline-size: min(28rem, calc(100vw - var(--ui-space-2) * 2));
12836
+ }
12837
+ :scope:where([data-component~="ui-popover"])[data-ui-popover-state~="size=lg"] {
12838
+ inline-size: min(36rem, calc(100vw - var(--ui-space-2) * 2));
12839
+ max-inline-size: min(36rem, calc(100vw - var(--ui-space-2) * 2));
12840
+ }
12841
+
12842
+ :scope:where([data-component~="ui-popover"])[hidden] {
12843
+ display: none;
12844
+ }
12845
+
12846
+ @media (prefers-reduced-motion: reduce) {
12847
+ :scope:where([data-component~="ui-popover"])[popover] {
12848
+ transition: none;
12849
+ }
12850
+ }
12851
+ }
12852
+ @scope ([data-component~="ui-popover"]) to ([data-component]) {
12853
+ /* This component's hooks style the element they are set on, and never a nested one. */
12854
+
12855
+ @starting-style {
12856
+ }
12857
+
12858
+ @media (prefers-reduced-motion: reduce) {
12859
+ }
12860
+ }
12861
+ /* Generated by HTML Next 1.0.0-alpha.57. Do not edit. */
12862
+ @supports (-moz-appearance: none) {
12863
+ :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
12864
+ :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
12865
+ }
12866
+ @supports (-moz-appearance: none) {
12867
+ [data-component~="ui-stack"] { --html-next-scope-owner: "ui-stack" !important; }
12868
+ }
12869
+ @scope ([data-component~="ui-stack"]) to ([data-component], [data-slotted]) {
12870
+ /* This component's hooks style the element they are set on, and never a nested one. */
12871
+ @property --ui-stack-height {
12872
+ syntax: "*";
12873
+ inherits: false;
12874
+ }
12875
+
12876
+ @property --ui-stack-gap {
12877
+ syntax: "*";
12878
+ inherits: false;
12879
+ }
12880
+
12881
+ :scope:where([data-component~="ui-stack"]) {
12882
+ --_layout-gap: var(--ui-space-4);
13389
12883
  display: flex;
13390
- align-items: baseline;
13391
- gap: var(--ui-space-2);
13392
- box-sizing: border-box;
13393
- max-inline-size: var(--_ui-tooltip-max-inline-size, 18rem);
13394
- border: var(--ui-border-width) solid var(--_tooltip-line);
13395
- border-radius: var(--_ui-tooltip-radius, var(--ui-overlay-radius, var(--ui-radius-md)));
13396
- background: var(--_ui-tooltip-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
13397
- color: var(--_ui-tooltip-text, var(--ui-text-primary));
13398
- padding: var(--ui-space-2) var(--ui-space-3);
13399
- font-family: var(--ui-font-family-sans);
13400
- font-size: var(--ui-font-size-sm);
13401
- line-height: var(--ui-line-height-tight);
13402
- box-shadow: var(--_ui-tooltip-shadow, var(--ui-overlay-shadow, var(--ui-elevation-tooltip, var(--ui-shadow-md))));
12884
+ flex-direction: column;
12885
+ align-items: stretch;
12886
+ gap: var(--ui-stack-gap, var(--_layout-gap));
12887
+ min-inline-size: 0;
12888
+ max-inline-size: 100%;
12889
+ margin: 0;
13403
12890
  }
13404
12891
 
13405
- /* A keyboard shortcut follows the label after a thin divider, smaller and quieter, as menus show
13406
- it. The label stays first in the description, so a screen reader hears the name, then the keys. */
13407
- .shortcut {
13408
- display: inline-flex;
12892
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="fill"] {
12893
+ flex: 1;
12894
+ min-block-size: 0;
12895
+ }
12896
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="height"] {
12897
+ block-size: calc(var(--ui-stack-height, 0) * 1px);
12898
+ min-block-size: 0;
12899
+ }
12900
+
12901
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="gap=none"] {
12902
+ --_layout-gap: 0px;
12903
+ }
12904
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="gap=xs"] {
12905
+ --_layout-gap: var(--ui-space-2);
12906
+ }
12907
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="gap=s"] {
12908
+ --_layout-gap: var(--ui-space-3);
12909
+ }
12910
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="gap=m"] {
12911
+ --_layout-gap: var(--ui-space-4);
12912
+ }
12913
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="gap=l"] {
12914
+ --_layout-gap: var(--ui-space-5);
12915
+ }
12916
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="gap=xl"] {
12917
+ --_layout-gap: var(--ui-space-6);
12918
+ }
12919
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="align=start"] {
12920
+ align-items: flex-start;
12921
+ }
12922
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="align=center"] {
13409
12923
  align-items: center;
13410
- padding-inline-start: var(--ui-space-2);
13411
- border-inline-start: 1px solid color-mix(in oklab, currentColor 28%, transparent);
13412
- color: color-mix(in oklab, currentColor 72%, transparent);
13413
- font-size: var(--ui-font-size-xs);
13414
- font-weight: var(--ui-font-normal);
13415
- white-space: nowrap;
13416
- vertical-align: baseline;
12924
+ }
12925
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="align=end"] {
12926
+ align-items: flex-end;
12927
+ }
12928
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="justify=center"] {
12929
+ justify-content: center;
12930
+ }
12931
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="justify=end"] {
12932
+ justify-content: flex-end;
12933
+ }
12934
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="justify=between"] {
12935
+ justify-content: space-between;
13417
12936
  }
13418
12937
 
13419
- .shortcut:empty {
12938
+ /* A component that sets its display still honours the hidden attribute on its root. */
12939
+ :scope:where([data-component~="ui-stack"])[hidden] {
13420
12940
  display: none;
13421
12941
  }
12942
+ }
12943
+ @scope ([data-component~="ui-stack"]) to ([data-component]) {
12944
+ /* This component's hooks style the element they are set on, and never a nested one. */
12945
+
12946
+ /* A component that sets its display still honours the hidden attribute on its root. */
12947
+ }
12948
+ /* Generated by HTML Next 1.0.0-alpha.57. Do not edit. */
12949
+ @supports (-moz-appearance: none) {
12950
+ :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
12951
+ :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
12952
+ }
12953
+ @supports (-moz-appearance: none) {
12954
+ [data-component~="ui-text"] { --html-next-scope-owner: "ui-text" !important; }
12955
+ }
12956
+ @scope ([data-component~="ui-text"]) to ([data-component], [data-slotted]) {
12957
+ /* Running text, set on the type scale and in a tone that says what it is, so a view never styles
12958
+ text of its own. The root is a paragraph unless as= names a span, div, small, strong, label, or
12959
+ heading. */
12960
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="grow"] {
12961
+ flex: 1;
12962
+ }
12963
+
12964
+ :scope:where([data-component~="ui-text"]) {
12965
+ margin: 0;
12966
+ min-inline-size: 0;
12967
+ color: var(--ui-text-primary);
12968
+ text-align: start;
12969
+ }
12970
+
12971
+ /* A heading drops the browser's heading size and weight, so size and weight set it as they set
12972
+ any text, and inherit keeps the text around it. */
12973
+ :scope:where([data-component~="ui-text"]):is(h2, h3, h4, h5, h6) {
12974
+ font-size: inherit;
12975
+ font-weight: inherit;
12976
+ }
12977
+
12978
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="size=xs"] {
12979
+ font-size: var(--ui-font-size-xs);
12980
+ line-height: var(--ui-line-height);
12981
+ }
12982
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="size=sm"] {
12983
+ font-size: var(--ui-font-size-sm);
12984
+ line-height: var(--ui-line-height);
12985
+ }
12986
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="size=md"] {
12987
+ font-size: var(--ui-font-size-md);
12988
+ line-height: var(--ui-line-height);
12989
+ }
12990
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="size=lg"] {
12991
+ font-size: var(--ui-font-size-lg);
12992
+ line-height: var(--ui-line-height-relaxed);
12993
+ }
12994
+
12995
+ /* Opt in at the text owner; trimming does not inherit from a surrounding layout. */
12996
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="trim"] {
12997
+ text-box-trim: trim-both;
12998
+ text-box-edge: cap alphabetic;
12999
+ }
13000
+
13001
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=secondary"] {
13002
+ color: var(--ui-text-secondary);
13003
+ }
13004
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=muted"] {
13005
+ color: var(--ui-text-muted);
13006
+ }
13007
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=accent"] {
13008
+ color: var(--ui-accent-active);
13009
+ }
13010
+ /* Every status tone uses the text-safe token a subtle badge sets its words in, so text and badges
13011
+ in one tone match, and each holds 4.5:1 on sunken surfaces where some base colours fall short. */
13012
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=danger"] {
13013
+ color: var(--ui-danger-subtle-text);
13014
+ }
13015
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=success"] {
13016
+ color: var(--ui-success-subtle-text);
13017
+ }
13018
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=info"] {
13019
+ color: var(--ui-info-subtle-text);
13020
+ }
13021
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=warning"] {
13022
+ color: var(--ui-warning-subtle-text);
13023
+ }
13024
+
13025
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="weight=normal"] {
13026
+ font-weight: var(--ui-font-normal);
13027
+ }
13028
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="weight=medium"] {
13029
+ font-weight: var(--ui-font-medium);
13030
+ }
13031
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="weight=semibold"] {
13032
+ font-weight: var(--ui-font-semibold);
13033
+ }
13034
+
13035
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="variant=eyebrow"] {
13036
+ font-size: var(--ui-font-size-xs);
13037
+ font-weight: var(--ui-font-semibold);
13038
+ letter-spacing: 0.06em;
13039
+ text-transform: uppercase;
13040
+ }
13041
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="variant=code"] {
13042
+ font-family: var(--ui-font-family-mono);
13043
+ }
13044
+
13045
+ /* A link in running text is underlined, so it stands apart from the words around it by more than
13046
+ colour. */
13047
+
13048
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="truncate"] {
13049
+ overflow: hidden;
13050
+ text-overflow: ellipsis;
13051
+ white-space: nowrap;
13052
+ }
13053
+
13054
+ /* Trim ends the layout box at the baseline; preserve descending ink while clipping long labels. */
13055
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="trim"][data-ui-text-state~="truncate"] {
13056
+ overflow-x: clip;
13057
+ overflow-y: visible;
13058
+ }
13059
+
13060
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="align=center"] {
13061
+ text-align: center;
13062
+ }
13063
+
13064
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="font=sans"] {
13065
+ font-family: var(--ui-font-family-sans, sans-serif);
13066
+ }
13067
+
13068
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="wrap=anywhere"] {
13069
+ overflow-wrap: anywhere;
13070
+ }
13071
+
13072
+ /* A component that sets its display still honours the hidden attribute on its root. */
13073
+ :scope:where([data-component~="ui-text"])[hidden] {
13074
+ display: none;
13075
+ }
13076
+ }
13077
+ @scope ([data-component~="ui-text"]) to ([data-component]) {
13078
+ /* Running text, set on the type scale and in a tone that says what it is, so a view never styles
13079
+ text of its own. The root is a paragraph unless as= names a span, div, small, strong, label, or
13080
+ heading. */
13081
+
13082
+ /* A heading drops the browser's heading size and weight, so size and weight set it as they set
13083
+ any text, and inherit keeps the text around it. */
13084
+
13085
+ /* Opt in at the text owner; trimming does not inherit from a surrounding layout. */
13086
+ /* Every status tone uses the text-safe token a subtle badge sets its words in, so text and badges
13087
+ in one tone match, and each holds 4.5:1 on sunken surfaces where some base colours fall short. */
13088
+
13089
+ /* A link in running text is underlined, so it stands apart from the words around it by more than
13090
+ colour. */
13091
+ :scope:where([data-component~="ui-text"]) :where([data-slotted], [data-slotted] *):is(a) {
13092
+ color: var(--ui-accent-active);
13093
+ text-decoration: underline;
13094
+ text-decoration-thickness: 0.06em;
13095
+ text-underline-offset: 0.18em;
13096
+ }
13097
+
13098
+ /* Trim ends the layout box at the baseline; preserve descending ink while clipping long labels. */
13099
+
13100
+ /* A component that sets its display still honours the hidden attribute on its root. */
13101
+ }
13102
+ /* Generated by HTML Next 1.0.0-alpha.57. Do not edit. */
13103
+ @supports (-moz-appearance: none) {
13104
+ :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
13105
+ :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
13106
+ }
13107
+ @supports (-moz-appearance: none) {
13108
+ [data-component~="ui-tooltip"] { --html-next-scope-owner: "ui-tooltip" !important; }
13109
+ }
13110
+ @scope ([data-component~="ui-tooltip"]) to ([data-component], [data-slotted]) {
13111
+ /* This component's hooks style the element they are set on, and never a nested one. */
13112
+ @property --ui-tooltip-arrow-size {
13113
+ syntax: "*";
13114
+ inherits: false;
13115
+ }
13116
+ @property --ui-tooltip-border {
13117
+ syntax: "*";
13118
+ inherits: false;
13119
+ }
13120
+ @property --ui-tooltip-inverse-surface {
13121
+ syntax: "*";
13122
+ inherits: false;
13123
+ }
13124
+ @property --ui-tooltip-inverse-text {
13125
+ syntax: "*";
13126
+ inherits: false;
13127
+ }
13128
+ @property --ui-tooltip-max-inline-size {
13129
+ syntax: "*";
13130
+ inherits: false;
13131
+ }
13132
+ @property --ui-tooltip-offset {
13133
+ syntax: "*";
13134
+ inherits: false;
13135
+ }
13136
+ @property --ui-tooltip-radius {
13137
+ syntax: "*";
13138
+ inherits: false;
13139
+ }
13140
+ @property --ui-tooltip-shadow {
13141
+ syntax: "*";
13142
+ inherits: false;
13143
+ }
13144
+ @property --ui-tooltip-surface {
13145
+ syntax: "*";
13146
+ inherits: false;
13147
+ }
13148
+ @property --ui-tooltip-text {
13149
+ syntax: "*";
13150
+ inherits: false;
13151
+ }
13152
+
13153
+ :scope:where([data-component~="ui-tooltip"]) {
13154
+ /* Hooks do not inherit, so the parts below read them from the root. */
13155
+ --_ui-tooltip-border: var(--ui-tooltip-border);
13156
+ --_ui-tooltip-max-inline-size: var(--ui-tooltip-max-inline-size);
13157
+ --_ui-tooltip-radius: var(--ui-tooltip-radius);
13158
+ --_ui-tooltip-surface: var(--ui-tooltip-surface);
13159
+ --_ui-tooltip-text: var(--ui-tooltip-text);
13160
+ --_ui-tooltip-shadow: var(--ui-tooltip-shadow);
13161
+ --_ui-tooltip-inverse-surface: var(--ui-tooltip-inverse-surface);
13162
+ --_ui-tooltip-inverse-text: var(--ui-tooltip-inverse-text);
13163
+ --_ui-tooltip-arrow-size: var(--ui-tooltip-arrow-size);
13164
+
13165
+ position: fixed;
13166
+ inset: auto;
13167
+ margin: 0;
13168
+ display: inline-block;
13169
+ box-sizing: border-box;
13170
+ padding: 0;
13171
+ border: 0;
13172
+ outline: 0;
13173
+ border-radius: 0;
13174
+ background: transparent;
13175
+ /* The UA popover default (overflow: auto) would clip the arrow. */
13176
+ overflow: visible;
13177
+ opacity: 0;
13178
+ transform: translateY(4px);
13179
+ transition:
13180
+ opacity var(--ui-motion-fast) var(--ui-motion-ease),
13181
+ transform var(--ui-motion-fast) var(--ui-motion-ease),
13182
+ display var(--ui-motion-fast) allow-discrete,
13183
+ overlay var(--ui-motion-fast) allow-discrete;
13184
+ }
13185
+
13186
+ /* The label and the shortcut sit side by side, a gap apart, with the label wrapping on its own. */
13187
+ .surface {
13188
+ --_tooltip-line: var(--_ui-tooltip-border, var(--ui-overlay-border, var(--ui-border-strong)));
13189
+ position: relative;
13190
+ display: flex;
13191
+ align-items: baseline;
13192
+ gap: var(--ui-space-2);
13193
+ box-sizing: border-box;
13194
+ max-inline-size: var(--_ui-tooltip-max-inline-size, 18rem);
13195
+ border: var(--ui-border-width) solid var(--_tooltip-line);
13196
+ border-radius: var(--_ui-tooltip-radius, var(--ui-overlay-radius, var(--ui-radius-md)));
13197
+ background: var(--_ui-tooltip-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
13198
+ color: var(--_ui-tooltip-text, var(--ui-text-primary));
13199
+ padding: var(--ui-space-2) var(--ui-space-3);
13200
+ font-family: var(--ui-font-family-sans);
13201
+ font-size: var(--ui-font-size-sm);
13202
+ line-height: var(--ui-line-height-tight);
13203
+ box-shadow: var(--_ui-tooltip-shadow, var(--ui-overlay-shadow, var(--ui-elevation-tooltip, var(--ui-shadow-md))));
13204
+ }
13205
+
13206
+ /* A keyboard shortcut follows the label after a thin divider, smaller and quieter, as menus show
13207
+ it. The label stays first in the description, so a screen reader hears the name, then the keys. */
13208
+ .shortcut {
13209
+ display: inline-flex;
13210
+ align-items: center;
13211
+ padding-inline-start: var(--ui-space-2);
13212
+ border-inline-start: 1px solid color-mix(in oklab, currentColor 28%, transparent);
13213
+ color: color-mix(in oklab, currentColor 72%, transparent);
13214
+ font-size: var(--ui-font-size-xs);
13215
+ font-weight: var(--ui-font-normal);
13216
+ white-space: nowrap;
13217
+ vertical-align: baseline;
13218
+ }
13219
+
13220
+ .shortcut:empty {
13221
+ display: none;
13222
+ }
13223
+
13224
+ /* A <kbd> takes the browser's monospace; the hint reads in the tooltip's own type. */
13225
+
13226
+ :scope:where([data-component~="ui-tooltip"])[data-ui-tooltip-state~="inverse"] .surface {
13227
+ --_tooltip-line: var(--_ui-tooltip-inverse-surface, var(--ui-text-primary));
13228
+ background: var(--_ui-tooltip-inverse-surface, var(--ui-text-primary));
13229
+ color: var(--_ui-tooltip-inverse-text, var(--ui-surface-default));
13230
+ }
13231
+
13232
+ /* A rotated square shares the surface fill and draws the two outward border edges. Its centre sits on
13233
+ * the surface border line, so the fill covers that stretch of border and the outline runs unbroken. */
13234
+ .surface:where(:not([data-component], [data-slotted]))::after {
13235
+ content: "";
13236
+ position: absolute;
13237
+ z-index: 1;
13238
+ inset-inline-start: var(--ui-space-3);
13239
+ inset-block-end: calc(var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - var(--ui-border-width) / 2);
13240
+ inline-size: var(--_ui-tooltip-arrow-size, 0.625rem);
13241
+ block-size: var(--_ui-tooltip-arrow-size, 0.625rem);
13242
+ box-sizing: border-box;
13243
+ background: inherit;
13244
+ border: 0 solid var(--_tooltip-line);
13245
+ border-inline-end-width: var(--ui-border-width);
13246
+ border-block-end-width: var(--ui-border-width);
13247
+ border-end-end-radius: var(--ui-border-width);
13248
+ transform: rotate(45deg) scaleX(1.25) scaleY(0.85);
13249
+ }
13250
+
13251
+ :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="bottom"] .surface:where(:not([data-component], [data-slotted]))::after {
13252
+ inset-block-start: calc(var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - var(--ui-border-width) / 2);
13253
+ inset-block-end: auto;
13254
+ border-inline-end-width: 0;
13255
+ border-block-end-width: 0;
13256
+ border-inline-start-width: var(--ui-border-width);
13257
+ border-block-start-width: var(--ui-border-width);
13258
+ border-end-end-radius: 0;
13259
+ border-start-start-radius: var(--ui-border-width);
13260
+ }
13261
+
13262
+ :scope:where([data-component~="ui-tooltip"])[data-ui-actual-align="center"] .surface:where(:not([data-component], [data-slotted]))::after {
13263
+ inset-inline-start: calc(50% - var(--_ui-tooltip-arrow-size, 0.625rem) / 2);
13264
+ }
13265
+
13266
+ :scope:where([data-component~="ui-tooltip"])[data-ui-actual-align="end"] .surface:where(:not([data-component], [data-slotted]))::after {
13267
+ inset-inline-start: auto;
13268
+ inset-inline-end: var(--ui-space-3);
13269
+ }
13270
+
13271
+ :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="left"] .surface:where(:not([data-component], [data-slotted]))::after,
13272
+ :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="right"] .surface:where(:not([data-component], [data-slotted]))::after {
13273
+ inset-block-start: calc(50% - var(--_ui-tooltip-arrow-size, 0.625rem) / 2);
13274
+ inset-block-end: auto;
13275
+ border: 0 solid var(--_tooltip-line);
13276
+ }
13277
+
13278
+ :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="left"] .surface:where(:not([data-component], [data-slotted]))::after {
13279
+ inset-inline-start: auto;
13280
+ inset-inline-end: calc(var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - var(--ui-border-width) / 2);
13281
+ border-inline-end-width: var(--ui-border-width);
13282
+ border-block-start-width: var(--ui-border-width);
13283
+ }
13284
+
13285
+ :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="right"] .surface:where(:not([data-component], [data-slotted]))::after {
13286
+ inset-inline-start: calc(var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - var(--ui-border-width) / 2);
13287
+ inset-inline-end: auto;
13288
+ border-inline-start-width: var(--ui-border-width);
13289
+ border-block-end-width: var(--ui-border-width);
13290
+ }
13291
+
13292
+ :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="left"][data-ui-actual-align="start"] .surface:where(:not([data-component], [data-slotted]))::after,
13293
+ :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="right"][data-ui-actual-align="start"] .surface:where(:not([data-component], [data-slotted]))::after {
13294
+ inset-block-start: var(--ui-space-3);
13295
+ }
13296
+
13297
+ :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="left"][data-ui-actual-align="end"] .surface:where(:not([data-component], [data-slotted]))::after,
13298
+ :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="right"][data-ui-actual-align="end"] .surface:where(:not([data-component], [data-slotted]))::after {
13299
+ inset-block-start: auto;
13300
+ inset-block-end: var(--ui-space-3);
13301
+ }
13302
+
13303
+ :scope:where([data-component~="ui-tooltip"]):popover-open {
13304
+ opacity: 1;
13305
+ transform: translateY(0);
13306
+ }
13307
+
13308
+ @starting-style {
13309
+ :scope:where([data-component~="ui-tooltip"]):popover-open {
13310
+ opacity: 0;
13311
+ transform: translateY(4px);
13312
+ }
13313
+ }
13314
+
13315
+ :scope:where([data-component~="ui-tooltip"])[hidden] {
13316
+ display: none;
13317
+ }
13318
+
13319
+ @media (prefers-reduced-motion: reduce) {
13320
+ :scope:where([data-component~="ui-tooltip"]) {
13321
+ transition: none;
13322
+ }
13323
+ }
13324
+ }
13325
+ @scope ([data-component~="ui-tooltip"]) to ([data-component]) {
13326
+ /* This component's hooks style the element they are set on, and never a nested one. */
13327
+
13328
+ /* The label and the shortcut sit side by side, a gap apart, with the label wrapping on its own. */
13329
+
13330
+ /* A keyboard shortcut follows the label after a thin divider, smaller and quieter, as menus show
13331
+ it. The label stays first in the description, so a screen reader hears the name, then the keys. */
13332
+
13333
+ /* A <kbd> takes the browser's monospace; the hint reads in the tooltip's own type. */
13334
+ .shortcut :where([data-slotted], [data-slotted] *):is(kbd) {
13335
+ font: inherit;
13336
+ }
13337
+
13338
+ /* A rotated square shares the surface fill and draws the two outward border edges. Its centre sits on
13339
+ * the surface border line, so the fill covers that stretch of border and the outline runs unbroken. */
13340
+
13341
+ @starting-style {
13342
+ }
13343
+
13344
+ @media (prefers-reduced-motion: reduce) {
13345
+ }
13346
+ }
13347
+ /* Generated by HTML Next 1.0.0-alpha.57. Do not edit. */
13348
+ @supports (-moz-appearance: none) {
13349
+ :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
13350
+ :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
13351
+ }
13352
+ @supports (-moz-appearance: none) {
13353
+ [data-component~="ui-checkbox"] { --html-next-scope-owner: "ui-checkbox" !important; }
13354
+ }
13355
+ @scope ([data-component~="ui-checkbox"]) to ([data-component], [data-slotted]) {
13356
+ /* This component's hooks style the element they are set on, and never a nested one. */
13357
+ @property --ui-checkbox-gap {
13358
+ syntax: "*";
13359
+ inherits: false;
13360
+ }
13361
+ @property --ui-checkbox-invalid-border {
13362
+ syntax: "*";
13363
+ inherits: false;
13364
+ }
13365
+ @property --ui-checkbox-size {
13366
+ syntax: "*";
13367
+ inherits: false;
13368
+ }
13369
+
13370
+ :scope:where([data-component~="ui-checkbox"]) {
13371
+ /* Hooks do not inherit, so the parts below read them from the root. */
13372
+ --_ui-checkbox-size: var(--ui-checkbox-size);
13373
+ --_ui-checkbox-invalid-border: var(--ui-checkbox-invalid-border, var(--ui-field-danger, var(--ui-danger-solid)));
13374
+
13375
+ display: inline-flex;
13376
+ align-items: flex-start;
13377
+ gap: var(--ui-checkbox-gap, var(--ui-space-2));
13378
+ max-inline-size: 100%;
13379
+ color: var(--ui-text-primary);
13380
+ cursor: pointer;
13381
+ }
13382
+
13383
+ /* The label, and under it an optional line saying what the choice means. */
13384
+ .text {
13385
+ display: flex;
13386
+ flex-direction: column;
13387
+ gap: var(--ui-space-1);
13388
+ min-inline-size: 0;
13389
+ }
13390
+
13391
+ .label {
13392
+ min-inline-size: 0;
13393
+ line-height: var(--ui-line-height-md);
13394
+ }
13395
+
13396
+ .description {
13397
+ color: var(--ui-text-secondary);
13398
+ font-size: var(--ui-font-size-sm);
13399
+ line-height: var(--ui-line-height);
13400
+ }
13401
+
13402
+ .description:empty {
13403
+ display: none;
13404
+ }
13405
+
13406
+ input {
13407
+ appearance: none;
13408
+ -webkit-appearance: none;
13409
+ position: relative;
13410
+ flex: 0 0 auto;
13411
+ inline-size: var(--_ui-checkbox-size, 1.125rem);
13412
+ block-size: var(--_ui-checkbox-size, 1.125rem);
13413
+ margin: 0.125em 0 0;
13414
+ border: var(--ui-border-width) solid var(--ui-control-border, var(--ui-border-strong));
13415
+ border-radius: var(--ui-radius-sm);
13416
+ background: var(--ui-control-surface, var(--ui-surface-default));
13417
+ box-shadow: var(--ui-control-inset);
13418
+ cursor: pointer;
13419
+ transition:
13420
+ background-color var(--ui-motion-fast) var(--ui-motion-ease),
13421
+ border-color var(--ui-motion-fast) var(--ui-motion-ease),
13422
+ box-shadow var(--ui-motion-fast) var(--ui-motion-ease);
13423
+ }
13424
+
13425
+ input:where(:not([data-component], [data-slotted]))::after {
13426
+ content: "";
13427
+ position: absolute;
13428
+ opacity: 0;
13429
+ transition: opacity 120ms var(--ui-motion-ease);
13430
+ }
13431
+
13432
+ input:checked,
13433
+ input:indeterminate {
13434
+ border-color: var(--ui-accent-solid);
13435
+ background: var(--ui-accent-solid);
13436
+ box-shadow: var(--ui-control-inset);
13437
+ }
13438
+
13439
+ /* Centre the tick's box and lift it slightly for the rotated check shape. */
13440
+ input:checked:where(:not([data-component], [data-slotted]))::after {
13441
+ inset: 0;
13442
+ margin: auto;
13443
+ inline-size: 0.28rem;
13444
+ block-size: 0.5rem;
13445
+ /* Longhands, not `border: solid var(...)`: lowering drops a shorthand that omits a
13446
+ component, which left the tick with no style and no colour. */
13447
+ border-style: solid;
13448
+ border-color: var(--ui-text-on-accent);
13449
+ border-width: 0 0.125rem 0.125rem 0;
13450
+ opacity: 1;
13451
+ transform: translateY(-0.09rem) rotate(45deg);
13452
+ animation: ui-checkbox-check 180ms var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1)) both;
13453
+ }
13454
+
13455
+ input:indeterminate:where(:not([data-component], [data-slotted]))::after {
13456
+ inset: 50% 0.23rem auto;
13457
+ block-size: 0.125rem;
13458
+ border-radius: var(--ui-radius-round);
13459
+ background: var(--ui-text-on-accent);
13460
+ opacity: 1;
13461
+ transform: translateY(-50%);
13462
+ }
13463
+
13464
+ @keyframes ui-checkbox-check {
13465
+ from {
13466
+ opacity: 0;
13467
+ transform: translateY(-0.09rem) rotate(45deg) scale(0.55);
13468
+ }
13469
+ 65% {
13470
+ opacity: 1;
13471
+ transform: translateY(-0.09rem) rotate(45deg) scale(1.12);
13472
+ }
13473
+ to {
13474
+ opacity: 1;
13475
+ transform: translateY(-0.09rem) rotate(45deg) scale(1);
13476
+ }
13477
+ }
13478
+
13479
+ @media (prefers-reduced-motion: reduce) {
13480
+ input:where(:not([data-component], [data-slotted]))::after {
13481
+ transition: none;
13482
+ animation: none;
13483
+ }
13484
+ }
13485
+
13486
+ input:hover:enabled {
13487
+ border-color: var(--ui-accent-solid);
13488
+ }
13489
+
13490
+ input:focus-visible {
13491
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring, var(--ui-accent-solid));
13492
+ outline-offset: var(--ui-focus-width);
13493
+ }
13494
+
13495
+ :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="invalid"] input {
13496
+ border-color: var(--_ui-checkbox-invalid-border);
13497
+ }
13498
+
13499
+ :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="disabled"] {
13500
+ color: var(--ui-disabled-text);
13501
+ cursor: not-allowed;
13502
+ }
13503
+ :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="disabled"] .description {
13504
+ color: var(--ui-disabled-text);
13505
+ }
13506
+ :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="disabled"] input {
13507
+ border-color: var(--ui-disabled-border);
13508
+ background: var(--ui-disabled-surface);
13509
+ box-shadow: none;
13510
+ cursor: not-allowed;
13511
+ }
13512
+
13513
+ /* A sized choice keeps its box and aligns instead: the label takes that size's field type size,
13514
+ and the first line centres in that control height, so the label shares a row's baseline.
13515
+ Multi-line labels and descriptions still grow downward from that first line. */
13516
+ :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=sm"] {
13517
+ --_font: var(--ui-font-size-sm);
13518
+ --_row: var(--ui-control-size-sm);
13519
+ }
13520
+
13521
+ :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=lg"] {
13522
+ --_font: var(--ui-font-size-md);
13523
+ --_row: var(--ui-control-size-lg);
13524
+ }
13525
+
13526
+ :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=sm"],
13527
+ :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=lg"] {
13528
+ --_line: calc(var(--_font) * var(--ui-line-height-md));
13529
+ font-size: var(--_font);
13530
+ padding-block: calc((var(--_row) - var(--_line)) / 2);
13531
+ }
13532
+
13533
+ :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=sm"] input,
13534
+ :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=lg"] input {
13535
+ margin-top: calc((var(--_line) - var(--_ui-checkbox-size, 1.125rem)) / 2);
13536
+ }
13537
+
13538
+ @media (pointer: coarse) {
13539
+ :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=sm"] {
13540
+ --_row: var(--ui-control-min-block-size);
13541
+ }
13542
+ }
13543
+
13544
+ /* A component that sets its display still honours the hidden attribute on its root. */
13545
+ :scope:where([data-component~="ui-checkbox"])[hidden] {
13546
+ display: none;
13547
+ }
13548
+ }
13549
+ @scope ([data-component~="ui-checkbox"]) to ([data-component]) {
13550
+ /* This component's hooks style the element they are set on, and never a nested one. */
13551
+
13552
+ /* The label, and under it an optional line saying what the choice means. */
13553
+
13554
+ /* Centre the tick's box and lift it slightly for the rotated check shape. */
13555
+
13556
+ @media (prefers-reduced-motion: reduce) {
13557
+ }
13558
+
13559
+ /* A sized choice keeps its box and aligns instead: the label takes that size's field type size,
13560
+ and the first line centres in that control height, so the label shares a row's baseline.
13561
+ Multi-line labels and descriptions still grow downward from that first line. */
13562
+
13563
+ @media (pointer: coarse) {
13564
+ }
13565
+
13566
+ /* A component that sets its display still honours the hidden attribute on its root. */
13567
+ }
13568
+ /* Generated by HTML Next 1.0.0-alpha.57. Do not edit. */
13569
+ @supports (-moz-appearance: none) {
13570
+ :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
13571
+ :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
13572
+ }
13573
+ @supports (-moz-appearance: none) {
13574
+ [data-component~="ui-disclosure"] { --html-next-scope-owner: "ui-disclosure" !important; }
13575
+ }
13576
+ @scope ([data-component~="ui-disclosure"]) to ([data-component], [data-slotted]) {
13577
+ /* This component's hooks style the element they are set on, and never a nested one. */
13578
+ @property --ui-disclosure-trigger-min-block-size {
13579
+ syntax: "*";
13580
+ inherits: false;
13581
+ }
13582
+ @property --ui-disclosure-trigger-padding-block {
13583
+ syntax: "*";
13584
+ inherits: false;
13585
+ }
13586
+ @property --ui-disclosure-trigger-padding-inline {
13587
+ syntax: "*";
13588
+ inherits: false;
13589
+ }
13590
+
13591
+ /* Density resolves into the summary row's own values; the public tokens still override them. */
13592
+ :scope:where([data-component~="ui-disclosure"]) {
13593
+ /* Hooks do not inherit, so the parts below read them from the root. */
13594
+ --_ui-disclosure-trigger-min-block-size: var(--ui-disclosure-trigger-min-block-size);
13595
+ --_ui-disclosure-trigger-padding-block: var(--ui-disclosure-trigger-padding-block);
13596
+ --_ui-disclosure-trigger-padding-inline: var(--ui-disclosure-trigger-padding-inline);
13597
+
13598
+ --_trigger-min-block-size: var(--ui-control-size);
13599
+ --_trigger-padding-block: var(--ui-space-2);
13600
+ --_trigger-padding-inline: var(--ui-space-3);
13601
+ }
13602
+
13603
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="density=compact"] {
13604
+ --_trigger-min-block-size: var(--ui-control-size-sm);
13605
+ --_trigger-padding-block: var(--ui-space-1);
13606
+ --_trigger-padding-inline: var(--ui-space-2);
13607
+ }
13608
+
13609
+ /* An accordion row, not a field: no enclosing box, just a divider, so it never reads as a
13610
+ * select or combobox. Stacked disclosures share their dividers. */
13611
+ :scope:where([data-component~="ui-disclosure"]) {
13612
+ display: block;
13613
+ inline-size: 100%;
13614
+ overflow: clip;
13615
+ border-block-end: var(--ui-border-width) solid var(--ui-border-divider);
13616
+ color: var(--ui-text-primary);
13617
+ }
13618
+
13619
+ .trigger {
13620
+ display: flex;
13621
+ gap: var(--ui-space-3);
13622
+ align-items: center;
13623
+ inline-size: 100%;
13624
+ min-block-size: var(--_ui-disclosure-trigger-min-block-size, var(--_trigger-min-block-size));
13625
+ padding: var(--_ui-disclosure-trigger-padding-block, var(--_trigger-padding-block))
13626
+ var(--_ui-disclosure-trigger-padding-inline, var(--_trigger-padding-inline));
13627
+ border: 0;
13628
+ background: transparent;
13629
+ color: inherit;
13630
+ font: inherit;
13631
+ font-weight: var(--ui-font-semibold);
13632
+ text-align: start;
13633
+ cursor: pointer;
13634
+ border-radius: var(--ui-radius-sm);
13635
+ transition: background-color var(--ui-motion-fast) var(--ui-motion-ease);
13636
+ }
13637
+
13638
+ .trigger:hover:not(:disabled) {
13639
+ background: color-mix(in srgb, currentColor 6%, transparent);
13640
+ }
13641
+ .trigger:focus-visible {
13642
+ outline: none;
13643
+ box-shadow: inset 0 0 0 var(--ui-focus-width) color-mix(in srgb, var(--ui-focus-ring) 45%, transparent);
13644
+ }
13645
+ .trigger:disabled {
13646
+ color: var(--ui-disabled-text);
13647
+ cursor: not-allowed;
13648
+ }
13649
+
13650
+ .summary {
13651
+ flex: 1;
13652
+ min-inline-size: 0;
13653
+ }
13654
+
13655
+ .leading,
13656
+ .indicator {
13657
+ display: inline-flex;
13658
+ align-items: center;
13659
+ justify-content: center;
13660
+ flex: none;
13661
+ }
13662
+ .leading:empty {
13663
+ display: none;
13664
+ }
13665
+ .indicator {
13666
+ transition: transform var(--ui-motion-feedback) var(--ui-motion-feedback-ease);
13667
+ }
13668
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="internalOpen"] .indicator {
13669
+ transform: rotate(180deg);
13670
+ }
13671
+
13672
+ .chevron {
13673
+ inline-size: 0.5rem;
13674
+ block-size: 0.5rem;
13675
+ border-inline-end: 2px solid currentColor;
13676
+ border-block-end: 2px solid currentColor;
13677
+ transform: rotate(45deg) translate(-1px, -1px);
13678
+ }
13679
+
13680
+ .panel {
13681
+ display: grid;
13682
+ grid-template-rows: 0fr;
13683
+ transition: grid-template-rows var(--ui-motion-reveal) var(--ui-motion-reveal-ease), content-visibility var(--ui-motion-reveal) allow-discrete;
13684
+ }
13685
+
13686
+ .panel-inner {
13687
+ min-block-size: 0;
13688
+ overflow: hidden;
13689
+ padding-inline: var(--ui-space-3);
13690
+ }
13691
+
13692
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="internalOpen"] .panel {
13693
+ grid-template-rows: 1fr;
13694
+ }
13695
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="internalOpen"] .panel-inner {
13696
+ padding-block: 0 var(--ui-space-3);
13697
+ }
13698
+
13699
+ /* A bounded accordion owns one flexible body, so its trigger never scrolls away. The
13700
+ * normal content-sized layout and its animation remain unchanged when fill is omitted. */
13701
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"] {
13702
+ display: flex;
13703
+ flex-direction: column;
13704
+ flex: 0 0 var(--_ui-disclosure-heading-size, var(--_trigger-min-block-size));
13705
+ min-block-size: calc(var(--_ui-disclosure-heading-size, var(--_trigger-min-block-size)) + var(--ui-border-width));
13706
+ transition: flex-grow var(--ui-motion-layout) var(--ui-motion-layout-ease);
13707
+ border-block-end: 0;
13708
+ border-block-start: var(--ui-border-width) solid var(--ui-border-divider);
13709
+ }
13710
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"][data-ui-disclosure-state~="internalOpen"] {
13711
+ flex-grow: 1;
13712
+ }
13713
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"] .heading {
13714
+ flex: none;
13715
+ }
13716
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"] .trigger {
13717
+ border-radius: 0;
13718
+ }
13719
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"] .panel {
13720
+ flex: 1;
13721
+ min-block-size: 0;
13722
+ }
13723
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"] .panel-inner {
13724
+ display: flex;
13725
+ flex-direction: column;
13726
+ flex: 1;
13727
+ min-block-size: 0;
13728
+ padding: 0;
13729
+ }
13730
+
13731
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="variant=navigation"] .trigger {
13732
+ gap: var(--ui-nav-gap);
13733
+ padding-inline: var(--ui-nav-padding-inline);
13734
+ min-block-size: var(--ui-nav-min-block-size);
13735
+ padding-block: var(--ui-nav-padding-block);
13736
+ border-radius: var(--ui-selection-radius);
13737
+ font-size: var(--ui-font-size-md);
13738
+ font-weight: var(--ui-font-normal);
13739
+ color: var(--ui-text-secondary);
13740
+ }
13741
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="variant=navigation"][data-ui-disclosure-state~="density=compact"] .trigger {
13742
+ padding-inline: var(--ui-nav-compact-padding-inline);
13743
+ padding-block: var(--ui-nav-compact-padding-block);
13744
+ min-block-size: var(--ui-nav-compact-min-block-size);
13745
+ font-size: var(--ui-font-size-sm);
13746
+ }
13747
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="variant=navigation"] .trigger:hover:not(:disabled) {
13748
+ background: var(--ui-nav-hover-surface);
13749
+ color: var(--ui-text-primary);
13750
+ }
13751
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="variant=navigation"] :is(.leading, .indicator) {
13752
+ inline-size: var(--ui-nav-icon-size);
13753
+ font-size: var(--ui-nav-icon-size);
13754
+ }
13755
+ @media (pointer: coarse) {
13756
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="variant=navigation"][data-ui-disclosure-state~="density=compact"] .trigger {
13757
+ min-block-size: var(--ui-control-min-block-size);
13758
+ }
13759
+ }
13760
+
13761
+ @media (prefers-reduced-motion: reduce) {
13762
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"],
13763
+ .panel,
13764
+ .indicator {
13765
+ transition: none;
13766
+ }
13767
+ }
13768
+
13769
+ /* A component that sets its display still honours the hidden attribute on its root. */
13770
+ :scope:where([data-component~="ui-disclosure"])[hidden] {
13771
+ display: none;
13772
+ }
13773
+ }
13774
+ @scope ([data-component~="ui-disclosure"]) to ([data-component]) {
13775
+ /* This component's hooks style the element they are set on, and never a nested one. */
13776
+
13777
+ /* Density resolves into the summary row's own values; the public tokens still override them. */
13778
+
13779
+ /* An accordion row, not a field: no enclosing box, just a divider, so it never reads as a
13780
+ * select or combobox. Stacked disclosures share their dividers. */
13781
+
13782
+ /* A bounded accordion owns one flexible body, so its trigger never scrolls away. The
13783
+ * normal content-sized layout and its animation remain unchanged when fill is omitted. */
13784
+ @media (pointer: coarse) {
13785
+ }
13786
+
13787
+ @media (prefers-reduced-motion: reduce) {
13788
+ }
13789
+
13790
+ /* A component that sets its display still honours the hidden attribute on its root. */
13791
+ }
13792
+ /* Generated by HTML Next 1.0.0-alpha.57. Do not edit. */
13793
+ @supports (-moz-appearance: none) {
13794
+ :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
13795
+ :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
13796
+ }
13797
+ @supports (-moz-appearance: none) {
13798
+ [data-component~="ui-input"] { --html-next-scope-owner: "ui-input" !important; }
13799
+ }
13800
+ @scope ([data-component~="ui-input"]) to ([data-component], [data-slotted]) {
13801
+ /* This component's hooks style the element they are set on, and never a nested one. An Input
13802
+ Group sets --_ui-default-input-* for the input inside it, below the input's own hooks. */
13803
+ @property --ui-input-border {
13804
+ syntax: "*";
13805
+ inherits: false;
13806
+ }
13807
+ @property --ui-input-border-hover {
13808
+ syntax: "*";
13809
+ inherits: false;
13810
+ }
13811
+ @property --ui-input-border-width {
13812
+ syntax: "*";
13813
+ inherits: false;
13814
+ }
13815
+ @property --ui-input-focus-border {
13816
+ syntax: "*";
13817
+ inherits: false;
13818
+ }
13819
+ @property --ui-input-focus-outline {
13820
+ syntax: "*";
13821
+ inherits: false;
13822
+ }
13823
+ @property --ui-input-focus-shadow {
13824
+ syntax: "*";
13825
+ inherits: false;
13826
+ }
13827
+ @property --ui-input-inline-size {
13828
+ syntax: "*";
13829
+ inherits: false;
13830
+ }
13831
+ @property --ui-input-invalid-border {
13832
+ syntax: "*";
13833
+ inherits: false;
13834
+ }
13835
+ @property --ui-input-invalid-focus-shadow {
13836
+ syntax: "*";
13837
+ inherits: false;
13838
+ }
13839
+ @property --ui-input-min-block-size {
13840
+ syntax: "*";
13841
+ inherits: false;
13842
+ }
13843
+ @property --ui-input-radius {
13844
+ syntax: "*";
13845
+ inherits: false;
13846
+ }
13847
+ @property --ui-input-shadow {
13848
+ syntax: "*";
13849
+ inherits: false;
13850
+ }
13851
+ @property --ui-input-surface {
13852
+ syntax: "*";
13853
+ inherits: false;
13854
+ }
13855
+
13856
+ :scope:where([data-component~="ui-input"]) {
13857
+ box-sizing: border-box;
13858
+ display: inline-block;
13859
+ inline-size: var(--ui-input-inline-size, 100%);
13860
+ min-inline-size: 0;
13861
+ min-block-size: var(--ui-input-min-block-size, var(--_ui-default-input-min-block-size, var(--ui-control-size-md)));
13862
+ margin: 0;
13863
+ padding: var(--ui-space-2) var(--ui-space-3);
13864
+ appearance: none;
13865
+ padding-inline-start: var(--_ui-default-input-padding-inline-start, var(--ui-space-3));
13866
+ border: var(--ui-input-border-width, var(--_ui-default-input-border-width, var(--ui-border-width))) solid
13867
+ var(--ui-input-border, var(--_ui-default-input-border, var(--ui-control-border, var(--ui-border-strong))));
13868
+ border-radius: var(--ui-input-radius, var(--_ui-default-input-radius, var(--ui-field-radius, var(--ui-radius-md))));
13869
+ background: var(--ui-input-surface, var(--_ui-default-input-surface, var(--ui-control-surface, var(--ui-surface-elevated))));
13870
+ color: var(--ui-text-primary);
13871
+ font: inherit;
13872
+ line-height: var(--ui-line-height-tight);
13873
+ box-shadow: var(--ui-input-shadow, var(--_ui-default-input-shadow, var(--ui-control-inset)));
13874
+ transition:
13875
+ border-color var(--ui-motion-fast) var(--ui-motion-ease),
13876
+ box-shadow var(--ui-motion-fast) var(--ui-motion-ease),
13877
+ background-color var(--ui-motion-fast) var(--ui-motion-ease);
13878
+ }
13422
13879
 
13423
- /* A <kbd> takes the browser's monospace; the hint reads in the tooltip's own type. */
13424
-
13425
- :scope:where([data-component~="ui-tooltip"])[data-ui-tooltip-state~="inverse"] .surface {
13426
- --_tooltip-line: var(--_ui-tooltip-inverse-surface, var(--ui-text-primary));
13427
- background: var(--_ui-tooltip-inverse-surface, var(--ui-text-primary));
13428
- color: var(--_ui-tooltip-inverse-text, var(--ui-surface-default));
13880
+ /* Each size reads the hook and then an Input Group's default first, so a group, which draws the frame, can zero it. */
13881
+ :scope:where([data-component~="ui-input"])[data-ui-input-state~="size=sm"] {
13882
+ min-block-size: var(--ui-input-min-block-size, var(--_ui-default-input-min-block-size, var(--ui-control-size-sm)));
13883
+ padding: var(--ui-space-1) var(--ui-space-2);
13884
+ font-size: var(--ui-font-size-sm);
13429
13885
  }
13430
13886
 
13431
- /* A rotated square shares the surface fill and draws the two outward border edges. Its centre sits on
13432
- * the surface border line, so the fill covers that stretch of border and the outline runs unbroken. */
13433
- .surface:where(:not([data-component], [data-slotted]))::after {
13434
- content: "";
13435
- position: absolute;
13436
- z-index: 1;
13437
- inset-inline-start: var(--ui-space-3);
13438
- inset-block-end: calc(var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - var(--ui-border-width) / 2);
13439
- inline-size: var(--_ui-tooltip-arrow-size, 0.625rem);
13440
- block-size: var(--_ui-tooltip-arrow-size, 0.625rem);
13441
- box-sizing: border-box;
13442
- background: inherit;
13443
- border: 0 solid var(--_tooltip-line);
13444
- border-inline-end-width: var(--ui-border-width);
13445
- border-block-end-width: var(--ui-border-width);
13446
- border-end-end-radius: var(--ui-border-width);
13447
- transform: rotate(45deg) scaleX(1.25) scaleY(0.85);
13887
+ :scope:where([data-component~="ui-input"])[data-ui-input-state~="size=lg"] {
13888
+ min-block-size: var(--ui-input-min-block-size, var(--_ui-default-input-min-block-size, var(--ui-control-size-lg)));
13889
+ padding: var(--ui-space-3) var(--ui-space-4);
13890
+ font-size: var(--ui-font-size-md);
13448
13891
  }
13449
13892
 
13450
- :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="bottom"] .surface:where(:not([data-component], [data-slotted]))::after {
13451
- inset-block-start: calc(var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - var(--ui-border-width) / 2);
13452
- inset-block-end: auto;
13453
- border-inline-end-width: 0;
13454
- border-block-end-width: 0;
13455
- border-inline-start-width: var(--ui-border-width);
13456
- border-block-start-width: var(--ui-border-width);
13457
- border-end-end-radius: 0;
13458
- border-start-start-radius: var(--ui-border-width);
13459
- }
13893
+ /* Under touch a small field is still a touch-sized target, as a small button is, and keeps
13894
+ body-size text: below 16px, iOS zooms the page into the focused field. */
13895
+ @media (pointer: coarse) {
13896
+ :scope:where([data-component~="ui-input"]) {
13897
+ min-block-size: var(
13898
+ --ui-input-min-block-size,
13899
+ var(--_ui-default-input-min-block-size, max(var(--ui-control-size-md), var(--ui-control-min-block-size)))
13900
+ );
13901
+ }
13460
13902
 
13461
- :scope:where([data-component~="ui-tooltip"])[data-ui-actual-align="center"] .surface:where(:not([data-component], [data-slotted]))::after {
13462
- inset-inline-start: calc(50% - var(--_ui-tooltip-arrow-size, 0.625rem) / 2);
13903
+ :scope:where([data-component~="ui-input"]),
13904
+ :scope:where([data-component~="ui-input"])[data-ui-input-state~="size=sm"],
13905
+ :scope:where([data-component~="ui-input"])[data-ui-input-state~="size=lg"] {
13906
+ font-size: var(--ui-font-size-md);
13907
+ }
13908
+
13909
+ :scope:where([data-component~="ui-input"])[data-ui-input-state~="size=sm"] {
13910
+ min-block-size: var(--ui-input-min-block-size, var(--_ui-default-input-min-block-size, var(--ui-control-min-block-size)));
13911
+ }
13463
13912
  }
13464
13913
 
13465
- :scope:where([data-component~="ui-tooltip"])[data-ui-actual-align="end"] .surface:where(:not([data-component], [data-slotted]))::after {
13466
- inset-inline-start: auto;
13467
- inset-inline-end: var(--ui-space-3);
13914
+ /* Tabbing into a field selects its text; tint that selection softly instead of the page highlight. */
13915
+ :scope:where([data-component~="ui-input"])::selection {
13916
+ background: color-mix(in srgb, var(--ui-accent-solid) 20%, transparent);
13917
+ color: inherit;
13468
13918
  }
13469
13919
 
13470
- :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="left"] .surface:where(:not([data-component], [data-slotted]))::after,
13471
- :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="right"] .surface:where(:not([data-component], [data-slotted]))::after {
13472
- inset-block-start: calc(50% - var(--_ui-tooltip-arrow-size, 0.625rem) / 2);
13473
- inset-block-end: auto;
13474
- border: 0 solid var(--_tooltip-line);
13920
+ :scope:where([data-component~="ui-input"])::placeholder {
13921
+ color: var(--ui-control-placeholder, var(--ui-text-secondary));
13922
+ opacity: 1;
13475
13923
  }
13476
13924
 
13477
- :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="left"] .surface:where(:not([data-component], [data-slotted]))::after {
13478
- inset-inline-start: auto;
13479
- inset-inline-end: calc(var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - var(--ui-border-width) / 2);
13480
- border-inline-end-width: var(--ui-border-width);
13481
- border-block-start-width: var(--ui-border-width);
13925
+ :scope:where([data-component~="ui-input"]):hover:not(:focus):not(:disabled):not(:read-only):not([aria-invalid="true"]):not(:is(:user-invalid, [data-user-invalid])) {
13926
+ border-color: var(--ui-input-border-hover, var(--_ui-default-input-border-hover, var(--ui-control-border-hover, var(--ui-text-secondary))));
13482
13927
  }
13483
13928
 
13484
- :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="right"] .surface:where(:not([data-component], [data-slotted]))::after {
13485
- inset-inline-start: calc(var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - var(--ui-border-width) / 2);
13486
- inset-inline-end: auto;
13487
- border-inline-start-width: var(--ui-border-width);
13488
- border-block-end-width: var(--ui-border-width);
13929
+ :scope:where([data-component~="ui-input"]):focus-visible {
13930
+ border-color: var(--ui-input-focus-border, var(--_ui-default-input-focus-border, var(--ui-control-focus, var(--ui-accent-solid))));
13931
+ outline: none;
13932
+ box-shadow: var(--ui-input-focus-shadow, var(--_ui-default-input-focus-shadow, var(--ui-control-inset), var(--ui-control-focus-halo-shadow)));
13489
13933
  }
13490
13934
 
13491
- :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="left"][data-ui-actual-align="start"] .surface:where(:not([data-component], [data-slotted]))::after,
13492
- :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="right"][data-ui-actual-align="start"] .surface:where(:not([data-component], [data-slotted]))::after {
13493
- inset-block-start: var(--ui-space-3);
13935
+ /* The app's invalid flag, or the browser's own verdict once the user has left an invalid field. */
13936
+ :scope:where([data-component~="ui-input"])[aria-invalid="true"],
13937
+ :scope:where([data-component~="ui-input"]):is(:user-invalid, [data-user-invalid]) {
13938
+ border-color: var(--ui-input-invalid-border, var(--_ui-default-input-invalid-border, var(--ui-field-danger, var(--ui-danger-solid))));
13494
13939
  }
13495
13940
 
13496
- :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="left"][data-ui-actual-align="end"] .surface:where(:not([data-component], [data-slotted]))::after,
13497
- :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="right"][data-ui-actual-align="end"] .surface:where(:not([data-component], [data-slotted]))::after {
13498
- inset-block-start: auto;
13499
- inset-block-end: var(--ui-space-3);
13941
+ :scope:where([data-component~="ui-input"]):is([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])):focus-visible {
13942
+ box-shadow: var(
13943
+ --ui-input-invalid-focus-shadow,
13944
+ var(
13945
+ --_ui-default-input-invalid-focus-shadow,
13946
+ var(--ui-control-inset),
13947
+ 0 0 0 calc(var(--ui-focus-width) * 1.5) color-mix(
13948
+ in srgb,
13949
+ var(--ui-input-invalid-border, var(--ui-field-danger, var(--ui-danger-solid))) 22%,
13950
+ transparent
13951
+ )
13952
+ )
13953
+ );
13500
13954
  }
13501
13955
 
13502
- :scope:where([data-component~="ui-tooltip"]):popover-open {
13503
- opacity: 1;
13504
- transform: translateY(0);
13956
+ :scope:where([data-component~="ui-input"]):disabled {
13957
+ background: var(--ui-control-surface-disabled, var(--ui-surface-muted));
13958
+ color: var(--ui-disabled-text);
13959
+ box-shadow: none;
13960
+ cursor: not-allowed;
13505
13961
  }
13506
13962
 
13507
- @starting-style {
13508
- :scope:where([data-component~="ui-tooltip"]):popover-open {
13509
- opacity: 0;
13510
- transform: translateY(4px);
13963
+ /* Forced colors drop box shadows, so the focus ring becomes an outline. */
13964
+ @media (forced-colors: active) {
13965
+ :scope:where([data-component~="ui-input"]):focus-visible {
13966
+ outline: var(--ui-input-focus-outline, var(--_ui-default-input-focus-outline, var(--ui-focus-width) solid Highlight));
13967
+ outline-offset: var(--ui-border-width);
13511
13968
  }
13512
13969
  }
13513
13970
 
13514
- :scope:where([data-component~="ui-tooltip"])[hidden] {
13515
- display: none;
13516
- }
13971
+ /* No text-box-trim here: trimming a native input's line box below its line height lets the text
13972
+ * scroll vertically inside the field. Native inputs already center their single line. */
13517
13973
 
13518
- @media (prefers-reduced-motion: reduce) {
13519
- :scope:where([data-component~="ui-tooltip"]) {
13520
- transition: none;
13521
- }
13974
+ /* A component that sets its display still honours the hidden attribute on its root. */
13975
+ :scope:where([data-component~="ui-input"])[hidden] {
13976
+ display: none;
13522
13977
  }
13523
13978
  }
13524
- @scope ([data-component~="ui-tooltip"]) to ([data-component]) {
13525
- /* This component's hooks style the element they are set on, and never a nested one. */
13526
-
13527
- /* The label and the shortcut sit side by side, a gap apart, with the label wrapping on its own. */
13979
+ @scope ([data-component~="ui-input"]) to ([data-component]) {
13980
+ /* This component's hooks style the element they are set on, and never a nested one. An Input
13981
+ Group sets --_ui-default-input-* for the input inside it, below the input's own hooks. */
13528
13982
 
13529
- /* A keyboard shortcut follows the label after a thin divider, smaller and quieter, as menus show
13530
- it. The label stays first in the description, so a screen reader hears the name, then the keys. */
13983
+ /* Each size reads the hook and then an Input Group's default first, so a group, which draws the frame, can zero it. */
13531
13984
 
13532
- /* A <kbd> takes the browser's monospace; the hint reads in the tooltip's own type. */
13533
- .shortcut :where([data-slotted], [data-slotted] *):is(kbd) {
13534
- font: inherit;
13985
+ /* Under touch a small field is still a touch-sized target, as a small button is, and keeps
13986
+ body-size text: below 16px, iOS zooms the page into the focused field. */
13987
+ @media (pointer: coarse) {
13535
13988
  }
13536
13989
 
13537
- /* A rotated square shares the surface fill and draws the two outward border edges. Its centre sits on
13538
- * the surface border line, so the fill covers that stretch of border and the outline runs unbroken. */
13990
+ /* Tabbing into a field selects its text; tint that selection softly instead of the page highlight. */
13539
13991
 
13540
- @starting-style {
13541
- }
13992
+ /* The app's invalid flag, or the browser's own verdict once the user has left an invalid field. */
13542
13993
 
13543
- @media (prefers-reduced-motion: reduce) {
13994
+ /* Forced colors drop box shadows, so the focus ring becomes an outline. */
13995
+ @media (forced-colors: active) {
13544
13996
  }
13997
+
13998
+ /* No text-box-trim here: trimming a native input's line box below its line height lets the text
13999
+ * scroll vertically inside the field. Native inputs already center their single line. */
14000
+
14001
+ /* A component that sets its display still honours the hidden attribute on its root. */
13545
14002
  }
13546
- /* Generated by HTML Next 1.0.0-alpha.55. Do not edit. */
14003
+ /* Generated by HTML Next 1.0.0-alpha.57. Do not edit. */
13547
14004
  @supports (-moz-appearance: none) {
13548
14005
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
13549
14006
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
@@ -13598,7 +14055,7 @@ html[data-ui-input-modality="touch"]
13598
14055
 
13599
14056
  /* The root is the hr, so the rules name :host; a bare hr matches only a descendant. */
13600
14057
  }
13601
- /* Generated by HTML Next 1.0.0-alpha.55. Do not edit. */
14058
+ /* Generated by HTML Next 1.0.0-alpha.57. Do not edit. */
13602
14059
  @supports (-moz-appearance: none) {
13603
14060
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
13604
14061
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
@@ -13778,4 +14235,164 @@ html[data-ui-input-modality="touch"]
13778
14235
 
13779
14236
  /* A component that sets its display still honours the hidden attribute on its root. */
13780
14237
  }
14238
+ /* Generated by HTML Next 1.0.0-alpha.57. Do not edit. */
14239
+ @supports (-moz-appearance: none) {
14240
+ :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
14241
+ :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
14242
+ }
14243
+ @supports (-moz-appearance: none) {
14244
+ [data-component~="ui-image"] { --html-next-scope-owner: "ui-image" !important; }
14245
+ }
14246
+ @scope ([data-component~="ui-image"]) to ([data-component], [data-slotted]) {
14247
+ :scope:where([data-component~="ui-image"]) {
14248
+ display: flex;
14249
+ justify-content: flex-start;
14250
+ box-sizing: border-box;
14251
+ max-inline-size: 100%;
14252
+ min-inline-size: 0;
14253
+ margin: 0;
14254
+ padding: var(--ui-space-3) 0;
14255
+ }
14256
+ :scope:where([data-component~="ui-image"])[data-ui-image-state~="placement=center"] {
14257
+ justify-content: center;
14258
+ }
14259
+ :scope:where([data-component~="ui-image"])[data-ui-image-state~="placement=wrap-left"] {
14260
+ float: left;
14261
+ padding-inline-end: var(--ui-space-4);
14262
+ }
14263
+ :scope:where([data-component~="ui-image"])[data-ui-image-state~="placement=wrap-right"] {
14264
+ float: right;
14265
+ padding-inline-start: var(--ui-space-4);
14266
+ }
14267
+ :scope:where([data-component~="ui-image"]):is(:scope:where([data-component~="ui-image"])[data-ui-image-state~="placement=wrap-left"], :scope:where([data-component~="ui-image"])[data-ui-image-state~="placement=wrap-right"]) {
14268
+ inline-size: calc(var(--_ui-image-width, calc(100% / 3)) + var(--ui-space-4));
14269
+ }
14270
+ :scope:where([data-component~="ui-image"]):is(:scope:where([data-component~="ui-image"])[data-ui-image-state~="placement=wrap-left"], :scope:where([data-component~="ui-image"])[data-ui-image-state~="placement=wrap-right"]) .frame {
14271
+ inline-size: 100%;
14272
+ }
14273
+ .frame {
14274
+ position: relative;
14275
+ flex: 0 1 auto;
14276
+ inline-size: var(--_ui-image-width, fit-content);
14277
+ max-inline-size: 100%;
14278
+ min-inline-size: 0;
14279
+ align-self: flex-start;
14280
+ border-radius: var(--ui-radius-md);
14281
+ }
14282
+ :scope:where([data-component~="ui-image"])[data-ui-image-state~="selected"] .frame {
14283
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring);
14284
+ outline-offset: var(--ui-border-width);
14285
+ }
14286
+ .handle {
14287
+ position: absolute;
14288
+ z-index: 1;
14289
+ inline-size: 24px;
14290
+ block-size: 24px;
14291
+ padding: 0;
14292
+ border: 0;
14293
+ background: transparent;
14294
+ touch-action: none;
14295
+ }
14296
+ .handle:where(:not([data-component], [data-slotted]))::after {
14297
+ content: "";
14298
+ position: absolute;
14299
+ inset: 8px;
14300
+ background: var(--ui-surface);
14301
+ border: var(--ui-border-width) solid var(--ui-focus-ring);
14302
+ border-radius: var(--ui-radius-sm);
14303
+ }
14304
+ .handle:focus-visible {
14305
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring);
14306
+ border-radius: var(--ui-radius-sm);
14307
+ }
14308
+ .handle[data-corner="top-left"] {
14309
+ top: -12px;
14310
+ left: -12px;
14311
+ cursor: nwse-resize;
14312
+ }
14313
+ .handle[data-corner="top-right"] {
14314
+ top: -12px;
14315
+ right: -12px;
14316
+ cursor: nesw-resize;
14317
+ }
14318
+ .handle[data-corner="bottom-left"] {
14319
+ bottom: -12px;
14320
+ left: -12px;
14321
+ cursor: nesw-resize;
14322
+ }
14323
+ .handle[data-corner="bottom-right"] {
14324
+ bottom: -12px;
14325
+ right: -12px;
14326
+ cursor: nwse-resize;
14327
+ }
14328
+ .handles[hidden], :scope:where([data-component~="ui-image"])[hidden] {
14329
+ display: none;
14330
+ }
14331
+ @media (max-width: 767px) {
14332
+ :scope:where([data-component~="ui-image"]):is(:scope:where([data-component~="ui-image"])[data-ui-image-state~="placement=wrap-left"], :scope:where([data-component~="ui-image"])[data-ui-image-state~="placement=wrap-right"]) {
14333
+ float: none;
14334
+ inline-size: 100%;
14335
+ padding-inline: 0;
14336
+ }
14337
+ :scope:where([data-component~="ui-image"]):is(:scope:where([data-component~="ui-image"])[data-ui-image-state~="placement=wrap-left"], :scope:where([data-component~="ui-image"])[data-ui-image-state~="placement=wrap-right"]) .handles {
14338
+ display: none;
14339
+ }
14340
+ }
14341
+ @media (pointer: coarse) {
14342
+ .handle {
14343
+ inline-size: 44px;
14344
+ block-size: 44px;
14345
+ }
14346
+ .handle:where(:not([data-component], [data-slotted]))::after {
14347
+ inset: 18px;
14348
+ }
14349
+ .handle[data-corner="top-left"] {
14350
+ top: -22px;
14351
+ left: -22px;
14352
+ }
14353
+ .handle[data-corner="top-right"] {
14354
+ top: -22px;
14355
+ right: -22px;
14356
+ }
14357
+ .handle[data-corner="bottom-left"] {
14358
+ bottom: -22px;
14359
+ left: -22px;
14360
+ }
14361
+ .handle[data-corner="bottom-right"] {
14362
+ bottom: -22px;
14363
+ right: -22px;
14364
+ }
14365
+ }
14366
+ @media (forced-colors: active) {
14367
+ :scope:where([data-component~="ui-image"])[data-ui-image-state~="selected"] .frame, .handle:focus-visible {
14368
+ outline-color: Highlight;
14369
+ }
14370
+ .handle:where(:not([data-component], [data-slotted]))::after {
14371
+ border-color: Highlight;
14372
+ background: Canvas;
14373
+ }
14374
+ }
14375
+ }
14376
+ @scope ([data-component~="ui-image"]) to ([data-component]) {
14377
+ :scope:where([data-component~="ui-image"]):is(:scope:where([data-component~="ui-image"])[data-ui-image-state~="placement=wrap-left"], :scope:where([data-component~="ui-image"])[data-ui-image-state~="placement=wrap-right"]) .frame img,
14378
+ :scope:where([data-component~="ui-image"]):is(:scope:where([data-component~="ui-image"])[data-ui-image-state~="placement=wrap-left"], :scope:where([data-component~="ui-image"])[data-ui-image-state~="placement=wrap-right"]) .frame :where([data-slotted], [data-slotted] *):is(img) {
14379
+ inline-size: 100%;
14380
+ }
14381
+ .frame img, .frame :where([data-slotted], [data-slotted] *):is(img) {
14382
+ display: block;
14383
+ max-inline-size: 100%;
14384
+ block-size: auto;
14385
+ margin: 0;
14386
+ border-radius: inherit;
14387
+ }
14388
+ :scope:where([data-component~="ui-image"])[data-resizing] .frame img, :scope:where([data-component~="ui-image"])[data-resizing] .frame :where([data-slotted], [data-slotted] *):is(img) {
14389
+ inline-size: 100%;
14390
+ }
14391
+ @media (max-width: 767px) {
14392
+ }
14393
+ @media (pointer: coarse) {
14394
+ }
14395
+ @media (forced-colors: active) {
14396
+ }
14397
+ }
13781
14398
  /*$vite$:1*/