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
@@ -3,6 +3,6 @@ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_exp
3
3
  import RsCascader_vue_vue_type_script_setup_true_lang_default from "./RsCascader.impl.js";
4
4
 
5
5
  //#region src/components/cascader/src/RsCascader.vue
6
- var RsCascader_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsCascader_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-4b45dd5a"]]);
6
+ var RsCascader_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsCascader_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-8c1435b6"]]);
7
7
  //#endregion
8
8
  export { RsCascader_default as default };
@@ -14,3 +14,5 @@ export declare function cascaderColumns(options: readonly RsCascaderOption[], pa
14
14
  export declare function cascaderLabels(options: readonly RsCascaderOption[], path: RsCascaderPath): string[];
15
15
  export declare function cascaderDisplay(options: readonly RsCascaderOption[], path: RsCascaderPath, separator?: string): string;
16
16
  export declare function isCascaderLeaf(option: RsCascaderOption): boolean;
17
+ export declare function nextCascaderPath(path: RsCascaderPath, depth: number, value: RsSelectValue): RsCascaderPath;
18
+ export declare function popCascaderPath(path: RsCascaderPath): RsCascaderPath;
@@ -35,5 +35,12 @@ function isCascaderLeaf(option) {
35
35
  if (option.isLeaf === false) return false;
36
36
  return !option.children?.length;
37
37
  }
38
+ function nextCascaderPath(path, depth, value) {
39
+ return [...path.slice(0, depth), value];
40
+ }
41
+ function popCascaderPath(path) {
42
+ if (path.length <= 1) return [];
43
+ return path.slice(0, -1);
44
+ }
38
45
  //#endregion
39
- export { cascaderColumns, cascaderDisplay, cascaderLabels, findCascaderOption, isCascaderLeaf };
46
+ export { cascaderColumns, cascaderDisplay, cascaderLabels, findCascaderOption, isCascaderLeaf, nextCascaderPath, popCascaderPath };
@@ -1 +1,2 @@
1
1
  export { default as RsCheckbox } from './src/RsCheckbox.js';
2
+ export type { RsCheckboxExpose, RsCheckboxInstance } from './src/RsCheckbox.js';
@@ -1,5 +1,5 @@
1
1
 
2
- .rs-checkbox {
2
+ .rs-checkbox[data-v-5e521b70] {
3
3
  position: relative;
4
4
  display: inline-flex;
5
5
  align-items: center;
@@ -10,11 +10,11 @@
10
10
  user-select: none;
11
11
  color: var(--rs-text);
12
12
  }
13
- .rs-checkbox--disabled {
13
+ .rs-checkbox--disabled[data-v-5e521b70] {
14
14
  cursor: not-allowed;
15
15
  opacity: 0.55;
16
16
  }
17
- .rs-checkbox__input {
17
+ .rs-checkbox__input[data-v-5e521b70] {
18
18
  position: absolute;
19
19
  width: 1px;
20
20
  height: 1px;
@@ -25,7 +25,7 @@
25
25
  white-space: nowrap;
26
26
  border: 0;
27
27
  }
28
- .rs-checkbox__box {
28
+ .rs-checkbox__box[data-v-5e521b70] {
29
29
  position: relative;
30
30
  display: inline-flex;
31
31
  align-items: center;
@@ -33,56 +33,56 @@
33
33
  flex-shrink: 0;
34
34
  box-sizing: border-box;
35
35
  border: 1px solid var(--rs-border);
36
- border-radius: var(--rs-radius-xs, 4px);
36
+ border-radius: var(--rs-radius-xs);
37
37
  background: var(--rs-surface);
38
38
  transition:
39
- border-color var(--rs-transition-fast, 0.12s ease),
40
- background-color var(--rs-transition-fast, 0.12s ease);
39
+ border-color var(--rs-transition-fast),
40
+ background-color var(--rs-transition-fast);
41
41
  }
42
- .rs-checkbox--ssm .rs-checkbox__box {
42
+ .rs-checkbox--ssm .rs-checkbox__box[data-v-5e521b70] {
43
43
  width: 0.75rem;
44
44
  height: 0.75rem;
45
45
  }
46
- .rs-checkbox--sm .rs-checkbox__box {
46
+ .rs-checkbox--sm .rs-checkbox__box[data-v-5e521b70] {
47
47
  width: 0.875rem;
48
48
  height: 0.875rem;
49
49
  }
50
- .rs-checkbox--md .rs-checkbox__box {
50
+ .rs-checkbox--md .rs-checkbox__box[data-v-5e521b70] {
51
51
  width: 1rem;
52
52
  height: 1rem;
53
53
  }
54
- .rs-checkbox--lg .rs-checkbox__box {
54
+ .rs-checkbox--lg .rs-checkbox__box[data-v-5e521b70] {
55
55
  width: 1.125rem;
56
56
  height: 1.125rem;
57
57
  }
58
- .rs-checkbox:hover:not(.rs-checkbox--disabled) .rs-checkbox__box {
58
+ .rs-checkbox:hover:not(.rs-checkbox--disabled) .rs-checkbox__box[data-v-5e521b70] {
59
59
  border-color: var(--rs-primary);
60
60
  }
61
- .rs-checkbox--checked .rs-checkbox__box,
62
- .rs-checkbox--indeterminate .rs-checkbox__box {
61
+ .rs-checkbox--checked .rs-checkbox__box[data-v-5e521b70],
62
+ .rs-checkbox--indeterminate .rs-checkbox__box[data-v-5e521b70] {
63
63
  border-color: var(--rs-primary);
64
64
  background: var(--rs-primary);
65
65
  }
66
- .rs-checkbox--checked .rs-checkbox__box::after {
66
+ .rs-checkbox--checked .rs-checkbox__box[data-v-5e521b70]::after {
67
67
  content: '';
68
68
  position: absolute;
69
69
  top: 42%;
70
70
  left: 50%;
71
71
  width: 0.28rem;
72
72
  height: 0.5rem;
73
- border: solid var(--rs-primary-foreground, #fff);
73
+ border: solid var(--rs-primary-foreground);
74
74
  border-width: 0 2px 2px 0;
75
75
  transform: translate(-50%, -50%) rotate(45deg);
76
76
  }
77
- .rs-checkbox--ssm.rs-checkbox--checked .rs-checkbox__box::after {
77
+ .rs-checkbox--ssm.rs-checkbox--checked .rs-checkbox__box[data-v-5e521b70]::after {
78
78
  width: 0.2rem;
79
79
  height: 0.36rem;
80
80
  }
81
- .rs-checkbox--sm.rs-checkbox--checked .rs-checkbox__box::after {
81
+ .rs-checkbox--sm.rs-checkbox--checked .rs-checkbox__box[data-v-5e521b70]::after {
82
82
  width: 0.24rem;
83
83
  height: 0.42rem;
84
84
  }
85
- .rs-checkbox--indeterminate .rs-checkbox__box::after {
85
+ .rs-checkbox--indeterminate .rs-checkbox__box[data-v-5e521b70]::after {
86
86
  content: '';
87
87
  position: absolute;
88
88
  top: 50%;
@@ -91,14 +91,37 @@
91
91
  height: 2px;
92
92
  border: 0;
93
93
  border-radius: 1px;
94
- background: var(--rs-primary-foreground, #fff);
94
+ background: var(--rs-primary-foreground);
95
95
  transform: translate(-50%, -50%);
96
96
  }
97
- .rs-checkbox__label {
97
+ .rs-checkbox__label[data-v-5e521b70] {
98
98
  font-size: var(--rs-font-size-sm);
99
99
  line-height: var(--rs-line-height-normal);
100
100
  }
101
- .rs-checkbox--ssm .rs-checkbox__label,
102
- .rs-checkbox--sm .rs-checkbox__label {
101
+ .rs-checkbox--ssm .rs-checkbox__label[data-v-5e521b70],
102
+ .rs-checkbox--sm .rs-checkbox__label[data-v-5e521b70] {
103
103
  font-size: var(--rs-font-size-xs);
104
104
  }
105
+ @media (prefers-reduced-motion: reduce) {
106
+ .rs-checkbox__box[data-v-5e521b70] {
107
+ transition: none;
108
+ }
109
+ }
110
+ @media (forced-colors: active) {
111
+ .rs-checkbox__box[data-v-5e521b70] {
112
+ border-color: ButtonText;
113
+ background: Field;
114
+ forced-color-adjust: none;
115
+ }
116
+ .rs-checkbox--checked .rs-checkbox__box[data-v-5e521b70],
117
+ .rs-checkbox--indeterminate .rs-checkbox__box[data-v-5e521b70] {
118
+ border-color: Highlight;
119
+ background: Highlight;
120
+ }
121
+ .rs-checkbox--checked .rs-checkbox__box[data-v-5e521b70]::after {
122
+ border-color: HighlightText;
123
+ }
124
+ .rs-checkbox--indeterminate .rs-checkbox__box[data-v-5e521b70]::after {
125
+ background: HighlightText;
126
+ }
127
+ }
@@ -1,4 +1,11 @@
1
1
  import type { RsComponentSize } from '../../../theme/types';
2
+ export interface RsCheckboxExpose {
3
+ focus: () => void;
4
+ }
5
+ /** 模板 ref 实例:expose + 根节点 */
6
+ export type RsCheckboxInstance = RsCheckboxExpose & {
7
+ $el: HTMLElement;
8
+ };
2
9
  type __VLS_Props = {
3
10
  /** 半选(仅视觉;点击仍按 model 取反) */
4
11
  indeterminate?: boolean;
@@ -7,6 +14,8 @@ type __VLS_Props = {
7
14
  /** 无障碍名称;有默认插槽文案时可省略 */
8
15
  ariaLabel?: string;
9
16
  id?: string;
17
+ name?: string;
18
+ required?: boolean;
10
19
  };
11
20
  type __VLS_ModelProps = {
12
21
  modelValue?: boolean;
@@ -16,13 +25,14 @@ declare var __VLS_1: {};
16
25
  type __VLS_Slots = {} & {
17
26
  default?: (props: typeof __VLS_1) => any;
18
27
  };
19
- declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
28
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, RsCheckboxExpose, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
20
29
  change: (value: boolean) => any;
21
30
  "update:modelValue": (value: boolean) => any;
22
31
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
23
32
  onChange?: ((value: boolean) => any) | undefined;
24
33
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
25
34
  }>, {
35
+ required: boolean;
26
36
  disabled: boolean;
27
37
  indeterminate: boolean;
28
38
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -1,19 +1,25 @@
1
+ import { useRsFormContext } from "../../form/src/form-utils.js";
1
2
  import { useResolvedRsComponentSize } from "../../_shared/src/resolve-size.js";
2
- import { computed, createCommentVNode, createElementBlock, createElementVNode, defineComponent, mergeModels, normalizeClass, openBlock, renderSlot, useId, useModel, withModifiers } from "vue";
3
+ import { applyRsCheckboxIndeterminate, resolveRsCheckboxAriaChecked } from "./checkbox-utils.js";
4
+ import { computed, createCommentVNode, createElementBlock, createElementVNode, defineComponent, mergeModels, normalizeClass, onMounted, openBlock, renderSlot, useId, useModel, useTemplateRef, watch, withModifiers } from "vue";
3
5
  //#region src/components/checkbox/src/RsCheckbox.vue?vue&type=script&setup=true&lang.ts
4
6
  var _hoisted_1 = ["for"];
5
7
  var _hoisted_2 = [
6
8
  "id",
9
+ "name",
7
10
  "checked",
8
11
  "disabled",
12
+ "required",
9
13
  "aria-checked",
10
- "aria-label"
14
+ "aria-label",
15
+ "aria-required"
11
16
  ];
12
17
  var _hoisted_3 = {
13
18
  key: 0,
14
19
  class: "rs-checkbox__label"
15
20
  };
16
21
  var RsCheckbox_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
22
+ name: "RsCheckbox",
17
23
  __name: "RsCheckbox",
18
24
  props: /*@__PURE__*/ mergeModels({
19
25
  indeterminate: {
@@ -26,7 +32,12 @@ var RsCheckbox_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
26
32
  },
27
33
  size: {},
28
34
  ariaLabel: {},
29
- id: {}
35
+ id: {},
36
+ name: {},
37
+ required: {
38
+ type: Boolean,
39
+ default: false
40
+ }
30
41
  }, {
31
42
  "modelValue": {
32
43
  type: Boolean,
@@ -35,28 +46,40 @@ var RsCheckbox_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
35
46
  "modelModifiers": {}
36
47
  }),
37
48
  emits: /*@__PURE__*/ mergeModels(["change"], ["update:modelValue"]),
38
- setup(__props, { emit: __emit }) {
49
+ setup(__props, { expose: __expose, emit: __emit }) {
39
50
  const model = useModel(__props, "modelValue");
40
51
  const props = __props;
41
52
  const emit = __emit;
53
+ const formContext = useRsFormContext();
42
54
  const autoId = useId();
43
55
  const inputId = computed(() => props.id || autoId);
56
+ const inputRef = useTemplateRef("inputRef");
44
57
  const resolvedSize = useResolvedRsComponentSize(() => props.size);
58
+ const resolvedDisabled = computed(() => props.disabled || Boolean(formContext?.disabled.value));
59
+ const ariaChecked = computed(() => resolveRsCheckboxAriaChecked(model.value, props.indeterminate));
45
60
  const rootClass = computed(() => [
46
61
  "rs-checkbox",
47
62
  `rs-checkbox--${resolvedSize.value}`,
48
63
  {
49
64
  "rs-checkbox--checked": model.value && !props.indeterminate,
50
65
  "rs-checkbox--indeterminate": props.indeterminate,
51
- "rs-checkbox--disabled": props.disabled
66
+ "rs-checkbox--disabled": resolvedDisabled.value
52
67
  }
53
68
  ]);
69
+ function syncIndeterminate() {
70
+ applyRsCheckboxIndeterminate(inputRef.value, props.indeterminate);
71
+ }
54
72
  function onChange(event) {
55
- if (props.disabled) return;
73
+ if (resolvedDisabled.value) return;
56
74
  const checked = event.target.checked;
57
75
  model.value = checked;
58
76
  emit("change", checked);
59
77
  }
78
+ onMounted(syncIndeterminate);
79
+ watch(() => props.indeterminate, syncIndeterminate);
80
+ __expose({ focus: () => {
81
+ inputRef.value?.focus();
82
+ } });
60
83
  return (_ctx, _cache) => {
61
84
  return openBlock(), createElementBlock("label", {
62
85
  class: normalizeClass(rootClass.value),
@@ -64,12 +87,17 @@ var RsCheckbox_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
64
87
  }, [
65
88
  createElementVNode("input", {
66
89
  id: inputId.value,
90
+ ref_key: "inputRef",
91
+ ref: inputRef,
67
92
  class: "rs-checkbox__input",
68
93
  type: "checkbox",
94
+ name: __props.name,
69
95
  checked: model.value,
70
- disabled: __props.disabled,
71
- "aria-checked": __props.indeterminate ? "mixed" : model.value,
96
+ disabled: resolvedDisabled.value,
97
+ required: __props.required || void 0,
98
+ "aria-checked": ariaChecked.value,
72
99
  "aria-label": __props.ariaLabel,
100
+ "aria-required": __props.required || void 0,
73
101
  onChange,
74
102
  onClick: _cache[0] || (_cache[0] = withModifiers(() => {}, ["stop"]))
75
103
  }, null, 40, _hoisted_2),
@@ -77,7 +105,7 @@ var RsCheckbox_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
77
105
  class: "rs-checkbox__box",
78
106
  "aria-hidden": "true"
79
107
  }, null, -1)),
80
- _ctx.$slots.default ? (openBlock(), createElementBlock("span", _hoisted_3, [renderSlot(_ctx.$slots, "default")])) : createCommentVNode("", true)
108
+ _ctx.$slots.default ? (openBlock(), createElementBlock("span", _hoisted_3, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])) : createCommentVNode("", true)
81
109
  ], 10, _hoisted_1);
82
110
  };
83
111
  }
@@ -1,7 +1,8 @@
1
1
  import './RsCheckbox.css'
2
+ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_export-helper.js";
2
3
  import RsCheckbox_vue_vue_type_script_setup_true_lang_default from "./RsCheckbox.impl.js";
3
4
 
4
5
  //#region src/components/checkbox/src/RsCheckbox.vue
5
- var RsCheckbox_default = RsCheckbox_vue_vue_type_script_setup_true_lang_default;
6
+ var RsCheckbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsCheckbox_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-5e521b70"]]);
6
7
  //#endregion
7
8
  export { RsCheckbox_default as default };
@@ -0,0 +1,4 @@
1
+ export type RsCheckboxAriaChecked = 'true' | 'false' | 'mixed';
2
+ export declare function resolveRsCheckboxAriaChecked(checked: boolean, indeterminate: boolean): RsCheckboxAriaChecked;
3
+ /** `indeterminate` 不是 HTML 属性,必须写 IDL。 */
4
+ export declare function applyRsCheckboxIndeterminate(el: HTMLInputElement | null | undefined, indeterminate: boolean): void;
@@ -0,0 +1,12 @@
1
+ //#region src/components/checkbox/src/checkbox-utils.ts
2
+ function resolveRsCheckboxAriaChecked(checked, indeterminate) {
3
+ if (indeterminate) return "mixed";
4
+ return checked ? "true" : "false";
5
+ }
6
+ /** `indeterminate` 不是 HTML 属性,必须写 IDL。 */
7
+ function applyRsCheckboxIndeterminate(el, indeterminate) {
8
+ if (!el) return;
9
+ el.indeterminate = indeterminate;
10
+ }
11
+ //#endregion
12
+ export { applyRsCheckboxIndeterminate, resolveRsCheckboxAriaChecked };
@@ -1,2 +1,2 @@
1
1
  export { default as RsContainer } from './src/RsContainer.js';
2
- export type { RsContainerBreakpoint, RsContainerGap, RsContainerMaxWidth, RsContainerMaybeResponsive, RsContainerPadding, RsContainerResponsive, } from './src/RsContainer.js';
2
+ export type { RsContainerBreakpoint, RsContainerGap, RsContainerMaxWidth, RsContainerMaybeResponsive, RsContainerPadding, RsContainerResponsive, } from './src/container-utils';
@@ -1,24 +1,24 @@
1
1
 
2
- .rs-container[data-v-3c8fcccd] {
2
+ .rs-container[data-v-5a260e9d] {
3
3
  width: 100%;
4
4
  box-sizing: border-box;
5
5
  max-width: var(--rs-container-max-current, var(--rs-container-max-lg));
6
6
  padding-inline: var(--rs-container-padding-current, var(--rs-space-md));
7
7
  }
8
- .rs-container--centered[data-v-3c8fcccd] {
8
+ .rs-container--centered[data-v-5a260e9d] {
9
9
  margin-inline: auto;
10
10
  }
11
- .rs-container--grid[data-v-3c8fcccd] {
11
+ .rs-container--grid[data-v-5a260e9d] {
12
12
  display: grid;
13
13
  grid-template-columns: repeat(var(--rs-container-columns-current, 12), minmax(0, 1fr));
14
14
  gap: var(--rs-container-gap-current, var(--rs-space-md));
15
15
  }
16
16
  @media (width >= 40rem) {
17
- .rs-container[data-v-3c8fcccd] {
17
+ .rs-container[data-v-5a260e9d] {
18
18
  max-width: var(--rs-container-max-sm, var(--rs-container-max-current, var(--rs-container-max-lg)));
19
19
  padding-inline: var(--rs-container-padding-sm, var(--rs-container-padding-current, var(--rs-space-md)));
20
20
  }
21
- .rs-container--grid[data-v-3c8fcccd] {
21
+ .rs-container--grid[data-v-5a260e9d] {
22
22
  grid-template-columns: repeat(
23
23
  var(--rs-container-columns-sm, var(--rs-container-columns-current, 12)),
24
24
  minmax(0, 1fr)
@@ -27,14 +27,14 @@
27
27
  }
28
28
  }
29
29
  @media (width >= 48rem) {
30
- .rs-container[data-v-3c8fcccd] {
30
+ .rs-container[data-v-5a260e9d] {
31
31
  max-width: var(--rs-container-max-md, var(--rs-container-max-sm, var(--rs-container-max-current)));
32
32
  padding-inline: var(
33
33
  --rs-container-padding-md,
34
34
  var(--rs-container-padding-sm, var(--rs-container-padding-current))
35
35
  );
36
36
  }
37
- .rs-container--grid[data-v-3c8fcccd] {
37
+ .rs-container--grid[data-v-5a260e9d] {
38
38
  grid-template-columns: repeat(
39
39
  var(--rs-container-columns-md, var(--rs-container-columns-sm, var(--rs-container-columns-current, 12))),
40
40
  minmax(0, 1fr)
@@ -43,7 +43,7 @@
43
43
  }
44
44
  }
45
45
  @media (width >= 64rem) {
46
- .rs-container[data-v-3c8fcccd] {
46
+ .rs-container[data-v-5a260e9d] {
47
47
  max-width: var(
48
48
  --rs-container-max-lg,
49
49
  var(--rs-container-max-md, var(--rs-container-max-sm, var(--rs-container-max-current)))
@@ -53,7 +53,7 @@
53
53
  var(--rs-container-padding-md, var(--rs-container-padding-sm, var(--rs-container-padding-current)))
54
54
  );
55
55
  }
56
- .rs-container--grid[data-v-3c8fcccd] {
56
+ .rs-container--grid[data-v-5a260e9d] {
57
57
  grid-template-columns: repeat(
58
58
  var(
59
59
  --rs-container-columns-lg,
@@ -65,7 +65,7 @@
65
65
  }
66
66
  }
67
67
  @media (width >= 80rem) {
68
- .rs-container[data-v-3c8fcccd] {
68
+ .rs-container[data-v-5a260e9d] {
69
69
  max-width: var(
70
70
  --rs-container-max-xl,
71
71
  var(--rs-container-max-lg, var(--rs-container-max-md, var(--rs-container-max-sm, var(--rs-container-max-current))))
@@ -75,7 +75,7 @@
75
75
  var(--rs-container-padding-lg, var(--rs-container-padding-md, var(--rs-container-padding-sm, var(--rs-container-padding-current))))
76
76
  );
77
77
  }
78
- .rs-container--grid[data-v-3c8fcccd] {
78
+ .rs-container--grid[data-v-5a260e9d] {
79
79
  grid-template-columns: repeat(
80
80
  var(
81
81
  --rs-container-columns-xl,
@@ -1,15 +1,5 @@
1
- /** 支持的响应式断点,语义与常见 SaaS 前端一致。 */
2
- export type RsContainerBreakpoint = 'sm' | 'md' | 'lg' | 'xl';
3
- /** 内容区最大宽度档位,对应 `--rs-container-max-*` token。 */
4
- export type RsContainerMaxWidth = 'sm' | 'md' | 'lg' | 'xl' | 'full';
5
- /** 水平内边距档位,对应 `--rs-space-*` token。 */
6
- export type RsContainerPadding = 'none' | 'sm' | 'md' | 'lg';
7
- /** 栅格间距档位,对应 `--rs-space-*` token。 */
8
- export type RsContainerGap = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
9
- /** 断点映射配置,用于 maxWidth、padding、columns、gap。 */
10
- export type RsContainerResponsive<T> = Partial<Record<RsContainerBreakpoint, T>>;
11
- /** 支持固定值或断点映射。 */
12
- export type RsContainerMaybeResponsive<T> = T | RsContainerResponsive<T>;
1
+ import { type RsContainerGap, type RsContainerMaxWidth, type RsContainerMaybeResponsive, type RsContainerPadding } from './container-utils';
2
+ export type { RsContainerBreakpoint, RsContainerGap, RsContainerMaxWidth, RsContainerMaybeResponsive, RsContainerPadding, RsContainerResponsive, } from './container-utils';
13
3
  type __VLS_Props = {
14
4
  /** 最大内容宽度;`fluid` 为 true 时忽略。 */
15
5
  maxWidth?: RsContainerMaybeResponsive<RsContainerMaxWidth>;
@@ -1,6 +1,8 @@
1
+ import { resolveRsContainerStyle } from "./container-utils.js";
1
2
  import { computed, createBlock, defineComponent, normalizeClass, normalizeStyle, openBlock, renderSlot, resolveDynamicComponent, withCtx } from "vue";
2
3
  //#region src/components/container/src/RsContainer.vue?vue&type=script&setup=true&lang.ts
3
4
  var RsContainer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
5
+ name: "RsContainer",
4
6
  __name: "RsContainer",
5
7
  props: {
6
8
  maxWidth: { default: "lg" },
@@ -23,67 +25,18 @@ var RsContainer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
23
25
  },
24
26
  setup(__props) {
25
27
  const props = __props;
26
- const BREAKPOINTS = [
27
- "sm",
28
- "md",
29
- "lg",
30
- "xl"
31
- ];
32
- const isResponsiveObject = (value) => typeof value === "object" && value !== null;
33
- const tokenToSpaceVar = {
34
- none: "0",
35
- xs: "var(--rs-space-xs)",
36
- sm: "var(--rs-space-sm)",
37
- md: "var(--rs-space-md)",
38
- lg: "var(--rs-space-lg)",
39
- xl: "var(--rs-space-xl)"
40
- };
41
- const tokenToContainerVar = {
42
- sm: "var(--rs-container-max-sm)",
43
- md: "var(--rs-container-max-md)",
44
- lg: "var(--rs-container-max-lg)",
45
- xl: "var(--rs-container-max-xl)",
46
- full: "var(--rs-container-max-full)"
47
- };
48
28
  const rootClass = computed(() => ["rs-container", {
49
29
  "rs-container--centered": props.centered,
50
30
  "rs-container--grid": props.grid
51
31
  }]);
52
- const rootStyle = computed(() => {
53
- const style = {};
54
- if (props.fluid) style["--rs-container-max-current"] = "none";
55
- else if (isResponsiveObject(props.maxWidth)) {
56
- const responsiveMaxWidth = props.maxWidth;
57
- BREAKPOINTS.forEach((bp) => {
58
- const value = responsiveMaxWidth[bp];
59
- if (value) style[`--rs-container-max-${bp}`] = tokenToContainerVar[value];
60
- });
61
- } else style["--rs-container-max-current"] = tokenToContainerVar[props.maxWidth];
62
- if (isResponsiveObject(props.padding)) {
63
- const responsivePadding = props.padding;
64
- BREAKPOINTS.forEach((bp) => {
65
- const value = responsivePadding[bp];
66
- if (value) style[`--rs-container-padding-${bp}`] = tokenToSpaceVar[value];
67
- });
68
- } else style["--rs-container-padding-current"] = tokenToSpaceVar[props.padding];
69
- if (props.grid) {
70
- if (isResponsiveObject(props.columns)) {
71
- const responsiveColumns = props.columns;
72
- BREAKPOINTS.forEach((bp) => {
73
- const value = responsiveColumns[bp];
74
- if (typeof value === "number") style[`--rs-container-columns-${bp}`] = value;
75
- });
76
- } else style["--rs-container-columns-current"] = props.columns;
77
- if (isResponsiveObject(props.gap)) {
78
- const responsiveGap = props.gap;
79
- BREAKPOINTS.forEach((bp) => {
80
- const value = responsiveGap[bp];
81
- if (value) style[`--rs-container-gap-${bp}`] = tokenToSpaceVar[value];
82
- });
83
- } else style["--rs-container-gap-current"] = tokenToSpaceVar[props.gap];
84
- }
85
- return style;
86
- });
32
+ const rootStyle = computed(() => resolveRsContainerStyle({
33
+ maxWidth: props.maxWidth,
34
+ padding: props.padding,
35
+ fluid: props.fluid,
36
+ grid: props.grid,
37
+ columns: props.columns,
38
+ gap: props.gap
39
+ }));
87
40
  return (_ctx, _cache) => {
88
41
  return openBlock(), createBlock(resolveDynamicComponent(__props.tag), {
89
42
  class: normalizeClass(rootClass.value),
@@ -3,6 +3,6 @@ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_exp
3
3
  import RsContainer_vue_vue_type_script_setup_true_lang_default from "./RsContainer.impl.js";
4
4
 
5
5
  //#region src/components/container/src/RsContainer.vue
6
- var RsContainer_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsContainer_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-3c8fcccd"]]);
6
+ var RsContainer_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsContainer_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-5a260e9d"]]);
7
7
  //#endregion
8
8
  export { RsContainer_default as default };
@@ -0,0 +1,23 @@
1
+ export declare const RS_CONTAINER_BREAKPOINTS: readonly ["sm", "md", "lg", "xl"];
2
+ export type RsContainerBreakpoint = (typeof RS_CONTAINER_BREAKPOINTS)[number];
3
+ export declare const RS_CONTAINER_MAX_WIDTHS: readonly ["sm", "md", "lg", "xl", "full"];
4
+ export type RsContainerMaxWidth = (typeof RS_CONTAINER_MAX_WIDTHS)[number];
5
+ export declare const RS_CONTAINER_PADDINGS: readonly ["none", "sm", "md", "lg"];
6
+ export type RsContainerPadding = (typeof RS_CONTAINER_PADDINGS)[number];
7
+ export declare const RS_CONTAINER_GAPS: readonly ["none", "xs", "sm", "md", "lg", "xl"];
8
+ export type RsContainerGap = (typeof RS_CONTAINER_GAPS)[number];
9
+ export type RsContainerResponsive<T> = Partial<Record<RsContainerBreakpoint, T>>;
10
+ export type RsContainerMaybeResponsive<T> = T | RsContainerResponsive<T>;
11
+ export declare const RS_CONTAINER_SPACE_CSS: Record<RsContainerGap | RsContainerPadding, string>;
12
+ export declare const RS_CONTAINER_MAX_WIDTH_CSS: Record<RsContainerMaxWidth, string>;
13
+ export declare function isRsContainerResponsive<T>(value: RsContainerMaybeResponsive<T>): value is RsContainerResponsive<T>;
14
+ export interface RsContainerStyleInput {
15
+ maxWidth: RsContainerMaybeResponsive<RsContainerMaxWidth>;
16
+ padding: RsContainerMaybeResponsive<RsContainerPadding>;
17
+ fluid: boolean;
18
+ grid: boolean;
19
+ columns: RsContainerMaybeResponsive<number>;
20
+ gap: RsContainerMaybeResponsive<RsContainerGap>;
21
+ }
22
+ /** 写入根节点的 CSS 变量。语义与原先 SFC 内联计算一致。 */
23
+ export declare function resolveRsContainerStyle(input: RsContainerStyleInput): Record<string, string | number>;
@@ -0,0 +1,51 @@
1
+ //#region src/components/container/src/container-utils.ts
2
+ var RS_CONTAINER_BREAKPOINTS = [
3
+ "sm",
4
+ "md",
5
+ "lg",
6
+ "xl"
7
+ ];
8
+ var RS_CONTAINER_SPACE_CSS = {
9
+ none: "0",
10
+ xs: "var(--rs-space-xs)",
11
+ sm: "var(--rs-space-sm)",
12
+ md: "var(--rs-space-md)",
13
+ lg: "var(--rs-space-lg)",
14
+ xl: "var(--rs-space-xl)"
15
+ };
16
+ var RS_CONTAINER_MAX_WIDTH_CSS = {
17
+ sm: "var(--rs-container-max-sm)",
18
+ md: "var(--rs-container-max-md)",
19
+ lg: "var(--rs-container-max-lg)",
20
+ xl: "var(--rs-container-max-xl)",
21
+ full: "var(--rs-container-max-full)"
22
+ };
23
+ function isRsContainerResponsive(value) {
24
+ return typeof value === "object" && value !== null;
25
+ }
26
+ function writeResponsiveVars(style, prefix, value, toCss) {
27
+ if (isRsContainerResponsive(value)) {
28
+ for (const bp of RS_CONTAINER_BREAKPOINTS) {
29
+ const item = value[bp];
30
+ if (item === void 0) continue;
31
+ const css = toCss(item);
32
+ if (css !== void 0) style[`${prefix}-${bp}`] = css;
33
+ }
34
+ return;
35
+ }
36
+ const css = toCss(value);
37
+ if (css !== void 0) style[`${prefix}-current`] = css;
38
+ }
39
+ /** 写入根节点的 CSS 变量。语义与原先 SFC 内联计算一致。 */
40
+ function resolveRsContainerStyle(input) {
41
+ const style = {};
42
+ if (input.fluid) style["--rs-container-max-current"] = "none";
43
+ else writeResponsiveVars(style, "--rs-container-max", input.maxWidth, (item) => RS_CONTAINER_MAX_WIDTH_CSS[item]);
44
+ writeResponsiveVars(style, "--rs-container-padding", input.padding, (item) => RS_CONTAINER_SPACE_CSS[item]);
45
+ if (!input.grid) return style;
46
+ writeResponsiveVars(style, "--rs-container-columns", input.columns, (item) => typeof item === "number" ? item : void 0);
47
+ writeResponsiveVars(style, "--rs-container-gap", input.gap, (item) => RS_CONTAINER_SPACE_CSS[item]);
48
+ return style;
49
+ }
50
+ //#endregion
51
+ export { RS_CONTAINER_BREAKPOINTS, RS_CONTAINER_MAX_WIDTH_CSS, RS_CONTAINER_SPACE_CSS, isRsContainerResponsive, resolveRsContainerStyle };
@@ -1,7 +1,9 @@
1
1
  export { default as RsDatePicker } from './src/RsDatePicker.js';
2
2
  export { default as RsDateTimePicker } from './src/RsDateTimePicker.js';
3
- export type { RsDatePickerModelValue, RsDatePickerShortcut, RsDatePickerTimestampRange, RsDatePickerValueConvertOptions, RsDatePickerValueFormat, RsDatePickerValueFormatPreset, RsDateRangeValue, RsParsedDate, RsParsedDateTime, } from './src/date-picker-utils';
4
- export { EMPTY_DATE_RANGE, formatDateDisplay, formatDateParts, formatDateRangeDisplay, formatDateTimeDisplay, formatDateTimeValue, formatDateValue, fromInternalPickerValue, isDateRangeEmpty, isDateRangeOrdered, isDateTimeRangeOrdered, parseDateTimeValue, parseDateValue, RS_DATE_PICKER_VALUE_FORMAT_PRESETS, toInternalPickerValue, toRangeEndpointString, } from './src/date-picker-utils';
3
+ export type { RsDatePickerExpose, RsDatePickerInstance, RsDatePickerLabelPosition, } from './src/RsDatePicker.js';
4
+ export type { RsDateTimePickerExpose, RsDateTimePickerInstance, RsDateTimePickerLabelPosition, RsDateTimeRangeValue, } from './src/RsDateTimePicker.js';
5
+ export type { RsDatePickerDisabledDate, RsDatePickerGetPopupContainer, RsDatePickerModelValue, RsDatePickerShortcut, RsDatePickerTimestampRange, RsDatePickerValueConvertOptions, RsDatePickerValueFormat, RsDatePickerValueFormatPreset, RsDateRangeValue, RsParsedDate, RsParsedDateTime, RsWeekStartsOn, } from './src/date-picker-utils';
6
+ export { EMPTY_DATE_RANGE, formatDateDisplay, formatDateParts, formatDateRangeDisplay, formatDateTimeDisplay, formatDateTimeValue, formatDateValue, formatPickerDisplay, fromInternalPickerValue, isDateRangeEmpty, isDateRangeOrdered, isDateTimeRangeOrdered, parseDateTimeValue, parseDateValue, resolveWeekStartsOn, RS_DATE_PICKER_VALUE_FORMAT_PRESETS, toInternalPickerValue, toRangeEndpointString, } from './src/date-picker-utils';
5
7
  export type { RsDateTimeValidationError, RsDateTimeValidationResult, RsDateTimeValidationRules, RsDateValidationError, RsDateValidationResult, RsDateValidationRules, } from './src/date-validation';
6
8
  export { validateDateTimeValue, validateDateValue } from './src/date-validation';
7
9
  export type { RsDateRangeValidationError, RsDateRangeValidationResult, RsDateRangeValidationRules, RsDateTimeRangeValidationError, RsDateTimeRangeValidationResult, RsDateTimeRangeValidationRules, } from './src/date-range-validation';