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,33 +1,40 @@
1
+ import { useRsConfigOptional } from "../../../composables/useRsConfig.js";
2
+ import { resolveDirMode } from "../../../locale/apply.js";
1
3
  import { useRsI18n } from "../../../composables/useRsI18n.js";
2
4
  import RsIcon_default from "../../icon/src/RsIcon.js";
3
- import { applySplitResize, collapseSplitPane, expandSplitPane, isSplitPaneCollapsed, normalizeSplitSizes, resolveSplitAutoFlags, resolveSplitConstraints, roundSize, splitSizesEqual } from "./split-pane-utils.js";
4
- import { Fragment, computed, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, mergeModels, normalizeClass, normalizeStyle, openBlock, ref, renderList, renderSlot, unref, useModel, watch } from "vue";
5
+ import { applySplitResize, collapseSplitPane, expandSplitPane, invertSplitAxisDelta, isSplitPaneCollapsed, isSplitResizerInteractive, normalizeSplitSizes, resolveSplitAutoFlags, resolveSplitConstraints, roundSize, splitPaneDomId, splitSizesEqual } from "./split-pane-utils.js";
6
+ import { Fragment, computed, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, mergeModels, normalizeClass, normalizeStyle, onUnmounted, openBlock, ref, renderList, renderSlot, useId, useModel, watch } from "vue";
5
7
  //#region src/components/split-pane/src/RsSplitPane.vue?vue&type=script&setup=true&lang.ts
6
- var _hoisted_1 = ["data-pane-key"];
7
- var _hoisted_2 = [
8
+ var _hoisted_1 = ["id", "aria-label"];
9
+ var _hoisted_2 = ["id", "data-pane-key"];
10
+ var _hoisted_3 = [
8
11
  "data-resizer-index",
9
12
  "onPointerdown",
10
13
  "onPointermove",
11
14
  "onPointerup",
12
- "onPointercancel"
15
+ "onPointercancel",
16
+ "onLostpointercapture"
13
17
  ];
14
- var _hoisted_3 = [
18
+ var _hoisted_4 = [
15
19
  "tabindex",
16
20
  "aria-orientation",
17
21
  "aria-valuenow",
18
22
  "aria-valuemin",
19
23
  "aria-valuemax",
24
+ "aria-valuetext",
25
+ "aria-controls",
20
26
  "aria-label",
21
27
  "aria-disabled",
22
28
  "onKeydown",
23
29
  "onDblclick"
24
30
  ];
25
- var _hoisted_4 = {
31
+ var _hoisted_5 = {
26
32
  key: 0,
27
33
  class: "rs-split__grip",
28
34
  "aria-hidden": "true"
29
35
  };
30
36
  var RsSplitPane_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
37
+ name: "RsSplitPane",
31
38
  __name: "RsSplitPane",
32
39
  props: /*@__PURE__*/ mergeModels({
33
40
  panes: {},
@@ -44,7 +51,9 @@ var RsSplitPane_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
44
51
  fill: {
45
52
  type: Boolean,
46
53
  default: false
47
- }
54
+ },
55
+ id: {},
56
+ ariaLabel: {}
48
57
  }, {
49
58
  "sizes": { default: () => [] },
50
59
  "sizesModifiers": {}
@@ -52,6 +61,7 @@ var RsSplitPane_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
52
61
  emits: /*@__PURE__*/ mergeModels([
53
62
  "resize",
54
63
  "resize-end",
64
+ "resize-start",
55
65
  "collapse",
56
66
  "expand"
57
67
  ], ["update:sizes"]),
@@ -60,13 +70,20 @@ var RsSplitPane_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
60
70
  /** 各面板尺寸(百分比,总和 100) */
61
71
  const model = useModel(__props, "sizes");
62
72
  const emit = __emit;
63
- const { t } = useRsI18n();
73
+ const { t, locale } = useRsI18n();
74
+ const config = useRsConfigOptional();
75
+ const fallbackId = useId();
64
76
  const rootRef = ref(null);
65
77
  const sizes = ref([]);
78
+ const rootId = computed(() => props.id || fallbackId);
79
+ const groupLabel = computed(() => props.ariaLabel || t("split.label"));
80
+ const writingDir = computed(() => resolveDirMode(config?.dir.value ?? "auto", config?.locale.value ?? locale.value));
66
81
  const constraints = computed(() => resolveSplitConstraints(props.panes));
67
82
  const resizerCount = computed(() => Math.max(0, props.panes.length - 1));
68
83
  /** 内容自适应面板标记;首次拖拽/键盘调整时会物化为百分比并清空 */
69
84
  const autoFlags = ref(resolveSplitAutoFlags(props.panes));
85
+ /** pane key → 折叠前尺寸;expand 未显式传 toSize 时还原 */
86
+ const sizeBeforeCollapse = /* @__PURE__ */ new Map();
70
87
  /** 归一化初始值,作为双击复位的基准 */
71
88
  let initialSizes = normalizeSplitSizes(props.panes, modelSeed());
72
89
  sizes.value = initialSizes.slice();
@@ -76,11 +93,16 @@ var RsSplitPane_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
76
93
  function paneKeySignature() {
77
94
  return props.panes.map((pane) => pane.key).join("|");
78
95
  }
96
+ function pruneCollapseMemory() {
97
+ const keys = new Set(props.panes.map((pane) => pane.key));
98
+ for (const key of sizeBeforeCollapse.keys()) if (!keys.has(key)) sizeBeforeCollapse.delete(key);
99
+ }
79
100
  watch(() => paneKeySignature(), () => {
80
101
  const provided = sizes.value.length === props.panes.length ? sizes.value : void 0;
81
102
  autoFlags.value = resolveSplitAutoFlags(props.panes);
82
103
  initialSizes = normalizeSplitSizes(props.panes, provided);
83
104
  sizes.value = initialSizes.slice();
105
+ pruneCollapseMemory();
84
106
  syncModel(sizes.value);
85
107
  });
86
108
  watch(() => props.panes.map((pane) => pane.size).join("|"), () => {
@@ -105,8 +127,6 @@ var RsSplitPane_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
105
127
  syncModel(next);
106
128
  emit("resize", next.slice());
107
129
  }
108
- /** pane key → 折叠前尺寸;expand 未显式传 toSize 时还原 */
109
- const sizeBeforeCollapse = /* @__PURE__ */ new Map();
110
130
  function emitBoundaryTransitions(before, after) {
111
131
  props.panes.forEach((pane, index) => {
112
132
  const constraint = constraints.value[index];
@@ -124,12 +144,39 @@ var RsSplitPane_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
124
144
  if (toSize !== void 0) return toSize;
125
145
  return sizeBeforeCollapse.get(key) ?? initialSizes[index];
126
146
  }
147
+ function paneDomId(key) {
148
+ return splitPaneDomId(rootId.value, key);
149
+ }
150
+ function resizerInteractive(index) {
151
+ return isSplitResizerInteractive(props.panes[index], props.disabled);
152
+ }
153
+ function resizerAriaLabel(index) {
154
+ return props.panes[index]?.resizerAriaLabel || t("split.resize");
155
+ }
156
+ function resizerValueText(index) {
157
+ return t("split.value", { value: Math.round(sizes.value[index] ?? 0) });
158
+ }
159
+ function resizerControls(index) {
160
+ return [props.panes[index], props.panes[index + 1]].filter((pane) => Boolean(pane)).map((pane) => paneDomId(pane.key)).join(" ");
161
+ }
162
+ /** 跟计算样式,避免只读 Config 而父级已写 dir=rtl */
163
+ function rootIsRtl() {
164
+ const root = rootRef.value;
165
+ if (root && typeof getComputedStyle === "function") return getComputedStyle(root).direction === "rtl";
166
+ return writingDir.value === "rtl";
167
+ }
168
+ function axisDelta(raw) {
169
+ return invertSplitAxisDelta(props.orientation, rootIsRtl(), raw);
170
+ }
127
171
  let dragIndex = null;
128
172
  let dragOrigin = 0;
129
173
  let dragStartSizes = [];
130
174
  let flexPx = 0;
131
175
  let pendingDragSizes = null;
132
176
  let dragFrame = 0;
177
+ let dragTarget = null;
178
+ let dragPointerId = null;
179
+ let dragPaneEls = [];
133
180
  function directPaneElements(root) {
134
181
  return [...root.children].filter((el) => el instanceof HTMLElement && el.classList.contains("rs-split__pane"));
135
182
  }
@@ -140,41 +187,69 @@ var RsSplitPane_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
140
187
  }
141
188
  /** 拖拽过程中直接写 flex-grow,避免每帧触发 Vue 重渲染 */
142
189
  function applyDragToDom(next) {
143
- const panes = paneElements();
190
+ const panes = dragPaneEls.length ? dragPaneEls : paneElements();
144
191
  next.forEach((size, i) => {
145
192
  panes[i]?.style.setProperty("flex-grow", String(size));
146
193
  });
147
194
  }
148
- function setDraggingUi(active, index) {
149
- const root = rootRef.value;
150
- if (!root) return;
151
- root.classList.toggle("rs-split--dragging", active);
152
- const host = root.querySelector(`[data-resizer-index="${index}"]`);
195
+ function setDraggingUi(active, host) {
196
+ rootRef.value?.classList.toggle("rs-split--dragging", active);
153
197
  if (!host) return;
154
- if (active) host.setAttribute("data-active", "");
155
- else host.removeAttribute("data-active");
198
+ if (active) host.dataset.active = "";
199
+ else delete host.dataset.active;
156
200
  }
157
201
  function scheduleDragApply(next) {
158
202
  pendingDragSizes = next;
159
203
  if (dragFrame) return;
160
204
  dragFrame = requestAnimationFrame(() => {
161
205
  dragFrame = 0;
162
- if (pendingDragSizes) applyDragToDom(pendingDragSizes);
206
+ if (!pendingDragSizes) return;
207
+ applyDragToDom(pendingDragSizes);
208
+ emit("resize", pendingDragSizes.slice());
209
+ });
210
+ }
211
+ function clearDragInlineStyles() {
212
+ (dragPaneEls.length ? dragPaneEls : paneElements()).forEach((el) => {
213
+ el.style.removeProperty("flex-grow");
163
214
  });
164
215
  }
216
+ function releaseDragPointer() {
217
+ if (dragTarget && dragPointerId != null) try {
218
+ dragTarget.releasePointerCapture(dragPointerId);
219
+ } catch {}
220
+ dragTarget = null;
221
+ dragPointerId = null;
222
+ }
223
+ function abortDrag() {
224
+ if (dragFrame) {
225
+ cancelAnimationFrame(dragFrame);
226
+ dragFrame = 0;
227
+ }
228
+ const host = dragTarget;
229
+ const index = dragIndex;
230
+ releaseDragPointer();
231
+ if (index !== null) {
232
+ setDraggingUi(false, host);
233
+ clearDragInlineStyles();
234
+ }
235
+ dragIndex = null;
236
+ pendingDragSizes = null;
237
+ dragPaneEls = [];
238
+ }
165
239
  function finishDrag(index) {
166
240
  if (dragIndex !== index) return;
167
- dragIndex = null;
168
241
  if (dragFrame) {
169
242
  cancelAnimationFrame(dragFrame);
170
243
  dragFrame = 0;
171
244
  }
172
- setDraggingUi(false, index);
245
+ const host = dragTarget;
173
246
  const final = pendingDragSizes ?? sizes.value;
174
247
  pendingDragSizes = null;
175
- paneElements().forEach((el) => {
176
- el.style.removeProperty("flex-grow");
177
- });
248
+ dragIndex = null;
249
+ releaseDragPointer();
250
+ setDraggingUi(false, host);
251
+ clearDragInlineStyles();
252
+ dragPaneEls = [];
178
253
  commit(final);
179
254
  emitBoundaryTransitions(dragStartSizes, final);
180
255
  emit("resize-end", final.slice());
@@ -193,40 +268,51 @@ var RsSplitPane_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
193
268
  return sum;
194
269
  }
195
270
  function onResizerPointerDown(index, event) {
196
- if (props.disabled) return;
271
+ if (!resizerInteractive(index)) return;
197
272
  if (event.pointerType === "mouse" && event.button !== 0) return;
198
273
  materializeAutoPanes();
199
- event.currentTarget.setPointerCapture?.(event.pointerId);
274
+ const target = event.currentTarget;
275
+ target.setPointerCapture?.(event.pointerId);
200
276
  dragIndex = index;
201
277
  dragOrigin = props.orientation === "horizontal" ? event.clientX : event.clientY;
202
278
  dragStartSizes = sizes.value.slice();
203
279
  pendingDragSizes = dragStartSizes;
204
280
  flexPx = measureFlexPx();
205
- setDraggingUi(true, index);
281
+ dragTarget = target;
282
+ dragPointerId = event.pointerId;
283
+ dragPaneEls = paneElements();
284
+ setDraggingUi(true, target);
285
+ emit("resize-start", dragStartSizes.slice());
206
286
  event.preventDefault();
207
287
  }
208
288
  function onResizerPointerMove(index, event) {
209
289
  if (dragIndex !== index || flexPx <= 0) return;
210
- const deltaPercent = ((props.orientation === "horizontal" ? event.clientX : event.clientY) - dragOrigin) / flexPx * 100;
290
+ const deltaPercent = axisDelta(((props.orientation === "horizontal" ? event.clientX : event.clientY) - dragOrigin) / flexPx * 100);
211
291
  scheduleDragApply(applySplitResize(dragStartSizes, constraints.value, index, deltaPercent));
212
292
  }
213
293
  function endDrag(index, event) {
214
294
  if (dragIndex !== index) return;
215
- event.currentTarget.releasePointerCapture?.(event.pointerId);
295
+ if (dragTarget && event.pointerId === dragPointerId) try {
296
+ dragTarget.releasePointerCapture(event.pointerId);
297
+ } catch {}
298
+ finishDrag(index);
299
+ }
300
+ function onLostPointerCapture(index) {
301
+ if (dragIndex !== index) return;
216
302
  finishDrag(index);
217
303
  }
218
304
  function onResizerKeydown(index, event) {
219
- if (props.disabled) return;
305
+ if (!resizerInteractive(index)) return;
220
306
  materializeAutoPanes();
221
307
  const horizontal = props.orientation === "horizontal";
222
308
  const step = props.keyboardStep;
223
309
  let delta = 0;
224
310
  switch (event.key) {
225
311
  case "ArrowLeft":
226
- if (horizontal) delta = -step;
312
+ if (horizontal) delta = axisDelta(-step);
227
313
  break;
228
314
  case "ArrowRight":
229
- if (horizontal) delta = step;
315
+ if (horizontal) delta = axisDelta(step);
230
316
  break;
231
317
  case "ArrowUp":
232
318
  if (!horizontal) delta = -step;
@@ -249,13 +335,14 @@ var RsSplitPane_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
249
335
  }
250
336
  if (delta === 0) return;
251
337
  event.preventDefault();
338
+ emit("resize-start", sizes.value.slice());
252
339
  const before = sizes.value.slice();
253
340
  commit(applySplitResize(sizes.value, constraints.value, index, delta));
254
341
  emitBoundaryTransitions(before, sizes.value);
255
342
  emit("resize-end", sizes.value.slice());
256
343
  }
257
344
  function onResizerDblClick(index) {
258
- if (props.disabled) return;
345
+ if (!resizerInteractive(index)) return;
259
346
  materializeAutoPanes();
260
347
  const a = sizes.value[index];
261
348
  const b = sizes.value[index + 1];
@@ -363,22 +450,37 @@ var RsSplitPane_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
363
450
  commit(initialSizes.slice());
364
451
  emit("resize-end", sizes.value.slice());
365
452
  }
453
+ function focus(index) {
454
+ const root = rootRef.value;
455
+ if (!root) return;
456
+ const hosts = [...root.querySelectorAll("[data-resizer-index]")];
457
+ ((index !== void 0 ? hosts.find((el) => Number(el.dataset.resizerIndex) === index) : hosts.find((el) => resizerInteractive(Number(el.dataset.resizerIndex)))) ?? hosts[0])?.querySelector(".rs-split__resizer")?.focus();
458
+ }
459
+ onUnmounted(() => {
460
+ abortDrag();
461
+ sizeBeforeCollapse.clear();
462
+ });
366
463
  __expose({
367
464
  collapse,
368
465
  expand,
369
466
  reset,
370
- getSizes: () => sizes.value.slice()
467
+ getSizes: () => sizes.value.slice(),
468
+ focus
371
469
  });
372
470
  return (_ctx, _cache) => {
373
471
  return openBlock(), createElementBlock("div", {
472
+ id: __props.id,
374
473
  ref_key: "rootRef",
375
474
  ref: rootRef,
376
475
  class: normalizeClass(["rs-split", [`rs-split--${__props.orientation}`, {
377
476
  "rs-split--disabled": __props.disabled,
378
477
  "rs-split--fill": __props.fill
379
- }]])
478
+ }]]),
479
+ role: "group",
480
+ "aria-label": groupLabel.value
380
481
  }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.panes, (pane, index) => {
381
482
  return openBlock(), createElementBlock(Fragment, { key: pane.key }, [createElementVNode("div", {
483
+ id: paneDomId(pane.key),
382
484
  class: normalizeClass(["rs-split__pane", {
383
485
  "rs-split__pane--collapsed": paneCollapsed(index),
384
486
  "rs-split__pane--auto": autoFlags.value[index]
@@ -388,30 +490,36 @@ var RsSplitPane_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
388
490
  }, [renderSlot(_ctx.$slots, pane.key, {
389
491
  size: sizes.value[index],
390
492
  collapsed: paneCollapsed(index)
391
- })], 14, _hoisted_1), index < resizerCount.value ? (openBlock(), createElementBlock("div", {
493
+ })], 14, _hoisted_2), index < resizerCount.value ? (openBlock(), createElementBlock("div", {
392
494
  key: 0,
393
- class: normalizeClass(["rs-split__resizer-host", { "rs-split__resizer-host--handle": resizerShowsHandle(index) }]),
495
+ class: normalizeClass(["rs-split__resizer-host", {
496
+ "rs-split__resizer-host--handle": resizerShowsHandle(index),
497
+ "rs-split__resizer-host--disabled": !resizerInteractive(index)
498
+ }]),
394
499
  "data-resizer-index": index,
395
500
  onPointerdown: ($event) => onResizerPointerDown(index, $event),
396
501
  onPointermove: ($event) => onResizerPointerMove(index, $event),
397
502
  onPointerup: ($event) => endDrag(index, $event),
398
- onPointercancel: ($event) => endDrag(index, $event)
503
+ onPointercancel: ($event) => endDrag(index, $event),
504
+ onLostpointercapture: ($event) => onLostPointerCapture(index)
399
505
  }, [createElementVNode("hr", {
400
506
  class: normalizeClass(["rs-split__resizer", { "rs-split__resizer--handle": resizerShowsHandle(index) }]),
401
- tabindex: __props.disabled ? -1 : 0,
507
+ tabindex: resizerInteractive(index) ? 0 : -1,
402
508
  "aria-orientation": __props.orientation === "horizontal" ? "vertical" : "horizontal",
403
509
  "aria-valuenow": Math.round(sizes.value[index] ?? 0),
404
510
  "aria-valuemin": Math.round(constraints.value[index]?.min ?? 0),
405
511
  "aria-valuemax": Math.round(constraints.value[index]?.max ?? 100),
406
- "aria-label": unref(t)("split.resize"),
407
- "aria-disabled": __props.disabled || void 0,
512
+ "aria-valuetext": resizerValueText(index),
513
+ "aria-controls": resizerControls(index),
514
+ "aria-label": resizerAriaLabel(index),
515
+ "aria-disabled": resizerInteractive(index) ? void 0 : true,
408
516
  onKeydown: ($event) => onResizerKeydown(index, $event),
409
517
  onDblclick: ($event) => onResizerDblClick(index)
410
- }, null, 42, _hoisted_3), resizerShowsHandle(index) ? (openBlock(), createElementBlock("span", _hoisted_4, [createVNode(RsIcon_default, {
518
+ }, null, 42, _hoisted_4), resizerShowsHandle(index) ? (openBlock(), createElementBlock("span", _hoisted_5, [createVNode(RsIcon_default, {
411
519
  name: __props.orientation === "horizontal" ? "grip-vertical" : "grip-horizontal",
412
520
  size: 12
413
- }, null, 8, ["name"])])) : createCommentVNode("", true)], 42, _hoisted_2)) : createCommentVNode("", true)], 64);
414
- }), 128))], 2);
521
+ }, null, 8, ["name"])])) : createCommentVNode("", true)], 42, _hoisted_3)) : createCommentVNode("", true)], 64);
522
+ }), 128))], 10, _hoisted_1);
415
523
  };
416
524
  }
417
525
  });
@@ -23,6 +23,18 @@ export interface RsSplitPaneItem {
23
23
  collapsedSize?: number;
24
24
  /** 本面板右侧分隔条是否显示抓手;缺省时继承 RsSplitPane.withHandle */
25
25
  resizerHandle?: boolean;
26
+ /**
27
+ * 本面板右侧 / 下方分隔条是否可拖、可键盘调整。
28
+ * 默认 true;false 时缝仍渲染,但不能改尺寸。
29
+ */
30
+ resizable?: boolean;
31
+ /** 覆盖本缝的 aria-label;缺省走 split.resize */
32
+ resizerAriaLabel?: string;
33
+ }
34
+ /** 具名插槽参数:当前占比与是否折叠 */
35
+ export interface RsSplitPaneSlot {
36
+ size: number;
37
+ collapsed: boolean;
26
38
  }
27
39
  /**
28
40
  * RsSplitPane 模板 ref 请用此类型。
@@ -33,6 +45,8 @@ export interface RsSplitPaneExpose {
33
45
  expand: (key: string, toSize?: number) => void;
34
46
  reset: () => void;
35
47
  getSizes: () => number[];
48
+ /** 聚焦第 index 条分隔条(默认第一条可交互缝) */
49
+ focus: (index?: number) => void;
36
50
  }
37
51
  /** 模板 ref 实例:expose + 根节点 */
38
52
  export type RsSplitPaneInstance = RsSplitPaneExpose & {
@@ -72,3 +86,12 @@ export declare function collapseSplitPane(sizes: number[], constraints: RsSplitC
72
86
  export declare function expandSplitPane(sizes: number[], constraints: RsSplitConstraint[], index: number, toSize?: number): number[];
73
87
  /** 两组尺寸是否近似相等(用于受控回写时避免抖动) */
74
88
  export declare function splitSizesEqual(a: number[], b: number[], epsilon?: number): boolean;
89
+ /**
90
+ * RTL 下行方向主轴与视觉左右对调:指针 / 左右键的增量要取反,
91
+ * 分隔条才跟手、且符合 APG「方向键按物理方向移动分隔条」。
92
+ */
93
+ export declare function invertSplitAxisDelta(orientation: RsSplitOrientation, rtl: boolean, delta: number): number;
94
+ /** 面板 DOM id:给 separator 的 aria-controls 用 */
95
+ export declare function splitPaneDomId(rootId: string, key: string): string;
96
+ /** 第 index 条缝(pane[index] 右侧 / 下方)是否允许拖拽与键盘调整 */
97
+ export declare function isSplitResizerInteractive(pane: RsSplitPaneItem | undefined, disabled: boolean): boolean;
@@ -131,5 +131,22 @@ function splitSizesEqual(a, b, epsilon = .01) {
131
131
  if (a.length !== b.length) return false;
132
132
  return a.every((value, index) => Math.abs(value - (b[index] ?? 0)) <= epsilon);
133
133
  }
134
+ /**
135
+ * RTL 下行方向主轴与视觉左右对调:指针 / 左右键的增量要取反,
136
+ * 分隔条才跟手、且符合 APG「方向键按物理方向移动分隔条」。
137
+ */
138
+ function invertSplitAxisDelta(orientation, rtl, delta) {
139
+ if (rtl && orientation === "horizontal") return -delta;
140
+ return delta;
141
+ }
142
+ /** 面板 DOM id:给 separator 的 aria-controls 用 */
143
+ function splitPaneDomId(rootId, key) {
144
+ return `${rootId}-pane-${key.replace(/[^a-zA-Z0-9_-]/g, "-")}`;
145
+ }
146
+ /** 第 index 条缝(pane[index] 右侧 / 下方)是否允许拖拽与键盘调整 */
147
+ function isSplitResizerInteractive(pane, disabled) {
148
+ if (disabled) return false;
149
+ return pane?.resizable !== false;
150
+ }
134
151
  //#endregion
135
- export { applySplitResize, collapseSplitPane, expandSplitPane, isRsSplitPaneAutoSize, isSplitPaneCollapsed, normalizeSplitSizes, resolveSplitAutoFlags, resolveSplitConstraints, roundSize, splitSizesEqual };
152
+ export { applySplitResize, collapseSplitPane, expandSplitPane, invertSplitAxisDelta, isRsSplitPaneAutoSize, isSplitPaneCollapsed, isSplitResizerInteractive, normalizeSplitSizes, resolveSplitAutoFlags, resolveSplitConstraints, roundSize, splitPaneDomId, splitSizesEqual };
@@ -1 +1,2 @@
1
1
  export { default as RsStatCard } from './src/RsStatCard.js';
2
+ export type { RsStatAccent, RsStatFormat, RsStatSize, RsStatTrend, RsStatTrendTone, } from './src/stat-card-utils';
@@ -1,51 +1,155 @@
1
1
 
2
- .rs-stat-card[data-v-96f97696] {
2
+ .rs-stat-card[data-v-75b35569] {
3
+ --rs-stat-accent: var(--rs-primary);
3
4
  position: relative;
5
+ display: flex;
6
+ flex-direction: column;
7
+ min-inline-size: 0;
4
8
  overflow: hidden;
5
9
  border: 1px solid var(--rs-border);
6
10
  border-radius: var(--rs-radius);
7
11
  background: var(--rs-surface);
8
12
  box-shadow: var(--rs-shadow-sm);
13
+ color: var(--rs-text-primary);
9
14
  }
10
- .rs-stat-card__accent[data-v-96f97696] {
11
- height: 3px;
12
- background: var(--rs-primary);
15
+ .rs-stat-card--success[data-v-75b35569] {
16
+ --rs-stat-accent: var(--rs-success);
13
17
  }
14
- .rs-stat-card--success .rs-stat-card__accent[data-v-96f97696] {
15
- background: var(--rs-success);
18
+ .rs-stat-card--warning[data-v-75b35569] {
19
+ --rs-stat-accent: var(--rs-warning);
16
20
  }
17
- .rs-stat-card--warning .rs-stat-card__accent[data-v-96f97696] {
18
- background: var(--rs-warning);
21
+ .rs-stat-card--danger[data-v-75b35569] {
22
+ --rs-stat-accent: var(--rs-danger);
19
23
  }
20
- .rs-stat-card--danger .rs-stat-card__accent[data-v-96f97696] {
21
- background: var(--rs-danger);
24
+ .rs-stat-card--info[data-v-75b35569] {
25
+ --rs-stat-accent: var(--rs-info);
22
26
  }
23
- .rs-stat-card--info .rs-stat-card__accent[data-v-96f97696] {
24
- background: var(--rs-info);
27
+ .rs-stat-card__accent[data-v-75b35569] {
28
+ flex: none;
29
+ block-size: calc(var(--rs-space-xs) * 0.75);
30
+ background: var(--rs-stat-accent);
25
31
  }
26
- .rs-stat-card__body[data-v-96f97696] {
32
+ .rs-stat-card__body[data-v-75b35569] {
27
33
  padding: var(--rs-space-lg);
28
34
  }
29
- .rs-stat-card__label[data-v-96f97696] {
30
- color: var(--rs-muted);
35
+ .rs-stat-card--sm .rs-stat-card__body[data-v-75b35569] {
36
+ padding: var(--rs-space-md);
37
+ }
38
+ .rs-stat-card--lg .rs-stat-card__body[data-v-75b35569] {
39
+ padding: var(--rs-space-xl);
40
+ }
41
+ .rs-stat-card__top[data-v-75b35569] {
42
+ display: flex;
43
+ align-items: flex-start;
44
+ justify-content: space-between;
45
+ gap: var(--rs-space-sm);
46
+ }
47
+ .rs-stat-card__label[data-v-75b35569] {
48
+ margin: 0;
49
+ min-inline-size: 0;
50
+ color: var(--rs-text-secondary);
31
51
  font-size: var(--rs-font-size-sm);
52
+ font-weight: var(--rs-font-weight-medium);
53
+ line-height: var(--rs-line-height-normal);
54
+ }
55
+ .rs-stat-card__icon[data-v-75b35569] {
56
+ display: inline-flex;
57
+ flex: none;
58
+ color: var(--rs-stat-accent);
32
59
  }
33
- .rs-stat-card__value[data-v-96f97696] {
34
- margin-top: var(--rs-space-sm);
35
- color: var(--rs-text);
60
+ .rs-stat-card__value[data-v-75b35569] {
61
+ display: flex;
62
+ flex-wrap: wrap;
63
+ align-items: baseline;
64
+ gap: var(--rs-space-xs);
65
+ margin-block-start: var(--rs-space-sm);
66
+ color: var(--rs-text-primary);
36
67
  font-size: var(--rs-font-size-3xl);
37
68
  font-weight: var(--rs-font-weight-bold);
38
- line-height: 1.1;
69
+ font-variant-numeric: tabular-nums;
70
+ line-height: var(--rs-line-height-tight);
71
+ overflow-wrap: anywhere;
39
72
  }
40
- .rs-stat-card__description[data-v-96f97696] {
73
+ .rs-stat-card--sm .rs-stat-card__value[data-v-75b35569] {
74
+ font-size: var(--rs-font-size-2xl);
75
+ }
76
+ .rs-stat-card--lg .rs-stat-card__value[data-v-75b35569] {
77
+ font-size: calc(var(--rs-font-size-3xl) + var(--rs-space-xs));
78
+ }
79
+ .rs-stat-card__affix[data-v-75b35569] {
80
+ color: var(--rs-text-secondary);
81
+ font-size: var(--rs-font-size-sm);
82
+ font-weight: var(--rs-font-weight-medium);
83
+ line-height: var(--rs-line-height-normal);
84
+ white-space: nowrap;
85
+ }
86
+ .rs-stat-card__trend[data-v-75b35569] {
87
+ display: flex;
88
+ flex-wrap: wrap;
89
+ align-items: baseline;
90
+ gap: var(--rs-space-xs);
41
91
  margin: var(--rs-space-sm) 0 0;
42
- color: var(--rs-muted);
92
+ color: var(--rs-text-secondary);
43
93
  font-size: var(--rs-font-size-sm);
94
+ font-weight: var(--rs-font-weight-medium);
95
+ font-variant-numeric: tabular-nums;
96
+ line-height: var(--rs-line-height-normal);
97
+ }
98
+ .rs-stat-card__trend--primary[data-v-75b35569] {
99
+ color: var(--rs-primary);
100
+ }
101
+ .rs-stat-card__trend--success[data-v-75b35569] {
102
+ color: var(--rs-success);
103
+ }
104
+ .rs-stat-card__trend--warning[data-v-75b35569] {
105
+ color: var(--rs-warning);
106
+ }
107
+ .rs-stat-card__trend--danger[data-v-75b35569] {
108
+ color: var(--rs-danger);
109
+ }
110
+ .rs-stat-card__trend--info[data-v-75b35569] {
111
+ color: var(--rs-info);
44
112
  }
45
- .rs-stat-card__skeleton[data-v-96f97696] {
46
- width: 8rem;
47
- height: 2rem;
48
- margin-top: var(--rs-space-sm);
113
+ .rs-stat-card__description[data-v-75b35569] {
114
+ margin: var(--rs-space-sm) 0 0;
115
+ color: var(--rs-text-secondary);
116
+ font-size: var(--rs-font-size-sm);
117
+ line-height: var(--rs-line-height-normal);
118
+ }
119
+ .rs-stat-card__skeleton[data-v-75b35569] {
120
+ position: relative;
121
+ inline-size: calc(var(--rs-space-xl) * 5);
122
+ block-size: var(--rs-font-size-3xl);
123
+ margin-block-start: var(--rs-space-sm);
49
124
  border-radius: var(--rs-radius-sm);
50
125
  background: var(--rs-surface-hover);
126
+ animation: rs-stat-card-pulse-75b35569 1.4s ease-in-out infinite;
127
+ }
128
+ .rs-stat-card--sm .rs-stat-card__skeleton[data-v-75b35569] {
129
+ inline-size: calc(var(--rs-space-xl) * 4);
130
+ block-size: var(--rs-font-size-2xl);
131
+ }
132
+ .rs-stat-card--lg .rs-stat-card__skeleton[data-v-75b35569] {
133
+ inline-size: calc(var(--rs-space-xl) * 6);
134
+ }
135
+ .rs-stat-card__sr[data-v-75b35569] {
136
+ position: absolute;
137
+ inline-size: 1px;
138
+ block-size: 1px;
139
+ padding: 0;
140
+ margin: -1px;
141
+ overflow: hidden;
142
+ clip: rect(0, 0, 0, 0);
143
+ white-space: nowrap;
144
+ border: 0;
145
+ }
146
+ @media (prefers-reduced-motion: reduce) {
147
+ .rs-stat-card__skeleton[data-v-75b35569] {
148
+ animation: none;
149
+ }
150
+ }
151
+ @keyframes rs-stat-card-pulse-75b35569 {
152
+ 50% {
153
+ opacity: 0.55;
154
+ }
51
155
  }