xto-fronted 0.4.7 → 0.4.9

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 (82) hide show
  1. package/.env.development +7 -7
  2. package/.env.production +7 -7
  3. package/dist/assets/403-AFBQifUI.js +1 -0
  4. package/dist/assets/403-BHEXXbt2.css +1 -0
  5. package/dist/assets/404-Ct_A1n7S.css +1 -0
  6. package/dist/assets/404-WFvpcD2_.js +1 -0
  7. package/dist/assets/_plugin-vue_export-helper-DlAUqK2U.js +1 -0
  8. package/dist/assets/index-1juADvYN.js +2 -0
  9. package/dist/assets/index-4-QoJAgA.css +1 -0
  10. package/dist/assets/index-B-sX4Ru0.js +1 -0
  11. package/dist/assets/index-BHwEwbkp.js +1 -0
  12. package/dist/assets/index-BMcziU5a.css +1 -0
  13. package/dist/assets/index-BRR97dc6.js +1 -0
  14. package/dist/assets/index-BTsRosKu.js +1 -0
  15. package/dist/assets/index-BZA0ksjx.css +1 -0
  16. package/dist/assets/index-BpV_8nl0.js +1 -0
  17. package/dist/assets/index-BvzhR4zp.js +1 -0
  18. package/dist/assets/index-CUh_s55Z.css +1 -0
  19. package/dist/assets/index-CVjdnIgR.css +1 -0
  20. package/dist/assets/index-CYq57-zj.js +1 -0
  21. package/dist/assets/index-CZAlkDIC.css +1 -0
  22. package/dist/assets/index-CkL3sVAQ.js +2 -0
  23. package/dist/assets/index-CtrKVYJb.css +1 -0
  24. package/dist/assets/index-Cz2P_bsS.js +1 -0
  25. package/dist/assets/index-D9wlAuR_.js +1 -0
  26. package/dist/assets/index-DawJb02s.css +1 -0
  27. package/dist/assets/index-DfFR6NLf.js +1 -0
  28. package/dist/assets/index-Do3gMkWw.js +2 -0
  29. package/dist/assets/index-DwVgMO8e.js +1 -0
  30. package/dist/assets/index-GDP-IkXE.css +1 -0
  31. package/dist/assets/index-Iaz1ZzPC.js +2 -0
  32. package/dist/assets/index-PfV8pzQz.css +1 -0
  33. package/dist/assets/index-Swfu6yvD.css +1 -0
  34. package/dist/assets/index-Te8_PRgJ.js +1 -0
  35. package/dist/assets/index-WyZ91RLx.css +1 -0
  36. package/dist/assets/index-tFYRoFdE.js +1 -0
  37. package/dist/assets/vendor-42ANG6Sg.js +6 -0
  38. package/dist/assets/vite-Dw-pgLOX.js +1 -0
  39. package/dist/assets/vue-vendor-Br-l7wbK.js +29 -0
  40. package/dist/assets/xto-base-C-IBqjVs.js +1 -0
  41. package/dist/assets/xto-base-C6eqMPdO.css +1 -0
  42. package/dist/assets/xto-business--V1F5Gwb.css +1 -0
  43. package/dist/assets/xto-core-DZK7Cyg0.js +1 -0
  44. package/dist/assets/xto-data-BFpiDgJi.js +1 -0
  45. package/dist/assets/xto-data-CnAQAQH2.css +1 -0
  46. package/dist/assets/xto-feedback-B7ipsTfz.js +1 -0
  47. package/dist/assets/xto-feedback-DBwJzoTj.css +1 -0
  48. package/dist/assets/xto-form-CrsyAjyr.css +1 -0
  49. package/dist/assets/xto-form-NRjKKNcY.js +1 -0
  50. package/dist/assets/xto-layout-BqU8RuWL.css +1 -0
  51. package/dist/assets/xto-navigation-BiSaXPfr.js +1 -0
  52. package/dist/assets/xto-navigation-C1cnSL2E.css +1 -0
  53. package/dist/assets/xto-navigation-CBPg4dCc.css +1 -0
  54. package/dist/assets/xto-navigation-CKabFu9d.js +1 -0
  55. package/dist/index.html +28 -0
  56. package/package.json +85 -85
  57. package/src/api/auth.ts +25 -25
  58. package/src/api/system.ts +66 -66
  59. package/src/assets/styles/_dark.scss +524 -406
  60. package/src/assets/styles/index.scss +8 -0
  61. package/src/components/Layout/Header.vue +968 -973
  62. package/src/components/Layout/Sidebar.vue +283 -273
  63. package/src/components/Layout/TopMenu.vue +186 -0
  64. package/src/components/Layout/index.vue +60 -3
  65. package/src/composables/useApp.ts +61 -61
  66. package/src/composables/useAuth.ts +16 -16
  67. package/src/directives/permission.ts +27 -27
  68. package/src/env.d.ts +18 -18
  69. package/src/index.ts +47 -47
  70. package/src/router/dynamicRoutes.ts +162 -162
  71. package/src/router/guards.ts +128 -128
  72. package/src/router/index.ts +79 -79
  73. package/src/stores/auth.ts +65 -65
  74. package/src/stores/menu.ts +48 -48
  75. package/src/stores/user.ts +50 -50
  76. package/src/types/api.d.ts +80 -80
  77. package/src/utils/auth.ts +99 -99
  78. package/src/utils/config.ts +80 -80
  79. package/src/utils/permission.ts +32 -32
  80. package/src/utils/request.ts +124 -124
  81. package/src/views/login/index.vue +194 -194
  82. package/vite.config.ts +135 -135
@@ -1,407 +1,525 @@
1
- // ==============================================
2
- // Dark Theme Override - 暗黑主题覆盖
3
- // ==============================================
4
-
5
- .dark {
6
- // 侧边栏
7
- .sidebar,
8
- .layout__aside {
9
- background-color: #1d1e1f;
10
- }
11
-
12
- .sidebar {
13
- border-right: 1px solid #363637;
14
- }
15
-
16
- .sidebar__search-results {
17
- background-color: #1d1e1f;
18
- border-color: #363637;
19
- }
20
-
21
- .sidebar__search-item:hover {
22
- background-color: #262727;
23
- }
24
-
25
- .sidebar__search-item-title {
26
- color: #cfd3dc;
27
- }
28
-
29
- .sidebar__search-item-parent {
30
- color: #a3a6ad;
31
- }
32
-
33
- .sidebar__logo {
34
- border-bottom-color: #363637;
35
- }
36
-
37
- .sidebar__user {
38
- border-top-color: #363637;
39
- }
40
-
41
- .sidebar__user-name {
42
- color: #cfd3dc;
43
- }
44
-
45
- .sidebar__user-role {
46
- color: #a3a6ad;
47
- }
48
-
49
- // 菜单
50
- .x-menu {
51
- background-color: #1d1e1f !important;
52
- border-color: #363637;
53
- color: #cfd3dc;
54
-
55
- &.x-menu--vertical {
56
- border-right-color: #363637;
57
- }
58
-
59
- &.x-menu--horizontal {
60
- border-bottom-color: #363637;
61
- }
62
- }
63
-
64
- .x-menu-item {
65
- color: #cfd3dc !important;
66
-
67
- &:hover {
68
- background-color: #262727 !important;
69
- }
70
-
71
- &.is-active {
72
- color: #409eff !important;
73
- background-color: rgba(64, 158, 255, 0.1) !important;
74
-
75
- &::before {
76
- background-color: #409eff;
77
- }
78
- }
79
- }
80
-
81
- .x-sub-menu {
82
- &__title {
83
- color: #cfd3dc !important;
84
-
85
- &:hover {
86
- background-color: #262727 !important;
87
- }
88
- }
89
-
90
- &__menu {
91
- background-color: #1d1e1f !important;
92
- border: 1px solid #363637;
93
- box-shadow: 0 2px 12px rgba(0, 0, 0, 0.5);
94
- }
95
-
96
- &__arrow {
97
- color: #a3a6ad;
98
- }
99
-
100
- &.is-opened > .x-sub-menu__title {
101
- background-color: #262727 !important;
102
- }
103
-
104
- &.is-active > .x-sub-menu__title {
105
- color: #409eff !important;
106
- }
107
- }
108
-
109
- // 顶部导航
110
- .header {
111
- background-color: #1d1e1f;
112
- border-bottom-color: #363637;
113
- }
114
-
115
- .header__collapse {
116
- color: #cfd3dc;
117
- }
118
-
119
- .header__breadcrumb {
120
- color: #a3a6ad;
121
- }
122
-
123
- .header__user-name {
124
- color: #cfd3dc;
125
- }
126
-
127
- .header__user-arrow {
128
- color: #a3a6ad;
129
- }
130
-
131
- .header__action:hover {
132
- background-color: #262727;
133
- }
134
-
135
- .header__user-trigger:hover {
136
- background-color: #262727;
137
- }
138
-
139
- // 下拉菜单
140
- .header__dropdown {
141
- background-color: #1d1e1f;
142
- border: 1px solid #363637;
143
- box-shadow: 0 2px 12px rgba(0, 0, 0, 0.5);
144
- }
145
-
146
- .header__dropdown-name {
147
- color: #e5eaf3;
148
- }
149
-
150
- .header__dropdown-role {
151
- color: #a3a6ad;
152
- }
153
-
154
- .header__dropdown-divider {
155
- background-color: #363637;
156
- }
157
-
158
- .header__dropdown-item {
159
- color: #cfd3dc;
160
-
161
- &:hover {
162
- background-color: #262727;
163
- color: #e5eaf3;
164
- }
165
- }
166
-
167
- // 按钮
168
- .x-button {
169
- &.x-button--default {
170
- background-color: #1d1e1f;
171
- border-color: #4c4d4f;
172
- color: #cfd3dc;
173
-
174
- &:hover {
175
- border-color: #409eff;
176
- color: #409eff;
177
- }
178
- }
179
-
180
- &.x-button--text {
181
- color: #409eff;
182
- }
183
- }
184
-
185
- // 表单
186
- .x-form-item__label {
187
- color: #cfd3dc;
188
- }
189
-
190
- .x-form-item__error {
191
- color: #f56c6c;
192
- }
193
-
194
- // 输入框
195
- .x-input {
196
- background-color: #1d1e1f;
197
- border-color: #4c4d4f;
198
-
199
- &.is-focus {
200
- border-color: #409eff;
201
- }
202
-
203
- .x-input__inner {
204
- background-color: transparent;
205
- color: #e5eaf3;
206
-
207
- &::placeholder {
208
- color: #6c6e72;
209
- }
210
- }
211
-
212
- .x-input__suffix,
213
- .x-input__prefix {
214
- color: #a3a6ad;
215
- }
216
- }
217
-
218
- // 选择器
219
- .x-select {
220
- background-color: #1d1e1f;
221
- border-color: #4c4d4f;
222
- }
223
-
224
- // 卡片
225
- .x-card {
226
- background-color: #1d1e1f;
227
- border-color: #363637;
228
- }
229
-
230
- .x-card__header {
231
- border-bottom-color: #363637;
232
- color: #e5eaf3;
233
- }
234
-
235
- // 表格
236
- .data-table {
237
- th {
238
- background-color: #262727;
239
- color: #cfd3dc;
240
- border-bottom-color: #363637;
241
- }
242
-
243
- td {
244
- border-bottom-color: #363637;
245
- color: #cfd3dc;
246
- }
247
-
248
- tr:hover td {
249
- background-color: #262727;
250
- }
251
- }
252
-
253
- // 弹窗
254
- .x-modal {
255
- &__wrapper {
256
- background-color: rgba(0, 0, 0, 0.7);
257
- }
258
-
259
- &__container {
260
- background-color: #1d1e1f;
261
- border: 1px solid #363637;
262
- }
263
-
264
- &__header {
265
- border-bottom-color: #363637;
266
- color: #e5eaf3;
267
- }
268
-
269
- &__footer {
270
- border-top-color: #363637;
271
- }
272
- }
273
-
274
- // 消息提示
275
- .x-message {
276
- background-color: #1d1e1f;
277
- border: 1px solid #363637;
278
- }
279
-
280
- // 标签
281
- .x-tag {
282
- &.x-tag--primary {
283
- background-color: rgba(64, 158, 255, 0.2);
284
- color: #79bbff;
285
- border-color: rgba(64, 158, 255, 0.3);
286
- }
287
-
288
- &.x-tag--success {
289
- background-color: rgba(103, 194, 58, 0.2);
290
- color: #95d475;
291
- border-color: rgba(103, 194, 58, 0.3);
292
- }
293
-
294
- &.x-tag--warning {
295
- background-color: rgba(230, 162, 60, 0.2);
296
- color: #eebe77;
297
- border-color: rgba(230, 162, 60, 0.3);
298
- }
299
-
300
- &.x-tag--danger {
301
- background-color: rgba(245, 108, 108, 0.2);
302
- color: #fab6b6;
303
- border-color: rgba(245, 108, 108, 0.3);
304
- }
305
-
306
- &.x-tag--info {
307
- background-color: rgba(144, 147, 153, 0.2);
308
- color: #c0c4cc;
309
- border-color: rgba(144, 147, 153, 0.3);
310
- }
311
- }
312
-
313
- // 开关
314
- .x-switch {
315
- background-color: #4c4d4f;
316
-
317
- &.is-checked {
318
- background-color: #409eff;
319
- }
320
- }
321
-
322
- // 分页
323
- .x-pagination {
324
- color: #cfd3dc;
325
-
326
- &__item {
327
- background-color: #1d1e1f;
328
- border-color: #4c4d4f;
329
- color: #cfd3dc;
330
-
331
- &:hover {
332
- color: #409eff;
333
- }
334
-
335
- &.is-active {
336
- background-color: #409eff;
337
- border-color: #409eff;
338
- color: #fff;
339
- }
340
- }
341
- }
342
-
343
- // 登录页面
344
- .login {
345
- background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
346
- }
347
-
348
- .login__container {
349
- background-color: #1d1e1f;
350
- border: 1px solid #363637;
351
- }
352
-
353
- .login__title {
354
- color: #409eff;
355
- }
356
-
357
- .login__subtitle {
358
- color: #a3a6ad;
359
- }
360
-
361
- .login__footer {
362
- color: #6c6e72;
363
- }
364
-
365
- // 仪表盘
366
- .stat-card__title {
367
- color: #a3a6ad;
368
- }
369
-
370
- .quick-link {
371
- background-color: #262727;
372
-
373
- &:hover {
374
- background-color: rgba(64, 158, 255, 0.1);
375
- }
376
-
377
- &__title {
378
- color: #cfd3dc;
379
- }
380
- }
381
-
382
- .activity-item {
383
- border-bottom-color: #363637;
384
-
385
- &__action {
386
- color: #cfd3dc;
387
- }
388
- }
389
-
390
- // 搜索卡片
391
- .search-card {
392
- background-color: #1d1e1f;
393
- border: 1px solid #363637;
394
- }
395
-
396
- // 表格卡片
397
- .table-card {
398
- background-color: #1d1e1f;
399
- border: 1px solid #363637;
400
- }
401
-
402
- // Popconfirm
403
- .x-popconfirm {
404
- background-color: #1d1e1f;
405
- border: 1px solid #363637;
406
- }
1
+ // ==============================================
2
+ // Dark Theme Override - 暗黑主题覆盖
3
+ // ==============================================
4
+
5
+ .dark {
6
+ // 侧边栏
7
+ .sidebar,
8
+ .layout__aside {
9
+ background-color: #1d1e1f;
10
+ }
11
+
12
+ .sidebar {
13
+ border-right: 1px solid #363637;
14
+ }
15
+
16
+ .sidebar__search-results {
17
+ background-color: #1d1e1f;
18
+ border-color: #363637;
19
+ }
20
+
21
+ .sidebar__search-item:hover {
22
+ background-color: #262727;
23
+ }
24
+
25
+ .sidebar__search-item-title {
26
+ color: #cfd3dc;
27
+ }
28
+
29
+ .sidebar__search-item-parent {
30
+ color: #a3a6ad;
31
+ }
32
+
33
+ .sidebar__logo {
34
+ border-bottom-color: #363637;
35
+ }
36
+
37
+ .sidebar__user {
38
+ border-top-color: #363637;
39
+ }
40
+
41
+ .sidebar__user-name {
42
+ color: #cfd3dc;
43
+ }
44
+
45
+ .sidebar__user-role {
46
+ color: #a3a6ad;
47
+ }
48
+
49
+ // 菜单
50
+ .x-menu {
51
+ background-color: #1d1e1f !important;
52
+ border-color: #363637;
53
+ color: #cfd3dc;
54
+
55
+ &.x-menu--vertical {
56
+ border-right-color: #363637;
57
+ }
58
+
59
+ &.x-menu--horizontal {
60
+ border-bottom-color: #363637;
61
+ background-color: #1d1e1f !important;
62
+ }
63
+ }
64
+
65
+ .x-menu-item {
66
+ color: #cfd3dc !important;
67
+ background-color: transparent !important;
68
+
69
+ &:hover {
70
+ background-color: #262727 !important;
71
+ }
72
+
73
+ &.is-active {
74
+ color: #409eff !important;
75
+ background-color: rgba(64, 158, 255, 0.1) !important;
76
+
77
+ &::before {
78
+ background-color: #409eff;
79
+ }
80
+ }
81
+
82
+ // 水平模式下的菜单项
83
+ &.is-horizontal {
84
+ &:hover {
85
+ background-color: transparent !important;
86
+ }
87
+
88
+ &.is-active {
89
+ background-color: transparent !important;
90
+ border-bottom-color: #409eff;
91
+ }
92
+ }
93
+ }
94
+
95
+ .x-sub-menu {
96
+ &__title {
97
+ color: #cfd3dc !important;
98
+ background-color: transparent !important;
99
+
100
+ &:hover {
101
+ background-color: #262727 !important;
102
+ }
103
+ }
104
+
105
+ &__menu {
106
+ background-color: #1d1e1f !important;
107
+ border: 1px solid #363637;
108
+ box-shadow: 0 2px 12px rgba(0, 0, 0, 0.5);
109
+
110
+ // 子菜单中的菜单项
111
+ .x-menu-item {
112
+ background-color: transparent !important;
113
+ color: #cfd3dc !important;
114
+
115
+ &:hover {
116
+ background-color: #262727 !important;
117
+ }
118
+
119
+ &.is-active {
120
+ color: #409eff !important;
121
+ background-color: rgba(64, 158, 255, 0.1) !important;
122
+ }
123
+ }
124
+ }
125
+
126
+ &__arrow {
127
+ color: #a3a6ad;
128
+ }
129
+
130
+ &.is-opened > .x-sub-menu__title {
131
+ background-color: #262727 !important;
132
+ }
133
+
134
+ &.is-active > .x-sub-menu__title {
135
+ color: #409eff !important;
136
+ }
137
+
138
+ // 水平模式下的子菜单
139
+ &--horizontal {
140
+ .x-sub-menu__title:hover {
141
+ background-color: transparent !important;
142
+ }
143
+
144
+ .x-sub-menu__menu {
145
+ background-color: #1d1e1f !important;
146
+ border: 1px solid #363637;
147
+ }
148
+ }
149
+
150
+ // 收起状态下的弹出菜单
151
+ &.is-collapse > .x-sub-menu__menu {
152
+ background-color: #1d1e1f !important;
153
+ border: 1px solid #363637;
154
+ }
155
+ }
156
+
157
+ // 顶部导航
158
+ .header {
159
+ background-color: #1d1e1f;
160
+ border-bottom-color: #363637;
161
+ }
162
+
163
+ .header__collapse {
164
+ color: #cfd3dc;
165
+ }
166
+
167
+ .header__breadcrumb {
168
+ color: #a3a6ad;
169
+ }
170
+
171
+ .header__user-name {
172
+ color: #cfd3dc;
173
+ }
174
+
175
+ .header__user-arrow {
176
+ color: #a3a6ad;
177
+ }
178
+
179
+ .header__action:hover {
180
+ background-color: #262727;
181
+ }
182
+
183
+ .header__user-trigger:hover {
184
+ background-color: #262727;
185
+ }
186
+
187
+ // 下拉菜单
188
+ .header__dropdown {
189
+ background-color: #1d1e1f;
190
+ border: 1px solid #363637;
191
+ box-shadow: 0 2px 12px rgba(0, 0, 0, 0.5);
192
+ }
193
+
194
+ .header__dropdown-name {
195
+ color: #e5eaf3;
196
+ }
197
+
198
+ .header__dropdown-role {
199
+ color: #a3a6ad;
200
+ }
201
+
202
+ .header__dropdown-divider {
203
+ background-color: #363637;
204
+ }
205
+
206
+ .header__dropdown-item {
207
+ color: #cfd3dc;
208
+
209
+ &:hover {
210
+ background-color: #262727;
211
+ color: #e5eaf3;
212
+ }
213
+ }
214
+
215
+ // 顶部菜单组件
216
+ .top-menu {
217
+ background-color: #1d1e1f;
218
+
219
+ &__menu {
220
+ background-color: #1d1e1f !important;
221
+ }
222
+
223
+ &__menu-char {
224
+ background-color: rgba(64, 158, 255, 0.2);
225
+ color: #79bbff;
226
+ }
227
+ }
228
+
229
+ // 按钮
230
+ .x-button {
231
+ &.x-button--default {
232
+ background-color: #1d1e1f;
233
+ border-color: #4c4d4f;
234
+ color: #cfd3dc;
235
+
236
+ &:hover {
237
+ border-color: #409eff;
238
+ color: #409eff;
239
+ }
240
+ }
241
+
242
+ &.x-button--text {
243
+ color: #409eff;
244
+ }
245
+ }
246
+
247
+ // 表单
248
+ .x-form-item__label {
249
+ color: #cfd3dc;
250
+ }
251
+
252
+ .x-form-item__error {
253
+ color: #f56c6c;
254
+ }
255
+
256
+ // 输入框
257
+ .x-input {
258
+ background-color: #1d1e1f;
259
+ border-color: #4c4d4f;
260
+
261
+ &.is-focus {
262
+ border-color: #409eff;
263
+ }
264
+
265
+ .x-input__inner {
266
+ background-color: transparent;
267
+ color: #e5eaf3;
268
+
269
+ &::placeholder {
270
+ color: #6c6e72;
271
+ }
272
+ }
273
+
274
+ .x-input__suffix,
275
+ .x-input__prefix {
276
+ color: #a3a6ad;
277
+ }
278
+ }
279
+
280
+ // 选择器
281
+ .x-select {
282
+ background-color: #1d1e1f;
283
+ border-color: #4c4d4f;
284
+ }
285
+
286
+ // 卡片
287
+ .x-card {
288
+ background-color: #1d1e1f;
289
+ border-color: #363637;
290
+ }
291
+
292
+ .x-card__header {
293
+ border-bottom-color: #363637;
294
+ color: #e5eaf3;
295
+ }
296
+
297
+ // 表格
298
+ .data-table {
299
+ th {
300
+ background-color: #262727;
301
+ color: #cfd3dc;
302
+ border-bottom-color: #363637;
303
+ }
304
+
305
+ td {
306
+ border-bottom-color: #363637;
307
+ color: #cfd3dc;
308
+ }
309
+
310
+ tr:hover td {
311
+ background-color: #262727;
312
+ }
313
+ }
314
+
315
+ // 弹窗
316
+ .x-modal {
317
+ &__wrapper {
318
+ background-color: rgba(0, 0, 0, 0.7);
319
+ }
320
+
321
+ &__container {
322
+ background-color: #1d1e1f;
323
+ border: 1px solid #363637;
324
+ }
325
+
326
+ &__header {
327
+ border-bottom-color: #363637;
328
+ color: #e5eaf3;
329
+ }
330
+
331
+ &__footer {
332
+ border-top-color: #363637;
333
+ }
334
+ }
335
+
336
+ // 消息提示
337
+ .x-message {
338
+ background-color: #1d1e1f;
339
+ border: 1px solid #363637;
340
+ }
341
+
342
+ // 标签
343
+ .x-tag {
344
+ &.x-tag--primary {
345
+ background-color: rgba(64, 158, 255, 0.2);
346
+ color: #79bbff;
347
+ border-color: rgba(64, 158, 255, 0.3);
348
+ }
349
+
350
+ &.x-tag--success {
351
+ background-color: rgba(103, 194, 58, 0.2);
352
+ color: #95d475;
353
+ border-color: rgba(103, 194, 58, 0.3);
354
+ }
355
+
356
+ &.x-tag--warning {
357
+ background-color: rgba(230, 162, 60, 0.2);
358
+ color: #eebe77;
359
+ border-color: rgba(230, 162, 60, 0.3);
360
+ }
361
+
362
+ &.x-tag--danger {
363
+ background-color: rgba(245, 108, 108, 0.2);
364
+ color: #fab6b6;
365
+ border-color: rgba(245, 108, 108, 0.3);
366
+ }
367
+
368
+ &.x-tag--info {
369
+ background-color: rgba(144, 147, 153, 0.2);
370
+ color: #c0c4cc;
371
+ border-color: rgba(144, 147, 153, 0.3);
372
+ }
373
+ }
374
+
375
+ // 开关
376
+ .x-switch {
377
+ background-color: #4c4d4f;
378
+
379
+ &.is-checked {
380
+ background-color: #409eff;
381
+ }
382
+ }
383
+
384
+ // 分页
385
+ .x-pagination {
386
+ color: #cfd3dc;
387
+
388
+ &__item {
389
+ background-color: #1d1e1f;
390
+ border-color: #4c4d4f;
391
+ color: #cfd3dc;
392
+
393
+ &:hover {
394
+ color: #409eff;
395
+ }
396
+
397
+ &.is-active {
398
+ background-color: #409eff;
399
+ border-color: #409eff;
400
+ color: #fff;
401
+ }
402
+ }
403
+ }
404
+
405
+ // 登录页面
406
+ .login {
407
+ background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
408
+ }
409
+
410
+ .login__container {
411
+ background-color: #1d1e1f;
412
+ border: 1px solid #363637;
413
+ }
414
+
415
+ .login__title {
416
+ color: #409eff;
417
+ }
418
+
419
+ .login__subtitle {
420
+ color: #a3a6ad;
421
+ }
422
+
423
+ .login__footer {
424
+ color: #6c6e72;
425
+ }
426
+
427
+ // 仪表盘
428
+ .stat-card__title {
429
+ color: #a3a6ad;
430
+ }
431
+
432
+ .quick-link {
433
+ background-color: #262727;
434
+
435
+ &:hover {
436
+ background-color: rgba(64, 158, 255, 0.1);
437
+ }
438
+
439
+ &__title {
440
+ color: #cfd3dc;
441
+ }
442
+ }
443
+
444
+ .activity-item {
445
+ border-bottom-color: #363637;
446
+
447
+ &__action {
448
+ color: #cfd3dc;
449
+ }
450
+ }
451
+
452
+ // 搜索卡片
453
+ .search-card {
454
+ background-color: #1d1e1f;
455
+ border: 1px solid #363637;
456
+ }
457
+
458
+ // 表格卡片
459
+ .table-card {
460
+ background-color: #1d1e1f;
461
+ border: 1px solid #363637;
462
+ }
463
+
464
+ // Popconfirm
465
+ .x-popconfirm {
466
+ background-color: #1d1e1f;
467
+ border: 1px solid #363637;
468
+ }
469
+
470
+ // Drawer 抽屉组件
471
+ .x-drawer {
472
+ background-color: #1d1e1f;
473
+
474
+ &__header {
475
+ background-color: #1d1e1f;
476
+ border-bottom-color: #363637;
477
+ color: #e5eaf3;
478
+ }
479
+
480
+ &__body {
481
+ background-color: #1d1e1f;
482
+ color: #cfd3dc;
483
+ }
484
+
485
+ &__footer {
486
+ background-color: #1d1e1f;
487
+ border-top-color: #363637;
488
+ }
489
+ }
490
+
491
+ // 设置抽屉内容
492
+ .settings-drawer {
493
+ .settings-title {
494
+ color: #e5eaf3;
495
+ }
496
+
497
+ .settings-section {
498
+ background-color: transparent;
499
+ }
500
+
501
+ .layout-option {
502
+ border-color: #4c4d4f;
503
+ background-color: transparent;
504
+
505
+ &:hover {
506
+ border-color: #409eff;
507
+ }
508
+
509
+ &.is-active {
510
+ border-color: #409eff;
511
+ background-color: rgba(64, 158, 255, 0.1);
512
+ }
513
+
514
+ &__label {
515
+ color: #cfd3dc;
516
+ }
517
+ }
518
+
519
+ .settings-switch-item {
520
+ span {
521
+ color: #cfd3dc;
522
+ }
523
+ }
524
+ }
407
525
  }