niuma-ui 2.0.0 → 2.0.2

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 (119) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.en.md +1 -118
  3. package/README.md +58 -62
  4. package/README.zh-CN.md +128 -0
  5. package/dist/brand-icons.css +40 -0
  6. package/dist/components/_shared/src/reka.d.ts +1 -1
  7. package/dist/components/_shared/src/reka.js +2 -2
  8. package/dist/components/_shared/src/resolve-radius.js +1 -1
  9. package/dist/components/avatar/src/RsAvatar.impl.js +1 -1
  10. package/dist/components/button/src/RsButton.impl.js +1 -1
  11. package/dist/components/card/src/RsCard.impl.js +1 -1
  12. package/dist/components/cascader/src/RsCascader.css +20 -20
  13. package/dist/components/cascader/src/RsCascader.js +1 -1
  14. package/dist/components/code-block/src/RsCodeBlock.d.ts +1 -1
  15. package/dist/components/code-editor/src/code-editor-utils.js +2 -2
  16. package/dist/components/code-editor/src/code-mirror-lang.js +1 -1
  17. package/dist/components/config-provider/src/RsConfigProvider.css +2 -2
  18. package/dist/components/config-provider/src/RsConfigProvider.d.ts +8 -6
  19. package/dist/components/config-provider/src/RsConfigProvider.impl.js +64 -15
  20. package/dist/components/config-provider/src/RsConfigProvider.js +1 -1
  21. package/dist/components/context-menu/src/RsContextMenu.css +2 -2
  22. package/dist/components/context-menu/src/RsContextMenuItems.impl.js +1 -1
  23. package/dist/components/date-picker/src/RsDatePicker.css +17 -17
  24. package/dist/components/date-picker/src/RsDatePicker.impl.js +2 -2
  25. package/dist/components/date-picker/src/RsDatePicker.js +1 -1
  26. package/dist/components/dialog/src/RsConfirmDialog.impl.js +1 -1
  27. package/dist/components/dialog/src/RsDialog.css +1 -2
  28. package/dist/components/dialog/src/RsDialog.impl.js +1 -1
  29. package/dist/components/divider/src/RsDivider.css +13 -13
  30. package/dist/components/divider/src/RsDivider.js +1 -1
  31. package/dist/components/drawer/src/RsDrawer.css +2 -4
  32. package/dist/components/drawer/src/RsDrawer.impl.js +1 -1
  33. package/dist/components/dropdown/src/RsDropdown.css +2 -2
  34. package/dist/components/dropdown/src/RsDropdown.impl.js +1 -1
  35. package/dist/components/dropdown/src/RsDropdownItemView.impl.js +1 -1
  36. package/dist/components/form/src/form-rules.js +2 -2
  37. package/dist/components/icon/src/RsIcon.css +4 -4
  38. package/dist/components/icon/src/RsIcon.impl.js +6 -1
  39. package/dist/components/icon/src/RsIcon.js +1 -1
  40. package/dist/components/input/src/RsInput.css +86 -86
  41. package/dist/components/input/src/RsInput.js +1 -1
  42. package/dist/components/input/src/input-rules.js +3 -3
  43. package/dist/components/input-number/src/RsInputNumber.css +32 -32
  44. package/dist/components/input-number/src/RsInputNumber.js +1 -1
  45. package/dist/components/label/src/RsLabel.css +7 -7
  46. package/dist/components/label/src/RsLabel.js +1 -1
  47. package/dist/components/loading-bar/src/RsLoadingBar.css +4 -5
  48. package/dist/components/loading-bar/src/RsLoadingBar.js +1 -1
  49. package/dist/components/log/src/RsLog.css +39 -39
  50. package/dist/components/log/src/RsLog.d.ts +1 -1
  51. package/dist/components/log/src/RsLog.impl.js +1 -1
  52. package/dist/components/log/src/RsLog.js +1 -1
  53. package/dist/components/markdown/src/RsMarkdown.css +9 -7
  54. package/dist/components/menu/src/RsMenu.css +5 -5
  55. package/dist/components/menu/src/RsMenuItems.impl.js +1 -1
  56. package/dist/components/pagination/src/RsPagination.css +18 -18
  57. package/dist/components/pagination/src/RsPagination.impl.js +1 -1
  58. package/dist/components/pagination/src/RsPagination.js +1 -1
  59. package/dist/components/radio/src/RsRadio.impl.js +1 -1
  60. package/dist/components/radio/src/RsRadioItem.impl.js +1 -1
  61. package/dist/components/select/src/RsSelect.css +42 -42
  62. package/dist/components/select/src/RsSelect.impl.js +2 -2
  63. package/dist/components/select/src/RsSelect.js +1 -1
  64. package/dist/components/steps/src/RsSteps.css +18 -18
  65. package/dist/components/steps/src/RsSteps.js +1 -1
  66. package/dist/components/switch/src/RsSwitch.css +4 -6
  67. package/dist/components/switch/src/RsSwitch.impl.js +1 -1
  68. package/dist/components/table/style/rs-table.css +15 -15
  69. package/dist/components/tabs/src/RsTabs.impl.js +1 -1
  70. package/dist/components/terminal/src/RsTerminal.css +24 -24
  71. package/dist/components/terminal/src/RsTerminal.js +1 -1
  72. package/dist/components/textarea/src/RsTextarea.css +26 -26
  73. package/dist/components/textarea/src/RsTextarea.js +1 -1
  74. package/dist/components/time-picker/src/RsTimePicker.css +20 -20
  75. package/dist/components/time-picker/src/RsTimePicker.impl.js +2 -2
  76. package/dist/components/time-picker/src/RsTimePicker.js +1 -1
  77. package/dist/components/toaster/src/RsToaster.css +6 -6
  78. package/dist/components/toaster/src/RsToaster.impl.js +3 -6
  79. package/dist/components/tooltip/src/RsTooltip.impl.js +1 -1
  80. package/dist/components/tree/src/RsTree.css +72 -73
  81. package/dist/components/tree/src/RsTree.js +1 -1
  82. package/dist/components/tree-select/src/RsTreeSelect.css +11 -11
  83. package/dist/components/tree-select/src/RsTreeSelect.js +1 -1
  84. package/dist/components/virtual-list/src/RsVirtualList.css +7 -8
  85. package/dist/components/virtual-list/src/RsVirtualList.js +1 -1
  86. package/dist/composables/createRsDialog.js +6 -5
  87. package/dist/composables/useRsConfig.d.ts +11 -3
  88. package/dist/composables/useRsConfig.js +18 -6
  89. package/dist/composables/useRsI18n.d.ts +1 -1
  90. package/dist/composables/useRsI18n.js +5 -5
  91. package/dist/icons/brand.d.ts +6 -0
  92. package/dist/icons/brand.js +26 -0
  93. package/dist/icons/registry.d.ts +2 -0
  94. package/dist/icons/registry.js +2 -1
  95. package/dist/index.d.ts +8 -4
  96. package/dist/index.js +19 -0
  97. package/dist/locale/apply.d.ts +8 -0
  98. package/dist/locale/apply.js +20 -0
  99. package/dist/locale/interpolate.d.ts +4 -3
  100. package/dist/locale/interpolate.js +108 -5
  101. package/dist/locale/messages.d.ts +2 -4
  102. package/dist/locale/messages.js +7 -9
  103. package/dist/locale/registry-public.d.ts +3 -0
  104. package/dist/locale/registry.d.ts +19 -0
  105. package/dist/locale/registry.js +50 -0
  106. package/dist/locale/resolve-host.d.ts +7 -0
  107. package/dist/locale/resolve-host.js +46 -0
  108. package/dist/locale/types.d.ts +13 -2
  109. package/dist/locale/types.js +6 -1
  110. package/dist/styles.css +245 -250
  111. package/dist/theme/apply.d.ts +15 -3
  112. package/dist/theme/apply.js +41 -4
  113. package/dist/theme/brand.example.css +5 -1
  114. package/dist/theme/presets.d.ts +6 -5
  115. package/dist/theme/presets.js +4 -3
  116. package/dist/theme/types.d.ts +15 -7
  117. package/dist/theme/types.js +4 -1
  118. package/dist/vite-plugins/niuma-ui-host.js +7 -0
  119. package/package.json +3 -1
@@ -1,5 +1,5 @@
1
1
 
2
- .rs-cascader[data-v-05f0e9c1] {
2
+ .rs-cascader[data-v-4b45dd5a] {
3
3
  display: inline-flex;
4
4
  align-items: center;
5
5
  gap: var(--rs-space-sm);
@@ -15,54 +15,54 @@
15
15
  font-size: var(--rs-font-size-sm);
16
16
  cursor: pointer;
17
17
  }
18
- .rs-cascader--sm[data-v-05f0e9c1] {
18
+ .rs-cascader--sm[data-v-4b45dd5a] {
19
19
  height: var(--rs-control-height-sm);
20
20
  }
21
- .rs-cascader--lg[data-v-05f0e9c1] {
21
+ .rs-cascader--lg[data-v-4b45dd5a] {
22
22
  height: var(--rs-control-height-lg);
23
23
  }
24
- .rs-cascader--disabled[data-v-05f0e9c1] {
24
+ .rs-cascader--disabled[data-v-4b45dd5a] {
25
25
  opacity: 0.38;
26
26
  cursor: not-allowed;
27
27
  }
28
- .rs-cascader__placeholder[data-v-05f0e9c1] {
28
+ .rs-cascader__placeholder[data-v-4b45dd5a] {
29
29
  flex: 1;
30
30
  color: var(--rs-muted);
31
- text-align: left;
31
+ text-align: start;
32
32
  }
33
- .rs-cascader__value[data-v-05f0e9c1] {
33
+ .rs-cascader__value[data-v-4b45dd5a] {
34
34
  flex: 1;
35
35
  overflow: hidden;
36
- text-align: left;
36
+ text-align: start;
37
37
  text-overflow: ellipsis;
38
38
  white-space: nowrap;
39
39
  }
40
- .rs-cascader__clear[data-v-05f0e9c1],
41
- .rs-cascader__icon[data-v-05f0e9c1] {
40
+ .rs-cascader__clear[data-v-4b45dd5a],
41
+ .rs-cascader__icon[data-v-4b45dd5a] {
42
42
  color: var(--rs-muted);
43
43
  }
44
- .rs-cascader__clear[data-v-05f0e9c1] {
44
+ .rs-cascader__clear[data-v-4b45dd5a] {
45
45
  border: 0;
46
46
  background: transparent;
47
47
  cursor: pointer;
48
48
  }
49
- .rs-cascader__panel[data-v-05f0e9c1] {
49
+ .rs-cascader__panel[data-v-4b45dd5a] {
50
50
  display: flex;
51
51
  min-height: 8rem;
52
52
  max-height: 16rem;
53
53
  }
54
- .rs-cascader__col[data-v-05f0e9c1] {
54
+ .rs-cascader__col[data-v-4b45dd5a] {
55
55
  min-width: 8rem;
56
56
  margin: 0;
57
57
  padding: var(--rs-space-xs);
58
58
  overflow: auto;
59
- border-right: 1px solid var(--rs-border);
59
+ border-inline-end: 1px solid var(--rs-border);
60
60
  list-style: none;
61
61
  }
62
- .rs-cascader__col[data-v-05f0e9c1]:last-child {
63
- border-right: 0;
62
+ .rs-cascader__col[data-v-4b45dd5a]:last-child {
63
+ border-inline-end: 0;
64
64
  }
65
- .rs-cascader__item[data-v-05f0e9c1] {
65
+ .rs-cascader__item[data-v-4b45dd5a] {
66
66
  display: flex;
67
67
  align-items: center;
68
68
  justify-content: space-between;
@@ -71,11 +71,11 @@
71
71
  border-radius: var(--rs-radius-xs);
72
72
  cursor: pointer;
73
73
  }
74
- .rs-cascader__item--active[data-v-05f0e9c1],
75
- .rs-cascader__item[data-v-05f0e9c1]:hover:not(.rs-cascader__item--disabled) {
74
+ .rs-cascader__item--active[data-v-4b45dd5a],
75
+ .rs-cascader__item[data-v-4b45dd5a]:hover:not(.rs-cascader__item--disabled) {
76
76
  background: var(--rs-surface-hover);
77
77
  }
78
- .rs-cascader__item--disabled[data-v-05f0e9c1] {
78
+ .rs-cascader__item--disabled[data-v-4b45dd5a] {
79
79
  opacity: 0.4;
80
80
  cursor: not-allowed;
81
81
  }
@@ -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-05f0e9c1"]]);
6
+ var RsCascader_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsCascader_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-4b45dd5a"]]);
7
7
  //#endregion
8
8
  export { RsCascader_default as default };
@@ -26,8 +26,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {
26
26
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
27
27
  "onUpdate:code"?: ((value: string) => any) | undefined;
28
28
  }>, {
29
- editable: boolean;
30
29
  lang: string;
30
+ editable: boolean;
31
31
  showBar: boolean;
32
32
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
33
33
  declare const _default: typeof __VLS_export;
@@ -1,3 +1,4 @@
1
+ import { readResolvedTheme } from "../../../theme/apply.js";
1
2
  //#region src/components/code-editor/src/code-editor-utils.ts
2
3
  var SUPPORTED_LANGUAGES = [
3
4
  "plaintext",
@@ -50,8 +51,7 @@ function codeEditorLanguageLabel(language) {
50
51
  return LANGUAGE_DISPLAY_NAME[lang] ?? lang;
51
52
  }
52
53
  function readDocumentTheme() {
53
- if (typeof document === "undefined") return "dark";
54
- return document.documentElement.dataset.rsTheme === "light" ? "light" : "dark";
54
+ return readResolvedTheme();
55
55
  }
56
56
  function resolveCodeEditorTheme(theme = "auto") {
57
57
  return theme === "auto" ? readDocumentTheme() : theme;
@@ -103,7 +103,7 @@ async function resolveCodeMirrorLanguage(lang, options) {
103
103
  }
104
104
  }
105
105
  function isCodeMirrorLightTheme() {
106
- return typeof document !== "undefined" && document.documentElement.dataset.rsTheme === "light";
106
+ return typeof document === "undefined" || document.documentElement.dataset.rsTheme !== "dark";
107
107
  }
108
108
  /** 预加载 CodeMirror 核心与目标语言包(供辅助窗口 reveal 前调用) */
109
109
  async function prewarmCodeMirrorEditor(language) {
@@ -1,6 +1,6 @@
1
1
 
2
- .rs-config-provider[data-v-16401a38] {
3
- color: var(--rs-text);
2
+ .rs-config-provider[data-v-2be1193e] {
3
+ color: var(--rs-text-primary);
4
4
  background: var(--rs-bg);
5
5
  height: 100%;
6
6
  min-height: 0;
@@ -1,8 +1,10 @@
1
- import { type RsLocale } from '../../../locale/types';
1
+ import { type RsDirMode, type RsLocale } from '../../../locale/types';
2
2
  import type { RsComponentSize, RsRadius, RsThemeMode } from '../../../theme/types';
3
3
  type __VLS_Props = {
4
4
  theme?: RsThemeMode;
5
5
  locale?: RsLocale;
6
+ /** auto:跟 locale(ar / he 等为 rtl);也可强制 ltr / rtl */
7
+ dir?: RsDirMode;
6
8
  /** 全局默认控件尺寸:ssm 极小 / sm 小号 / md 中号 / lg 大号 */
7
9
  controlSize?: RsComponentSize;
8
10
  /**
@@ -11,18 +13,18 @@ type __VLS_Props = {
11
13
  */
12
14
  controlRadius?: RsRadius;
13
15
  /**
14
- * global:data-rs-theme 写到 document(默认,Portal 弹出层同步)
15
- * local:写到 Provider 根节点(子树隔离,业务 CSS 可 scoped 到 .rs-app-*)
16
+ * global:主题与 dir 写到 document(默认,Portal 弹出层同步)
17
+ * local:写到 Provider 根节点
16
18
  */
17
19
  themeScope?: 'global' | 'local';
18
20
  };
19
- declare var __VLS_1: {};
21
+ declare var __VLS_8: {};
20
22
  type __VLS_Slots = {} & {
21
- default?: (props: typeof __VLS_1) => any;
23
+ default?: (props: typeof __VLS_8) => any;
22
24
  };
23
25
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
26
+ dir: RsDirMode;
24
27
  theme: RsThemeMode;
25
- locale: RsLocale;
26
28
  controlSize: RsComponentSize;
27
29
  themeScope: "global" | "local";
28
30
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -1,13 +1,17 @@
1
- import { defaultLocale } from "../../../locale/types.js";
1
+ import { resolveHostLocale } from "../../../locale/resolve-host.js";
2
+ import { applyTheme, subscribePreferredColorScheme } from "../../../theme/apply.js";
2
3
  import { createRsConfigState, provideRsConfig } from "../../../composables/useRsConfig.js";
3
- import { applyTheme } from "../../../theme/apply.js";
4
- import { createElementBlock, defineComponent, openBlock, ref, renderSlot, watch } from "vue";
4
+ import { applyLocale, resolveDirMode } from "../../../locale/apply.js";
5
+ import { ConfigProvider } from "../../_shared/src/reka.js";
6
+ import { computed, createBlock, createElementVNode, defineComponent, onBeforeUnmount, openBlock, ref, renderSlot, unref, watch, withCtx } from "vue";
5
7
  //#region src/components/config-provider/src/RsConfigProvider.vue?vue&type=script&setup=true&lang.ts
6
8
  var RsConfigProvider_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
9
+ name: "RsConfigProvider",
7
10
  __name: "RsConfigProvider",
8
11
  props: {
9
12
  theme: { default: "light" },
10
- locale: { default: defaultLocale },
13
+ locale: {},
14
+ dir: { default: "auto" },
11
15
  controlSize: { default: "md" },
12
16
  controlRadius: {},
13
17
  themeScope: { default: "global" }
@@ -15,18 +19,39 @@ var RsConfigProvider_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
15
19
  setup(__props) {
16
20
  const props = __props;
17
21
  const rootEl = ref(null);
18
- const config = createRsConfigState(props.theme, props.locale, props.controlSize, props.controlRadius);
22
+ const config = createRsConfigState(props.theme, props.locale ?? resolveHostLocale(), props.controlSize, props.controlRadius, props.dir);
19
23
  provideRsConfig(config);
24
+ let stopPreferred;
25
+ function chromeTarget() {
26
+ if (typeof document === "undefined") return void 0;
27
+ if (props.themeScope === "local" && rootEl.value) return rootEl.value;
28
+ return document.documentElement;
29
+ }
20
30
  function syncTheme() {
21
- if (typeof document === "undefined") return;
22
- const el = props.themeScope === "local" && rootEl.value ? rootEl.value : document.documentElement;
31
+ const el = chromeTarget();
32
+ if (!el) return;
23
33
  applyTheme(config.theme.value, el);
34
+ config.syncResolvedTheme();
35
+ }
36
+ function syncLocale() {
37
+ const el = chromeTarget();
38
+ if (!el) return;
39
+ applyLocale(config.locale.value, config.dir.value, el);
40
+ }
41
+ function bindPreferredListener(mode) {
42
+ stopPreferred?.();
43
+ stopPreferred = void 0;
44
+ if (mode !== "system") return;
45
+ stopPreferred = subscribePreferredColorScheme(syncTheme);
24
46
  }
25
47
  watch(() => props.theme, (value) => {
26
48
  if (value !== config.theme.value) config.setTheme(value);
27
49
  });
28
50
  watch(() => props.locale, (value) => {
29
- if (value !== config.locale.value) config.setLocale(value);
51
+ if (value != null && value !== config.locale.value) config.setLocale(value);
52
+ });
53
+ watch(() => props.dir, (value) => {
54
+ if (value !== config.dir.value) config.setDir(value);
30
55
  });
31
56
  watch(() => props.controlSize, (value) => {
32
57
  if (value && value !== config.controlSize.value) config.setControlSize(value);
@@ -34,14 +59,38 @@ var RsConfigProvider_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
34
59
  watch(() => props.controlRadius, (value) => {
35
60
  if (value !== config.controlRadius.value) config.setControlRadius(value);
36
61
  });
37
- watch(() => config.theme.value, syncTheme, { immediate: true });
38
- watch(() => props.themeScope, syncTheme);
62
+ watch(() => config.theme.value, (mode) => {
63
+ syncTheme();
64
+ bindPreferredListener(mode);
65
+ }, { immediate: true });
66
+ watch([() => config.locale.value, () => config.dir.value], syncLocale, { immediate: true });
67
+ watch(() => props.themeScope, () => {
68
+ syncTheme();
69
+ syncLocale();
70
+ });
71
+ watch(rootEl, () => {
72
+ if (props.themeScope === "local") {
73
+ syncTheme();
74
+ syncLocale();
75
+ }
76
+ });
77
+ const resolvedDir = computed(() => resolveDirMode(config.dir.value, config.locale.value));
78
+ const rekaLocale = computed(() => config.locale.value);
79
+ onBeforeUnmount(() => {
80
+ stopPreferred?.();
81
+ });
39
82
  return (_ctx, _cache) => {
40
- return openBlock(), createElementBlock("div", {
41
- ref_key: "rootEl",
42
- ref: rootEl,
43
- class: "rs-config-provider"
44
- }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 512);
83
+ return openBlock(), createBlock(unref(ConfigProvider), {
84
+ dir: resolvedDir.value,
85
+ locale: rekaLocale.value
86
+ }, {
87
+ default: withCtx(() => [createElementVNode("div", {
88
+ ref_key: "rootEl",
89
+ ref: rootEl,
90
+ class: "rs-config-provider"
91
+ }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 512)]),
92
+ _: 3
93
+ }, 8, ["dir", "locale"]);
45
94
  };
46
95
  }
47
96
  });
@@ -3,6 +3,6 @@ import RsConfigProvider_vue_vue_type_script_setup_true_lang_default from "./RsCo
3
3
 
4
4
  import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_export-helper.js";
5
5
  //#region src/components/config-provider/src/RsConfigProvider.vue
6
- var RsConfigProvider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsConfigProvider_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-16401a38"]]);
6
+ var RsConfigProvider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsConfigProvider_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-2be1193e"]]);
7
7
  //#endregion
8
8
  export { RsConfigProvider_default as default };
@@ -90,7 +90,7 @@ to {
90
90
  /* 键盘快捷键 */
91
91
  .rs-context-menu__shortcut {
92
92
  flex-shrink: 0;
93
- margin-left: 16px;
93
+ margin-inline-start: 16px;
94
94
  font-size: var(--rs-font-size-xs);
95
95
  font-weight: var(--rs-font-weight-regular);
96
96
  color: var(--rs-ctx-shortcut);
@@ -101,7 +101,7 @@ to {
101
101
  /* 子菜单展开箭头 */
102
102
  .rs-context-menu__arrow {
103
103
  flex-shrink: 0;
104
- margin-left: 6px;
104
+ margin-inline-start: 6px;
105
105
  color: var(--rs-ctx-icon);
106
106
  }
107
107
 
@@ -1,5 +1,5 @@
1
- import RsIcon_default from "../../icon/src/RsIcon.js";
2
1
  import { ContextMenuItem, ContextMenuPortal, ContextMenuSeparator, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger } from "../../_shared/src/reka.js";
2
+ import RsIcon_default from "../../icon/src/RsIcon.js";
3
3
  import RsContextMenuItems_default from "./RsContextMenuItems.js";
4
4
  import { Fragment, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, normalizeClass, openBlock, renderList, toDisplayString, unref, withCtx } from "vue";
5
5
  //#region src/components/context-menu/src/RsContextMenuItems.vue?vue&type=script&setup=true&lang.ts
@@ -1,8 +1,8 @@
1
1
 
2
- .rs-date-picker[data-v-82aed16d] {
2
+ .rs-date-picker[data-v-816760df] {
3
3
  width: 100%;
4
4
  }
5
- .rs-date-picker__trigger[data-v-82aed16d] {
5
+ .rs-date-picker__trigger[data-v-816760df] {
6
6
  display: inline-flex;
7
7
  align-items: center;
8
8
  justify-content: space-between;
@@ -19,7 +19,7 @@
19
19
  font: inherit;
20
20
  font-size: var(--rs-font-size-sm);
21
21
  line-height: var(--rs-line-height-tight);
22
- text-align: left;
22
+ text-align: start;
23
23
  cursor: pointer;
24
24
  outline: none;
25
25
  box-shadow: var(--rs-input-shadow, none);
@@ -28,28 +28,28 @@
28
28
  box-shadow var(--rs-transition-fast),
29
29
  background var(--rs-transition-fast);
30
30
  }
31
- .rs-date-picker--ssm .rs-date-picker__trigger[data-v-82aed16d] {
31
+ .rs-date-picker--ssm .rs-date-picker__trigger[data-v-816760df] {
32
32
  height: var(--rs-control-height-ssm);
33
33
  min-height: var(--rs-control-height-ssm);
34
34
  padding: 0 var(--rs-space-xs);
35
35
  font-size: var(--rs-font-size-xs);
36
36
  }
37
- .rs-date-picker--sm .rs-date-picker__trigger[data-v-82aed16d] {
37
+ .rs-date-picker--sm .rs-date-picker__trigger[data-v-816760df] {
38
38
  height: var(--rs-control-height-sm);
39
39
  min-height: var(--rs-control-height-sm);
40
40
  padding: 0 var(--rs-space-sm);
41
41
  font-size: var(--rs-font-size-xs);
42
42
  }
43
- .rs-date-picker--lg .rs-date-picker__trigger[data-v-82aed16d] {
43
+ .rs-date-picker--lg .rs-date-picker__trigger[data-v-816760df] {
44
44
  height: var(--rs-control-height-lg);
45
45
  min-height: var(--rs-control-height-lg);
46
46
  padding: 0 var(--rs-space-lg);
47
47
  font-size: var(--rs-font-size-base);
48
48
  }
49
- .rs-date-picker__trigger[data-v-82aed16d]:hover:not(:disabled) {
49
+ .rs-date-picker__trigger[data-v-816760df]:hover:not(:disabled) {
50
50
  border-color: var(--rs-input-border-hover, var(--rs-border));
51
51
  }
52
- .rs-date-picker__trigger[data-v-82aed16d]:focus-visible {
52
+ .rs-date-picker__trigger[data-v-816760df]:focus-visible {
53
53
  outline: none;
54
54
  border-color: var(--rs-focus-border, var(--rs-primary));
55
55
  background: var(--rs-input-bg);
@@ -57,42 +57,42 @@
57
57
  var(--rs-input-shadow, none),
58
58
  0 0 0 var(--rs-focus-ring-width, 2px) var(--rs-focus-ring);
59
59
  }
60
- .rs-date-picker__trigger[data-v-82aed16d]:disabled {
60
+ .rs-date-picker__trigger[data-v-816760df]:disabled {
61
61
  opacity: 0.38;
62
62
  cursor: not-allowed;
63
63
  }
64
- .rs-date-picker__trigger--placeholder .rs-date-picker__value[data-v-82aed16d] {
64
+ .rs-date-picker__trigger--placeholder .rs-date-picker__value[data-v-816760df] {
65
65
  color: var(--rs-placeholder);
66
66
  }
67
- .rs-date-picker__trigger--invalid[data-v-82aed16d] {
67
+ .rs-date-picker__trigger--invalid[data-v-816760df] {
68
68
  border-color: var(--rs-danger, var(--rs-color-danger, #dc2626));
69
69
  }
70
- .rs-date-picker__trigger--invalid[data-v-82aed16d]:focus-visible {
70
+ .rs-date-picker__trigger--invalid[data-v-816760df]:focus-visible {
71
71
  border-color: var(--rs-danger, var(--rs-color-danger, #dc2626));
72
72
  box-shadow:
73
73
  var(--rs-input-shadow, none),
74
74
  0 0 0 var(--rs-focus-ring-width, 2px)
75
75
  color-mix(in srgb, var(--rs-danger, #dc2626) 14%, transparent);
76
76
  }
77
- .rs-date-picker-field__error[data-v-82aed16d] {
77
+ .rs-date-picker-field__error[data-v-816760df] {
78
78
  margin: var(--rs-space-xs) 0 0;
79
79
  color: var(--rs-danger, var(--rs-color-danger, #dc2626));
80
80
  font-size: var(--rs-font-size-xs);
81
81
  line-height: var(--rs-line-height-tight);
82
82
  }
83
- .rs-date-picker__leading[data-v-82aed16d] {
83
+ .rs-date-picker__leading[data-v-816760df] {
84
84
  display: inline-flex;
85
85
  min-width: 0;
86
86
  flex: 1;
87
87
  align-items: center;
88
88
  gap: var(--rs-space-sm);
89
89
  }
90
- .rs-date-picker__icon[data-v-82aed16d],
91
- .rs-date-picker__chevron[data-v-82aed16d] {
90
+ .rs-date-picker__icon[data-v-816760df],
91
+ .rs-date-picker__chevron[data-v-816760df] {
92
92
  flex-shrink: 0;
93
93
  color: var(--rs-muted);
94
94
  }
95
- .rs-date-picker__value[data-v-82aed16d] {
95
+ .rs-date-picker__value[data-v-816760df] {
96
96
  min-width: 0;
97
97
  overflow: hidden;
98
98
  text-overflow: ellipsis;
@@ -1,10 +1,10 @@
1
+ import { RS_COMPONENT_SIZE_ICON_PX } from "../../../theme/types.js";
2
+ import { PopoverContent, PopoverPortal, PopoverRoot, PopoverTrigger } from "../../_shared/src/reka.js";
1
3
  import { useRsI18n } from "../../../composables/useRsI18n.js";
2
4
  import RsIcon_default from "../../icon/src/RsIcon.js";
3
- import { RS_COMPONENT_SIZE_ICON_PX } from "../../../theme/types.js";
4
5
  import { buildLocalInputRules, runFormFieldRules } from "../../form/src/form-rules.js";
5
6
  import { isRsFormItemBoundControl, useRsFormContext, useRsFormField, useRsFormItemContext } from "../../form/src/form-utils.js";
6
7
  import { useResolvedRsComponentSize } from "../../_shared/src/resolve-size.js";
7
- import { PopoverContent, PopoverPortal, PopoverRoot, PopoverTrigger } from "../../_shared/src/reka.js";
8
8
  import { EMPTY_DATE_RANGE, compareDates, extractTimeFromDateTime, formatDateDisplay, formatDateParts, formatDateRangeLabel, formatDateTimeDisplay, formatDateTimeParts, formatDateTimeRangeLabel, formatTimestampValue, fromInternalPickerValue, getNextMonth, getNowDateTime, getTodayDate, isDateRangeEmpty, isDateRangeOrdered, isDateWithinBounds, isTimestampRange, normalizeShortcutValue, parseDateTimeValue, parseDateValue, parseTimestampValue, toInternalPickerValue, toRangeEndpointString } from "./date-picker-utils.js";
9
9
  import RsCalendarGrid_default from "../../calendar-grid/src/RsCalendarGrid.js";
10
10
  import { formatTimeParts } from "../../time-picker/src/time-picker-utils.js";
@@ -5,6 +5,6 @@ import RsDatePicker_vue_vue_type_script_setup_true_lang_default from "./RsDatePi
5
5
 
6
6
 
7
7
  //#region src/components/date-picker/src/RsDatePicker.vue
8
- var RsDatePicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsDatePicker_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-82aed16d"]]);
8
+ var RsDatePicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsDatePicker_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-816760df"]]);
9
9
  //#endregion
10
10
  export { RsDatePicker_default as default };
@@ -1,6 +1,6 @@
1
+ import { AlertDialogContent, AlertDialogDescription, AlertDialogOverlay, AlertDialogPortal, AlertDialogRoot, AlertDialogTitle } from "../../_shared/src/reka.js";
1
2
  import { useRsI18n } from "../../../composables/useRsI18n.js";
2
3
  import RsButton_default from "../../button/src/RsButton.js";
3
- import { AlertDialogContent, AlertDialogDescription, AlertDialogOverlay, AlertDialogPortal, AlertDialogRoot, AlertDialogTitle } from "../../_shared/src/reka.js";
4
4
  import { isRsDialogWidthPreset, resolveDialogOverlayStyle, resolveRsDialogCssWidth, runRsConfirmBeforeClose } from "./dialog-utils.js";
5
5
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeModels, normalizeClass, normalizeStyle, openBlock, renderSlot, resolveDynamicComponent, toDisplayString, unref, useModel, withCtx } from "vue";
6
6
  //#region src/components/dialog/src/RsConfirmDialog.vue?vue&type=script&setup=true&lang.ts
@@ -246,8 +246,7 @@ to {
246
246
  }
247
247
  .rs-dialog__resize-handle--n,
248
248
  .rs-dialog__resize-handle--s {
249
- left: 0.5rem;
250
- right: 0.5rem;
249
+ inset-inline: 0.5rem;
251
250
  height: 0.5rem;
252
251
  cursor: ns-resize;
253
252
  }
@@ -1,6 +1,6 @@
1
+ import { DialogContent, DialogDescription, DialogOverlay, DialogPortal, DialogRoot, DialogTitle } from "../../_shared/src/reka.js";
1
2
  import { useRsI18n } from "../../../composables/useRsI18n.js";
2
3
  import RsButton_default from "../../button/src/RsButton.js";
3
- import { DialogContent, DialogDescription, DialogOverlay, DialogPortal, DialogRoot, DialogTitle } from "../../_shared/src/reka.js";
4
4
  import { dialogViewportSize } from "./dialog-viewport.js";
5
5
  import { isRsDialogWidthPreset, resolveDialogOverlayStyle, resolveRsDialogCssWidth, resolveRsDialogWidthPx, runRsDialogBeforeClose } from "./dialog-utils.js";
6
6
  import { useRsDialogWindow } from "./dialog-window.js";
@@ -1,51 +1,51 @@
1
1
 
2
- .rs-divider[data-v-b8b44303] {
2
+ .rs-divider[data-v-f0cd895b] {
3
3
  flex-shrink: 0;
4
4
  box-sizing: border-box;
5
5
  border: 0;
6
6
  background: transparent;
7
7
  }
8
- .rs-divider--horizontal[data-v-b8b44303] {
8
+ .rs-divider--horizontal[data-v-f0cd895b] {
9
9
  display: flex;
10
10
  align-items: center;
11
11
  width: 100%;
12
12
  margin: var(--rs-space-md) 0;
13
13
  }
14
- .rs-divider--horizontal[data-v-b8b44303]:not(.rs-divider--with-label)::before {
14
+ .rs-divider--horizontal[data-v-f0cd895b]:not(.rs-divider--with-label)::before {
15
15
  content: '';
16
16
  display: block;
17
17
  width: 100%;
18
18
  border-top: 1px solid var(--rs-border);
19
19
  }
20
- .rs-divider--horizontal.rs-divider--dashed[data-v-b8b44303]:not(.rs-divider--with-label)::before {
20
+ .rs-divider--horizontal.rs-divider--dashed[data-v-f0cd895b]:not(.rs-divider--with-label)::before {
21
21
  border-top-style: dashed;
22
22
  }
23
- .rs-divider--horizontal.rs-divider--with-label[data-v-b8b44303]::before,
24
- .rs-divider--horizontal.rs-divider--with-label[data-v-b8b44303]::after {
23
+ .rs-divider--horizontal.rs-divider--with-label[data-v-f0cd895b]::before,
24
+ .rs-divider--horizontal.rs-divider--with-label[data-v-f0cd895b]::after {
25
25
  content: '';
26
26
  flex: 1 1 auto;
27
27
  border-top: 1px solid var(--rs-border);
28
28
  }
29
- .rs-divider--horizontal.rs-divider--dashed.rs-divider--with-label[data-v-b8b44303]::before,
30
- .rs-divider--horizontal.rs-divider--dashed.rs-divider--with-label[data-v-b8b44303]::after {
29
+ .rs-divider--horizontal.rs-divider--dashed.rs-divider--with-label[data-v-f0cd895b]::before,
30
+ .rs-divider--horizontal.rs-divider--dashed.rs-divider--with-label[data-v-f0cd895b]::after {
31
31
  border-top-style: dashed;
32
32
  }
33
- .rs-divider__label[data-v-b8b44303] {
33
+ .rs-divider__label[data-v-f0cd895b] {
34
34
  flex-shrink: 0;
35
35
  padding: 0 var(--rs-space-md);
36
36
  font-size: var(--rs-font-size-xs);
37
37
  color: var(--rs-muted);
38
38
  white-space: nowrap;
39
39
  }
40
- .rs-divider--vertical[data-v-b8b44303] {
40
+ .rs-divider--vertical[data-v-f0cd895b] {
41
41
  display: inline-block;
42
42
  align-self: stretch;
43
43
  width: 0;
44
44
  min-height: 1em;
45
45
  margin: 0 var(--rs-space-md);
46
- border-left: 1px solid var(--rs-border);
46
+ border-inline-start: 1px solid var(--rs-border);
47
47
  vertical-align: middle;
48
48
  }
49
- .rs-divider--vertical.rs-divider--dashed[data-v-b8b44303] {
50
- border-left-style: dashed;
49
+ .rs-divider--vertical.rs-divider--dashed[data-v-f0cd895b] {
50
+ border-inline-start-style: dashed;
51
51
  }
@@ -3,6 +3,6 @@ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_exp
3
3
  import RsDivider_vue_vue_type_script_setup_true_lang_default from "./RsDivider.impl.js";
4
4
 
5
5
  //#region src/components/divider/src/RsDivider.vue
6
- var RsDivider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsDivider_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-b8b44303"]]);
6
+ var RsDivider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsDivider_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-f0cd895b"]]);
7
7
  //#endregion
8
8
  export { RsDivider_default as default };
@@ -59,8 +59,7 @@
59
59
  }
60
60
  .rs-drawer__content--top > .rs-drawer__resize,
61
61
  .rs-drawer__content--bottom > .rs-drawer__resize {
62
- left: 0;
63
- right: 0;
62
+ inset-inline: 0;
64
63
  height: 6px;
65
64
  cursor: ns-resize;
66
65
  }
@@ -122,8 +121,7 @@
122
121
  }
123
122
  .rs-drawer__content--top,
124
123
  .rs-drawer__content--bottom {
125
- left: 0;
126
- right: 0;
124
+ inset-inline: 0;
127
125
  height: min(100vh, var(--rs-drawer-panel-size, 22rem));
128
126
  }
129
127
  .rs-drawer__content--contained:is(.rs-drawer__content--top, .rs-drawer__content--bottom) {
@@ -1,6 +1,6 @@
1
+ import { DialogContent, DialogDescription, DialogOverlay, DialogPortal, DialogRoot, DialogTitle } from "../../_shared/src/reka.js";
1
2
  import { useRsI18n } from "../../../composables/useRsI18n.js";
2
3
  import RsButton_default from "../../button/src/RsButton.js";
3
- import { DialogContent, DialogDescription, DialogOverlay, DialogPortal, DialogRoot, DialogTitle } from "../../_shared/src/reka.js";
4
4
  import { RS_DRAWER_MAX_VIEWPORT_RATIO, clampRsDrawerSize, resolveDrawerOverlayStyle, resolveRsDrawerDimensionCss, resolveRsDrawerSizeCss, resolveRsDrawerSizePx, runRsDrawerBeforeClose } from "./drawer-utils.js";
5
5
  import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeModels, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, openBlock, ref, renderSlot, toDisplayString, unref, useModel, watch, withCtx } from "vue";
6
6
  //#region src/components/drawer/src/RsDrawer.vue?vue&type=script&setup=true&lang.ts
@@ -65,7 +65,7 @@
65
65
  .rs-dropdown__value {
66
66
  flex: 1;
67
67
  min-width: 0;
68
- text-align: left;
68
+ text-align: start;
69
69
  }
70
70
  .rs-dropdown__label {
71
71
  display: block;
@@ -111,7 +111,7 @@
111
111
  top: -0.55em;
112
112
  margin-bottom: 0.125rem;
113
113
  padding: 0 0.375rem;
114
- margin-left: var(--rs-space-md);
114
+ margin-inline-start: var(--rs-space-md);
115
115
  width: fit-content;
116
116
  max-width: calc(100% - var(--rs-space-md) * 2);
117
117
  background: var(--rs-surface-elevated);
@@ -1,6 +1,6 @@
1
+ import { DropdownMenuContent, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRoot, DropdownMenuTrigger } from "../../_shared/src/reka.js";
1
2
  import { useRsI18n } from "../../../composables/useRsI18n.js";
2
3
  import RsIcon_default from "../../icon/src/RsIcon.js";
3
- import { DropdownMenuContent, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRoot, DropdownMenuTrigger } from "../../_shared/src/reka.js";
4
4
  import { flattenDropdownItems } from "./dropdown-utils.js";
5
5
  import RsDropdownItems_default from "./RsDropdownItems.js";
6
6
  import { computed, createBlock, createElementVNode, createVNode, defineComponent, mergeModels, normalizeClass, openBlock, renderSlot, toDisplayString, unref, useModel, withCtx } from "vue";
@@ -1,5 +1,5 @@
1
- import RsIcon_default from "../../icon/src/RsIcon.js";
2
1
  import { RS_COMPONENT_SIZE_ICON_PX } from "../../../theme/types.js";
2
+ import RsIcon_default from "../../icon/src/RsIcon.js";
3
3
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, openBlock, toDisplayString } from "vue";
4
4
  //#region src/components/dropdown/src/RsDropdownItemView.vue?vue&type=script&setup=true&lang.ts
5
5
  var _hoisted_1 = { class: "rs-dropdown__item-copy" };