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
package/dist/styles.css CHANGED
@@ -1,647 +1,3 @@
1
-
2
- html[dir='ltr'],
3
- [data-sonner-toaster][dir='ltr'] {
4
- --toast-icon-margin-start: -3px;
5
- --toast-icon-margin-end: 4px;
6
- --toast-svg-margin-start: -1px;
7
- --toast-svg-margin-end: 0px;
8
- --toast-button-margin-start: auto;
9
- --toast-button-margin-end: 0;
10
- }
11
- html[dir='rtl'],
12
- [data-sonner-toaster][dir='rtl'] {
13
- --toast-icon-margin-start: 4px;
14
- --toast-icon-margin-end: -3px;
15
- --toast-svg-margin-start: 0px;
16
- --toast-svg-margin-end: -1px;
17
- --toast-button-margin-start: 0;
18
- --toast-button-margin-end: auto;
19
- }
20
- [data-sonner-toaster] {
21
- position: fixed;
22
- width: var(--width);
23
- font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial,
24
- Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
25
- --gray1: hsl(0, 0%, 99%);
26
- --gray2: hsl(0, 0%, 97.3%);
27
- --gray3: hsl(0, 0%, 95.1%);
28
- --gray4: hsl(0, 0%, 93%);
29
- --gray5: hsl(0, 0%, 90.9%);
30
- --gray6: hsl(0, 0%, 88.7%);
31
- --gray7: hsl(0, 0%, 85.8%);
32
- --gray8: hsl(0, 0%, 78%);
33
- --gray9: hsl(0, 0%, 56.1%);
34
- --gray10: hsl(0, 0%, 52.3%);
35
- --gray11: hsl(0, 0%, 43.5%);
36
- --gray12: hsl(0, 0%, 9%);
37
- --border-radius: 8px;
38
- box-sizing: border-box;
39
- padding: 0;
40
- margin: 0;
41
- list-style: none;
42
- outline: none;
43
- z-index: 999999999;
44
- transition: transform 400ms ease;
45
- }
46
- @media (hover: none) and (pointer: coarse) {
47
- [data-sonner-toaster][data-lifted='true'] {
48
- transform: none;
49
- }
50
- }
51
- [data-sonner-toaster][data-x-position='right'] {
52
- right: var(--offset-right);
53
- }
54
- [data-sonner-toaster][data-x-position='left'] {
55
- left: var(--offset-left);
56
- }
57
- [data-sonner-toaster][data-x-position='center'] {
58
- left: 50%;
59
- transform: translateX(-50%);
60
- }
61
- [data-sonner-toaster][data-y-position='top'] {
62
- top: var(--offset-top);
63
- }
64
- [data-sonner-toaster][data-y-position='bottom'] {
65
- bottom: var(--offset-bottom);
66
- }
67
- [data-sonner-toast] {
68
- --y: translateY(100%);
69
- --lift-amount: calc(var(--lift) * var(--gap));
70
- z-index: var(--z-index);
71
- position: absolute;
72
- opacity: 0;
73
- transform: var(--y);
74
- touch-action: none;
75
- transition: transform 400ms, opacity 400ms, height 400ms, box-shadow 200ms;
76
- box-sizing: border-box;
77
- outline: none;
78
- overflow-wrap: anywhere;
79
- }
80
- [data-sonner-toast][data-styled='true'] {
81
- padding: 16px;
82
- background: var(--normal-bg);
83
- border: 1px solid var(--normal-border);
84
- color: var(--normal-text);
85
- border-radius: var(--border-radius);
86
- box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.1);
87
- width: var(--width);
88
- font-size: 13px;
89
- display: flex;
90
- align-items: center;
91
- gap: 6px;
92
- }
93
- [data-sonner-toast]:focus-visible {
94
- box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.1), 0 0 0 2px rgba(0, 0, 0, 0.2);
95
- }
96
- [data-sonner-toast][data-y-position='top'] {
97
- top: 0;
98
- --y: translateY(-100%);
99
- --lift: 1;
100
- --lift-amount: calc(1 * var(--gap));
101
- }
102
- [data-sonner-toast][data-y-position='bottom'] {
103
- bottom: 0;
104
- --y: translateY(100%);
105
- --lift: -1;
106
- --lift-amount: calc(var(--lift) * var(--gap));
107
- }
108
- [data-sonner-toast][data-styled='true'] [data-description] {
109
- font-weight: 400;
110
- line-height: 1.4;
111
- color: #3f3f3f;
112
- }
113
- [data-rich-colors='true'][data-sonner-toast][data-styled='true'] [data-description] {
114
- color: inherit;
115
- }
116
- [data-sonner-toaster][data-sonner-theme='dark'] [data-description] {
117
- color: hsl(0, 0%, 91%);
118
- }
119
- [data-sonner-toast][data-styled='true'] [data-title] {
120
- font-weight: 500;
121
- line-height: 1.5;
122
- color: inherit;
123
- }
124
- [data-sonner-toast][data-styled='true'] [data-icon] {
125
- display: flex;
126
- height: 16px;
127
- width: 16px;
128
- position: relative;
129
- justify-content: flex-start;
130
- align-items: center;
131
- flex-shrink: 0;
132
- margin-left: var(--toast-icon-margin-start);
133
- margin-right: var(--toast-icon-margin-end);
134
- }
135
- [data-sonner-toast][data-promise='true'] [data-icon] > svg {
136
- opacity: 0;
137
- transform: scale(0.8);
138
- transform-origin: center;
139
- animation: sonner-fade-in 300ms ease forwards;
140
- }
141
- [data-sonner-toast][data-styled='true'] [data-icon] > * {
142
- flex-shrink: 0;
143
- }
144
- [data-sonner-toast][data-styled='true'] [data-icon] svg {
145
- margin-left: var(--toast-svg-margin-start);
146
- margin-right: var(--toast-svg-margin-end);
147
- }
148
- [data-sonner-toast][data-styled='true'] [data-content] {
149
- display: flex;
150
- flex-direction: column;
151
- gap: 2px;
152
- }
153
- [data-sonner-toast][data-styled='true'] [data-button] {
154
- border-radius: 4px;
155
- padding-left: 8px;
156
- padding-right: 8px;
157
- height: 24px;
158
- font-size: 12px;
159
- color: var(--normal-bg);
160
- background: var(--normal-text);
161
- margin-left: var(--toast-button-margin-start);
162
- margin-right: var(--toast-button-margin-end);
163
- border: none;
164
- font-weight: 500;
165
- cursor: pointer;
166
- outline: none;
167
- display: flex;
168
- align-items: center;
169
- flex-shrink: 0;
170
- transition: opacity 400ms, box-shadow 200ms;
171
- }
172
- [data-sonner-toast][data-styled='true'] [data-button]:focus-visible {
173
- box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.4);
174
- }
175
- [data-sonner-toast][data-styled='true'] [data-button]:first-of-type {
176
- margin-left: var(--toast-button-margin-start);
177
- margin-right: var(--toast-button-margin-end);
178
- }
179
- [data-sonner-toast][data-styled='true'] [data-cancel] {
180
- color: var(--normal-text);
181
- background: rgba(0, 0, 0, 0.08);
182
- }
183
- [data-sonner-toaster][data-sonner-theme='dark'] [data-sonner-toast][data-styled='true'] [data-cancel] {
184
- background: rgba(255, 255, 255, 0.3);
185
- }
186
- [data-sonner-toaster] [data-close-button-position='top-left'] {
187
- --toast-close-button-left: 0;
188
- --toast-close-button-right: unset;
189
- --toast-close-button-top: 0;
190
- --toast-close-button-bottom: unset;
191
- --toast-close-button-transform: translate(-35%, -35%);
192
- }
193
- [data-sonner-toaster] [data-close-button-position='top-right'] {
194
- --toast-close-button-left: unset;
195
- --toast-close-button-right: 0;
196
- --toast-close-button-top: 0;
197
- --toast-close-button-bottom: unset;
198
- --toast-close-button-transform: translate(35%, -35%);
199
- }
200
- [data-sonner-toaster] [data-close-button-position='bottom-left'] {
201
- --toast-close-button-left: 0;
202
- --toast-close-button-right: unset;
203
- --toast-close-button-top: unset;
204
- --toast-close-button-bottom: 0;
205
- --toast-close-button-transform: translate(-35%, 35%);
206
- }
207
- [data-sonner-toaster] [data-close-button-position='bottom-right'] {
208
- --toast-close-button-left: unset;
209
- --toast-close-button-right: 0;
210
- --toast-close-button-top: unset;
211
- --toast-close-button-bottom: 0;
212
- --toast-close-button-transform: translate(35%, 35%);
213
- }
214
- [data-sonner-toast][data-styled='true'] [data-close-button] {
215
- position: absolute;
216
- left: var(--toast-close-button-left);
217
- right: var(--toast-close-button-right);
218
- top: var(--toast-close-button-top);
219
- bottom: var(--toast-close-button-bottom);
220
- height: 20px;
221
- width: 20px;
222
- display: flex;
223
- justify-content: center;
224
- align-items: center;
225
- padding: 0;
226
- color: var(--gray12);
227
- background: var(--normal-bg);
228
- border: 1px solid var(--gray4);
229
- transform: var(--toast-close-button-transform);
230
- border-radius: 50%;
231
- cursor: pointer;
232
- z-index: 1;
233
- transition: opacity 100ms, background 200ms, border-color 200ms;
234
- }
235
- [data-sonner-toast][data-styled='true'] [data-close-button]:focus-visible {
236
- box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.1), 0 0 0 2px rgba(0, 0, 0, 0.2);
237
- }
238
- [data-sonner-toast][data-styled='true'] [data-disabled='true'] {
239
- cursor: not-allowed;
240
- }
241
- [data-sonner-toast][data-styled='true']:hover [data-close-button]:hover {
242
- background: var(--gray2);
243
- border-color: var(--gray5);
244
- }
245
- [data-sonner-toast][data-swiping='true']::before {
246
- content: '';
247
- position: absolute;
248
- left: -100%;
249
- right: -100%;
250
- height: 100%;
251
- z-index: -1;
252
- }
253
- [data-sonner-toast][data-y-position='top'][data-swiping='true']::before {
254
- bottom: 50%;
255
- transform: scaleY(3) translateY(50%);
256
- }
257
- [data-sonner-toast][data-y-position='bottom'][data-swiping='true']::before {
258
- top: 50%;
259
- transform: scaleY(3) translateY(-50%);
260
- }
261
- [data-sonner-toast][data-swiping='false'][data-removed='true']::before {
262
- content: '';
263
- position: absolute;
264
- inset: 0;
265
- transform: scaleY(2);
266
- }
267
- [data-sonner-toast][data-expanded='true']::after {
268
- content: '';
269
- position: absolute;
270
- left: 0;
271
- height: calc(var(--gap) + 1px);
272
- bottom: 100%;
273
- width: 100%;
274
- }
275
- [data-sonner-toast][data-mounted='true'] {
276
- --y: translateY(0);
277
- opacity: 1;
278
- }
279
- [data-sonner-toast][data-expanded='false'][data-front='false'] {
280
- --scale: var(--toasts-before) * 0.05 + 1;
281
- --y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--toasts-before) * 0.05 + 1));
282
- height: var(--front-toast-height);
283
- }
284
- [data-sonner-toast] > * {
285
- transition: opacity 400ms;
286
- }
287
- [data-sonner-toast][data-x-position='right'] {
288
- right: 0;
289
- }
290
- [data-sonner-toast][data-x-position='left'] {
291
- left: 0;
292
- }
293
- [data-sonner-toast][data-expanded='false'][data-front='false'][data-styled='true'] > * {
294
- opacity: 0;
295
- }
296
- [data-sonner-toast][data-visible='false'] {
297
- opacity: 0;
298
- pointer-events: none;
299
- }
300
- [data-sonner-toast][data-mounted='true'][data-expanded='true'] {
301
- --y: translateY(calc(var(--lift) * var(--offset)));
302
- height: var(--initial-height);
303
- }
304
- [data-sonner-toast][data-removed='true'][data-front='true'][data-swipe-out='false'] {
305
- --y: translateY(calc(var(--lift) * -100%));
306
- opacity: 0;
307
- }
308
- [data-sonner-toast][data-removed='true'][data-front='false'][data-swipe-out='false'][data-expanded='true'] {
309
- --y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));
310
- opacity: 0;
311
- }
312
- [data-sonner-toast][data-removed='true'][data-front='false'][data-swipe-out='false'][data-expanded='false'] {
313
- --y: translateY(40%);
314
- opacity: 0;
315
- transition: transform 500ms, opacity 200ms;
316
- }
317
- [data-sonner-toast][data-removed='true'][data-front='false']::before {
318
- height: calc(var(--initial-height) + 20%);
319
- }
320
- [data-sonner-toast][data-swiping='true'] {
321
- transform: var(--y) translateY(var(--swipe-amount-y, 0px)) translateX(var(--swipe-amount-x, 0px));
322
- transition: none;
323
- }
324
- [data-sonner-toast][data-swiped='true'] {
325
- user-select: none;
326
- }
327
- [data-sonner-toast][data-swipe-out='true'][data-y-position='bottom'],
328
- [data-sonner-toast][data-swipe-out='true'][data-y-position='top'] {
329
- animation-duration: 200ms;
330
- animation-timing-function: ease-out;
331
- animation-fill-mode: forwards;
332
- }
333
- [data-sonner-toast][data-swipe-out='true'][data-swipe-direction='left'] {
334
- animation-name: swipe-out-left;
335
- }
336
- [data-sonner-toast][data-swipe-out='true'][data-swipe-direction='right'] {
337
- animation-name: swipe-out-right;
338
- }
339
- [data-sonner-toast][data-swipe-out='true'][data-swipe-direction='up'] {
340
- animation-name: swipe-out-up;
341
- }
342
- [data-sonner-toast][data-swipe-out='true'][data-swipe-direction='down'] {
343
- animation-name: swipe-out-down;
344
- }
345
- @keyframes swipe-out-left {
346
- from {
347
- transform: var(--y) translateX(var(--swipe-amount-x));
348
- opacity: 1;
349
- }
350
- to {
351
- transform: var(--y) translateX(calc(var(--swipe-amount-x) - 100%));
352
- opacity: 0;
353
- }
354
- }
355
- @keyframes swipe-out-right {
356
- from {
357
- transform: var(--y) translateX(var(--swipe-amount-x));
358
- opacity: 1;
359
- }
360
- to {
361
- transform: var(--y) translateX(calc(var(--swipe-amount-x) + 100%));
362
- opacity: 0;
363
- }
364
- }
365
- @keyframes swipe-out-up {
366
- from {
367
- transform: var(--y) translateY(var(--swipe-amount-y));
368
- opacity: 1;
369
- }
370
- to {
371
- transform: var(--y) translateY(calc(var(--swipe-amount-y) - 100%));
372
- opacity: 0;
373
- }
374
- }
375
- @keyframes swipe-out-down {
376
- from {
377
- transform: var(--y) translateY(var(--swipe-amount-y));
378
- opacity: 1;
379
- }
380
- to {
381
- transform: var(--y) translateY(calc(var(--swipe-amount-y) + 100%));
382
- opacity: 0;
383
- }
384
- }
385
- @media (max-width: 600px) {
386
- [data-sonner-toaster] {
387
- position: fixed;
388
- right: var(--mobile-offset-right);
389
- left: var(--mobile-offset-left);
390
- width: 100%;
391
- }
392
- [data-sonner-toaster][dir='rtl'] {
393
- left: calc(var(--mobile-offset-left) * -1);
394
- }
395
- [data-sonner-toaster] [data-sonner-toast] {
396
- left: 0;
397
- right: 0;
398
- width: calc(100% - var(--mobile-offset-left) * 2);
399
- }
400
- [data-sonner-toaster][data-x-position='left'] {
401
- left: var(--mobile-offset-left);
402
- }
403
- [data-sonner-toaster][data-y-position='bottom'] {
404
- bottom: calc(var(--mobile-offset-bottom) + max(env(safe-area-inset-bottom), 0px));
405
- }
406
- [data-sonner-toaster][data-y-position='top'] {
407
- top: calc(var(--mobile-offset-top) + max(env(safe-area-inset-top), 0px));
408
- }
409
- [data-sonner-toaster][data-x-position='center'] {
410
- left: var(--mobile-offset-left);
411
- right: var(--mobile-offset-right);
412
- transform: none;
413
- }
414
- }
415
- [data-sonner-toaster][data-sonner-theme='light'] {
416
- --normal-bg: #fff;
417
- --normal-border: var(--gray4);
418
- --normal-text: var(--gray12);
419
-
420
- --success-bg: hsl(143, 85%, 96%);
421
- --success-border: hsl(145, 92%, 87%);
422
- --success-text: hsl(140, 100%, 27%);
423
-
424
- --info-bg: hsl(208, 100%, 97%);
425
- --info-border: hsl(221, 91%, 93%);
426
- --info-text: hsl(210, 92%, 45%);
427
-
428
- --warning-bg: hsl(49, 100%, 97%);
429
- --warning-border: hsl(49, 91%, 84%);
430
- --warning-text: hsl(31, 92%, 45%);
431
-
432
- --error-bg: hsl(359, 100%, 97%);
433
- --error-border: hsl(359, 100%, 94%);
434
- --error-text: hsl(360, 100%, 45%);
435
- }
436
- [data-sonner-toaster][data-sonner-theme='light'] [data-sonner-toast][data-invert='true'] {
437
- --normal-bg: #000;
438
- --normal-border: hsl(0, 0%, 20%);
439
- --normal-text: var(--gray1);
440
- }
441
- [data-sonner-toaster][data-sonner-theme='dark'] [data-sonner-toast][data-invert='true'] {
442
- --normal-bg: #fff;
443
- --normal-border: var(--gray3);
444
- --normal-text: var(--gray12);
445
- }
446
- [data-sonner-toaster][data-sonner-theme='dark'] {
447
- --normal-bg: #000;
448
- --normal-bg-hover: hsl(0, 0%, 12%);
449
- --normal-border: hsl(0, 0%, 20%);
450
- --normal-border-hover: hsl(0, 0%, 25%);
451
- --normal-text: var(--gray1);
452
-
453
- --success-bg: hsl(150, 100%, 6%);
454
- --success-border: hsl(147, 100%, 12%);
455
- --success-text: hsl(150, 86%, 65%);
456
-
457
- --info-bg: hsl(215, 100%, 6%);
458
- --info-border: hsl(223, 43%, 17%);
459
- --info-text: hsl(216, 87%, 65%);
460
-
461
- --warning-bg: hsl(64, 100%, 6%);
462
- --warning-border: hsl(60, 100%, 9%);
463
- --warning-text: hsl(46, 87%, 65%);
464
-
465
- --error-bg: hsl(358, 76%, 10%);
466
- --error-border: hsl(357, 89%, 16%);
467
- --error-text: hsl(358, 100%, 81%);
468
- }
469
- [data-sonner-toaster][data-sonner-theme='dark'] [data-sonner-toast] [data-close-button] {
470
- background: var(--normal-bg);
471
- border-color: var(--normal-border);
472
- color: var(--normal-text);
473
- }
474
- [data-sonner-toaster][data-sonner-theme='dark'] [data-sonner-toast] [data-close-button]:hover {
475
- background: var(--normal-bg-hover);
476
- border-color: var(--normal-border-hover);
477
- }
478
- [data-rich-colors='true'][data-sonner-toast][data-type='success'] {
479
- background: var(--success-bg);
480
- border-color: var(--success-border);
481
- color: var(--success-text);
482
- }
483
- [data-rich-colors='true'][data-sonner-toast][data-type='success'] [data-close-button] {
484
- background: var(--success-bg);
485
- border-color: var(--success-border);
486
- color: var(--success-text);
487
- }
488
- [data-rich-colors='true'][data-sonner-toast][data-type='info'] {
489
- background: var(--info-bg);
490
- border-color: var(--info-border);
491
- color: var(--info-text);
492
- }
493
- [data-rich-colors='true'][data-sonner-toast][data-type='info'] [data-close-button] {
494
- background: var(--info-bg);
495
- border-color: var(--info-border);
496
- color: var(--info-text);
497
- }
498
- [data-rich-colors='true'][data-sonner-toast][data-type='warning'] {
499
- background: var(--warning-bg);
500
- border-color: var(--warning-border);
501
- color: var(--warning-text);
502
- }
503
- [data-rich-colors='true'][data-sonner-toast][data-type='warning'] [data-close-button] {
504
- background: var(--warning-bg);
505
- border-color: var(--warning-border);
506
- color: var(--warning-text);
507
- }
508
- [data-rich-colors='true'][data-sonner-toast][data-type='error'] {
509
- background: var(--error-bg);
510
- border-color: var(--error-border);
511
- color: var(--error-text);
512
- }
513
- [data-rich-colors='true'][data-sonner-toast][data-type='error'] [data-close-button] {
514
- background: var(--error-bg);
515
- border-color: var(--error-border);
516
- color: var(--error-text);
517
- }
518
- .sonner-loading-wrapper {
519
- --size: 16px;
520
- height: var(--size);
521
- width: var(--size);
522
- position: absolute;
523
- inset: 0;
524
- z-index: 10;
525
- }
526
- .sonner-loading-wrapper[data-visible='false'] {
527
- transform-origin: center;
528
- animation: sonner-fade-out 0.2s ease forwards;
529
- }
530
- .sonner-spinner {
531
- position: relative;
532
- top: 50%;
533
- left: 50%;
534
- height: var(--size);
535
- width: var(--size);
536
- }
537
- .sonner-loading-bar {
538
- animation: sonner-spin 1.2s linear infinite;
539
- background: var(--gray11);
540
- border-radius: 6px;
541
- height: 8%;
542
- left: -10%;
543
- position: absolute;
544
- top: -3.9%;
545
- width: 24%;
546
- }
547
- .sonner-loading-bar:nth-child(1) {
548
- animation-delay: -1.2s;
549
- transform: rotate(0.0001deg) translate(146%);
550
- }
551
- .sonner-loading-bar:nth-child(2) {
552
- animation-delay: -1.1s;
553
- transform: rotate(30deg) translate(146%);
554
- }
555
- .sonner-loading-bar:nth-child(3) {
556
- animation-delay: -1s;
557
- transform: rotate(60deg) translate(146%);
558
- }
559
- .sonner-loading-bar:nth-child(4) {
560
- animation-delay: -0.9s;
561
- transform: rotate(90deg) translate(146%);
562
- }
563
- .sonner-loading-bar:nth-child(5) {
564
- animation-delay: -0.8s;
565
- transform: rotate(120deg) translate(146%);
566
- }
567
- .sonner-loading-bar:nth-child(6) {
568
- animation-delay: -0.7s;
569
- transform: rotate(150deg) translate(146%);
570
- }
571
- .sonner-loading-bar:nth-child(7) {
572
- animation-delay: -0.6s;
573
- transform: rotate(180deg) translate(146%);
574
- }
575
- .sonner-loading-bar:nth-child(8) {
576
- animation-delay: -0.5s;
577
- transform: rotate(210deg) translate(146%);
578
- }
579
- .sonner-loading-bar:nth-child(9) {
580
- animation-delay: -0.4s;
581
- transform: rotate(240deg) translate(146%);
582
- }
583
- .sonner-loading-bar:nth-child(10) {
584
- animation-delay: -0.3s;
585
- transform: rotate(270deg) translate(146%);
586
- }
587
- .sonner-loading-bar:nth-child(11) {
588
- animation-delay: -0.2s;
589
- transform: rotate(300deg) translate(146%);
590
- }
591
- .sonner-loading-bar:nth-child(12) {
592
- animation-delay: -0.1s;
593
- transform: rotate(330deg) translate(146%);
594
- }
595
- @keyframes sonner-fade-in {
596
- 0% {
597
- opacity: 0;
598
- transform: scale(0.8);
599
- }
600
- 100% {
601
- opacity: 1;
602
- transform: scale(1);
603
- }
604
- }
605
- @keyframes sonner-fade-out {
606
- 0% {
607
- opacity: 1;
608
- transform: scale(1);
609
- }
610
- 100% {
611
- opacity: 0;
612
- transform: scale(0.8);
613
- }
614
- }
615
- @keyframes sonner-spin {
616
- 0% {
617
- opacity: 1;
618
- }
619
- 100% {
620
- opacity: 0.15;
621
- }
622
- }
623
- @media (prefers-reduced-motion) {
624
- [data-sonner-toast],
625
- [data-sonner-toast] > *,
626
- .sonner-loading-bar {
627
- transition: none !important;
628
- animation: none !important;
629
- }
630
- }
631
- .sonner-loader {
632
- position: absolute;
633
- top: 50%;
634
- left: 50%;
635
- transform: translate(-50%, -50%);
636
- transform-origin: center;
637
- transition: opacity 200ms, transform 200ms;
638
- }
639
- .sonner-loader[data-visible='false'] {
640
- opacity: 0;
641
- transform: scale(0.8) translate(-50%, -50%);
642
- }
643
-
644
-
645
1
  /*
646
2
  * 内置图标:Lucide 走 --rs-icon-color;品牌 mark 走 --rs-icon-{name}-accent。
647
3
  * 色值在 styles/index.css 的主题块里,这里只写图形规则。
@@ -886,12 +242,22 @@ html {
886
242
  --rs-code-font-family: var(--rs-font-mono);
887
243
  --rs-code-font-size: var(--rs-font-size-sm);
888
244
  --rs-code-line-height: var(--rs-line-height-relaxed);
245
+ /* 行内编辑面板宽度。颜色不在这里,跟 data-rs-theme 的语义色。 */
246
+ --rs-code-editor-inline-width: 28rem;
889
247
 
890
248
  /* 富文本阅读面(RsProseEditor) */
891
249
  --rs-prose-font-family: var(--rs-font-serif);
892
250
  --rs-prose-font-size: var(--rs-font-size-base);
893
251
  --rs-prose-line-height: var(--rs-line-height-relaxed);
894
252
 
253
+ /* 日志排版。行高保持 1.45,虚拟行默认 24px 与之对齐。 */
254
+ --rs-log-font-family: var(--rs-font-mono);
255
+ --rs-log-font-size: var(--rs-font-size-xs);
256
+ --rs-log-line-height: 1.45;
257
+ --rs-log-marker-width: 0.2rem;
258
+ --rs-log-level-min: 3.6rem;
259
+ --rs-log-accent-width: 0.125rem;
260
+
895
261
  /* 终端排版(xterm 构造时读取;宿主可单独覆盖) */
896
262
  --rs-terminal-font-family: var(--rs-font-mono);
897
263
  --rs-terminal-font-size: var(--rs-font-size-sm);
@@ -923,6 +289,12 @@ html {
923
289
  /* 顶栏加载条:高于 modal,低于 toast,避免遮挡通知 */
924
290
  --rs-z-loading-bar: 190;
925
291
  --rs-z-toast: 200;
292
+ /* 挂到 body 的提示必须盖住 Dialog。--rs-z-tooltip 仍是页内低层,不要拿来做这层。 */
293
+ --rs-tooltip-z: calc(var(--rs-z-modal) + 2);
294
+ --rs-tooltip-max-width: min(20rem, 90vw);
295
+ --rs-tooltip-max-width-nowrap: min(48rem, 90vw);
296
+ --rs-tooltip-pad-block: 0.375rem;
297
+ --rs-tooltip-pad-inline: 0.625rem;
926
298
 
927
299
  --rs-transition-fast: 0.15s cubic-bezier(0.4, 0, 0.2, 1);
928
300
  --rs-transition-normal: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
@@ -967,6 +339,61 @@ html {
967
339
  --rs-menu-item-font-size: var(--rs-font-size-sm);
968
340
  --rs-menu-item-radius: var(--rs-radius-sm);
969
341
  --rs-menu-item-active-weight: var(--rs-font-weight-medium);
342
+ --rs-menu-item-pad-inline: var(--rs-space-sm);
343
+ --rs-menu-gap: calc(var(--rs-space-xs) / 2);
344
+ --rs-menu-indent: 0.875rem;
345
+ --rs-menu-flyout-min-width: 10rem;
346
+ --rs-menu-flyout-max-width: 16rem;
347
+ --rs-menu-flyout-pad: var(--rs-space-xs);
348
+ --rs-menu-disabled-opacity: 0.38;
349
+
350
+ /* Dropdown(命令菜单)。尺寸静态;颜色在主题块内。 */
351
+ --rs-dropdown-trigger-min-width: 10rem;
352
+ --rs-dropdown-fit-min-width: 10.5rem;
353
+ --rs-dropdown-pad: var(--rs-space-xs);
354
+ --rs-dropdown-item-gap: var(--rs-space-sm);
355
+ --rs-dropdown-item-pad-block: var(--rs-space-sm);
356
+ --rs-dropdown-item-pad-inline: var(--rs-space-md);
357
+ --rs-dropdown-item-radius: var(--rs-radius-sm);
358
+ --rs-dropdown-item-font-size: var(--rs-font-size-sm);
359
+ --rs-dropdown-trigger-height: var(--rs-control-height-md);
360
+ --rs-dropdown-max-height: 16rem;
361
+ --rs-dropdown-disabled-opacity: 0.38;
362
+
363
+ /* Context menu。尺寸在此;颜色别名语义 token,随 data-rs-theme。挂到 body 须盖住 Dialog。 */
364
+ --rs-ctx-z: calc(var(--rs-z-modal) + 2);
365
+ --rs-ctx-min-width: 11rem;
366
+ --rs-ctx-max-width: 22rem;
367
+ --rs-ctx-pad: 5px;
368
+ --rs-ctx-radius: 10px;
369
+ --rs-ctx-item-height: 1.5rem;
370
+ --rs-ctx-item-radius: 6px;
371
+ --rs-ctx-font-size: var(--rs-font-size-xs);
372
+ --rs-ctx-icon-col: 28px;
373
+ --rs-ctx-disabled-opacity: 0.38;
374
+ --rs-ctx-motion-in: 0.13s;
375
+ --rs-ctx-motion-sub: 0.1s;
376
+ --rs-ctx-bg: var(--rs-surface-elevated);
377
+ --rs-ctx-fg: var(--rs-text-primary);
378
+ --rs-ctx-muted: var(--rs-text-tertiary);
379
+ --rs-ctx-border: var(--rs-border);
380
+ --rs-ctx-separator: var(--rs-border-subtle);
381
+ --rs-ctx-shadow: var(--rs-shadow-lg);
382
+ --rs-ctx-danger: var(--rs-danger);
383
+ --rs-ctx-item-active-bg: var(--rs-primary);
384
+ --rs-ctx-item-active-fg: var(--rs-primary-foreground);
385
+ --rs-ctx-item-active-muted: color-mix(in srgb, var(--rs-primary-foreground) 75%, transparent);
386
+
387
+ /* Popover(气泡卡片)。尺寸静态;颜色在主题块内。 */
388
+ --rs-popover-pad: 0.75rem;
389
+ --rs-popover-radius: var(--rs-radius-sm);
390
+ --rs-popover-font-size: var(--rs-font-size-sm);
391
+ --rs-popover-width-sm: 12rem;
392
+ --rs-popover-width-md: 16rem;
393
+ --rs-popover-width-lg: 22rem;
394
+ --rs-popover-width-auto-min: 10rem;
395
+ --rs-popover-title-gap: var(--rs-space-xs);
396
+ --rs-popover-shadow: var(--rs-shadow);
970
397
 
971
398
  /*
972
399
  * Anchor(页内目录)。颜色走主题 token 别名,随 data-rs-theme。
@@ -999,6 +426,69 @@ html {
999
426
  --rs-breadcrumb-current-weight: var(--rs-font-weight-medium);
1000
427
  --rs-breadcrumb-disabled-opacity: 0.45;
1001
428
 
429
+ /*
430
+ * Steps(向导进度)。尺寸静态;颜色在主题块内,随 data-rs-theme。
431
+ */
432
+ --rs-steps-gap: var(--rs-space-md);
433
+ --rs-steps-item-gap: var(--rs-space-md);
434
+ --rs-steps-trigger-gap: var(--rs-space-sm);
435
+ --rs-steps-indicator-size-ssm: 1.25rem;
436
+ --rs-steps-indicator-size-sm: 1.5rem;
437
+ --rs-steps-indicator-size-md: 1.75rem;
438
+ --rs-steps-indicator-size-lg: 2rem;
439
+ --rs-steps-dot-size: 0.5rem;
440
+ --rs-steps-separator-size: 1px;
441
+ --rs-steps-separator-min: 1.5rem;
442
+ --rs-steps-title-weight: var(--rs-font-weight-semibold);
443
+ --rs-steps-disabled-opacity: 0.45;
444
+
445
+ /*
446
+ * Pagination(页码条)。尺寸静态;颜色在主题块内,随 data-rs-theme。
447
+ */
448
+ --rs-pagination-gap: var(--rs-space-sm);
449
+ --rs-pagination-item-gap: var(--rs-space-xs);
450
+ --rs-pagination-item-pad-inline: var(--rs-space-sm);
451
+ --rs-pagination-jumper-width: 3rem;
452
+ --rs-pagination-size-width: 7.25rem;
453
+ --rs-pagination-radius: var(--rs-radius-sm);
454
+ --rs-pagination-active-weight: var(--rs-font-weight-semibold);
455
+ --rs-pagination-disabled-opacity: 0.45;
456
+
457
+ /*
458
+ * Tabs(同级切换)。尺寸静态;颜色在主题块内,随 data-rs-theme。
459
+ */
460
+ --rs-tabs-trigger-gap: 0.375rem;
461
+ --rs-tabs-label-max: 12rem;
462
+ --rs-tabs-more-label-max: 7rem;
463
+ --rs-tabs-close-size: 1rem;
464
+ --rs-tabs-ink-size: 2px;
465
+ --rs-tabs-disabled-opacity: 0.38;
466
+ --rs-tabs-rail-min: 7rem;
467
+ --rs-tabs-rail-max: 14rem;
468
+ --rs-tabs-content-gap: 0px;
469
+
470
+ /*
471
+ * Sidebar(工作台侧栏)。尺寸静态;颜色在主题块内,随 data-rs-theme。
472
+ */
473
+ --rs-sidebar-width-sm: 14rem;
474
+ --rs-sidebar-width-md: 17rem;
475
+ --rs-sidebar-width-lg: 21rem;
476
+ --rs-sidebar-width-collapsed: 4rem;
477
+ --rs-sidebar-pad: var(--rs-space-md);
478
+ --rs-sidebar-body-pad: var(--rs-space-sm);
479
+ --rs-sidebar-gap: var(--rs-space-sm);
480
+ --rs-sidebar-group-gap: var(--rs-space-md);
481
+ --rs-sidebar-disabled-opacity: 0.38;
482
+
483
+ /*
484
+ * SplitPane(可拖分栏)。尺寸静态;颜色在主题块内,随 data-rs-theme。
485
+ */
486
+ --rs-split-resizer-size: 1px;
487
+ --rs-split-hit-slop: 4px;
488
+ --rs-split-grip-inline: 0.875rem;
489
+ --rs-split-grip-block: 1.5rem;
490
+ --rs-split-disabled-opacity: 0.5;
491
+
1002
492
  /*
1003
493
  * 表单标签(RsLabel / .rs-field__label 共用)
1004
494
  * 默认对齐 Ant Form:与正文同档 14px;颜色在主题块内。
@@ -1069,6 +559,31 @@ html {
1069
559
  /* Lucide / 线性图标。品牌 mark 色在可选 niuma-ui/brand-icons.css */
1070
560
  --rs-icon-color: currentColor;
1071
561
 
562
+ /* 虚拟列表。超长时滚动条压缩,行本身仍是真实像素。 */
563
+ --rs-virtual-list-border: var(--rs-border-subtle);
564
+ --rs-virtual-list-bg: var(--rs-surface);
565
+ --rs-virtual-list-fg: var(--rs-text-primary);
566
+ --rs-virtual-list-accent: var(--rs-primary);
567
+ --rs-virtual-list-accent-width: 0.125rem;
568
+ --rs-virtual-list-active-bg: color-mix(in srgb, var(--rs-primary) 14%, var(--rs-surface));
569
+
570
+ /* Monaco。语法色继承 vs / vs-dark,表面色跟主题 token。 */
571
+ --rs-monaco-border: var(--rs-border);
572
+ --rs-monaco-bg: var(--rs-surface-elevated);
573
+ --rs-monaco-fg: var(--rs-text-primary);
574
+ --rs-monaco-gutter: var(--rs-surface);
575
+ --rs-monaco-gutter-fg: var(--rs-text-tertiary);
576
+ --rs-monaco-line-highlight: var(--rs-surface-hover);
577
+ --rs-monaco-selection: var(--rs-primary-container);
578
+ --rs-monaco-widget-bg: var(--rs-surface-elevated);
579
+ --rs-monaco-widget-border: var(--rs-border);
580
+ --rs-monaco-radius: var(--rs-radius);
581
+ --rs-monaco-padding: 0.5rem;
582
+ --rs-monaco-scrollbar-size: 0.5rem;
583
+ --rs-monaco-glyph-width: 1rem;
584
+ --rs-monaco-decoration-width: 0.25rem;
585
+ --rs-monaco-disabled-opacity: 0.72;
586
+
1072
587
  /* macOS 风格原生滚动条(与 RsScrollbar 视觉一致) */
1073
588
  --rs-scrollbar-size: 13px;
1074
589
  --rs-scrollbar-padding: 2px;
@@ -1090,30 +605,29 @@ html {
1090
605
  --rs-surface-hover: #2e2e2e;
1091
606
  --rs-item-hover: rgb(255 255 255 / 0.08);
1092
607
 
1093
- /* ── Table(VS Code Dark Modern 列表/表格语义)──
1094
- * 灰阶斑马纹 + 主色选中(选中与条纹语义分离) */
608
+ /* ── Table:跟语义色,品牌覆盖 --rs-surface / --rs-text-primary 即生效 ── */
1095
609
  --rs-table-radius: var(--rs-radius-sm);
1096
- --rs-table-border: #2b2b2b;
1097
- --rs-table-cell-divider: #262626;
1098
- --rs-table-fg: #dddddd;
1099
- --rs-table-muted-fg: #9d9d9d;
1100
- --rs-table-bg: #1f1f1f;
1101
- --rs-table-bg-header: #1f1f1f;
1102
- --rs-table-body-bg: #1f1f1f;
1103
- --rs-table-header-bg: #1f1f1f;
1104
- --rs-table-header-fg: #f3f3f3;
610
+ --rs-table-border: var(--rs-border);
611
+ --rs-table-cell-divider: var(--rs-border);
612
+ --rs-table-fg: var(--rs-text-primary);
613
+ --rs-table-muted-fg: var(--rs-text-tertiary);
614
+ --rs-table-bg: var(--rs-surface);
615
+ --rs-table-bg-header: var(--rs-surface);
616
+ --rs-table-body-bg: var(--rs-surface);
617
+ --rs-table-header-bg: var(--rs-surface);
618
+ --rs-table-header-fg: var(--rs-text-primary);
1105
619
  --rs-table-header-weight: var(--rs-font-weight-semibold);
1106
620
  --rs-table-header-size: var(--rs-table-cell-size, var(--rs-font-size-xs));
1107
621
  --rs-table-cell-size: var(--rs-font-size-xs);
1108
- --rs-table-cell-weight: 400;
1109
- --rs-table-footer-bg: #1f1f1f;
1110
- --rs-table-group-bg: #2d2d2d;
1111
- --rs-table-expand-bg: #2d2d2d;
1112
- --rs-table-row-stripe: #2d2d2d;
1113
- --rs-table-row-hover: #363636;
622
+ --rs-table-cell-weight: var(--rs-font-weight-regular);
623
+ --rs-table-footer-bg: var(--rs-surface);
624
+ --rs-table-group-bg: var(--rs-surface-elevated);
625
+ --rs-table-expand-bg: var(--rs-surface-elevated);
626
+ --rs-table-row-stripe: color-mix(in srgb, var(--rs-text-primary) 6%, var(--rs-surface));
627
+ --rs-table-row-hover: var(--rs-item-hover);
1114
628
  --rs-table-row-selected: color-mix(in srgb, var(--rs-primary) 22%, var(--rs-table-body-bg));
1115
629
  --rs-table-row-selected-hover: color-mix(in srgb, var(--rs-primary) 30%, var(--rs-table-body-bg));
1116
- --rs-table-row-selected-fg: #ffffff;
630
+ --rs-table-row-selected-fg: var(--rs-text-primary);
1117
631
  --rs-table-row-selected-accent: var(--rs-primary);
1118
632
  --rs-table-row-highlight: color-mix(in srgb, var(--rs-primary) 12%, var(--rs-table-body-bg));
1119
633
  --rs-table-row-highlight-hover: color-mix(in srgb, var(--rs-primary) 18%, var(--rs-table-body-bg));
@@ -1122,10 +636,10 @@ html {
1122
636
  --rs-table-gutter-bg: color-mix(in srgb, var(--rs-border) 10%, var(--rs-table-header-bg));
1123
637
  --rs-table-gutter-border: var(--rs-table-cell-divider);
1124
638
  --rs-table-scrollbar-corner: var(--rs-table-bg-header);
1125
- --rs-table-checkbox-bg: #313131;
639
+ --rs-table-checkbox-bg: var(--rs-surface);
1126
640
  --rs-table-sort-active-fg: var(--rs-primary);
1127
641
  --rs-table-drop-indicator: var(--rs-primary);
1128
- --rs-table-resize-handle: #6e6e6e;
642
+ --rs-table-resize-handle: var(--rs-table-cell-divider);
1129
643
  --rs-table-resize-handle-hover: var(--rs-primary);
1130
644
 
1131
645
  /* ── Tree(导航线 / 行选中 / 焦点;业务可覆盖)── */
@@ -1139,6 +653,9 @@ html {
1139
653
  --rs-tree-selected-focused-bg: color-mix(in srgb, var(--rs-primary) 16%, var(--rs-surface));
1140
654
  --rs-tree-selected-focused-ring: color-mix(in srgb, var(--rs-primary) 36%, transparent);
1141
655
  --rs-tree-drop-indicator: var(--rs-primary);
656
+ --rs-tree-drop-inside-bg: color-mix(in srgb, var(--rs-primary) 8%, transparent);
657
+ --rs-tree-highlight-bg: color-mix(in srgb, var(--rs-warning) 45%, transparent);
658
+ --rs-tree-check-fg: var(--rs-primary-foreground);
1142
659
 
1143
660
  /* VS Code 式抬升型输入底(比内容略亮),非 macOS 凹陷井 */
1144
661
  /* WCAG AA: input-border 3.18:1 vs #2b2b2b; border 3.24:1 vs #1f1f1f; placeholder 4.5:1 vs #2b2b2b */
@@ -1149,10 +666,10 @@ html {
1149
666
  --rs-border: #6e6e6e;
1150
667
  --rs-border-subtle: #3a3a3a;
1151
668
  /*
1152
- * Button secondary/default:轮廓与底色独立于分隔线 --rs-border,
669
+ * Button secondary/default:描边跟输入框,不另用更亮的实色灰。
1153
670
  * 业务可用 --rs-btn-* 覆盖(见 theme/brand.example.css)。
1154
671
  */
1155
- --rs-btn-outline-border: #a3a3a3;
672
+ --rs-btn-outline-border: var(--rs-input-border);
1156
673
  --rs-btn-secondary-bg: var(--rs-surface-hover);
1157
674
  --rs-btn-secondary-bg-hover: color-mix(in srgb, var(--rs-primary) 16%, var(--rs-surface-hover));
1158
675
  --rs-btn-secondary-bg-active: color-mix(in srgb, var(--rs-primary) 24%, var(--rs-surface-hover));
@@ -1172,6 +689,55 @@ html {
1172
689
  --rs-breadcrumb-link-hover-bg: var(--rs-surface-hover);
1173
690
  --rs-breadcrumb-current: var(--rs-text-primary);
1174
691
  --rs-breadcrumb-sep: var(--rs-text-secondary);
692
+ --rs-steps-title: var(--rs-text-secondary);
693
+ --rs-steps-title-active: var(--rs-text-primary);
694
+ --rs-steps-title-error: var(--rs-on-danger-container);
695
+ --rs-steps-description: var(--rs-text-secondary);
696
+ --rs-steps-wait-bg: var(--rs-surface-hover);
697
+ --rs-steps-wait-fg: var(--rs-text-secondary);
698
+ --rs-steps-process-bg: var(--rs-primary);
699
+ --rs-steps-process-fg: var(--rs-primary-foreground);
700
+ --rs-steps-finish-bg: var(--rs-primary);
701
+ --rs-steps-finish-fg: var(--rs-primary-foreground);
702
+ --rs-steps-error-bg: var(--rs-danger-container);
703
+ --rs-steps-error-fg: var(--rs-on-danger-container);
704
+ --rs-steps-separator: var(--rs-border);
705
+ --rs-steps-separator-finish: var(--rs-primary);
706
+ --rs-pagination-text: var(--rs-text-secondary);
707
+ --rs-pagination-item: var(--rs-text-primary);
708
+ --rs-pagination-item-hover: var(--rs-surface-hover);
709
+ --rs-pagination-item-active: var(--rs-primary);
710
+ --rs-pagination-ellipsis: var(--rs-text-secondary);
711
+ --rs-tabs-text: var(--rs-text-secondary);
712
+ --rs-tabs-text-hover: var(--rs-text-primary);
713
+ --rs-tabs-text-active: var(--rs-primary);
714
+ --rs-tabs-surface: var(--rs-surface);
715
+ --rs-tabs-border: var(--rs-border);
716
+ --rs-tabs-border-subtle: var(--rs-border-subtle);
717
+ --rs-tabs-ink: var(--rs-primary);
718
+ --rs-tabs-badge-bg: var(--rs-surface-hover);
719
+ --rs-tabs-badge-active-bg: color-mix(in srgb, var(--rs-primary) 12%, transparent);
720
+ --rs-tabs-segmented-track: var(--rs-surface-hover);
721
+ --rs-sidebar-border: var(--rs-border-subtle);
722
+ --rs-sidebar-bg: color-mix(in srgb, var(--rs-surface) 88%, transparent);
723
+ --rs-sidebar-title: var(--rs-text-primary);
724
+ --rs-sidebar-subtitle: var(--rs-text-secondary);
725
+ --rs-sidebar-item: var(--rs-text-secondary);
726
+ --rs-sidebar-item-hover: var(--rs-text-primary);
727
+ --rs-sidebar-item-hover-bg: var(--rs-item-hover);
728
+ --rs-sidebar-item-active: var(--rs-primary);
729
+ --rs-sidebar-item-active-bg: color-mix(in srgb, var(--rs-primary) 12%, transparent);
730
+ --rs-sidebar-badge: var(--rs-text-inverse);
731
+ --rs-sidebar-badge-bg: var(--rs-primary);
732
+ --rs-split-resizer: var(--rs-border-subtle);
733
+ --rs-split-resizer-hover: var(--rs-border);
734
+ --rs-split-resizer-active: var(--rs-primary);
735
+ --rs-split-grip-fg: var(--rs-text-tertiary);
736
+ --rs-split-grip-bg: var(--rs-surface-elevated);
737
+ --rs-split-grip-border: var(--rs-border);
738
+ --rs-split-grip-active-fg: var(--rs-primary-foreground);
739
+ --rs-split-grip-active-bg: var(--rs-primary);
740
+ --rs-split-grip-active-border: var(--rs-primary);
1175
741
  --rs-danger: #ff453a;
1176
742
  --rs-danger-container: #3b1210;
1177
743
  --rs-on-danger-container: #ff8a84;
@@ -1232,13 +798,38 @@ html {
1232
798
  --rs-dynamic-tags-disabled-opacity: 0.38;
1233
799
 
1234
800
  /* ── Menu(侧栏 / 导航;业务可在父级覆盖,无需 :deep)── */
1235
- --rs-menu-item-fg: var(--rs-muted);
1236
- --rs-menu-item-fg-hover: var(--rs-text);
801
+ --rs-menu-item-fg: var(--rs-text-secondary);
802
+ --rs-menu-item-fg-hover: var(--rs-text-primary);
1237
803
  --rs-menu-item-bg-hover: var(--rs-surface-hover);
1238
804
  --rs-menu-item-active-fg: var(--rs-primary);
1239
805
  --rs-menu-item-active-bg: color-mix(in srgb, var(--rs-primary) 12%, transparent);
1240
806
  --rs-menu-item-active-parent-fg: var(--rs-primary);
1241
807
  --rs-menu-item-active-parent-bg: transparent;
808
+ --rs-menu-group-label-fg: var(--rs-text-secondary);
809
+ --rs-menu-arrow-fg: var(--rs-text-tertiary);
810
+
811
+ /* ── Dropdown(命令菜单;随 data-rs-theme)── */
812
+ --rs-dropdown-fg: var(--rs-text-primary);
813
+ --rs-dropdown-fg-muted: var(--rs-text-secondary);
814
+ --rs-dropdown-fg-placeholder: var(--rs-text-tertiary);
815
+ --rs-dropdown-bg: var(--rs-surface-elevated);
816
+ --rs-dropdown-border: var(--rs-border);
817
+ --rs-dropdown-divider: var(--rs-border-subtle);
818
+ --rs-dropdown-trigger-bg: var(--rs-input-bg);
819
+ --rs-dropdown-trigger-border: var(--rs-input-border, var(--rs-border));
820
+ --rs-dropdown-trigger-border-hover: var(--rs-input-border-hover, var(--rs-border));
821
+ --rs-dropdown-trigger-shadow: var(--rs-input-shadow, none);
822
+ --rs-dropdown-item-hover: var(--rs-item-hover);
823
+ --rs-dropdown-item-active-fg: var(--rs-primary);
824
+ --rs-dropdown-item-active-bg: color-mix(in srgb, var(--rs-primary) 12%, transparent);
825
+ --rs-dropdown-danger-fg: var(--rs-danger);
826
+
827
+ /* ── Popover(气泡卡片;随 data-rs-theme)── */
828
+ --rs-popover-fg: var(--rs-text-primary);
829
+ --rs-popover-fg-muted: var(--rs-text-secondary);
830
+ --rs-popover-bg: var(--rs-surface-elevated);
831
+ --rs-popover-border: var(--rs-border);
832
+ --rs-popover-title-fg: var(--rs-text-primary);
1242
833
 
1243
834
  /* ── Alert(反馈条;正文色可按主题单独调)── */
1244
835
  --rs-alert-radius: var(--rs-radius);
@@ -1246,15 +837,59 @@ html {
1246
837
  --rs-alert-padding-y: var(--rs-space-md);
1247
838
  --rs-alert-padding-x: var(--rs-space-lg);
1248
839
  --rs-alert-border-alpha: 35%;
1249
- --rs-alert-content-fg: var(--rs-muted);
840
+ --rs-alert-content-fg: var(--rs-text-secondary);
841
+ --rs-alert-content-alpha: 78%;
842
+
843
+ /* ── Loading(指示器;tone 在组件上改 --rs-loading-accent)── */
844
+ --rs-loading-gap: var(--rs-space-sm);
845
+ --rs-loading-pad: var(--rs-space-xl);
846
+ --rs-loading-label: var(--rs-text-secondary);
847
+ --rs-loading-track: color-mix(in srgb, var(--rs-text-tertiary) 35%, transparent);
848
+ --rs-loading-accent: var(--rs-primary);
849
+ --rs-loading-overlay: color-mix(in srgb, var(--rs-surface) 72%, transparent);
850
+ --rs-loading-skeleton: var(--rs-surface-hover);
851
+ --rs-loading-skeleton-shine: color-mix(in srgb, var(--rs-border) 55%, transparent);
852
+ --rs-loading-stroke: 2px;
853
+ --rs-loading-spinner-sm: 0.875rem;
854
+ --rs-loading-spinner-md: 1.125rem;
855
+ --rs-loading-spinner-lg: 1.5rem;
856
+ --rs-loading-dot-sm: 0.25rem;
857
+ --rs-loading-dot-md: 0.375rem;
858
+ --rs-loading-dot-lg: 0.5rem;
859
+ --rs-loading-skeleton-h-sm: 0.5rem;
860
+ --rs-loading-skeleton-h-md: 0.75rem;
861
+ --rs-loading-skeleton-h-lg: 1rem;
862
+ --rs-loading-z: 1;
863
+ --rs-loading-blur: 0.125rem;
864
+ --rs-loading-spin-duration: 0.7s;
865
+ --rs-loading-bounce-duration: 1s;
866
+ --rs-loading-shimmer-duration: 1.2s;
867
+
868
+ /* ── LoadingBar(顶栏进度;色跟语义 token,可被 color / errorColor 覆盖)── */
869
+ --rs-loading-bar-size: 2px;
870
+ --rs-loading-bar-color: var(--rs-primary);
871
+ --rs-loading-bar-error: var(--rs-danger);
1250
872
 
1251
873
  /* ── Descriptions(描述列表栅格)── */
1252
874
  --rs-descriptions-radius: var(--rs-radius);
1253
875
  --rs-descriptions-border: var(--rs-border);
876
+ --rs-descriptions-label-width: 7.5rem;
877
+ --rs-descriptions-title: var(--rs-text-primary);
1254
878
  /* 标签列用实色表面混合,避免 surface-hover 被桥成透明 overlay 时失效 */
1255
879
  --rs-descriptions-label-bg: color-mix(in srgb, var(--rs-surface-hover) 72%, var(--rs-surface));
1256
- --rs-descriptions-label-fg: var(--rs-muted);
1257
- --rs-descriptions-value-fg: var(--rs-text);
880
+ --rs-descriptions-label-fg: var(--rs-text-secondary);
881
+ --rs-descriptions-value-fg: var(--rs-text-primary);
882
+
883
+ /* ── CodeBlock(只读代码;外壳跟语义 token,深色语法仍用 oneDark)── */
884
+ --rs-code-block-bg: var(--rs-surface-elevated);
885
+ --rs-code-block-fg: var(--rs-text-primary);
886
+ --rs-code-block-muted: var(--rs-text-tertiary);
887
+ --rs-code-block-border: var(--rs-border-subtle);
888
+ --rs-code-block-bar-bg: color-mix(in srgb, var(--rs-surface-elevated) 80%, var(--rs-border) 20%);
889
+ --rs-code-block-gutter: color-mix(in srgb, var(--rs-surface-elevated) 85%, var(--rs-border) 15%);
890
+ --rs-code-block-highlight: color-mix(in srgb, var(--rs-primary) 14%, transparent);
891
+ --rs-code-block-max-height: 32rem;
892
+ --rs-code-block-transition: 120ms;
1258
893
 
1259
894
  /* ── Card(macOS grouped panel / inset 分组卡片)── */
1260
895
  --rs-card-border: #3a3a3a;
@@ -1333,6 +968,11 @@ html {
1333
968
  --rs-log-fatal: var(--rs-danger);
1334
969
  --rs-log-hit-bg: color-mix(in srgb, var(--rs-warning) 38%, var(--rs-log-bg));
1335
970
  --rs-log-hit-fg: var(--rs-log-fg);
971
+ --rs-log-accent: var(--rs-primary);
972
+ --rs-log-active-bg: color-mix(in srgb, var(--rs-primary) 12%, var(--rs-log-bg));
973
+ --rs-log-chrome-bg: color-mix(in srgb, var(--rs-log-bg) 88%, var(--rs-surface-hover));
974
+ --rs-log-chip-on-bg: color-mix(in srgb, var(--rs-primary) 14%, transparent);
975
+ --rs-log-chip-on-border: color-mix(in srgb, var(--rs-primary) 45%, var(--rs-log-border));
1336
976
 
1337
977
  --rs-shadow-sm: 0 1px 3px rgb(0 0 0 / 0.4);
1338
978
  --rs-shadow: 0 4px 16px rgb(0 0 0 / 0.45), 0 0 0 0.5px rgb(255 255 255 / 0.08);
@@ -1355,41 +995,41 @@ html {
1355
995
  --rs-surface-hover: #e8e8ed;
1356
996
  --rs-item-hover: rgb(0 0 0 / 0.05);
1357
997
 
1358
- /* ── Table(VS Code Light Modern 列表/表格语义)── */
998
+ /* ── Table:跟语义色。表头比表体略沉一档,仍不写死 hex ── */
1359
999
  --rs-table-radius: var(--rs-radius-sm);
1360
- --rs-table-border: #e5e5e5;
1361
- --rs-table-cell-divider: #e5e5e5;
1362
- --rs-table-fg: #333333;
1363
- --rs-table-muted-fg: #616161;
1364
- --rs-table-bg: #ffffff;
1365
- --rs-table-bg-header: #f8f8f8;
1366
- --rs-table-body-bg: #ffffff;
1367
- --rs-table-header-bg: #f8f8f8;
1368
- --rs-table-header-fg: #1a1a1a;
1000
+ --rs-table-border: var(--rs-border);
1001
+ --rs-table-cell-divider: var(--rs-border);
1002
+ --rs-table-fg: var(--rs-text-primary);
1003
+ --rs-table-muted-fg: var(--rs-text-tertiary);
1004
+ --rs-table-bg: var(--rs-surface);
1005
+ --rs-table-bg-header: color-mix(in srgb, var(--rs-text-primary) 3%, var(--rs-surface));
1006
+ --rs-table-body-bg: var(--rs-surface);
1007
+ --rs-table-header-bg: var(--rs-table-bg-header);
1008
+ --rs-table-header-fg: var(--rs-text-primary);
1369
1009
  --rs-table-header-weight: var(--rs-font-weight-semibold);
1370
1010
  --rs-table-header-size: var(--rs-table-cell-size, var(--rs-font-size-xs));
1371
1011
  --rs-table-cell-size: var(--rs-font-size-xs);
1372
- --rs-table-cell-weight: 400;
1373
- --rs-table-footer-bg: #f8f8f8;
1374
- --rs-table-group-bg: #f3f3f3;
1375
- --rs-table-expand-bg: #f3f3f3;
1376
- --rs-table-row-stripe: #f6f6f6;
1377
- --rs-table-row-hover: #f2f2f2;
1012
+ --rs-table-cell-weight: var(--rs-font-weight-regular);
1013
+ --rs-table-footer-bg: var(--rs-table-bg-header);
1014
+ --rs-table-group-bg: color-mix(in srgb, var(--rs-text-primary) 4%, var(--rs-surface));
1015
+ --rs-table-expand-bg: var(--rs-table-group-bg);
1016
+ --rs-table-row-stripe: color-mix(in srgb, var(--rs-text-primary) 3%, var(--rs-surface));
1017
+ --rs-table-row-hover: var(--rs-item-hover);
1378
1018
  --rs-table-row-selected: color-mix(in srgb, var(--rs-primary) 10%, var(--rs-table-body-bg));
1379
1019
  --rs-table-row-selected-hover: color-mix(in srgb, var(--rs-primary) 16%, var(--rs-table-body-bg));
1380
- --rs-table-row-selected-fg: var(--rs-text);
1020
+ --rs-table-row-selected-fg: var(--rs-text-primary);
1381
1021
  --rs-table-row-selected-accent: var(--rs-primary);
1382
1022
  --rs-table-row-highlight: color-mix(in srgb, var(--rs-primary) 8%, var(--rs-table-body-bg));
1383
1023
  --rs-table-row-highlight-hover: color-mix(in srgb, var(--rs-primary) 12%, var(--rs-table-body-bg));
1384
- --rs-table-row-highlight-fg: var(--rs-text);
1024
+ --rs-table-row-highlight-fg: var(--rs-text-primary);
1385
1025
  --rs-table-row-highlight-accent: color-mix(in srgb, var(--rs-primary) 45%, transparent);
1386
1026
  --rs-table-gutter-bg: color-mix(in srgb, var(--rs-border) 6%, var(--rs-table-header-bg));
1387
1027
  --rs-table-gutter-border: var(--rs-table-cell-divider);
1388
1028
  --rs-table-scrollbar-corner: var(--rs-table-bg-header);
1389
- --rs-table-checkbox-bg: #ffffff;
1029
+ --rs-table-checkbox-bg: var(--rs-surface);
1390
1030
  --rs-table-sort-active-fg: var(--rs-primary);
1391
1031
  --rs-table-drop-indicator: var(--rs-primary);
1392
- --rs-table-resize-handle: #8c8c8c;
1032
+ --rs-table-resize-handle: var(--rs-table-cell-divider);
1393
1033
  --rs-table-resize-handle-hover: var(--rs-primary);
1394
1034
 
1395
1035
  /* ── Tree(导航线 / 行选中 / 焦点;业务可覆盖)── */
@@ -1403,6 +1043,9 @@ html {
1403
1043
  --rs-tree-selected-focused-bg: color-mix(in srgb, var(--rs-primary) 10%, var(--rs-surface));
1404
1044
  --rs-tree-selected-focused-ring: color-mix(in srgb, var(--rs-primary) 28%, transparent);
1405
1045
  --rs-tree-drop-indicator: var(--rs-primary);
1046
+ --rs-tree-drop-inside-bg: color-mix(in srgb, var(--rs-primary) 8%, transparent);
1047
+ --rs-tree-highlight-bg: color-mix(in srgb, var(--rs-warning) 45%, transparent);
1048
+ --rs-tree-check-fg: var(--rs-primary-foreground);
1406
1049
 
1407
1050
  /* macOS separator 风格:默认边框偏柔,focus 环承担可访问性反馈 */
1408
1051
  --rs-input-bg: #ffffff;
@@ -1412,10 +1055,10 @@ html {
1412
1055
  --rs-border: rgb(60 60 67 / 0.16);
1413
1056
  --rs-border-subtle: rgb(60 60 67 / 0.10);
1414
1057
  /*
1415
- * Button secondary/default:亮色分隔线偏淡,轮廓单独提高对比(≥3:1 vs 白底)。
1416
- * 业务覆盖 --rs-btn-* 即可,无需改组件。
1058
+ * Button secondary/default:描边跟输入框(柔分隔线),焦点环负责强调。
1059
+ * 需要更重的轮廓时覆盖 --rs-btn-outline-border。
1417
1060
  */
1418
- --rs-btn-outline-border: #6e6e73;
1061
+ --rs-btn-outline-border: var(--rs-input-border);
1419
1062
  --rs-btn-secondary-bg: var(--rs-surface-hover);
1420
1063
  --rs-btn-secondary-bg-hover: color-mix(in srgb, var(--rs-primary) 12%, var(--rs-surface-hover));
1421
1064
  --rs-btn-secondary-bg-active: color-mix(in srgb, var(--rs-primary) 18%, var(--rs-surface-hover));
@@ -1435,6 +1078,55 @@ html {
1435
1078
  --rs-breadcrumb-link-hover-bg: var(--rs-surface-hover);
1436
1079
  --rs-breadcrumb-current: var(--rs-text-primary);
1437
1080
  --rs-breadcrumb-sep: var(--rs-text-secondary);
1081
+ --rs-steps-title: var(--rs-text-secondary);
1082
+ --rs-steps-title-active: var(--rs-text-primary);
1083
+ --rs-steps-title-error: var(--rs-on-danger-container);
1084
+ --rs-steps-description: var(--rs-text-secondary);
1085
+ --rs-steps-wait-bg: var(--rs-surface-hover);
1086
+ --rs-steps-wait-fg: var(--rs-text-secondary);
1087
+ --rs-steps-process-bg: var(--rs-primary);
1088
+ --rs-steps-process-fg: var(--rs-primary-foreground);
1089
+ --rs-steps-finish-bg: var(--rs-primary);
1090
+ --rs-steps-finish-fg: var(--rs-primary-foreground);
1091
+ --rs-steps-error-bg: var(--rs-danger-container);
1092
+ --rs-steps-error-fg: var(--rs-on-danger-container);
1093
+ --rs-steps-separator: var(--rs-border);
1094
+ --rs-steps-separator-finish: var(--rs-primary);
1095
+ --rs-pagination-text: var(--rs-text-secondary);
1096
+ --rs-pagination-item: var(--rs-text-primary);
1097
+ --rs-pagination-item-hover: var(--rs-surface-hover);
1098
+ --rs-pagination-item-active: var(--rs-primary);
1099
+ --rs-pagination-ellipsis: var(--rs-text-secondary);
1100
+ --rs-tabs-text: var(--rs-text-secondary);
1101
+ --rs-tabs-text-hover: var(--rs-text-primary);
1102
+ --rs-tabs-text-active: var(--rs-primary);
1103
+ --rs-tabs-surface: var(--rs-surface);
1104
+ --rs-tabs-border: var(--rs-border);
1105
+ --rs-tabs-border-subtle: var(--rs-border-subtle);
1106
+ --rs-tabs-ink: var(--rs-primary);
1107
+ --rs-tabs-badge-bg: var(--rs-surface-hover);
1108
+ --rs-tabs-badge-active-bg: color-mix(in srgb, var(--rs-primary) 12%, transparent);
1109
+ --rs-tabs-segmented-track: var(--rs-surface-hover);
1110
+ --rs-sidebar-border: var(--rs-border-subtle);
1111
+ --rs-sidebar-bg: color-mix(in srgb, var(--rs-surface) 88%, transparent);
1112
+ --rs-sidebar-title: var(--rs-text-primary);
1113
+ --rs-sidebar-subtitle: var(--rs-text-secondary);
1114
+ --rs-sidebar-item: var(--rs-text-secondary);
1115
+ --rs-sidebar-item-hover: var(--rs-text-primary);
1116
+ --rs-sidebar-item-hover-bg: var(--rs-item-hover);
1117
+ --rs-sidebar-item-active: var(--rs-primary);
1118
+ --rs-sidebar-item-active-bg: color-mix(in srgb, var(--rs-primary) 12%, transparent);
1119
+ --rs-sidebar-badge: var(--rs-text-inverse);
1120
+ --rs-sidebar-badge-bg: var(--rs-primary);
1121
+ --rs-split-resizer: var(--rs-border-subtle);
1122
+ --rs-split-resizer-hover: var(--rs-border);
1123
+ --rs-split-resizer-active: var(--rs-primary);
1124
+ --rs-split-grip-fg: var(--rs-text-tertiary);
1125
+ --rs-split-grip-bg: var(--rs-surface-elevated);
1126
+ --rs-split-grip-border: var(--rs-border);
1127
+ --rs-split-grip-active-fg: var(--rs-primary-foreground);
1128
+ --rs-split-grip-active-bg: var(--rs-primary);
1129
+ --rs-split-grip-active-border: var(--rs-primary);
1438
1130
  --rs-danger: #ff3b30;
1439
1131
  --rs-danger-container: #ffe5e3;
1440
1132
  --rs-on-danger-container: #c41e16;
@@ -1493,13 +1185,38 @@ html {
1493
1185
  --rs-dynamic-tags-disabled-opacity: 0.38;
1494
1186
 
1495
1187
  /* ── Menu(侧栏 / 导航;业务可在父级覆盖,无需 :deep)── */
1496
- --rs-menu-item-fg: var(--rs-muted);
1497
- --rs-menu-item-fg-hover: var(--rs-text);
1188
+ --rs-menu-item-fg: var(--rs-text-secondary);
1189
+ --rs-menu-item-fg-hover: var(--rs-text-primary);
1498
1190
  --rs-menu-item-bg-hover: var(--rs-surface-hover);
1499
1191
  --rs-menu-item-active-fg: var(--rs-primary);
1500
1192
  --rs-menu-item-active-bg: color-mix(in srgb, var(--rs-primary) 12%, transparent);
1501
1193
  --rs-menu-item-active-parent-fg: var(--rs-primary);
1502
1194
  --rs-menu-item-active-parent-bg: transparent;
1195
+ --rs-menu-group-label-fg: var(--rs-text-secondary);
1196
+ --rs-menu-arrow-fg: var(--rs-text-tertiary);
1197
+
1198
+ /* ── Dropdown(命令菜单;随 data-rs-theme)── */
1199
+ --rs-dropdown-fg: var(--rs-text-primary);
1200
+ --rs-dropdown-fg-muted: var(--rs-text-secondary);
1201
+ --rs-dropdown-fg-placeholder: var(--rs-text-tertiary);
1202
+ --rs-dropdown-bg: var(--rs-surface-elevated);
1203
+ --rs-dropdown-border: var(--rs-border);
1204
+ --rs-dropdown-divider: var(--rs-border-subtle);
1205
+ --rs-dropdown-trigger-bg: var(--rs-input-bg);
1206
+ --rs-dropdown-trigger-border: var(--rs-input-border, var(--rs-border));
1207
+ --rs-dropdown-trigger-border-hover: var(--rs-input-border-hover, var(--rs-border));
1208
+ --rs-dropdown-trigger-shadow: var(--rs-input-shadow, none);
1209
+ --rs-dropdown-item-hover: var(--rs-item-hover);
1210
+ --rs-dropdown-item-active-fg: var(--rs-primary);
1211
+ --rs-dropdown-item-active-bg: color-mix(in srgb, var(--rs-primary) 12%, transparent);
1212
+ --rs-dropdown-danger-fg: var(--rs-danger);
1213
+
1214
+ /* ── Popover(气泡卡片;随 data-rs-theme)── */
1215
+ --rs-popover-fg: var(--rs-text-primary);
1216
+ --rs-popover-fg-muted: var(--rs-text-secondary);
1217
+ --rs-popover-bg: var(--rs-surface-elevated);
1218
+ --rs-popover-border: var(--rs-border);
1219
+ --rs-popover-title-fg: var(--rs-text-primary);
1503
1220
 
1504
1221
  /* ── Alert(反馈条;正文色可按主题单独调)── */
1505
1222
  --rs-alert-radius: var(--rs-radius);
@@ -1507,15 +1224,59 @@ html {
1507
1224
  --rs-alert-padding-y: var(--rs-space-md);
1508
1225
  --rs-alert-padding-x: var(--rs-space-lg);
1509
1226
  --rs-alert-border-alpha: 35%;
1510
- --rs-alert-content-fg: var(--rs-muted);
1227
+ --rs-alert-content-fg: var(--rs-text-secondary);
1228
+ --rs-alert-content-alpha: 78%;
1229
+
1230
+ /* ── Loading(指示器;tone 在组件上改 --rs-loading-accent)── */
1231
+ --rs-loading-gap: var(--rs-space-sm);
1232
+ --rs-loading-pad: var(--rs-space-xl);
1233
+ --rs-loading-label: var(--rs-text-secondary);
1234
+ --rs-loading-track: color-mix(in srgb, var(--rs-text-tertiary) 35%, transparent);
1235
+ --rs-loading-accent: var(--rs-primary);
1236
+ --rs-loading-overlay: color-mix(in srgb, var(--rs-surface) 72%, transparent);
1237
+ --rs-loading-skeleton: var(--rs-surface-hover);
1238
+ --rs-loading-skeleton-shine: color-mix(in srgb, var(--rs-border) 55%, transparent);
1239
+ --rs-loading-stroke: 2px;
1240
+ --rs-loading-spinner-sm: 0.875rem;
1241
+ --rs-loading-spinner-md: 1.125rem;
1242
+ --rs-loading-spinner-lg: 1.5rem;
1243
+ --rs-loading-dot-sm: 0.25rem;
1244
+ --rs-loading-dot-md: 0.375rem;
1245
+ --rs-loading-dot-lg: 0.5rem;
1246
+ --rs-loading-skeleton-h-sm: 0.5rem;
1247
+ --rs-loading-skeleton-h-md: 0.75rem;
1248
+ --rs-loading-skeleton-h-lg: 1rem;
1249
+ --rs-loading-z: 1;
1250
+ --rs-loading-blur: 0.125rem;
1251
+ --rs-loading-spin-duration: 0.7s;
1252
+ --rs-loading-bounce-duration: 1s;
1253
+ --rs-loading-shimmer-duration: 1.2s;
1254
+
1255
+ /* ── LoadingBar(顶栏进度;色跟语义 token,可被 color / errorColor 覆盖)── */
1256
+ --rs-loading-bar-size: 2px;
1257
+ --rs-loading-bar-color: var(--rs-primary);
1258
+ --rs-loading-bar-error: var(--rs-danger);
1511
1259
 
1512
1260
  /* ── Descriptions(描述列表栅格)── */
1513
1261
  --rs-descriptions-radius: var(--rs-radius);
1514
1262
  --rs-descriptions-border: var(--rs-border);
1263
+ --rs-descriptions-label-width: 7.5rem;
1264
+ --rs-descriptions-title: var(--rs-text-primary);
1515
1265
  /* 标签列用实色表面混合,避免 surface-hover 被桥成透明 overlay 时失效 */
1516
1266
  --rs-descriptions-label-bg: color-mix(in srgb, var(--rs-surface-hover) 72%, var(--rs-surface));
1517
- --rs-descriptions-label-fg: var(--rs-muted);
1518
- --rs-descriptions-value-fg: var(--rs-text);
1267
+ --rs-descriptions-label-fg: var(--rs-text-secondary);
1268
+ --rs-descriptions-value-fg: var(--rs-text-primary);
1269
+
1270
+ /* ── CodeBlock(只读代码;外壳跟语义 token,深色语法仍用 oneDark)── */
1271
+ --rs-code-block-bg: var(--rs-surface-elevated);
1272
+ --rs-code-block-fg: var(--rs-text-primary);
1273
+ --rs-code-block-muted: var(--rs-text-tertiary);
1274
+ --rs-code-block-border: var(--rs-border-subtle);
1275
+ --rs-code-block-bar-bg: color-mix(in srgb, var(--rs-surface-elevated) 80%, var(--rs-border) 20%);
1276
+ --rs-code-block-gutter: color-mix(in srgb, var(--rs-surface-elevated) 85%, var(--rs-border) 15%);
1277
+ --rs-code-block-highlight: color-mix(in srgb, var(--rs-primary) 14%, transparent);
1278
+ --rs-code-block-max-height: 32rem;
1279
+ --rs-code-block-transition: 120ms;
1519
1280
 
1520
1281
  /* ── Card(macOS systemGroupedBackground 上的圆角分组卡片)── */
1521
1282
  --rs-card-border: rgb(60 60 67 / 0.14);
@@ -1592,6 +1353,11 @@ html {
1592
1353
  --rs-log-fatal: var(--rs-danger);
1593
1354
  --rs-log-hit-bg: color-mix(in srgb, var(--rs-warning) 32%, var(--rs-log-bg));
1594
1355
  --rs-log-hit-fg: var(--rs-log-fg);
1356
+ --rs-log-accent: var(--rs-primary);
1357
+ --rs-log-active-bg: color-mix(in srgb, var(--rs-primary) 12%, var(--rs-log-bg));
1358
+ --rs-log-chrome-bg: color-mix(in srgb, var(--rs-log-bg) 88%, var(--rs-surface-hover));
1359
+ --rs-log-chip-on-bg: color-mix(in srgb, var(--rs-primary) 14%, transparent);
1360
+ --rs-log-chip-on-border: color-mix(in srgb, var(--rs-primary) 45%, var(--rs-log-border));
1595
1361
 
1596
1362
  --rs-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.04), 0 0 0 0.5px rgb(0 0 0 / 0.04);
1597
1363
  --rs-shadow: 0 4px 16px rgb(0 0 0 / 0.08), 0 0 0 0.5px rgb(0 0 0 / 0.06);
@@ -1934,12 +1700,6 @@ code {
1934
1700
  min-width: 0;
1935
1701
  }
1936
1702
 
1937
- /* ContextMenu:Dialog 内表格右键菜单 Portal 后须高于 modal */
1938
- [data-reka-popper-content-wrapper]:has(> .rs-context-menu__content),
1939
- [data-reka-popper-content-wrapper]:has(> .rs-context-menu__sub-content) {
1940
- z-index: calc(var(--rs-z-modal) + 2);
1941
- }
1942
-
1943
1703
  /*
1944
1704
  * TimePicker 面板 Teleport 到 body。
1945
1705
  * 独立面板跟 DatePicker 同一档(modal+2);嵌在日期面板里再高一档。
@@ -2527,106 +2287,3 @@ code {
2527
2287
  opacity: 0.38;
2528
2288
  cursor: not-allowed;
2529
2289
  }
2530
-
2531
- /* vue-sonner 结构样式已在文件顶部 import;外观由 .rs-toast* 接管 */
2532
-
2533
- [data-sonner-toaster].rs-toaster {
2534
- z-index: var(--rs-z-toast);
2535
- font-family: inherit;
2536
- }
2537
-
2538
- .rs-toast {
2539
- display: flex;
2540
- align-items: center;
2541
- gap: var(--rs-space-sm);
2542
- position: relative;
2543
- min-width: 18rem;
2544
- max-width: min(28rem, calc(100vw - 2rem));
2545
- padding: var(--rs-space-md) var(--rs-space-lg);
2546
- border: 1px solid var(--rs-border);
2547
- border-radius: var(--rs-radius);
2548
- background: var(--rs-surface-elevated);
2549
- color: var(--rs-text);
2550
- box-shadow: var(--rs-shadow-lg);
2551
- }
2552
-
2553
- .rs-toast:has([data-description]) {
2554
- align-items: flex-start;
2555
- }
2556
-
2557
- .rs-toast [data-icon] {
2558
- display: flex;
2559
- flex-shrink: 0;
2560
- align-items: center;
2561
- margin: 0;
2562
- }
2563
-
2564
- .rs-toast:has([data-description]) [data-icon] {
2565
- margin-top: 0.125rem;
2566
- }
2567
-
2568
- .rs-toast [data-content] {
2569
- flex: 1;
2570
- min-width: 0;
2571
- display: grid;
2572
- gap: var(--rs-space-xs);
2573
- }
2574
-
2575
- .rs-toast--success {
2576
- border-color: color-mix(in srgb, var(--rs-success) 35%, var(--rs-border));
2577
- }
2578
-
2579
- .rs-toast--error {
2580
- border-color: color-mix(in srgb, var(--rs-danger) 35%, var(--rs-border));
2581
- }
2582
-
2583
- .rs-toast--warning {
2584
- border-color: color-mix(in srgb, var(--rs-warning) 35%, var(--rs-border));
2585
- }
2586
-
2587
- .rs-toast--info {
2588
- border-color: color-mix(in srgb, var(--rs-info) 35%, var(--rs-border));
2589
- }
2590
-
2591
- .rs-toast__title {
2592
- font-size: var(--rs-font-size-sm);
2593
- font-weight: var(--rs-font-weight-semibold);
2594
- }
2595
-
2596
- .rs-toast__description {
2597
- color: var(--rs-muted);
2598
- font-size: var(--rs-font-size-sm);
2599
- }
2600
-
2601
- .rs-toast__close {
2602
- position: absolute;
2603
- top: 0;
2604
- inset-inline-start: 0;
2605
- display: flex;
2606
- align-items: center;
2607
- justify-content: center;
2608
- width: 1.25rem;
2609
- height: 1.25rem;
2610
- padding: 0;
2611
- border: 1px solid var(--rs-border);
2612
- border-radius: var(--rs-radius-full);
2613
- background: var(--rs-surface-elevated);
2614
- color: var(--rs-muted);
2615
- cursor: pointer;
2616
- transform: translate(-35%, -35%);
2617
- transition:
2618
- background var(--rs-transition-fast),
2619
- border-color var(--rs-transition-fast),
2620
- color var(--rs-transition-fast);
2621
- }
2622
-
2623
- .rs-toast__close:hover {
2624
- background: var(--rs-item-hover);
2625
- border-color: var(--rs-border);
2626
- color: var(--rs-text);
2627
- }
2628
-
2629
- .rs-toast__close:focus-visible {
2630
- outline: none;
2631
- box-shadow: 0 0 0 var(--rs-focus-ring-width, 2px) var(--rs-focus-ring);
2632
- }