xto-fronted 0.5.2 → 0.6.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 (103) hide show
  1. package/dist/App.vue.d.ts +2 -0
  2. package/dist/api/auth.d.ts +8 -0
  3. package/dist/api/index.d.ts +6 -0
  4. package/dist/api/index.js +26 -0
  5. package/dist/api/system.d.ts +16 -0
  6. package/dist/api/user.d.ts +13 -0
  7. package/dist/api.d.ts +2 -0
  8. package/dist/components/Layout/Footer.vue.d.ts +2 -0
  9. package/dist/components/Layout/Header.vue.d.ts +5 -0
  10. package/dist/components/Layout/MixTopMenu.vue.d.ts +10 -0
  11. package/dist/components/Layout/Sidebar.vue.d.ts +13 -0
  12. package/dist/components/Layout/SidebarMenuItem.vue.d.ts +5 -0
  13. package/dist/components/Layout/Tabs.vue.d.ts +2 -0
  14. package/dist/components/Layout/TopMenu.vue.d.ts +10 -0
  15. package/dist/components/Layout/index.vue.d.ts +7 -0
  16. package/dist/composables/useApp.d.ts +30 -0
  17. package/dist/composables/useAuth.d.ts +6 -0
  18. package/dist/composables/useForm.d.ts +20 -0
  19. package/dist/composables/useI18n.d.ts +30 -0
  20. package/dist/composables/useTable.d.ts +29 -0
  21. package/dist/directives/permission.d.ts +4 -0
  22. package/dist/enums/index.d.ts +32 -0
  23. package/dist/index-CYFcc2sd.js +189 -0
  24. package/dist/index-DGrQCWU0.js +515 -0
  25. package/dist/index-DIlGh6S6.js +641 -0
  26. package/dist/index-DYmKmoMX.js +479 -0
  27. package/dist/index-Dpv33ZXi.js +3171 -0
  28. package/dist/index.d.ts +63 -0
  29. package/dist/index.js +99 -0
  30. package/dist/main.d.ts +0 -0
  31. package/dist/router/dynamicRoutes.d.ts +30 -0
  32. package/dist/router/guards.d.ts +17 -0
  33. package/dist/router/index.d.ts +6 -0
  34. package/dist/router/layoutRoute.d.ts +23 -0
  35. package/dist/router/staticRoutes.d.ts +2 -0
  36. package/dist/stores/app.d.ts +99 -0
  37. package/dist/stores/auth.d.ts +41 -0
  38. package/dist/stores/index.d.ts +10 -0
  39. package/dist/stores/locale.d.ts +42 -0
  40. package/dist/stores/menu.d.ts +83 -0
  41. package/dist/stores/user.d.ts +101 -0
  42. package/dist/style.css +1 -0
  43. package/dist/user-ChcAx-5W.js +1186 -0
  44. package/dist/utils/auth.d.ts +27 -0
  45. package/dist/utils/config.d.ts +51 -0
  46. package/dist/utils/permission.d.ts +17 -0
  47. package/dist/utils/request.d.ts +34 -0
  48. package/dist/utils/storage.d.ts +24 -0
  49. package/dist/views/dashboard/index.vue.d.ts +2 -0
  50. package/dist/views/error/403.vue.d.ts +2 -0
  51. package/dist/views/error/404.vue.d.ts +2 -0
  52. package/dist/views/login/index.vue.d.ts +4 -0
  53. package/dist/views/system/menu/index.vue.d.ts +4 -0
  54. package/dist/views/system/role/index.vue.d.ts +4 -0
  55. package/dist/views/system/user/index.vue.d.ts +4 -0
  56. package/package.json +18 -18
  57. package/src/assets/styles/_dark.scss +207 -169
  58. package/src/assets/styles/_root.scss +110 -116
  59. package/src/assets/styles/_variables.scss +23 -23
  60. package/src/assets/styles/index.scss +43 -65
  61. package/src/components/Layout/Header.vue +55 -54
  62. package/src/components/Layout/MixTopMenu.vue +9 -9
  63. package/src/components/Layout/Sidebar.vue +25 -10
  64. package/src/components/Layout/SidebarMenuItem.vue +2 -2
  65. package/src/components/Layout/Tabs.vue +31 -9
  66. package/src/components/Layout/TopMenu.vue +9 -9
  67. package/src/components/Layout/index.vue +4 -4
  68. package/src/style.scss +2 -2
  69. package/src/views/login/index.vue +25 -24
  70. package/dist/assets/404-BYUyVmEj.js +0 -1
  71. package/dist/assets/404-CcAc5uFh.css +0 -1
  72. package/dist/assets/_plugin-vue_export-helper-DlAUqK2U.js +0 -1
  73. package/dist/assets/index-4oN1au3P.css +0 -1
  74. package/dist/assets/index-BHABoX0X.css +0 -1
  75. package/dist/assets/index-BLHh7ayu.js +0 -2
  76. package/dist/assets/index-BRR97dc6.js +0 -1
  77. package/dist/assets/index-BvN8lC5q.js +0 -1
  78. package/dist/assets/index-C6ibP7SB.css +0 -1
  79. package/dist/assets/index-CDtU4ZUe.css +0 -1
  80. package/dist/assets/index-CJGmoNxx.css +0 -1
  81. package/dist/assets/index-DVC3VgmM.js +0 -1
  82. package/dist/assets/index-DcPnYH2c.js +0 -1
  83. package/dist/assets/index-DhwBftHU.css +0 -1
  84. package/dist/assets/index-DnWF32Gw.js +0 -1
  85. package/dist/assets/index-NyagImtN.js +0 -1
  86. package/dist/assets/index-UghOubOn.css +0 -1
  87. package/dist/assets/index-oc3LDwZZ.js +0 -1
  88. package/dist/assets/vendor-CWD9azq9.js +0 -16
  89. package/dist/assets/vue-vendor-sSbh4bdR.js +0 -29
  90. package/dist/assets/xto-base-Bv2ek7Ha.css +0 -1
  91. package/dist/assets/xto-base-kM8Cl-e6.js +0 -1
  92. package/dist/assets/xto-business-CW6DXcvI.css +0 -1
  93. package/dist/assets/xto-core-DsKtn1lm.js +0 -1
  94. package/dist/assets/xto-data-CDPTH0CA.js +0 -1
  95. package/dist/assets/xto-data-CEFTtli6.css +0 -1
  96. package/dist/assets/xto-feedback-Di1AeKNY.css +0 -1
  97. package/dist/assets/xto-feedback-Dp_1dES5.js +0 -1
  98. package/dist/assets/xto-form-Bl3jCZ4e.js +0 -1
  99. package/dist/assets/xto-form-DC11rd9L.css +0 -1
  100. package/dist/assets/xto-layout-BR7iLA0e.css +0 -1
  101. package/dist/assets/xto-navigation-Bl-kwgN_.css +0 -1
  102. package/dist/assets/xto-navigation-Brox2Ork.js +0 -1
  103. package/dist/index.html +0 -28
@@ -1,23 +1,23 @@
1
1
  // ==============================================
2
2
  // CSS Variables - XTO UI Design Token System
3
- // Indigo palette with --xto-* namespace
3
+ // Gauss Admin 风格:品牌深蓝 + slate 蓝灰中性色(与 @xto/core 令牌对齐)
4
4
  // ==============================================
5
5
 
6
6
  :root {
7
- // 主色调 - Indigo 系(深邃、专业)
8
- --xto-color-primary: #4F46E5;
9
- --xto-color-primary-light-1: #5B54E8;
10
- --xto-color-primary-light-2: #6B63EB;
11
- --xto-color-primary-light-3: #7C73EE;
12
- --xto-color-primary-light-4: #8B83F1;
13
- --xto-color-primary-light-5: #A5A4F4;
14
- --xto-color-primary-light-6: #BFBDF7;
15
- --xto-color-primary-light-7: #D4D3F9;
16
- --xto-color-primary-light-8: #E0DFFB;
17
- --xto-color-primary-light-9: #EEF2FF;
18
- --xto-color-primary-dark-1: #4338CA;
19
- --xto-color-primary-dark-2: #3730A3;
20
- --xto-color-primary-dark-3: #312E81;
7
+ // 主色调 - Gauss 品牌深蓝
8
+ --xto-color-primary: #1D4ED8;
9
+ --xto-color-primary-light-1: #2563EB;
10
+ --xto-color-primary-light-2: #3B82F6;
11
+ --xto-color-primary-light-3: #60A5FA;
12
+ --xto-color-primary-light-4: #82B4FB;
13
+ --xto-color-primary-light-5: #93C5FD;
14
+ --xto-color-primary-light-6: #BFDBFE;
15
+ --xto-color-primary-light-7: #D0E1FE;
16
+ --xto-color-primary-light-8: #DBEAFE;
17
+ --xto-color-primary-light-9: #EFF6FF;
18
+ --xto-color-primary-dark-1: #1E40AF;
19
+ --xto-color-primary-dark-2: #1E3A8A;
20
+ --xto-color-primary-dark-3: #172E6E;
21
21
 
22
22
  // 功能色 - 精致调和
23
23
  --xto-color-success: #10B981;
@@ -35,56 +35,52 @@
35
35
  --xto-color-danger-lighter: #FEF2F2;
36
36
  --xto-color-danger-dark: #DC2626;
37
37
 
38
- --xto-color-info: #6B7280;
39
- --xto-color-info-light: #9CA3AF;
40
- --xto-color-info-lighter: #F3F4F6;
41
- --xto-color-info-dark: #4B5563;
42
-
43
- // 文字颜色 - 层次分明
44
- --xto-color-text-primary: #1F2937;
45
- --xto-color-text-regular: #4B5563;
46
- --xto-color-text-secondary: #6B7280;
47
- --xto-color-text-placeholder: #9CA3AF;
48
- --xto-color-text-disabled: #D1D5DB;
49
-
50
- // 边框颜色 - 克制淡雅
51
- --xto-border-color: #D1D5DB;
52
- --xto-border-color-light: #E5E7EB;
53
- --xto-border-color-lighter: #F3F4F6;
54
- --xto-border-color-extra-light: #F9FAFB;
55
- --xto-border-color-dark: #9CA3AF;
38
+ --xto-color-info: #64748B;
39
+ --xto-color-info-light: #94A3B8;
40
+ --xto-color-info-lighter: #F1F5F9;
41
+ --xto-color-info-dark: #475569;
42
+
43
+ // 文字颜色 - slate 蓝灰体系
44
+ --xto-color-text-primary: #0F172A;
45
+ --xto-color-text-regular: #334155;
46
+ --xto-color-text-secondary: #64748B;
47
+ --xto-color-text-placeholder: #94A3B8;
48
+ --xto-color-text-disabled: #CBD5E1;
49
+
50
+ // 边框颜色 - 蓝灰边框
51
+ --xto-border-color: #CBD5E1;
52
+ --xto-border-color-light: #E2E8F0;
53
+ --xto-border-color-lighter: #EDF2F7;
54
+ --xto-border-color-extra-light: #F8FAFC;
55
+ --xto-border-color-dark: #94A3B8;
56
56
 
57
57
  // 填充颜色 - 背景层次
58
- --xto-fill-color: #F3F4F6;
59
- --xto-fill-color-light: #F9FAFB;
58
+ --xto-fill-color: #F1F5F9;
59
+ --xto-fill-color-light: #F8FAFC;
60
60
  --xto-fill-color-lighter: #FFFFFF;
61
61
  --xto-fill-color-blank: #FFFFFF;
62
- --xto-fill-color-dark: #E5E7EB;
62
+ --xto-fill-color-dark: #E2E8F0;
63
63
 
64
- // 背景颜色 - 页面层级
64
+ // 背景颜色 - 页面层级(浅灰蓝页面底)
65
65
  --xto-bg-color: #FFFFFF;
66
- --xto-bg-color-page: #F9FAFB;
66
+ --xto-bg-color-page: #F5F7FA;
67
67
  --xto-bg-color-component: #FFFFFF;
68
68
  --xto-bg-color-overlay: #FFFFFF;
69
- --xto-bg-color-spotlight: #EEF2FF;
70
-
71
- // 盒子阴影 - 精致层次
72
- --xto-shadow-subtle: 0 1px 2px 0 rgba(0, 0, 0, 0.03),
73
- 0 1px 6px -1px rgba(0, 0, 0, 0.02),
74
- 0 2px 4px 0 rgba(0, 0, 0, 0.02);
75
- --xto-shadow-base: 0 1px 4px rgba(0, 0, 0, 0.04);
76
- --xto-shadow-elevated: 0 6px 16px 0 rgba(0, 0, 0, 0.08),
77
- 0 3px 6px -4px rgba(0, 0, 0, 0.12),
78
- 0 9px 28px 8px rgba(0, 0, 0, 0.05);
79
- --xto-shadow-prominent: 0 6px 16px -8px rgba(0, 0, 0, 0.08),
80
- 0 9px 28px 8px rgba(0, 0, 0, 0.05),
81
- 0 12px 48px 16px rgba(0, 0, 0, 0.03);
82
- --xto-shadow-card: 0 1px 10px -6px rgba(0, 0, 0, 0.1);
83
- --xto-shadow-card-hover: 0 6px 16px -8px rgba(0, 0, 0, 0.12);
69
+ --xto-bg-color-spotlight: #EFF6FF;
70
+
71
+ // 盒子阴影 - slate 基调多层柔和阴影
72
+ --xto-shadow-subtle: 0 1px 2px rgba(15, 23, 42, 0.04);
73
+ --xto-shadow-base: 0 1px 2px rgba(15, 23, 42, 0.04),
74
+ 0 2px 8px rgba(15, 23, 42, 0.06);
75
+ --xto-shadow-elevated: 0 2px 6px rgba(15, 23, 42, 0.05),
76
+ 0 8px 24px rgba(15, 23, 42, 0.08);
77
+ --xto-shadow-prominent: 0 4px 12px rgba(15, 23, 42, 0.06),
78
+ 0 16px 48px rgba(15, 23, 42, 0.12);
79
+ --xto-shadow-card: var(--xto-shadow-base);
80
+ --xto-shadow-card-hover: var(--xto-shadow-elevated);
84
81
 
85
82
  // 字体 - 企业级字体栈
86
- --xto-font-family: 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
87
- 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';
83
+ --xto-font-family: 'Inter', 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif;
88
84
  --xto-font-family-code: 'IBM Plex Mono', 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono',
89
85
  Consolas, 'Courier New', monospace;
90
86
  --xto-font-size-base: 14px;
@@ -95,11 +91,12 @@
95
91
  --xto-font-size-hero: 38px;
96
92
  --xto-font-line-height: 1.5714285714285714;
97
93
 
98
- // 圆角 - 精致圆润
94
+ // 圆角 - 精致圆润(卡片与弹层更圆润)
99
95
  --xto-border-radius-base: 6px;
100
96
  --xto-border-radius-small: 4px;
101
- --xto-border-radius-large: 8px;
102
- --xto-border-radius-extra-large: 12px;
97
+ --xto-border-radius-large: 10px;
98
+ --xto-border-radius-extra-large: 16px;
99
+ --xto-border-radius-xl: 16px;
103
100
  --xto-border-radius-round: 24px;
104
101
  --xto-border-radius-circle: 50%;
105
102
 
@@ -140,66 +137,63 @@
140
137
  --footer-height: 32px;
141
138
 
142
139
  // 特殊效果
143
- --xto-gradient-primary: linear-gradient(135deg, #4F46E5 0%, #6366F1 100%);
144
- --xto-gradient-hero: linear-gradient(135deg, #312E81 0%, #4F46E5 50%, #6366F1 100%);
140
+ --xto-gradient-primary: linear-gradient(135deg, #1D4ED8 0%, #3B82F6 100%);
141
+ --xto-gradient-hero: linear-gradient(135deg, #172E6E 0%, #1D4ED8 50%, #3B82F6 100%);
145
142
  --xto-gradient-card: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.8) 100%);
146
- --xto-gradient-mask: linear-gradient(180deg, rgba(79, 70, 229, 0.03) 0%, rgba(0, 0, 0, 0) 100%);
143
+ --xto-gradient-mask: linear-gradient(180deg, rgba(29, 78, 216, 0.03) 0%, rgba(0, 0, 0, 0) 100%);
147
144
  }
148
145
 
149
- // 暗色主题 - 深邃科技感
146
+ // 暗色主题 - 深蓝黑科技感(与 @xto/core 暗色令牌对齐)
150
147
  html.dark {
151
- --xto-color-primary: #818CF8;
152
- --xto-color-primary-light-1: #9BA3FA;
153
- --xto-color-primary-light-2: #B5BAFB;
154
- --xto-color-primary-light-3: #C7CAFC;
155
- --xto-color-primary-light-4: #D5D7FD;
156
- --xto-color-primary-light-5: #E0E2FE;
157
- --xto-color-primary-light-6: #EBECFE;
158
- --xto-color-primary-light-7: #F0F1FE;
159
- --xto-color-primary-light-8: #F5F5FE;
160
- --xto-color-primary-light-9: #FAFAFF;
161
- --xto-color-primary-dark-1: #6366F1;
162
- --xto-color-primary-dark-2: #4F46E5;
163
- --xto-color-primary-dark-3: #4338CA;
164
-
165
- --xto-color-text-primary: #F9FAFB;
166
- --xto-color-text-regular: #E5E7EB;
167
- --xto-color-text-secondary: #9CA3AF;
168
- --xto-color-text-placeholder: #6B7280;
169
- --xto-color-text-disabled: #4B5563;
170
-
171
- --xto-border-color: #374151;
172
- --xto-border-color-light: #1F2937;
173
- --xto-border-color-lighter: #111827;
174
- --xto-border-color-extra-light: #030712;
175
- --xto-border-color-dark: #4B5563;
176
-
177
- --xto-fill-color: #1F2937;
178
- --xto-fill-color-light: #111827;
179
- --xto-fill-color-lighter: #030712;
180
- --xto-fill-color-blank: #030712;
181
- --xto-fill-color-dark: #374151;
182
-
183
- --xto-bg-color: #111827;
184
- --xto-bg-color-page: #030712;
185
- --xto-bg-color-component: #1F2937;
186
- --xto-bg-color-overlay: #1F2937;
187
- --xto-bg-color-spotlight: #1E1B4B;
188
-
189
- --xto-shadow-subtle: 0 1px 2px 0 rgba(0, 0, 0, 0.16),
190
- 0 1px 6px -1px rgba(0, 0, 0, 0.12),
191
- 0 2px 4px 0 rgba(0, 0, 0, 0.08);
192
- --xto-shadow-base: 0 1px 4px rgba(0, 0, 0, 0.2);
193
- --xto-shadow-elevated: 0 6px 16px 0 rgba(0, 0, 0, 0.32),
194
- 0 3px 6px -4px rgba(0, 0, 0, 0.48),
195
- 0 9px 28px 8px rgba(0, 0, 0, 0.2);
196
- --xto-shadow-prominent: 0 6px 16px -8px rgba(0, 0, 0, 0.32),
197
- 0 9px 28px 8px rgba(0, 0, 0, 0.2),
198
- 0 12px 48px 16px rgba(0, 0, 0, 0.12);
199
- --xto-shadow-card: 0 1px 10px -6px rgba(0, 0, 0, 0.32);
200
- --xto-shadow-card-hover: 0 6px 16px -8px rgba(0, 0, 0, 0.48);
201
-
202
- --xto-gradient-primary: linear-gradient(135deg, #818CF8 0%, #6366F1 100%);
203
- --xto-gradient-hero: linear-gradient(135deg, #4338CA 0%, #4F46E5 50%, #818CF8 100%);
204
- --xto-gradient-card: linear-gradient(180deg, rgba(17, 24, 39, 0) 0%, rgba(17, 24, 39, 0.8) 100%);
148
+ --xto-color-primary: #4C8DFF;
149
+ --xto-color-primary-light-1: #3B82F6;
150
+ --xto-color-primary-light-2: #2F6FE4;
151
+ --xto-color-primary-light-3: #2563EB;
152
+ --xto-color-primary-light-4: #1D4ED8;
153
+ --xto-color-primary-light-5: #1E40AF;
154
+ --xto-color-primary-light-6: #1E3A8A;
155
+ --xto-color-primary-light-7: #172E6E;
156
+ --xto-color-primary-light-8: #122554;
157
+ --xto-color-primary-light-9: #0D1B3E;
158
+ --xto-color-primary-dark-1: #60A5FA;
159
+ --xto-color-primary-dark-2: #82B4FB;
160
+ --xto-color-primary-dark-3: #93C5FD;
161
+
162
+ --xto-color-text-primary: #F1F5F9;
163
+ --xto-color-text-regular: #CBD5E1;
164
+ --xto-color-text-secondary: #94A3B8;
165
+ --xto-color-text-placeholder: #64748B;
166
+ --xto-color-text-disabled: #475569;
167
+
168
+ --xto-border-color: #334155;
169
+ --xto-border-color-light: #1E293B;
170
+ --xto-border-color-lighter: #16213B;
171
+ --xto-border-color-extra-light: #0F172A;
172
+ --xto-border-color-dark: #475569;
173
+
174
+ --xto-fill-color: #1E293B;
175
+ --xto-fill-color-light: #16213B;
176
+ --xto-fill-color-lighter: #0F172A;
177
+ --xto-fill-color-blank: #111A2C;
178
+ --xto-fill-color-dark: #334155;
179
+
180
+ --xto-bg-color: #111A2C;
181
+ --xto-bg-color-page: #0B1220;
182
+ --xto-bg-color-component: #1E293B;
183
+ --xto-bg-color-overlay: #182338;
184
+ --xto-bg-color-spotlight: #0D1B3E;
185
+
186
+ --xto-shadow-subtle: 0 1px 3px rgba(0, 0, 0, 0.3);
187
+ --xto-shadow-base: 0 1px 3px rgba(0, 0, 0, 0.3),
188
+ 0 2px 8px rgba(0, 0, 0, 0.35);
189
+ --xto-shadow-elevated: 0 2px 8px rgba(0, 0, 0, 0.35),
190
+ 0 8px 24px rgba(0, 0, 0, 0.4);
191
+ --xto-shadow-prominent: 0 4px 12px rgba(0, 0, 0, 0.4),
192
+ 0 16px 48px rgba(0, 0, 0, 0.5);
193
+ --xto-shadow-card: var(--xto-shadow-base);
194
+ --xto-shadow-card-hover: var(--xto-shadow-elevated);
195
+
196
+ --xto-gradient-primary: linear-gradient(135deg, #4C8DFF 0%, #2563EB 100%);
197
+ --xto-gradient-hero: linear-gradient(135deg, #1E3A8A 0%, #1D4ED8 50%, #4C8DFF 100%);
198
+ --xto-gradient-card: linear-gradient(180deg, rgba(17, 26, 44, 0) 0%, rgba(17, 26, 44, 0.8) 100%);
205
199
  }
@@ -1,35 +1,35 @@
1
1
  // Design tokens aligned with @xto/core theme system
2
2
  // ==============================================
3
- // SCSS Variables - 用于样式计算
3
+ // SCSS Variables - 用于样式计算(Gauss 品牌深蓝 + slate 蓝灰)
4
4
  // ==============================================
5
5
 
6
- // 主题色 - Indigo
7
- $color-primary: #4F46E5;
8
- $color-primary-light: #6366F1;
9
- $color-primary-lighter: #818CF8;
10
- $color-primary-dark: #4338CA;
11
- $color-primary-darker: #3730A3;
6
+ // 主题色 - Gauss 品牌深蓝
7
+ $color-primary: #1D4ED8;
8
+ $color-primary-light: #3B82F6;
9
+ $color-primary-lighter: #60A5FA;
10
+ $color-primary-dark: #1E40AF;
11
+ $color-primary-darker: #1E3A8A;
12
12
 
13
13
  // 功能色
14
14
  $color-success: #10B981;
15
15
  $color-warning: #F59E0B;
16
16
  $color-danger: #EF4444;
17
- $color-info: #6B7280;
17
+ $color-info: #64748B;
18
18
 
19
- // 文字颜色
20
- $color-text-primary: #1F2937;
21
- $color-text-regular: #4B5563;
22
- $color-text-secondary: #6B7280;
23
- $color-text-placeholder: #9CA3AF;
19
+ // 文字颜色 - slate 蓝灰体系
20
+ $color-text-primary: #0F172A;
21
+ $color-text-regular: #334155;
22
+ $color-text-secondary: #64748B;
23
+ $color-text-placeholder: #94A3B8;
24
24
 
25
- // 边框颜色
26
- $color-border: #D1D5DB;
27
- $color-border-light: #E5E7EB;
28
- $color-border-lighter: #F3F4F6;
25
+ // 边框颜色 - 蓝灰边框
26
+ $color-border: #CBD5E1;
27
+ $color-border-light: #E2E8F0;
28
+ $color-border-lighter: #EDF2F7;
29
29
 
30
30
  // 背景颜色
31
31
  $bg-color: #FFFFFF;
32
- $bg-color-page: #F9FAFB;
32
+ $bg-color-page: #F5F7FA;
33
33
  $bg-color-component: #FFFFFF;
34
34
 
35
35
  // 字体
@@ -43,8 +43,8 @@ $font-size-extra-large: 20px;
43
43
  // 圆角
44
44
  $border-radius-base: 6px;
45
45
  $border-radius-small: 4px;
46
- $border-radius-large: 8px;
47
- $border-radius-extra-large: 12px;
46
+ $border-radius-large: 10px;
47
+ $border-radius-extra-large: 16px;
48
48
  $border-radius-round: 24px;
49
49
 
50
50
  // 间距 - 8px 网格系统
@@ -66,6 +66,6 @@ $footer-height: 32px;
66
66
  $transition-duration: 0.2s;
67
67
  $transition-easing: cubic-bezier(0.4, 0, 0.2, 1);
68
68
 
69
- // 阴影
70
- $box-shadow-card: 0 1px 2px rgba(0, 0, 0, 0.05);
71
- $box-shadow-card-hover: 0 4px 12px rgba(0, 0, 0, 0.1);
69
+ // 阴影 - slate 基调柔和阴影
70
+ $box-shadow-card: 0 1px 2px rgba(15, 23, 42, 0.04), 0 2px 8px rgba(15, 23, 42, 0.06);
71
+ $box-shadow-card-hover: 0 2px 6px rgba(15, 23, 42, 0.05), 0 8px 24px rgba(15, 23, 42, 0.08);
@@ -117,7 +117,7 @@
117
117
 
118
118
  // 颜色
119
119
  .text-primary {
120
- color: var(--xto-color-primary, #4F46E5);
120
+ color: var(--xto-color-primary, #1D4ED8);
121
121
  }
122
122
 
123
123
  .text-success {
@@ -133,20 +133,20 @@
133
133
  }
134
134
 
135
135
  .text-info {
136
- color: var(--xto-color-info, #6B7280);
136
+ color: var(--xto-color-info, #64748B);
137
137
  }
138
138
 
139
139
  .text-secondary {
140
- color: var(--xto-color-text-secondary, #6B7280);
140
+ color: var(--xto-color-text-secondary, #64748B);
141
141
  }
142
142
 
143
143
  .text-placeholder {
144
- color: var(--xto-color-text-placeholder, #9CA3AF);
144
+ color: var(--xto-color-text-placeholder, #94A3B8);
145
145
  }
146
146
 
147
147
  // 背景
148
148
  .bg-primary {
149
- background-color: var(--xto-color-primary, #4F46E5);
149
+ background-color: var(--xto-color-primary, #1D4ED8);
150
150
  }
151
151
 
152
152
  .bg-success {
@@ -162,7 +162,7 @@
162
162
  }
163
163
 
164
164
  .bg-page {
165
- background-color: var(--xto-bg-color-page, #F9FAFB);
165
+ background-color: var(--xto-bg-color-page, #F5F7FA);
166
166
  }
167
167
 
168
168
  .bg-card {
@@ -219,28 +219,28 @@
219
219
  // 卡片容器(企业级)
220
220
  .card {
221
221
  background-color: var(--xto-bg-color, #FFFFFF);
222
- border-radius: var(--xto-border-radius-large, 8px);
223
- box-shadow: var(--xto-shadow-subtle, 0 1px 2px rgba(0, 0, 0, 0.05));
222
+ border-radius: var(--xto-border-radius-large, 10px);
223
+ box-shadow: var(--xto-shadow-base, 0 1px 2px rgba(15, 23, 42, 0.04), 0 2px 8px rgba(15, 23, 42, 0.06));
224
224
  padding: var(--xto-spacing-lg, 24px);
225
225
  transition: box-shadow 0.3s ease;
226
226
 
227
227
  &:hover {
228
- box-shadow: var(--xto-shadow-elevated, 0 4px 12px rgba(0, 0, 0, 0.1));
228
+ box-shadow: var(--xto-shadow-elevated, 0 2px 6px rgba(15, 23, 42, 0.05), 0 8px 24px rgba(15, 23, 42, 0.08));
229
229
  }
230
230
  }
231
231
 
232
232
  .card-flat {
233
233
  background-color: var(--xto-bg-color, #FFFFFF);
234
- border-radius: var(--xto-border-radius-large, 8px);
234
+ border-radius: var(--xto-border-radius-large, 10px);
235
235
  padding: var(--xto-spacing-lg, 24px);
236
- border: 1px solid var(--xto-border-color-lighter, #F3F4F6);
236
+ border: 1px solid var(--xto-border-color-lighter, #EDF2F7);
237
237
  }
238
238
 
239
- // 页面容器
239
+ // 页面容器(浅灰蓝底 + 统一 16px 页边距)
240
240
  .page-container {
241
- padding: 12px;
241
+ padding: 16px;
242
242
  min-height: 100%;
243
- background: var(--xto-bg-color-page, #F9FAFB);
243
+ background: var(--xto-bg-color-page, #F5F7FA);
244
244
  }
245
245
 
246
246
  // 搜索栏(企业级)
@@ -248,11 +248,11 @@
248
248
  display: flex;
249
249
  flex-wrap: wrap;
250
250
  gap: var(--xto-spacing-md, 12px);
251
- margin-bottom: 12px;
252
- padding: 12px;
251
+ margin-bottom: 16px;
252
+ padding: 16px;
253
253
  background: var(--xto-bg-color, #FFFFFF);
254
- border-radius: var(--xto-border-radius-large, 8px);
255
- box-shadow: var(--xto-shadow-subtle, 0 1px 2px rgba(0, 0, 0, 0.05));
254
+ border-radius: var(--xto-border-radius-large, 10px);
255
+ box-shadow: var(--xto-shadow-base, 0 1px 2px rgba(15, 23, 42, 0.04), 0 2px 8px rgba(15, 23, 42, 0.06));
256
256
  }
257
257
 
258
258
  // 工具栏(企业级)
@@ -261,7 +261,7 @@
261
261
  align-items: center;
262
262
  justify-content: space-between;
263
263
  padding: 12px;
264
- border-bottom: 1px solid var(--xto-border-color-lighter, #F3F4F6);
264
+ border-bottom: 1px solid var(--xto-border-color-lighter, #F1F5F9);
265
265
  }
266
266
 
267
267
  .toolbar-left {
@@ -279,8 +279,8 @@
279
279
  // 表格容器(企业级)
280
280
  .table-container {
281
281
  background-color: var(--xto-bg-color, #FFFFFF);
282
- border-radius: var(--xto-border-radius-large, 8px);
283
- box-shadow: var(--xto-shadow-subtle, 0 1px 2px rgba(0, 0, 0, 0.05));
282
+ border-radius: var(--xto-border-radius-large, 10px);
283
+ box-shadow: var(--xto-shadow-base, 0 1px 2px rgba(15, 23, 42, 0.04), 0 2px 8px rgba(15, 23, 42, 0.06));
284
284
  overflow: hidden;
285
285
  }
286
286
 
@@ -289,7 +289,7 @@
289
289
  display: flex;
290
290
  justify-content: flex-end;
291
291
  padding: 12px;
292
- border-top: 1px solid var(--xto-border-color-lighter, #F3F4F6);
292
+ border-top: 1px solid var(--xto-border-color-lighter, #F1F5F9);
293
293
  }
294
294
 
295
295
  // 标签徽章
@@ -303,13 +303,13 @@
303
303
  font-size: 12px;
304
304
  font-weight: 500;
305
305
  border-radius: 10px;
306
- background: var(--xto-fill-color, #F3F4F6);
307
- color: var(--xto-color-text-secondary, #6B7280);
306
+ background: var(--xto-fill-color, #F1F5F9);
307
+ color: var(--xto-color-text-secondary, #64748B);
308
308
  }
309
309
 
310
310
  .badge-primary {
311
- background: var(--xto-color-primary-light-6, #A5B4FC);
312
- color: var(--xto-color-primary, #4F46E5);
311
+ background: var(--xto-color-primary-light-6, #BFDBFE);
312
+ color: var(--xto-color-primary, #1D4ED8);
313
313
  }
314
314
 
315
315
  .badge-success {
@@ -330,14 +330,14 @@
330
330
  // 分隔线
331
331
  .divider {
332
332
  height: 1px;
333
- background: var(--xto-border-color-lighter, #F3F4F6);
333
+ background: var(--xto-border-color-lighter, #F1F5F9);
334
334
  margin: var(--xto-spacing-md, 12px) 0;
335
335
  }
336
336
 
337
337
  .divider-vertical {
338
338
  width: 1px;
339
339
  height: 100%;
340
- background: var(--xto-border-color-lighter, #F3F4F6);
340
+ background: var(--xto-border-color-lighter, #F1F5F9);
341
341
  margin: 0 var(--xto-spacing-md, 12px);
342
342
  }
343
343
 
@@ -348,7 +348,7 @@
348
348
  align-items: center;
349
349
  justify-content: center;
350
350
  padding: 60px 20px;
351
- color: var(--xto-color-text-placeholder, #9CA3AF);
351
+ color: var(--xto-color-text-placeholder, #94A3B8);
352
352
 
353
353
  .empty-icon {
354
354
  width: 64px;
@@ -373,8 +373,8 @@
373
373
  .loading-spinner {
374
374
  width: 32px;
375
375
  height: 32px;
376
- border: 3px solid var(--xto-border-color-lighter, #F3F4F6);
377
- border-top-color: var(--xto-color-primary, #4F46E5);
376
+ border: 3px solid var(--xto-border-color-lighter, #F1F5F9);
377
+ border-top-color: var(--xto-color-primary, #1D4ED8);
378
378
  border-radius: 50%;
379
379
  animation: spin 0.8s linear infinite;
380
380
  }
@@ -382,7 +382,7 @@
382
382
  .loading-text {
383
383
  margin-top: 16px;
384
384
  font-size: 14px;
385
- color: var(--xto-color-text-secondary, #6B7280);
385
+ color: var(--xto-color-text-secondary, #64748B);
386
386
  }
387
387
  }
388
388
 
@@ -392,64 +392,42 @@
392
392
 
393
393
  // 链接样式
394
394
  .link {
395
- color: var(--xto-color-primary, #4F46E5);
395
+ color: var(--xto-color-primary, #1D4ED8);
396
396
  text-decoration: none;
397
397
  transition: color 0.2s ease;
398
398
 
399
399
  &:hover {
400
- color: var(--xto-color-primary-light-1, #5B54E8);
400
+ color: var(--xto-color-primary-light-1, #2563EB);
401
401
  }
402
402
  }
403
403
 
404
404
  .link-underline {
405
- color: var(--xto-color-primary, #4F46E5);
405
+ color: var(--xto-color-primary, #1D4ED8);
406
406
  text-decoration: underline;
407
407
  text-underline-offset: 2px;
408
408
 
409
409
  &:hover {
410
- color: var(--xto-color-primary-light-1, #5B54E8);
410
+ color: var(--xto-color-primary-light-1, #2563EB);
411
411
  }
412
412
  }
413
413
 
414
414
  // ==============================================
415
415
  // 菜单高亮样式(全局样式,不能在 scoped 中)
416
+ // 参考 Gauss Admin:纯浅蓝底 + 深蓝字 + 圆角项(无左侧指示条)
416
417
  // ==============================================
417
418
  .x-menu-item {
418
419
  &.is-active {
419
- color: var(--xto-color-primary, #4F46E5) !important;
420
- background-color: var(--xto-color-primary-light-9, #EEF2FF) !important;
421
- position: relative;
422
-
423
- // 左侧高亮条
424
- &::before {
425
- content: '';
426
- position: absolute;
427
- left: 0;
428
- top: 0;
429
- bottom: 0;
430
- width: 4px;
431
- background-color: var(--xto-color-primary, #4F46E5);
432
- border-radius: 0 2px 2px 0;
433
- }
420
+ color: var(--xto-color-primary, #1D4ED8) !important;
421
+ background-color: var(--xto-color-primary-light-9, #EFF6FF) !important;
422
+ font-weight: 600;
434
423
  }
435
424
  }
436
425
 
437
426
  // SubMenu 的子菜单项高亮(只有 MenuItem 高亮,SubMenu 本身不高亮)
438
427
  .x-sub-menu__menu .x-menu-item.is-active {
439
- color: var(--xto-color-primary, #4F46E5) !important;
440
- background-color: var(--xto-color-primary-light-9, #EEF2FF) !important;
441
- position: relative;
442
-
443
- &::before {
444
- content: '';
445
- position: absolute;
446
- left: 0;
447
- top: 0;
448
- bottom: 0;
449
- width: 4px;
450
- background-color: var(--xto-color-primary, #4F46E5);
451
- border-radius: 0 2px 2px 0;
452
- }
428
+ color: var(--xto-color-primary, #1D4ED8) !important;
429
+ background-color: var(--xto-color-primary-light-9, #EFF6FF) !important;
430
+ font-weight: 600;
453
431
  }
454
432
 
455
433
  // ==============================================