niuma-ui 2.0.4 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/NOTICE +0 -1
  3. package/README.md +3 -3
  4. package/README.zh-CN.md +3 -3
  5. package/dist/components/_shared/index.d.ts +2 -2
  6. package/dist/components/_shared/src/overlay-utils.d.ts +44 -1
  7. package/dist/components/_shared/src/overlay-utils.js +87 -2
  8. package/dist/components/alert/index.d.ts +1 -0
  9. package/dist/components/alert/src/RsAlert.css +120 -65
  10. package/dist/components/alert/src/RsAlert.d.ts +24 -5
  11. package/dist/components/alert/src/RsAlert.impl.js +108 -36
  12. package/dist/components/alert/src/RsAlert.js +1 -1
  13. package/dist/components/alert/src/alert-utils.d.ts +37 -0
  14. package/dist/components/alert/src/alert-utils.js +71 -0
  15. package/dist/components/auto-complete/src/RsAutoComplete.d.ts +1 -1
  16. package/dist/components/button/src/RsButton.css +75 -72
  17. package/dist/components/button/src/RsButton.d.ts +1 -4
  18. package/dist/components/button/src/RsButton.impl.js +3 -7
  19. package/dist/components/button/src/RsButton.js +1 -1
  20. package/dist/components/card/src/RsCard.d.ts +1 -1
  21. package/dist/components/code-block/index.d.ts +1 -0
  22. package/dist/components/code-block/src/RsCodeBlock.css +93 -52
  23. package/dist/components/code-block/src/RsCodeBlock.d.ts +36 -9
  24. package/dist/components/code-block/src/RsCodeBlock.impl.js +203 -84
  25. package/dist/components/code-block/src/RsCodeBlock.js +1 -1
  26. package/dist/components/code-block/src/code-block-highlight.d.ts +4 -0
  27. package/dist/components/code-block/src/code-block-highlight.js +34 -0
  28. package/dist/components/code-block/src/code-block-utils.d.ts +23 -0
  29. package/dist/components/code-block/src/code-block-utils.js +71 -0
  30. package/dist/components/code-editor/index.d.ts +1 -1
  31. package/dist/components/code-editor/src/RsCodeEditor.css +118 -92
  32. package/dist/components/code-editor/src/RsCodeEditor.d.ts +14 -3
  33. package/dist/components/code-editor/src/RsCodeEditor.impl.js +261 -94
  34. package/dist/components/code-editor/src/RsCodeEditor.js +1 -1
  35. package/dist/components/code-editor/src/code-editor-utils.d.ts +15 -0
  36. package/dist/components/code-editor/src/code-editor-utils.js +36 -1
  37. package/dist/components/code-editor/src/code-mirror-completion.d.ts +1 -1
  38. package/dist/components/code-editor/src/code-mirror-completion.js +8 -5
  39. package/dist/components/code-editor/src/code-mirror-diagnostics.d.ts +2 -3
  40. package/dist/components/code-editor/src/code-mirror-diagnostics.js +3 -4
  41. package/dist/components/code-editor/src/code-mirror-ghost.d.ts +1 -1
  42. package/dist/components/code-editor/src/code-mirror-ghost.js +12 -3
  43. package/dist/components/code-editor/src/code-mirror-inline-edit.js +8 -3
  44. package/dist/components/code-editor/src/code-mirror-intel.d.ts +2 -2
  45. package/dist/components/code-editor/src/code-mirror-intel.js +50 -39
  46. package/dist/components/code-editor/src/code-mirror-lang.js +4 -0
  47. package/dist/components/code-editor/src/code-mirror-session.d.ts +13 -0
  48. package/dist/components/code-editor/src/code-mirror-session.js +30 -0
  49. package/dist/components/config-provider/src/RsConfigProvider.css +1 -1
  50. package/dist/components/config-provider/src/RsConfigProvider.d.ts +2 -2
  51. package/dist/components/config-provider/src/RsConfigProvider.impl.js +7 -16
  52. package/dist/components/config-provider/src/RsConfigProvider.js +1 -1
  53. package/dist/components/context-menu/index.d.ts +1 -1
  54. package/dist/components/context-menu/src/RsContextMenu.css +115 -89
  55. package/dist/components/context-menu/src/RsContextMenu.d.ts +32 -11
  56. package/dist/components/context-menu/src/RsContextMenu.impl.js +795 -48
  57. package/dist/components/context-menu/src/RsContextMenuItems.d.ts +25 -1
  58. package/dist/components/context-menu/src/RsContextMenuItems.impl.js +110 -61
  59. package/dist/components/context-menu/src/context-menu-utils.d.ts +89 -3
  60. package/dist/components/context-menu/src/context-menu-utils.js +168 -3
  61. package/dist/components/date-picker/src/RsDatePicker.d.ts +2 -2
  62. package/dist/components/date-picker/src/RsDateTimePicker.d.ts +2 -2
  63. package/dist/components/descriptions/index.d.ts +1 -1
  64. package/dist/components/descriptions/src/RsDescriptions.css +38 -11
  65. package/dist/components/descriptions/src/RsDescriptions.d.ts +20 -4
  66. package/dist/components/descriptions/src/RsDescriptions.impl.js +89 -19
  67. package/dist/components/descriptions/src/RsDescriptionsItem.impl.js +13 -6
  68. package/dist/components/descriptions/src/descriptions-utils.d.ts +19 -0
  69. package/dist/components/descriptions/src/descriptions-utils.js +39 -1
  70. package/dist/components/dialog/index.d.ts +1 -1
  71. package/dist/components/dialog/src/RsConfirmDialog.css +47 -21
  72. package/dist/components/dialog/src/RsConfirmDialog.d.ts +19 -7
  73. package/dist/components/dialog/src/RsConfirmDialog.impl.js +349 -119
  74. package/dist/components/dialog/src/RsConfirmDialog.js +2 -1
  75. package/dist/components/dialog/src/RsDialog.css +102 -109
  76. package/dist/components/dialog/src/RsDialog.d.ts +34 -24
  77. package/dist/components/dialog/src/RsDialog.impl.js +410 -177
  78. package/dist/components/dialog/src/RsDialog.js +2 -1
  79. package/dist/components/dialog/src/dialog-utils.d.ts +40 -1
  80. package/dist/components/dialog/src/dialog-utils.js +152 -1
  81. package/dist/components/dialog/src/dialog-window.js +29 -8
  82. package/dist/components/drawer/index.d.ts +1 -1
  83. package/dist/components/drawer/src/RsDrawer.css +61 -29
  84. package/dist/components/drawer/src/RsDrawer.d.ts +37 -21
  85. package/dist/components/drawer/src/RsDrawer.impl.js +441 -223
  86. package/dist/components/drawer/src/drawer-utils.d.ts +35 -0
  87. package/dist/components/drawer/src/drawer-utils.js +131 -1
  88. package/dist/components/dropdown/index.d.ts +1 -1
  89. package/dist/components/dropdown/src/RsDropdown.css +140 -61
  90. package/dist/components/dropdown/src/RsDropdown.d.ts +39 -6
  91. package/dist/components/dropdown/src/RsDropdown.impl.js +693 -63
  92. package/dist/components/dropdown/src/RsDropdownItemView.impl.js +17 -7
  93. package/dist/components/dropdown/src/RsDropdownItems.d.ts +32 -3
  94. package/dist/components/dropdown/src/RsDropdownItems.impl.js +171 -59
  95. package/dist/components/dropdown/src/dropdown-utils.d.ts +50 -0
  96. package/dist/components/dropdown/src/dropdown-utils.js +103 -3
  97. package/dist/components/empty/index.d.ts +1 -0
  98. package/dist/components/empty/src/RsEmpty.css +105 -23
  99. package/dist/components/empty/src/RsEmpty.d.ts +27 -4
  100. package/dist/components/empty/src/RsEmpty.impl.js +154 -11
  101. package/dist/components/empty/src/RsEmpty.js +2 -1
  102. package/dist/components/empty/src/empty-utils.d.ts +28 -0
  103. package/dist/components/empty/src/empty-utils.js +55 -0
  104. package/dist/components/form/src/RsForm.d.ts +1 -1
  105. package/dist/components/input-number/src/RsInputNumber.d.ts +1 -1
  106. package/dist/components/label/src/RsLabel.d.ts +1 -1
  107. package/dist/components/loading/index.d.ts +1 -0
  108. package/dist/components/loading/src/RsLoading.css +13 -97
  109. package/dist/components/loading/src/RsLoading.d.ts +52 -2
  110. package/dist/components/loading/src/RsLoading.impl.js +216 -33
  111. package/dist/components/loading/src/RsLoading.js +2 -1
  112. package/dist/components/loading/src/loading-status.css +210 -0
  113. package/dist/components/loading/src/loading-status.d.ts +34 -0
  114. package/dist/components/loading/src/loading-status.impl.js +84 -0
  115. package/dist/components/loading/src/loading-status.js +8 -0
  116. package/dist/components/loading/src/loading-utils.d.ts +51 -4
  117. package/dist/components/loading/src/loading-utils.js +122 -0
  118. package/dist/components/loading-bar/index.d.ts +1 -0
  119. package/dist/components/loading-bar/src/RsLoadingBar.css +72 -8
  120. package/dist/components/loading-bar/src/RsLoadingBar.d.ts +55 -11
  121. package/dist/components/loading-bar/src/RsLoadingBar.impl.js +298 -57
  122. package/dist/components/loading-bar/src/RsLoadingBar.js +1 -1
  123. package/dist/components/loading-bar/src/loading-bar-utils.d.ts +69 -0
  124. package/dist/components/loading-bar/src/loading-bar-utils.js +97 -0
  125. package/dist/components/log/src/RsLog.css +52 -144
  126. package/dist/components/log/src/RsLog.d.ts +12 -11
  127. package/dist/components/log/src/RsLog.impl.js +181 -148
  128. package/dist/components/log/src/RsLog.js +1 -1
  129. package/dist/components/log/src/RsLogRow.css +152 -0
  130. package/dist/components/log/src/RsLogRow.d.ts +35 -0
  131. package/dist/components/log/src/RsLogRow.impl.js +91 -0
  132. package/dist/components/log/src/RsLogRow.js +8 -0
  133. package/dist/components/log/src/log-utils.d.ts +8 -0
  134. package/dist/components/log/src/log-utils.js +71 -10
  135. package/dist/components/markdown/index.d.ts +1 -1
  136. package/dist/components/markdown/src/RsMarkdown.css +75 -32
  137. package/dist/components/markdown/src/RsMarkdown.d.ts +6 -2
  138. package/dist/components/markdown/src/RsMarkdown.impl.js +185 -17
  139. package/dist/components/markdown/src/markdown-utils.d.ts +26 -0
  140. package/dist/components/markdown/src/markdown-utils.js +114 -12
  141. package/dist/components/mentions/src/RsMentions.d.ts +2 -2
  142. package/dist/components/menu/index.d.ts +1 -1
  143. package/dist/components/menu/src/RsMenu.css +70 -29
  144. package/dist/components/menu/src/RsMenu.d.ts +58 -4
  145. package/dist/components/menu/src/RsMenu.impl.js +93 -46
  146. package/dist/components/menu/src/RsMenuItems.d.ts +22 -5
  147. package/dist/components/menu/src/RsMenuItems.impl.js +506 -154
  148. package/dist/components/menu/src/menu-utils.d.ts +56 -0
  149. package/dist/components/menu/src/menu-utils.js +139 -6
  150. package/dist/components/monaco-editor/index.d.ts +1 -1
  151. package/dist/components/monaco-editor/src/RsMonacoEditor.css +28 -16
  152. package/dist/components/monaco-editor/src/RsMonacoEditor.d.ts +39 -41
  153. package/dist/components/monaco-editor/src/RsMonacoEditor.impl.js +212 -133
  154. package/dist/components/monaco-editor/src/RsMonacoEditor.js +1 -1
  155. package/dist/components/monaco-editor/src/monaco-editor-utils.d.ts +126 -0
  156. package/dist/components/monaco-editor/src/monaco-editor-utils.js +302 -0
  157. package/dist/components/pagination/index.d.ts +2 -2
  158. package/dist/components/pagination/src/RsPagination.css +93 -46
  159. package/dist/components/pagination/src/RsPagination.d.ts +68 -8
  160. package/dist/components/pagination/src/RsPagination.impl.js +229 -86
  161. package/dist/components/pagination/src/RsPagination.js +1 -1
  162. package/dist/components/pagination/src/pagination-utils.d.ts +59 -0
  163. package/dist/components/pagination/src/pagination-utils.js +105 -1
  164. package/dist/components/popover/index.d.ts +1 -0
  165. package/dist/components/popover/src/RsPopover.css +124 -14
  166. package/dist/components/popover/src/RsPopover.d.ts +38 -7
  167. package/dist/components/popover/src/RsPopover.impl.js +546 -35
  168. package/dist/components/popover/src/RsPopover.js +2 -1
  169. package/dist/components/popover/src/popover-utils.d.ts +24 -2
  170. package/dist/components/popover/src/popover-utils.js +55 -0
  171. package/dist/components/sidebar/index.d.ts +1 -0
  172. package/dist/components/sidebar/src/RsSidebar.css +91 -33
  173. package/dist/components/sidebar/src/RsSidebar.d.ts +17 -9
  174. package/dist/components/sidebar/src/RsSidebar.impl.js +124 -22
  175. package/dist/components/sidebar/src/RsSidebar.js +1 -1
  176. package/dist/components/sidebar/src/RsSidebarGroup.css +23 -6
  177. package/dist/components/sidebar/src/RsSidebarGroup.d.ts +6 -2
  178. package/dist/components/sidebar/src/RsSidebarGroup.impl.js +17 -4
  179. package/dist/components/sidebar/src/RsSidebarGroup.js +1 -1
  180. package/dist/components/sidebar/src/RsSidebarItem.css +50 -20
  181. package/dist/components/sidebar/src/RsSidebarItem.d.ts +21 -3
  182. package/dist/components/sidebar/src/RsSidebarItem.impl.js +71 -20
  183. package/dist/components/sidebar/src/RsSidebarItem.js +1 -1
  184. package/dist/components/sidebar/src/sidebar-utils.d.ts +47 -0
  185. package/dist/components/sidebar/src/sidebar-utils.js +72 -0
  186. package/dist/components/split-pane/index.d.ts +2 -2
  187. package/dist/components/split-pane/src/RsSplitPane.css +41 -30
  188. package/dist/components/split-pane/src/RsSplitPane.d.ts +6 -2
  189. package/dist/components/split-pane/src/RsSplitPane.impl.js +153 -45
  190. package/dist/components/split-pane/src/split-pane-utils.d.ts +23 -0
  191. package/dist/components/split-pane/src/split-pane-utils.js +18 -1
  192. package/dist/components/stat-card/index.d.ts +1 -0
  193. package/dist/components/stat-card/src/RsStatCard.css +129 -25
  194. package/dist/components/stat-card/src/RsStatCard.d.ts +40 -4
  195. package/dist/components/stat-card/src/RsStatCard.impl.js +106 -12
  196. package/dist/components/stat-card/src/RsStatCard.js +1 -1
  197. package/dist/components/stat-card/src/stat-card-utils.d.ts +39 -0
  198. package/dist/components/stat-card/src/stat-card-utils.js +113 -0
  199. package/dist/components/steps/index.d.ts +1 -1
  200. package/dist/components/steps/src/RsSteps.css +158 -37
  201. package/dist/components/steps/src/RsSteps.d.ts +69 -5
  202. package/dist/components/steps/src/RsSteps.impl.js +168 -28
  203. package/dist/components/steps/src/RsSteps.js +1 -1
  204. package/dist/components/steps/src/steps-utils.d.ts +51 -1
  205. package/dist/components/steps/src/steps-utils.js +67 -1
  206. package/dist/components/table/src/RsTable.impl.js +4 -2
  207. package/dist/components/table/src/composables/useRsTableContextMenu.d.ts +16 -0
  208. package/dist/components/table/src/composables/useRsTableContextMenu.js +1 -1
  209. package/dist/components/table/src/composables/useRsTableEngine.js +6 -2
  210. package/dist/components/table/src/composables/useRsTableScrollLayout.js +2 -0
  211. package/dist/components/table/src/composables/useRsTableShell.d.ts +16 -0
  212. package/dist/components/table/src/rs-table-props.d.ts +1 -1
  213. package/dist/components/table/src/rs-table-props.js +0 -1
  214. package/dist/components/table/src/table-body/RsTableBody.impl.js +1 -0
  215. package/dist/components/table/src/table-body/RsTableCell.impl.js +1 -1
  216. package/dist/components/table/src/table-body/RsTableCellEditor.impl.js +10 -2
  217. package/dist/components/table/src/table-body/RsTableColGroup.impl.js +1 -0
  218. package/dist/components/table/src/table-footer/RsTableSummaryRow.impl.js +1 -0
  219. package/dist/components/table/src/table-header/RsTableHeader.impl.js +1 -0
  220. package/dist/components/table/src/utils/table-utils.d.ts +10 -6
  221. package/dist/components/table/src/utils/table-utils.js +27 -25
  222. package/dist/components/table/style/rs-table.css +86 -28
  223. package/dist/components/tabs/index.d.ts +2 -2
  224. package/dist/components/tabs/src/RsTabs.css +225 -101
  225. package/dist/components/tabs/src/RsTabs.d.ts +37 -8
  226. package/dist/components/tabs/src/RsTabs.impl.js +400 -270
  227. package/dist/components/tabs/src/tabs-utils.d.ts +41 -2
  228. package/dist/components/tabs/src/tabs-utils.js +55 -1
  229. package/dist/components/terminal/index.d.ts +1 -1
  230. package/dist/components/terminal/src/RsTerminal.css +60 -37
  231. package/dist/components/terminal/src/RsTerminal.d.ts +36 -4
  232. package/dist/components/terminal/src/RsTerminal.impl.js +288 -68
  233. package/dist/components/terminal/src/RsTerminal.js +1 -1
  234. package/dist/components/terminal/src/terminal-utils.d.ts +42 -4
  235. package/dist/components/terminal/src/terminal-utils.js +113 -10
  236. package/dist/components/textarea/src/RsTextarea.d.ts +1 -1
  237. package/dist/components/time-picker/src/RsTimePicker.d.ts +2 -2
  238. package/dist/components/toaster/src/RsToaster.css +156 -203
  239. package/dist/components/toaster/src/RsToaster.d.ts +32 -2
  240. package/dist/components/toaster/src/RsToaster.impl.js +309 -34
  241. package/dist/components/toaster/src/toast-store.d.ts +95 -0
  242. package/dist/components/toaster/src/toast-store.js +177 -0
  243. package/dist/components/toaster/src/toast-utils.d.ts +60 -0
  244. package/dist/components/toaster/src/toast-utils.js +86 -0
  245. package/dist/components/toolbar/index.d.ts +1 -1
  246. package/dist/components/toolbar/src/RsToolbar.css +206 -32
  247. package/dist/components/toolbar/src/RsToolbar.d.ts +41 -16
  248. package/dist/components/toolbar/src/RsToolbar.impl.js +146 -18
  249. package/dist/components/toolbar/src/RsToolbar.js +2 -1
  250. package/dist/components/toolbar/src/toolbar-utils.d.ts +20 -0
  251. package/dist/components/toolbar/src/toolbar-utils.js +105 -0
  252. package/dist/components/tooltip/index.d.ts +1 -0
  253. package/dist/components/tooltip/src/RsTooltip.css +104 -26
  254. package/dist/components/tooltip/src/RsTooltip.d.ts +38 -16
  255. package/dist/components/tooltip/src/RsTooltip.impl.js +420 -51
  256. package/dist/components/tooltip/src/RsTooltip.js +2 -1
  257. package/dist/components/tooltip/src/RsTooltipProvider.d.ts +4 -4
  258. package/dist/components/tooltip/src/RsTooltipProvider.impl.js +51 -14
  259. package/dist/components/tooltip/src/tooltip-utils.d.ts +30 -0
  260. package/dist/components/tooltip/src/tooltip-utils.js +23 -0
  261. package/dist/components/tree/index.d.ts +2 -2
  262. package/dist/components/tree/src/RsTree.css +84 -75
  263. package/dist/components/tree/src/RsTree.d.ts +20 -20
  264. package/dist/components/tree/src/RsTree.impl.js +292 -66
  265. package/dist/components/tree/src/RsTree.js +1 -1
  266. package/dist/components/tree/src/tree-utils.d.ts +22 -0
  267. package/dist/components/tree/src/tree-utils.js +18 -4
  268. package/dist/components/tree-select/src/RsTreeSelect.d.ts +1 -1
  269. package/dist/components/virtual-list/index.d.ts +1 -1
  270. package/dist/components/virtual-list/src/RsVirtualList.css +64 -9
  271. package/dist/components/virtual-list/src/RsVirtualList.d.ts +31 -5
  272. package/dist/components/virtual-list/src/RsVirtualList.impl.js +425 -76
  273. package/dist/components/virtual-list/src/RsVirtualList.js +1 -1
  274. package/dist/components/virtual-list/src/virtual-list-utils.d.ts +64 -1
  275. package/dist/components/virtual-list/src/virtual-list-utils.js +215 -1
  276. package/dist/composables/useRsLoadingBar.d.ts +2 -5
  277. package/dist/composables/useRsLoadingBar.js +21 -5
  278. package/dist/composables/useRsTabsNav.d.ts +3 -1
  279. package/dist/composables/useRsTabsNav.js +96 -28
  280. package/dist/composables/useRsToast.d.ts +11 -13
  281. package/dist/composables/useRsToast.js +66 -17
  282. package/dist/index.d.ts +30 -21
  283. package/dist/index.js +14 -0
  284. package/dist/locale/apply.js +6 -1
  285. package/dist/locale/messages.js +128 -2
  286. package/dist/styles.css +465 -808
  287. package/dist/theme/brand.example.css +3 -2
  288. package/dist/vite-plugins/niuma-ui-host.js +1 -1
  289. package/package.json +2 -5
  290. package/dist/components/_shared/src/reka.d.ts +0 -2
  291. package/dist/components/_shared/src/reka.js +0 -2
@@ -1,4 +1,3 @@
1
- import { readDocumentTheme } from "../../code-editor/src/code-editor-utils.js";
2
1
  //#region src/components/terminal/src/terminal-utils.ts
3
2
  var TERMINAL_CSS_KEYS = [
4
3
  ["background", "--rs-terminal-bg"],
@@ -112,10 +111,24 @@ function themeSourceElement(mode) {
112
111
  if (document.documentElement.dataset.rsTheme === mode) return document.documentElement;
113
112
  return themeProbeElement(mode);
114
113
  }
115
- /** 从全局 `--rs-terminal-*` token 构建 xterm 调色板(须已加载 styles.css) */
116
- function readTerminalThemeFromCss(mode) {
114
+ /**
115
+ * auto 看最近的 `data-rs-theme`,没有时看 documentElement。
116
+ * 未写或不是 dark 时跟全库浅色。传入元素时深色岛不必改整页。
117
+ */
118
+ function resolveTerminalTheme(mode = "auto", el) {
119
+ if (mode !== "auto") return mode;
120
+ if (typeof document === "undefined") return "light";
121
+ const node = el?.closest?.("[data-rs-theme]") ?? document.documentElement;
122
+ return (node instanceof HTMLElement ? node.dataset.rsTheme : null) === "dark" ? "dark" : "light";
123
+ }
124
+ function pickThemeSource(mode, el) {
125
+ if (el && resolveTerminalTheme("auto", el) === mode) return el;
126
+ return themeSourceElement(mode);
127
+ }
128
+ /** 从 `--rs-terminal-*` 构建 xterm 调色板。传入宿主时读继承到的 token。 */
129
+ function readTerminalThemeFromCss(mode, el) {
117
130
  if (typeof document === "undefined" || typeof getComputedStyle === "undefined") return {};
118
- const source = themeSourceElement(mode);
131
+ const source = pickThemeSource(mode, el);
119
132
  const theme = {};
120
133
  for (const [key, cssVar] of TERMINAL_CSS_KEYS) {
121
134
  const value = resolveCssColorForXterm(readResolvedCssColor(cssVar, source, BACKGROUND_THEME_KEYS.has(key)));
@@ -123,15 +136,12 @@ function readTerminalThemeFromCss(mode) {
123
136
  }
124
137
  return theme;
125
138
  }
126
- function resolveTerminalTheme(mode = "auto") {
127
- return mode === "auto" ? readDocumentTheme() : mode;
128
- }
129
139
  function getTerminalThemePalette(mode) {
130
140
  return readTerminalThemeFromCss(mode);
131
141
  }
132
- function mergeTerminalTheme(mode, overrides) {
142
+ function mergeTerminalTheme(mode, overrides, el) {
133
143
  return {
134
- ...readTerminalThemeFromCss(mode),
144
+ ...readTerminalThemeFromCss(mode, el),
135
145
  ...overrides
136
146
  };
137
147
  }
@@ -216,6 +226,99 @@ function isMacPlatform() {
216
226
  function terminalShortcutLabel(key) {
217
227
  return isMacPlatform() ? `⌘${key}` : `Ctrl+${key}`;
218
228
  }
229
+ var themeListeners = /* @__PURE__ */ new Set();
230
+ var sharedThemeObserver = null;
231
+ function ensureTerminalThemeObserver() {
232
+ if (sharedThemeObserver || typeof document === "undefined" || typeof MutationObserver === "undefined") return;
233
+ sharedThemeObserver = new MutationObserver(() => {
234
+ for (const listener of themeListeners) listener();
235
+ });
236
+ sharedThemeObserver.observe(document.documentElement, {
237
+ attributes: true,
238
+ attributeFilter: ["data-rs-theme"],
239
+ subtree: true
240
+ });
241
+ }
242
+ /**
243
+ * 多个终端共用一个 `data-rs-theme` 观察器(含主题岛)。
244
+ * 最后一个退订时断开,避免卸载后仍监听整棵文档。
245
+ */
246
+ function subscribeTerminalTheme(listener) {
247
+ if (typeof document === "undefined" || typeof MutationObserver === "undefined") return () => void 0;
248
+ themeListeners.add(listener);
249
+ ensureTerminalThemeObserver();
250
+ return () => {
251
+ themeListeners.delete(listener);
252
+ if (themeListeners.size === 0 && sharedThemeObserver) {
253
+ sharedThemeObserver.disconnect();
254
+ sharedThemeObserver = null;
255
+ }
256
+ };
257
+ }
258
+ var TERMINAL_LINK_TRAILING = /* @__PURE__ */ new Set([
259
+ ".",
260
+ ",",
261
+ ";",
262
+ ":",
263
+ "!",
264
+ "?",
265
+ ")",
266
+ ">",
267
+ "]"
268
+ ]);
269
+ function trimTerminalLinkPunctuation(raw) {
270
+ let end = raw.length;
271
+ while (end > 0 && TERMINAL_LINK_TRAILING.has(raw.charAt(end - 1))) end -= 1;
272
+ return raw.slice(0, end);
273
+ }
274
+ /** 只放行 http(s) 与 mailto。javascript: / data: 一律拒绝。 */
275
+ function isSafeTerminalLink(value) {
276
+ try {
277
+ const url = new URL(value);
278
+ return url.protocol === "http:" || url.protocol === "https:" || url.protocol === "mailto:";
279
+ } catch {
280
+ return false;
281
+ }
282
+ }
283
+ /** 从一行可见文本里找出可点的 http(s) / mailto。end 为不含尾标点的字符串下标。 */
284
+ function findTerminalHttpLinks(line) {
285
+ if (!line.includes("http") && !line.includes("mailto")) return [];
286
+ const re = /(?:https?:\/\/|mailto:)[^\s<>"']+/gi;
287
+ const out = [];
288
+ let match;
289
+ while (match = re.exec(line)) {
290
+ const text = trimTerminalLinkPunctuation(match[0]);
291
+ if (!text || !isSafeTerminalLink(text)) continue;
292
+ out.push({
293
+ start: match.index,
294
+ end: match.index + text.length,
295
+ text
296
+ });
297
+ }
298
+ return out;
299
+ }
300
+ /**
301
+ * 把字符串下标换成 xterm 1-based 单元格列。
302
+ * 宽字符占两格,后续 width 0 的格子跳过,避免链接框落在汉字上。
303
+ */
304
+ function terminalCellIndexForString(cells, stringIndex) {
305
+ let seen = 0;
306
+ for (let i = 0; i < cells.length; i += 1) {
307
+ if ((cells[i]?.width ?? 1) < 1) continue;
308
+ if (seen >= stringIndex) return i + 1;
309
+ const chars = cells[i]?.chars ?? "";
310
+ seen += chars.length || 1;
311
+ }
312
+ return Math.max(1, cells.length);
313
+ }
314
+ function terminalLinkCellRange(cells, start, end) {
315
+ const startX = terminalCellIndexForString(cells, start);
316
+ const endX = terminalCellIndexForString(cells, Math.max(start, end - 1));
317
+ return {
318
+ startX,
319
+ endX: Math.max(startX, endX)
320
+ };
321
+ }
219
322
  /** ANSI 16 色演示文本 */
220
323
  function buildAnsiColorDemo() {
221
324
  const names = [
@@ -252,4 +355,4 @@ function buildAnsiColorDemo() {
252
355
  ].join("\r\n")}\r\n`;
253
356
  }
254
357
  //#endregion
255
- export { buildAnsiColorDemo, containsAltScreenEnter, containsEscapeSequence, containsFullScreenClear, containsTuiRefreshSequence, getTerminalThemePalette, isMacPlatform, mergeTerminalTheme, needsPtyWriteViewportPrep, normalizeTerminalHexColor, prepareTerminalForPtyWrite, proposeTerminalGeometry, readTerminalThemeFromCss, readXtermCssCellSize, resetLocalTerminalModes, resolveCssColorForXterm, resolveTerminalTheme, snapTerminalViewportToBottom, terminalShortcutLabel };
358
+ export { buildAnsiColorDemo, containsAltScreenEnter, containsEscapeSequence, containsFullScreenClear, containsTuiRefreshSequence, findTerminalHttpLinks, getTerminalThemePalette, isMacPlatform, isSafeTerminalLink, mergeTerminalTheme, needsPtyWriteViewportPrep, normalizeTerminalHexColor, prepareTerminalForPtyWrite, proposeTerminalGeometry, readTerminalThemeFromCss, readXtermCssCellSize, resetLocalTerminalModes, resolveCssColorForXterm, resolveTerminalTheme, snapTerminalViewportToBottom, subscribeTerminalTheme, terminalCellIndexForString, terminalLinkCellRange, terminalShortcutLabel };
@@ -91,11 +91,11 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, RsTex
91
91
  resize: RsTextareaResize;
92
92
  disabled: boolean;
93
93
  readonly: boolean;
94
+ rows: number;
94
95
  validateTrigger: RsInputValidateTrigger;
95
96
  clearable: boolean;
96
97
  showCount: boolean;
97
98
  showValidateMessage: boolean;
98
- rows: number;
99
99
  autosize: RsTextareaAutosize;
100
100
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
101
101
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -59,16 +59,16 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, RsT
59
59
  focus: () => any;
60
60
  clear: () => any;
61
61
  "update:modelValue": (value: RsTimePickerModelValue) => any;
62
- "update:open": (value: boolean) => any;
63
62
  openChange: (open: boolean) => any;
63
+ "update:open": (value: boolean) => any;
64
64
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
65
65
  onChange?: ((value: RsTimePickerModelValue) => any) | undefined;
66
66
  onBlur?: (() => any) | undefined;
67
67
  onFocus?: (() => any) | undefined;
68
68
  onClear?: (() => any) | undefined;
69
69
  "onUpdate:modelValue"?: ((value: RsTimePickerModelValue) => any) | undefined;
70
- "onUpdate:open"?: ((value: boolean) => any) | undefined;
71
70
  onOpenChange?: ((open: boolean) => any) | undefined;
71
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
72
72
  }>, {
73
73
  required: boolean;
74
74
  disabled: boolean;
@@ -1,141 +1,150 @@
1
1
 
2
- [data-sonner-toaster].rs-toaster {
3
- --rs-toast-radius: 1rem;
4
- --rs-toast-bg: color-mix(in srgb, var(--rs-surface-elevated) 86%, transparent);
5
- --rs-toast-border: color-mix(in srgb, var(--rs-border) 72%, rgb(255 255 255 / 0.08));
6
- --rs-toast-shadow:
7
- 0 16px 40px -20px rgb(0 0 0 / 0.3),
8
- 0 8px 18px -14px rgb(0 0 0 / 0.18),
9
- 0 0 0 0.5px rgb(255 255 255 / 0.08);
10
- --rs-toast-tint: color-mix(in srgb, var(--rs-info) 7%, transparent);
11
- --rs-toast-highlight: rgb(255 255 255 / 0.08);
2
+ .rs-toaster {
3
+ --rs-toaster-offset: var(--rs-space-lg);
4
+ --rs-toaster-gap: var(--rs-space-xs);
5
+ --rs-toast-radius: var(--rs-radius-lg, 1rem);
6
+ --rs-toast-bg: color-mix(in srgb, var(--rs-surface-elevated) 88%, transparent);
7
+ --rs-toast-border: color-mix(in srgb, var(--rs-border) 72%, transparent);
8
+ --rs-toast-shadow: var(--rs-shadow-lg);
9
+ position: fixed;
12
10
  z-index: var(--rs-z-toast);
11
+ pointer-events: none;
13
12
  font-family: inherit;
13
+ color: var(--rs-text);
14
14
  }
15
- [data-rs-theme='light'] [data-sonner-toaster].rs-toaster {
16
- --rs-toast-bg: color-mix(in srgb, var(--rs-surface-elevated) 94%, rgb(255 255 255 / 0.8));
17
- --rs-toast-border: color-mix(in srgb, var(--rs-border) 84%, rgb(255 255 255 / 0.9));
18
- --rs-toast-shadow:
19
- 0 18px 42px -24px rgb(15 23 42 / 0.2),
20
- 0 8px 18px -14px rgb(15 23 42 / 0.12),
21
- 0 0 0 0.5px rgb(255 255 255 / 0.86);
22
- --rs-toast-tint: color-mix(in srgb, var(--rs-info) 4%, #ffffff);
23
- --rs-toast-highlight: rgb(255 255 255 / 0.72);
24
- }
25
- [data-sonner-toaster].rs-toaster [data-sonner-toast].rs-toast {
26
- position: absolute;
15
+ .rs-toaster__viewport {
16
+ position: fixed;
17
+ z-index: var(--rs-z-toast);
18
+ display: flex;
19
+ flex-direction: column;
20
+ gap: var(--rs-toaster-gap);
21
+ width: max-content;
22
+ max-width: calc(100vw - 1.5rem);
23
+ margin: 0;
24
+ padding: 0;
25
+ list-style: none;
26
+ pointer-events: none;
27
+ }
28
+ .rs-toaster__viewport--top-left {
29
+ top: max(var(--rs-toaster-offset), env(safe-area-inset-top));
30
+ left: max(var(--rs-toaster-offset), env(safe-area-inset-left));
27
31
  }
28
- [data-sonner-toaster].rs-toaster [data-sonner-toast].rs-toast[data-y-position='top'] {
29
- top: 0;
32
+ .rs-toaster__viewport--top-right {
33
+ top: max(var(--rs-toaster-offset), env(safe-area-inset-top));
34
+ right: max(var(--rs-toaster-offset), env(safe-area-inset-right));
30
35
  }
31
- [data-sonner-toaster].rs-toaster [data-sonner-toast].rs-toast[data-y-position='bottom'] {
32
- top: auto;
33
- bottom: 0;
36
+ .rs-toaster__viewport--top-center {
37
+ top: max(var(--rs-toaster-offset), env(safe-area-inset-top));
38
+ left: 50%;
39
+ transform: translateX(-50%);
40
+ align-items: center;
41
+ }
42
+ .rs-toaster__viewport--bottom-left {
43
+ bottom: max(var(--rs-toaster-offset), env(safe-area-inset-bottom));
44
+ left: max(var(--rs-toaster-offset), env(safe-area-inset-left));
45
+ flex-direction: column-reverse;
46
+ }
47
+ .rs-toaster__viewport--bottom-right {
48
+ bottom: max(var(--rs-toaster-offset), env(safe-area-inset-bottom));
49
+ right: max(var(--rs-toaster-offset), env(safe-area-inset-right));
50
+ flex-direction: column-reverse;
51
+ }
52
+ .rs-toaster__viewport--bottom-center {
53
+ bottom: max(var(--rs-toaster-offset), env(safe-area-inset-bottom));
54
+ left: 50%;
55
+ transform: translateX(-50%);
56
+ flex-direction: column-reverse;
57
+ align-items: center;
34
58
  }
35
- [data-sonner-toaster].rs-toaster [data-sonner-toast].rs-toast[data-x-position='left'] {
36
- left: 0;
59
+ .rs-toaster__viewport--collapsed {
60
+ display: grid;
37
61
  }
38
- [data-sonner-toaster].rs-toaster [data-sonner-toast].rs-toast[data-x-position='right'] {
39
- right: 0;
62
+ .rs-toaster__viewport--collapsed .rs-toast {
63
+ grid-area: 1 / 1;
40
64
  }
41
- [data-sonner-toaster].rs-toaster [data-sonner-toast].rs-toast[data-x-position='center'] {
42
- inset-inline: 0;
65
+ .rs-toaster__viewport--collapsed .rs-toast:not(.rs-toast--front) {
66
+ pointer-events: none;
67
+ transform: translateY(calc(var(--rs-toast-index) * 0.45rem)) scale(calc(1 - var(--rs-toast-index) * 0.04));
68
+ }
69
+ .rs-toaster__viewport--bottom-left.rs-toaster__viewport--collapsed .rs-toast:not(.rs-toast--front),
70
+ .rs-toaster__viewport--bottom-right.rs-toaster__viewport--collapsed .rs-toast:not(.rs-toast--front),
71
+ .rs-toaster__viewport--bottom-center.rs-toaster__viewport--collapsed .rs-toast:not(.rs-toast--front) {
72
+ transform: translateY(calc(var(--rs-toast-index) * -0.45rem)) scale(calc(1 - var(--rs-toast-index) * 0.04));
43
73
  }
44
74
  .rs-toast {
45
75
  --rs-toast-accent: color-mix(in srgb, var(--rs-info) 68%, transparent);
46
- overflow: hidden;
76
+ --rs-toast-tint: color-mix(in srgb, var(--rs-info) 7%, transparent);
77
+ position: relative;
47
78
  display: grid;
48
79
  grid-template-columns: auto minmax(0, 1fr);
49
80
  align-items: center;
50
- column-gap: 0.625rem;
51
- row-gap: 0.5rem;
52
- width: var(--width, auto);
53
- min-width: 19rem;
81
+ column-gap: var(--rs-space-sm);
82
+ row-gap: var(--rs-space-xs);
83
+ width: max-content;
84
+ min-width: min(19rem, calc(100vw - 1.5rem));
54
85
  max-width: min(29rem, calc(100vw - 1.5rem));
55
- padding: 0.8125rem 2.25rem 0.8125rem 0.875rem;
86
+ margin: 0;
87
+ padding-block: var(--rs-space-md);
88
+ padding-inline: var(--rs-space-md) 2.25rem;
56
89
  border: 1px solid var(--rs-toast-border);
57
90
  border-radius: var(--rs-toast-radius);
58
91
  background:
59
- linear-gradient(
60
- 180deg,
61
- transparent 0.5rem,
62
- var(--rs-toast-accent) 0.5rem calc(100% - 0.5rem),
63
- transparent calc(100% - 0.5rem)
64
- )
65
- 0.5rem 0 / 2px 100% no-repeat,
66
- linear-gradient(180deg, var(--rs-toast-highlight), transparent 38%),
92
+ linear-gradient(180deg, rgb(255 255 255 / 0.08), transparent 38%),
67
93
  linear-gradient(135deg, var(--rs-toast-tint), transparent 34%),
68
94
  var(--rs-toast-bg);
69
95
  color: var(--rs-text);
70
- box-shadow:
71
- var(--rs-toast-shadow),
72
- inset 0 1px 0 rgb(255 255 255 / 0.08);
96
+ box-shadow: var(--rs-toast-shadow);
73
97
  backdrop-filter: blur(20px) saturate(150%);
74
98
  -webkit-backdrop-filter: blur(20px) saturate(150%);
99
+ pointer-events: auto;
100
+ list-style: none;
75
101
  transition:
76
- box-shadow var(--rs-transition-normal),
77
- border-color var(--rs-transition-fast),
78
- background var(--rs-transition-fast);
102
+ opacity var(--rs-transition-fast),
103
+ transform var(--rs-transition-fast),
104
+ box-shadow var(--rs-transition-normal);
105
+ }
106
+ .rs-toast::before {
107
+ content: '';
108
+ position: absolute;
109
+ inset-inline-start: var(--rs-space-sm);
110
+ inset-block: var(--rs-space-sm);
111
+ width: 2px;
112
+ border-radius: var(--rs-radius-full);
113
+ background: var(--rs-toast-accent);
114
+ pointer-events: none;
79
115
  }
80
-
81
- /* 带描述时顶对齐,图标与标题第一行光学对齐 */
82
116
  .rs-toast:has([data-description]) {
83
117
  align-items: start;
84
- padding-top: 0.875rem;
85
- padding-bottom: 0.875rem;
86
- }
87
- .rs-toast:hover {
88
- box-shadow:
89
- 0 18px 42px -20px rgb(0 0 0 / 0.34),
90
- 0 10px 24px -16px rgb(0 0 0 / 0.22),
91
- 0 0 0 0.5px rgb(255 255 255 / 0.1),
92
- inset 0 1px 0 rgb(255 255 255 / 0.08);
93
118
  }
94
- .rs-toast[data-styled='true'] {
95
- gap: 0;
119
+ .rs-toast--leaving {
120
+ opacity: 0;
96
121
  }
97
- .rs-toast [data-icon] {
98
- position: relative;
99
- z-index: 1;
122
+ .rs-toast__icon {
100
123
  grid-column: 1;
101
124
  grid-row: 1;
102
125
  display: inline-flex;
103
126
  align-items: center;
104
127
  justify-content: center;
105
- align-self: center;
106
128
  width: 1.25rem;
107
129
  height: 1.25rem;
108
- margin: 0;
109
- border-radius: 999px;
110
- background: transparent;
111
130
  color: var(--rs-info);
112
- box-shadow: none;
113
131
  }
114
- .rs-toast [data-icon] svg {
115
- width: 1.25rem;
116
- height: 1.25rem;
117
- flex-shrink: 0;
118
- }
119
-
120
- /* 多行内容时,图标略下移以对齐标题字面中线 */
121
- .rs-toast:has([data-description]) [data-icon] {
132
+ .rs-toast:has([data-description]) .rs-toast__icon {
122
133
  align-self: start;
123
134
  margin-top: 0.125rem;
124
135
  }
125
- .rs-toast [data-content] {
126
- position: relative;
127
- z-index: 1;
136
+ .rs-toast__body {
128
137
  grid-column: 2;
129
138
  grid-row: 1;
130
139
  display: grid;
131
140
  gap: 0.1875rem;
132
141
  min-width: 0;
133
142
  }
134
- .rs-toast [data-button] {
135
- position: relative;
136
- z-index: 1;
143
+ .rs-toast__actions {
137
144
  grid-column: 2;
138
- margin-top: 0;
145
+ display: flex;
146
+ flex-wrap: wrap;
147
+ gap: var(--rs-space-xs);
139
148
  }
140
149
  .rs-toast__title {
141
150
  margin: 0;
@@ -143,21 +152,17 @@
143
152
  font-size: var(--rs-font-size-sm);
144
153
  font-weight: var(--rs-font-weight-semibold);
145
154
  line-height: var(--rs-line-height-tight);
146
- letter-spacing: -0.012em;
147
155
  }
148
156
  .rs-toast__description {
149
157
  margin: 0;
150
- color: color-mix(in srgb, var(--rs-muted) 94%, var(--rs-text) 6%);
158
+ color: var(--rs-text-secondary, var(--rs-muted));
151
159
  font-size: var(--rs-font-size-xs);
152
160
  line-height: var(--rs-line-height-normal);
153
161
  }
154
- .rs-toast [data-close-button].rs-toast__close {
162
+ .rs-toast__close {
155
163
  position: absolute;
156
164
  top: 50%;
157
- inset-inline-end: 0.625rem;
158
- inset-inline-start: auto;
159
- bottom: auto;
160
- z-index: 2;
165
+ inset-inline-end: var(--rs-space-sm);
161
166
  display: inline-flex;
162
167
  align-items: center;
163
168
  justify-content: center;
@@ -165,165 +170,113 @@
165
170
  height: 1.25rem;
166
171
  padding: 0;
167
172
  border: 1px solid transparent;
168
- border-radius: 999px;
173
+ border-radius: var(--rs-radius-full);
169
174
  background: transparent;
170
175
  color: var(--rs-muted);
171
- box-shadow: none;
172
176
  cursor: pointer;
173
177
  transform: translateY(-50%);
174
- opacity: 0.72;
175
- transition:
176
- opacity var(--rs-transition-fast),
177
- color var(--rs-transition-fast),
178
- border-color var(--rs-transition-fast),
179
- background var(--rs-transition-fast),
180
- box-shadow var(--rs-transition-fast);
181
178
  }
182
- .rs-toast:has([data-description]) [data-close-button].rs-toast__close {
183
- top: 0.75rem;
179
+ .rs-toast:has([data-description]) .rs-toast__close {
180
+ top: var(--rs-space-sm);
184
181
  transform: none;
185
182
  }
186
- .rs-toast [data-close-button].rs-toast__close svg {
187
- width: 0.75rem;
188
- height: 0.75rem;
189
- flex-shrink: 0;
190
- }
191
- .rs-toast [data-close-button].rs-toast__close:hover {
192
- opacity: 0.96;
183
+ .rs-toast__close:hover {
193
184
  color: var(--rs-text);
194
185
  border-color: color-mix(in srgb, var(--rs-border) 68%, transparent);
195
- background: color-mix(in srgb, var(--rs-surface-hover) 70%, transparent);
196
- box-shadow:
197
- inset 0 1px 0 rgb(255 255 255 / 0.08),
198
- 0 1px 4px rgb(0 0 0 / 0.08);
186
+ background: color-mix(in srgb, var(--rs-surface-hover, var(--rs-item-hover)) 70%, transparent);
199
187
  }
200
- .rs-toast [data-close-button].rs-toast__close:focus-visible {
188
+ .rs-toast__close:focus-visible,
189
+ .rs-toast__action:focus-visible,
190
+ .rs-toaster:focus-visible {
201
191
  outline: none;
202
- box-shadow:
203
- inset 0 1px 0 rgb(255 255 255 / 0.08),
204
- 0 0 0 var(--rs-focus-ring-width, 2px) var(--rs-focus-ring);
192
+ box-shadow: 0 0 0 var(--rs-focus-ring-width, 2px) var(--rs-focus-ring);
205
193
  }
206
194
  .rs-toast__action {
207
195
  display: inline-flex;
208
196
  align-items: center;
209
197
  justify-content: center;
210
- min-width: 4.5rem;
211
- min-height: 2rem;
212
- padding: 0 0.75rem;
198
+ min-height: var(--rs-control-height-sm);
199
+ padding-inline: var(--rs-space-sm);
213
200
  border: 1px solid transparent;
214
- border-radius: 999px;
215
- background: color-mix(in srgb, var(--rs-primary) 92%, white 8%);
201
+ border-radius: var(--rs-radius-full);
202
+ background: var(--rs-primary);
216
203
  color: var(--rs-primary-foreground);
217
204
  font-size: var(--rs-font-size-xs);
218
205
  font-weight: var(--rs-font-weight-semibold);
219
206
  line-height: 1;
220
- letter-spacing: 0.01em;
221
- box-shadow:
222
- inset 0 1px 0 rgb(255 255 255 / 0.16),
223
- 0 1px 2px rgb(0 0 0 / 0.08);
224
207
  cursor: pointer;
225
- transition:
226
- transform var(--rs-transition-fast),
227
- background var(--rs-transition-fast),
228
- border-color var(--rs-transition-fast),
229
- box-shadow var(--rs-transition-fast),
230
- color var(--rs-transition-fast);
231
- }
232
- .rs-toast__action:hover {
233
- transform: translateY(-0.5px);
234
- background: color-mix(in srgb, var(--rs-primary-hover) 94%, white 6%);
235
- box-shadow:
236
- inset 0 1px 0 rgb(255 255 255 / 0.18),
237
- 0 4px 10px rgb(0 0 0 / 0.12);
238
- }
239
- .rs-toast__action:active {
240
- transform: translateY(0);
241
- box-shadow:
242
- inset 0 1px 1px rgb(0 0 0 / 0.08),
243
- 0 1px 3px rgb(0 0 0 / 0.08);
244
- }
245
- .rs-toast__action:focus-visible {
246
- outline: none;
247
- box-shadow:
248
- inset 0 1px 0 rgb(255 255 255 / 0.18),
249
- 0 0 0 var(--rs-focus-ring-width, 2px) var(--rs-focus-ring);
250
208
  }
251
209
  .rs-toast__action--secondary {
252
210
  border-color: color-mix(in srgb, var(--rs-border) 72%, transparent);
253
211
  background: color-mix(in srgb, var(--rs-surface) 82%, transparent);
254
212
  color: var(--rs-text);
255
- box-shadow:
256
- inset 0 1px 0 rgb(255 255 255 / 0.08),
257
- 0 1px 2px rgb(0 0 0 / 0.04);
258
- }
259
- .rs-toast__action--secondary:hover {
260
- background: color-mix(in srgb, var(--rs-surface-hover) 82%, transparent);
261
- border-color: color-mix(in srgb, var(--rs-border) 88%, transparent);
262
- box-shadow:
263
- inset 0 1px 0 rgb(255 255 255 / 0.1),
264
- 0 3px 8px rgb(0 0 0 / 0.08);
265
- }
266
- .rs-toast[data-type='success'] {
213
+ }
214
+ .rs-toast--success {
267
215
  --rs-toast-accent: color-mix(in srgb, var(--rs-success) 68%, transparent);
268
- --rs-toast-tint: color-mix(in srgb, var(--rs-success) 7%, transparent);
216
+ --rs-toast-tint: color-mix(in srgb, var(--rs-success) 8%, transparent);
269
217
  }
270
- .rs-toast[data-type='success'] [data-icon] {
218
+ .rs-toast--success .rs-toast__icon {
271
219
  color: var(--rs-success);
272
220
  }
273
- .rs-toast[data-type='error'] {
221
+ .rs-toast--error {
274
222
  --rs-toast-accent: color-mix(in srgb, var(--rs-danger) 68%, transparent);
275
- --rs-toast-tint: color-mix(in srgb, var(--rs-danger) 7%, transparent);
223
+ --rs-toast-tint: color-mix(in srgb, var(--rs-danger) 8%, transparent);
276
224
  }
277
- .rs-toast[data-type='error'] [data-icon] {
225
+ .rs-toast--error .rs-toast__icon {
278
226
  color: var(--rs-danger);
279
227
  }
280
- .rs-toast[data-type='warning'] {
228
+ .rs-toast--warning {
281
229
  --rs-toast-accent: color-mix(in srgb, var(--rs-warning) 72%, transparent);
282
230
  --rs-toast-tint: color-mix(in srgb, var(--rs-warning) 8%, transparent);
283
231
  }
284
- .rs-toast[data-type='warning'] [data-icon] {
232
+ .rs-toast--warning .rs-toast__icon {
285
233
  color: var(--rs-warning);
286
234
  }
287
- .rs-toast[data-type='info'],
288
- .rs-toast[data-type='default'] {
289
- --rs-toast-accent: color-mix(in srgb, var(--rs-info) 68%, transparent);
290
- --rs-toast-tint: color-mix(in srgb, var(--rs-info) 7%, transparent);
291
- }
292
- .rs-toast[data-type='loading'] {
235
+ .rs-toast--loading {
293
236
  --rs-toast-accent: color-mix(in srgb, var(--rs-primary) 68%, transparent);
294
- --rs-toast-tint: color-mix(in srgb, var(--rs-primary) 7%, transparent);
237
+ --rs-toast-tint: color-mix(in srgb, var(--rs-primary) 8%, transparent);
295
238
  }
296
- .rs-toast[data-type='loading'] [data-icon] {
239
+ .rs-toast--loading .rs-toast__icon {
297
240
  color: var(--rs-primary);
298
241
  }
299
- @media (max-width: 640px) {
300
- .rs-toast {
301
- min-width: min(100%, 18.5rem);
302
- max-width: calc(100vw - 1rem);
303
- padding-block: 0.75rem;
304
- padding-inline: 0.8125rem 2.125rem;
305
- border-radius: 0.9375rem;
242
+ .rs-toast--rich.rs-toast--success {
243
+ background: color-mix(in srgb, var(--rs-success) 16%, var(--rs-surface-elevated));
244
+ border-color: color-mix(in srgb, var(--rs-success) 42%, var(--rs-border));
306
245
  }
307
- .rs-toast:has([data-description]) {
308
- padding-top: 0.8125rem;
309
- padding-bottom: 0.8125rem;
246
+ .rs-toast--rich.rs-toast--error {
247
+ background: color-mix(in srgb, var(--rs-danger) 16%, var(--rs-surface-elevated));
248
+ border-color: color-mix(in srgb, var(--rs-danger) 42%, var(--rs-border));
310
249
  }
311
- .rs-toast [data-close-button].rs-toast__close {
312
- inset-inline-end: 0.5rem;
313
- width: 1.25rem;
314
- height: 1.25rem;
250
+ .rs-toast--rich.rs-toast--warning {
251
+ background: color-mix(in srgb, var(--rs-warning) 18%, var(--rs-surface-elevated));
252
+ border-color: color-mix(in srgb, var(--rs-warning) 46%, var(--rs-border));
315
253
  }
316
- .rs-toast:has([data-description]) [data-close-button].rs-toast__close {
317
- top: 0.625rem;
254
+ .rs-toast--rich.rs-toast--info,
255
+ .rs-toast--rich.rs-toast--default {
256
+ background: color-mix(in srgb, var(--rs-info) 14%, var(--rs-surface-elevated));
257
+ border-color: color-mix(in srgb, var(--rs-info) 40%, var(--rs-border));
318
258
  }
319
- .rs-toast__action {
320
- min-height: 1.875rem;
321
- padding: 0 0.6875rem;
259
+ @media (max-width: 640px) {
260
+ .rs-toast {
261
+ min-width: min(100%, 18.5rem);
262
+ max-width: calc(100vw - 1rem);
322
263
  }
323
264
  }
324
265
  @media (prefers-reduced-motion: reduce) {
325
266
  .rs-toast,
326
- .rs-toast__action {
267
+ .rs-toast__action,
268
+ .rs-toast__close {
327
269
  transition: none;
328
270
  }
271
+ .rs-toast {
272
+ backdrop-filter: none;
273
+ -webkit-backdrop-filter: none;
274
+ }
275
+ }
276
+ @media (prefers-reduced-transparency: reduce) {
277
+ .rs-toast {
278
+ backdrop-filter: none;
279
+ -webkit-backdrop-filter: none;
280
+ background: var(--rs-surface-elevated);
281
+ }
329
282
  }