@threadlabs/looma 0.14.8 → 0.15.1

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 (343) hide show
  1. package/components/shared/icons.js +5 -0
  2. package/components/shared/menu-navigation.js +49 -0
  3. package/components/shared/overlay.js +33 -60
  4. package/components/ui-avatar/ui-avatar.html +19 -2
  5. package/components/ui-avatar/ui-avatar.js +7 -1
  6. package/components/ui-avatar-group/ui-avatar-group.html +8 -3
  7. package/components/ui-avatar-group/ui-avatar-group.js +6 -2
  8. package/components/ui-badge/ui-badge.html +70 -4
  9. package/components/ui-button/ui-button.html +21 -5
  10. package/components/ui-button/ui-button.js +10 -0
  11. package/components/ui-callout/ui-callout.html +13 -5
  12. package/components/ui-checkbox/ui-checkbox.html +11 -0
  13. package/components/ui-cluster/ui-cluster.html +7 -0
  14. package/components/ui-combobox/ui-combobox.html +46 -10
  15. package/components/ui-combobox/ui-combobox.js +5 -5
  16. package/components/ui-context-menu/ui-context-menu.html +33 -5
  17. package/components/ui-context-menu/ui-context-menu.js +26 -17
  18. package/components/ui-dialog/ui-dialog.html +51 -8
  19. package/components/ui-dialog/ui-dialog.js +28 -7
  20. package/components/ui-disclosure/ui-disclosure.html +14 -5
  21. package/components/ui-disclosure/ui-disclosure.js +51 -4
  22. package/components/ui-editable/ui-editable.html +17 -3
  23. package/components/ui-editable/ui-editable.js +7 -0
  24. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +48 -14
  25. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.js +40 -6
  26. package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +22 -9
  27. package/components/ui-editor-mention-menu/ui-editor-mention-menu.js +33 -11
  28. package/components/ui-editor-mention-menu-item/ui-editor-mention-menu-item.html +67 -0
  29. package/components/ui-editor-slash-menu/ui-editor-slash-menu.html +33 -30
  30. package/components/ui-editor-slash-menu/ui-editor-slash-menu.js +42 -8
  31. package/components/ui-editor-slash-menu-group/ui-editor-slash-menu-group.html +31 -0
  32. package/components/ui-editor-slash-menu-item/ui-editor-slash-menu-item.html +75 -0
  33. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +16 -5
  34. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.js +10 -2
  35. package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +5 -5
  36. package/components/ui-editor-table-overlay/ui-editor-table-overlay.js +5 -2
  37. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +14 -4
  38. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.js +2 -2
  39. package/components/ui-editor-toolbar/ui-editor-toolbar.html +1 -1
  40. package/components/ui-editor-toolbar/ui-editor-toolbar.js +46 -0
  41. package/components/ui-floating-action-button/ui-floating-action-button.html +1 -1
  42. package/components/ui-form-field/ui-form-field.html +16 -3
  43. package/components/ui-form-field/ui-form-field.js +1 -1
  44. package/components/ui-grid/ui-grid.html +17 -2
  45. package/components/ui-icon/ui-icon.html +5 -0
  46. package/components/ui-icon-button/ui-icon-button.html +25 -6
  47. package/components/ui-icon-button/ui-icon-button.js +11 -1
  48. package/components/ui-input/ui-input.html +3 -3
  49. package/components/ui-input-group/ui-input-group.html +18 -4
  50. package/components/ui-listbox/ui-listbox.html +81 -0
  51. package/components/ui-listbox/ui-listbox.js +27 -0
  52. package/components/ui-menu/ui-menu.html +33 -5
  53. package/components/ui-menu/ui-menu.js +18 -12
  54. package/components/ui-menu-group/ui-menu-group.html +27 -0
  55. package/components/ui-menu-item/ui-menu-item.html +80 -8
  56. package/components/ui-menu-item/ui-menu-item.js +47 -0
  57. package/components/ui-popover/ui-popover.html +33 -5
  58. package/components/ui-popover/ui-popover.js +9 -1
  59. package/components/ui-radio-group/ui-radio-group.html +13 -1
  60. package/components/ui-search-shell/ui-search-shell.html +6 -6
  61. package/components/ui-search-shell/ui-search-shell.js +21 -5
  62. package/components/ui-select/ui-select.html +14 -4
  63. package/components/ui-switch/ui-switch.html +2 -2
  64. package/components/ui-switcher/ui-switcher.html +8 -1
  65. package/components/ui-switcher/ui-switcher.js +15 -0
  66. package/components/ui-tabs/ui-tabs.html +17 -12
  67. package/components/ui-tabs/ui-tabs.js +43 -7
  68. package/components/ui-textarea/ui-textarea.html +28 -5
  69. package/components/ui-toast/ui-toast.html +88 -0
  70. package/components/ui-toast/ui-toast.js +68 -0
  71. package/components/ui-toast-region/ui-toast-region.html +102 -19
  72. package/components/ui-toast-region/ui-toast-region.js +10 -18
  73. package/components/ui-tooltip/ui-tooltip.html +51 -7
  74. package/components/ui-tooltip/ui-tooltip.js +29 -3
  75. package/components/ui-tree/ui-tree.html +12 -0
  76. package/components/ui-tree/ui-tree.js +191 -12
  77. package/components/ui-tree-item/ui-tree-item.html +87 -8
  78. package/components/ui-tree-item/ui-tree-item.js +3 -1
  79. package/dist/index.js +38 -32
  80. package/editor/chunks/extensions.js +82 -2
  81. package/editor/extensions/table-commands.d.ts +8 -0
  82. package/editor/icons.d.ts +5 -0
  83. package/editor/index.js +7 -2
  84. package/editor/insert-table-grid.d.ts +1 -1
  85. package/editor/mention-menu.d.ts +2 -0
  86. package/editor/slash-menu.d.ts +3 -0
  87. package/editor/table-context-menu.d.ts +1 -1
  88. package/editor/table-overlay.d.ts +2 -2
  89. package/package.json +1 -1
  90. package/styles/ui-avatar-group.css +1 -2
  91. package/styles/ui-avatar.css +11 -1
  92. package/styles/ui-badge.css +73 -1
  93. package/styles/ui-button.css +9 -1
  94. package/styles/ui-callout.css +1 -1
  95. package/styles/ui-checkbox.css +9 -0
  96. package/styles/ui-cluster.css +3 -0
  97. package/styles/ui-combobox.css +38 -7
  98. package/styles/ui-context-menu.css +32 -4
  99. package/styles/ui-dialog.css +42 -5
  100. package/styles/ui-editor-insert-table-grid.css +48 -11
  101. package/styles/ui-editor-mention-menu-item.css +57 -0
  102. package/styles/ui-editor-mention-menu.css +11 -1
  103. package/styles/ui-editor-slash-menu-group.css +21 -0
  104. package/styles/ui-editor-slash-menu-item.css +62 -0
  105. package/styles/ui-editor-slash-menu.css +10 -21
  106. package/styles/ui-editor-table-context-menu.css +1 -1
  107. package/styles/ui-floating-action-button.css +1 -1
  108. package/styles/ui-form-field.css +14 -1
  109. package/styles/ui-grid.css +14 -1
  110. package/styles/ui-icon-button.css +17 -5
  111. package/styles/ui-input-group.css +18 -4
  112. package/styles/ui-input.css +3 -3
  113. package/styles/ui-listbox.css +69 -0
  114. package/styles/ui-menu-group.css +19 -0
  115. package/styles/ui-menu-item.css +48 -9
  116. package/styles/ui-menu.css +32 -4
  117. package/styles/ui-popover.css +28 -4
  118. package/styles/ui-radio-group.css +9 -0
  119. package/styles/ui-search-shell.css +5 -5
  120. package/styles/ui-select.css +14 -4
  121. package/styles/ui-switch.css +2 -2
  122. package/styles/ui-switcher.css +4 -0
  123. package/styles/ui-textarea.css +27 -4
  124. package/styles/ui-toast-region.css +88 -4
  125. package/styles/ui-toast.css +74 -0
  126. package/styles/ui-tooltip.css +46 -6
  127. package/styles/ui-tree-item.css +72 -4
  128. package/styles/ui-tree.css +8 -0
  129. package/tokens.css +3 -0
  130. package/vanilla/UiAvatar.d.ts +2 -0
  131. package/vanilla/UiAvatar.js +8 -1
  132. package/vanilla/UiAvatarGroup.d.ts +2 -0
  133. package/vanilla/UiAvatarGroup.js +1 -1
  134. package/vanilla/UiBadge.d.ts +1 -1
  135. package/vanilla/UiBadge.js +1 -1
  136. package/vanilla/UiButton.d.ts +1 -0
  137. package/vanilla/UiButton.js +22 -6
  138. package/vanilla/UiCallout.d.ts +1 -1
  139. package/vanilla/UiCallout.js +1 -1
  140. package/vanilla/UiCheckbox.d.ts +1 -0
  141. package/vanilla/UiCheckbox.js +12 -9
  142. package/vanilla/UiCluster.d.ts +1 -0
  143. package/vanilla/UiCluster.js +2 -0
  144. package/vanilla/UiCombobox.d.ts +3 -0
  145. package/vanilla/UiCombobox.js +30 -15
  146. package/vanilla/UiContextMenu.d.ts +1 -1
  147. package/vanilla/UiContextMenu.js +1 -1
  148. package/vanilla/UiDialog.d.ts +5 -2
  149. package/vanilla/UiDialog.js +1 -1
  150. package/vanilla/UiDisclosure.d.ts +2 -0
  151. package/vanilla/UiDisclosure.js +32 -18
  152. package/vanilla/UiEditable.d.ts +5 -0
  153. package/vanilla/UiEditable.js +7 -3
  154. package/vanilla/UiEditorInsertTableGrid.js +1 -6
  155. package/vanilla/UiEditorMentionMenu.d.ts +4 -2
  156. package/vanilla/UiEditorMentionMenu.js +49 -31
  157. package/vanilla/UiEditorMentionMenuItem.d.ts +16 -0
  158. package/vanilla/UiEditorMentionMenuItem.js +56 -0
  159. package/vanilla/UiEditorSlashMenu.d.ts +4 -3
  160. package/vanilla/UiEditorSlashMenu.js +59 -46
  161. package/vanilla/UiEditorSlashMenuGroup.d.ts +14 -0
  162. package/vanilla/UiEditorSlashMenuGroup.js +48 -0
  163. package/vanilla/UiEditorSlashMenuItem.d.ts +18 -0
  164. package/vanilla/UiEditorSlashMenuItem.js +57 -0
  165. package/vanilla/UiEditorTableContextMenu.d.ts +5 -2
  166. package/vanilla/UiEditorTableContextMenu.js +1 -2
  167. package/vanilla/UiEditorTableOverlay.d.ts +1 -1
  168. package/vanilla/UiEditorTableOverlay.js +5 -5
  169. package/vanilla/UiEditorTableToolbar.d.ts +4 -2
  170. package/vanilla/UiEditorTableToolbar.js +1 -2
  171. package/vanilla/UiEditorToolbar.js +2 -0
  172. package/vanilla/UiGrid.d.ts +1 -0
  173. package/vanilla/UiGrid.js +8 -7
  174. package/vanilla/UiIcon.js +1 -1
  175. package/vanilla/UiIconButton.d.ts +1 -0
  176. package/vanilla/UiIconButton.js +11 -2
  177. package/vanilla/UiListbox.d.ts +20 -0
  178. package/vanilla/UiListbox.js +45 -0
  179. package/vanilla/UiMenu.d.ts +1 -1
  180. package/vanilla/UiMenu.js +1 -1
  181. package/vanilla/UiMenuGroup.d.ts +14 -0
  182. package/vanilla/UiMenuGroup.js +35 -0
  183. package/vanilla/UiMenuItem.d.ts +5 -1
  184. package/vanilla/UiMenuItem.js +91 -30
  185. package/vanilla/UiPopover.d.ts +1 -1
  186. package/vanilla/UiPopover.js +1 -1
  187. package/vanilla/UiRadioGroup.d.ts +1 -0
  188. package/vanilla/UiRadioGroup.js +6 -3
  189. package/vanilla/UiSwitcher.d.ts +1 -0
  190. package/vanilla/UiSwitcher.js +7 -9
  191. package/vanilla/UiTabs.d.ts +1 -0
  192. package/vanilla/UiTabs.js +9 -1
  193. package/vanilla/UiTextarea.d.ts +1 -0
  194. package/vanilla/UiTextarea.js +4 -1
  195. package/vanilla/UiToast.d.ts +16 -0
  196. package/vanilla/UiToast.js +53 -0
  197. package/vanilla/UiToastRegion.d.ts +1 -4
  198. package/vanilla/UiToastRegion.js +3 -11
  199. package/vanilla/UiTooltip.d.ts +1 -1
  200. package/vanilla/UiTooltip.js +1 -1
  201. package/vanilla/UiTree.d.ts +2 -0
  202. package/vanilla/UiTree.js +1 -1
  203. package/vanilla/UiTreeItem.d.ts +1 -0
  204. package/vanilla/UiTreeItem.js +45 -31
  205. package/vanilla/index.js +6 -0
  206. package/vue/UiAvatar.d.ts +4 -0
  207. package/vue/UiAvatar.vue +23 -3
  208. package/vue/UiAvatarGroup.d.ts +3 -0
  209. package/vue/UiAvatarGroup.vue +7 -4
  210. package/vue/UiBadge.d.ts +2 -2
  211. package/vue/UiBadge.vue +74 -2
  212. package/vue/UiButton.d.ts +5 -3
  213. package/vue/UiButton.vue +41 -7
  214. package/vue/UiCallout.d.ts +2 -2
  215. package/vue/UiCallout.vue +3 -2
  216. package/vue/UiCheckbox.d.ts +2 -0
  217. package/vue/UiCheckbox.vue +16 -0
  218. package/vue/UiCluster.d.ts +1 -0
  219. package/vue/UiCluster.vue +5 -0
  220. package/vue/UiCombobox.d.ts +11 -3
  221. package/vue/UiCombobox.vue +60 -11
  222. package/vue/UiContextMenu.d.ts +2 -0
  223. package/vue/UiContextMenu.vue +47 -6
  224. package/vue/UiDialog.d.ts +18 -4
  225. package/vue/UiDialog.vue +86 -11
  226. package/vue/UiDisclosure.d.ts +8 -2
  227. package/vue/UiDisclosure.vue +38 -14
  228. package/vue/UiEditable.d.ts +10 -0
  229. package/vue/UiEditable.vue +14 -2
  230. package/vue/UiEditorInsertTableGrid.vue +52 -15
  231. package/vue/UiEditorMentionMenu.d.ts +24 -2
  232. package/vue/UiEditorMentionMenu.vue +27 -11
  233. package/vue/UiEditorMentionMenuItem.d.ts +24 -0
  234. package/vue/UiEditorMentionMenuItem.js +2 -0
  235. package/vue/UiEditorMentionMenuItem.vue +88 -0
  236. package/vue/UiEditorSlashMenu.d.ts +24 -1
  237. package/vue/UiEditorSlashMenu.vue +33 -33
  238. package/vue/UiEditorSlashMenuGroup.d.ts +18 -0
  239. package/vue/UiEditorSlashMenuGroup.js +2 -0
  240. package/vue/UiEditorSlashMenuGroup.vue +43 -0
  241. package/vue/UiEditorSlashMenuItem.d.ts +26 -0
  242. package/vue/UiEditorSlashMenuItem.js +2 -0
  243. package/vue/UiEditorSlashMenuItem.vue +101 -0
  244. package/vue/UiEditorTableContextMenu.d.ts +9 -3
  245. package/vue/UiEditorTableContextMenu.vue +53 -3
  246. package/vue/UiEditorTableOverlay.d.ts +2 -2
  247. package/vue/UiEditorTableOverlay.vue +8 -6
  248. package/vue/UiEditorTableToolbar.d.ts +7 -3
  249. package/vue/UiEditorTableToolbar.vue +50 -2
  250. package/vue/UiEditorToolbar.vue +14 -1
  251. package/vue/UiFloatingActionButton.vue +1 -1
  252. package/vue/UiFormField.vue +28 -3
  253. package/vue/UiGrid.d.ts +1 -0
  254. package/vue/UiGrid.vue +26 -2
  255. package/vue/UiIcon.vue +16 -0
  256. package/vue/UiIconButton.d.ts +5 -3
  257. package/vue/UiIconButton.vue +40 -6
  258. package/vue/UiInput.vue +10 -3
  259. package/vue/UiInputGroup.vue +32 -11
  260. package/vue/UiListbox.d.ts +33 -0
  261. package/vue/UiListbox.js +2 -0
  262. package/vue/UiListbox.vue +131 -0
  263. package/vue/UiMenu.d.ts +2 -0
  264. package/vue/UiMenu.vue +43 -6
  265. package/vue/UiMenuGroup.d.ts +18 -0
  266. package/vue/UiMenuGroup.js +2 -0
  267. package/vue/UiMenuGroup.vue +39 -0
  268. package/vue/UiMenuItem.d.ts +34 -2
  269. package/vue/UiMenuItem.vue +145 -9
  270. package/vue/UiPopover.d.ts +2 -2
  271. package/vue/UiPopover.vue +44 -5
  272. package/vue/UiRadioGroup.d.ts +2 -0
  273. package/vue/UiRadioGroup.vue +17 -0
  274. package/vue/UiSearchShell.vue +12 -5
  275. package/vue/UiSelect.vue +18 -4
  276. package/vue/UiSwitch.vue +2 -2
  277. package/vue/UiSwitcher.d.ts +1 -0
  278. package/vue/UiSwitcher.vue +22 -1
  279. package/vue/UiTabs.d.ts +6 -2
  280. package/vue/UiTabs.vue +14 -12
  281. package/vue/UiTextarea.d.ts +2 -0
  282. package/vue/UiTextarea.vue +32 -4
  283. package/vue/UiToast.d.ts +34 -0
  284. package/vue/UiToast.js +2 -0
  285. package/vue/UiToast.vue +173 -0
  286. package/vue/UiToastRegion.d.ts +2 -18
  287. package/vue/UiToastRegion.vue +123 -48
  288. package/vue/UiTooltip.d.ts +2 -2
  289. package/vue/UiTooltip.vue +67 -12
  290. package/vue/UiTree.d.ts +10 -0
  291. package/vue/UiTree.vue +27 -0
  292. package/vue/UiTreeItem.d.ts +2 -0
  293. package/vue/UiTreeItem.vue +96 -4
  294. package/vue/chunks/UiAvatar.js +19 -5
  295. package/vue/chunks/UiAvatarGroup.js +10 -4
  296. package/vue/chunks/UiBadge.js +1 -1
  297. package/vue/chunks/UiButton.js +58 -11
  298. package/vue/chunks/UiCallout.js +2 -2
  299. package/vue/chunks/UiCheckbox.js +12 -2
  300. package/vue/chunks/UiCluster.js +5 -3
  301. package/vue/chunks/UiCombobox.js +29 -13
  302. package/vue/chunks/UiContextMenu.js +6 -2
  303. package/vue/chunks/UiDialog.js +25 -8
  304. package/vue/chunks/UiDisclosure.js +36 -12
  305. package/vue/chunks/UiEditable.js +22 -8
  306. package/vue/chunks/UiEditorInsertTableGrid.js +11 -14
  307. package/vue/chunks/UiEditorMentionMenu.js +30 -19
  308. package/vue/chunks/UiEditorMentionMenuItem.js +36 -0
  309. package/vue/chunks/UiEditorSlashMenu.js +33 -35
  310. package/vue/chunks/UiEditorSlashMenuGroup.js +26 -0
  311. package/vue/chunks/UiEditorSlashMenuItem.js +51 -0
  312. package/vue/chunks/UiEditorTableContextMenu.js +39 -5
  313. package/vue/chunks/UiEditorTableOverlay.js +6 -6
  314. package/vue/chunks/UiEditorTableToolbar.js +37 -4
  315. package/vue/chunks/UiEditorToolbar.js +18 -4
  316. package/vue/chunks/UiFloatingActionButton.js +1 -1
  317. package/vue/chunks/UiFormField.js +13 -9
  318. package/vue/chunks/UiGrid.js +6 -2
  319. package/vue/chunks/UiIcon.js +40 -2
  320. package/vue/chunks/UiIconButton.js +35 -4
  321. package/vue/chunks/UiInput.js +1 -1
  322. package/vue/chunks/UiInputGroup.js +1 -1
  323. package/vue/chunks/UiListbox.js +70 -0
  324. package/vue/chunks/UiMenu.js +6 -2
  325. package/vue/chunks/UiMenuGroup.js +25 -0
  326. package/vue/chunks/UiMenuItem.js +128 -7
  327. package/vue/chunks/UiPopover.js +1 -1
  328. package/vue/chunks/UiRadioGroup.js +8 -2
  329. package/vue/chunks/UiSearchShell.js +1 -1
  330. package/vue/chunks/UiSelect.js +1 -1
  331. package/vue/chunks/UiSwitch.js +1 -1
  332. package/vue/chunks/UiSwitcher.js +20 -3
  333. package/vue/chunks/UiTabs.js +4 -3
  334. package/vue/chunks/UiTextarea.js +7 -2
  335. package/vue/chunks/UiToast.js +81 -0
  336. package/vue/chunks/UiToastRegion.js +25 -49
  337. package/vue/chunks/UiTooltip.js +3 -7
  338. package/vue/chunks/UiTree.js +8 -4
  339. package/vue/chunks/UiTreeItem.js +28 -10
  340. package/vue/components.css +1856 -864
  341. package/vue/editor/index.js +263 -2
  342. package/vue/index.d.ts +6 -0
  343. package/vue/index.js +9 -3
@@ -0,0 +1,69 @@
1
+ /* Generated by HTML Next 1.0.0-alpha.7. Do not edit. */
2
+ @property --ui-listbox-radius {
3
+ syntax: "*";
4
+ inherits: false;
5
+ }
6
+ @property --ui-listbox-border {
7
+ syntax: "*";
8
+ inherits: false;
9
+ }
10
+ @property --ui-listbox-surface {
11
+ syntax: "*";
12
+ inherits: false;
13
+ }
14
+ @property --ui-listbox-focus-shadow {
15
+ syntax: "*";
16
+ inherits: false;
17
+ }
18
+ @property --ui-listbox-invalid-border {
19
+ syntax: "*";
20
+ inherits: false;
21
+ }
22
+ @scope ([data-component~="ui-listbox"]) to ([data-component], [data-slotted]) {
23
+ :scope {
24
+ box-sizing: border-box;
25
+ display: block;
26
+ inline-size: 100%;
27
+ min-inline-size: 0;
28
+ min-block-size: var(--ui-control-min-block-size);
29
+ margin: 0;
30
+ padding: var(--ui-space-1);
31
+ border: 1px solid var(--ui-listbox-border, var(--ui-control-border));
32
+ border-radius: var(--ui-listbox-radius, var(--ui-field-radius, var(--ui-radius-md)));
33
+ background: var(--ui-listbox-surface, var(--ui-control-surface));
34
+ color: var(--ui-text-primary);
35
+ color-scheme: light dark;
36
+ font: inherit;
37
+ line-height: var(--ui-line-height-md);
38
+ box-shadow: var(--ui-control-inset);
39
+ }
40
+
41
+ :scope option,
42
+ :scope optgroup {
43
+ padding: var(--ui-space-2);
44
+ font: inherit;
45
+ }
46
+
47
+ :scope:focus-visible {
48
+ border-color: var(--ui-control-focus);
49
+ outline: 2px solid var(--ui-focus-ring);
50
+ outline-offset: 2px;
51
+ box-shadow: var(--ui-listbox-focus-shadow, var(--ui-focus-halo));
52
+ }
53
+
54
+ :scope[aria-invalid="true"],
55
+ :scope:is(:user-invalid, [data-user-invalid]) {
56
+ border-color: var(--ui-listbox-invalid-border, var(--ui-field-danger, var(--ui-danger)));
57
+ }
58
+
59
+ :scope:disabled {
60
+ background: var(--ui-control-surface-disabled);
61
+ color: var(--ui-disabled-text);
62
+ box-shadow: none;
63
+ cursor: not-allowed;
64
+ }
65
+
66
+ :scope[hidden] {
67
+ display: none;
68
+ }
69
+ }
@@ -0,0 +1,19 @@
1
+ /* Generated by HTML Next 1.0.0-alpha.7. Do not edit. */
2
+ @scope ([data-component~="ui-menu-group"]) to ([data-component], [data-slotted]) {
3
+ :scope {
4
+ display: flex;
5
+ flex-direction: column;
6
+ min-inline-size: 0;
7
+ }
8
+
9
+ .heading {
10
+ padding: var(--ui-space-2) var(--ui-space-3) var(--ui-space-1);
11
+ color: var(--ui-text-muted);
12
+ font-size: var(--ui-font-size-sm);
13
+ font-weight: var(--ui-font-semibold);
14
+ }
15
+
16
+ :scope[hidden] {
17
+ display: none;
18
+ }
19
+ }
@@ -27,7 +27,9 @@
27
27
  /* This component's hooks style the element they are set on, and never a nested one. */
28
28
 
29
29
  :scope {
30
- display: block;
30
+ display: flex;
31
+ align-items: center;
32
+ gap: var(--ui-space-5);
31
33
  box-sizing: border-box;
32
34
  width: 100%;
33
35
  padding: var(--ui-menu-item-padding-block, var(--_ui-default-menu-item-padding-block, var(--ui-space-2)))
@@ -37,19 +39,44 @@
37
39
  color: var(--ui-text-primary);
38
40
  font-size: var(--ui-menu-item-font-size, var(--_ui-default-menu-item-font-size, var(--ui-font-size-md)));
39
41
  font-weight: var(--ui-font-medium);
42
+ text-decoration: none;
40
43
  cursor: pointer;
41
44
  outline: none;
42
45
  transition: background-color var(--ui-motion-fast) var(--ui-motion-ease), color var(--ui-motion-fast) var(--ui-motion-ease);
43
46
  }
44
47
 
45
- /* Centre the glyphs, not the line box: a label without descenders otherwise reads high. */
46
- /* Centre the glyphs, not the line box: a label without descenders otherwise reads high.
47
- * Trimming applies to block containers, so the box is a block with centred content. */
48
+ .label {
49
+ flex: 1;
50
+ min-inline-size: 0;
51
+ }
52
+
53
+ .indicator {
54
+ display: inline-flex;
55
+ place-items: center;
56
+ flex: none;
57
+ inline-size: var(--ui-icon-size-md);
58
+ color: var(--ui-accent-solid);
59
+ }
60
+
61
+ :scope[data-ui-menu-item-state~="type=action"] .indicator {
62
+ display: none;
63
+ }
64
+
65
+ .shortcut {
66
+ margin-inline-start: auto;
67
+ color: var(--ui-text-secondary);
68
+ font-size: var(--ui-font-size-sm);
69
+ font-weight: var(--ui-font-normal);
70
+ }
71
+
72
+ .shortcut:empty {
73
+ display: none;
74
+ }
75
+
76
+ /* Keep the text row at the shared control height where cap trimming is available. */
48
77
  @supports (text-box-trim: trim-both) {
49
78
  :scope {
50
- display: block;
51
79
  min-block-size: var(--ui-menu-item-min-block-size, var(--ui-control-size-md, 2.5rem));
52
- align-content: center;
53
80
  text-box-trim: trim-both;
54
81
  text-box-edge: cap alphabetic;
55
82
  }
@@ -59,11 +86,22 @@
59
86
  background: var(--ui-menu-item-hover-surface, var(--ui-surface-subtle));
60
87
  }
61
88
 
89
+ :scope:focus-visible {
90
+ outline: 2px solid var(--ui-focus-ring);
91
+ outline-offset: -2px;
92
+ }
93
+
62
94
  :scope[aria-disabled="true"] {
63
95
  opacity: 0.6;
64
96
  cursor: not-allowed;
65
97
  }
66
98
 
99
+ @media (forced-colors: active) {
100
+ :scope:focus-visible {
101
+ outline-color: Highlight;
102
+ }
103
+ }
104
+
67
105
  /* A component that sets its display still honours the hidden attribute on its root. */
68
106
  :scope[hidden] {
69
107
  display: none;
@@ -72,11 +110,12 @@
72
110
  @scope ([data-component~="ui-menu-item"]) to ([data-component]) {
73
111
  /* This component's hooks style the element they are set on, and never a nested one. */
74
112
 
75
- /* Centre the glyphs, not the line box: a label without descenders otherwise reads high. */
76
- /* Centre the glyphs, not the line box: a label without descenders otherwise reads high.
77
- * Trimming applies to block containers, so the box is a block with centred content. */
113
+ /* Keep the text row at the shared control height where cap trimming is available. */
78
114
  @supports (text-box-trim: trim-both) {
79
115
  }
80
116
 
117
+ @media (forced-colors: active) {
118
+ }
119
+
81
120
  /* A component that sets its display still honours the hidden attribute on its root. */
82
121
  }
@@ -1,4 +1,20 @@
1
1
  /* Generated by HTML Next 1.0.0-alpha.7. Do not edit. */
2
+ @property --ui-menu-surface {
3
+ syntax: "*";
4
+ inherits: false;
5
+ }
6
+ @property --ui-menu-border {
7
+ syntax: "*";
8
+ inherits: false;
9
+ }
10
+ @property --ui-menu-radius {
11
+ syntax: "*";
12
+ inherits: false;
13
+ }
14
+ @property --ui-menu-shadow {
15
+ syntax: "*";
16
+ inherits: false;
17
+ }
2
18
  @property --ui-menu-viewport-gap {
3
19
  syntax: "*";
4
20
  inherits: false;
@@ -18,6 +34,10 @@
18
34
  }
19
35
 
20
36
  :scope {
37
+ --_ui-menu-surface: var(--ui-menu-surface);
38
+ --_ui-menu-border: var(--ui-menu-border);
39
+ --_ui-menu-radius: var(--ui-menu-radius);
40
+ --_ui-menu-shadow: var(--ui-menu-shadow);
21
41
  /* A menu nested in a compact one starts again from its own density. */
22
42
  --_ui-default-menu-item-padding-block: initial;
23
43
  --_ui-default-menu-item-padding-inline: initial;
@@ -44,14 +64,22 @@
44
64
  box-sizing: border-box;
45
65
  max-inline-size: inherit;
46
66
  padding: var(--ui-space-1);
47
- background: var(--ui-surface-elevated);
48
- border: 1px solid var(--ui-border-default);
49
- border-radius: var(--ui-radius-lg);
50
- box-shadow: var(--ui-elevation-overlay, var(--ui-shadow-lg));
67
+ background: var(--_ui-menu-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
68
+ border: 1px solid var(--_ui-menu-border, var(--ui-overlay-border, var(--ui-border-default)));
69
+ border-radius: var(--_ui-menu-radius, var(--ui-overlay-radius, var(--ui-radius-lg)));
70
+ box-shadow: var(--_ui-menu-shadow, var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg))));
51
71
  max-block-size: inherit;
52
72
  overflow: auto;
53
73
  }
54
74
 
75
+ .surface hr {
76
+ align-self: stretch;
77
+ block-size: 0;
78
+ margin: var(--ui-space-1) 0;
79
+ border: 0;
80
+ border-block-start: 1px solid var(--ui-border-default);
81
+ }
82
+
55
83
  :scope:not(:scope[data-ui-menu-state~="internalOpen"]) {
56
84
  display: none;
57
85
  }
@@ -1,12 +1,36 @@
1
1
  /* Generated by HTML Next 1.0.0-alpha.7. Do not edit. */
2
+ @property --ui-popover-surface {
3
+ syntax: "*";
4
+ inherits: false;
5
+ }
6
+ @property --ui-popover-border {
7
+ syntax: "*";
8
+ inherits: false;
9
+ }
10
+ @property --ui-popover-radius {
11
+ syntax: "*";
12
+ inherits: false;
13
+ }
14
+ @property --ui-popover-shadow {
15
+ syntax: "*";
16
+ inherits: false;
17
+ }
2
18
  @property --ui-popover-viewport-gap {
3
19
  syntax: "*";
4
20
  inherits: false;
5
21
  }
22
+ @property --ui-popover-offset {
23
+ syntax: "*";
24
+ inherits: false;
25
+ }
6
26
  @scope ([data-component~="ui-popover"]) to ([data-component], [data-slotted]) {
7
27
  /* This component's hooks style the element they are set on, and never a nested one. */
8
28
 
9
29
  :scope {
30
+ --_ui-popover-surface: var(--ui-popover-surface);
31
+ --_ui-popover-border: var(--ui-popover-border);
32
+ --_ui-popover-radius: var(--ui-popover-radius);
33
+ --_ui-popover-shadow: var(--ui-popover-shadow);
10
34
  box-sizing: border-box;
11
35
  max-inline-size: min(
12
36
  20rem,
@@ -28,10 +52,10 @@
28
52
  max-block-size: inherit;
29
53
  overflow: auto;
30
54
  padding: var(--ui-space-3);
31
- background: var(--ui-surface-elevated);
32
- border: 1px solid var(--ui-border-default);
33
- border-radius: var(--ui-radius-lg);
34
- box-shadow: var(--ui-elevation-overlay, var(--ui-shadow-lg));
55
+ background: var(--_ui-popover-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
56
+ border: 1px solid var(--_ui-popover-border, var(--ui-overlay-border, var(--ui-border-default)));
57
+ border-radius: var(--_ui-popover-radius, var(--ui-overlay-radius, var(--ui-radius-lg)));
58
+ box-shadow: var(--_ui-popover-shadow, var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg))));
35
59
  }
36
60
 
37
61
  :scope:not(:scope[data-ui-popover-state~="internalOpen"]) {
@@ -1,6 +1,11 @@
1
1
  /* Generated by HTML Next 1.0.0-alpha.7. Do not edit. */
2
+ @property --ui-radio-group-invalid-text {
3
+ syntax: "*";
4
+ inherits: false;
5
+ }
2
6
  @scope ([data-component~="ui-radio-group"]) to ([data-component], [data-slotted]) {
3
7
  :scope {
8
+ --_ui-radio-group-invalid-text: var(--ui-radio-group-invalid-text, var(--ui-field-danger, var(--ui-danger-solid)));
4
9
  display: inline-flex;
5
10
  align-items: center;
6
11
  gap: var(--ui-space-2);
@@ -23,6 +28,10 @@
23
28
  clear: both;
24
29
  }
25
30
 
31
+ :scope[data-ui-radio-group-state~="invalid"] legend {
32
+ color: var(--_ui-radio-group-invalid-text);
33
+ }
34
+
26
35
  :scope[data-ui-radio-group-state~="orientation=vertical"] {
27
36
  display: inline-grid;
28
37
  justify-items: start;
@@ -88,10 +88,10 @@
88
88
  max-block-size: var(--_ui-search-shell-max-height, 80vh);
89
89
  margin-inline: auto;
90
90
  overflow: hidden;
91
- background: var(--_ui-search-shell-surface, var(--ui-surface-elevated));
92
- border: 1px solid var(--_ui-search-shell-border, var(--ui-border-default));
93
- border-radius: var(--_ui-search-shell-radius, var(--ui-radius-dialog));
94
- box-shadow: var(--_ui-search-shell-shadow, var(--ui-elevation-dialog, var(--ui-shadow-xl)));
91
+ background: var(--_ui-search-shell-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
92
+ border: 1px solid var(--_ui-search-shell-border, var(--ui-overlay-border, var(--ui-border-default)));
93
+ border-radius: var(--_ui-search-shell-radius, var(--ui-overlay-radius, var(--ui-radius-dialog)));
94
+ box-shadow: var(--_ui-search-shell-shadow, var(--ui-overlay-shadow, var(--ui-elevation-dialog, var(--ui-shadow-xl))));
95
95
  }
96
96
 
97
97
  .search {
@@ -188,7 +188,7 @@
188
188
  min-block-size: var(--ui-control-min-block-size);
189
189
  padding: var(--ui-space-2) var(--ui-space-3);
190
190
  border: 1px solid var(--ui-control-border);
191
- border-radius: var(--ui-radius-md);
191
+ border-radius: var(--ui-field-radius, var(--ui-radius-md));
192
192
  background: var(--ui-control-surface);
193
193
  color: var(--ui-text-primary);
194
194
  font: inherit;
@@ -3,6 +3,14 @@
3
3
  syntax: "*";
4
4
  inherits: false;
5
5
  }
6
+ @property --ui-select-invalid-border {
7
+ syntax: "*";
8
+ inherits: false;
9
+ }
10
+ @property --ui-select-invalid-focus-shadow {
11
+ syntax: "*";
12
+ inherits: false;
13
+ }
6
14
  @property --ui-select-radius {
7
15
  syntax: "*";
8
16
  inherits: false;
@@ -23,7 +31,7 @@
23
31
  margin: 0;
24
32
  padding: var(--ui-space-2) var(--ui-space-3);
25
33
  border: 1px solid var(--ui-control-border, var(--ui-border-strong));
26
- border-radius: var(--ui-select-radius, var(--ui-radius-md));
34
+ border-radius: var(--ui-select-radius, var(--ui-field-radius, var(--ui-radius-md)));
27
35
  background-color: var(--ui-control-surface, var(--ui-surface-elevated));
28
36
  color: var(--ui-text-primary);
29
37
  color-scheme: light dark;
@@ -63,13 +71,15 @@
63
71
  /* The app's invalid flag, or the browser's own verdict once the user has left an invalid field. */
64
72
  :scope[aria-invalid="true"],
65
73
  :scope:is(:user-invalid, [data-user-invalid]) {
66
- border-color: var(--ui-danger-solid);
74
+ border-color: var(--ui-select-invalid-border, var(--ui-field-danger, var(--ui-danger-solid)));
67
75
  }
68
76
 
69
77
  :scope:is([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])):focus-visible {
70
- box-shadow:
78
+ box-shadow: var(
79
+ --ui-select-invalid-focus-shadow,
71
80
  var(--ui-control-inset),
72
- 0 0 0 3px color-mix(in srgb, var(--ui-danger-solid) 22%, transparent);
81
+ 0 0 0 3px color-mix(in srgb, var(--ui-select-invalid-border, var(--ui-field-danger, var(--ui-danger-solid))) 22%, transparent)
82
+ );
73
83
  }
74
84
 
75
85
  :scope:disabled {
@@ -59,7 +59,7 @@
59
59
  height: var(--_ui-switch-track-height, 1.5rem);
60
60
  padding: 0;
61
61
  border: 1px solid var(--ui-control-border-hover, var(--ui-border-strong));
62
- border-radius: 999px;
62
+ border-radius: var(--ui-radius-round);
63
63
  background: var(--ui-control-surface, var(--ui-surface-default));
64
64
  box-shadow: inset 0 1px 2px color-mix(in srgb, var(--ui-text-primary) 10%, transparent);
65
65
  cursor: pointer;
@@ -74,7 +74,7 @@
74
74
  left: 3px;
75
75
  width: 1rem;
76
76
  height: 1rem;
77
- border-radius: 999px;
77
+ border-radius: var(--ui-radius-round);
78
78
  background: var(--ui-text-secondary);
79
79
  box-shadow: var(--ui-shadow-xs);
80
80
  transition: transform var(--ui-motion-fast) var(--ui-motion-ease);
@@ -62,6 +62,10 @@
62
62
  /* The large multiplier makes the basis flip as a group at the intrinsic threshold. */
63
63
  flex-basis: calc((var(--_ui-switcher-threshold, 30rem) - 100%) * 999);
64
64
  }
65
+
66
+ :scope[data-ui-switcher-state~="overLimit"] > :where([data-slotted], [data-slotted] *):is(*) {
67
+ flex-basis: 100%;
68
+ }
65
69
  :scope[data-ui-switcher-state~="threshold=xs"] > :where([data-slotted], [data-slotted] *):is(*) {
66
70
  flex-basis: calc((var(--_ui-switcher-threshold, 20rem) - 100%) * 999);
67
71
  }
@@ -3,6 +3,14 @@
3
3
  syntax: "*";
4
4
  inherits: false;
5
5
  }
6
+ @property --ui-textarea-invalid-border {
7
+ syntax: "*";
8
+ inherits: false;
9
+ }
10
+ @property --ui-textarea-invalid-focus-shadow {
11
+ syntax: "*";
12
+ inherits: false;
13
+ }
6
14
  @property --ui-textarea-radius {
7
15
  syntax: "*";
8
16
  inherits: false;
@@ -21,11 +29,12 @@
21
29
  min-inline-size: 0;
22
30
  min-block-size: calc(3rem * 2);
23
31
  margin: 0;
32
+ --_padding-block: var(--ui-space-2);
24
33
  padding: var(--ui-space-2) var(--ui-space-3);
25
34
  appearance: none;
26
35
  resize: vertical;
27
36
  border: 1px solid var(--ui-control-border, var(--ui-border-strong));
28
- border-radius: var(--ui-textarea-radius, var(--ui-radius-md));
37
+ border-radius: var(--ui-textarea-radius, var(--ui-field-radius, var(--ui-radius-md)));
29
38
  background: var(--ui-control-surface, var(--ui-surface-elevated));
30
39
  color: var(--ui-text-primary);
31
40
  font: inherit;
@@ -61,13 +70,15 @@
61
70
  /* The app's invalid flag, or the browser's own verdict once the user has left an invalid field. */
62
71
  :scope[aria-invalid="true"],
63
72
  :scope:is(:user-invalid, [data-user-invalid]) {
64
- border-color: var(--ui-danger-solid);
73
+ border-color: var(--ui-textarea-invalid-border, var(--ui-field-danger, var(--ui-danger-solid)));
65
74
  }
66
75
 
67
76
  :scope:is([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])):focus-visible {
68
- box-shadow:
77
+ box-shadow: var(
78
+ --ui-textarea-invalid-focus-shadow,
69
79
  var(--ui-control-inset),
70
- 0 0 0 3px color-mix(in srgb, var(--ui-danger-solid) 22%, transparent);
80
+ 0 0 0 3px color-mix(in srgb, var(--ui-textarea-invalid-border, var(--ui-field-danger, var(--ui-danger-solid))) 22%, transparent)
81
+ );
71
82
  }
72
83
 
73
84
  :scope:disabled {
@@ -78,15 +89,24 @@
78
89
  }
79
90
 
80
91
  :scope[data-ui-textarea-state~="size=sm"] {
92
+ --_padding-block: var(--ui-space-1);
81
93
  padding: var(--ui-space-1) var(--ui-space-2);
82
94
  font-size: var(--ui-font-size-sm);
83
95
  }
84
96
 
85
97
  :scope[data-ui-textarea-state~="size=lg"] {
98
+ --_padding-block: var(--ui-space-3);
86
99
  padding: var(--ui-space-3) var(--ui-space-4);
87
100
  font-size: var(--ui-font-size-md);
88
101
  }
89
102
 
103
+ @supports (field-sizing: content) {
104
+ :scope[data-ui-textarea-state~="autosize"] {
105
+ field-sizing: content;
106
+ min-block-size: calc(var(--_rows) * 1lh + var(--_padding-block) + var(--_padding-block) + 2px);
107
+ }
108
+ }
109
+
90
110
  /* Below 16px, iOS zooms the page into the focused field, so touch keeps body-size text. */
91
111
  @media (pointer: coarse) {
92
112
  :scope[data-ui-textarea-state~="size=sm"] {
@@ -106,6 +126,9 @@
106
126
 
107
127
  /* The app's invalid flag, or the browser's own verdict once the user has left an invalid field. */
108
128
 
129
+ @supports (field-sizing: content) {
130
+ }
131
+
109
132
  /* Below 16px, iOS zooms the page into the focused field, so touch keeps body-size text. */
110
133
  @media (pointer: coarse) {
111
134
  }
@@ -1,4 +1,20 @@
1
1
  /* Generated by HTML Next 1.0.0-alpha.7. Do not edit. */
2
+ @property --ui-toast-region-surface {
3
+ syntax: "*";
4
+ inherits: false;
5
+ }
6
+ @property --ui-toast-region-border {
7
+ syntax: "*";
8
+ inherits: false;
9
+ }
10
+ @property --ui-toast-region-radius {
11
+ syntax: "*";
12
+ inherits: false;
13
+ }
14
+ @property --ui-toast-region-shadow {
15
+ syntax: "*";
16
+ inherits: false;
17
+ }
2
18
  @property --ui-toast-region-enter-duration {
3
19
  syntax: "*";
4
20
  inherits: false;
@@ -27,11 +43,35 @@
27
43
  transform: translateY(0.75rem);
28
44
  }
29
45
  }
46
+ @keyframes ui-toast-enter-bottom {
47
+ from {
48
+ opacity: 0;
49
+ transform: translateY(1rem);
50
+ }
51
+ to {
52
+ opacity: 1;
53
+ transform: translateY(0);
54
+ }
55
+ }
56
+ @keyframes ui-toast-exit-bottom {
57
+ from {
58
+ opacity: 1;
59
+ transform: translateY(0);
60
+ }
61
+ to {
62
+ opacity: 0;
63
+ transform: translateY(-0.75rem);
64
+ }
65
+ }
30
66
  @scope ([data-component~="ui-toast-region"]) to ([data-component], [data-slotted]) {
31
67
  /* This component's hooks style the element they are set on, and never a nested one. */
32
68
 
33
69
  :scope {
34
70
  /* Hooks do not inherit, so the parts below read them from the root. */
71
+ --_ui-toast-region-surface: var(--ui-toast-region-surface);
72
+ --_ui-toast-region-border: var(--ui-toast-region-border);
73
+ --_ui-toast-region-radius: var(--ui-toast-region-radius);
74
+ --_ui-toast-region-shadow: var(--ui-toast-region-shadow);
35
75
  --_ui-toast-region-enter-duration: var(--ui-toast-region-enter-duration);
36
76
  --_ui-toast-region-exit-duration: var(--ui-toast-region-exit-duration);
37
77
 
@@ -61,26 +101,70 @@
61
101
  display: none;
62
102
  }
63
103
 
104
+ :scope[data-ui-toast-region-state~="placement=top-start"],
105
+ :scope[data-ui-toast-region-state~="placement=bottom-start"] {
106
+ left: auto;
107
+ right: auto;
108
+ inset-inline-start: calc(var(--ui-space-4) + env(safe-area-inset-left));
109
+ transform: none;
110
+ }
111
+
112
+ :scope[data-ui-toast-region-state~="placement=top-end"],
113
+ :scope[data-ui-toast-region-state~="placement=bottom-end"] {
114
+ left: auto;
115
+ right: auto;
116
+ inset-inline-end: calc(var(--ui-space-4) + env(safe-area-inset-right));
117
+ transform: none;
118
+ }
119
+
120
+ :scope[data-ui-toast-region-state~="placement=bottom"],
121
+ :scope[data-ui-toast-region-state~="placement=bottom-start"],
122
+ :scope[data-ui-toast-region-state~="placement=bottom-end"] {
123
+ top: auto;
124
+ bottom: calc(var(--ui-space-4) + env(safe-area-inset-bottom));
125
+ }
126
+
64
127
  .toast {
65
128
  display: grid;
66
129
  grid-template-columns: 1fr auto;
67
130
  gap: var(--ui-space-2);
68
131
  align-items: start;
69
- border: 1px solid var(--ui-border-default);
70
- border-radius: var(--ui-radius-lg);
132
+ border: 1px solid var(--_ui-toast-region-border, var(--ui-overlay-border, var(--ui-border-default)));
133
+ border-radius: var(--_ui-toast-region-radius, var(--ui-overlay-radius, var(--ui-radius-lg)));
71
134
  padding: var(--ui-space-3) var(--ui-space-4);
72
- background: var(--ui-surface-elevated);
135
+ background: var(--_ui-toast-region-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
73
136
  color: var(--ui-text-primary);
74
- box-shadow: var(--ui-elevation-overlay, var(--ui-shadow-lg));
137
+ box-shadow: var(--_ui-toast-region-shadow, var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg))));
75
138
  animation: ui-toast-enter var(--_ui-toast-region-enter-duration, 0.32s) var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1)) both;
76
139
  }
77
140
 
141
+ .toast[data-tone="info"] {
142
+ border-inline-start: 3px solid var(--ui-info-solid);
143
+ }
144
+ .toast[data-tone="success"] {
145
+ border-inline-start: 3px solid var(--ui-success-solid);
146
+ }
147
+ .toast[data-tone="warning"] {
148
+ border-inline-start: 3px solid var(--ui-warning-solid);
149
+ }
150
+ .toast[data-tone="danger"] {
151
+ border-inline-start: 3px solid var(--ui-danger-solid);
152
+ }
153
+
78
154
  /* Leaving slides on down and fades; the controller removes the toast when this ends. */
79
155
  .toast.closing {
80
156
  animation: ui-toast-exit var(--_ui-toast-region-exit-duration, 0.22s) var(--ui-motion-ease) both;
81
157
  pointer-events: none;
82
158
  }
83
159
 
160
+ :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"]) .toast {
161
+ animation-name: ui-toast-enter-bottom;
162
+ }
163
+
164
+ :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"]) .toast.closing {
165
+ animation-name: ui-toast-exit-bottom;
166
+ }
167
+
84
168
  @media (prefers-reduced-motion: reduce) {
85
169
  .toast, .toast.closing {
86
170
  animation: none;