xto-fronted 0.4.113 → 0.5.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 (114) hide show
  1. package/dist/assets/404-BYUyVmEj.js +1 -0
  2. package/dist/assets/404-CcAc5uFh.css +1 -0
  3. package/dist/assets/_plugin-vue_export-helper-DlAUqK2U.js +1 -0
  4. package/dist/assets/index-4oN1au3P.css +1 -0
  5. package/dist/assets/index-BEwGthu5.js +1 -0
  6. package/dist/assets/index-BG5gsGCY.js +1 -0
  7. package/dist/assets/index-BHABoX0X.css +1 -0
  8. package/dist/assets/index-BRR97dc6.js +1 -0
  9. package/dist/assets/index-BUqGJdah.css +1 -0
  10. package/dist/assets/index-BvN8lC5q.js +1 -0
  11. package/dist/assets/index-C6ibP7SB.css +1 -0
  12. package/dist/assets/index-CJGmoNxx.css +1 -0
  13. package/dist/assets/index-DPrbBY2e.css +1 -0
  14. package/dist/assets/index-DUV7VLAm.js +2 -0
  15. package/dist/assets/index-DcPnYH2c.js +1 -0
  16. package/dist/assets/index-DhwBftHU.css +1 -0
  17. package/dist/assets/index-oc3LDwZZ.js +1 -0
  18. package/dist/assets/index-vuy5HH8m.js +1 -0
  19. package/dist/assets/vendor-CWD9azq9.js +16 -0
  20. package/dist/assets/vue-vendor-sSbh4bdR.js +29 -0
  21. package/dist/assets/xto-base-Bv2ek7Ha.css +1 -0
  22. package/dist/assets/xto-base-kM8Cl-e6.js +1 -0
  23. package/dist/assets/xto-business-CW6DXcvI.css +1 -0
  24. package/dist/assets/xto-core-DsKtn1lm.js +1 -0
  25. package/dist/assets/xto-data-CDPTH0CA.js +1 -0
  26. package/dist/assets/xto-data-CEFTtli6.css +1 -0
  27. package/dist/assets/xto-feedback-Di1AeKNY.css +1 -0
  28. package/dist/assets/xto-feedback-Dp_1dES5.js +1 -0
  29. package/dist/assets/xto-form-Bl3jCZ4e.js +1 -0
  30. package/dist/assets/xto-form-DC11rd9L.css +1 -0
  31. package/dist/assets/xto-layout-BR7iLA0e.css +1 -0
  32. package/dist/assets/xto-navigation-Bl-kwgN_.css +1 -0
  33. package/dist/assets/xto-navigation-Brox2Ork.js +1 -0
  34. package/dist/index.html +28 -0
  35. package/package.json +18 -19
  36. package/src/App.vue +9 -9
  37. package/src/assets/styles/_dark.scss +181 -181
  38. package/src/assets/styles/_reset.scss +14 -14
  39. package/src/assets/styles/_root.scss +153 -132
  40. package/src/assets/styles/_transition.scss +10 -10
  41. package/src/assets/styles/_variables.scss +26 -25
  42. package/src/assets/styles/index.scss +62 -62
  43. package/src/components/Layout/Footer.vue +1 -1
  44. package/src/components/Layout/Header.vue +69 -69
  45. package/src/components/Layout/MixTopMenu.vue +66 -66
  46. package/src/components/Layout/Sidebar.vue +6 -6
  47. package/src/components/Layout/SidebarMenuItem.vue +3 -3
  48. package/src/components/Layout/Tabs.vue +6 -6
  49. package/src/components/Layout/TopMenu.vue +66 -66
  50. package/src/components/Layout/index.vue +7 -7
  51. package/src/stores/app.ts +4 -4
  52. package/src/style.scss +14 -14
  53. package/src/views/dashboard/index.vue +54 -54
  54. package/src/views/error/403.vue +18 -18
  55. package/src/views/error/404.vue +23 -23
  56. package/src/views/login/index.vue +20 -20
  57. package/src/views/system/menu/index.vue +26 -26
  58. package/src/views/system/role/index.vue +27 -27
  59. package/src/views/system/user/index.vue +30 -30
  60. package/dist/App.vue.d.ts +0 -2
  61. package/dist/api/auth.d.ts +0 -8
  62. package/dist/api/index.d.ts +0 -6
  63. package/dist/api/index.js +0 -26
  64. package/dist/api/system.d.ts +0 -16
  65. package/dist/api/user.d.ts +0 -13
  66. package/dist/api.d.ts +0 -2
  67. package/dist/components/Layout/Footer.vue.d.ts +0 -2
  68. package/dist/components/Layout/Header.vue.d.ts +0 -5
  69. package/dist/components/Layout/MixTopMenu.vue.d.ts +0 -10
  70. package/dist/components/Layout/Sidebar.vue.d.ts +0 -13
  71. package/dist/components/Layout/SidebarMenuItem.vue.d.ts +0 -5
  72. package/dist/components/Layout/Tabs.vue.d.ts +0 -2
  73. package/dist/components/Layout/TopMenu.vue.d.ts +0 -10
  74. package/dist/components/Layout/index.vue.d.ts +0 -7
  75. package/dist/composables/useApp.d.ts +0 -30
  76. package/dist/composables/useAuth.d.ts +0 -6
  77. package/dist/composables/useForm.d.ts +0 -20
  78. package/dist/composables/useI18n.d.ts +0 -30
  79. package/dist/composables/useTable.d.ts +0 -29
  80. package/dist/directives/permission.d.ts +0 -4
  81. package/dist/enums/index.d.ts +0 -32
  82. package/dist/index-11ZvkUE8.js +0 -641
  83. package/dist/index-BVEs9eIP.js +0 -3171
  84. package/dist/index-BuVnk-Ka.js +0 -189
  85. package/dist/index-CPUyTvNq.js +0 -479
  86. package/dist/index-CaIet-zn.js +0 -515
  87. package/dist/index.d.ts +0 -63
  88. package/dist/index.js +0 -99
  89. package/dist/main.d.ts +0 -0
  90. package/dist/router/dynamicRoutes.d.ts +0 -30
  91. package/dist/router/guards.d.ts +0 -17
  92. package/dist/router/index.d.ts +0 -6
  93. package/dist/router/layoutRoute.d.ts +0 -23
  94. package/dist/router/staticRoutes.d.ts +0 -2
  95. package/dist/stores/app.d.ts +0 -99
  96. package/dist/stores/auth.d.ts +0 -41
  97. package/dist/stores/index.d.ts +0 -10
  98. package/dist/stores/locale.d.ts +0 -42
  99. package/dist/stores/menu.d.ts +0 -83
  100. package/dist/stores/user.d.ts +0 -101
  101. package/dist/style.css +0 -1
  102. package/dist/user-ChcAx-5W.js +0 -1186
  103. package/dist/utils/auth.d.ts +0 -27
  104. package/dist/utils/config.d.ts +0 -51
  105. package/dist/utils/permission.d.ts +0 -17
  106. package/dist/utils/request.d.ts +0 -34
  107. package/dist/utils/storage.d.ts +0 -24
  108. package/dist/views/dashboard/index.vue.d.ts +0 -2
  109. package/dist/views/error/403.vue.d.ts +0 -2
  110. package/dist/views/error/404.vue.d.ts +0 -2
  111. package/dist/views/login/index.vue.d.ts +0 -4
  112. package/dist/views/system/menu/index.vue.d.ts +0 -4
  113. package/dist/views/system/role/index.vue.d.ts +0 -4
  114. package/dist/views/system/user/index.vue.d.ts +0 -4
@@ -13,7 +13,7 @@
13
13
  html {
14
14
  width: 100%;
15
15
  height: 100%;
16
- font-size: var(--font-size-base);
16
+ font-size: var(--xto-font-size-base, 14px);
17
17
  -webkit-text-size-adjust: 100%;
18
18
  -webkit-tap-highlight-color: transparent;
19
19
  text-rendering: optimizeLegibility;
@@ -24,11 +24,11 @@ html {
24
24
  body {
25
25
  width: 100%;
26
26
  height: 100%;
27
- font-family: var(--font-family);
28
- font-size: var(--font-size-base);
27
+ font-family: var(--xto-font-family, 'Inter', 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif);
28
+ font-size: var(--xto-font-size-base, 14px);
29
29
  line-height: 1.5;
30
- color: var(--color-text-primary);
31
- background-color: var(--bg-color-page);
30
+ color: var(--xto-color-text-primary, #1F2937);
31
+ background-color: var(--xto-bg-color-page, #F9FAFB);
32
32
  }
33
33
 
34
34
  #app {
@@ -37,13 +37,13 @@ body {
37
37
  }
38
38
 
39
39
  a {
40
- color: var(--color-primary);
40
+ color: var(--xto-color-primary, #4F46E5);
41
41
  text-decoration: none;
42
42
  cursor: pointer;
43
- transition: color var(--transition-duration-fast);
43
+ transition: color var(--xto-transition-duration-fast, 150ms);
44
44
 
45
45
  &:hover {
46
- color: var(--color-primary-light-3);
46
+ color: var(--xto-color-primary-light-3, #7578F3);
47
47
  }
48
48
  }
49
49
 
@@ -92,7 +92,7 @@ h5,
92
92
  h6 {
93
93
  margin: 0;
94
94
  font-weight: 500;
95
- color: var(--color-text-primary);
95
+ color: var(--xto-color-text-primary, #1F2937);
96
96
  }
97
97
 
98
98
  p {
@@ -106,21 +106,21 @@ p {
106
106
  }
107
107
 
108
108
  ::-webkit-scrollbar-track {
109
- background-color: var(--color-fill-light);
109
+ background-color: var(--xto-fill-color-light, #F9FAFB);
110
110
  border-radius: 3px;
111
111
  }
112
112
 
113
113
  ::-webkit-scrollbar-thumb {
114
- background-color: var(--color-border);
114
+ background-color: var(--xto-border-color, #D1D5DB);
115
115
  border-radius: 3px;
116
116
 
117
117
  &:hover {
118
- background-color: var(--color-text-secondary);
118
+ background-color: var(--xto-color-text-secondary, #6B7280);
119
119
  }
120
120
  }
121
121
 
122
122
  // 选中文本样式
123
123
  ::selection {
124
- background-color: var(--color-primary-light-8);
125
- color: var(--color-primary);
124
+ background-color: var(--xto-color-primary-light-8, #D4D7FE);
125
+ color: var(--xto-color-primary, #4F46E5);
126
126
  }
@@ -1,112 +1,115 @@
1
1
  // ==============================================
2
- // CSS Variables - 企业级配色方案
3
- // 参考:阿里 Ant Design Pro、腾讯云控制台
2
+ // CSS Variables - XTO UI Design Token System
3
+ // Indigo palette with --xto-* namespace
4
4
  // ==============================================
5
5
 
6
6
  :root {
7
- // 主色调 - 科技蓝系(深邃、专业)
8
- --color-primary: #1677ff;
9
- --color-primary-light-1: #4096ff;
10
- --color-primary-light-2: #69b1ff;
11
- --color-primary-light-3: #91caff;
12
- --color-primary-light-4: #bae0ff;
13
- --color-primary-light-5: #e6f4ff;
14
- --color-primary-light-6: #f0f8ff;
15
- --color-primary-dark-1: #0958d9;
16
- --color-primary-dark-2: #003eb3;
17
- --color-primary-dark-3: #002c8c;
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;
18
21
 
19
22
  // 功能色 - 精致调和
20
- --color-success: #52c41a;
21
- --color-success-light: #b7eb8f;
22
- --color-success-lighter: #f6ffed;
23
- --color-success-dark: #389e0d;
24
-
25
- --color-warning: #faad14;
26
- --color-warning-light: #ffe58f;
27
- --color-warning-lighter: #fffbe6;
28
- --color-warning-dark: #d48806;
29
-
30
- --color-danger: #ff4d4f;
31
- --color-danger-light: #ffa39e;
32
- --color-danger-lighter: #fff2f0;
33
- --color-danger-dark: #cf1322;
34
-
35
- --color-info: #1677ff;
36
- --color-info-light: #91caff;
37
- --color-info-lighter: #e6f4ff;
38
- --color-info-dark: #0958d9;
23
+ --xto-color-success: #10B981;
24
+ --xto-color-success-light: #6EE7B7;
25
+ --xto-color-success-lighter: #ECFDF5;
26
+ --xto-color-success-dark: #059669;
27
+
28
+ --xto-color-warning: #F59E0B;
29
+ --xto-color-warning-light: #FCD34D;
30
+ --xto-color-warning-lighter: #FFFBEB;
31
+ --xto-color-warning-dark: #D97706;
32
+
33
+ --xto-color-danger: #EF4444;
34
+ --xto-color-danger-light: #FCA5A5;
35
+ --xto-color-danger-lighter: #FEF2F2;
36
+ --xto-color-danger-dark: #DC2626;
37
+
38
+ --xto-color-info: #6B7280;
39
+ --xto-color-info-light: #9CA3AF;
40
+ --xto-color-info-lighter: #F3F4F6;
41
+ --xto-color-info-dark: #4B5563;
39
42
 
40
43
  // 文字颜色 - 层次分明
41
- --color-text-primary: #1f1f1f;
42
- --color-text-regular: #424242;
43
- --color-text-secondary: #757575;
44
- --color-text-placeholder: #9e9e9e;
45
- --color-text-disabled: #bdbdbd;
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;
46
49
 
47
50
  // 边框颜色 - 克制淡雅
48
- --color-border: #d9d9d9;
49
- --color-border-light: #e8e8e8;
50
- --color-border-lighter: #f0f0f0;
51
- --color-border-extra-light: #f5f5f5;
52
- --color-border-dark: #bfbfbf;
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;
53
56
 
54
57
  // 填充颜色 - 背景层次
55
- --color-fill: #f5f5f5;
56
- --color-fill-light: #fafafa;
57
- --color-fill-lighter: #ffffff;
58
- --color-fill-blank: #ffffff;
59
- --color-fill-dark: #e8e8e8;
58
+ --xto-fill-color: #F3F4F6;
59
+ --xto-fill-color-light: #F9FAFB;
60
+ --xto-fill-color-lighter: #FFFFFF;
61
+ --xto-fill-color-blank: #FFFFFF;
62
+ --xto-fill-color-dark: #E5E7EB;
60
63
 
61
64
  // 背景颜色 - 页面层级
62
- --bg-color: #ffffff;
63
- --bg-color-page: #f0f2f5;
64
- --bg-color-component: #ffffff;
65
- --bg-color-overlay: #ffffff;
66
- --bg-color-spotlight: #e6f4ff;
65
+ --xto-bg-color: #FFFFFF;
66
+ --xto-bg-color-page: #F9FAFB;
67
+ --xto-bg-color-component: #FFFFFF;
68
+ --xto-bg-color-overlay: #FFFFFF;
69
+ --xto-bg-color-spotlight: #EEF2FF;
67
70
 
68
71
  // 盒子阴影 - 精致层次
69
- --box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.08),
70
- 0 3px 6px -4px rgba(0, 0, 0, 0.12),
71
- 0 9px 28px 8px rgba(0, 0, 0, 0.05);
72
- --box-shadow-light: 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
- --box-shadow-lighter: 0 1px 4px rgba(0, 0, 0, 0.04);
76
- --box-shadow-dark: 0 6px 16px -8px rgba(0, 0, 0, 0.08),
77
- 0 9px 28px 8px rgba(0, 0, 0, 0.05),
78
- 0 12px 48px 16px rgba(0, 0, 0, 0.03);
79
- --box-shadow-card: 0 1px 10px -6px rgba(0, 0, 0, 0.1);
80
- --box-shadow-card-hover: 0 6px 16px -8px rgba(0, 0, 0, 0.12);
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);
81
84
 
82
85
  // 字体 - 企业级字体栈
83
- --font-family: 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
86
+ --xto-font-family: 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
84
87
  'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';
85
- --font-family-code: 'IBM Plex Mono', 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono',
88
+ --xto-font-family-code: 'IBM Plex Mono', 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono',
86
89
  Consolas, 'Courier New', monospace;
87
- --font-size-base: 14px;
88
- --font-size-small: 12px;
89
- --font-size-large: 16px;
90
- --font-size-extra-large: 20px;
91
- --font-size-title: 24px;
92
- --font-size-hero: 38px;
93
- --font-line-height: 1.5714285714285714;
90
+ --xto-font-size-base: 14px;
91
+ --xto-font-size-small: 12px;
92
+ --xto-font-size-large: 16px;
93
+ --xto-font-size-extra-large: 20px;
94
+ --xto-font-size-title: 24px;
95
+ --xto-font-size-hero: 38px;
96
+ --xto-font-line-height: 1.5714285714285714;
94
97
 
95
98
  // 圆角 - 精致圆润
96
- --border-radius-base: 6px;
97
- --border-radius-small: 4px;
98
- --border-radius-large: 8px;
99
- --border-radius-extra-large: 12px;
100
- --border-radius-round: 24px;
101
- --border-radius-circle: 50%;
99
+ --xto-border-radius-base: 6px;
100
+ --xto-border-radius-small: 4px;
101
+ --xto-border-radius-large: 8px;
102
+ --xto-border-radius-extra-large: 12px;
103
+ --xto-border-radius-round: 24px;
104
+ --xto-border-radius-circle: 50%;
102
105
 
103
106
  // 间距 - 8px 基础网格
104
- --spacing-xs: 4px;
105
- --spacing-sm: 8px;
106
- --spacing-md: 16px;
107
- --spacing-lg: 24px;
108
- --spacing-xl: 32px;
109
- --spacing-xxl: 48px;
107
+ --xto-spacing-xs: 4px;
108
+ --xto-spacing-sm: 8px;
109
+ --xto-spacing-md: 16px;
110
+ --xto-spacing-lg: 24px;
111
+ --xto-spacing-xl: 32px;
112
+ --xto-spacing-xxl: 48px;
110
113
 
111
114
  // 尺寸 - 组件规格
112
115
  --component-size-large: 40px;
@@ -114,11 +117,11 @@
114
117
  --component-size-small: 24px;
115
118
 
116
119
  // 过渡 - 流畅动效
117
- --transition-duration: 0.2s;
118
- --transition-duration-fast: 0.1s;
119
- --transition-duration-slow: 0.3s;
120
- --transition-easing: cubic-bezier(0.645, 0.045, 0.355, 1);
121
- --transition-easing-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
120
+ --xto-transition-duration: 0.2s;
121
+ --xto-transition-duration-fast: 0.1s;
122
+ --xto-transition-duration-slow: 0.3s;
123
+ --xto-transition-easing: cubic-bezier(0.645, 0.045, 0.355, 1);
124
+ --xto-transition-easing-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
122
125
 
123
126
  // z-index - 层级管理
124
127
  --z-index-dropdown: 1000;
@@ -137,48 +140,66 @@
137
140
  --footer-height: 32px;
138
141
 
139
142
  // 特殊效果
140
- --gradient-primary: linear-gradient(135deg, #1677ff 0%, #4096ff 100%);
141
- --gradient-hero: linear-gradient(135deg, #002c8c 0%, #1677ff 50%, #4096ff 100%);
142
- --gradient-card: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.8) 100%);
143
- --gradient-mask: linear-gradient(180deg, rgba(0, 44, 140, 0.03) 0%, rgba(0, 0, 0, 0) 100%);
143
+ --xto-gradient-primary: linear-gradient(135deg, #4F46E5 0%, #6366F1 100%);
144
+ --xto-gradient-hero: linear-gradient(135deg, #312E81 0%, #4F46E5 50%, #6366F1 100%);
145
+ --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%);
144
147
  }
145
148
 
146
149
  // 暗色主题 - 深邃科技感
147
- .dark {
148
- --color-text-primary: #ffffff;
149
- --color-text-regular: #e0e0e0;
150
- --color-text-secondary: #a6a6a6;
151
- --color-text-placeholder: #737373;
152
- --color-text-disabled: #5c5c5c;
153
-
154
- --color-border: #434343;
155
- --color-border-light: #363636;
156
- --color-border-lighter: #2a2a2a;
157
- --color-border-extra-light: #1f1f1f;
158
- --color-border-dark: #5c5c5c;
159
-
160
- --color-fill: #262626;
161
- --color-fill-light: #1f1f1f;
162
- --color-fill-lighter: #141414;
163
- --color-fill-blank: #141414;
164
- --color-fill-dark: #363636;
165
-
166
- --bg-color: #141414;
167
- --bg-color-page: #0a0a0a;
168
- --bg-color-component: #1f1f1f;
169
- --bg-color-overlay: #1f1f1f;
170
- --bg-color-spotlight: #111d2c;
171
-
172
- --box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.32),
173
- 0 3px 6px -4px rgba(0, 0, 0, 0.48),
174
- 0 9px 28px 8px rgba(0, 0, 0, 0.2);
175
- --box-shadow-light: 0 1px 2px 0 rgba(0, 0, 0, 0.16),
176
- 0 1px 6px -1px rgba(0, 0, 0, 0.12),
177
- 0 2px 4px 0 rgba(0, 0, 0, 0.08);
178
- --box-shadow-card: 0 1px 10px -6px rgba(0, 0, 0, 0.32);
179
- --box-shadow-card-hover: 0 6px 16px -8px rgba(0, 0, 0, 0.48);
180
-
181
- --gradient-primary: linear-gradient(135deg, #1677ff 0%, #4096ff 100%);
182
- --gradient-hero: linear-gradient(135deg, #002c8c 0%, #0958d9 50%, #1677ff 100%);
183
- --gradient-card: linear-gradient(180deg, rgba(20, 20, 20, 0) 0%, rgba(20, 20, 20, 0.8) 100%);
184
- }
150
+ 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%);
205
+ }
@@ -5,7 +5,7 @@
5
5
  // 淡入淡出
6
6
  .fade-enter-active,
7
7
  .fade-leave-active {
8
- transition: opacity var(--transition-duration);
8
+ transition: opacity var(--xto-transition-duration-fast, 150ms);
9
9
  }
10
10
 
11
11
  .fade-enter-from,
@@ -16,7 +16,7 @@
16
16
  // 淡入淡出 + 缩放
17
17
  .fade-scale-enter-active,
18
18
  .fade-scale-leave-active {
19
- transition: all var(--transition-duration);
19
+ transition: all var(--xto-transition-duration-fast, 150ms);
20
20
  }
21
21
 
22
22
  .fade-scale-enter-from,
@@ -28,7 +28,7 @@
28
28
  // 淡入淡出 + 滑动
29
29
  .fade-transform-enter-active,
30
30
  .fade-transform-leave-active {
31
- transition: all var(--transition-duration-fast);
31
+ transition: all var(--xto-transition-duration-fast, 150ms);
32
32
  }
33
33
 
34
34
  .fade-transform-enter-from {
@@ -44,7 +44,7 @@
44
44
  // 向下滑入
45
45
  .slide-down-enter-active,
46
46
  .slide-down-leave-active {
47
- transition: all var(--transition-duration);
47
+ transition: all var(--xto-transition-duration-fast, 150ms);
48
48
  }
49
49
 
50
50
  .slide-down-enter-from,
@@ -56,7 +56,7 @@
56
56
  // 向上滑入
57
57
  .slide-up-enter-active,
58
58
  .slide-up-leave-active {
59
- transition: all var(--transition-duration);
59
+ transition: all var(--xto-transition-duration-fast, 150ms);
60
60
  }
61
61
 
62
62
  .slide-up-enter-from,
@@ -68,7 +68,7 @@
68
68
  // 向左滑入
69
69
  .slide-left-enter-active,
70
70
  .slide-left-leave-active {
71
- transition: all var(--transition-duration);
71
+ transition: all var(--xto-transition-duration-fast, 150ms);
72
72
  }
73
73
 
74
74
  .slide-left-enter-from,
@@ -80,7 +80,7 @@
80
80
  // 向右滑入
81
81
  .slide-right-enter-active,
82
82
  .slide-right-leave-active {
83
- transition: all var(--transition-duration);
83
+ transition: all var(--xto-transition-duration-fast, 150ms);
84
84
  }
85
85
 
86
86
  .slide-right-enter-from,
@@ -92,7 +92,7 @@
92
92
  // 缩放
93
93
  .zoom-enter-active,
94
94
  .zoom-leave-active {
95
- transition: all var(--transition-duration);
95
+ transition: all var(--xto-transition-duration-fast, 150ms);
96
96
  }
97
97
 
98
98
  .zoom-enter-from,
@@ -104,7 +104,7 @@
104
104
  // 列表动画
105
105
  .list-enter-active,
106
106
  .list-leave-active {
107
- transition: all var(--transition-duration);
107
+ transition: all var(--xto-transition-duration-fast, 150ms);
108
108
  }
109
109
 
110
110
  .list-enter-from,
@@ -115,5 +115,5 @@
115
115
 
116
116
  // 侧边栏折叠动画
117
117
  .collapse-transition {
118
- transition: width var(--transition-duration), padding var(--transition-duration);
118
+ transition: width var(--xto-transition-duration-fast, 150ms), padding var(--xto-transition-duration-fast, 150ms);
119
119
  }
@@ -1,39 +1,40 @@
1
+ // Design tokens aligned with @xto/core theme system
1
2
  // ==============================================
2
3
  // SCSS Variables - 用于样式计算
3
4
  // ==============================================
4
5
 
5
- // 主题色 - 科技蓝
6
- $color-primary: #1677ff;
7
- $color-primary-light: #4096ff;
8
- $color-primary-lighter: #91caff;
9
- $color-primary-dark: #0958d9;
10
- $color-primary-darker: #003eb3;
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;
11
12
 
12
13
  // 功能色
13
- $color-success: #52c41a;
14
- $color-warning: #faad14;
15
- $color-danger: #ff4d4f;
16
- $color-info: #1677ff;
14
+ $color-success: #10B981;
15
+ $color-warning: #F59E0B;
16
+ $color-danger: #EF4444;
17
+ $color-info: #6B7280;
17
18
 
18
19
  // 文字颜色
19
- $color-text-primary: #1f1f1f;
20
- $color-text-regular: #424242;
21
- $color-text-secondary: #757575;
22
- $color-text-placeholder: #9e9e9e;
20
+ $color-text-primary: #1F2937;
21
+ $color-text-regular: #4B5563;
22
+ $color-text-secondary: #6B7280;
23
+ $color-text-placeholder: #9CA3AF;
23
24
 
24
25
  // 边框颜色
25
- $color-border: #d9d9d9;
26
- $color-border-light: #e8e8e8;
27
- $color-border-lighter: #f0f0f0;
26
+ $color-border: #D1D5DB;
27
+ $color-border-light: #E5E7EB;
28
+ $color-border-lighter: #F3F4F6;
28
29
 
29
30
  // 背景颜色
30
- $bg-color: #ffffff;
31
- $bg-color-page: #f0f2f5;
32
- $bg-color-component: #ffffff;
31
+ $bg-color: #FFFFFF;
32
+ $bg-color-page: #F9FAFB;
33
+ $bg-color-component: #FFFFFF;
33
34
 
34
35
  // 字体
35
- $font-family: 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
36
- $font-family-code: 'IBM Plex Mono', 'SF Mono', Monaco, Consolas, monospace;
36
+ $font-family: 'Inter', 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif;
37
+ $font-family-code: 'JetBrains Mono', 'SF Mono', Monaco, Consolas, monospace;
37
38
  $font-size-base: 14px;
38
39
  $font-size-small: 12px;
39
40
  $font-size-large: 16px;
@@ -63,8 +64,8 @@ $footer-height: 32px;
63
64
 
64
65
  // 过渡
65
66
  $transition-duration: 0.2s;
66
- $transition-easing: cubic-bezier(0.645, 0.045, 0.355, 1);
67
+ $transition-easing: cubic-bezier(0.4, 0, 0.2, 1);
67
68
 
68
69
  // 阴影
69
- $box-shadow-card: 0 1px 10px -6px rgba(0, 0, 0, 0.1);
70
- $box-shadow-card-hover: 0 6px 16px -8px rgba(0, 0, 0, 0.12);
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);