xto-fronted 0.4.71 → 0.4.73

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 (97) hide show
  1. package/dist/assets/404-CrBiLyvr.js +1 -0
  2. package/dist/assets/404-Cw_4ZCL6.css +1 -0
  3. package/dist/assets/_plugin-vue_export-helper-DlAUqK2U.js +1 -0
  4. package/dist/assets/index-9XqWtCGs.js +1 -0
  5. package/dist/assets/index-BBGKF0l-.js +1 -0
  6. package/dist/assets/index-BRR97dc6.js +1 -0
  7. package/dist/assets/index-BlRslYYI.css +1 -0
  8. package/dist/assets/index-BudArKxR.css +1 -0
  9. package/dist/assets/index-CFhWBbxk.css +1 -0
  10. package/dist/assets/index-CRJFI4iz.js +2 -0
  11. package/dist/assets/index-CmknWHK0.js +1 -0
  12. package/dist/assets/index-D7epoF1g.js +1 -0
  13. package/dist/assets/index-D9XBi20Y.css +1 -0
  14. package/dist/assets/index-DkkuYBgT.css +1 -0
  15. package/dist/assets/index-O9wpAB3Q.js +1 -0
  16. package/dist/assets/index-_aYxnqzF.css +1 -0
  17. package/dist/assets/index-rfC7s9zA.js +1 -0
  18. package/dist/assets/index-vfvEFrCH.css +1 -0
  19. package/dist/assets/vendor-42ANG6Sg.js +6 -0
  20. package/dist/assets/vue-vendor-D8SAgT8u.js +29 -0
  21. package/dist/assets/xto-base-BD3OH0V6.js +1 -0
  22. package/dist/assets/xto-base-CojW9IFO.css +1 -0
  23. package/dist/assets/xto-business--V1F5Gwb.css +1 -0
  24. package/dist/assets/xto-core-Boim7B0B.js +1 -0
  25. package/dist/assets/xto-data-CnAQAQH2.css +1 -0
  26. package/dist/assets/xto-data-DuG2QJrr.js +1 -0
  27. package/dist/assets/xto-feedback-C-ESp-Y1.css +1 -0
  28. package/dist/assets/xto-feedback-XZPSQcJN.js +1 -0
  29. package/dist/assets/xto-form-BmTGLIm_.js +1 -0
  30. package/dist/assets/xto-form-CrsyAjyr.css +1 -0
  31. package/dist/assets/xto-layout-D1stVnJI.css +1 -0
  32. package/dist/assets/xto-navigation-BRzSCpAw.css +1 -0
  33. package/dist/assets/xto-navigation-nPmjRi-J.js +1 -0
  34. package/dist/index.html +28 -0
  35. package/package.json +90 -87
  36. package/src/App.vue +30 -1
  37. package/src/assets/styles/_root.scss +141 -97
  38. package/src/assets/styles/_variables.scss +44 -19
  39. package/src/assets/styles/index.scss +267 -42
  40. package/src/components/Layout/Sidebar.vue +29 -10
  41. package/src/views/dashboard/index.vue +417 -155
  42. package/src/views/error/403.vue +251 -56
  43. package/src/views/error/404.vue +253 -56
  44. package/src/views/login/index.vue +586 -194
  45. package/src/views/system/menu/index.vue +403 -94
  46. package/src/views/system/role/index.vue +348 -69
  47. package/src/views/system/user/index.vue +402 -73
  48. package/dist/App.vue.d.ts +0 -2
  49. package/dist/api/auth.d.ts +0 -8
  50. package/dist/api/system.d.ts +0 -16
  51. package/dist/api/user.d.ts +0 -13
  52. package/dist/components/Layout/Footer.vue.d.ts +0 -2
  53. package/dist/components/Layout/Header.vue.d.ts +0 -5
  54. package/dist/components/Layout/MixTopMenu.vue.d.ts +0 -5
  55. package/dist/components/Layout/Sidebar.vue.d.ts +0 -11
  56. package/dist/components/Layout/SidebarMenuItem.vue.d.ts +0 -5
  57. package/dist/components/Layout/Tabs.vue.d.ts +0 -2
  58. package/dist/components/Layout/TopMenu.vue.d.ts +0 -5
  59. package/dist/components/Layout/index.vue.d.ts +0 -2
  60. package/dist/composables/useApp.d.ts +0 -29
  61. package/dist/composables/useAuth.d.ts +0 -6
  62. package/dist/composables/useForm.d.ts +0 -20
  63. package/dist/composables/useTable.d.ts +0 -29
  64. package/dist/directives/permission.d.ts +0 -4
  65. package/dist/enums/index.d.ts +0 -32
  66. package/dist/index-BgbSp2mz.js +0 -372
  67. package/dist/index-By874kXD.js +0 -142
  68. package/dist/index-COz0Cbj7.js +0 -345
  69. package/dist/index-CgbSCzIp.js +0 -3159
  70. package/dist/index-CzOd0mGb.js +0 -475
  71. package/dist/index.d.ts +0 -54
  72. package/dist/index.es.js +0 -91
  73. package/dist/index.umd.js +0 -1
  74. package/dist/main.d.ts +0 -0
  75. package/dist/router/dynamicRoutes.d.ts +0 -30
  76. package/dist/router/guards.d.ts +0 -17
  77. package/dist/router/index.d.ts +0 -6
  78. package/dist/router/layoutRoute.d.ts +0 -18
  79. package/dist/router/staticRoutes.d.ts +0 -2
  80. package/dist/stores/app.d.ts +0 -93
  81. package/dist/stores/auth.d.ts +0 -41
  82. package/dist/stores/index.d.ts +0 -9
  83. package/dist/stores/menu.d.ts +0 -77
  84. package/dist/stores/user.d.ts +0 -92
  85. package/dist/style.css +0 -1
  86. package/dist/utils/auth.d.ts +0 -27
  87. package/dist/utils/config.d.ts +0 -30
  88. package/dist/utils/permission.d.ts +0 -18
  89. package/dist/utils/request.d.ts +0 -24
  90. package/dist/utils/storage.d.ts +0 -24
  91. package/dist/views/dashboard/index.vue.d.ts +0 -2
  92. package/dist/views/error/403.vue.d.ts +0 -2
  93. package/dist/views/error/404.vue.d.ts +0 -2
  94. package/dist/views/login/index.vue.d.ts +0 -4
  95. package/dist/views/system/menu/index.vue.d.ts +0 -4
  96. package/dist/views/system/role/index.vue.d.ts +0 -4
  97. package/dist/views/system/user/index.vue.d.ts +0 -4
package/package.json CHANGED
@@ -1,87 +1,90 @@
1
- {
2
- "name": "xto-fronted",
3
- "version": "0.4.71",
4
- "private": false,
5
- "type": "module",
6
- "description": "XTO 前端应用框架",
7
- "main": "dist/index.umd.js",
8
- "module": "dist/index.es.js",
9
- "types": "dist/index.d.ts",
10
- "exports": {
11
- ".": {
12
- "import": "./dist/index.es.js",
13
- "require": "./dist/index.umd.js",
14
- "types": "./dist/index.d.ts"
15
- },
16
- "./style.css": "./dist/style.css",
17
- "./style.scss": "./src/style.scss"
18
- },
19
- "files": [
20
- "dist",
21
- "src",
22
- "public",
23
- "index.html",
24
- "vite.config.ts",
25
- "tsconfig.json",
26
- "tsconfig.node.json",
27
- ".env.development",
28
- ".env.production"
29
- ],
30
- "scripts": {
31
- "dev": "vite",
32
- "build": "vue-tsc && vite build",
33
- "build:lib": "vue-tsc && vite build --mode lib",
34
- "preview": "vite preview",
35
- "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix"
36
- },
37
- "peerDependencies": {
38
- "@xto/base": "^1.3.6",
39
- "@xto/business": "^1.1.1",
40
- "@xto/core": "^1.0.3",
41
- "@xto/data": "^1.1.3",
42
- "@xto/feedback": "^1.1.8",
43
- "@xto/form": "^1.1.3",
44
- "@xto/layout": "^1.0.7",
45
- "@xto/navigation": "^1.2.6",
46
- "axios": "^1.6.0",
47
- "pinia": "^2.1.0",
48
- "vue": "^3.4.0",
49
- "vue-router": "^4.3.0"
50
- },
51
- "devDependencies": {
52
- "@types/node": "^20.11.30",
53
- "@vitejs/plugin-vue": "^5.0.4",
54
- "@xto/base": "^1.3.6",
55
- "@xto/business": "^1.1.1",
56
- "@xto/core": "^1.0.3",
57
- "@xto/data": "^1.1.3",
58
- "@xto/feedback": "^1.1.8",
59
- "@xto/form": "^1.1.3",
60
- "@xto/layout": "^1.0.7",
61
- "@xto/navigation": "^1.2.6",
62
- "axios": "^1.6.8",
63
- "pinia": "^2.1.7",
64
- "sass": "^1.72.0",
65
- "sass-embedded": "^1.72.0",
66
- "typescript": "^5.4.2",
67
- "vite": "^5.2.0",
68
- "vite-plugin-dts": "^4.5.4",
69
- "vue": "^3.4.21",
70
- "vue-router": "^4.3.0",
71
- "vue-tsc": "^2.0.6"
72
- },
73
- "keywords": [
74
- "vue",
75
- "vue3",
76
- "admin",
77
- "template",
78
- "xto"
79
- ],
80
- "author": "",
81
- "license": "MIT",
82
- "homepage": "https://jinguchu.github.io/xto-ui/",
83
- "repository": {
84
- "type": "git",
85
- "url": "git+https://github.com/jinguchu/xto-ui.git"
86
- }
87
- }
1
+ {
2
+ "name": "xto-fronted",
3
+ "version": "0.4.73",
4
+ "private": false,
5
+ "type": "module",
6
+ "description": "XTO 前端应用框架",
7
+ "main": "dist/index.umd.js",
8
+ "module": "dist/index.es.js",
9
+ "types": "dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "import": "./dist/index.es.js",
13
+ "require": "./dist/index.umd.js",
14
+ "types": "./dist/index.d.ts"
15
+ },
16
+ "./style.css": "./dist/style.css",
17
+ "./style.scss": "./src/style.scss"
18
+ },
19
+ "files": [
20
+ "dist",
21
+ "src",
22
+ "public",
23
+ "index.html",
24
+ "vite.config.ts",
25
+ "tsconfig.json",
26
+ "tsconfig.node.json",
27
+ ".env.development",
28
+ ".env.production"
29
+ ],
30
+ "scripts": {
31
+ "dev": "vite",
32
+ "build": "vue-tsc && vite build",
33
+ "build:lib": "vue-tsc && vite build --mode lib",
34
+ "preview": "vite preview",
35
+ "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix"
36
+ },
37
+ "peerDependencies": {
38
+ "@xto/base": "^1.3.6",
39
+ "@xto/business": "^1.1.1",
40
+ "@xto/core": "^1.0.3",
41
+ "@xto/data": "^1.1.3",
42
+ "@xto/feedback": "^1.1.8",
43
+ "@xto/form": "^1.1.3",
44
+ "@xto/layout": "^1.0.7",
45
+ "@xto/navigation": "^1.2.6",
46
+ "axios": "^1.6.0",
47
+ "pinia": "^2.1.0",
48
+ "vue": "^3.4.0",
49
+ "vue-router": "^4.3.0"
50
+ },
51
+ "devDependencies": {
52
+ "@types/node": "^20.11.30",
53
+ "@vitejs/plugin-vue": "^5.0.4",
54
+ "@xto/base": "^1.3.6",
55
+ "@xto/business": "^1.1.1",
56
+ "@xto/core": "^1.0.3",
57
+ "@xto/data": "^1.1.3",
58
+ "@xto/feedback": "^1.1.8",
59
+ "@xto/form": "^1.1.3",
60
+ "@xto/layout": "^1.0.7",
61
+ "@xto/navigation": "^1.2.8",
62
+ "axios": "^1.6.8",
63
+ "pinia": "^2.1.7",
64
+ "sass": "^1.72.0",
65
+ "sass-embedded": "^1.72.0",
66
+ "typescript": "^5.4.2",
67
+ "vite": "^5.2.0",
68
+ "vite-plugin-dts": "^4.5.4",
69
+ "vue": "^3.4.21",
70
+ "vue-router": "^4.3.0",
71
+ "vue-tsc": "^2.0.6"
72
+ },
73
+ "keywords": [
74
+ "vue",
75
+ "vue3",
76
+ "admin",
77
+ "template",
78
+ "xto"
79
+ ],
80
+ "author": "",
81
+ "license": "MIT",
82
+ "homepage": "https://jinguchu.github.io/xto-ui/",
83
+ "repository": {
84
+ "type": "git",
85
+ "url": "git+https://github.com/jinguchu/xto-ui.git"
86
+ },
87
+ "dependencies": {
88
+ "xto-fronted": "0.4.71"
89
+ }
90
+ }
package/src/App.vue CHANGED
@@ -15,6 +15,35 @@ const appStore = useAppStore()
15
15
  width: 100%;
16
16
  height: 100%;
17
17
  background-color: var(--bg-color-page);
18
- transition: background-color 0.3s;
18
+ transition: background-color 0.3s var(--transition-easing);
19
+ font-family: var(--font-family);
20
+ -webkit-font-smoothing: antialiased;
21
+ -moz-osx-font-smoothing: grayscale;
22
+ }
23
+
24
+ // 全局滚动条样式 - 企业级精致感
25
+ ::-webkit-scrollbar {
26
+ width: 8px;
27
+ height: 8px;
28
+ }
29
+
30
+ ::-webkit-scrollbar-track {
31
+ background: transparent;
32
+ }
33
+
34
+ ::-webkit-scrollbar-thumb {
35
+ background: var(--color-border-light);
36
+ border-radius: 4px;
37
+ transition: background 0.2s;
38
+ }
39
+
40
+ ::-webkit-scrollbar-thumb:hover {
41
+ background: var(--color-border);
42
+ }
43
+
44
+ // 选中文本样式
45
+ ::selection {
46
+ background: var(--color-primary-light-5);
47
+ color: var(--color-primary-dark-2);
19
48
  }
20
49
  </style>
@@ -1,99 +1,126 @@
1
1
  // ==============================================
2
- // CSS Variables - 主题变量
2
+ // CSS Variables - 企业级配色方案
3
+ // 参考:阿里 Ant Design Pro、腾讯云控制台
3
4
  // ==============================================
4
5
 
5
6
  :root {
6
- // 主题色
7
- --color-primary: #409eff;
8
- --color-primary-light-3: #79bbff;
9
- --color-primary-light-5: #a0cfff;
10
- --color-primary-light-7: #c6e2ff;
11
- --color-primary-light-8: #d9ecff;
12
- --color-primary-light-9: #ecf5ff;
13
- --color-primary-dark-2: #337ecc;
14
-
15
- // 功能色
16
- --color-success: #67c23a;
17
- --color-success-light: #e1f3d8;
18
- --color-success-dark: #529b2e;
19
-
20
- --color-warning: #e6a23c;
21
- --color-warning-light: #fdf6ec;
22
- --color-warning-dark: #b88230;
23
-
24
- --color-danger: #f56c6c;
25
- --color-danger-light: #fde2e2;
26
- --color-danger-dark: #c45656;
27
-
28
- --color-info: #909399;
29
- --color-info-light: #f4f4f5;
30
- --color-info-dark: #73767a;
31
-
32
- // 文字颜色
33
- --color-text-primary: #303133;
34
- --color-text-regular: #606266;
35
- --color-text-secondary: #909399;
36
- --color-text-placeholder: #a8abb2;
37
- --color-text-disabled: #c0c4cc;
38
-
39
- // 边框颜色
40
- --color-border: #dcdfe6;
41
- --color-border-light: #e4e7ed;
42
- --color-border-lighter: #ebeef5;
43
- --color-border-extra-light: #f2f6fc;
44
- --color-border-dark: #d4d7de;
45
-
46
- // 填充颜色
47
- --color-fill: #f5f7fa;
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;
18
+
19
+ // 功能色 - 精致调和
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;
39
+
40
+ // 文字颜色 - 层次分明
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;
46
+
47
+ // 边框颜色 - 克制淡雅
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;
53
+
54
+ // 填充颜色 - 背景层次
55
+ --color-fill: #f5f5f5;
48
56
  --color-fill-light: #fafafa;
49
- --color-fill-lighter: #fafcff;
57
+ --color-fill-lighter: #ffffff;
50
58
  --color-fill-blank: #ffffff;
59
+ --color-fill-dark: #e8e8e8;
51
60
 
52
- // 背景颜色
61
+ // 背景颜色 - 页面层级
53
62
  --bg-color: #ffffff;
54
- --bg-color-page: #f2f3f5;
63
+ --bg-color-page: #f0f2f5;
64
+ --bg-color-component: #ffffff;
55
65
  --bg-color-overlay: #ffffff;
56
-
57
- // 盒子阴影
58
- --box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
59
- --box-shadow-light: 0 2px 8px 0 rgba(0, 0, 0, 0.06);
60
- --box-shadow-lighter: 0 1px 4px 0 rgba(0, 0, 0, 0.04);
61
- --box-shadow-dark: 0 4px 16px 0 rgba(0, 0, 0, 0.12);
62
-
63
- // 字体
64
- --font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,
65
- 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',
66
- 'Noto Color Emoji';
66
+ --bg-color-spotlight: #e6f4ff;
67
+
68
+ // 盒子阴影 - 精致层次
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);
81
+
82
+ // 字体 - 企业级字体栈
83
+ --font-family: 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
84
+ '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',
86
+ Consolas, 'Courier New', monospace;
67
87
  --font-size-base: 14px;
68
88
  --font-size-small: 12px;
69
89
  --font-size-large: 16px;
70
- --font-size-extra-large: 18px;
71
-
72
- // 圆角
73
- --border-radius-base: 4px;
74
- --border-radius-small: 2px;
90
+ --font-size-extra-large: 20px;
91
+ --font-size-title: 24px;
92
+ --font-size-hero: 38px;
93
+ --font-line-height: 1.5714285714285714;
94
+
95
+ // 圆角 - 精致圆润
96
+ --border-radius-base: 6px;
97
+ --border-radius-small: 4px;
75
98
  --border-radius-large: 8px;
76
- --border-radius-round: 20px;
99
+ --border-radius-extra-large: 12px;
100
+ --border-radius-round: 24px;
77
101
  --border-radius-circle: 50%;
78
102
 
79
- // 间距
103
+ // 间距 - 8px 基础网格
80
104
  --spacing-xs: 4px;
81
105
  --spacing-sm: 8px;
82
106
  --spacing-md: 16px;
83
107
  --spacing-lg: 24px;
84
108
  --spacing-xl: 32px;
109
+ --spacing-xxl: 48px;
85
110
 
86
- // 尺寸
111
+ // 尺寸 - 组件规格
87
112
  --component-size-large: 40px;
88
113
  --component-size-default: 32px;
89
114
  --component-size-small: 24px;
90
115
 
91
- // 过渡时间
92
- --transition-duration: 0.3s;
93
- --transition-duration-fast: 0.2s;
94
- --transition-duration-slow: 0.5s;
116
+ // 过渡 - 流畅动效
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);
95
122
 
96
- // z-index
123
+ // z-index - 层级管理
97
124
  --z-index-dropdown: 1000;
98
125
  --z-index-sticky: 1020;
99
126
  --z-index-fixed: 1030;
@@ -102,39 +129,56 @@
102
129
  --z-index-popover: 1060;
103
130
  --z-index-tooltip: 1070;
104
131
 
105
- // 布局
106
- --sidebar-width: 210px;
132
+ // 布局 - 精确尺寸
133
+ --sidebar-width: 220px;
107
134
  --sidebar-collapsed-width: 64px;
108
- --header-height: 50px;
135
+ --header-height: 56px;
109
136
  --tabs-height: 40px;
110
- --footer-height: 30px;
137
+ --footer-height: 32px;
138
+
139
+ // 特殊效果
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%);
111
144
  }
112
145
 
113
- // 暗色主题
146
+ // 暗色主题 - 深邃科技感
114
147
  .dark {
115
- --color-text-primary: #e5eaf3;
116
- --color-text-regular: #cfd3dc;
117
- --color-text-secondary: #a3a6ad;
118
- --color-text-placeholder: #8d9095;
119
- --color-text-disabled: #6c6e72;
120
-
121
- --color-border: #4c4d4f;
122
- --color-border-light: #414243;
123
- --color-border-lighter: #363637;
124
- --color-border-extra-light: #2b2b2c;
125
- --color-border-dark: #58585b;
126
-
127
- --color-fill: #303030;
128
- --color-fill-light: #262727;
129
- --color-fill-lighter: #1d1d1d;
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;
130
163
  --color-fill-blank: #141414;
164
+ --color-fill-dark: #363636;
131
165
 
132
- --bg-color: #1d1e1f;
166
+ --bg-color: #141414;
133
167
  --bg-color-page: #0a0a0a;
134
- --bg-color-overlay: #1d1e1f;
135
-
136
- --box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.3);
137
- --box-shadow-light: 0 2px 8px 0 rgba(0, 0, 0, 0.24);
138
- --box-shadow-lighter: 0 1px 4px 0 rgba(0, 0, 0, 0.2);
139
- --box-shadow-dark: 0 4px 16px 0 rgba(0, 0, 0, 0.36);
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%);
140
184
  }
@@ -2,44 +2,69 @@
2
2
  // SCSS Variables - 用于样式计算
3
3
  // ==============================================
4
4
 
5
- // 主题色
6
- $color-primary: #409eff;
7
- $color-success: #67c23a;
8
- $color-warning: #e6a23c;
9
- $color-danger: #f56c6c;
10
- $color-info: #909399;
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;
11
+
12
+ // 功能色
13
+ $color-success: #52c41a;
14
+ $color-warning: #faad14;
15
+ $color-danger: #ff4d4f;
16
+ $color-info: #1677ff;
11
17
 
12
18
  // 文字颜色
13
- $color-text-primary: #303133;
14
- $color-text-regular: #606266;
15
- $color-text-secondary: #909399;
19
+ $color-text-primary: #1f1f1f;
20
+ $color-text-regular: #424242;
21
+ $color-text-secondary: #757575;
22
+ $color-text-placeholder: #9e9e9e;
16
23
 
17
24
  // 边框颜色
18
- $color-border: #dcdfe6;
19
- $color-border-light: #e4e7ed;
20
- $color-border-lighter: #ebeef5;
25
+ $color-border: #d9d9d9;
26
+ $color-border-light: #e8e8e8;
27
+ $color-border-lighter: #f0f0f0;
21
28
 
22
29
  // 背景颜色
23
30
  $bg-color: #ffffff;
24
- $bg-color-page: #f2f3f5;
31
+ $bg-color-page: #f0f2f5;
32
+ $bg-color-component: #ffffff;
25
33
 
26
34
  // 字体
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;
27
37
  $font-size-base: 14px;
28
38
  $font-size-small: 12px;
39
+ $font-size-large: 16px;
40
+ $font-size-extra-large: 20px;
29
41
 
30
42
  // 圆角
31
- $border-radius-base: 4px;
43
+ $border-radius-base: 6px;
44
+ $border-radius-small: 4px;
32
45
  $border-radius-large: 8px;
46
+ $border-radius-extra-large: 12px;
47
+ $border-radius-round: 24px;
33
48
 
34
- // 间距
49
+ // 间距 - 8px 网格系统
35
50
  $spacing-xs: 4px;
36
51
  $spacing-sm: 8px;
37
52
  $spacing-md: 16px;
38
53
  $spacing-lg: 24px;
54
+ $spacing-xl: 32px;
55
+ $spacing-xxl: 48px;
39
56
 
40
- // 布局
41
- $sidebar-width: 210px;
57
+ // 布局尺寸
58
+ $sidebar-width: 220px;
42
59
  $sidebar-collapsed-width: 64px;
43
- $header-height: 50px;
60
+ $header-height: 56px;
44
61
  $tabs-height: 40px;
45
- $footer-height: 30px;
62
+ $footer-height: 32px;
63
+
64
+ // 过渡
65
+ $transition-duration: 0.2s;
66
+ $transition-easing: cubic-bezier(0.645, 0.045, 0.355, 1);
67
+
68
+ // 阴影
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);