niuma-ui 2.0.9 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -6,6 +6,15 @@
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [2.1.0] - 2026-09-22
10
+
11
+ ### 变更
12
+
13
+ - 去掉 `reka-ui`。`RsConfigProvider` 不再包一层 Reka `ConfigProvider`。`theme` / `locale` / `dir` / `controlSize` / `controlRadius` / `themeScope` 语义不变;语言和书写方向仍由 `applyLocale` 写到 `document` 或 Provider 根节点。
14
+ - 文档站版本改为读取 `package.json`。推送 `v*` 标签时与 npm 发布同一提交重新部署 GitHub Pages。
15
+ - `RsButton` 轮廓描边改跟 `--rs-input-border`。亮色不再用 `#6e6e73`,暗色不再用 `#a3a3a3`。
16
+ - `RsButton`:未传 `bordered` 回到 `false`(与 2.0.3 之前一致)。要描边须显式传 `bordered`。
17
+
9
18
  ## [2.0.9] - 2026-09-22
10
19
 
11
20
  ### 变更
package/NOTICE CHANGED
@@ -17,7 +17,6 @@ Versions below are typical; the lockfile is authoritative.
17
17
  | Project / 项目 | Typical license / 常见许可证 | Use / 用途 |
18
18
  |----------------|------------------------------|------------|
19
19
  | Vue | MIT | peer framework |
20
- | Reka UI | MIT | accessible primitives |
21
20
  | Lucide (@lucide/vue) | ISC | default icons |
22
21
  | Monaco Editor | MIT | RsMonacoEditor |
23
22
  | CodeMirror | MIT | RsCodeEditor |
package/README.md CHANGED
@@ -18,7 +18,7 @@ Built for ops consoles, database workbenches, and internal admin UIs. Marketing
18
18
  - **Design tokens** — light / dark / system via `data-rs-theme` and CSS variables; hosts override a brand layer
19
19
  - **Rs\* components** — Button, Form, Dialog, Table, Tree, Tabs, Anchor, and more
20
20
  - **Tooling** — Monaco, CodeMirror, xterm (import only on routes that need them)
21
- - **Accessibility** — [Reka UI](https://reka-ui.com/) underneath; apps depend only on `niuma-ui`
21
+ - **Accessibility** — native controls and ARIA; apps depend only on `niuma-ui`
22
22
  - **i18n** — omitted `locale` follows the host language (`zh*` → `zh-CN`, `en*` → `en-US`); unknown tags fall back to `zh-CN`. Extra languages: `registerRsLocale` ([guide](./docs/locales.en.md))
23
23
  - **Vite** — `import { RsButton } from 'niuma-ui'` is enough to bundle; `niumaUiHost` is local `pnpm dev` HMR only
24
24
 
@@ -71,7 +71,7 @@ Omit `locale` to follow the host language. Chinese systems stay on `zh-CN`. Comm
71
71
 
72
72
  ## Usage
73
73
 
74
- 1. Named-import from the package root only. **Do not** depend on `reka-ui`. Do not `import *`.
74
+ 1. Named-import from the package root only. Do not `import *`.
75
75
  2. Import `niuma-ui/styles.css` once, then your brand CSS.
76
76
  3. Wrap the app with `RsConfigProvider` (theme, locale, default control size).
77
77
  4. Light sites re-export used symbols from their own `ui.ts`. Do not alias the package to this repo’s `src/index.ts`.
@@ -116,7 +116,7 @@ Stable publishes set npm dist-tag **`latest`**; prereleases use **`next`**. Ther
116
116
 
117
117
  [Apache License 2.0](./LICENSE). Attribution: [NOTICE](./NOTICE).
118
118
 
119
- Primitives: [Reka UI](https://reka-ui.com/). Icons: [Lucide](https://lucide.dev/). Editors: [Monaco](https://microsoft.github.io/monaco-editor/), [CodeMirror](https://codemirror.net/). Terminal: [xterm.js](https://xtermjs.org/).
119
+ Icons: [Lucide](https://lucide.dev/). Editors: [Monaco](https://microsoft.github.io/monaco-editor/), [CodeMirror](https://codemirror.net/). Terminal: [xterm.js](https://xtermjs.org/).
120
120
 
121
121
  - Docs: https://blair-shang.github.io/niuma-ui/
122
122
  - npm: https://www.npmjs.com/package/niuma-ui
package/README.zh-CN.md CHANGED
@@ -18,7 +18,7 @@ Vue 3 **工作台**设计系统:一致的 `Rs*` 组件与 `--rs-*` Token,以
18
18
  - **Design Token**:明暗主题走 `data-rs-theme`(`light` / `dark` / `system`)与 CSS 变量,宿主用品牌层覆盖
19
19
  - **Rs\* 组件**:Button、Form、Dialog、Table、Tree、Tabs、Anchor 等
20
20
  - **专业工具**:Monaco、CodeMirror、xterm(只在用到的路由引入)
21
- - **无障碍**:底层 [Reka UI](https://reka-ui.com/),应用只依赖 `niuma-ui`
21
+ - **无障碍**:原生控件与 ARIA,应用只依赖 `niuma-ui`
22
22
  - **国际化**:未设 `locale` 时跟本机语言(中文系统就是 `zh-CN`);认不出回退中文。第三方语言用 `registerRsLocale`,见 [docs/locales.md](./docs/locales.md)
23
23
  - **Vite**:`import { RsButton } from 'niuma-ui'` 即可打包;`niumaUiHost` 仅本机 `pnpm dev` 联调源码
24
24
 
@@ -71,7 +71,7 @@ import { RsConfigProvider, RsButton } from 'niuma-ui'
71
71
 
72
72
  ## 使用约定
73
73
 
74
- 1. 只从包根具名导入:`import { RsButton } from 'niuma-ui'`。**不要**直接依赖 `reka-ui`,不要 `import *`。
74
+ 1. 只从包根具名导入:`import { RsButton } from 'niuma-ui'`。不要 `import *`。
75
75
  2. 样式只引一次 `niuma-ui/styles.css`,再加载你的品牌 CSS。
76
76
  3. 根节点包 `RsConfigProvider`(主题、语言、默认控件尺寸)。
77
77
  4. 轻量站点在自己的 `ui.ts` 里再导出用到的符号。不要把包名别名到本仓库的 `src/index.ts`。
@@ -122,7 +122,7 @@ pnpm build # 库 → dist/
122
122
 
123
123
  [Apache License 2.0](./LICENSE)。版权与第三方声明见 [NOTICE](./NOTICE)。
124
124
 
125
- 交互原语:[Reka UI](https://reka-ui.com/)。图标:[Lucide](https://lucide.dev/)。编辑器:[Monaco](https://microsoft.github.io/monaco-editor/)、[CodeMirror](https://codemirror.net/)。终端:[xterm.js](https://xtermjs.org/)。
125
+ 图标:[Lucide](https://lucide.dev/)。编辑器:[Monaco](https://microsoft.github.io/monaco-editor/)、[CodeMirror](https://codemirror.net/)。终端:[xterm.js](https://xtermjs.org/)。
126
126
 
127
127
  - 文档站:https://blair-shang.github.io/niuma-ui/
128
128
  - npm:https://www.npmjs.com/package/niuma-ui
@@ -1,5 +1,5 @@
1
1
 
2
- .rs-btn[data-v-423f0a90] {
2
+ .rs-btn[data-v-8974aec3] {
3
3
  position: relative;
4
4
  display: inline-flex;
5
5
  align-items: center;
@@ -23,127 +23,122 @@
23
23
  padding var(--rs-transition-normal),
24
24
  gap var(--rs-transition-normal);
25
25
  }
26
- .rs-btn--ssm[data-v-423f0a90] {
26
+ .rs-btn--ssm[data-v-8974aec3] {
27
27
  min-height: var(--rs-control-height-ssm);
28
28
  padding: 0 var(--rs-space-xs);
29
29
  font-size: var(--rs-font-size-xs);
30
30
  gap: var(--rs-space-xs);
31
31
  }
32
- .rs-btn--sm[data-v-423f0a90] {
32
+ .rs-btn--sm[data-v-8974aec3] {
33
33
  min-height: var(--rs-control-height-sm);
34
34
  padding: 0 var(--rs-space-sm);
35
35
  font-size: var(--rs-font-size-xs);
36
36
  gap: var(--rs-space-xs);
37
37
  }
38
- .rs-btn--lg[data-v-423f0a90] {
38
+ .rs-btn--lg[data-v-8974aec3] {
39
39
  min-height: var(--rs-control-height-lg);
40
40
  padding: 0 var(--rs-space-xl);
41
41
  font-size: var(--rs-font-size-base);
42
42
  }
43
- .rs-btn[data-v-423f0a90]:disabled {
43
+ .rs-btn[data-v-8974aec3]:disabled {
44
44
  opacity: 0.38;
45
45
  cursor: not-allowed;
46
46
  }
47
- .rs-btn--loading[data-v-423f0a90] {
47
+ .rs-btn--loading[data-v-8974aec3] {
48
48
  pointer-events: none;
49
49
  cursor: wait;
50
50
  transition: none;
51
51
  }
52
52
  /* loading 时不使用 disabled,避免部分浏览器暂停子元素 CSS 动画 */
53
- .rs-btn--loading[data-v-423f0a90]:disabled {
53
+ .rs-btn--loading[data-v-8974aec3]:disabled {
54
54
  opacity: 1;
55
55
  cursor: wait;
56
56
  }
57
- .rs-btn--loading.rs-btn--default[data-v-423f0a90] {
57
+ .rs-btn--loading.rs-btn--default[data-v-8974aec3] {
58
58
  color: var(--rs-text);
59
59
  border-color: var(--rs-border);
60
60
  background: var(--rs-surface);
61
61
  }
62
- .rs-btn--loading.rs-btn--default[data-v-423f0a90]:not(.rs-btn--tone-neutral) {
62
+ .rs-btn--loading.rs-btn--default[data-v-8974aec3]:not(.rs-btn--tone-neutral) {
63
63
  color: var(--rs-btn-tone-on-container);
64
64
  border-color: color-mix(in srgb, var(--rs-btn-tone) 42%, var(--rs-border));
65
65
  background: var(--rs-btn-tone-container);
66
66
  }
67
- .rs-btn--loading.rs-btn--ghost[data-v-423f0a90],
68
- .rs-btn--loading.rs-btn--text[data-v-423f0a90] {
67
+ .rs-btn--loading.rs-btn--ghost[data-v-8974aec3],
68
+ .rs-btn--loading.rs-btn--text[data-v-8974aec3] {
69
69
  color: var(--rs-btn-tone, var(--rs-text));
70
70
  background: var(--rs-surface-hover);
71
71
  }
72
- .rs-btn[data-v-423f0a90]:focus-visible {
72
+ .rs-btn[data-v-8974aec3]:focus-visible {
73
73
  outline: none;
74
74
  box-shadow: 0 0 0 var(--rs-focus-ring-width, 2px) var(--rs-focus-ring);
75
75
  }
76
- .rs-btn--icon-only[data-v-423f0a90] {
76
+ .rs-btn--icon-only[data-v-8974aec3] {
77
77
  padding: 0;
78
78
  min-width: var(--rs-control-height-md);
79
79
  }
80
- .rs-btn--icon-only.rs-btn--ssm[data-v-423f0a90] {
80
+ .rs-btn--icon-only.rs-btn--ssm[data-v-8974aec3] {
81
81
  min-width: var(--rs-control-height-ssm);
82
82
  }
83
- .rs-btn--icon-only.rs-btn--sm[data-v-423f0a90] {
83
+ .rs-btn--icon-only.rs-btn--sm[data-v-8974aec3] {
84
84
  min-width: var(--rs-control-height-sm);
85
85
  }
86
- .rs-btn--icon-only.rs-btn--lg[data-v-423f0a90] {
86
+ .rs-btn--icon-only.rs-btn--lg[data-v-8974aec3] {
87
87
  min-width: var(--rs-control-height-lg);
88
88
  }
89
- .rs-btn--primary[data-v-423f0a90] {
89
+ .rs-btn--primary[data-v-8974aec3] {
90
90
  background: var(--rs-primary);
91
91
  color: var(--rs-primary-foreground);
92
92
  box-shadow: var(--rs-shadow-sm);
93
93
  }
94
- .rs-btn--primary[data-v-423f0a90]:hover:not(:disabled) {
94
+ .rs-btn--primary[data-v-8974aec3]:hover:not(:disabled) {
95
95
  background: var(--rs-primary-hover);
96
96
  box-shadow: var(--rs-shadow);
97
97
  }
98
- .rs-btn--primary[data-v-423f0a90]:active:not(:disabled) {
98
+ .rs-btn--primary[data-v-8974aec3]:active:not(:disabled) {
99
99
  box-shadow: none;
100
100
  }
101
- .rs-btn--default[data-v-423f0a90] {
101
+ .rs-btn--default[data-v-8974aec3] {
102
102
  border: 1px solid var(--rs-btn-outline-border, var(--rs-border));
103
103
  background: var(--rs-btn-secondary-bg, var(--rs-surface-hover));
104
104
  color: var(--rs-text);
105
105
  box-shadow: none;
106
106
  }
107
- .rs-btn--default[data-v-423f0a90]:hover:not(:disabled) {
107
+ .rs-btn--default[data-v-8974aec3]:hover:not(:disabled) {
108
108
  color: var(--rs-primary);
109
109
  border-color: var(--rs-primary);
110
110
  background: var(--rs-btn-secondary-bg-hover, var(--rs-primary-container));
111
111
  }
112
- .rs-btn--default[data-v-423f0a90]:active:not(:disabled) {
112
+ .rs-btn--default[data-v-8974aec3]:active:not(:disabled) {
113
113
  color: var(--rs-primary-hover);
114
114
  border-color: var(--rs-primary-hover);
115
115
  background: var(--rs-btn-secondary-bg-active, var(--rs-primary-container));
116
116
  }
117
- .rs-btn--ghost[data-v-423f0a90] {
117
+ .rs-btn--ghost[data-v-8974aec3] {
118
118
  background: transparent;
119
119
  border: 1px solid var(--rs-btn-outline-border, var(--rs-border));
120
120
  color: var(--rs-btn-tone, var(--rs-text));
121
121
  }
122
- .rs-btn--ghost[data-v-423f0a90]:hover:not(:disabled) {
122
+ .rs-btn--ghost[data-v-8974aec3]:hover:not(:disabled) {
123
123
  background: var(--rs-surface-hover);
124
124
  border-color: var(--rs-btn-outline-border, var(--rs-border));
125
125
  color: var(--rs-btn-tone-hover, var(--rs-btn-tone, var(--rs-text)));
126
126
  }
127
- .rs-btn--ghost[data-v-423f0a90]:active:not(:disabled) {
127
+ .rs-btn--ghost[data-v-8974aec3]:active:not(:disabled) {
128
128
  background: color-mix(in srgb, var(--rs-btn-tone, var(--rs-text)) 12%, var(--rs-surface-hover));
129
129
  }
130
- .rs-btn--borderless[data-v-423f0a90],
131
- .rs-btn--borderless[data-v-423f0a90]:hover:not(:disabled),
132
- .rs-btn--borderless[data-v-423f0a90]:active:not(:disabled) {
133
- border-color: transparent;
134
- }
135
- .rs-btn--danger[data-v-423f0a90] {
130
+ .rs-btn--danger[data-v-8974aec3] {
136
131
  background: var(--rs-danger-container);
137
132
  border-color: color-mix(in srgb, var(--rs-danger) 30%, transparent);
138
133
  color: var(--rs-on-danger-container);
139
134
  }
140
- .rs-btn--danger[data-v-423f0a90]:hover:not(:disabled) {
135
+ .rs-btn--danger[data-v-8974aec3]:hover:not(:disabled) {
141
136
  border-color: var(--rs-danger);
142
137
  background: color-mix(in srgb, var(--rs-danger) 20%, var(--rs-danger-container));
143
138
  }
144
139
 
145
140
  /* 行内链接:可下划线;色调由 tone 控制(默认 primary) */
146
- .rs-btn--link[data-v-423f0a90] {
141
+ .rs-btn--link[data-v-8974aec3] {
147
142
  min-height: auto;
148
143
  padding: 0;
149
144
  border-color: transparent;
@@ -153,7 +148,7 @@
153
148
  box-shadow: none;
154
149
  font-weight: var(--rs-font-weight-medium);
155
150
  }
156
- .rs-btn--link[data-v-423f0a90]:hover:not(:disabled) {
151
+ .rs-btn--link[data-v-8974aec3]:hover:not(:disabled) {
157
152
  color: var(--rs-btn-tone-hover, var(--rs-primary-hover));
158
153
  text-decoration: underline;
159
154
  }
@@ -162,7 +157,7 @@
162
157
  * text:工具栏 / 表格操作 quaternary
163
158
  * 无底无边,靠 tone 着色;hover 使用同色浅底
164
159
  */
165
- .rs-btn--text[data-v-423f0a90] {
160
+ .rs-btn--text[data-v-8974aec3] {
166
161
  min-height: var(--rs-control-height-sm);
167
162
  padding: 0 var(--rs-space-sm);
168
163
  border-color: transparent;
@@ -171,61 +166,61 @@
171
166
  font-weight: var(--rs-font-weight-regular);
172
167
  color: var(--rs-btn-tone, var(--rs-text));
173
168
  }
174
- .rs-btn--text.rs-btn--ssm[data-v-423f0a90] {
169
+ .rs-btn--text.rs-btn--ssm[data-v-8974aec3] {
175
170
  min-height: var(--rs-control-height-ssm);
176
171
  }
177
- .rs-btn--text.rs-btn--md[data-v-423f0a90] {
172
+ .rs-btn--text.rs-btn--md[data-v-8974aec3] {
178
173
  min-height: var(--rs-control-height-md);
179
174
  }
180
- .rs-btn--text.rs-btn--lg[data-v-423f0a90] {
175
+ .rs-btn--text.rs-btn--lg[data-v-8974aec3] {
181
176
  min-height: var(--rs-control-height-lg);
182
177
  }
183
- .rs-btn--text[data-v-423f0a90]:hover:not(:disabled) {
178
+ .rs-btn--text[data-v-8974aec3]:hover:not(:disabled) {
184
179
  background: color-mix(in srgb, var(--rs-btn-tone, var(--rs-text)) 8%, transparent);
185
180
  border-color: transparent;
186
181
  color: var(--rs-btn-tone-hover, var(--rs-btn-tone, var(--rs-text)));
187
182
  }
188
- .rs-btn--text[data-v-423f0a90]:active:not(:disabled) {
183
+ .rs-btn--text[data-v-8974aec3]:active:not(:disabled) {
189
184
  background: color-mix(in srgb, var(--rs-btn-tone, var(--rs-text)) 12%, transparent);
190
185
  }
191
186
 
192
187
  /* tone:色相 token,供所有变体消费(形态 × 色相) */
193
- .rs-btn--tone-neutral[data-v-423f0a90] {
188
+ .rs-btn--tone-neutral[data-v-8974aec3] {
194
189
  --rs-btn-tone: var(--rs-text);
195
190
  --rs-btn-tone-hover: var(--rs-text);
196
191
  --rs-btn-tone-fg: var(--rs-text);
197
192
  --rs-btn-tone-container: var(--rs-btn-secondary-bg, var(--rs-surface-hover));
198
193
  --rs-btn-tone-on-container: var(--rs-text);
199
194
  }
200
- .rs-btn--tone-primary[data-v-423f0a90] {
195
+ .rs-btn--tone-primary[data-v-8974aec3] {
201
196
  --rs-btn-tone: var(--rs-primary);
202
197
  --rs-btn-tone-hover: var(--rs-primary-hover);
203
198
  --rs-btn-tone-fg: var(--rs-primary-foreground);
204
199
  --rs-btn-tone-container: var(--rs-primary-container);
205
200
  --rs-btn-tone-on-container: var(--rs-on-primary-container);
206
201
  }
207
- .rs-btn--tone-danger[data-v-423f0a90] {
202
+ .rs-btn--tone-danger[data-v-8974aec3] {
208
203
  --rs-btn-tone: var(--rs-danger);
209
204
  --rs-btn-tone-hover: var(--rs-danger);
210
205
  --rs-btn-tone-fg: var(--rs-text-inverse);
211
206
  --rs-btn-tone-container: var(--rs-danger-container);
212
207
  --rs-btn-tone-on-container: var(--rs-on-danger-container);
213
208
  }
214
- .rs-btn--tone-success[data-v-423f0a90] {
209
+ .rs-btn--tone-success[data-v-8974aec3] {
215
210
  --rs-btn-tone: var(--rs-success, #18a058);
216
211
  --rs-btn-tone-hover: var(--rs-success, #18a058);
217
212
  --rs-btn-tone-fg: var(--rs-text-inverse);
218
213
  --rs-btn-tone-container: var(--rs-success-container, color-mix(in srgb, var(--rs-success, #18a058) 14%, var(--rs-surface)));
219
214
  --rs-btn-tone-on-container: var(--rs-on-success-container, var(--rs-success, #18a058));
220
215
  }
221
- .rs-btn--tone-warning[data-v-423f0a90] {
216
+ .rs-btn--tone-warning[data-v-8974aec3] {
222
217
  --rs-btn-tone: var(--rs-warning, #f0a020);
223
218
  --rs-btn-tone-hover: var(--rs-warning, #f0a020);
224
219
  --rs-btn-tone-fg: var(--rs-text-inverse);
225
220
  --rs-btn-tone-container: var(--rs-warning-container, color-mix(in srgb, var(--rs-warning, #f0a020) 14%, var(--rs-surface)));
226
221
  --rs-btn-tone-on-container: var(--rs-on-warning-container, var(--rs-warning, #f0a020));
227
222
  }
228
- .rs-btn--tone-info[data-v-423f0a90] {
223
+ .rs-btn--tone-info[data-v-8974aec3] {
229
224
  --rs-btn-tone: var(--rs-info, #2080f0);
230
225
  --rs-btn-tone-hover: var(--rs-info, #2080f0);
231
226
  --rs-btn-tone-fg: var(--rs-text-inverse);
@@ -234,42 +229,50 @@
234
229
  }
235
230
 
236
231
  /* default + 语义色:轮廓 + 浅底(Ant outlined / Element plain) */
237
- .rs-btn--default[data-v-423f0a90]:not(.rs-btn--tone-neutral) {
232
+ .rs-btn--default[data-v-8974aec3]:not(.rs-btn--tone-neutral) {
238
233
  color: var(--rs-btn-tone-on-container);
239
234
  border-color: color-mix(in srgb, var(--rs-btn-tone) 42%, var(--rs-border));
240
235
  background: var(--rs-btn-tone-container);
241
236
  }
242
- .rs-btn--default[data-v-423f0a90]:not(.rs-btn--tone-neutral):hover:not(:disabled) {
237
+ .rs-btn--default[data-v-8974aec3]:not(.rs-btn--tone-neutral):hover:not(:disabled) {
243
238
  color: var(--rs-btn-tone);
244
239
  border-color: var(--rs-btn-tone);
245
240
  background: color-mix(in srgb, var(--rs-btn-tone) 14%, var(--rs-btn-tone-container));
246
241
  }
247
- .rs-btn--default[data-v-423f0a90]:not(.rs-btn--tone-neutral):active:not(:disabled) {
242
+ .rs-btn--default[data-v-8974aec3]:not(.rs-btn--tone-neutral):active:not(:disabled) {
248
243
  color: var(--rs-btn-tone-hover);
249
244
  border-color: var(--rs-btn-tone-hover);
250
245
  background: color-mix(in srgb, var(--rs-btn-tone) 20%, var(--rs-btn-tone-container));
251
246
  }
252
247
 
253
248
  /* primary + 非主色:实心语义色 */
254
- .rs-btn--primary[data-v-423f0a90]:not(.rs-btn--tone-primary) {
249
+ .rs-btn--primary[data-v-8974aec3]:not(.rs-btn--tone-primary) {
255
250
  background: var(--rs-btn-tone);
256
251
  color: var(--rs-btn-tone-fg);
257
252
  border-color: transparent;
258
253
  }
259
- .rs-btn--primary[data-v-423f0a90]:not(.rs-btn--tone-primary):hover:not(:disabled) {
254
+ .rs-btn--primary[data-v-8974aec3]:not(.rs-btn--tone-primary):hover:not(:disabled) {
260
255
  background: var(--rs-btn-tone-hover);
261
256
  }
262
257
 
263
258
  /* ghost + 语义色:描边跟色相 */
264
- .rs-btn--ghost[data-v-423f0a90]:not(.rs-btn--tone-neutral) {
259
+ .rs-btn--ghost[data-v-8974aec3]:not(.rs-btn--tone-neutral) {
265
260
  border-color: color-mix(in srgb, var(--rs-btn-tone) 45%, var(--rs-border));
266
261
  }
267
- .rs-btn--ghost[data-v-423f0a90]:not(.rs-btn--tone-neutral):hover:not(:disabled) {
262
+ .rs-btn--ghost[data-v-8974aec3]:not(.rs-btn--tone-neutral):hover:not(:disabled) {
268
263
  border-color: var(--rs-btn-tone);
269
264
  background: color-mix(in srgb, var(--rs-btn-tone) 14%, var(--rs-surface));
270
265
  color: var(--rs-btn-tone);
271
266
  }
272
- .rs-btn__spinner[data-v-423f0a90] {
267
+
268
+ /* 未传 bordered 时压过上面各变体后写的 border-color */
269
+ .rs-btn.rs-btn--borderless[data-v-8974aec3],
270
+ .rs-btn.rs-btn--borderless[data-v-8974aec3]:hover:not(:disabled),
271
+ .rs-btn.rs-btn--borderless[data-v-8974aec3]:active:not(:disabled),
272
+ .rs-btn.rs-btn--borderless.rs-btn--loading[data-v-8974aec3] {
273
+ border-color: transparent;
274
+ }
275
+ .rs-btn__spinner[data-v-8974aec3] {
273
276
  display: inline-flex;
274
277
  align-items: center;
275
278
  justify-content: center;
@@ -278,7 +281,7 @@
278
281
  flex-shrink: 0;
279
282
  pointer-events: none;
280
283
  }
281
- .rs-btn__spinner-ring[data-v-423f0a90] {
284
+ .rs-btn__spinner-ring[data-v-8974aec3] {
282
285
  display: block;
283
286
  width: 100%;
284
287
  height: 100%;
@@ -286,27 +289,27 @@
286
289
  border-top-color: var(--rs-primary);
287
290
  border-radius: var(--rs-radius-full);
288
291
  transform-origin: center center;
289
- animation: rs-spin-423f0a90 0.75s linear infinite;
292
+ animation: rs-spin-8974aec3 0.75s linear infinite;
290
293
  }
291
- .rs-btn--default .rs-btn__spinner-ring[data-v-423f0a90],
292
- .rs-btn--ghost .rs-btn__spinner-ring[data-v-423f0a90] {
294
+ .rs-btn--default .rs-btn__spinner-ring[data-v-8974aec3],
295
+ .rs-btn--ghost .rs-btn__spinner-ring[data-v-8974aec3] {
293
296
  border-color: color-mix(in srgb, var(--rs-btn-tone, var(--rs-primary)) 28%, transparent);
294
297
  border-top-color: var(--rs-btn-tone, var(--rs-primary));
295
298
  }
296
- .rs-btn--text .rs-btn__spinner-ring[data-v-423f0a90],
297
- .rs-btn--link .rs-btn__spinner-ring[data-v-423f0a90] {
299
+ .rs-btn--text .rs-btn__spinner-ring[data-v-8974aec3],
300
+ .rs-btn--link .rs-btn__spinner-ring[data-v-8974aec3] {
298
301
  border-color: color-mix(in srgb, var(--rs-btn-tone, var(--rs-primary)) 28%, transparent);
299
302
  border-top-color: var(--rs-btn-tone, var(--rs-primary));
300
303
  }
301
- .rs-btn--primary .rs-btn__spinner-ring[data-v-423f0a90] {
304
+ .rs-btn--primary .rs-btn__spinner-ring[data-v-8974aec3] {
302
305
  border-color: color-mix(in srgb, currentcolor 35%, transparent);
303
306
  border-top-color: currentcolor;
304
307
  }
305
- .rs-btn--danger .rs-btn__spinner-ring[data-v-423f0a90] {
308
+ .rs-btn--danger .rs-btn__spinner-ring[data-v-8974aec3] {
306
309
  border-color: color-mix(in srgb, var(--rs-danger) 28%, transparent);
307
310
  border-top-color: var(--rs-danger);
308
311
  }
309
- .rs-btn__icon[data-v-423f0a90] {
312
+ .rs-btn__icon[data-v-8974aec3] {
310
313
  display: inline-flex;
311
314
  flex-shrink: 0;
312
315
  align-items: center;
@@ -315,7 +318,7 @@
315
318
  color: inherit;
316
319
  }
317
320
  /* 插槽内自定义图标+文案时也能水平对齐 */
318
- .rs-btn__label[data-v-423f0a90] {
321
+ .rs-btn__label[data-v-8974aec3] {
319
322
  display: inline-flex;
320
323
  align-items: center;
321
324
  gap: inherit;
@@ -323,7 +326,7 @@
323
326
  line-height: 1;
324
327
  white-space: nowrap;
325
328
  }
326
- .rs-btn__label--reveal[data-v-423f0a90] {
329
+ .rs-btn__label--reveal[data-v-8974aec3] {
327
330
  display: inline-block;
328
331
  max-width: 0;
329
332
  opacity: 0;
@@ -334,12 +337,12 @@
334
337
  max-width 0.2s ease,
335
338
  opacity 0.15s ease;
336
339
  }
337
- .rs-btn--reveal-label:hover:not(:disabled) .rs-btn__label--reveal[data-v-423f0a90],
338
- .rs-btn--reveal-label:focus-visible .rs-btn__label--reveal[data-v-423f0a90] {
340
+ .rs-btn--reveal-label:hover:not(:disabled) .rs-btn__label--reveal[data-v-8974aec3],
341
+ .rs-btn--reveal-label:focus-visible .rs-btn__label--reveal[data-v-8974aec3] {
339
342
  max-width: 12rem;
340
343
  opacity: 1;
341
344
  }
342
- .rs-btn__tooltip[data-v-423f0a90] {
345
+ .rs-btn__tooltip[data-v-8974aec3] {
343
346
  position: fixed;
344
347
  /* Portal 挂 body,必须高于 Dialog/Drawer(100/101),与 RsTooltip 同一档 */
345
348
  z-index: calc(var(--rs-z-modal) + 2);
@@ -355,17 +358,17 @@
355
358
  box-shadow: var(--rs-shadow-sm);
356
359
  pointer-events: none;
357
360
  }
358
- @keyframes rs-spin-423f0a90 {
361
+ @keyframes rs-spin-8974aec3 {
359
362
  to {
360
363
  transform: rotate(360deg);
361
364
  }
362
365
  }
363
366
  @media (prefers-reduced-motion: reduce) {
364
- .rs-btn[data-v-423f0a90],
365
- .rs-btn__label--reveal[data-v-423f0a90] {
367
+ .rs-btn[data-v-8974aec3],
368
+ .rs-btn__label--reveal[data-v-8974aec3] {
366
369
  transition: none;
367
370
  }
368
- .rs-btn__spinner-ring[data-v-423f0a90] {
371
+ .rs-btn__spinner-ring[data-v-8974aec3] {
369
372
  animation: none;
370
373
  border-top-color: transparent;
371
374
  }
@@ -15,10 +15,7 @@ type __VLS_Props = {
15
15
  type?: 'button' | 'submit' | 'reset';
16
16
  disabled?: boolean;
17
17
  loading?: boolean;
18
- /**
19
- * 是否显示外边框。未传时 text / link 无边,其余有边。
20
- * 默认必须是 undefined:Vue 会把未传的 Boolean 收成 false。
21
- */
18
+ /** 是否绘制外边框。未传为 false,与 2.0.3 之前一致。 */
22
19
  bordered?: boolean;
23
20
  /** 前缀图标(Lucide kebab-case 名称) */
24
21
  icon?: string;
@@ -39,7 +39,7 @@ var RsButton_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
39
39
  },
40
40
  bordered: {
41
41
  type: Boolean,
42
- default: void 0
42
+ default: false
43
43
  },
44
44
  icon: {},
45
45
  iconSize: {},
@@ -64,11 +64,7 @@ var RsButton_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
64
64
  const rootStyle = computed(() => ({ "--rs-btn-radius": rsRadiusCss(resolvedRadius.value) }));
65
65
  const hasLabel = computed(() => Boolean(slots.default));
66
66
  const resolvedVariant = computed(() => resolveRsButtonVariant(props.variant ?? "primary"));
67
- /** text 默认无边框;其它变体默认有边框(可由 bordered 覆盖) */
68
- const resolvedBordered = computed(() => {
69
- if (props.bordered !== void 0) return props.bordered;
70
- return resolvedVariant.value !== "text" && resolvedVariant.value !== "link";
71
- });
67
+ const resolvedBordered = computed(() => props.bordered);
72
68
  /** 形态 × 色相:所有变体都带 tone class,由 CSS 决定如何上色。 */
73
69
  const resolvedTone = computed(() => resolveRsButtonTone(props.variant ?? "primary", props.tone));
74
70
  const rootClass = computed(() => ({
@@ -3,6 +3,6 @@ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_exp
3
3
  import RsButton_vue_vue_type_script_setup_true_lang_default from "./RsButton.impl.js";
4
4
 
5
5
  //#region src/components/button/src/RsButton.vue
6
- var RsButton_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsButton_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-423f0a90"]]);
6
+ var RsButton_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsButton_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-8974aec3"]]);
7
7
  //#endregion
8
8
  export { RsButton_default as default };
@@ -1,5 +1,5 @@
1
1
 
2
- .rs-config-provider[data-v-2be1193e] {
2
+ .rs-config-provider[data-v-baff9acb] {
3
3
  color: var(--rs-text-primary);
4
4
  background: var(--rs-bg);
5
5
  height: 100%;
@@ -18,9 +18,9 @@ type __VLS_Props = {
18
18
  */
19
19
  themeScope?: 'global' | 'local';
20
20
  };
21
- declare var __VLS_8: {};
21
+ declare var __VLS_1: {};
22
22
  type __VLS_Slots = {} & {
23
- default?: (props: typeof __VLS_8) => any;
23
+ default?: (props: typeof __VLS_1) => any;
24
24
  };
25
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
26
  dir: RsDirMode;
@@ -1,9 +1,8 @@
1
1
  import { resolveHostLocale } from "../../../locale/resolve-host.js";
2
2
  import { applyTheme, subscribePreferredColorScheme } from "../../../theme/apply.js";
3
3
  import { createRsConfigState, provideRsConfig } from "../../../composables/useRsConfig.js";
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";
4
+ import { applyLocale } from "../../../locale/apply.js";
5
+ import { createElementBlock, defineComponent, onBeforeUnmount, openBlock, ref, renderSlot, watch } from "vue";
7
6
  //#region src/components/config-provider/src/RsConfigProvider.vue?vue&type=script&setup=true&lang.ts
8
7
  var RsConfigProvider_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
9
8
  name: "RsConfigProvider",
@@ -74,23 +73,15 @@ var RsConfigProvider_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
74
73
  syncLocale();
75
74
  }
76
75
  });
77
- const resolvedDir = computed(() => resolveDirMode(config.dir.value, config.locale.value));
78
- const rekaLocale = computed(() => config.locale.value);
79
76
  onBeforeUnmount(() => {
80
77
  stopPreferred?.();
81
78
  });
82
79
  return (_ctx, _cache) => {
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"]);
80
+ return openBlock(), createElementBlock("div", {
81
+ ref_key: "rootEl",
82
+ ref: rootEl,
83
+ class: "rs-config-provider"
84
+ }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 512);
94
85
  };
95
86
  }
96
87
  });
@@ -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-2be1193e"]]);
6
+ var RsConfigProvider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsConfigProvider_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-baff9acb"]]);
7
7
  //#endregion
8
8
  export { RsConfigProvider_default as default };
@@ -11,7 +11,7 @@ var _hoisted_1 = [
11
11
  ];
12
12
  var _hoisted_2 = {
13
13
  key: 2,
14
- class: "rs-table-cell-editor rs-table-cell-editor--custom"
14
+ class: "rs-table-cell-editor rs-table-cell-editor--inline rs-table-cell-editor--custom"
15
15
  };
16
16
  var RsTableCell_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
17
17
  __name: "RsTableCell",
@@ -846,29 +846,41 @@
846
846
  touch-action: none;
847
847
  z-index: 2;
848
848
  }
849
- /* 默认与列 border 重合,不额外绘制;悬浮时高亮为可拖拽分隔线 */
849
+ /* 平时就画出列边,让人知道这里能拖;悬停改成主色 */
850
850
  .rs-table__resize-handle::after {
851
851
  content: '';
852
852
  position: absolute;
853
853
  top: 0;
854
854
  bottom: 0;
855
855
  left: 50%;
856
- width: 1px;
856
+ width: 2px;
857
857
  transform: translateX(-50%);
858
858
  border-radius: 0;
859
- background: transparent;
860
- opacity: 0;
861
- transition: opacity 0.12s ease, background 0.12s ease;
859
+ background: var(--rs-table-resize-handle);
860
+ opacity: 1;
861
+ transition: background 0.12s ease;
862
862
  }
863
863
  .rs-table__resize-handle:hover::after,
864
864
  .rs-table__resize-handle:active::after {
865
- opacity: 1;
866
865
  background: var(--rs-table-resize-handle-hover);
867
866
  }
868
- /* column-bordered:平时由单元格 border-inline-end 承担分隔线,悬浮时由 handle 接管高亮 */
869
- .rs-table--column-bordered .rs-table__th:has(> .rs-table__resize-handle:hover),
870
- .rs-table--column-bordered .rs-table__th:has(> .rs-table__resize-handle:active) {
871
- border-inline-end-color: transparent;
867
+ /* 已有列分隔线时不再另画 2px 拖拽线,避免表头粗线和表体细线错开。
868
+ 悬停只把这一条分隔线改成主色。最后一列没有分隔线,悬停才画出拖拽线。 */
869
+ .rs-table--column-bordered .rs-table__th:not(:last-child) > .rs-table__resize-handle::after,
870
+ .rs-table--column-bordered .rs-table__th:not(:last-child) > .rs-table__resize-handle:hover::after,
871
+ .rs-table--column-bordered .rs-table__th:not(:last-child) > .rs-table__resize-handle:active::after {
872
+ background: transparent;
873
+ }
874
+ .rs-table--column-bordered .rs-table__th:not(:last-child):has(> .rs-table__resize-handle:hover),
875
+ .rs-table--column-bordered .rs-table__th:not(:last-child):has(> .rs-table__resize-handle:active) {
876
+ border-inline-end-color: var(--rs-table-resize-handle-hover);
877
+ }
878
+ .rs-table--column-bordered .rs-table__th:last-child > .rs-table__resize-handle::after {
879
+ background: transparent;
880
+ }
881
+ .rs-table--column-bordered .rs-table__th:last-child > .rs-table__resize-handle:hover::after,
882
+ .rs-table--column-bordered .rs-table__th:last-child > .rs-table__resize-handle:active::after {
883
+ background: var(--rs-table-resize-handle-hover);
872
884
  }
873
885
  /* 滚动条交汇角与容器底色一致 */
874
886
  .rs-table.rs-native-scrollbar:has(.rs-table__head)::-webkit-scrollbar-corner {
@@ -1234,7 +1246,39 @@
1234
1246
  pointer-events: none;
1235
1247
  }
1236
1248
  .rs-table-cell-editor--custom {
1249
+ display: flex;
1250
+ align-items: stretch;
1251
+ width: 100%;
1252
+ height: 100%;
1253
+ min-width: 0;
1254
+ min-height: 0;
1255
+ }
1256
+ /* 插槽里的原生输入跟内置编辑器一样贴合格子,不再另画一圈边框 */
1257
+ .rs-table-cell-editor--custom > :where(input, textarea, select) {
1258
+ flex: 1 1 auto;
1237
1259
  width: 100%;
1238
1260
  height: 100%;
1239
1261
  min-width: 0;
1262
+ margin: 0;
1263
+ padding: var(--rs-space-sm) var(--rs-space-md);
1264
+ border: 0;
1265
+ border-radius: 0;
1266
+ outline: none;
1267
+ background: transparent;
1268
+ box-shadow: none;
1269
+ color: inherit;
1270
+ font: inherit;
1271
+ line-height: inherit;
1272
+ appearance: none;
1273
+ }
1274
+ .rs-table-cell-editor--custom > :where(input, textarea, select):focus {
1275
+ outline: none;
1276
+ box-shadow: none;
1277
+ }
1278
+ .rs-table--compact .rs-table-cell-editor--custom > :where(input, textarea, select),
1279
+ .rs-table--sm .rs-table-cell-editor--custom > :where(input, textarea, select) {
1280
+ padding: var(--rs-space-xs) var(--rs-space-sm);
1281
+ }
1282
+ .rs-table--lg .rs-table-cell-editor--custom > :where(input, textarea, select) {
1283
+ padding: var(--rs-space-md) var(--rs-space-lg);
1240
1284
  }
@@ -30,10 +30,10 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {
30
30
  /** 供模板 ref 关闭。业务侧通常用 useRsToast().dismiss。 */
31
31
  dismiss: (id?: string) => void;
32
32
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
33
- teleportTo: string | HTMLElement;
34
33
  gap: number;
35
34
  expand: boolean;
36
35
  position: RsToastPosition;
36
+ teleportTo: string | HTMLElement;
37
37
  toasterId: string;
38
38
  duration: number;
39
39
  closeButton: boolean;
package/dist/styles.css CHANGED
@@ -639,7 +639,7 @@ html {
639
639
  --rs-table-checkbox-bg: var(--rs-surface);
640
640
  --rs-table-sort-active-fg: var(--rs-primary);
641
641
  --rs-table-drop-indicator: var(--rs-primary);
642
- --rs-table-resize-handle: var(--rs-text-tertiary);
642
+ --rs-table-resize-handle: var(--rs-table-cell-divider);
643
643
  --rs-table-resize-handle-hover: var(--rs-primary);
644
644
 
645
645
  /* ── Tree(导航线 / 行选中 / 焦点;业务可覆盖)── */
@@ -666,10 +666,10 @@ html {
666
666
  --rs-border: #6e6e6e;
667
667
  --rs-border-subtle: #3a3a3a;
668
668
  /*
669
- * Button secondary/default:轮廓与底色独立于分隔线 --rs-border,
669
+ * Button secondary/default:描边跟输入框,不另用更亮的实色灰。
670
670
  * 业务可用 --rs-btn-* 覆盖(见 theme/brand.example.css)。
671
671
  */
672
- --rs-btn-outline-border: #a3a3a3;
672
+ --rs-btn-outline-border: var(--rs-input-border);
673
673
  --rs-btn-secondary-bg: var(--rs-surface-hover);
674
674
  --rs-btn-secondary-bg-hover: color-mix(in srgb, var(--rs-primary) 16%, var(--rs-surface-hover));
675
675
  --rs-btn-secondary-bg-active: color-mix(in srgb, var(--rs-primary) 24%, var(--rs-surface-hover));
@@ -1029,7 +1029,7 @@ html {
1029
1029
  --rs-table-checkbox-bg: var(--rs-surface);
1030
1030
  --rs-table-sort-active-fg: var(--rs-primary);
1031
1031
  --rs-table-drop-indicator: var(--rs-primary);
1032
- --rs-table-resize-handle: var(--rs-text-tertiary);
1032
+ --rs-table-resize-handle: var(--rs-table-cell-divider);
1033
1033
  --rs-table-resize-handle-hover: var(--rs-primary);
1034
1034
 
1035
1035
  /* ── Tree(导航线 / 行选中 / 焦点;业务可覆盖)── */
@@ -1055,10 +1055,10 @@ html {
1055
1055
  --rs-border: rgb(60 60 67 / 0.16);
1056
1056
  --rs-border-subtle: rgb(60 60 67 / 0.10);
1057
1057
  /*
1058
- * Button secondary/default:亮色分隔线偏淡,轮廓单独提高对比(≥3:1 vs 白底)。
1059
- * 业务覆盖 --rs-btn-* 即可,无需改组件。
1058
+ * Button secondary/default:描边跟输入框(柔分隔线),焦点环负责强调。
1059
+ * 需要更重的轮廓时覆盖 --rs-btn-outline-border。
1060
1060
  */
1061
- --rs-btn-outline-border: #6e6e73;
1061
+ --rs-btn-outline-border: var(--rs-input-border);
1062
1062
  --rs-btn-secondary-bg: var(--rs-surface-hover);
1063
1063
  --rs-btn-secondary-bg-hover: color-mix(in srgb, var(--rs-primary) 12%, var(--rs-surface-hover));
1064
1064
  --rs-btn-secondary-bg-active: color-mix(in srgb, var(--rs-primary) 18%, var(--rs-surface-hover));
@@ -1700,12 +1700,6 @@ code {
1700
1700
  min-width: 0;
1701
1701
  }
1702
1702
 
1703
- /* ContextMenu:Dialog 内表格右键菜单 Portal 后须高于 modal */
1704
- [data-reka-popper-content-wrapper]:has(> .rs-context-menu__content),
1705
- [data-reka-popper-content-wrapper]:has(> .rs-context-menu__sub-content) {
1706
- z-index: calc(var(--rs-z-modal) + 2);
1707
- }
1708
-
1709
1703
  /*
1710
1704
  * TimePicker 面板 Teleport 到 body。
1711
1705
  * 独立面板跟 DatePicker 同一档(modal+2);嵌在日期面板里再高一档。
@@ -34,7 +34,7 @@
34
34
  --rs-primary-hover: #4f46e5;
35
35
  --rs-primary-container: #eef2ff;
36
36
  --rs-on-primary-container: #312e81;
37
- /* secondary 轮廓:按需加深(默认已可读,一般无需改) */
37
+ /* secondary 轮廓:默认跟输入框;需要更重的线时再覆盖 */
38
38
  --rs-btn-outline-border: #6b7280;
39
39
  --rs-btn-secondary-bg: #f3f4f6;
40
40
  --rs-btn-secondary-bg-hover: #ede9fe;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "niuma-ui",
3
- "version": "2.0.9",
3
+ "version": "2.1.0",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "description": "Vue 3 workbench design system — Rs* components, --rs-* tokens, optional Monaco / CodeMirror / xterm",
@@ -11,7 +11,6 @@
11
11
  "components",
12
12
  "design-system",
13
13
  "workbench",
14
- "reka-ui",
15
14
  "niuma"
16
15
  ],
17
16
  "author": "Blair-Shang",
@@ -117,8 +116,7 @@
117
116
  "magic-string": "^0.30.17",
118
117
  "marked": "^18.0.9",
119
118
  "monaco-editor": "^0.55.1",
120
- "monaco-sql-languages": "^1.2.0",
121
- "reka-ui": "^2.9.10"
119
+ "monaco-sql-languages": "^1.2.0"
122
120
  },
123
121
  "devDependencies": {
124
122
  "@playwright/test": "^1.62.1",
@@ -1,2 +0,0 @@
1
- export { AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogOverlay, AlertDialogPortal, AlertDialogRoot, AlertDialogTitle, AlertDialogTrigger, Primitive, CollapsibleContent, CollapsibleRoot, CollapsibleTrigger, ComboboxAnchor, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxItemIndicator, ComboboxLabel, ComboboxPortal, ComboboxRoot, ComboboxTrigger, ComboboxViewport, ComboboxVirtualizer, ConfigProvider, ContextMenuContent, ContextMenuItem, ContextMenuPortal, ContextMenuRoot, ContextMenuSeparator, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DialogClose, DialogContent, DialogDescription, DialogOverlay, DialogPortal, DialogRoot, DialogTitle, DialogTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuRoot, DropdownMenuTrigger, PopoverContent, PopoverPortal, PopoverRoot, PopoverTrigger, SwitchRoot, SwitchThumb, PaginationEllipsis, PaginationFirst, PaginationLast, PaginationList, PaginationListItem, PaginationNext, PaginationPrev, PaginationRoot, ScrollAreaCorner, ScrollAreaRoot, ScrollAreaScrollbar, ScrollAreaThumb, ScrollAreaViewport, SelectContent, SelectItem, SelectItemIndicator, SelectItemText, SelectPortal, SelectRoot, SelectTrigger, SelectValue, SelectViewport, StepperDescription, StepperIndicator, StepperItem, StepperRoot, StepperSeparator, StepperTitle, StepperTrigger, TabsContent, TabsList, TabsRoot, TabsTrigger, TooltipContent, TooltipPortal, TooltipProvider, TooltipRoot, TooltipTrigger, TreeItem, TreeRoot, TreeVirtualizer, useForwardExpose, useFilter, } from 'reka-ui';
2
- export type { AcceptableValue, PrimitiveProps, TooltipRootEmits, TooltipRootProps } from 'reka-ui';
@@ -1,2 +0,0 @@
1
- import { ConfigProvider } from "reka-ui";
2
- export { ConfigProvider };