niuma-ui 2.0.2 → 2.0.4

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 (242) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.md +2 -0
  3. package/README.zh-CN.md +2 -0
  4. package/dist/components/_shared/src/reka.d.ts +1 -1
  5. package/dist/components/_shared/src/reka.js +2 -2
  6. package/dist/components/anchor/index.d.ts +1 -1
  7. package/dist/components/anchor/src/RsAnchor.css +63 -32
  8. package/dist/components/anchor/src/RsAnchor.d.ts +29 -2
  9. package/dist/components/anchor/src/RsAnchor.impl.js +199 -81
  10. package/dist/components/anchor/src/RsAnchor.js +1 -1
  11. package/dist/components/anchor/src/anchor-utils.d.ts +36 -4
  12. package/dist/components/anchor/src/anchor-utils.js +81 -19
  13. package/dist/components/auto-complete/index.d.ts +2 -0
  14. package/dist/components/auto-complete/src/RsAutoComplete.css +122 -0
  15. package/dist/components/auto-complete/src/RsAutoComplete.d.ts +47 -7
  16. package/dist/components/auto-complete/src/RsAutoComplete.impl.js +180 -72
  17. package/dist/components/auto-complete/src/RsAutoComplete.js +4 -1
  18. package/dist/components/auto-complete/src/auto-complete-utils.d.ts +7 -0
  19. package/dist/components/auto-complete/src/auto-complete-utils.js +17 -0
  20. package/dist/components/avatar/index.d.ts +1 -0
  21. package/dist/components/avatar/src/RsAvatar.css +36 -19
  22. package/dist/components/avatar/src/RsAvatar.d.ts +9 -3
  23. package/dist/components/avatar/src/RsAvatar.impl.js +57 -33
  24. package/dist/components/avatar/src/RsAvatar.js +2 -1
  25. package/dist/components/avatar/src/avatar-utils.d.ts +16 -7
  26. package/dist/components/avatar/src/avatar-utils.js +41 -3
  27. package/dist/components/badge/index.d.ts +1 -0
  28. package/dist/components/badge/src/RsBadge.css +61 -8
  29. package/dist/components/badge/src/RsBadge.d.ts +19 -3
  30. package/dist/components/badge/src/RsBadge.impl.js +46 -3
  31. package/dist/components/badge/src/RsBadge.js +1 -1
  32. package/dist/components/badge/src/badge-utils.d.ts +11 -0
  33. package/dist/components/badge/src/badge-utils.js +32 -0
  34. package/dist/components/breadcrumb/index.d.ts +1 -1
  35. package/dist/components/breadcrumb/src/RsBreadcrumb.css +50 -17
  36. package/dist/components/breadcrumb/src/RsBreadcrumb.d.ts +45 -6
  37. package/dist/components/breadcrumb/src/RsBreadcrumb.impl.js +111 -12
  38. package/dist/components/breadcrumb/src/RsBreadcrumb.js +2 -1
  39. package/dist/components/breadcrumb/src/breadcrumb-utils.d.ts +37 -5
  40. package/dist/components/breadcrumb/src/breadcrumb-utils.js +70 -9
  41. package/dist/components/button/src/RsButton.css +87 -71
  42. package/dist/components/button/src/RsButton.d.ts +7 -3
  43. package/dist/components/button/src/RsButton.impl.js +43 -31
  44. package/dist/components/button/src/RsButton.js +1 -1
  45. package/dist/components/button/src/button-utils.d.ts +17 -0
  46. package/dist/components/button/src/button-utils.js +14 -1
  47. package/dist/components/calendar-grid/index.d.ts +2 -0
  48. package/dist/components/calendar-grid/src/RsCalendarGrid.css +105 -45
  49. package/dist/components/calendar-grid/src/RsCalendarGrid.d.ts +62 -2
  50. package/dist/components/calendar-grid/src/RsCalendarGrid.impl.js +265 -94
  51. package/dist/components/calendar-grid/src/RsCalendarGrid.js +1 -1
  52. package/dist/components/calendar-grid/src/calendar-grid-utils.d.ts +72 -0
  53. package/dist/components/calendar-grid/src/calendar-grid-utils.js +122 -0
  54. package/dist/components/card/index.d.ts +1 -1
  55. package/dist/components/card/src/RsCard.css +108 -98
  56. package/dist/components/card/src/RsCard.d.ts +3 -12
  57. package/dist/components/card/src/RsCard.impl.js +29 -25
  58. package/dist/components/card/src/RsCard.js +2 -1
  59. package/dist/components/card/src/card-utils.d.ts +25 -0
  60. package/dist/components/card/src/card-utils.js +10 -0
  61. package/dist/components/cascader/index.d.ts +1 -0
  62. package/dist/components/cascader/src/RsCascader.css +175 -30
  63. package/dist/components/cascader/src/RsCascader.d.ts +14 -2
  64. package/dist/components/cascader/src/RsCascader.impl.js +277 -48
  65. package/dist/components/cascader/src/RsCascader.js +1 -1
  66. package/dist/components/cascader/src/cascader-utils.d.ts +2 -0
  67. package/dist/components/cascader/src/cascader-utils.js +8 -1
  68. package/dist/components/checkbox/index.d.ts +1 -0
  69. package/dist/components/checkbox/src/RsCheckbox.css +46 -23
  70. package/dist/components/checkbox/src/RsCheckbox.d.ts +11 -1
  71. package/dist/components/checkbox/src/RsCheckbox.impl.js +37 -9
  72. package/dist/components/checkbox/src/RsCheckbox.js +2 -1
  73. package/dist/components/checkbox/src/checkbox-utils.d.ts +4 -0
  74. package/dist/components/checkbox/src/checkbox-utils.js +12 -0
  75. package/dist/components/container/index.d.ts +1 -1
  76. package/dist/components/container/src/RsContainer.css +11 -11
  77. package/dist/components/container/src/RsContainer.d.ts +2 -12
  78. package/dist/components/container/src/RsContainer.impl.js +10 -57
  79. package/dist/components/container/src/RsContainer.js +1 -1
  80. package/dist/components/container/src/container-utils.d.ts +23 -0
  81. package/dist/components/container/src/container-utils.js +51 -0
  82. package/dist/components/date-picker/index.d.ts +4 -2
  83. package/dist/components/date-picker/src/RsDatePicker.css +42 -22
  84. package/dist/components/date-picker/src/RsDatePicker.d.ts +44 -20
  85. package/dist/components/date-picker/src/RsDatePicker.impl.js +484 -222
  86. package/dist/components/date-picker/src/RsDatePicker.js +1 -3
  87. package/dist/components/date-picker/src/RsDateTimePicker.d.ts +33 -6
  88. package/dist/components/date-picker/src/RsDateTimePicker.impl.js +47 -6
  89. package/dist/components/date-picker/src/date-picker-utils.d.ts +19 -0
  90. package/dist/components/date-picker/src/date-picker-utils.js +33 -10
  91. package/dist/components/divider/index.d.ts +1 -0
  92. package/dist/components/divider/src/RsDivider.css +37 -22
  93. package/dist/components/divider/src/RsDivider.d.ts +4 -2
  94. package/dist/components/divider/src/RsDivider.impl.js +26 -12
  95. package/dist/components/divider/src/RsDivider.js +1 -1
  96. package/dist/components/divider/src/divider-utils.d.ts +4 -0
  97. package/dist/components/dynamic-tags/index.d.ts +1 -1
  98. package/dist/components/dynamic-tags/src/RsDynamicTags.css +115 -38
  99. package/dist/components/dynamic-tags/src/RsDynamicTags.d.ts +59 -18
  100. package/dist/components/dynamic-tags/src/RsDynamicTags.impl.js +269 -106
  101. package/dist/components/dynamic-tags/src/RsDynamicTags.js +1 -1
  102. package/dist/components/dynamic-tags/src/dynamic-tags-utils.d.ts +19 -0
  103. package/dist/components/dynamic-tags/src/dynamic-tags-utils.js +60 -0
  104. package/dist/components/fieldset/src/RsFieldset.css +71 -41
  105. package/dist/components/fieldset/src/RsFieldset.d.ts +21 -2
  106. package/dist/components/fieldset/src/RsFieldset.impl.js +93 -26
  107. package/dist/components/fieldset/src/RsFieldset.js +1 -1
  108. package/dist/components/fieldset/src/fieldset-utils.d.ts +4 -0
  109. package/dist/components/fieldset/src/fieldset-utils.js +9 -1
  110. package/dist/components/form/index.d.ts +1 -0
  111. package/dist/components/form/src/RsForm.css +15 -12
  112. package/dist/components/form/src/RsForm.d.ts +20 -22
  113. package/dist/components/form/src/RsForm.impl.js +33 -20
  114. package/dist/components/form/src/RsForm.js +1 -1
  115. package/dist/components/form/src/form-utils.d.ts +7 -0
  116. package/dist/components/form/src/form-utils.js +28 -1
  117. package/dist/components/icon/src/RsIcon.css +9 -4
  118. package/dist/components/icon/src/RsIcon.d.ts +4 -3
  119. package/dist/components/icon/src/RsIcon.impl.js +9 -32
  120. package/dist/components/icon/src/RsIcon.js +1 -1
  121. package/dist/components/icon/src/icon-utils.d.ts +17 -0
  122. package/dist/components/icon/src/icon-utils.js +39 -0
  123. package/dist/components/input/index.d.ts +1 -1
  124. package/dist/components/input/src/RsInput.css +78 -260
  125. package/dist/components/input/src/RsInput.d.ts +5 -3
  126. package/dist/components/input/src/RsInput.impl.js +8 -16
  127. package/dist/components/input/src/RsInput.js +1 -1
  128. package/dist/components/input/src/input-utils.d.ts +11 -0
  129. package/dist/components/input/src/input-utils.js +22 -0
  130. package/dist/components/input-number/index.d.ts +1 -0
  131. package/dist/components/input-number/src/RsInputNumber.css +31 -31
  132. package/dist/components/input-number/src/RsInputNumber.d.ts +15 -13
  133. package/dist/components/input-number/src/RsInputNumber.impl.js +17 -4
  134. package/dist/components/input-number/src/RsInputNumber.js +1 -1
  135. package/dist/components/label/src/RsLabel.css +30 -11
  136. package/dist/components/label/src/RsLabel.d.ts +18 -1
  137. package/dist/components/label/src/RsLabel.impl.js +63 -10
  138. package/dist/components/label/src/RsLabel.js +1 -1
  139. package/dist/components/label/src/label-utils.d.ts +6 -0
  140. package/dist/components/label/src/label-utils.js +16 -0
  141. package/dist/components/link/index.d.ts +1 -0
  142. package/dist/components/link/src/RsLink.css +58 -17
  143. package/dist/components/link/src/RsLink.d.ts +12 -4
  144. package/dist/components/link/src/RsLink.impl.js +26 -25
  145. package/dist/components/link/src/RsLink.js +2 -1
  146. package/dist/components/link/src/link-utils.d.ts +9 -0
  147. package/dist/components/link/src/link-utils.js +15 -0
  148. package/dist/components/loading/src/RsLoading.d.ts +2 -2
  149. package/dist/components/mentions/index.d.ts +2 -1
  150. package/dist/components/mentions/src/RsMentions.css +119 -3
  151. package/dist/components/mentions/src/RsMentions.d.ts +56 -4
  152. package/dist/components/mentions/src/RsMentions.impl.js +298 -79
  153. package/dist/components/mentions/src/RsMentions.js +1 -3
  154. package/dist/components/mentions/src/mentions-utils.d.ts +5 -1
  155. package/dist/components/mentions/src/mentions-utils.js +28 -9
  156. package/dist/components/popover/src/RsPopover.d.ts +1 -1
  157. package/dist/components/radio/index.d.ts +1 -1
  158. package/dist/components/radio/src/RsRadio.css +7 -6
  159. package/dist/components/radio/src/RsRadio.d.ts +8 -5
  160. package/dist/components/radio/src/RsRadio.impl.js +34 -24
  161. package/dist/components/radio/src/RsRadio.js +2 -1
  162. package/dist/components/radio/src/RsRadioItem.css +61 -44
  163. package/dist/components/radio/src/RsRadioItem.d.ts +2 -2
  164. package/dist/components/radio/src/RsRadioItem.impl.js +53 -20
  165. package/dist/components/radio/src/RsRadioItem.js +2 -1
  166. package/dist/components/radio/src/radio-utils.d.ts +12 -1
  167. package/dist/components/radio/src/radio-utils.js +15 -1
  168. package/dist/components/scrollbar/src/RsScrollbar.css +71 -24
  169. package/dist/components/scrollbar/src/RsScrollbar.d.ts +9 -5
  170. package/dist/components/scrollbar/src/RsScrollbar.impl.js +372 -47
  171. package/dist/components/scrollbar/src/RsScrollbar.js +2 -1
  172. package/dist/components/scrollbar/src/scrollbar-utils.d.ts +34 -2
  173. package/dist/components/scrollbar/src/scrollbar-utils.js +64 -1
  174. package/dist/components/select/index.d.ts +1 -0
  175. package/dist/components/select/src/RsSelect.css +54 -42
  176. package/dist/components/select/src/RsSelect.d.ts +19 -2
  177. package/dist/components/select/src/RsSelect.impl.js +727 -312
  178. package/dist/components/select/src/RsSelect.js +1 -1
  179. package/dist/components/select/src/select-utils.d.ts +4 -2
  180. package/dist/components/select/src/select-utils.js +8 -3
  181. package/dist/components/select/src/use-rs-select.d.ts +1 -0
  182. package/dist/components/select/src/use-rs-select.js +23 -17
  183. package/dist/components/switch/index.d.ts +2 -1
  184. package/dist/components/switch/src/RsSwitch.css +36 -18
  185. package/dist/components/switch/src/RsSwitch.d.ts +18 -5
  186. package/dist/components/switch/src/RsSwitch.impl.js +61 -29
  187. package/dist/components/switch/src/RsSwitch.js +2 -1
  188. package/dist/components/switch/src/switch-utils.d.ts +4 -0
  189. package/dist/components/switch/src/switch-utils.js +9 -0
  190. package/dist/components/tag/index.d.ts +1 -1
  191. package/dist/components/tag/src/RsTag.css +42 -38
  192. package/dist/components/tag/src/RsTag.d.ts +3 -2
  193. package/dist/components/tag/src/RsTag.impl.js +18 -9
  194. package/dist/components/tag/src/RsTag.js +1 -1
  195. package/dist/components/tag/src/tag-utils.d.ts +8 -0
  196. package/dist/components/terminal/src/RsTerminal.d.ts +1 -1
  197. package/dist/components/textarea/src/RsTextarea.css +23 -23
  198. package/dist/components/textarea/src/RsTextarea.d.ts +6 -12
  199. package/dist/components/textarea/src/RsTextarea.impl.js +37 -46
  200. package/dist/components/textarea/src/RsTextarea.js +1 -1
  201. package/dist/components/textarea/src/textarea-utils.d.ts +27 -0
  202. package/dist/components/textarea/src/textarea-utils.js +61 -0
  203. package/dist/components/time-picker/index.d.ts +3 -2
  204. package/dist/components/time-picker/src/RsTimePicker.css +41 -24
  205. package/dist/components/time-picker/src/RsTimePicker.d.ts +52 -7
  206. package/dist/components/time-picker/src/RsTimePicker.impl.js +520 -156
  207. package/dist/components/time-picker/src/RsTimePicker.js +1 -3
  208. package/dist/components/time-picker/src/RsTimePickerColumns.css +26 -18
  209. package/dist/components/time-picker/src/RsTimePickerColumns.d.ts +3 -1
  210. package/dist/components/time-picker/src/RsTimePickerColumns.impl.js +62 -9
  211. package/dist/components/time-picker/src/RsTimePickerColumns.js +1 -1
  212. package/dist/components/time-picker/src/time-picker-utils.d.ts +38 -0
  213. package/dist/components/time-picker/src/time-picker-utils.js +97 -5
  214. package/dist/components/toaster/src/RsToaster.d.ts +1 -1
  215. package/dist/components/tooltip/src/RsTooltip.d.ts +1 -1
  216. package/dist/components/tree/src/RsTree.d.ts +3 -3
  217. package/dist/components/tree-select/index.d.ts +2 -0
  218. package/dist/components/tree-select/src/RsTreeSelect.css +100 -25
  219. package/dist/components/tree-select/src/RsTreeSelect.d.ts +91 -7
  220. package/dist/components/tree-select/src/RsTreeSelect.impl.js +464 -79
  221. package/dist/components/tree-select/src/RsTreeSelect.js +1 -1
  222. package/dist/components/tree-select/src/tree-select-utils.d.ts +20 -0
  223. package/dist/components/tree-select/src/tree-select-utils.js +60 -0
  224. package/dist/components/upload/index.d.ts +2 -1
  225. package/dist/components/upload/src/RsUpload.css +223 -75
  226. package/dist/components/upload/src/RsUpload.d.ts +77 -1
  227. package/dist/components/upload/src/RsUpload.impl.js +404 -90
  228. package/dist/components/upload/src/RsUpload.js +1 -1
  229. package/dist/components/upload/src/upload-utils.d.ts +21 -2
  230. package/dist/components/upload/src/upload-utils.js +139 -9
  231. package/dist/index.d.ts +24 -11
  232. package/dist/index.js +6 -0
  233. package/dist/locale/messages.js +46 -2
  234. package/dist/styles.css +518 -154
  235. package/dist/theme/brand.example.css +1 -1
  236. package/package.json +9 -8
  237. package/dist/components/breadcrumb/src/RsBreadcrumbItems.d.ts +0 -8
  238. package/dist/components/breadcrumb/src/RsBreadcrumbItems.impl.js +0 -40
  239. package/dist/components/breadcrumb/src/RsBreadcrumbItems.js +0 -5
  240. package/dist/components/date-picker/src/RsDatePicker-1.css +0 -157
  241. package/dist/components/mentions/src/RsMentions-1.css +0 -29
  242. package/dist/components/time-picker/src/RsTimePicker-1.css +0 -98
package/dist/styles.css CHANGED
@@ -968,6 +968,37 @@ html {
968
968
  --rs-menu-item-radius: var(--rs-radius-sm);
969
969
  --rs-menu-item-active-weight: var(--rs-font-weight-medium);
970
970
 
971
+ /*
972
+ * Anchor(页内目录)。颜色走主题 token 别名,随 data-rs-theme。
973
+ */
974
+ --rs-anchor-min-width: 8.5rem;
975
+ --rs-anchor-gap: 0.7rem;
976
+ --rs-anchor-rail-width: 2px;
977
+ --rs-anchor-indent: 0.75rem;
978
+ --rs-anchor-link-pad-block: 0.28rem;
979
+ --rs-anchor-link-pad-inline: 0.7rem;
980
+ --rs-anchor-affix-top: var(--rs-space-lg);
981
+ --rs-anchor-rail: color-mix(in srgb, var(--rs-border-subtle) 88%, var(--rs-text-secondary));
982
+ --rs-anchor-ink: var(--rs-primary);
983
+ --rs-anchor-ink-ring: color-mix(in srgb, var(--rs-primary) 18%, transparent);
984
+ --rs-anchor-link: var(--rs-text-secondary);
985
+ --rs-anchor-link-hover: var(--rs-text-primary);
986
+ --rs-anchor-link-active: var(--rs-primary);
987
+ --rs-anchor-link-active-weight: var(--rs-font-weight-semibold);
988
+ --rs-anchor-link-active-bg: color-mix(in srgb, var(--rs-primary) 10%, transparent);
989
+ --rs-anchor-disabled-opacity: 0.45;
990
+
991
+ /*
992
+ * Breadcrumb(跨页层级)。尺寸静态;颜色在主题块内,随 data-rs-theme。
993
+ */
994
+ --rs-breadcrumb-gap: var(--rs-space-xs);
995
+ --rs-breadcrumb-item-gap: var(--rs-space-xs);
996
+ --rs-breadcrumb-link-pad-block: calc(var(--rs-space-xs) / 2);
997
+ --rs-breadcrumb-link-pad-inline: var(--rs-space-xs);
998
+ --rs-breadcrumb-font-size: var(--rs-font-size-sm);
999
+ --rs-breadcrumb-current-weight: var(--rs-font-weight-medium);
1000
+ --rs-breadcrumb-disabled-opacity: 0.45;
1001
+
971
1002
  /*
972
1003
  * 表单标签(RsLabel / .rs-field__label 共用)
973
1004
  * 默认对齐 Ant Form:与正文同档 14px;颜色在主题块内。
@@ -975,6 +1006,65 @@ html {
975
1006
  --rs-label-font-size: var(--rs-font-size-sm);
976
1007
  --rs-label-font-weight: var(--rs-font-weight-medium);
977
1008
  --rs-label-line-height: var(--rs-line-height-normal);
1009
+ --rs-label-gap: var(--rs-space-xs);
1010
+ --rs-label-mark-gap: calc(var(--rs-space-xs) / 2);
1011
+ --rs-label-disabled-opacity: 0.5;
1012
+
1013
+ /*
1014
+ * Fieldset(表单分区)。颜色走主题 token 的别名,随 data-rs-theme。
1015
+ * Dialog / Drawer 可覆盖 --rs-fieldset-legend-bg,让 legend 盖住表面边框。
1016
+ */
1017
+ --rs-fieldset-radius: var(--rs-radius-sm);
1018
+ --rs-fieldset-gap: var(--rs-space-md);
1019
+ --rs-fieldset-gap-sm: var(--rs-space-sm);
1020
+ --rs-fieldset-border: var(--rs-border);
1021
+ --rs-fieldset-border-subtle: var(--rs-border-subtle);
1022
+ --rs-fieldset-border-faded: color-mix(in srgb, var(--rs-border) 42%, transparent);
1023
+ --rs-fieldset-border-invalid: var(--rs-danger);
1024
+ --rs-fieldset-legend-bg: var(--rs-surface);
1025
+ --rs-fieldset-title: var(--rs-text);
1026
+ --rs-fieldset-title-strong: var(--rs-text-primary);
1027
+ --rs-fieldset-title-muted: var(--rs-muted);
1028
+ --rs-fieldset-hint: var(--rs-muted);
1029
+ --rs-fieldset-error: var(--rs-danger);
1030
+
1031
+ /*
1032
+ * Upload。颜色走主题 token 的别名,随 data-rs-theme。
1033
+ * 尺寸档位在组件根上改 --rs-upload-dropzone-min-height / icon-box / card-size。
1034
+ */
1035
+ --rs-upload-gap: var(--rs-space-md);
1036
+ --rs-upload-radius: var(--rs-radius);
1037
+ --rs-upload-border: var(--rs-border);
1038
+ --rs-upload-border-active: color-mix(in srgb, var(--rs-primary) 55%, var(--rs-border));
1039
+ --rs-upload-bg: color-mix(in srgb, var(--rs-surface) 82%, var(--rs-bg));
1040
+ --rs-upload-bg-active: color-mix(in srgb, var(--rs-primary) 6%, var(--rs-surface));
1041
+ --rs-upload-dropzone-min-height-md: 8.5rem;
1042
+ --rs-upload-icon-box-md: 3rem;
1043
+ --rs-upload-card-size-md: 6.5rem;
1044
+ --rs-upload-file-icon-size: 2rem;
1045
+ --rs-upload-action-size: 1.75rem;
1046
+ --rs-upload-disabled-opacity: 0.38;
1047
+
1048
+ /*
1049
+ * CalendarGrid。颜色走主题 token 的别名,随 data-rs-theme。
1050
+ * 格子高度跟 --rs-control-height-*,圆角由组件 radius 写入 --rs-calendar-grid-radius。
1051
+ */
1052
+ --rs-calendar-grid-gap: var(--rs-space-sm);
1053
+ --rs-calendar-grid-cell-gap: calc(var(--rs-space-xs) / 2);
1054
+ --rs-calendar-grid-week-col: var(--rs-control-height-sm);
1055
+ --rs-calendar-grid-title: var(--rs-text-primary);
1056
+ --rs-calendar-grid-nav: var(--rs-text-secondary);
1057
+ --rs-calendar-grid-nav-hover: var(--rs-surface-hover);
1058
+ --rs-calendar-grid-weekday: var(--rs-text-secondary);
1059
+ --rs-calendar-grid-week: var(--rs-text-tertiary);
1060
+ --rs-calendar-grid-day: var(--rs-text-primary);
1061
+ --rs-calendar-grid-day-outside: var(--rs-text-tertiary);
1062
+ --rs-calendar-grid-day-hover: var(--rs-item-hover);
1063
+ --rs-calendar-grid-today: var(--rs-primary);
1064
+ --rs-calendar-grid-selected: var(--rs-primary);
1065
+ --rs-calendar-grid-selected-fg: var(--rs-primary-foreground);
1066
+ --rs-calendar-grid-in-range: color-mix(in srgb, var(--rs-primary) 12%, transparent);
1067
+ --rs-calendar-grid-disabled-opacity: 0.38;
978
1068
 
979
1069
  /* Lucide / 线性图标。品牌 mark 色在可选 niuma-ui/brand-icons.css */
980
1070
  --rs-icon-color: currentColor;
@@ -1077,6 +1167,11 @@ html {
1077
1167
  --rs-muted: var(--rs-text-secondary);
1078
1168
  --rs-placeholder: var(--rs-text-tertiary);
1079
1169
  --rs-label-color: var(--rs-text-primary);
1170
+ --rs-breadcrumb-link: var(--rs-text-secondary);
1171
+ --rs-breadcrumb-link-hover: var(--rs-primary);
1172
+ --rs-breadcrumb-link-hover-bg: var(--rs-surface-hover);
1173
+ --rs-breadcrumb-current: var(--rs-text-primary);
1174
+ --rs-breadcrumb-sep: var(--rs-text-secondary);
1080
1175
  --rs-danger: #ff453a;
1081
1176
  --rs-danger-container: #3b1210;
1082
1177
  --rs-on-danger-container: #ff8a84;
@@ -1134,6 +1229,7 @@ html {
1134
1229
  --rs-dynamic-tags-gap: var(--rs-space-xs);
1135
1230
  --rs-dynamic-tags-padding: var(--rs-space-xs);
1136
1231
  --rs-dynamic-tags-trigger-border: var(--rs-border);
1232
+ --rs-dynamic-tags-disabled-opacity: 0.38;
1137
1233
 
1138
1234
  /* ── Menu(侧栏 / 导航;业务可在父级覆盖,无需 :deep)── */
1139
1235
  --rs-menu-item-fg: var(--rs-muted);
@@ -1180,6 +1276,18 @@ html {
1180
1276
  0 2px 6px rgb(0 0 0 / 0.28);
1181
1277
  --rs-card-glass-bg: rgb(31 31 31 / 0.72);
1182
1278
  --rs-card-glass-border: rgb(255 255 255 / 0.1);
1279
+ --rs-card-grouped-bg: var(--rs-card-body-bg);
1280
+ --rs-card-grouped-body-bg: var(--rs-card-body-bg);
1281
+ --rs-card-grouped-filter: none;
1282
+ --rs-card-header-inset: inset 0 1px 0 rgb(255 255 255 / 0.05);
1283
+ --rs-card-glass-shadow:
1284
+ 0 0 0 0.5px rgb(255 255 255 / 0.12),
1285
+ 0 8px 24px rgb(0 0 0 / 0.12);
1286
+ --rs-card-glass-shadow-elevated:
1287
+ 0 0 0 0.5px rgb(255 255 255 / 0.14),
1288
+ 0 12px 32px rgb(0 0 0 / 0.18);
1289
+ --rs-card-glass-header-bg: rgb(255 255 255 / 0.04);
1290
+ --rs-card-glass-header-inset: inset 0 1px 0 rgb(255 255 255 / 0.08);
1183
1291
 
1184
1292
  /* ── Terminal(macOS Terminal.app 风格:柔和 ANSI + 可读斑马纹)── */
1185
1293
  --rs-terminal-shell-bg: #141416;
@@ -1322,6 +1430,11 @@ html {
1322
1430
  --rs-muted: var(--rs-text-secondary);
1323
1431
  --rs-placeholder: var(--rs-text-tertiary);
1324
1432
  --rs-label-color: var(--rs-text-primary);
1433
+ --rs-breadcrumb-link: var(--rs-text-secondary);
1434
+ --rs-breadcrumb-link-hover: var(--rs-primary);
1435
+ --rs-breadcrumb-link-hover-bg: var(--rs-surface-hover);
1436
+ --rs-breadcrumb-current: var(--rs-text-primary);
1437
+ --rs-breadcrumb-sep: var(--rs-text-secondary);
1325
1438
  --rs-danger: #ff3b30;
1326
1439
  --rs-danger-container: #ffe5e3;
1327
1440
  --rs-on-danger-container: #c41e16;
@@ -1377,6 +1490,7 @@ html {
1377
1490
  --rs-dynamic-tags-gap: var(--rs-space-xs);
1378
1491
  --rs-dynamic-tags-padding: var(--rs-space-xs);
1379
1492
  --rs-dynamic-tags-trigger-border: var(--rs-border);
1493
+ --rs-dynamic-tags-disabled-opacity: 0.38;
1380
1494
 
1381
1495
  /* ── Menu(侧栏 / 导航;业务可在父级覆盖,无需 :deep)── */
1382
1496
  --rs-menu-item-fg: var(--rs-muted);
@@ -1423,6 +1537,18 @@ html {
1423
1537
  0 2px 6px rgb(0 0 0 / 0.08);
1424
1538
  --rs-card-glass-bg: rgb(255 255 255 / 0.72);
1425
1539
  --rs-card-glass-border: rgb(255 255 255 / 0.55);
1540
+ --rs-card-grouped-bg: color-mix(in srgb, var(--rs-card-body-bg) 94%, transparent);
1541
+ --rs-card-grouped-body-bg: transparent;
1542
+ --rs-card-grouped-filter: blur(20px) saturate(150%);
1543
+ --rs-card-header-inset: inset 0 1px 0 rgb(255 255 255 / 0.75);
1544
+ --rs-card-glass-shadow:
1545
+ 0 0 0 0.5px rgb(255 255 255 / 0.6),
1546
+ 0 8px 24px rgb(0 0 0 / 0.08);
1547
+ --rs-card-glass-shadow-elevated:
1548
+ 0 0 0 0.5px rgb(255 255 255 / 0.7),
1549
+ 0 12px 32px rgb(0 0 0 / 0.1);
1550
+ --rs-card-glass-header-bg: rgb(255 255 255 / 0.35);
1551
+ --rs-card-glass-header-inset: inset 0 1px 0 rgb(255 255 255 / 0.8);
1426
1552
 
1427
1553
  /* ── Terminal(macOS Terminal.app 亮色:systemBackground + 浅灰斑马纹)── */
1428
1554
  --rs-terminal-shell-bg: #ececf0;
@@ -1527,6 +1653,26 @@ html {
1527
1653
  --rs-shadow-sm: none;
1528
1654
  --rs-shadow: none;
1529
1655
  --rs-shadow-lg: none;
1656
+ --rs-card-border: CanvasText;
1657
+ --rs-card-separator: CanvasText;
1658
+ --rs-card-header-bg: Canvas;
1659
+ --rs-card-body-bg: Canvas;
1660
+ --rs-card-title-fg: CanvasText;
1661
+ --rs-card-description-fg: GrayText;
1662
+ --rs-card-shadow: none;
1663
+ --rs-card-shadow-elevated: none;
1664
+ --rs-card-filled-bg: Canvas;
1665
+ --rs-card-filled-elevated-shadow: none;
1666
+ --rs-card-glass-bg: Canvas;
1667
+ --rs-card-glass-border: CanvasText;
1668
+ --rs-card-grouped-bg: Canvas;
1669
+ --rs-card-grouped-body-bg: Canvas;
1670
+ --rs-card-grouped-filter: none;
1671
+ --rs-card-header-inset: none;
1672
+ --rs-card-glass-shadow: none;
1673
+ --rs-card-glass-shadow-elevated: none;
1674
+ --rs-card-glass-header-bg: Canvas;
1675
+ --rs-card-glass-header-inset: none;
1530
1676
  }
1531
1677
  }
1532
1678
 
@@ -1605,9 +1751,8 @@ code {
1605
1751
  z-index: calc(var(--rs-z-modal) + 2);
1606
1752
  box-sizing: border-box;
1607
1753
  width: max-content;
1608
- min-width: var(--reka-combobox-trigger-width, var(--reka-popper-anchor-width));
1754
+ min-width: var(--rs-select-trigger-width, 8rem);
1609
1755
  max-width: min(24rem, calc(100vw - 1rem));
1610
- max-height: var(--reka-combobox-content-available-height);
1611
1756
  overflow: hidden;
1612
1757
  display: flex;
1613
1758
  flex-direction: column;
@@ -1621,27 +1766,172 @@ code {
1621
1766
  }
1622
1767
 
1623
1768
  .rs-select__content--match-trigger {
1624
- width: var(--reka-combobox-trigger-width, var(--reka-popper-anchor-width));
1769
+ width: var(--rs-select-trigger-width);
1625
1770
  max-width: none;
1626
1771
  }
1627
1772
 
1628
- /* Popper 外层:默认允许随内容变宽;等宽模式锁死为触发器宽度 */
1629
- /* z-index 提升到 modal 之上,避免在 RsDialog 内被对话框遮挡 */
1630
- [data-reka-popper-content-wrapper]:has(> .rs-select__content) {
1773
+ /*
1774
+ * DatePicker 面板 Teleport 到 body,不能依赖触发器祖先上的自定义变量。
1775
+ * 尺寸默认写在面板自己身上;主题跟 data-rs-theme(深色岛复制到面板)。
1776
+ */
1777
+ .rs-date-picker__content {
1778
+ --rs-date-picker-single-w: 20rem;
1779
+ --rs-date-picker-range-w: 42rem;
1780
+ position: fixed;
1631
1781
  z-index: calc(var(--rs-z-modal) + 2);
1632
- width: max-content;
1633
- min-width: var(--reka-popper-anchor-width);
1634
- max-width: min(24rem, calc(100vw - 1rem));
1782
+ box-sizing: border-box;
1783
+ width: min(var(--rs-date-picker-single-w), calc(100vw - 2rem));
1784
+ padding: var(--rs-space-md);
1785
+ overflow: visible;
1786
+ overscroll-behavior: contain;
1787
+ border: 1px solid var(--rs-dialog-border, var(--rs-border));
1788
+ border-radius: var(--rs-date-picker-radius, var(--rs-radius));
1789
+ background: var(--rs-surface-elevated);
1790
+ box-shadow: var(--rs-shadow-lg);
1791
+ color: var(--rs-text);
1792
+ color-scheme: inherit;
1793
+ outline: none;
1635
1794
  }
1636
-
1637
- [data-reka-popper-content-wrapper]:has(> .rs-select__content--match-trigger) {
1638
- width: var(--reka-popper-anchor-width);
1639
- min-width: var(--reka-popper-anchor-width);
1640
- max-width: none;
1795
+ .rs-date-picker__content--range {
1796
+ width: min(var(--rs-date-picker-range-w), calc(100vw - 2rem));
1641
1797
  }
1642
-
1643
- [data-reka-popper-content-wrapper]:has(> .rs-date-picker__content) {
1644
- z-index: calc(var(--rs-z-modal) + 2);
1798
+ .rs-date-picker__panel {
1799
+ display: flex;
1800
+ flex-direction: column;
1801
+ gap: var(--rs-space-sm);
1802
+ overflow: visible;
1803
+ }
1804
+ .rs-date-picker__range-grid {
1805
+ display: grid;
1806
+ gap: var(--rs-space-md);
1807
+ }
1808
+ @media (min-width: 40rem) {
1809
+ .rs-date-picker__range-grid {
1810
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1811
+ }
1812
+ }
1813
+ .rs-date-picker__range-pane {
1814
+ display: flex;
1815
+ flex-direction: column;
1816
+ gap: var(--rs-space-sm);
1817
+ padding: var(--rs-space-sm);
1818
+ border: 1px solid var(--rs-border-subtle);
1819
+ border-radius: var(--rs-radius-sm);
1820
+ background: color-mix(in srgb, var(--rs-surface) 72%, transparent);
1821
+ }
1822
+ .rs-date-picker__pane-title {
1823
+ font-size: var(--rs-font-size-xs);
1824
+ font-weight: var(--rs-font-weight-semibold);
1825
+ color: var(--rs-muted);
1826
+ }
1827
+ .rs-date-picker__footer {
1828
+ position: relative;
1829
+ z-index: 1;
1830
+ display: flex;
1831
+ align-items: center;
1832
+ justify-content: space-between;
1833
+ gap: var(--rs-space-sm);
1834
+ margin-block-start: var(--rs-space-xs);
1835
+ padding-block-start: var(--rs-space-md);
1836
+ border-block-start: 1px solid var(--rs-border-subtle);
1837
+ background: var(--rs-surface-elevated);
1838
+ }
1839
+ .rs-date-picker__footer-start {
1840
+ display: flex;
1841
+ flex: 1;
1842
+ align-items: center;
1843
+ min-width: 0;
1844
+ }
1845
+ .rs-date-picker__shortcuts {
1846
+ display: flex;
1847
+ flex-wrap: wrap;
1848
+ gap: var(--rs-space-xs);
1849
+ align-items: center;
1850
+ }
1851
+ .rs-date-picker__shortcut {
1852
+ padding: calc(var(--rs-space-xs) / 2) var(--rs-space-sm);
1853
+ border: 1px solid var(--rs-border);
1854
+ border-radius: var(--rs-radius-xs);
1855
+ background: transparent;
1856
+ color: var(--rs-text);
1857
+ font-size: var(--rs-font-size-xs);
1858
+ line-height: var(--rs-line-height-tight);
1859
+ cursor: pointer;
1860
+ transition:
1861
+ border-color var(--rs-transition-fast),
1862
+ color var(--rs-transition-fast),
1863
+ background var(--rs-transition-fast);
1864
+ }
1865
+ .rs-date-picker__shortcut:hover:not(:disabled) {
1866
+ border-color: var(--rs-primary);
1867
+ color: var(--rs-primary);
1868
+ background: color-mix(in srgb, var(--rs-primary) 8%, transparent);
1869
+ }
1870
+ .rs-date-picker__shortcut:disabled {
1871
+ opacity: var(--rs-date-picker-disabled-opacity, 0.38);
1872
+ cursor: not-allowed;
1873
+ }
1874
+ .rs-date-picker__link {
1875
+ border: 0;
1876
+ background: transparent;
1877
+ color: var(--rs-primary);
1878
+ font-size: var(--rs-font-size-xs);
1879
+ cursor: pointer;
1880
+ }
1881
+ .rs-date-picker__link:hover {
1882
+ text-decoration: underline;
1883
+ }
1884
+ .rs-date-picker__actions {
1885
+ display: inline-flex;
1886
+ align-items: center;
1887
+ gap: var(--rs-space-xs);
1888
+ }
1889
+ .rs-date-picker__ghost,
1890
+ .rs-date-picker__confirm {
1891
+ border: 0;
1892
+ border-radius: var(--rs-radius-sm);
1893
+ padding: var(--rs-space-xs) var(--rs-space-sm);
1894
+ font-size: var(--rs-font-size-xs);
1895
+ cursor: pointer;
1896
+ }
1897
+ .rs-date-picker__ghost {
1898
+ background: transparent;
1899
+ color: var(--rs-muted);
1900
+ }
1901
+ .rs-date-picker__ghost:hover {
1902
+ background: var(--rs-surface-hover);
1903
+ color: var(--rs-text);
1904
+ }
1905
+ .rs-date-picker__confirm {
1906
+ background: var(--rs-primary);
1907
+ color: var(--rs-primary-foreground);
1908
+ }
1909
+ .rs-date-picker__confirm:hover:not(:disabled) {
1910
+ opacity: 0.92;
1911
+ }
1912
+ .rs-date-picker__confirm:disabled {
1913
+ opacity: var(--rs-date-picker-disabled-opacity, 0.38);
1914
+ cursor: not-allowed;
1915
+ }
1916
+ .rs-date-picker__time-row {
1917
+ position: relative;
1918
+ z-index: 1;
1919
+ display: flex;
1920
+ align-items: center;
1921
+ gap: var(--rs-space-sm);
1922
+ padding-block-start: var(--rs-space-sm);
1923
+ border-block-start: 1px solid var(--rs-border-subtle);
1924
+ background: var(--rs-surface-elevated);
1925
+ }
1926
+ .rs-date-picker__time-label {
1927
+ flex-shrink: 0;
1928
+ font-size: var(--rs-font-size-xs);
1929
+ font-weight: var(--rs-font-weight-medium);
1930
+ color: var(--rs-muted);
1931
+ }
1932
+ .rs-date-picker__time-picker {
1933
+ flex: 1;
1934
+ min-width: 0;
1645
1935
  }
1646
1936
 
1647
1937
  /* ContextMenu:Dialog 内表格右键菜单 Portal 后须高于 modal */
@@ -1650,10 +1940,145 @@ code {
1650
1940
  z-index: calc(var(--rs-z-modal) + 2);
1651
1941
  }
1652
1942
 
1653
- /* 日期面板内嵌时间选择:wrapper 也须高于日期面板,否则 portal 后仍被日历盖住 */
1654
- [data-reka-popper-content-wrapper]:has(> .rs-time-picker__content--embedded) {
1943
+ /*
1944
+ * TimePicker 面板 Teleport 到 body。
1945
+ * 独立面板跟 DatePicker 同一档(modal+2);嵌在日期面板里再高一档。
1946
+ */
1947
+ .rs-time-picker__content {
1948
+ --rs-time-picker-single-w: 18rem;
1949
+ --rs-time-picker-range-w: 28rem;
1950
+ position: fixed;
1951
+ z-index: calc(var(--rs-z-modal) + 2);
1952
+ box-sizing: border-box;
1953
+ width: min(var(--rs-time-picker-single-w), calc(100vw - 2rem));
1954
+ padding: var(--rs-space-md);
1955
+ overflow: visible;
1956
+ overscroll-behavior: contain;
1957
+ border: 1px solid var(--rs-dialog-border, var(--rs-border));
1958
+ border-radius: var(--rs-time-picker-radius, var(--rs-radius));
1959
+ background: var(--rs-surface-elevated);
1960
+ box-shadow: var(--rs-shadow-lg);
1961
+ color: var(--rs-text);
1962
+ color-scheme: inherit;
1963
+ outline: none;
1964
+ }
1965
+ .rs-time-picker__content--range {
1966
+ width: min(var(--rs-time-picker-range-w), calc(100vw - 2rem));
1967
+ }
1968
+ .rs-time-picker__content--embedded {
1655
1969
  z-index: calc(var(--rs-z-modal) + 3);
1656
1970
  }
1971
+ .rs-time-picker__panel {
1972
+ display: flex;
1973
+ flex-direction: column;
1974
+ gap: var(--rs-space-sm);
1975
+ }
1976
+ .rs-time-picker__range-grid {
1977
+ display: grid;
1978
+ gap: var(--rs-space-md);
1979
+ }
1980
+ @media (min-width: 40rem) {
1981
+ .rs-time-picker__range-grid {
1982
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1983
+ }
1984
+ }
1985
+ .rs-time-picker__range-pane {
1986
+ display: flex;
1987
+ min-width: 0;
1988
+ flex-direction: column;
1989
+ gap: var(--rs-space-sm);
1990
+ padding: var(--rs-space-sm);
1991
+ border: 1px solid var(--rs-border-subtle);
1992
+ border-radius: var(--rs-radius-sm);
1993
+ background: color-mix(in srgb, var(--rs-surface) 72%, transparent);
1994
+ }
1995
+ .rs-time-picker__pane-title {
1996
+ font-size: var(--rs-font-size-xs);
1997
+ font-weight: var(--rs-font-weight-semibold);
1998
+ color: var(--rs-muted);
1999
+ }
2000
+ .rs-time-picker__footer {
2001
+ display: flex;
2002
+ align-items: center;
2003
+ justify-content: space-between;
2004
+ gap: var(--rs-space-sm);
2005
+ margin-block-start: var(--rs-space-xs);
2006
+ padding-block-start: var(--rs-space-md);
2007
+ border-block-start: 1px solid var(--rs-border-subtle);
2008
+ }
2009
+ .rs-time-picker__footer-start {
2010
+ display: flex;
2011
+ flex: 1;
2012
+ align-items: center;
2013
+ min-width: 0;
2014
+ }
2015
+ .rs-time-picker__shortcuts {
2016
+ display: flex;
2017
+ flex-wrap: wrap;
2018
+ gap: var(--rs-space-xs);
2019
+ align-items: center;
2020
+ }
2021
+ .rs-time-picker__shortcut {
2022
+ padding: calc(var(--rs-space-xs) / 2) var(--rs-space-sm);
2023
+ border: 1px solid var(--rs-border);
2024
+ border-radius: var(--rs-radius-xs);
2025
+ background: transparent;
2026
+ color: var(--rs-text);
2027
+ font-size: var(--rs-font-size-xs);
2028
+ line-height: var(--rs-line-height-tight);
2029
+ cursor: pointer;
2030
+ }
2031
+ .rs-time-picker__shortcut:hover:not(:disabled) {
2032
+ border-color: var(--rs-primary);
2033
+ color: var(--rs-primary);
2034
+ background: color-mix(in srgb, var(--rs-primary) 8%, transparent);
2035
+ }
2036
+ .rs-time-picker__shortcut:disabled {
2037
+ opacity: var(--rs-time-picker-disabled-opacity, 0.38);
2038
+ cursor: not-allowed;
2039
+ }
2040
+ .rs-time-picker__link {
2041
+ border: 0;
2042
+ background: transparent;
2043
+ color: var(--rs-primary);
2044
+ font-size: var(--rs-font-size-xs);
2045
+ cursor: pointer;
2046
+ }
2047
+ .rs-time-picker__link:hover {
2048
+ text-decoration: underline;
2049
+ }
2050
+ .rs-time-picker__actions {
2051
+ display: inline-flex;
2052
+ align-items: center;
2053
+ gap: var(--rs-space-xs);
2054
+ }
2055
+ .rs-time-picker__ghost,
2056
+ .rs-time-picker__confirm {
2057
+ border: 0;
2058
+ border-radius: var(--rs-radius-sm);
2059
+ padding: var(--rs-space-xs) var(--rs-space-sm);
2060
+ font-size: var(--rs-font-size-xs);
2061
+ cursor: pointer;
2062
+ }
2063
+ .rs-time-picker__ghost {
2064
+ background: transparent;
2065
+ color: var(--rs-muted);
2066
+ }
2067
+ .rs-time-picker__ghost:hover {
2068
+ background: var(--rs-surface-hover);
2069
+ color: var(--rs-text);
2070
+ }
2071
+ .rs-time-picker__confirm {
2072
+ background: var(--rs-primary);
2073
+ color: var(--rs-primary-foreground);
2074
+ }
2075
+ .rs-time-picker__confirm:hover:not(:disabled) {
2076
+ opacity: 0.92;
2077
+ }
2078
+ .rs-time-picker__confirm:disabled {
2079
+ opacity: var(--rs-time-picker-disabled-opacity, 0.38);
2080
+ cursor: not-allowed;
2081
+ }
1657
2082
 
1658
2083
  .rs-select__search-bar {
1659
2084
  flex-shrink: 0;
@@ -1741,10 +2166,7 @@ code {
1741
2166
 
1742
2167
  .rs-select__viewport {
1743
2168
  overflow-y: auto;
1744
- max-height: min(
1745
- var(--rs-select-list-height, 256px),
1746
- var(--reka-combobox-content-available-height, 256px)
1747
- );
2169
+ max-height: var(--rs-select-list-height, 256px);
1748
2170
  padding: 0 var(--rs-space-xs) var(--rs-space-xs);
1749
2171
  }
1750
2172
 
@@ -1827,8 +2249,12 @@ code {
1827
2249
  color: var(--rs-primary);
1828
2250
  }
1829
2251
 
1830
- /* 虚拟列表项由 Reka 绝对定位,需显式拉满宽度 */
1831
- [data-reka-virtualizer] .rs-select__item {
2252
+ .rs-select__virtual {
2253
+ position: relative;
2254
+ width: 100%;
2255
+ }
2256
+
2257
+ .rs-select__virtual .rs-select__item {
1832
2258
  width: 100%;
1833
2259
  }
1834
2260
 
@@ -1846,6 +2272,16 @@ code {
1846
2272
  cursor: not-allowed;
1847
2273
  }
1848
2274
 
2275
+ @media (hover: hover) {
2276
+ .rs-select__item:hover:not([data-disabled]) {
2277
+ background: var(--rs-item-hover);
2278
+ }
2279
+
2280
+ .rs-select__item[data-state='checked']:hover:not([data-disabled]) {
2281
+ background: color-mix(in srgb, var(--rs-primary) 18%, transparent);
2282
+ }
2283
+ }
2284
+
1849
2285
  /* 面板 Portal 在 body,尺寸只能跟 content 档位,不能跟 .rs-select--sm */
1850
2286
  .rs-select__content--sm .rs-select__item,
1851
2287
  .rs-select__content--ssm .rs-select__item {
@@ -1903,164 +2339,92 @@ code {
1903
2339
  padding-top: 0.25rem;
1904
2340
  }
1905
2341
 
1906
- .rs-auto-complete {
1907
- position: relative;
1908
- display: inline-flex;
1909
- align-items: center;
1910
- width: 100%;
1911
- max-width: 100%;
1912
- box-sizing: border-box;
1913
- vertical-align: middle;
1914
- }
1915
-
1916
- .rs-auto-complete__input {
2342
+ /*
2343
+ * TreeSelect 面板 Teleport 到 body,不能依赖触发器祖先上的自定义变量。
2344
+ * 尺寸默认写在面板自己身上;主题跟 data-rs-theme(深色岛复制到面板)。
2345
+ */
2346
+ .rs-tree-select__panel {
2347
+ --rs-tree-select-min-width: 12rem;
2348
+ --rs-tree-select-panel-max-h: 18rem;
2349
+ z-index: calc(var(--rs-z-modal) + 2);
1917
2350
  box-sizing: border-box;
1918
- width: 100%;
1919
- height: var(--rs-control-height-md);
1920
- padding: 0 var(--rs-space-md);
1921
- border: 1px solid var(--rs-input-border, var(--rs-border));
1922
- border-radius: var(--rs-select-radius, var(--rs-radius-sm));
1923
- background: var(--rs-input-bg);
2351
+ min-width: var(--rs-tree-select-min-width);
2352
+ max-width: min(24rem, calc(100vw - 1rem));
2353
+ padding: var(--rs-space-xs);
2354
+ overflow: hidden;
2355
+ border: 1px solid var(--rs-dialog-border, var(--rs-border));
2356
+ border-radius: var(--rs-tree-select-radius, var(--rs-radius));
2357
+ background: var(--rs-surface-elevated);
2358
+ box-shadow: var(--rs-shadow-lg);
1924
2359
  color: var(--rs-text);
1925
- font-family: inherit;
2360
+ color-scheme: inherit;
1926
2361
  font-size: var(--rs-font-size-sm);
1927
2362
  line-height: var(--rs-line-height-tight);
1928
2363
  outline: none;
1929
- box-shadow: var(--rs-input-shadow, none);
1930
- transition:
1931
- border-color var(--rs-transition-fast),
1932
- box-shadow var(--rs-transition-fast),
1933
- background var(--rs-transition-fast);
1934
2364
  }
1935
2365
 
1936
- .rs-auto-complete--sm .rs-auto-complete__input {
1937
- height: var(--rs-control-height-sm);
1938
- padding: 0 var(--rs-space-sm);
1939
- font-size: var(--rs-font-size-xs);
1940
- }
1941
-
1942
- .rs-auto-complete--lg .rs-auto-complete__input {
1943
- height: var(--rs-control-height-lg);
1944
- padding: 0 var(--rs-space-lg);
1945
- font-size: var(--rs-font-size-base);
1946
- }
1947
-
1948
- .rs-auto-complete--clearable .rs-auto-complete__input {
1949
- padding-inline-end: calc(var(--rs-space-md) + 1.25rem);
1950
- }
1951
-
1952
- .rs-auto-complete__input::placeholder {
1953
- color: var(--rs-placeholder);
1954
- }
1955
-
1956
- .rs-auto-complete__input:hover:not(:disabled) {
1957
- border-color: var(--rs-input-border-hover, var(--rs-border));
2366
+ .rs-tree-select__panel--match-trigger {
2367
+ width: var(--rs-tree-select-trigger-width);
2368
+ max-width: none;
1958
2369
  }
1959
2370
 
1960
- .rs-auto-complete__input:focus {
1961
- border-color: var(--rs-focus-border, var(--rs-primary));
1962
- background: var(--rs-input-bg);
1963
- box-shadow:
1964
- var(--rs-input-shadow, none),
1965
- 0 0 0 var(--rs-focus-ring-width, 2px) var(--rs-focus-ring);
2371
+ .rs-tree-select__header,
2372
+ .rs-tree-select__footer {
2373
+ padding: var(--rs-space-xs) var(--rs-space-sm);
2374
+ color: var(--rs-text-secondary);
2375
+ font-size: var(--rs-font-size-xs);
1966
2376
  }
1967
2377
 
1968
- .rs-auto-complete__input:disabled {
1969
- opacity: 0.38;
1970
- cursor: not-allowed;
1971
- background: var(--rs-surface-hover);
2378
+ .rs-tree-select__search-wrap {
2379
+ position: relative;
2380
+ margin-block-end: var(--rs-space-xs);
1972
2381
  }
1973
2382
 
1974
- .rs-auto-complete__clear {
2383
+ .rs-tree-select__search-icon {
1975
2384
  position: absolute;
1976
- top: 50%;
1977
- inset-inline-end: var(--rs-space-sm);
1978
- display: inline-flex;
1979
- align-items: center;
1980
- justify-content: center;
1981
- width: 1.25rem;
1982
- height: 1.25rem;
1983
- padding: 0;
1984
- border: 0;
1985
- border-radius: var(--rs-radius-xs);
1986
- background: transparent;
1987
- color: var(--rs-muted);
2385
+ inset-block-start: 50%;
2386
+ inset-inline-start: var(--rs-space-sm);
2387
+ color: var(--rs-text-tertiary);
1988
2388
  transform: translateY(-50%);
1989
- cursor: pointer;
1990
- }
1991
-
1992
- .rs-auto-complete__clear:hover {
1993
- color: var(--rs-text);
1994
- background: var(--rs-item-hover);
2389
+ pointer-events: none;
1995
2390
  }
1996
2391
 
1997
- .rs-auto-complete__list {
1998
- z-index: calc(var(--rs-z-modal) + 2);
2392
+ .rs-tree-select__search {
1999
2393
  box-sizing: border-box;
2000
- min-width: 8rem;
2001
- max-width: min(24rem, calc(100vw - 1rem));
2002
- max-height: 16rem;
2003
- margin: 0;
2004
- padding: var(--rs-space-xs);
2005
- overflow: auto;
2006
- border: 1px solid var(--rs-dialog-border, var(--rs-border));
2007
- border-radius: var(--rs-radius);
2008
- background: var(--rs-surface-elevated);
2009
- box-shadow: var(--rs-shadow-lg);
2010
- color: var(--rs-text);
2011
- font-size: var(--rs-font-size-sm);
2012
- line-height: var(--rs-line-height-tight);
2013
- list-style: none;
2014
- }
2015
-
2016
- .rs-auto-complete__label {
2017
- flex: 1;
2018
- min-width: 0;
2019
- overflow: hidden;
2020
- text-overflow: ellipsis;
2021
- white-space: nowrap;
2022
- }
2023
-
2024
- .rs-auto-complete__item {
2025
- display: flex;
2026
- align-items: center;
2027
2394
  width: 100%;
2028
- box-sizing: border-box;
2029
- padding: var(--rs-space-sm) var(--rs-space-md);
2395
+ height: var(--rs-control-height-sm);
2396
+ padding-block: 0;
2397
+ padding-inline: calc(var(--rs-space-sm) + 1rem) var(--rs-space-sm);
2398
+ border: 1px solid var(--rs-input-border, var(--rs-border));
2030
2399
  border-radius: var(--rs-radius-sm);
2400
+ background: var(--rs-input-bg);
2031
2401
  color: var(--rs-text);
2402
+ font: inherit;
2032
2403
  font-size: var(--rs-font-size-sm);
2033
- line-height: var(--rs-line-height-tight);
2034
- cursor: pointer;
2035
- user-select: none;
2036
- transition:
2037
- background var(--rs-transition-fast),
2038
- color var(--rs-transition-fast);
2404
+ box-shadow: var(--rs-input-shadow, none);
2039
2405
  }
2040
2406
 
2041
- .rs-auto-complete__item--active,
2042
- .rs-auto-complete__item:hover:not(.rs-auto-complete__item--disabled) {
2043
- background: var(--rs-item-hover);
2407
+ .rs-tree-select__search::placeholder {
2408
+ color: var(--rs-placeholder);
2044
2409
  }
2045
2410
 
2046
- .rs-auto-complete__item--disabled {
2047
- opacity: 0.38;
2048
- cursor: not-allowed;
2411
+ .rs-tree-select__search:focus-visible {
2412
+ outline: none;
2413
+ border-color: var(--rs-focus-border, var(--rs-primary));
2414
+ box-shadow:
2415
+ var(--rs-input-shadow, none),
2416
+ 0 0 0 var(--rs-focus-ring-width, 2px) var(--rs-focus-ring);
2049
2417
  }
2050
2418
 
2051
- .rs-auto-complete__empty {
2052
- padding: var(--rs-space-md);
2053
- color: var(--rs-muted);
2054
- font-size: var(--rs-font-size-sm);
2055
- text-align: center;
2419
+ .rs-tree-select__tree {
2420
+ max-height: var(--rs-tree-select-panel-max-h);
2421
+ overflow: auto;
2056
2422
  }
2057
2423
 
2058
- .rs-auto-complete__mark {
2059
- padding: 0;
2060
- background: color-mix(in srgb, var(--rs-primary) 22%, transparent);
2061
- color: inherit;
2062
- font-weight: var(--rs-font-weight-medium);
2063
- border-radius: 0.125rem;
2424
+ .rs-tree-select__tree--virtual {
2425
+ height: var(--rs-tree-select-list-height, 256px);
2426
+ max-height: var(--rs-tree-select-list-height, 256px);
2427
+ overflow: hidden;
2064
2428
  }
2065
2429
 
2066
2430
  .rs-field {
@@ -2092,7 +2456,7 @@ code {
2092
2456
  display: inline-flex;
2093
2457
  align-items: center;
2094
2458
  flex-wrap: nowrap;
2095
- gap: 0.25rem;
2459
+ gap: var(--rs-label-gap);
2096
2460
  color: var(--rs-label-color);
2097
2461
  font-size: var(--rs-label-font-size);
2098
2462
  font-weight: var(--rs-label-font-weight);