smart-admin-web 10.20.0 → 10.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/dist/api/index.d.ts +19 -1
  2. package/dist/api/index.js +85 -66
  3. package/dist/api/index.js.map +1 -1
  4. package/dist/api/schema.d.ts +448 -1
  5. package/dist/assets/icons/ph-subset.json.js +1 -1
  6. package/dist/components/FormContainer/index.vue.js +87 -75
  7. package/dist/components/FormContainer/index.vue.js.map +1 -1
  8. package/dist/components/UserPicker/UserAvatar.vue.d.ts +8 -0
  9. package/dist/components/UserPicker/UserAvatar.vue.js +8 -0
  10. package/dist/components/UserPicker/UserAvatar.vue.js.map +1 -0
  11. package/dist/components/UserPicker/UserAvatar2.vue.js +38 -0
  12. package/dist/components/UserPicker/UserAvatar2.vue.js.map +1 -0
  13. package/dist/components/UserPicker/index.vue.js +1 -1
  14. package/dist/components/UserPicker/index2.vue.js +328 -186
  15. package/dist/components/UserPicker/index2.vue.js.map +1 -1
  16. package/dist/index.js +248 -246
  17. package/dist/layouts/NoticeBell.vue.js +2 -2
  18. package/dist/layouts/NoticeBell2.vue.js +18 -17
  19. package/dist/layouts/NoticeBell2.vue.js.map +1 -1
  20. package/dist/lib/runtime.js +1 -1
  21. package/dist/lib/watermark.d.ts +1 -1
  22. package/dist/locales/en-US.d.ts +62 -3
  23. package/dist/locales/en-US.js +66 -7
  24. package/dist/locales/en-US.js.map +1 -1
  25. package/dist/locales/kernelMenuTitles.js +2 -1
  26. package/dist/locales/kernelMenuTitles.js.map +1 -1
  27. package/dist/locales/zh-CN.d.ts +62 -3
  28. package/dist/locales/zh-CN.js +66 -7
  29. package/dist/locales/zh-CN.js.map +1 -1
  30. package/dist/router/viewRegistry.js +6 -6
  31. package/dist/router/viewRegistry.js.map +1 -1
  32. package/dist/style.css +1 -1
  33. package/dist/theme/naive-theme.js +72 -67
  34. package/dist/theme/naive-theme.js.map +1 -1
  35. package/dist/types/api.d.ts +91 -0
  36. package/dist/types/api.js +17 -15
  37. package/dist/types/api.js.map +1 -1
  38. package/dist/utils/shake.d.ts +1 -0
  39. package/dist/utils/shake.js +30 -0
  40. package/dist/utils/shake.js.map +1 -0
  41. package/dist/views/login/LoginForm.vue.js +2 -2
  42. package/dist/views/login/LoginForm2.vue.js +135 -135
  43. package/dist/views/login/LoginForm2.vue.js.map +1 -1
  44. package/dist/views/login/components/LoginDesk.vue.js +1 -1
  45. package/dist/views/login/components/LoginDesk2.vue.js +59 -47
  46. package/dist/views/login/components/LoginDesk2.vue.js.map +1 -1
  47. package/dist/views/personal/notice2.vue.js +1 -1
  48. package/dist/views/personal/notice2.vue.js.map +1 -1
  49. package/dist/views/personal/sessions.vue.js +2 -2
  50. package/dist/views/personal/sessions2.vue.js +41 -40
  51. package/dist/views/personal/sessions2.vue.js.map +1 -1
  52. package/dist/views/system/ai-usage/index.vue.js +3 -3
  53. package/dist/views/system/ai-usage/index2.vue.js +13 -12
  54. package/dist/views/system/ai-usage/index2.vue.js.map +1 -1
  55. package/dist/views/system/config/components/AdvancedSection.vue.js +3 -3
  56. package/dist/views/system/config/components/AdvancedSection2.vue.js +2 -1
  57. package/dist/views/system/config/components/AdvancedSection2.vue.js.map +1 -1
  58. package/dist/views/system/dict/index.vue.js +2 -2
  59. package/dist/views/system/dict/index2.vue.js +12 -1
  60. package/dist/views/system/dict/index2.vue.js.map +1 -1
  61. package/dist/views/system/file/index2.vue.js +1 -0
  62. package/dist/views/system/file/index2.vue.js.map +1 -1
  63. package/dist/views/system/job/index.vue.js +3 -3
  64. package/dist/views/system/job/index2.vue.js +182 -181
  65. package/dist/views/system/job/index2.vue.js.map +1 -1
  66. package/dist/views/system/job-log/components/AttemptTable2.vue.js +8 -3
  67. package/dist/views/system/job-log/components/AttemptTable2.vue.js.map +1 -1
  68. package/dist/views/system/job-log/index.vue.js +1 -1
  69. package/dist/views/system/job-log/index2.vue.js +5 -5
  70. package/dist/views/system/job-log/index2.vue.js.map +1 -1
  71. package/dist/views/system/log/exception/index.vue.js +2 -2
  72. package/dist/views/system/log/exception/index2.vue.js +8 -5
  73. package/dist/views/system/log/exception/index2.vue.js.map +1 -1
  74. package/dist/views/system/log/login/index2.vue.js +21 -12
  75. package/dist/views/system/log/login/index2.vue.js.map +1 -1
  76. package/dist/views/system/log/op/index.vue.js +2 -2
  77. package/dist/views/system/log/op/index2.vue.js +50 -40
  78. package/dist/views/system/log/op/index2.vue.js.map +1 -1
  79. package/dist/views/system/menu/components/ButtonManager.vue.js +2 -2
  80. package/dist/views/system/menu/components/ButtonManager2.vue.js +45 -36
  81. package/dist/views/system/menu/components/ButtonManager2.vue.js.map +1 -1
  82. package/dist/views/system/menu/index.vue.js +2 -2
  83. package/dist/views/system/menu/index2.vue.js +11 -11
  84. package/dist/views/system/menu/index2.vue.js.map +1 -1
  85. package/dist/views/system/module/index.vue.js +1 -1
  86. package/dist/views/system/module/index2.vue.js +171 -117
  87. package/dist/views/system/module/index2.vue.js.map +1 -1
  88. package/dist/views/system/notice/index.vue.js +3 -3
  89. package/dist/views/system/notice/index2.vue.js +1 -0
  90. package/dist/views/system/notice/index2.vue.js.map +1 -1
  91. package/dist/views/system/org/index.vue.js +2 -2
  92. package/dist/views/system/org/index2.vue.js +70 -67
  93. package/dist/views/system/org/index2.vue.js.map +1 -1
  94. package/dist/views/system/position/index.vue.js +2 -2
  95. package/dist/views/system/position/index2.vue.js +57 -48
  96. package/dist/views/system/position/index2.vue.js.map +1 -1
  97. package/dist/views/system/recycle/index.vue.js +1 -1
  98. package/dist/views/system/recycle/index2.vue.js +3 -1
  99. package/dist/views/system/recycle/index2.vue.js.map +1 -1
  100. package/dist/views/system/role/components/GrantMenuSheet.vue.d.ts +2 -0
  101. package/dist/views/system/role/components/GrantMenuSheet.vue.js +2 -2
  102. package/dist/views/system/role/components/GrantMenuSheet2.vue.js +54 -49
  103. package/dist/views/system/role/components/GrantMenuSheet2.vue.js.map +1 -1
  104. package/dist/views/system/role/components/GrantMenuTable.vue.js +1 -1
  105. package/dist/views/system/role/components/GrantMenuTable2.vue.js +159 -195
  106. package/dist/views/system/role/components/GrantMenuTable2.vue.js.map +1 -1
  107. package/dist/views/system/role/components/grantMenuGroups.d.ts +54 -0
  108. package/dist/views/system/role/components/grantMenuGroups.js +116 -76
  109. package/dist/views/system/role/components/grantMenuGroups.js.map +1 -1
  110. package/dist/views/system/role/index.vue.js +2 -2
  111. package/dist/views/system/role/index2.vue.js +152 -145
  112. package/dist/views/system/role/index2.vue.js.map +1 -1
  113. package/dist/views/system/session/index2.vue.js +39 -35
  114. package/dist/views/system/session/index2.vue.js.map +1 -1
  115. package/dist/views/system/user/components/UserGrantEffectiveTable.vue.d.ts +10 -0
  116. package/dist/views/system/user/components/UserGrantEffectiveTable.vue.js +5 -0
  117. package/dist/views/system/user/components/UserGrantEffectiveTable.vue.js.map +1 -0
  118. package/dist/views/system/user/components/UserGrantEffectiveTable2.vue.js +96 -0
  119. package/dist/views/system/user/components/UserGrantEffectiveTable2.vue.js.map +1 -0
  120. package/dist/views/system/user/components/UserGrantMenuSheet.vue.d.ts +13 -0
  121. package/dist/views/system/user/components/UserGrantMenuSheet.vue.js +8 -0
  122. package/dist/views/system/user/components/UserGrantMenuSheet.vue.js.map +1 -0
  123. package/dist/views/system/user/components/UserGrantMenuSheet2.vue.js +216 -0
  124. package/dist/views/system/user/components/UserGrantMenuSheet2.vue.js.map +1 -0
  125. package/dist/views/system/user/components/UserGrantMenuTable.vue.d.ts +13 -0
  126. package/dist/views/system/user/components/UserGrantMenuTable.vue.js +8 -0
  127. package/dist/views/system/user/components/UserGrantMenuTable.vue.js.map +1 -0
  128. package/dist/views/system/user/components/UserGrantMenuTable2.vue.js +186 -0
  129. package/dist/views/system/user/components/UserGrantMenuTable2.vue.js.map +1 -0
  130. package/dist/views/system/user/components/UserGrantNodeRow.vue.d.ts +31 -0
  131. package/dist/views/system/user/components/UserGrantNodeRow.vue.js +8 -0
  132. package/dist/views/system/user/components/UserGrantNodeRow.vue.js.map +1 -0
  133. package/dist/views/system/user/components/UserGrantNodeRow2.vue.js +171 -0
  134. package/dist/views/system/user/components/UserGrantNodeRow2.vue.js.map +1 -0
  135. package/dist/views/system/user/components/UserGrantOverviewDrawer.vue.d.ts +21 -0
  136. package/dist/views/system/user/components/UserGrantOverviewDrawer.vue.js +5 -0
  137. package/dist/views/system/user/components/UserGrantOverviewDrawer.vue.js.map +1 -0
  138. package/dist/views/system/user/components/UserGrantOverviewDrawer2.vue.js +178 -0
  139. package/dist/views/system/user/components/UserGrantOverviewDrawer2.vue.js.map +1 -0
  140. package/dist/views/system/user/components/userGrantState.d.ts +64 -0
  141. package/dist/views/system/user/components/userGrantState.js +117 -0
  142. package/dist/views/system/user/components/userGrantState.js.map +1 -0
  143. package/dist/views/system/user/index.vue.js +2 -2
  144. package/dist/views/system/user/index2.vue.js +250 -207
  145. package/dist/views/system/user/index2.vue.js.map +1 -1
  146. package/package.json +3 -3
@@ -1,23 +1,23 @@
1
- import { rgba as z, mix as G } from "./mix.js";
2
- import { deriveAccentTokens as J } from "./accentTokens.js";
1
+ import { rgba as I, mix as O } from "./mix.js";
2
+ import { deriveAccentTokens as K } from "./accentTokens.js";
3
3
  const o = (c) => getComputedStyle(document.documentElement).getPropertyValue(c).trim();
4
- function A(c) {
5
- const b = G(c, "#FFFFFF", 0.12);
6
- return { base: c, hover: b, pressed: G(c, "#000000", 0.12), suppl: b };
4
+ function B(c) {
5
+ const b = O(c, "#FFFFFF", 0.12);
6
+ return { base: c, hover: b, pressed: O(c, "#000000", 0.12), suppl: b };
7
7
  }
8
- function X(c) {
9
- const { dark: b } = c, N = J(c.accent, b), { signal: t, acc: e, onAcc: m, hover: I, pressed: O, activeFg: u, linkFg: p, ring: s } = N, F = A(o("--ok")), H = A(o("--warn")), T = A(o("--err")), f = A(o("--info")), r = o("--text-1"), i = o("--text-2"), l = o("--text-3"), B = o("--text-4"), h = o("--border"), d = o("--separator"), Q = o("--hairline"), $ = o("--hairline-strong"), P = o("--glass-strong"), n = o("--fill"), S = o("--fill-strong"), x = o("--hover"), g = o("--pressed"), C = o("--input"), M = o("--input-disabled"), w = o("--bg-card"), a = o("--bg-elevated"), k = o("--seg-track"), D = o("--seg-thumb"), V = o("--shadow-1"), y = o("--shadow-2"), W = o("--shadow-3"), j = o("--th-bg"), L = o("--th-bg-hover"), q = o("--td-bg-hover"), v = o("--radius-md"), E = {
8
+ function Y(c) {
9
+ const { dark: b } = c, Q = K(c.accent, b), { signal: t, acc: e, onAcc: m, hover: k, pressed: V, activeFg: u, linkFg: p, ring: s } = Q, H = B(o("--ok")), F = B(o("--warn")), T = B(o("--err")), f = B(o("--info")), r = o("--text-1"), i = o("--text-2"), l = o("--text-3"), M = o("--text-4"), h = o("--border"), d = o("--separator"), j = o("--hairline"), P = o("--hairline-strong"), D = o("--tooltip-bg"), w = o("--glass-strong"), n = o("--fill"), S = o("--fill-strong"), x = o("--hover"), g = o("--pressed"), C = o("--input"), R = o("--input-disabled"), y = o("--bg-card"), a = o("--bg-elevated"), W = o("--seg-track"), L = o("--seg-thumb"), $ = o("--shadow-1"), A = o("--shadow-2"), E = o("--shadow-3"), q = o("--th-bg"), G = o("--th-bg-hover"), J = o("--td-bg-hover"), v = o("--radius-md"), N = {
10
10
  borderRadius: v,
11
11
  color: C,
12
12
  colorActive: C,
13
- colorDisabled: M,
13
+ colorDisabled: R,
14
14
  border: `1px solid ${h}`,
15
15
  borderHover: `1px solid ${o("--select-border-hover")}`,
16
16
  borderActive: `1px solid ${t}`,
17
17
  borderFocus: `1px solid ${t}`,
18
18
  boxShadowActive: s,
19
19
  boxShadowFocus: s
20
- }, R = {
20
+ }, z = {
21
21
  borderRadius: o("--radius-xs"),
22
22
  boxShadowFocus: s,
23
23
  checkMarkColor: "#FFFFFF",
@@ -31,17 +31,17 @@ function X(c) {
31
31
  return {
32
32
  common: {
33
33
  primaryColor: e,
34
- primaryColorHover: I,
35
- primaryColorPressed: O,
36
- primaryColorSuppl: I,
37
- successColor: F.base,
38
- successColorHover: F.hover,
39
- successColorPressed: F.pressed,
40
- successColorSuppl: F.suppl,
41
- warningColor: H.base,
42
- warningColorHover: H.hover,
43
- warningColorPressed: H.pressed,
44
- warningColorSuppl: H.suppl,
34
+ primaryColorHover: k,
35
+ primaryColorPressed: V,
36
+ primaryColorSuppl: k,
37
+ successColor: H.base,
38
+ successColorHover: H.hover,
39
+ successColorPressed: H.pressed,
40
+ successColorSuppl: H.suppl,
41
+ warningColor: F.base,
42
+ warningColorHover: F.hover,
43
+ warningColorPressed: F.pressed,
44
+ warningColorSuppl: F.suppl,
45
45
  errorColor: T.base,
46
46
  errorColorHover: T.hover,
47
47
  errorColorPressed: T.pressed,
@@ -60,14 +60,14 @@ function X(c) {
60
60
  textColor2: i,
61
61
  textColor3: l,
62
62
  placeholderColor: l,
63
- textColorDisabled: B,
63
+ textColorDisabled: M,
64
64
  borderColor: h,
65
65
  dividerColor: d,
66
66
  // 两者同色会让禁用框和可填框长一个样,操作员分不清哪里能输入,必须走不同令牌。
67
67
  // 这两个 common 变量流向 Input 与 InternalSelection,
68
68
  // 即 NInput / NInputNumber / NSelect / NDatePicker / NCascader 等全部输入类组件。
69
69
  inputColor: C,
70
- inputColorDisabled: M,
70
+ inputColorDisabled: R,
71
71
  actionColor: n,
72
72
  tableHeaderColor: "transparent",
73
73
  hoverColor: x,
@@ -93,9 +93,9 @@ function X(c) {
93
93
  heightMedium: "30px",
94
94
  heightLarge: "42px",
95
95
  heightHuge: "46px",
96
- boxShadow1: V,
97
- boxShadow2: y,
98
- boxShadow3: W,
96
+ boxShadow1: $,
97
+ boxShadow2: A,
98
+ boxShadow3: E,
99
99
  cubicBezierEaseInOut: "cubic-bezier(.2, .8, .2, 1)"
100
100
  },
101
101
  Button: {
@@ -143,7 +143,7 @@ function X(c) {
143
143
  Input: {
144
144
  borderRadius: v,
145
145
  color: C,
146
- colorDisabled: M,
146
+ colorDisabled: R,
147
147
  colorFocus: C,
148
148
  border: `1px solid ${h}`,
149
149
  borderHover: `1px solid ${o("--input-border-hover")}`,
@@ -155,7 +155,7 @@ function X(c) {
155
155
  },
156
156
  Select: {
157
157
  peers: {
158
- InternalSelection: E,
158
+ InternalSelection: N,
159
159
  InternalSelectMenu: {
160
160
  borderRadius: "12px",
161
161
  optionHeightMedium: "30px",
@@ -164,7 +164,7 @@ function X(c) {
164
164
  }
165
165
  }
166
166
  },
167
- TreeSelect: { peers: { InternalSelection: E } },
167
+ TreeSelect: { peers: { InternalSelection: N } },
168
168
  DatePicker: {
169
169
  peers: {
170
170
  Input: {
@@ -179,7 +179,7 @@ function X(c) {
179
179
  peers: { Input: { color: C, borderFocus: `1px solid ${t}`, boxShadowFocus: s } }
180
180
  },
181
181
  Card: {
182
- color: w,
182
+ color: y,
183
183
  colorEmbedded: n,
184
184
  borderColor: "transparent",
185
185
  borderRadius: o("--radius-lg"),
@@ -192,17 +192,18 @@ function X(c) {
192
192
  actionColor: n
193
193
  },
194
194
  DataTable: {
195
- thColor: j,
196
- thColorHover: L,
197
- thColorSorting: L,
195
+ thColor: q,
196
+ thColorHover: G,
197
+ thColorSorting: G,
198
198
  // 内容层不透明:行底取实色卡片色(固定列 sticky 叠在别的列上不会透底),不加斑马纹(tdColorStriped 同色)
199
- tdColor: w,
200
- tdColorHover: q,
201
- tdColorStriped: w,
202
- tdColorSorting: w,
199
+ tdColor: y,
200
+ tdColorHover: J,
201
+ tdColorStriped: y,
202
+ tdColorSorting: y,
203
203
  thTextColor: i,
204
204
  thFontWeight: "600",
205
205
  thIconColor: l,
206
+ // 表格线(列竖线 / 外框 / 行线)的标准就是 --separator(亮色 0.16),不换更实的线色:见 DESIGN.md §5「表格线色」
206
207
  borderColor: d,
207
208
  borderRadius: "10px",
208
209
  thPaddingMedium: "6px 12px",
@@ -211,16 +212,16 @@ function X(c) {
211
212
  thPaddingSmall: "6px 10px",
212
213
  tdPaddingSmall: "4px 10px",
213
214
  fontSizeSmall: "14px",
214
- peers: { Checkbox: R }
215
+ peers: { Checkbox: z }
215
216
  },
216
217
  Menu: {
217
218
  borderRadius: v,
218
219
  itemHeight: "34px",
219
220
  fontSize: "15px",
220
221
  itemColorHover: x,
221
- itemColorActive: z(t, b ? 0.16 : 0.09),
222
- itemColorActiveHover: z(t, b ? 0.2 : 0.12),
223
- itemColorActiveCollapsed: z(t, b ? 0.16 : 0.09),
222
+ itemColorActive: I(t, b ? 0.16 : 0.09),
223
+ itemColorActiveHover: I(t, b ? 0.2 : 0.12),
224
+ itemColorActiveCollapsed: I(t, b ? 0.16 : 0.09),
224
225
  // 侧栏标签用主文字色(macOS 侧栏就是 label 主色,不是次级灰);选中 / 悬停靠底色区分
225
226
  itemTextColor: r,
226
227
  itemTextColorHover: r,
@@ -246,8 +247,8 @@ function X(c) {
246
247
  groupTextColor: l
247
248
  },
248
249
  Tabs: {
249
- colorSegment: k,
250
- tabColorSegment: D,
250
+ colorSegment: W,
251
+ tabColorSegment: L,
251
252
  tabBorderRadius: "8px",
252
253
  tabTextColorSegment: i,
253
254
  tabTextColorActiveSegment: r,
@@ -264,8 +265,8 @@ function X(c) {
264
265
  },
265
266
  Radio: {
266
267
  buttonBorderRadius: "8px",
267
- buttonColor: k,
268
- buttonColorActive: D,
268
+ buttonColor: W,
269
+ buttonColorActive: L,
269
270
  buttonBorderColor: "transparent",
270
271
  buttonBorderColorActive: "transparent",
271
272
  buttonBorderColorHover: "transparent",
@@ -279,13 +280,13 @@ function X(c) {
279
280
  boxShadowActive: `inset 0 0 0 1px ${e}`,
280
281
  boxShadowFocus: s
281
282
  },
282
- Checkbox: R,
283
+ Checkbox: z,
283
284
  Tree: {
284
285
  nodeBorderRadius: "8px",
285
286
  nodeColorHover: x,
286
- nodeColorActive: P,
287
+ nodeColorActive: w,
287
288
  nodeHeight: "30px",
288
- peers: { Checkbox: R }
289
+ peers: { Checkbox: z }
289
290
  },
290
291
  Switch: {
291
292
  railColor: o("--switch-off"),
@@ -308,9 +309,9 @@ function X(c) {
308
309
  color: n,
309
310
  textColor: i,
310
311
  fontWeightStrong: "500",
311
- colorPrimary: P,
312
+ colorPrimary: w,
312
313
  textColorPrimary: r,
313
- borderPrimary: `1px solid ${$}`
314
+ borderPrimary: `1px solid ${P}`
314
315
  },
315
316
  List: { color: "transparent", colorHover: x, borderColor: d },
316
317
  Dialog: {
@@ -320,7 +321,7 @@ function X(c) {
320
321
  titleFontSize: "17px",
321
322
  titleFontWeight: "600"
322
323
  },
323
- Modal: { color: a, boxShadow: W },
324
+ Modal: { color: a, boxShadow: E },
324
325
  Drawer: {
325
326
  color: a,
326
327
  headerPadding: "18px 24px",
@@ -331,7 +332,7 @@ function X(c) {
331
332
  headerBorderBottom: `1px solid ${d}`,
332
333
  footerBorderTop: `1px solid ${d}`
333
334
  },
334
- Popover: { color: a, borderRadius: o("--radius-lg"), boxShadow: y },
335
+ Popover: { color: a, borderRadius: o("--radius-lg"), boxShadow: A },
335
336
  Dropdown: {
336
337
  color: a,
337
338
  borderRadius: "12px",
@@ -340,38 +341,42 @@ function X(c) {
340
341
  optionColorHover: x,
341
342
  dividerColor: d
342
343
  },
344
+ // 提示气泡和下拉 / 弹层同一套浮层表面,随亮暗主题走(亮色近白底深字,暗色深蓝底亮字),不做亮暗都黑的特例。
345
+ // 底色、字色、阴影成套给:Tooltip 底下是 Popover,Naive 合并时全局 `Popover` 覆盖(上面的 elevated 与大阴影)
346
+ // 压过 Tooltip 自带的值,所以同一套要在 peers.Popover 里再写一遍(它在合并链最后,只对 Tooltip 生效)。
347
+ // 阴影用描边 + 卡片级的轻阴影:气泡很小,弹层那种大范围投影会显得过重。
343
348
  Tooltip: {
344
- color: o("--tooltip-bg"),
345
- textColor: "#FFFFFF",
349
+ color: D,
350
+ textColor: r,
346
351
  borderRadius: "8px",
347
352
  padding: "5px 9px",
348
- // Tooltip 底下是 Popover,而 Naive 合并时全局 `Popover` 覆盖(上面的实底 elevated)压过 Tooltip 自带的 color,
349
- // 文字色却仍是 Tooltip 的白色 → 亮色下白底白字。peers.Popover 在合并链最后,只对 Tooltip 生效。
353
+ boxShadow: `0 0 0 1px ${P}, ${$}`,
350
354
  peers: {
351
355
  Popover: {
352
- color: o("--tooltip-bg"),
353
- textColor: "#FFFFFF",
356
+ color: D,
357
+ textColor: r,
354
358
  borderRadius: "8px",
355
- padding: "5px 9px"
359
+ padding: "5px 9px",
360
+ boxShadow: `0 0 0 1px ${P}, ${$}`
356
361
  }
357
362
  }
358
363
  },
359
- Message: { borderRadius: "12px", color: a, padding: "10px 16px", boxShadow: y },
360
- Notification: { borderRadius: "16px", color: a, boxShadow: y },
364
+ Message: { borderRadius: "12px", color: a, padding: "10px 16px", boxShadow: A },
365
+ Notification: { borderRadius: "16px", color: a, boxShadow: A },
361
366
  Alert: {
362
367
  borderRadius: "10px",
363
368
  colorInfo: n,
364
- borderInfo: `1px solid ${Q}`,
369
+ borderInfo: `1px solid ${j}`,
365
370
  iconColorInfo: i,
366
371
  titleTextColorInfo: r,
367
372
  contentTextColorInfo: i
368
373
  },
369
374
  Pagination: {
370
375
  itemBorderRadius: "8px",
371
- itemColorActive: P,
376
+ itemColorActive: w,
372
377
  itemTextColorActive: r,
373
- itemBorderActive: `1px solid ${$}`,
374
- itemColorActiveHover: P
378
+ itemBorderActive: `1px solid ${P}`,
379
+ itemColorActiveHover: w
375
380
  },
376
381
  Statistic: {
377
382
  valueFontSize: "26px",
@@ -386,7 +391,7 @@ function X(c) {
386
391
  tdColor: "transparent"
387
392
  },
388
393
  Progress: { railColor: n, fillColor: e },
389
- Breadcrumb: { itemTextColor: l, itemTextColorActive: r, separatorColor: B },
394
+ Breadcrumb: { itemTextColor: l, itemTextColorActive: r, separatorColor: M },
390
395
  Slider: {
391
396
  fillColor: e,
392
397
  fillColorHover: e,
@@ -405,7 +410,7 @@ function X(c) {
405
410
  splitorColorProcess: d,
406
411
  splitorColorWait: d
407
412
  },
408
- Empty: { textColor: l, iconColor: B },
413
+ Empty: { textColor: l, iconColor: M },
409
414
  Divider: { color: d },
410
415
  Timeline: { circleBorder: `2px solid ${h}`, titleFontWeight: "500", lineColor: d },
411
416
  Badge: { color: o("--badge-bg") },
@@ -414,6 +419,6 @@ function X(c) {
414
419
  };
415
420
  }
416
421
  export {
417
- X as buildThemeOverrides
422
+ Y as buildThemeOverrides
418
423
  };
419
424
  //# sourceMappingURL=naive-theme.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"naive-theme.js","sources":["../../src/theme/naive-theme.ts"],"sourcesContent":["import type { GlobalThemeOverrides } from 'naive-ui'\nimport { mix, rgba } from './mix'\nimport { deriveAccentTokens } from './accentTokens'\n\n// 读取当前主题下的 token 值(getComputedStyle 同步反映最新的 data-theme)。\nconst v = (name: string): string =>\n getComputedStyle(document.documentElement).getPropertyValue(name).trim()\n\n/** 语义色 hover/pressed 统一派生(hover 往白提 12%,pressed 往黑压 12%)。主色不在此列——它走 `mix.ts` 的 `derivePrimary`。 */\nfunction semantic(base: string) {\n const hover = mix(base, '#FFFFFF', 0.12)\n return { base, hover, pressed: mix(base, '#000000', 0.12), suppl: hover }\n}\n\n/**\n * tokens.css → Naive UI GlobalThemeOverrides(映射关系见 DESIGN.md 映射表)。\n * 强调色相关的值由 accent 按 `accentTokens.ts` 算;其余颜色 / 度量从当前 CSS 变量读取。\n *\n * 度量(中文界面 14px 偏小,整体比 Naive 默认大一档):正文 15px、默认控件高 30px(小 24、迷你 20)、Large 42px 只留给登录页与触屏窄档。\n * 按钮默认款(没写 type 的 NButton,如表格库里的「搜索」「更多」)渲染成与 secondary 同色同无描边,整站只剩一种次按钮。\n */\nexport function buildThemeOverrides(opts: { dark: boolean; accent: string }): GlobalThemeOverrides {\n const { dark } = opts\n const a = deriveAccentTokens(opts.accent, dark)\n const { signal, acc, onAcc, hover, pressed, activeFg, linkFg, ring } = a\n\n const ok = semantic(v('--ok'))\n const warn = semantic(v('--warn'))\n const err = semantic(v('--err'))\n const info = semantic(v('--info'))\n\n const text1 = v('--text-1')\n const text2 = v('--text-2')\n const text3 = v('--text-3')\n const text4 = v('--text-4')\n const border = v('--border')\n const separator = v('--separator')\n const hairline = v('--hairline')\n const hairlineStrong = v('--hairline-strong')\n const glassStrong = v('--glass-strong')\n const fill = v('--fill')\n const fillStrong = v('--fill-strong')\n const hoverBg = v('--hover')\n const pressedBg = v('--pressed')\n const input = v('--input')\n const inputDisabled = v('--input-disabled')\n const cardSolid = v('--bg-card')\n const elevated = v('--bg-elevated')\n const segTrack = v('--seg-track')\n const segThumb = v('--seg-thumb')\n const shadow1 = v('--shadow-1')\n const shadow2 = v('--shadow-2')\n const shadow3 = v('--shadow-3')\n const thBg = v('--th-bg')\n const thBgHover = v('--th-bg-hover')\n const tdBgHover = v('--td-bg-hover')\n\n const radius = v('--radius-md') // 9\n const selection = {\n borderRadius: radius,\n color: input,\n colorActive: input,\n colorDisabled: inputDisabled,\n border: `1px solid ${border}`,\n borderHover: `1px solid ${v('--select-border-hover')}`,\n borderActive: `1px solid ${signal}`,\n borderFocus: `1px solid ${signal}`,\n boxShadowActive: ring,\n boxShadowFocus: ring,\n }\n const checkbox = {\n borderRadius: v('--radius-xs'),\n boxShadowFocus: ring,\n checkMarkColor: '#FFFFFF',\n colorChecked: acc,\n borderChecked: `1px solid ${acc}`,\n colorIndeterminate: acc,\n borderIndeterminate: `1px solid ${acc}`,\n border: `1px solid ${border}`,\n color: input,\n }\n\n return {\n common: {\n primaryColor: acc,\n primaryColorHover: hover,\n primaryColorPressed: pressed,\n primaryColorSuppl: hover,\n\n successColor: ok.base,\n successColorHover: ok.hover,\n successColorPressed: ok.pressed,\n successColorSuppl: ok.suppl,\n warningColor: warn.base,\n warningColorHover: warn.hover,\n warningColorPressed: warn.pressed,\n warningColorSuppl: warn.suppl,\n errorColor: err.base,\n errorColorHover: err.hover,\n errorColorPressed: err.pressed,\n errorColorSuppl: err.suppl,\n infoColor: info.base,\n infoColorHover: info.hover,\n infoColorPressed: info.pressed,\n infoColorSuppl: info.suppl,\n\n bodyColor: v('--bg-app'),\n cardColor: v('--bg-card-glass'),\n tableColor: 'transparent',\n modalColor: elevated,\n popoverColor: elevated,\n\n textColorBase: text1,\n textColor1: text1,\n textColor2: text2,\n textColor3: text3,\n placeholderColor: text3,\n textColorDisabled: text4,\n\n borderColor: border,\n dividerColor: separator,\n // 两者同色会让禁用框和可填框长一个样,操作员分不清哪里能输入,必须走不同令牌。\n // 这两个 common 变量流向 Input 与 InternalSelection,\n // 即 NInput / NInputNumber / NSelect / NDatePicker / NCascader 等全部输入类组件。\n inputColor: input,\n inputColorDisabled: inputDisabled,\n actionColor: fill,\n tableHeaderColor: 'transparent',\n hoverColor: hoverBg,\n pressedColor: pressedBg,\n closeColorHover: hoverBg,\n closeColorPressed: pressedBg,\n clearColor: text3,\n\n borderRadius: radius,\n borderRadiusSmall: v('--radius-sm'),\n fontFamily: v('--font'),\n fontFamilyMono: v('--font-mono'),\n fontWeightStrong: '600',\n fontSizeMini: '13px',\n fontSizeTiny: '14px',\n fontSizeSmall: '14px',\n fontSizeMedium: '15px',\n fontSizeLarge: '16px',\n fontSizeHuge: '17px',\n fontSize: '15px',\n heightMini: '20px',\n heightTiny: '22px',\n heightSmall: '24px',\n heightMedium: '30px',\n heightLarge: '42px',\n heightHuge: '46px',\n\n boxShadow1: shadow1,\n boxShadow2: shadow2,\n boxShadow3: shadow3,\n cubicBezierEaseInOut: 'cubic-bezier(.2, .8, .2, 1)',\n },\n Button: {\n fontWeight: '500',\n borderRadiusMedium: radius,\n borderRadiusSmall: '7px',\n borderRadiusLarge: '12px',\n fontSizeLarge: '15px',\n // 点击不出扩散波纹:那是 Ant 系的反馈,macOS 的按钮只有按下态的底色变化(colorPressed)。\n // 波纹是定时器切 class + 无 fill-mode 的 CSS 动画,时长归零即彻底不可见,不必逐类型清 rippleColor。\n rippleDuration: '0s',\n paddingMedium: '0 12px',\n paddingSmall: '0 10px',\n textColorPrimary: onAcc,\n textColorHoverPrimary: onAcc,\n textColorPressedPrimary: onAcc,\n textColorFocusPrimary: onAcc,\n textColorDisabledPrimary: onAcc,\n colorSecondary: fill,\n colorSecondaryHover: fillStrong,\n colorSecondaryPressed: pressedBg,\n // 没写 type 的默认款(库里的「搜索」「更多」)渲染成与 secondary 同款:中性灰底、无描边\n color: fill,\n colorHover: fillStrong,\n colorPressed: pressedBg,\n colorFocus: fill,\n border: '1px solid transparent',\n borderHover: '1px solid transparent',\n borderPressed: '1px solid transparent',\n borderFocus: `1px solid ${signal}`,\n // 文字 / 行内操作按钮(详情、编辑):浅色 / 深色统一用 linkFg\n textColorTextPrimary: linkFg,\n textColorTextHoverPrimary: linkFg,\n textColorTextPressedPrimary: linkFg,\n textColorTextFocusPrimary: linkFg,\n textColorGhostPrimary: linkFg,\n textColorGhostHoverPrimary: linkFg,\n textColorGhostPressedPrimary: linkFg,\n textColorGhostFocusPrimary: linkFg,\n colorQuaternaryHover: hoverBg,\n colorQuaternaryPressed: pressedBg,\n colorTertiaryHover: hoverBg,\n colorTertiaryPressed: pressedBg,\n },\n Input: {\n borderRadius: radius,\n color: input,\n colorDisabled: inputDisabled,\n colorFocus: input,\n border: `1px solid ${border}`,\n borderHover: `1px solid ${v('--input-border-hover')}`,\n borderFocus: `1px solid ${signal}`,\n boxShadowFocus: ring,\n heightLarge: '42px',\n fontSizeLarge: '15px',\n caretColor: signal,\n },\n Select: {\n peers: {\n InternalSelection: selection,\n InternalSelectMenu: {\n borderRadius: '12px',\n optionHeightMedium: '30px',\n color: elevated,\n optionCheckColor: signal,\n },\n },\n },\n TreeSelect: { peers: { InternalSelection: selection } },\n DatePicker: {\n peers: {\n Input: {\n borderRadius: radius,\n color: input,\n borderFocus: `1px solid ${signal}`,\n boxShadowFocus: ring,\n },\n },\n },\n InputNumber: {\n peers: { Input: { color: input, borderFocus: `1px solid ${signal}`, boxShadowFocus: ring } },\n },\n Card: {\n color: cardSolid,\n colorEmbedded: fill,\n borderColor: 'transparent',\n borderRadius: v('--radius-lg'),\n titleFontSizeMedium: '15px',\n titleFontSizeSmall: '15px',\n titleFontWeight: '600',\n paddingMedium: '12px 14px 14px',\n paddingSmall: '10px 12px',\n colorModal: elevated,\n actionColor: fill,\n },\n DataTable: {\n thColor: thBg,\n thColorHover: thBgHover,\n thColorSorting: thBgHover,\n // 内容层不透明:行底取实色卡片色(固定列 sticky 叠在别的列上不会透底),不加斑马纹(tdColorStriped 同色)\n tdColor: cardSolid,\n tdColorHover: tdBgHover,\n tdColorStriped: cardSolid,\n tdColorSorting: cardSolid,\n thTextColor: text2,\n thFontWeight: '600',\n thIconColor: text3,\n borderColor: separator,\n borderRadius: '10px',\n thPaddingMedium: '6px 12px',\n tdPaddingMedium: '4px 12px',\n fontSizeMedium: '15px',\n thPaddingSmall: '6px 10px',\n tdPaddingSmall: '4px 10px',\n fontSizeSmall: '14px',\n peers: { Checkbox: checkbox },\n },\n Menu: {\n borderRadius: radius,\n itemHeight: '34px',\n fontSize: '15px',\n itemColorHover: hoverBg,\n itemColorActive: rgba(signal, dark ? 0.16 : 0.09),\n itemColorActiveHover: rgba(signal, dark ? 0.2 : 0.12),\n itemColorActiveCollapsed: rgba(signal, dark ? 0.16 : 0.09),\n // 侧栏标签用主文字色(macOS 侧栏就是 label 主色,不是次级灰);选中 / 悬停靠底色区分\n itemTextColor: text1,\n itemTextColorHover: text1,\n // 侧栏图标与文字同色(每个状态都一致):平时主文字色,选中才跟随强调色;\n // 强调色只出现在选中项(行底色 + 加粗的图标文字),整条侧栏更安静\n itemIconColor: text1,\n itemIconColorHover: text1,\n itemIconColorCollapsed: text1,\n itemTextColorActive: activeFg,\n itemIconColorActive: activeFg,\n itemTextColorActiveHover: activeFg,\n itemIconColorActiveHover: activeFg,\n itemTextColorChildActive: text1,\n itemIconColorChildActive: text1,\n itemTextColorChildActiveHover: text1,\n itemIconColorChildActiveHover: text1,\n arrowColor: text3,\n arrowColorHover: text2,\n arrowColorActive: activeFg,\n arrowColorActiveHover: activeFg,\n arrowColorChildActive: text2,\n arrowColorChildActiveHover: text1,\n groupTextColor: text3,\n },\n Tabs: {\n colorSegment: segTrack,\n tabColorSegment: segThumb,\n tabBorderRadius: '8px',\n tabTextColorSegment: text2,\n tabTextColorActiveSegment: text1,\n tabTextColorHoverSegment: text1,\n tabFontWeightActive: '500',\n tabColor: 'transparent',\n tabBorderColor: 'transparent',\n tabTextColorCard: text3,\n tabTextColorActiveCard: activeFg,\n tabTextColorHoverCard: text1,\n tabTextColorActiveLine: text1,\n tabTextColorHoverLine: text1,\n barColor: acc,\n },\n Radio: {\n buttonBorderRadius: '8px',\n buttonColor: segTrack,\n buttonColorActive: segThumb,\n buttonBorderColor: 'transparent',\n buttonBorderColorActive: 'transparent',\n buttonBorderColorHover: 'transparent',\n buttonTextColor: text2,\n buttonTextColorActive: text1,\n buttonTextColorHover: text1,\n buttonBoxShadow: 'none',\n buttonBoxShadowHover: 'none',\n buttonBoxShadowFocus: ring,\n dotColorActive: acc,\n boxShadowActive: `inset 0 0 0 1px ${acc}`,\n boxShadowFocus: ring,\n },\n Checkbox: checkbox,\n Tree: {\n nodeBorderRadius: '8px',\n nodeColorHover: hoverBg,\n nodeColorActive: glassStrong,\n nodeHeight: '30px',\n peers: { Checkbox: checkbox },\n },\n Switch: {\n railColor: v('--switch-off'),\n railColorActive: acc,\n boxShadowFocus: ring,\n railHeightMedium: '24px',\n railWidthMedium: '42px',\n buttonHeightMedium: '20px',\n buttonWidthMedium: '20px',\n buttonWidthPressedMedium: '26px',\n },\n Tag: {\n heightTiny: '20px',\n heightSmall: '22px',\n heightMedium: '24px',\n fontSizeTiny: '13px',\n fontSizeSmall: '14px',\n fontSizeMedium: '15px',\n borderRadius: v('--radius-sm'),\n color: fill,\n textColor: text2,\n fontWeightStrong: '500',\n colorPrimary: glassStrong,\n textColorPrimary: text1,\n borderPrimary: `1px solid ${hairlineStrong}`,\n },\n List: { color: 'transparent', colorHover: hoverBg, borderColor: separator },\n Dialog: {\n borderRadius: v('--radius-xl'),\n color: elevated,\n padding: '24px 26px 22px',\n titleFontSize: '17px',\n titleFontWeight: '600',\n },\n Modal: { color: elevated, boxShadow: shadow3 },\n Drawer: {\n color: elevated,\n headerPadding: '18px 24px',\n bodyPadding: '20px 24px',\n footerPadding: '14px 24px',\n titleFontSize: '17px',\n titleFontWeight: '600',\n headerBorderBottom: `1px solid ${separator}`,\n footerBorderTop: `1px solid ${separator}`,\n },\n Popover: { color: elevated, borderRadius: v('--radius-lg'), boxShadow: shadow2 },\n Dropdown: {\n color: elevated,\n borderRadius: '12px',\n padding: '5px',\n optionHeightMedium: '30px',\n optionColorHover: hoverBg,\n dividerColor: separator,\n },\n Tooltip: {\n color: v('--tooltip-bg'),\n textColor: '#FFFFFF',\n borderRadius: '8px',\n padding: '5px 9px',\n // Tooltip 底下是 Popover,而 Naive 合并时全局 `Popover` 覆盖(上面的实底 elevated)压过 Tooltip 自带的 color,\n // 文字色却仍是 Tooltip 的白色 → 亮色下白底白字。peers.Popover 在合并链最后,只对 Tooltip 生效。\n peers: {\n Popover: {\n color: v('--tooltip-bg'),\n textColor: '#FFFFFF',\n borderRadius: '8px',\n padding: '5px 9px',\n },\n },\n },\n Message: { borderRadius: '12px', color: elevated, padding: '10px 16px', boxShadow: shadow2 },\n Notification: { borderRadius: '16px', color: elevated, boxShadow: shadow2 },\n Alert: {\n borderRadius: '10px',\n colorInfo: fill,\n borderInfo: `1px solid ${hairline}`,\n iconColorInfo: text2,\n titleTextColorInfo: text1,\n contentTextColorInfo: text2,\n },\n Pagination: {\n itemBorderRadius: '8px',\n itemColorActive: glassStrong,\n itemTextColorActive: text1,\n itemBorderActive: `1px solid ${hairlineStrong}`,\n itemColorActiveHover: glassStrong,\n },\n Statistic: {\n valueFontSize: '26px',\n valueFontWeight: '500',\n labelFontSize: '13px',\n labelTextColor: text2,\n },\n Descriptions: {\n thColor: fill,\n borderColor: separator,\n thTextColor: text3,\n tdColor: 'transparent',\n },\n Progress: { railColor: fill, fillColor: acc },\n Breadcrumb: { itemTextColor: text3, itemTextColorActive: text1, separatorColor: text4 },\n Slider: {\n fillColor: acc,\n fillColorHover: acc,\n railColor: fillStrong,\n railColorHover: fillStrong,\n dotBorderActive: `2px solid ${acc}`,\n },\n Steps: {\n indicatorColorProcess: acc,\n indicatorTextColorProcess: onAcc,\n indicatorBorderColorProcess: acc,\n indicatorColorFinish: 'transparent',\n indicatorBorderColorFinish: border,\n indicatorTextColorFinish: text2,\n splitorColorFinish: text3,\n splitorColorProcess: separator,\n splitorColorWait: separator,\n },\n Empty: { textColor: text3, iconColor: text4 },\n Divider: { color: separator },\n Timeline: { circleBorder: `2px solid ${border}`, titleFontWeight: '500', lineColor: separator },\n Badge: { color: v('--badge-bg') },\n Scrollbar: { color: fillStrong, colorHover: border },\n Code: { textColor: text1 },\n }\n}\n"],"names":["v","name","semantic","base","hover","mix","buildThemeOverrides","opts","dark","a","deriveAccentTokens","signal","acc","onAcc","pressed","activeFg","linkFg","ring","ok","warn","err","info","text1","text2","text3","text4","border","separator","hairline","hairlineStrong","glassStrong","fill","fillStrong","hoverBg","pressedBg","input","inputDisabled","cardSolid","elevated","segTrack","segThumb","shadow1","shadow2","shadow3","thBg","thBgHover","tdBgHover","radius","selection","checkbox","rgba"],"mappings":"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"}
1
+ {"version":3,"file":"naive-theme.js","sources":["../../src/theme/naive-theme.ts"],"sourcesContent":["import type { GlobalThemeOverrides } from 'naive-ui'\nimport { mix, rgba } from './mix'\nimport { deriveAccentTokens } from './accentTokens'\n\n// 读取当前主题下的 token 值(getComputedStyle 同步反映最新的 data-theme)。\nconst v = (name: string): string =>\n getComputedStyle(document.documentElement).getPropertyValue(name).trim()\n\n/** 语义色 hover/pressed 统一派生(hover 往白提 12%,pressed 往黑压 12%)。主色不在此列——它走 `mix.ts` 的 `derivePrimary`。 */\nfunction semantic(base: string) {\n const hover = mix(base, '#FFFFFF', 0.12)\n return { base, hover, pressed: mix(base, '#000000', 0.12), suppl: hover }\n}\n\n/**\n * tokens.css → Naive UI GlobalThemeOverrides(映射关系见 DESIGN.md 映射表)。\n * 强调色相关的值由 accent 按 `accentTokens.ts` 算;其余颜色 / 度量从当前 CSS 变量读取。\n *\n * 度量(中文界面 14px 偏小,整体比 Naive 默认大一档):正文 15px、默认控件高 30px(小 24、迷你 20)、Large 42px 只留给登录页与触屏窄档。\n * 按钮默认款(没写 type 的 NButton,如表格库里的「搜索」「更多」)渲染成与 secondary 同色同无描边,整站只剩一种次按钮。\n */\nexport function buildThemeOverrides(opts: { dark: boolean; accent: string }): GlobalThemeOverrides {\n const { dark } = opts\n const a = deriveAccentTokens(opts.accent, dark)\n const { signal, acc, onAcc, hover, pressed, activeFg, linkFg, ring } = a\n\n const ok = semantic(v('--ok'))\n const warn = semantic(v('--warn'))\n const err = semantic(v('--err'))\n const info = semantic(v('--info'))\n\n const text1 = v('--text-1')\n const text2 = v('--text-2')\n const text3 = v('--text-3')\n const text4 = v('--text-4')\n const border = v('--border')\n const separator = v('--separator')\n const hairline = v('--hairline')\n const hairlineStrong = v('--hairline-strong')\n const tooltipBg = v('--tooltip-bg')\n const glassStrong = v('--glass-strong')\n const fill = v('--fill')\n const fillStrong = v('--fill-strong')\n const hoverBg = v('--hover')\n const pressedBg = v('--pressed')\n const input = v('--input')\n const inputDisabled = v('--input-disabled')\n const cardSolid = v('--bg-card')\n const elevated = v('--bg-elevated')\n const segTrack = v('--seg-track')\n const segThumb = v('--seg-thumb')\n const shadow1 = v('--shadow-1')\n const shadow2 = v('--shadow-2')\n const shadow3 = v('--shadow-3')\n const thBg = v('--th-bg')\n const thBgHover = v('--th-bg-hover')\n const tdBgHover = v('--td-bg-hover')\n\n const radius = v('--radius-md') // 9\n const selection = {\n borderRadius: radius,\n color: input,\n colorActive: input,\n colorDisabled: inputDisabled,\n border: `1px solid ${border}`,\n borderHover: `1px solid ${v('--select-border-hover')}`,\n borderActive: `1px solid ${signal}`,\n borderFocus: `1px solid ${signal}`,\n boxShadowActive: ring,\n boxShadowFocus: ring,\n }\n const checkbox = {\n borderRadius: v('--radius-xs'),\n boxShadowFocus: ring,\n checkMarkColor: '#FFFFFF',\n colorChecked: acc,\n borderChecked: `1px solid ${acc}`,\n colorIndeterminate: acc,\n borderIndeterminate: `1px solid ${acc}`,\n border: `1px solid ${border}`,\n color: input,\n }\n\n return {\n common: {\n primaryColor: acc,\n primaryColorHover: hover,\n primaryColorPressed: pressed,\n primaryColorSuppl: hover,\n\n successColor: ok.base,\n successColorHover: ok.hover,\n successColorPressed: ok.pressed,\n successColorSuppl: ok.suppl,\n warningColor: warn.base,\n warningColorHover: warn.hover,\n warningColorPressed: warn.pressed,\n warningColorSuppl: warn.suppl,\n errorColor: err.base,\n errorColorHover: err.hover,\n errorColorPressed: err.pressed,\n errorColorSuppl: err.suppl,\n infoColor: info.base,\n infoColorHover: info.hover,\n infoColorPressed: info.pressed,\n infoColorSuppl: info.suppl,\n\n bodyColor: v('--bg-app'),\n cardColor: v('--bg-card-glass'),\n tableColor: 'transparent',\n modalColor: elevated,\n popoverColor: elevated,\n\n textColorBase: text1,\n textColor1: text1,\n textColor2: text2,\n textColor3: text3,\n placeholderColor: text3,\n textColorDisabled: text4,\n\n borderColor: border,\n dividerColor: separator,\n // 两者同色会让禁用框和可填框长一个样,操作员分不清哪里能输入,必须走不同令牌。\n // 这两个 common 变量流向 Input 与 InternalSelection,\n // 即 NInput / NInputNumber / NSelect / NDatePicker / NCascader 等全部输入类组件。\n inputColor: input,\n inputColorDisabled: inputDisabled,\n actionColor: fill,\n tableHeaderColor: 'transparent',\n hoverColor: hoverBg,\n pressedColor: pressedBg,\n closeColorHover: hoverBg,\n closeColorPressed: pressedBg,\n clearColor: text3,\n\n borderRadius: radius,\n borderRadiusSmall: v('--radius-sm'),\n fontFamily: v('--font'),\n fontFamilyMono: v('--font-mono'),\n fontWeightStrong: '600',\n fontSizeMini: '13px',\n fontSizeTiny: '14px',\n fontSizeSmall: '14px',\n fontSizeMedium: '15px',\n fontSizeLarge: '16px',\n fontSizeHuge: '17px',\n fontSize: '15px',\n heightMini: '20px',\n heightTiny: '22px',\n heightSmall: '24px',\n heightMedium: '30px',\n heightLarge: '42px',\n heightHuge: '46px',\n\n boxShadow1: shadow1,\n boxShadow2: shadow2,\n boxShadow3: shadow3,\n cubicBezierEaseInOut: 'cubic-bezier(.2, .8, .2, 1)',\n },\n Button: {\n fontWeight: '500',\n borderRadiusMedium: radius,\n borderRadiusSmall: '7px',\n borderRadiusLarge: '12px',\n fontSizeLarge: '15px',\n // 点击不出扩散波纹:那是 Ant 系的反馈,macOS 的按钮只有按下态的底色变化(colorPressed)。\n // 波纹是定时器切 class + 无 fill-mode 的 CSS 动画,时长归零即彻底不可见,不必逐类型清 rippleColor。\n rippleDuration: '0s',\n paddingMedium: '0 12px',\n paddingSmall: '0 10px',\n textColorPrimary: onAcc,\n textColorHoverPrimary: onAcc,\n textColorPressedPrimary: onAcc,\n textColorFocusPrimary: onAcc,\n textColorDisabledPrimary: onAcc,\n colorSecondary: fill,\n colorSecondaryHover: fillStrong,\n colorSecondaryPressed: pressedBg,\n // 没写 type 的默认款(库里的「搜索」「更多」)渲染成与 secondary 同款:中性灰底、无描边\n color: fill,\n colorHover: fillStrong,\n colorPressed: pressedBg,\n colorFocus: fill,\n border: '1px solid transparent',\n borderHover: '1px solid transparent',\n borderPressed: '1px solid transparent',\n borderFocus: `1px solid ${signal}`,\n // 文字 / 行内操作按钮(详情、编辑):浅色 / 深色统一用 linkFg\n textColorTextPrimary: linkFg,\n textColorTextHoverPrimary: linkFg,\n textColorTextPressedPrimary: linkFg,\n textColorTextFocusPrimary: linkFg,\n textColorGhostPrimary: linkFg,\n textColorGhostHoverPrimary: linkFg,\n textColorGhostPressedPrimary: linkFg,\n textColorGhostFocusPrimary: linkFg,\n colorQuaternaryHover: hoverBg,\n colorQuaternaryPressed: pressedBg,\n colorTertiaryHover: hoverBg,\n colorTertiaryPressed: pressedBg,\n },\n Input: {\n borderRadius: radius,\n color: input,\n colorDisabled: inputDisabled,\n colorFocus: input,\n border: `1px solid ${border}`,\n borderHover: `1px solid ${v('--input-border-hover')}`,\n borderFocus: `1px solid ${signal}`,\n boxShadowFocus: ring,\n heightLarge: '42px',\n fontSizeLarge: '15px',\n caretColor: signal,\n },\n Select: {\n peers: {\n InternalSelection: selection,\n InternalSelectMenu: {\n borderRadius: '12px',\n optionHeightMedium: '30px',\n color: elevated,\n optionCheckColor: signal,\n },\n },\n },\n TreeSelect: { peers: { InternalSelection: selection } },\n DatePicker: {\n peers: {\n Input: {\n borderRadius: radius,\n color: input,\n borderFocus: `1px solid ${signal}`,\n boxShadowFocus: ring,\n },\n },\n },\n InputNumber: {\n peers: { Input: { color: input, borderFocus: `1px solid ${signal}`, boxShadowFocus: ring } },\n },\n Card: {\n color: cardSolid,\n colorEmbedded: fill,\n borderColor: 'transparent',\n borderRadius: v('--radius-lg'),\n titleFontSizeMedium: '15px',\n titleFontSizeSmall: '15px',\n titleFontWeight: '600',\n paddingMedium: '12px 14px 14px',\n paddingSmall: '10px 12px',\n colorModal: elevated,\n actionColor: fill,\n },\n DataTable: {\n thColor: thBg,\n thColorHover: thBgHover,\n thColorSorting: thBgHover,\n // 内容层不透明:行底取实色卡片色(固定列 sticky 叠在别的列上不会透底),不加斑马纹(tdColorStriped 同色)\n tdColor: cardSolid,\n tdColorHover: tdBgHover,\n tdColorStriped: cardSolid,\n tdColorSorting: cardSolid,\n thTextColor: text2,\n thFontWeight: '600',\n thIconColor: text3,\n // 表格线(列竖线 / 外框 / 行线)的标准就是 --separator(亮色 0.16),不换更实的线色:见 DESIGN.md §5「表格线色」\n borderColor: separator,\n borderRadius: '10px',\n thPaddingMedium: '6px 12px',\n tdPaddingMedium: '4px 12px',\n fontSizeMedium: '15px',\n thPaddingSmall: '6px 10px',\n tdPaddingSmall: '4px 10px',\n fontSizeSmall: '14px',\n peers: { Checkbox: checkbox },\n },\n Menu: {\n borderRadius: radius,\n itemHeight: '34px',\n fontSize: '15px',\n itemColorHover: hoverBg,\n itemColorActive: rgba(signal, dark ? 0.16 : 0.09),\n itemColorActiveHover: rgba(signal, dark ? 0.2 : 0.12),\n itemColorActiveCollapsed: rgba(signal, dark ? 0.16 : 0.09),\n // 侧栏标签用主文字色(macOS 侧栏就是 label 主色,不是次级灰);选中 / 悬停靠底色区分\n itemTextColor: text1,\n itemTextColorHover: text1,\n // 侧栏图标与文字同色(每个状态都一致):平时主文字色,选中才跟随强调色;\n // 强调色只出现在选中项(行底色 + 加粗的图标文字),整条侧栏更安静\n itemIconColor: text1,\n itemIconColorHover: text1,\n itemIconColorCollapsed: text1,\n itemTextColorActive: activeFg,\n itemIconColorActive: activeFg,\n itemTextColorActiveHover: activeFg,\n itemIconColorActiveHover: activeFg,\n itemTextColorChildActive: text1,\n itemIconColorChildActive: text1,\n itemTextColorChildActiveHover: text1,\n itemIconColorChildActiveHover: text1,\n arrowColor: text3,\n arrowColorHover: text2,\n arrowColorActive: activeFg,\n arrowColorActiveHover: activeFg,\n arrowColorChildActive: text2,\n arrowColorChildActiveHover: text1,\n groupTextColor: text3,\n },\n Tabs: {\n colorSegment: segTrack,\n tabColorSegment: segThumb,\n tabBorderRadius: '8px',\n tabTextColorSegment: text2,\n tabTextColorActiveSegment: text1,\n tabTextColorHoverSegment: text1,\n tabFontWeightActive: '500',\n tabColor: 'transparent',\n tabBorderColor: 'transparent',\n tabTextColorCard: text3,\n tabTextColorActiveCard: activeFg,\n tabTextColorHoverCard: text1,\n tabTextColorActiveLine: text1,\n tabTextColorHoverLine: text1,\n barColor: acc,\n },\n Radio: {\n buttonBorderRadius: '8px',\n buttonColor: segTrack,\n buttonColorActive: segThumb,\n buttonBorderColor: 'transparent',\n buttonBorderColorActive: 'transparent',\n buttonBorderColorHover: 'transparent',\n buttonTextColor: text2,\n buttonTextColorActive: text1,\n buttonTextColorHover: text1,\n buttonBoxShadow: 'none',\n buttonBoxShadowHover: 'none',\n buttonBoxShadowFocus: ring,\n dotColorActive: acc,\n boxShadowActive: `inset 0 0 0 1px ${acc}`,\n boxShadowFocus: ring,\n },\n Checkbox: checkbox,\n Tree: {\n nodeBorderRadius: '8px',\n nodeColorHover: hoverBg,\n nodeColorActive: glassStrong,\n nodeHeight: '30px',\n peers: { Checkbox: checkbox },\n },\n Switch: {\n railColor: v('--switch-off'),\n railColorActive: acc,\n boxShadowFocus: ring,\n railHeightMedium: '24px',\n railWidthMedium: '42px',\n buttonHeightMedium: '20px',\n buttonWidthMedium: '20px',\n buttonWidthPressedMedium: '26px',\n },\n Tag: {\n heightTiny: '20px',\n heightSmall: '22px',\n heightMedium: '24px',\n fontSizeTiny: '13px',\n fontSizeSmall: '14px',\n fontSizeMedium: '15px',\n borderRadius: v('--radius-sm'),\n color: fill,\n textColor: text2,\n fontWeightStrong: '500',\n colorPrimary: glassStrong,\n textColorPrimary: text1,\n borderPrimary: `1px solid ${hairlineStrong}`,\n },\n List: { color: 'transparent', colorHover: hoverBg, borderColor: separator },\n Dialog: {\n borderRadius: v('--radius-xl'),\n color: elevated,\n padding: '24px 26px 22px',\n titleFontSize: '17px',\n titleFontWeight: '600',\n },\n Modal: { color: elevated, boxShadow: shadow3 },\n Drawer: {\n color: elevated,\n headerPadding: '18px 24px',\n bodyPadding: '20px 24px',\n footerPadding: '14px 24px',\n titleFontSize: '17px',\n titleFontWeight: '600',\n headerBorderBottom: `1px solid ${separator}`,\n footerBorderTop: `1px solid ${separator}`,\n },\n Popover: { color: elevated, borderRadius: v('--radius-lg'), boxShadow: shadow2 },\n Dropdown: {\n color: elevated,\n borderRadius: '12px',\n padding: '5px',\n optionHeightMedium: '30px',\n optionColorHover: hoverBg,\n dividerColor: separator,\n },\n // 提示气泡和下拉 / 弹层同一套浮层表面,随亮暗主题走(亮色近白底深字,暗色深蓝底亮字),不做亮暗都黑的特例。\n // 底色、字色、阴影成套给:Tooltip 底下是 Popover,Naive 合并时全局 `Popover` 覆盖(上面的 elevated 与大阴影)\n // 压过 Tooltip 自带的值,所以同一套要在 peers.Popover 里再写一遍(它在合并链最后,只对 Tooltip 生效)。\n // 阴影用描边 + 卡片级的轻阴影:气泡很小,弹层那种大范围投影会显得过重。\n Tooltip: {\n color: tooltipBg,\n textColor: text1,\n borderRadius: '8px',\n padding: '5px 9px',\n boxShadow: `0 0 0 1px ${hairlineStrong}, ${shadow1}`,\n peers: {\n Popover: {\n color: tooltipBg,\n textColor: text1,\n borderRadius: '8px',\n padding: '5px 9px',\n boxShadow: `0 0 0 1px ${hairlineStrong}, ${shadow1}`,\n },\n },\n },\n Message: { borderRadius: '12px', color: elevated, padding: '10px 16px', boxShadow: shadow2 },\n Notification: { borderRadius: '16px', color: elevated, boxShadow: shadow2 },\n Alert: {\n borderRadius: '10px',\n colorInfo: fill,\n borderInfo: `1px solid ${hairline}`,\n iconColorInfo: text2,\n titleTextColorInfo: text1,\n contentTextColorInfo: text2,\n },\n Pagination: {\n itemBorderRadius: '8px',\n itemColorActive: glassStrong,\n itemTextColorActive: text1,\n itemBorderActive: `1px solid ${hairlineStrong}`,\n itemColorActiveHover: glassStrong,\n },\n Statistic: {\n valueFontSize: '26px',\n valueFontWeight: '500',\n labelFontSize: '13px',\n labelTextColor: text2,\n },\n Descriptions: {\n thColor: fill,\n borderColor: separator,\n thTextColor: text3,\n tdColor: 'transparent',\n },\n Progress: { railColor: fill, fillColor: acc },\n Breadcrumb: { itemTextColor: text3, itemTextColorActive: text1, separatorColor: text4 },\n Slider: {\n fillColor: acc,\n fillColorHover: acc,\n railColor: fillStrong,\n railColorHover: fillStrong,\n dotBorderActive: `2px solid ${acc}`,\n },\n Steps: {\n indicatorColorProcess: acc,\n indicatorTextColorProcess: onAcc,\n indicatorBorderColorProcess: acc,\n indicatorColorFinish: 'transparent',\n indicatorBorderColorFinish: border,\n indicatorTextColorFinish: text2,\n splitorColorFinish: text3,\n splitorColorProcess: separator,\n splitorColorWait: separator,\n },\n Empty: { textColor: text3, iconColor: text4 },\n Divider: { color: separator },\n Timeline: { circleBorder: `2px solid ${border}`, titleFontWeight: '500', lineColor: separator },\n Badge: { color: v('--badge-bg') },\n Scrollbar: { color: fillStrong, colorHover: border },\n Code: { textColor: text1 },\n }\n}\n"],"names":["v","name","semantic","base","hover","mix","buildThemeOverrides","opts","dark","a","deriveAccentTokens","signal","acc","onAcc","pressed","activeFg","linkFg","ring","ok","warn","err","info","text1","text2","text3","text4","border","separator","hairline","hairlineStrong","tooltipBg","glassStrong","fill","fillStrong","hoverBg","pressedBg","input","inputDisabled","cardSolid","elevated","segTrack","segThumb","shadow1","shadow2","shadow3","thBg","thBgHover","tdBgHover","radius","selection","checkbox","rgba"],"mappings":";;AAKA,MAAMA,IAAI,CAACC,MACT,iBAAiB,SAAS,eAAe,EAAE,iBAAiBA,CAAI,EAAE,KAAA;AAGpE,SAASC,EAASC,GAAc;AAC9B,QAAMC,IAAQC,EAAIF,GAAM,WAAW,IAAI;AACvC,SAAO,EAAE,MAAAA,GAAM,OAAAC,GAAO,SAASC,EAAIF,GAAM,WAAW,IAAI,GAAG,OAAOC,EAAA;AACpE;AASO,SAASE,EAAoBC,GAA+D;AACjG,QAAM,EAAE,MAAAC,MAASD,GACXE,IAAIC,EAAmBH,EAAK,QAAQC,CAAI,GACxC,EAAE,QAAAG,GAAQ,KAAAC,GAAK,OAAAC,GAAO,OAAAT,GAAO,SAAAU,GAAS,UAAAC,GAAU,QAAAC,GAAQ,MAAAC,EAAA,IAASR,GAEjES,IAAKhB,EAASF,EAAE,MAAM,CAAC,GACvBmB,IAAOjB,EAASF,EAAE,QAAQ,CAAC,GAC3BoB,IAAMlB,EAASF,EAAE,OAAO,CAAC,GACzBqB,IAAOnB,EAASF,EAAE,QAAQ,CAAC,GAE3BsB,IAAQtB,EAAE,UAAU,GACpBuB,IAAQvB,EAAE,UAAU,GACpBwB,IAAQxB,EAAE,UAAU,GACpByB,IAAQzB,EAAE,UAAU,GACpB0B,IAAS1B,EAAE,UAAU,GACrB2B,IAAY3B,EAAE,aAAa,GAC3B4B,IAAW5B,EAAE,YAAY,GACzB6B,IAAiB7B,EAAE,mBAAmB,GACtC8B,IAAY9B,EAAE,cAAc,GAC5B+B,IAAc/B,EAAE,gBAAgB,GAChCgC,IAAOhC,EAAE,QAAQ,GACjBiC,IAAajC,EAAE,eAAe,GAC9BkC,IAAUlC,EAAE,SAAS,GACrBmC,IAAYnC,EAAE,WAAW,GACzBoC,IAAQpC,EAAE,SAAS,GACnBqC,IAAgBrC,EAAE,kBAAkB,GACpCsC,IAAYtC,EAAE,WAAW,GACzBuC,IAAWvC,EAAE,eAAe,GAC5BwC,IAAWxC,EAAE,aAAa,GAC1ByC,IAAWzC,EAAE,aAAa,GAC1B0C,IAAU1C,EAAE,YAAY,GACxB2C,IAAU3C,EAAE,YAAY,GACxB4C,IAAU5C,EAAE,YAAY,GACxB6C,IAAO7C,EAAE,SAAS,GAClB8C,IAAY9C,EAAE,eAAe,GAC7B+C,IAAY/C,EAAE,eAAe,GAE7BgD,IAAShD,EAAE,aAAa,GACxBiD,IAAY;AAAA,IAChB,cAAcD;AAAA,IACd,OAAOZ;AAAA,IACP,aAAaA;AAAA,IACb,eAAeC;AAAA,IACf,QAAQ,aAAaX,CAAM;AAAA,IAC3B,aAAa,aAAa1B,EAAE,uBAAuB,CAAC;AAAA,IACpD,cAAc,aAAaW,CAAM;AAAA,IACjC,aAAa,aAAaA,CAAM;AAAA,IAChC,iBAAiBM;AAAA,IACjB,gBAAgBA;AAAA,EAAA,GAEZiC,IAAW;AAAA,IACf,cAAclD,EAAE,aAAa;AAAA,IAC7B,gBAAgBiB;AAAA,IAChB,gBAAgB;AAAA,IAChB,cAAcL;AAAA,IACd,eAAe,aAAaA,CAAG;AAAA,IAC/B,oBAAoBA;AAAA,IACpB,qBAAqB,aAAaA,CAAG;AAAA,IACrC,QAAQ,aAAac,CAAM;AAAA,IAC3B,OAAOU;AAAA,EAAA;AAGT,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,cAAcxB;AAAA,MACd,mBAAmBR;AAAA,MACnB,qBAAqBU;AAAA,MACrB,mBAAmBV;AAAA,MAEnB,cAAcc,EAAG;AAAA,MACjB,mBAAmBA,EAAG;AAAA,MACtB,qBAAqBA,EAAG;AAAA,MACxB,mBAAmBA,EAAG;AAAA,MACtB,cAAcC,EAAK;AAAA,MACnB,mBAAmBA,EAAK;AAAA,MACxB,qBAAqBA,EAAK;AAAA,MAC1B,mBAAmBA,EAAK;AAAA,MACxB,YAAYC,EAAI;AAAA,MAChB,iBAAiBA,EAAI;AAAA,MACrB,mBAAmBA,EAAI;AAAA,MACvB,iBAAiBA,EAAI;AAAA,MACrB,WAAWC,EAAK;AAAA,MAChB,gBAAgBA,EAAK;AAAA,MACrB,kBAAkBA,EAAK;AAAA,MACvB,gBAAgBA,EAAK;AAAA,MAErB,WAAWrB,EAAE,UAAU;AAAA,MACvB,WAAWA,EAAE,iBAAiB;AAAA,MAC9B,YAAY;AAAA,MACZ,YAAYuC;AAAA,MACZ,cAAcA;AAAA,MAEd,eAAejB;AAAA,MACf,YAAYA;AAAA,MACZ,YAAYC;AAAA,MACZ,YAAYC;AAAA,MACZ,kBAAkBA;AAAA,MAClB,mBAAmBC;AAAA,MAEnB,aAAaC;AAAA,MACb,cAAcC;AAAA;AAAA;AAAA;AAAA,MAId,YAAYS;AAAA,MACZ,oBAAoBC;AAAA,MACpB,aAAaL;AAAA,MACb,kBAAkB;AAAA,MAClB,YAAYE;AAAA,MACZ,cAAcC;AAAA,MACd,iBAAiBD;AAAA,MACjB,mBAAmBC;AAAA,MACnB,YAAYX;AAAA,MAEZ,cAAcwB;AAAA,MACd,mBAAmBhD,EAAE,aAAa;AAAA,MAClC,YAAYA,EAAE,QAAQ;AAAA,MACtB,gBAAgBA,EAAE,aAAa;AAAA,MAC/B,kBAAkB;AAAA,MAClB,cAAc;AAAA,MACd,cAAc;AAAA,MACd,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,eAAe;AAAA,MACf,cAAc;AAAA,MACd,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,cAAc;AAAA,MACd,aAAa;AAAA,MACb,YAAY;AAAA,MAEZ,YAAY0C;AAAA,MACZ,YAAYC;AAAA,MACZ,YAAYC;AAAA,MACZ,sBAAsB;AAAA,IAAA;AAAA,IAExB,QAAQ;AAAA,MACN,YAAY;AAAA,MACZ,oBAAoBI;AAAA,MACpB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,eAAe;AAAA;AAAA;AAAA,MAGf,gBAAgB;AAAA,MAChB,eAAe;AAAA,MACf,cAAc;AAAA,MACd,kBAAkBnC;AAAA,MAClB,uBAAuBA;AAAA,MACvB,yBAAyBA;AAAA,MACzB,uBAAuBA;AAAA,MACvB,0BAA0BA;AAAA,MAC1B,gBAAgBmB;AAAA,MAChB,qBAAqBC;AAAA,MACrB,uBAAuBE;AAAA;AAAA,MAEvB,OAAOH;AAAA,MACP,YAAYC;AAAA,MACZ,cAAcE;AAAA,MACd,YAAYH;AAAA,MACZ,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,eAAe;AAAA,MACf,aAAa,aAAarB,CAAM;AAAA;AAAA,MAEhC,sBAAsBK;AAAA,MACtB,2BAA2BA;AAAA,MAC3B,6BAA6BA;AAAA,MAC7B,2BAA2BA;AAAA,MAC3B,uBAAuBA;AAAA,MACvB,4BAA4BA;AAAA,MAC5B,8BAA8BA;AAAA,MAC9B,4BAA4BA;AAAA,MAC5B,sBAAsBkB;AAAA,MACtB,wBAAwBC;AAAA,MACxB,oBAAoBD;AAAA,MACpB,sBAAsBC;AAAA,IAAA;AAAA,IAExB,OAAO;AAAA,MACL,cAAca;AAAA,MACd,OAAOZ;AAAA,MACP,eAAeC;AAAA,MACf,YAAYD;AAAA,MACZ,QAAQ,aAAaV,CAAM;AAAA,MAC3B,aAAa,aAAa1B,EAAE,sBAAsB,CAAC;AAAA,MACnD,aAAa,aAAaW,CAAM;AAAA,MAChC,gBAAgBM;AAAA,MAChB,aAAa;AAAA,MACb,eAAe;AAAA,MACf,YAAYN;AAAA,IAAA;AAAA,IAEd,QAAQ;AAAA,MACN,OAAO;AAAA,QACL,mBAAmBsC;AAAA,QACnB,oBAAoB;AAAA,UAClB,cAAc;AAAA,UACd,oBAAoB;AAAA,UACpB,OAAOV;AAAA,UACP,kBAAkB5B;AAAA,QAAA;AAAA,MACpB;AAAA,IACF;AAAA,IAEF,YAAY,EAAE,OAAO,EAAE,mBAAmBsC,IAAU;AAAA,IACpD,YAAY;AAAA,MACV,OAAO;AAAA,QACL,OAAO;AAAA,UACL,cAAcD;AAAA,UACd,OAAOZ;AAAA,UACP,aAAa,aAAazB,CAAM;AAAA,UAChC,gBAAgBM;AAAA,QAAA;AAAA,MAClB;AAAA,IACF;AAAA,IAEF,aAAa;AAAA,MACX,OAAO,EAAE,OAAO,EAAE,OAAOmB,GAAO,aAAa,aAAazB,CAAM,IAAI,gBAAgBM,EAAA,EAAK;AAAA,IAAE;AAAA,IAE7F,MAAM;AAAA,MACJ,OAAOqB;AAAA,MACP,eAAeN;AAAA,MACf,aAAa;AAAA,MACb,cAAchC,EAAE,aAAa;AAAA,MAC7B,qBAAqB;AAAA,MACrB,oBAAoB;AAAA,MACpB,iBAAiB;AAAA,MACjB,eAAe;AAAA,MACf,cAAc;AAAA,MACd,YAAYuC;AAAA,MACZ,aAAaP;AAAA,IAAA;AAAA,IAEf,WAAW;AAAA,MACT,SAASa;AAAA,MACT,cAAcC;AAAA,MACd,gBAAgBA;AAAA;AAAA,MAEhB,SAASR;AAAA,MACT,cAAcS;AAAA,MACd,gBAAgBT;AAAA,MAChB,gBAAgBA;AAAA,MAChB,aAAaf;AAAA,MACb,cAAc;AAAA,MACd,aAAaC;AAAA;AAAA,MAEb,aAAaG;AAAA,MACb,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,eAAe;AAAA,MACf,OAAO,EAAE,UAAUuB,EAAA;AAAA,IAAS;AAAA,IAE9B,MAAM;AAAA,MACJ,cAAcF;AAAA,MACd,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,gBAAgBd;AAAA,MAChB,iBAAiBiB,EAAKxC,GAAQH,IAAO,OAAO,IAAI;AAAA,MAChD,sBAAsB2C,EAAKxC,GAAQH,IAAO,MAAM,IAAI;AAAA,MACpD,0BAA0B2C,EAAKxC,GAAQH,IAAO,OAAO,IAAI;AAAA;AAAA,MAEzD,eAAec;AAAA,MACf,oBAAoBA;AAAA;AAAA;AAAA,MAGpB,eAAeA;AAAA,MACf,oBAAoBA;AAAA,MACpB,wBAAwBA;AAAA,MACxB,qBAAqBP;AAAA,MACrB,qBAAqBA;AAAA,MACrB,0BAA0BA;AAAA,MAC1B,0BAA0BA;AAAA,MAC1B,0BAA0BO;AAAA,MAC1B,0BAA0BA;AAAA,MAC1B,+BAA+BA;AAAA,MAC/B,+BAA+BA;AAAA,MAC/B,YAAYE;AAAA,MACZ,iBAAiBD;AAAA,MACjB,kBAAkBR;AAAA,MAClB,uBAAuBA;AAAA,MACvB,uBAAuBQ;AAAA,MACvB,4BAA4BD;AAAA,MAC5B,gBAAgBE;AAAA,IAAA;AAAA,IAElB,MAAM;AAAA,MACJ,cAAcgB;AAAA,MACd,iBAAiBC;AAAA,MACjB,iBAAiB;AAAA,MACjB,qBAAqBlB;AAAA,MACrB,2BAA2BD;AAAA,MAC3B,0BAA0BA;AAAA,MAC1B,qBAAqB;AAAA,MACrB,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,kBAAkBE;AAAA,MAClB,wBAAwBT;AAAA,MACxB,uBAAuBO;AAAA,MACvB,wBAAwBA;AAAA,MACxB,uBAAuBA;AAAA,MACvB,UAAUV;AAAA,IAAA;AAAA,IAEZ,OAAO;AAAA,MACL,oBAAoB;AAAA,MACpB,aAAa4B;AAAA,MACb,mBAAmBC;AAAA,MACnB,mBAAmB;AAAA,MACnB,yBAAyB;AAAA,MACzB,wBAAwB;AAAA,MACxB,iBAAiBlB;AAAA,MACjB,uBAAuBD;AAAA,MACvB,sBAAsBA;AAAA,MACtB,iBAAiB;AAAA,MACjB,sBAAsB;AAAA,MACtB,sBAAsBL;AAAA,MACtB,gBAAgBL;AAAA,MAChB,iBAAiB,mBAAmBA,CAAG;AAAA,MACvC,gBAAgBK;AAAA,IAAA;AAAA,IAElB,UAAUiC;AAAA,IACV,MAAM;AAAA,MACJ,kBAAkB;AAAA,MAClB,gBAAgBhB;AAAA,MAChB,iBAAiBH;AAAA,MACjB,YAAY;AAAA,MACZ,OAAO,EAAE,UAAUmB,EAAA;AAAA,IAAS;AAAA,IAE9B,QAAQ;AAAA,MACN,WAAWlD,EAAE,cAAc;AAAA,MAC3B,iBAAiBY;AAAA,MACjB,gBAAgBK;AAAA,MAChB,kBAAkB;AAAA,MAClB,iBAAiB;AAAA,MACjB,oBAAoB;AAAA,MACpB,mBAAmB;AAAA,MACnB,0BAA0B;AAAA,IAAA;AAAA,IAE5B,KAAK;AAAA,MACH,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,cAAc;AAAA,MACd,cAAc;AAAA,MACd,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,cAAcjB,EAAE,aAAa;AAAA,MAC7B,OAAOgC;AAAA,MACP,WAAWT;AAAA,MACX,kBAAkB;AAAA,MAClB,cAAcQ;AAAA,MACd,kBAAkBT;AAAA,MAClB,eAAe,aAAaO,CAAc;AAAA,IAAA;AAAA,IAE5C,MAAM,EAAE,OAAO,eAAe,YAAYK,GAAS,aAAaP,EAAA;AAAA,IAChE,QAAQ;AAAA,MACN,cAAc3B,EAAE,aAAa;AAAA,MAC7B,OAAOuC;AAAA,MACP,SAAS;AAAA,MACT,eAAe;AAAA,MACf,iBAAiB;AAAA,IAAA;AAAA,IAEnB,OAAO,EAAE,OAAOA,GAAU,WAAWK,EAAA;AAAA,IACrC,QAAQ;AAAA,MACN,OAAOL;AAAA,MACP,eAAe;AAAA,MACf,aAAa;AAAA,MACb,eAAe;AAAA,MACf,eAAe;AAAA,MACf,iBAAiB;AAAA,MACjB,oBAAoB,aAAaZ,CAAS;AAAA,MAC1C,iBAAiB,aAAaA,CAAS;AAAA,IAAA;AAAA,IAEzC,SAAS,EAAE,OAAOY,GAAU,cAAcvC,EAAE,aAAa,GAAG,WAAW2C,EAAA;AAAA,IACvE,UAAU;AAAA,MACR,OAAOJ;AAAA,MACP,cAAc;AAAA,MACd,SAAS;AAAA,MACT,oBAAoB;AAAA,MACpB,kBAAkBL;AAAA,MAClB,cAAcP;AAAA,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMhB,SAAS;AAAA,MACP,OAAOG;AAAA,MACP,WAAWR;AAAA,MACX,cAAc;AAAA,MACd,SAAS;AAAA,MACT,WAAW,aAAaO,CAAc,KAAKa,CAAO;AAAA,MAClD,OAAO;AAAA,QACL,SAAS;AAAA,UACP,OAAOZ;AAAA,UACP,WAAWR;AAAA,UACX,cAAc;AAAA,UACd,SAAS;AAAA,UACT,WAAW,aAAaO,CAAc,KAAKa,CAAO;AAAA,QAAA;AAAA,MACpD;AAAA,IACF;AAAA,IAEF,SAAS,EAAE,cAAc,QAAQ,OAAOH,GAAU,SAAS,aAAa,WAAWI,EAAA;AAAA,IACnF,cAAc,EAAE,cAAc,QAAQ,OAAOJ,GAAU,WAAWI,EAAA;AAAA,IAClE,OAAO;AAAA,MACL,cAAc;AAAA,MACd,WAAWX;AAAA,MACX,YAAY,aAAaJ,CAAQ;AAAA,MACjC,eAAeL;AAAA,MACf,oBAAoBD;AAAA,MACpB,sBAAsBC;AAAA,IAAA;AAAA,IAExB,YAAY;AAAA,MACV,kBAAkB;AAAA,MAClB,iBAAiBQ;AAAA,MACjB,qBAAqBT;AAAA,MACrB,kBAAkB,aAAaO,CAAc;AAAA,MAC7C,sBAAsBE;AAAA,IAAA;AAAA,IAExB,WAAW;AAAA,MACT,eAAe;AAAA,MACf,iBAAiB;AAAA,MACjB,eAAe;AAAA,MACf,gBAAgBR;AAAA,IAAA;AAAA,IAElB,cAAc;AAAA,MACZ,SAASS;AAAA,MACT,aAAaL;AAAA,MACb,aAAaH;AAAA,MACb,SAAS;AAAA,IAAA;AAAA,IAEX,UAAU,EAAE,WAAWQ,GAAM,WAAWpB,EAAA;AAAA,IACxC,YAAY,EAAE,eAAeY,GAAO,qBAAqBF,GAAO,gBAAgBG,EAAA;AAAA,IAChF,QAAQ;AAAA,MACN,WAAWb;AAAA,MACX,gBAAgBA;AAAA,MAChB,WAAWqB;AAAA,MACX,gBAAgBA;AAAA,MAChB,iBAAiB,aAAarB,CAAG;AAAA,IAAA;AAAA,IAEnC,OAAO;AAAA,MACL,uBAAuBA;AAAA,MACvB,2BAA2BC;AAAA,MAC3B,6BAA6BD;AAAA,MAC7B,sBAAsB;AAAA,MACtB,4BAA4Bc;AAAA,MAC5B,0BAA0BH;AAAA,MAC1B,oBAAoBC;AAAA,MACpB,qBAAqBG;AAAA,MACrB,kBAAkBA;AAAA,IAAA;AAAA,IAEpB,OAAO,EAAE,WAAWH,GAAO,WAAWC,EAAA;AAAA,IACtC,SAAS,EAAE,OAAOE,EAAA;AAAA,IAClB,UAAU,EAAE,cAAc,aAAaD,CAAM,IAAI,iBAAiB,OAAO,WAAWC,EAAA;AAAA,IACpF,OAAO,EAAE,OAAO3B,EAAE,YAAY,EAAA;AAAA,IAC9B,WAAW,EAAE,OAAOiC,GAAY,YAAYP,EAAA;AAAA,IAC5C,MAAM,EAAE,WAAWJ,EAAA;AAAA,EAAM;AAE7B;"}
@@ -129,6 +129,8 @@ export interface ModuleRow {
129
129
  sort: number;
130
130
  enabled: boolean;
131
131
  remark?: string | null;
132
+ /** 可转授:普通管理员能否单独授权本应用的菜单(内置 system 恒为 false)。 */
133
+ isDelegatable?: boolean | null;
132
134
  createTime?: string;
133
135
  }
134
136
  /** 工作台首页统计(后端 DashboardSummaryOutput)。趋势三条数组等长(近 7 日,含今天,无登录的日子为 0)。 */
@@ -158,6 +160,93 @@ export interface ModuleInput {
158
160
  sort: number;
159
161
  enabled: boolean;
160
162
  remark?: string | null;
163
+ /** 可转授:普通管理员能否单独授权本应用的菜单(内置 system 恒为 false)。 */
164
+ isDelegatable?: boolean | null;
165
+ }
166
+ /** 用户单独授权的效果(后端 UserMenuEffect)。 */
167
+ export declare enum UserMenuEffect {
168
+ Allow = 1,
169
+ Deny = 2
170
+ }
171
+ /** 单独授权的有效期状态(后端 UserMenuGrantStatus;作筛选条件时 Active 含 7 天内到期)。 */
172
+ export declare enum UserMenuGrantStatus {
173
+ Active = 1,
174
+ Expiring = 2,
175
+ Expired = 3
176
+ }
177
+ /** 一条单独授权记录(后端 UserMenuGrantItem)。时间是本地时间串 yyyy-MM-ddTHH:mm:ss。 */
178
+ export interface UserMenuGrantItem {
179
+ menuId: number;
180
+ effect: UserMenuEffect;
181
+ expireTime?: string | null;
182
+ remark?: string | null;
183
+ grantorId?: number | null;
184
+ grantorName?: string | null;
185
+ grantTime: string;
186
+ updaterId?: number | null;
187
+ updaterName?: string | null;
188
+ updateTime?: string | null;
189
+ }
190
+ /** 变更集里的一条新增或修改(后端 UserMenuGrantUpsert)。 */
191
+ export interface UserMenuGrantUpsert {
192
+ menuId: number;
193
+ effect: UserMenuEffect;
194
+ expireTime?: string | null;
195
+ remark?: string | null;
196
+ }
197
+ /** 被拒节点里仍然有效的权限码与携带它的有效节点(后端 UserMenuLeakedCode)。 */
198
+ export interface UserMenuLeakedCode {
199
+ code: string;
200
+ carrierMenuIds: number[];
201
+ }
202
+ /** 一个菜单节点对目标用户是否有效、为什么(后端 UserMenuEffectiveNode)。 */
203
+ export interface UserMenuEffectiveNode {
204
+ menuId: number;
205
+ moduleId?: number | null;
206
+ effective: boolean;
207
+ roles: string[];
208
+ grant?: UserMenuEffect | null;
209
+ expireTime?: string | null;
210
+ expired: boolean;
211
+ deniedByAncestor: boolean;
212
+ grantable: boolean;
213
+ leakedCodes: UserMenuLeakedCode[];
214
+ }
215
+ /** 授权弹窗的模块清单项(后端 UserMenuModuleItem)。 */
216
+ export interface UserMenuModuleItem {
217
+ id: number;
218
+ title: string;
219
+ delegatable: boolean;
220
+ }
221
+ /** 授权弹窗一次取齐的数据(后端 UserMenuEffectiveOutput)。readOnlyReason 是错误码。 */
222
+ export interface UserMenuEffective {
223
+ userId: number;
224
+ hasRoles: boolean;
225
+ targetEditable: boolean;
226
+ readOnlyReason?: number | null;
227
+ delegatedMaxDays?: number | null;
228
+ /** 委派授权的最晚到期日 yyyy-MM-dd(服务器本地日期 + 最长天数);不限时为空。日期选择器上限与保存前校验都按它算。 */
229
+ delegatedMaxDate?: string | null;
230
+ modules: UserMenuModuleItem[];
231
+ nodes: UserMenuEffectiveNode[];
232
+ }
233
+ /** 单独授权一览的一行(后端 UserMenuGrantPageItem)。 */
234
+ export interface UserMenuGrantPageItem {
235
+ id: number;
236
+ userId: number;
237
+ userAccount: string;
238
+ userName: string;
239
+ menuId: number;
240
+ menuTitle: string;
241
+ moduleId?: number | null;
242
+ moduleTitle?: string | null;
243
+ effect: UserMenuEffect;
244
+ expireTime?: string | null;
245
+ status: UserMenuGrantStatus;
246
+ grantorId?: number | null;
247
+ grantorName?: string | null;
248
+ grantTime: string;
249
+ remark?: string | null;
161
250
  }
162
251
  /** 系统配置行(后端 SysConfig;列表返回全字段,int64 收敛为 number)。 */
163
252
  export interface SysConfig {
@@ -368,6 +457,8 @@ export interface SysRole {
368
457
  enabled: boolean;
369
458
  remark?: string | null;
370
459
  isDelegatable?: boolean | null;
460
+ /** 内置角色(种子里固定 Id 1–999):只有它们能被授系统菜单。 */
461
+ isBuiltin?: boolean;
371
462
  createTime?: string;
372
463
  }
373
464
  /** 角色新增/编辑入参(后端 RoleInput;增改同一份字段,code 编辑禁用)。 */
package/dist/types/api.js CHANGED
@@ -1,18 +1,20 @@
1
- var r = /* @__PURE__ */ ((l) => (l[l.All = 1] = "All", l[l.Org = 2] = "Org", l[l.OrgAndChildren = 3] = "OrgAndChildren", l[l.Self = 4] = "Self", l[l.Custom = 5] = "Custom", l))(r || {}), n = /* @__PURE__ */ ((l) => (l[l.Notice = 1] = "Notice", l[l.Announcement = 2] = "Announcement", l[l.Message = 3] = "Message", l))(n || {}), A = /* @__PURE__ */ ((l) => (l[l.All = 0] = "All", l[l.Role = 1] = "Role", l[l.User = 2] = "User", l))(A || {}), O = /* @__PURE__ */ ((l) => (l[l.Skip = 0] = "Skip", l[l.Overwrite = 1] = "Overwrite", l[l.Error = 2] = "Error", l))(O || {}), v = /* @__PURE__ */ ((l) => (l[l.Compiled = 1] = "Compiled", l[l.Http = 2] = "Http", l[l.Sql = 3] = "Sql", l))(v || {}), k = /* @__PURE__ */ ((l) => (l[l.Cron = 1] = "Cron", l[l.Interval = 2] = "Interval", l[l.OneShot = 3] = "OneShot", l))(k || {}), m = /* @__PURE__ */ ((l) => (l[l.Skip = 1] = "Skip", l[l.FireOnceNow = 2] = "FireOnceNow", l))(m || {}), C = /* @__PURE__ */ ((l) => (l[l.SerialSkip = 1] = "SerialSkip", l[l.Parallel = 2] = "Parallel", l))(C || {}), P = /* @__PURE__ */ ((l) => (l[l.Ready = 1] = "Ready", l[l.Paused = 2] = "Paused", l[l.Completed = 3] = "Completed", l[l.Panic = 4] = "Panic", l))(P || {}), U = /* @__PURE__ */ ((l) => (l[l.Running = 1] = "Running", l[l.Success = 2] = "Success", l[l.Failed = 3] = "Failed", l[l.Timeout = 4] = "Timeout", l[l.Cancelled = 5] = "Cancelled", l[l.Skipped = 6] = "Skipped", l))(U || {}), h = /* @__PURE__ */ ((l) => (l[l.Schedule = 1] = "Schedule", l[l.Manual = 2] = "Manual", l[l.Misfire = 3] = "Misfire", l[l.MissedSkipped = 4] = "MissedSkipped", l))(h || {});
2
- const E = { Reported: 1, Missing: 2 }, _ = { Provider: 1, Model: 2, Scene: 3, User: 4 };
1
+ var r = /* @__PURE__ */ ((l) => (l[l.Allow = 1] = "Allow", l[l.Deny = 2] = "Deny", l))(r || {}), A = /* @__PURE__ */ ((l) => (l[l.Active = 1] = "Active", l[l.Expiring = 2] = "Expiring", l[l.Expired = 3] = "Expired", l))(A || {}), v = /* @__PURE__ */ ((l) => (l[l.All = 1] = "All", l[l.Org = 2] = "Org", l[l.OrgAndChildren = 3] = "OrgAndChildren", l[l.Self = 4] = "Self", l[l.Custom = 5] = "Custom", l))(v || {}), O = /* @__PURE__ */ ((l) => (l[l.Notice = 1] = "Notice", l[l.Announcement = 2] = "Announcement", l[l.Message = 3] = "Message", l))(O || {}), k = /* @__PURE__ */ ((l) => (l[l.All = 0] = "All", l[l.Role = 1] = "Role", l[l.User = 2] = "User", l))(k || {}), m = /* @__PURE__ */ ((l) => (l[l.Skip = 0] = "Skip", l[l.Overwrite = 1] = "Overwrite", l[l.Error = 2] = "Error", l))(m || {}), C = /* @__PURE__ */ ((l) => (l[l.Compiled = 1] = "Compiled", l[l.Http = 2] = "Http", l[l.Sql = 3] = "Sql", l))(C || {}), n = /* @__PURE__ */ ((l) => (l[l.Cron = 1] = "Cron", l[l.Interval = 2] = "Interval", l[l.OneShot = 3] = "OneShot", l))(n || {}), P = /* @__PURE__ */ ((l) => (l[l.Skip = 1] = "Skip", l[l.FireOnceNow = 2] = "FireOnceNow", l))(P || {}), h = /* @__PURE__ */ ((l) => (l[l.SerialSkip = 1] = "SerialSkip", l[l.Parallel = 2] = "Parallel", l))(h || {}), w = /* @__PURE__ */ ((l) => (l[l.Ready = 1] = "Ready", l[l.Paused = 2] = "Paused", l[l.Completed = 3] = "Completed", l[l.Panic = 4] = "Panic", l))(w || {}), E = /* @__PURE__ */ ((l) => (l[l.Running = 1] = "Running", l[l.Success = 2] = "Success", l[l.Failed = 3] = "Failed", l[l.Timeout = 4] = "Timeout", l[l.Cancelled = 5] = "Cancelled", l[l.Skipped = 6] = "Skipped", l))(E || {}), x = /* @__PURE__ */ ((l) => (l[l.Schedule = 1] = "Schedule", l[l.Manual = 2] = "Manual", l[l.Misfire = 3] = "Misfire", l[l.MissedSkipped = 4] = "MissedSkipped", l))(x || {});
2
+ const _ = { Reported: 1, Missing: 2 }, d = { Provider: 1, Model: 2, Scene: 3, User: 4 };
3
3
  export {
4
- _ as AI_USAGE_GROUP_BY,
5
- E as AI_USAGE_SOURCE,
6
- r as DataScopeType,
7
- O as DuplicateStrategy,
8
- C as JobConcurrencyMode,
9
- h as JobFireMode,
10
- v as JobHandlerKind,
11
- m as JobMisfireStrategy,
12
- U as JobRunStatus,
13
- P as JobStatus,
14
- k as JobTriggerKind,
15
- n as NoticeType,
16
- A as ReceiverType
4
+ d as AI_USAGE_GROUP_BY,
5
+ _ as AI_USAGE_SOURCE,
6
+ v as DataScopeType,
7
+ m as DuplicateStrategy,
8
+ h as JobConcurrencyMode,
9
+ x as JobFireMode,
10
+ C as JobHandlerKind,
11
+ P as JobMisfireStrategy,
12
+ E as JobRunStatus,
13
+ w as JobStatus,
14
+ n as JobTriggerKind,
15
+ O as NoticeType,
16
+ k as ReceiverType,
17
+ r as UserMenuEffect,
18
+ A as UserMenuGrantStatus
17
19
  };
18
20
  //# sourceMappingURL=api.js.map