xt-element-ui 2.2.2 → 2.2.3

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 (115) hide show
  1. package/README.md +1 -1
  2. package/docs/README.md +10 -3
  3. package/docs/components/base/xt-button.md +11 -4
  4. package/docs/components/base/xt-card.md +5 -11
  5. package/docs/components/base/xt-config-provider.md +2 -0
  6. package/docs/components/base/xt-flow.md +404 -0
  7. package/docs/components/base/xt-multi.md +5 -5
  8. package/docs/components/business/xt-chart.md +1 -0
  9. package/lib/index.common.1.js +2 -2
  10. package/lib/index.common.2.js +1 -1
  11. package/lib/index.common.js +11462 -118010
  12. package/lib/index.css +1 -1
  13. package/lib/index.umd.1.js +2 -2
  14. package/lib/index.umd.2.js +1 -1
  15. package/lib/index.umd.js +11468 -118015
  16. package/lib/index.umd.min.js +1 -1
  17. package/lib/xt-badge/xt-badge.common.js +1 -1
  18. package/lib/xt-badge/xt-badge.css +1 -1
  19. package/lib/xt-badge/xt-badge.umd.js +1 -1
  20. package/lib/xt-button/xt-button.common.js +13 -8
  21. package/lib/xt-button/xt-button.css +1 -1
  22. package/lib/xt-button/xt-button.umd.js +13 -8
  23. package/lib/xt-button/xt-button.umd.min.js +1 -1
  24. package/lib/xt-card/xt-card.common.js +5 -5
  25. package/lib/xt-card/xt-card.umd.js +5 -5
  26. package/lib/xt-card/xt-card.umd.min.js +1 -1
  27. package/lib/xt-card-item/xt-card-item.common.js +4 -4
  28. package/lib/xt-card-item/xt-card-item.umd.js +4 -4
  29. package/lib/xt-card-item/xt-card-item.umd.min.js +1 -1
  30. package/lib/xt-chart/xt-chart.common.js +1969 -108924
  31. package/lib/xt-chart/xt-chart.css +1 -1
  32. package/lib/xt-chart/xt-chart.umd.js +1975 -108929
  33. package/lib/xt-chart/xt-chart.umd.min.js +1 -1
  34. package/lib/xt-config-provider/xt-config-provider.common.js +561 -107504
  35. package/lib/xt-config-provider/xt-config-provider.css +1 -1
  36. package/lib/xt-config-provider/xt-config-provider.umd.js +567 -107509
  37. package/lib/xt-config-provider/xt-config-provider.umd.min.js +1 -1
  38. package/lib/xt-date-picker/xt-date-picker.common.1.js +2 -2
  39. package/lib/xt-date-picker/xt-date-picker.common.2.js +1 -1
  40. package/lib/xt-date-picker/xt-date-picker.common.js +1 -1
  41. package/lib/xt-date-picker/xt-date-picker.css +1 -1
  42. package/lib/xt-date-picker/xt-date-picker.umd.1.js +2 -2
  43. package/lib/xt-date-picker/xt-date-picker.umd.2.js +1 -1
  44. package/lib/xt-date-picker/xt-date-picker.umd.js +1 -1
  45. package/lib/xt-flex-box/xt-flex-box.common.js +1 -1
  46. package/lib/xt-flex-box/xt-flex-box.umd.js +1 -1
  47. package/lib/xt-flow/demo.html +10 -0
  48. package/lib/xt-flow/index.js +1 -0
  49. package/lib/xt-flow/xt-flow.common.js +638 -0
  50. package/lib/xt-flow/xt-flow.css +1 -0
  51. package/lib/xt-flow/xt-flow.umd.js +648 -0
  52. package/lib/xt-flow/xt-flow.umd.min.js +1 -0
  53. package/lib/xt-form-schema/xt-form-schema.common.js +1 -1
  54. package/lib/xt-form-schema/xt-form-schema.umd.js +1 -1
  55. package/lib/xt-grid-box/xt-grid-box.common.js +1 -1
  56. package/lib/xt-grid-box/xt-grid-box.umd.js +1 -1
  57. package/lib/xt-grid-item/xt-grid-item.common.js +1 -1
  58. package/lib/xt-grid-item/xt-grid-item.umd.js +1 -1
  59. package/lib/xt-icon/xt-icon.common.js +1 -1
  60. package/lib/xt-icon/xt-icon.umd.js +1 -1
  61. package/lib/xt-input/xt-input.common.js +1 -1
  62. package/lib/xt-input/xt-input.umd.js +1 -1
  63. package/lib/xt-list/xt-list.common.js +1 -1
  64. package/lib/xt-list/xt-list.umd.js +1 -1
  65. package/lib/xt-map/xt-map.common.js +1 -1
  66. package/lib/xt-map/xt-map.umd.js +1 -1
  67. package/lib/xt-map-provider/xt-map-provider.common.js +1 -1
  68. package/lib/xt-map-provider/xt-map-provider.umd.js +1 -1
  69. package/lib/xt-page/xt-page.common.js +1 -1
  70. package/lib/xt-page/xt-page.umd.js +1 -1
  71. package/lib/xt-progress/xt-progress.common.js +1 -1
  72. package/lib/xt-progress/xt-progress.umd.js +1 -1
  73. package/lib/xt-scroll-arrow/xt-scroll-arrow.common.js +1 -1
  74. package/lib/xt-scroll-arrow/xt-scroll-arrow.umd.js +1 -1
  75. package/lib/xt-select-tree/xt-select-tree.common.js +1 -1
  76. package/lib/xt-select-tree/xt-select-tree.umd.js +1 -1
  77. package/lib/xt-step-price/xt-step-price.common.js +2 -2
  78. package/lib/xt-step-price/xt-step-price.umd.js +2 -2
  79. package/lib/xt-step-price-item/xt-step-price-item.common.js +1 -1
  80. package/lib/xt-step-price-item/xt-step-price-item.umd.js +1 -1
  81. package/lib/xt-tab-pane/xt-tab-pane.common.js +1 -1
  82. package/lib/xt-tab-pane/xt-tab-pane.umd.js +1 -1
  83. package/lib/xt-table/xt-table.common.js +2 -2
  84. package/lib/xt-table/xt-table.umd.js +2 -2
  85. package/lib/xt-tabs/xt-tabs.common.js +1 -1
  86. package/lib/xt-tabs/xt-tabs.umd.js +1 -1
  87. package/lib/xt-text/xt-text.common.js +1 -1
  88. package/lib/xt-text/xt-text.css +1 -1
  89. package/lib/xt-text/xt-text.umd.js +1 -1
  90. package/lib/xt-time/xt-time.common.js +1 -1
  91. package/lib/xt-time/xt-time.umd.js +1 -1
  92. package/lib/xt-transfer-tree/xt-transfer-tree.common.js +1 -1
  93. package/lib/xt-transfer-tree/xt-transfer-tree.umd.js +1 -1
  94. package/lib/xt-upload/xt-upload.common.js +11 -11
  95. package/lib/xt-upload/xt-upload.umd.js +12 -12
  96. package/lib/xt-upload/xt-upload.umd.min.js +1 -1
  97. package/package.json +5 -6
  98. package/src/components/index.scss +4 -1
  99. package/src/components/xt-badge/style/index.scss +6 -6
  100. package/src/components/xt-button/index.vue +11 -6
  101. package/src/components/xt-button/style/index.scss +7 -5
  102. package/src/components/xt-card/index.vue +3 -3
  103. package/src/components/xt-card-item/index.vue +2 -2
  104. package/src/components/xt-chart/XtMulti.vue +8 -18
  105. package/src/components/xt-chart/XtPie.vue +1 -0
  106. package/src/components/xt-chart/utils.js +84 -50
  107. package/src/components/xt-config-provider/index.vue +56 -54
  108. package/src/components/xt-date-picker/style/index.scss +4 -6
  109. package/src/components/xt-flow/flowable-parser.js +244 -0
  110. package/src/components/xt-flow/index.js +8 -0
  111. package/src/components/xt-flow/index.vue +226 -0
  112. package/src/components/xt-flow/style/index.scss +359 -0
  113. package/src/components/xt-text/style/index.scss +6 -6
  114. package/src/index.js +8 -13
  115. package/src/styles/css-variables.scss +73 -1
@@ -0,0 +1,359 @@
1
+ // ============================
2
+ // xt-flow 审批流程轨迹组件样式
3
+ // 全部使用 CSS 变量,无缝适配明暗主题
4
+ // ============================
5
+
6
+ .xt-flow {
7
+ position: relative;
8
+ padding: var(--xt-spacing-md, 16px) 0;
9
+ }
10
+
11
+ // ============================
12
+ // 节点主体
13
+ // ============================
14
+ .xt-flow__node {
15
+ display: flex;
16
+ align-items: flex-start;
17
+ padding-bottom: 0;
18
+ position: relative;
19
+
20
+ &:last-child {
21
+ .xt-flow__line {
22
+ display: none;
23
+ }
24
+ }
25
+ }
26
+
27
+ // ============================
28
+ // 时间线区域(左侧)
29
+ // ============================
30
+ .xt-flow__timeline {
31
+ display: flex;
32
+ flex-direction: column;
33
+ align-items: center;
34
+ flex-shrink: 0;
35
+ width: 40px;
36
+ margin-right: var(--xt-spacing-sm, 12px);
37
+ }
38
+
39
+ // ============================
40
+ // 节点图标
41
+ // ============================
42
+ .xt-flow__icon {
43
+ width: 24px;
44
+ height: 24px;
45
+ border-radius: 50%;
46
+ display: flex;
47
+ align-items: center;
48
+ justify-content: center;
49
+ flex-shrink: 0;
50
+ z-index: 1;
51
+ transition: background var(--xt-transition-duration-fast, 0.2s) ease;
52
+
53
+ // 默认圆点
54
+ &-dot {
55
+ width: 10px;
56
+ height: 10px;
57
+ border-radius: 50%;
58
+ display: block;
59
+ }
60
+
61
+ // 通过
62
+ &--approved {
63
+ background: var(--xt-color-primary-light-9, #e8f4ff);
64
+ .xt-flow__icon-dot {
65
+ background: var(--xt-color-primary, #1890ff);
66
+ }
67
+ }
68
+
69
+ // 驳回
70
+ &--rejected {
71
+ background: var(--xt-color-danger-light-9, #fef0f0);
72
+ .xt-flow__icon-dot {
73
+ background: var(--xt-color-danger, #f56c6c);
74
+ }
75
+ }
76
+
77
+ // 待办
78
+ &--pending {
79
+ background: var(--xt-color-warning-light-9, #fdf6ec);
80
+ .xt-flow__icon-dot {
81
+ background: var(--xt-color-warning, #e6a23c);
82
+ animation: xt-flow-pulse 1.5s ease-in-out infinite;
83
+ }
84
+ }
85
+
86
+ // 转办
87
+ &--transferred,
88
+ &--delegated {
89
+ background: var(--xt-color-info-light-9, #f4f4f5);
90
+ .xt-flow__icon-dot {
91
+ background: var(--xt-color-info, #909399);
92
+ }
93
+ }
94
+
95
+ // 撤回
96
+ &--recalled,
97
+ &--cancelled {
98
+ background: var(--xt-fill-color-light, #f5f7fa);
99
+ .xt-flow__icon-dot {
100
+ background: var(--xt-text-color-secondary, #909399);
101
+ }
102
+ }
103
+
104
+ // 发起
105
+ &--started {
106
+ background: var(--xt-color-primary-light-9, #e8f4ff);
107
+ .xt-flow__icon-dot {
108
+ background: var(--xt-color-primary, #1890ff);
109
+ }
110
+ }
111
+ }
112
+
113
+ @keyframes xt-flow-pulse {
114
+ 0%, 100% { opacity: 1; }
115
+ 50% { opacity: 0.4; }
116
+ }
117
+
118
+ // ============================
119
+ // 连接线
120
+ // ============================
121
+ .xt-flow__line {
122
+ width: 2px;
123
+ flex: 1;
124
+ min-height: 32px;
125
+ background: var(--xt-border-color-light, #e4e7ed);
126
+ margin: 4px 0;
127
+ transition: background var(--xt-transition-duration-fast, 0.2s) ease;
128
+
129
+ // 通过 - 实线主题色
130
+ &--approved {
131
+ background: var(--xt-color-primary-light-5, #8cc8ff);
132
+ }
133
+
134
+ // 驳回 - 虚线
135
+ &--rejected,
136
+ &--dashed {
137
+ background: repeating-linear-gradient(
138
+ to bottom,
139
+ var(--xt-color-danger, #f56c6c) 0px,
140
+ var(--xt-color-danger, #f56c6c) 4px,
141
+ transparent 4px,
142
+ transparent 8px
143
+ );
144
+ }
145
+
146
+ // 待办 - 浅色虚线
147
+ &--pending {
148
+ background: repeating-linear-gradient(
149
+ to bottom,
150
+ var(--xt-border-color, #dcdfe6) 0px,
151
+ var(--xt-border-color, #dcdfe6) 3px,
152
+ transparent 3px,
153
+ transparent 6px
154
+ );
155
+ }
156
+
157
+ // 转办/委托
158
+ &--transferred,
159
+ &--delegated {
160
+ background: var(--xt-border-color, #dcdfe6);
161
+ }
162
+
163
+ // 撤回/取消
164
+ &--recalled,
165
+ &--cancelled {
166
+ background: var(--xt-border-color-lighter, #ebeef5);
167
+ }
168
+ }
169
+
170
+ // ============================
171
+ // 节点内容区域
172
+ // ============================
173
+ .xt-flow__body {
174
+ flex: 1;
175
+ min-width: 0;
176
+ padding-bottom: var(--xt-spacing-md, 16px);
177
+ border-radius: var(--xt-border-radius-small, 4px);
178
+ transition: background var(--xt-transition-duration-fast, 0.2s) ease;
179
+ }
180
+
181
+ // ============================
182
+ // 节点头部
183
+ // ============================
184
+ .xt-flow__header {
185
+ display: flex;
186
+ align-items: center;
187
+ justify-content: space-between;
188
+ margin-bottom: 4px;
189
+ }
190
+
191
+ .xt-flow__title {
192
+ font-size: calc(14px + var(--xt-font-size-increment, 0px));
193
+ font-weight: var(--xt-font-weight-primary, 500);
194
+ color: var(--xt-text-color-primary, #303133);
195
+ line-height: 1.4;
196
+ word-break: break-all;
197
+ }
198
+
199
+ .xt-flow__status {
200
+ flex-shrink: 0;
201
+ font-size: calc(12px + var(--xt-font-size-increment, 0px));
202
+ padding: 1px 8px;
203
+ border-radius: var(--xt-border-radius-mini, 2px);
204
+ margin-left: var(--xt-spacing-xs, 8px);
205
+ line-height: 20px;
206
+ white-space: nowrap;
207
+
208
+ // 通过
209
+ &--approved {
210
+ color: var(--xt-color-primary, #1890ff);
211
+ background: var(--xt-color-primary-light-9, #e8f4ff);
212
+ }
213
+
214
+ // 驳回
215
+ &--rejected {
216
+ color: var(--xt-color-danger, #f56c6c);
217
+ background: var(--xt-color-danger-light-9, #fef0f0);
218
+ }
219
+
220
+ // 待办
221
+ &--pending {
222
+ color: var(--xt-color-warning, #e6a23c);
223
+ background: var(--xt-color-warning-light-9, #fdf6ec);
224
+ }
225
+
226
+ // 转办/委托
227
+ &--transferred,
228
+ &--delegated {
229
+ color: var(--xt-color-info, #909399);
230
+ background: var(--xt-color-info-light-9, #f4f4f5);
231
+ }
232
+
233
+ // 撤回/取消
234
+ &--recalled,
235
+ &--cancelled {
236
+ color: var(--xt-text-color-secondary, #909399);
237
+ background: var(--xt-fill-color-light, #f5f7fa);
238
+ }
239
+
240
+ // 发起
241
+ &--started {
242
+ color: var(--xt-color-primary, #1890ff);
243
+ background: var(--xt-color-primary-light-9, #e8f4ff);
244
+ }
245
+ }
246
+
247
+ // ============================
248
+ // 节点元信息
249
+ // ============================
250
+ .xt-flow__meta {
251
+ display: flex;
252
+ align-items: center;
253
+ flex-wrap: wrap;
254
+ gap: var(--xt-spacing-xs, 8px);
255
+ font-size: calc(12px + var(--xt-font-size-increment, 0px));
256
+ color: var(--xt-text-color-secondary, #909399);
257
+ line-height: 1.5;
258
+ }
259
+
260
+ .xt-flow__assignee {
261
+ display: inline-flex;
262
+ align-items: center;
263
+ gap: 2px;
264
+ }
265
+
266
+ .xt-flow__assignee-icon {
267
+ font-size: 12px;
268
+ }
269
+
270
+ .xt-flow__time,
271
+ .xt-flow__duration {
272
+ color: var(--xt-text-color-placeholder, #a8abb2);
273
+ }
274
+
275
+ // ============================
276
+ // 节点描述/审批意见
277
+ // ============================
278
+ .xt-flow__desc {
279
+ margin-top: 6px;
280
+ padding: var(--xt-spacing-xs, 8px);
281
+ font-size: calc(13px + var(--xt-font-size-increment, 0px));
282
+ color: var(--xt-text-color-regular, #606266);
283
+ background: var(--xt-fill-color-light, #f5f7fa);
284
+ border-radius: var(--xt-border-radius-small, 4px);
285
+ line-height: 1.6;
286
+ word-break: break-all;
287
+ }
288
+
289
+ .xt-flow__desc-label {
290
+ font-weight: var(--xt-font-weight-primary, 500);
291
+ color: var(--xt-text-color-primary, #303133);
292
+ }
293
+
294
+ // ============================
295
+ // 节点操作按钮
296
+ // ============================
297
+ .xt-flow__actions {
298
+ margin-top: 8px;
299
+ display: flex;
300
+ gap: var(--xt-spacing-xs, 8px);
301
+ flex-wrap: wrap;
302
+ }
303
+
304
+ // ============================
305
+ // 折叠/展开触发器
306
+ // ============================
307
+ .xt-flow__collapse {
308
+ display: flex;
309
+ align-items: center;
310
+ justify-content: center;
311
+ padding: var(--xt-spacing-sm, 12px) 0;
312
+ cursor: pointer;
313
+ user-select: none;
314
+ transition: color var(--xt-transition-duration-fast, 0.2s) ease;
315
+
316
+ &:hover {
317
+ .xt-flow__collapse-text {
318
+ color: var(--xt-color-primary, #1890ff);
319
+ }
320
+ }
321
+ }
322
+
323
+ .xt-flow__collapse-text {
324
+ font-size: calc(13px + var(--xt-font-size-increment, 0px));
325
+ color: var(--xt-text-color-secondary, #909399);
326
+ display: inline-flex;
327
+ align-items: center;
328
+ gap: 4px;
329
+ transition: color var(--xt-transition-duration-fast, 0.2s) ease;
330
+ }
331
+
332
+ .xt-flow__collapse-arrow {
333
+ font-size: 10px;
334
+
335
+ &--up {
336
+ transform: rotate(0deg);
337
+ }
338
+ }
339
+
340
+ // ============================
341
+ // 方形 / 圆形两套圆角
342
+ // ============================
343
+ .xt-flow--square {
344
+ .xt-flow__icon {
345
+ border-radius: 4px;
346
+ }
347
+ .xt-flow__icon-dot {
348
+ border-radius: 2px;
349
+ }
350
+ }
351
+
352
+ .xt-flow--round {
353
+ .xt-flow__icon {
354
+ border-radius: 50%;
355
+ }
356
+ .xt-flow__icon-dot {
357
+ border-radius: 50%;
358
+ }
359
+ }
@@ -36,15 +36,15 @@
36
36
  }
37
37
 
38
38
  .xt-text--success {
39
- color: $xt-color-success;
39
+ color: var(--xt-color-success);
40
40
  }
41
41
 
42
42
  .xt-text--warning {
43
- color: $xt-color-warning;
43
+ color: var(--xt-color-warning);
44
44
  }
45
45
 
46
46
  .xt-text--danger {
47
- color: $xt-color-danger;
47
+ color: var(--xt-color-danger);
48
48
  }
49
49
 
50
50
  // 粗体
@@ -81,15 +81,15 @@
81
81
  }
82
82
 
83
83
  &.xt-text--success {
84
- color: $xt-color-success;
84
+ color: var(--xt-color-success);
85
85
  }
86
86
 
87
87
  &.xt-text--warning {
88
- color: $xt-color-warning;
88
+ color: var(--xt-color-warning);
89
89
  }
90
90
 
91
91
  &.xt-text--danger {
92
- color: $xt-color-danger;
92
+ color: var(--xt-color-danger);
93
93
  }
94
94
  }
95
95
 
package/src/index.js CHANGED
@@ -4,9 +4,6 @@ import './styles/css-variables.scss'
4
4
  // 导入组件样式(统一入口)
5
5
  import './components/index.scss'
6
6
 
7
- // 导入 SCSS 变量(通过 CSS Modules :export 导出)
8
- import variables from './styles/variables-export.scss'
9
-
10
7
  import utilsModule from './utils/index'
11
8
 
12
9
  // ES Module 默认导出需要通过 .default 访问
@@ -49,6 +46,7 @@ import XtSelectTree from './components/xt-select-tree'
49
46
  import XtUpload from './components/xt-upload'
50
47
  import XtTransferTree from './components/xt-transfer-tree' // XtTransferTree 组件(树形穿梭框)
51
48
  import XtFormSchema from './components/xt-form-schema' // XtFormSchema 组件(表单配置化搜索)
49
+ import XtFlow from './components/xt-flow' // XtFlow 组件(审批流程轨迹)
52
50
 
53
51
 
54
52
  const components = [
@@ -84,7 +82,8 @@ const components = [
84
82
  XtSelectTree,
85
83
  XtUpload,
86
84
  XtTransferTree,
87
- XtFormSchema
85
+ XtFormSchema,
86
+ XtFlow
88
87
  ]
89
88
 
90
89
  const install = function (Vue, options = {}) {
@@ -163,19 +162,13 @@ export default {
163
162
  XtSelectTree,
164
163
  XtUpload,
165
164
  XtTransferTree,
166
- XtFormSchema
165
+ XtFormSchema,
166
+ XtFlow
167
167
  }
168
168
 
169
- // XtChart 组件按需导出(使用时需自行安装 echarts 依赖)
170
- export { default as XtChart } from './components/xt-chart'
171
-
172
- // XtTable 虚拟滚动演示数据工具
173
- export { createVirtualScrollData, virtualScrollColumns } from './components/xt-table/virtualScrollData'
174
-
175
169
  // 导出工具函数和变量
176
170
  export {
177
171
  utils,
178
- variables,
179
172
  // 配置管理函数(从 utils 导入)
180
173
  getConfig,
181
174
  setConfig,
@@ -211,11 +204,13 @@ export {
211
204
  XtScrollArrow,
212
205
  XtBar,
213
206
  XtLine,
207
+ XtChart,
214
208
  XtPie,
215
209
  XtMulti,
216
210
  XtPage,
217
211
  XtSelectTree,
218
212
  XtUpload,
219
213
  XtTransferTree,
220
- XtFormSchema
214
+ XtFormSchema,
215
+ XtFlow
221
216
  }
@@ -239,4 +239,76 @@
239
239
 
240
240
  [data-size="small"] {
241
241
  --xt-font-size-increment: 0px;
242
- }
242
+ }
243
+
244
+ // ============================
245
+ // 品牌色配置(水电气子系统 + 大屏分析)
246
+ // 品牌色与主题模式可叠加使用
247
+ // 示例:<div data-theme="dark" data-brand="water">
248
+ // ============================
249
+
250
+ // 水务系统 - 蓝色系
251
+ [data-brand="water"] {
252
+ --xt-color-primary: #0077be;
253
+ --xt-color-primary-light-3: rgb(51, 142, 206);
254
+ --xt-color-primary-light-5: rgb(102, 179, 229);
255
+ --xt-color-primary-light-7: rgb(153, 216, 252);
256
+ --xt-color-primary-light-8: rgb(178, 229, 253);
257
+ --xt-color-primary-light-9: rgb(204, 241, 255);
258
+ --xt-color-primary-dark-2: rgb(0, 92, 145);
259
+ }
260
+
261
+ [data-theme="dark"][data-brand="water"],
262
+ [data-brand="water"][data-theme="dark"] {
263
+ --xt-color-primary: #0099cc;
264
+ --xt-color-primary-light-3: rgb(0, 124, 167);
265
+ --xt-color-primary-light-5: rgb(0, 93, 125);
266
+ --xt-color-primary-light-7: rgb(0, 62, 83);
267
+ --xt-color-primary-light-8: rgb(0, 47, 63);
268
+ --xt-color-primary-light-9: rgb(0, 31, 42);
269
+ --xt-color-primary-dark-2: rgb(0, 159, 204);
270
+ }
271
+
272
+ // 电力系统 - 绿色系
273
+ [data-brand="electricity"] {
274
+ --xt-color-primary: #2ecc71;
275
+ --xt-color-primary-light-3: rgb(95, 224, 146);
276
+ --xt-color-primary-light-5: rgb(140, 234, 176);
277
+ --xt-color-primary-light-7: rgb(185, 244, 206);
278
+ --xt-color-primary-light-8: rgb(208, 249, 221);
279
+ --xt-color-primary-light-9: rgb(230, 252, 238);
280
+ --xt-color-primary-dark-2: rgb(34, 181, 94);
281
+ }
282
+
283
+ [data-theme="dark"][data-brand="electricity"],
284
+ [data-brand="electricity"][data-theme="dark"] {
285
+ --xt-color-primary: #27ae60;
286
+ --xt-color-primary-light-3: rgb(50, 168, 102);
287
+ --xt-color-primary-light-5: rgb(38, 126, 77);
288
+ --xt-color-primary-light-7: rgb(26, 84, 51);
289
+ --xt-color-primary-light-8: rgb(19, 63, 38);
290
+ --xt-color-primary-light-9: rgb(13, 42, 26);
291
+ --xt-color-primary-dark-2: rgb(73, 212, 131);
292
+ }
293
+
294
+ // 燃气系统 - 橙色系
295
+ [data-brand="gas"] {
296
+ --xt-color-primary: #f39c12;
297
+ --xt-color-primary-light-3: rgb(247, 176, 85);
298
+ --xt-color-primary-light-5: rgb(249, 199, 140);
299
+ --xt-color-primary-light-7: rgb(251, 222, 195);
300
+ --xt-color-primary-light-8: rgb(252, 233, 222);
301
+ --xt-color-primary-light-9: rgb(254, 244, 248);
302
+ --xt-color-primary-dark-2: rgb(194, 133, 0);
303
+ }
304
+
305
+ [data-theme="dark"][data-brand="gas"],
306
+ [data-brand="gas"][data-theme="dark"] {
307
+ --xt-color-primary: #e67e22;
308
+ --xt-color-primary-light-3: rgb(214, 146, 75);
309
+ --xt-color-primary-light-5: rgb(161, 109, 56);
310
+ --xt-color-primary-light-7: rgb(107, 73, 38);
311
+ --xt-color-primary-light-8: rgb(80, 55, 28);
312
+ --xt-color-primary-light-9: rgb(54, 36, 19);
313
+ --xt-color-primary-dark-2: rgb(241, 152, 66);
314
+ }