advance-semi-theme 1.0.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 (169) hide show
  1. package/README.md +214 -0
  2. package/dist/antd/index.d.ts +159 -0
  3. package/dist/antd/index.js +1378 -0
  4. package/dist/antd/plugin.d.ts +34 -0
  5. package/dist/antd/plugin.js +12 -0
  6. package/dist/antd/styles/all.css +83 -0
  7. package/dist/antd/styles/base.css +202 -0
  8. package/dist/antd/styles/components/affix.css +7 -0
  9. package/dist/antd/styles/components/ai.css +242 -0
  10. package/dist/antd/styles/components/alert.css +149 -0
  11. package/dist/antd/styles/components/anchor.css +40 -0
  12. package/dist/antd/styles/components/app.css +9 -0
  13. package/dist/antd/styles/components/autocomplete.css +56 -0
  14. package/dist/antd/styles/components/avatar.css +37 -0
  15. package/dist/antd/styles/components/backtop.css +106 -0
  16. package/dist/antd/styles/components/badge.css +76 -0
  17. package/dist/antd/styles/components/breadcrumb.css +37 -0
  18. package/dist/antd/styles/components/button.css +528 -0
  19. package/dist/antd/styles/components/calendar.css +55 -0
  20. package/dist/antd/styles/components/card.css +113 -0
  21. package/dist/antd/styles/components/carousel.css +57 -0
  22. package/dist/antd/styles/components/cascader.css +99 -0
  23. package/dist/antd/styles/components/checkableTag.css +26 -0
  24. package/dist/antd/styles/components/checkbox.css +119 -0
  25. package/dist/antd/styles/components/collapse.css +74 -0
  26. package/dist/antd/styles/components/colorpicker.css +94 -0
  27. package/dist/antd/styles/components/configprovider.css +6 -0
  28. package/dist/antd/styles/components/datepicker.css +346 -0
  29. package/dist/antd/styles/components/descriptions.css +63 -0
  30. package/dist/antd/styles/components/divider.css +34 -0
  31. package/dist/antd/styles/components/drawer.css +71 -0
  32. package/dist/antd/styles/components/dropdown.css +94 -0
  33. package/dist/antd/styles/components/empty.css +40 -0
  34. package/dist/antd/styles/components/flex.css +19 -0
  35. package/dist/antd/styles/components/floatbutton.css +65 -0
  36. package/dist/antd/styles/components/form.css +90 -0
  37. package/dist/antd/styles/components/grid.css +11 -0
  38. package/dist/antd/styles/components/icon.css +18 -0
  39. package/dist/antd/styles/components/image.css +125 -0
  40. package/dist/antd/styles/components/input.css +459 -0
  41. package/dist/antd/styles/components/inputnumber.css +102 -0
  42. package/dist/antd/styles/components/layout.css +63 -0
  43. package/dist/antd/styles/components/list.css +109 -0
  44. package/dist/antd/styles/components/mentions.css +84 -0
  45. package/dist/antd/styles/components/menu.css +190 -0
  46. package/dist/antd/styles/components/message.css +68 -0
  47. package/dist/antd/styles/components/modal.css +124 -0
  48. package/dist/antd/styles/components/notification.css +89 -0
  49. package/dist/antd/styles/components/pageheader.css +62 -0
  50. package/dist/antd/styles/components/pagination.css +139 -0
  51. package/dist/antd/styles/components/popconfirm.css +64 -0
  52. package/dist/antd/styles/components/popover.css +40 -0
  53. package/dist/antd/styles/components/progress.css +105 -0
  54. package/dist/antd/styles/components/qrcode.css +43 -0
  55. package/dist/antd/styles/components/radio.css +166 -0
  56. package/dist/antd/styles/components/rate.css +47 -0
  57. package/dist/antd/styles/components/result.css +63 -0
  58. package/dist/antd/styles/components/scrollbar.css +22 -0
  59. package/dist/antd/styles/components/segmented.css +75 -0
  60. package/dist/antd/styles/components/select.css +282 -0
  61. package/dist/antd/styles/components/skeleton.css +96 -0
  62. package/dist/antd/styles/components/slider.css +119 -0
  63. package/dist/antd/styles/components/space.css +59 -0
  64. package/dist/antd/styles/components/spin.css +91 -0
  65. package/dist/antd/styles/components/statistic.css +48 -0
  66. package/dist/antd/styles/components/steps.css +176 -0
  67. package/dist/antd/styles/components/switch.css +128 -0
  68. package/dist/antd/styles/components/table.css +197 -0
  69. package/dist/antd/styles/components/tabs.css +212 -0
  70. package/dist/antd/styles/components/tag.css +286 -0
  71. package/dist/antd/styles/components/textArea.css +40 -0
  72. package/dist/antd/styles/components/timeline.css +106 -0
  73. package/dist/antd/styles/components/timepicker.css +105 -0
  74. package/dist/antd/styles/components/tooltip.css +37 -0
  75. package/dist/antd/styles/components/tour.css +114 -0
  76. package/dist/antd/styles/components/transfer.css +232 -0
  77. package/dist/antd/styles/components/tree.css +143 -0
  78. package/dist/antd/styles/components/treeselect.css +46 -0
  79. package/dist/antd/styles/components/typography.css +184 -0
  80. package/dist/antd/styles/components/upload.css +181 -0
  81. package/dist/antd/styles/components/watermark.css +16 -0
  82. package/dist/antd/styles/dark.css +533 -0
  83. package/dist/antd/styles/index.css +115 -0
  84. package/dist/antd/styles/overrides.css +147 -0
  85. package/dist/antd/styles/variables.css +259 -0
  86. package/dist/chunk-FMQWBDDZ.js +207 -0
  87. package/dist/chunk-NGAVTDQ2.js +200 -0
  88. package/dist/chunk-QQOB6AOA.js +213 -0
  89. package/dist/core/index.d.ts +179 -0
  90. package/dist/core/index.js +10 -0
  91. package/dist/core/variables.css +258 -0
  92. package/dist/element/index.d.ts +3 -0
  93. package/dist/element/index.js +17 -0
  94. package/dist/element/plugin.d.ts +34 -0
  95. package/dist/element/plugin.js +12 -0
  96. package/dist/element/styles/base.css +277 -0
  97. package/dist/element/styles/components/affix.css +7 -0
  98. package/dist/element/styles/components/alert.css +44 -0
  99. package/dist/element/styles/components/anchor.css +34 -0
  100. package/dist/element/styles/components/autocomplete.css +61 -0
  101. package/dist/element/styles/components/avatar.css +31 -0
  102. package/dist/element/styles/components/backtop.css +22 -0
  103. package/dist/element/styles/components/badge.css +48 -0
  104. package/dist/element/styles/components/breadcrumb.css +38 -0
  105. package/dist/element/styles/components/button.css +193 -0
  106. package/dist/element/styles/components/calendar.css +58 -0
  107. package/dist/element/styles/components/card.css +29 -0
  108. package/dist/element/styles/components/carousel.css +78 -0
  109. package/dist/element/styles/components/cascader.css +120 -0
  110. package/dist/element/styles/components/check-tag.css +35 -0
  111. package/dist/element/styles/components/checkbox.css +39 -0
  112. package/dist/element/styles/components/collapse.css +58 -0
  113. package/dist/element/styles/components/color-picker.css +82 -0
  114. package/dist/element/styles/components/config-provider.css +6 -0
  115. package/dist/element/styles/components/container.css +26 -0
  116. package/dist/element/styles/components/datepicker.css +165 -0
  117. package/dist/element/styles/components/descriptions-item.css +6 -0
  118. package/dist/element/styles/components/descriptions.css +51 -0
  119. package/dist/element/styles/components/dialog.css +91 -0
  120. package/dist/element/styles/components/divider.css +37 -0
  121. package/dist/element/styles/components/drawer.css +33 -0
  122. package/dist/element/styles/components/dropdown.css +30 -0
  123. package/dist/element/styles/components/empty.css +28 -0
  124. package/dist/element/styles/components/form.css +106 -0
  125. package/dist/element/styles/components/image.css +59 -0
  126. package/dist/element/styles/components/infinite-scroll.css +24 -0
  127. package/dist/element/styles/components/input-number.css +95 -0
  128. package/dist/element/styles/components/input.css +170 -0
  129. package/dist/element/styles/components/link.css +73 -0
  130. package/dist/element/styles/components/loading.css +50 -0
  131. package/dist/element/styles/components/mention.css +49 -0
  132. package/dist/element/styles/components/menu.css +140 -0
  133. package/dist/element/styles/components/message.css +88 -0
  134. package/dist/element/styles/components/notification.css +81 -0
  135. package/dist/element/styles/components/page-header.css +41 -0
  136. package/dist/element/styles/components/pagination.css +135 -0
  137. package/dist/element/styles/components/popconfirm.css +35 -0
  138. package/dist/element/styles/components/popover.css +22 -0
  139. package/dist/element/styles/components/progress.css +28 -0
  140. package/dist/element/styles/components/radio.css +64 -0
  141. package/dist/element/styles/components/rate.css +33 -0
  142. package/dist/element/styles/components/result.css +51 -0
  143. package/dist/element/styles/components/row.css +11 -0
  144. package/dist/element/styles/components/scrollbar.css +33 -0
  145. package/dist/element/styles/components/segmented.css +59 -0
  146. package/dist/element/styles/components/select.css +226 -0
  147. package/dist/element/styles/components/skeleton.css +65 -0
  148. package/dist/element/styles/components/slider.css +93 -0
  149. package/dist/element/styles/components/space.css +19 -0
  150. package/dist/element/styles/components/statistic.css +33 -0
  151. package/dist/element/styles/components/steps.css +122 -0
  152. package/dist/element/styles/components/switch.css +32 -0
  153. package/dist/element/styles/components/table.css +144 -0
  154. package/dist/element/styles/components/tabs.css +125 -0
  155. package/dist/element/styles/components/tag.css +150 -0
  156. package/dist/element/styles/components/text.css +50 -0
  157. package/dist/element/styles/components/time-picker.css +106 -0
  158. package/dist/element/styles/components/timeline.css +58 -0
  159. package/dist/element/styles/components/tooltip.css +22 -0
  160. package/dist/element/styles/components/tour.css +58 -0
  161. package/dist/element/styles/components/transfer.css +181 -0
  162. package/dist/element/styles/components/tree-select.css +28 -0
  163. package/dist/element/styles/components/tree.css +66 -0
  164. package/dist/element/styles/components/upload.css +96 -0
  165. package/dist/element/styles/components/virtualized.css +75 -0
  166. package/dist/element/styles/components/watermark.css +20 -0
  167. package/dist/element/styles/dark.css +82 -0
  168. package/dist/element/styles/index.css +107 -0
  169. package/package.json +78 -0
@@ -0,0 +1,34 @@
1
+ import { Plugin } from 'vue';
2
+ import { SemiThemeOptions } from '../core/index.js';
3
+
4
+ /**
5
+ * Semi Theme for Ant Design Vue
6
+ *
7
+ * 支持三种使用方式:
8
+ *
9
+ * 1. 全局模式(默认)- 所有组件都应用 Semi 样式
10
+ * app.use(createSemiTheme())
11
+ *
12
+ * 2. 组件模式 - 只对指定组件应用 Semi 样式
13
+ * app.use(createSemiTheme({ components: ['Button', 'Input'] }))
14
+ *
15
+ * 3. 排除模式 - 排除指定组件,其他都应用
16
+ * app.use(createSemiTheme({ exclude: ['Table'] }))
17
+ */
18
+
19
+ declare const SUPPORTED_COMPONENTS: readonly ["Button", "Input", "Select", "Checkbox", "Radio", "Switch", "Slider", "Rate", "DatePicker", "TimePicker", "Upload", "Transfer", "Tree", "TreeSelect", "Form", "Table", "Card", "Tag", "Tabs", "Collapse", "List", "Avatar", "Badge", "Timeline", "Modal", "Drawer", "Message", "Notification", "Tooltip", "Popover", "Popconfirm", "Progress", "Alert", "Steps", "Pagination", "Menu", "Dropdown", "Breadcrumb", "Anchor", "BackTop", "Spin", "Skeleton", "Empty", "Result", "Image", "Carousel", "Calendar", "Descriptions", "Statistic", "Divider", "Space", "Cascader", "Mentions", "AutoComplete", "InputNumber", "Segmented", "FloatButton", "Tour", "Watermark", "Typography", "Layout", "Grid", "Affix"];
20
+ type AntdSupportedComponent = typeof SUPPORTED_COMPONENTS[number];
21
+ interface AntdSemiThemeOptions extends SemiThemeOptions {
22
+ components?: AntdSupportedComponent[];
23
+ exclude?: AntdSupportedComponent[];
24
+ }
25
+ /**
26
+ * 创建 Semi 主题插件 (Ant Design Vue)
27
+ */
28
+ declare function createSemiTheme(options?: AntdSemiThemeOptions): Plugin;
29
+ /**
30
+ * 默认导出 - 全局模式插件
31
+ */
32
+ declare const SemiThemePlugin: Plugin;
33
+
34
+ export { type AntdSemiThemeOptions, type AntdSupportedComponent, SUPPORTED_COMPONENTS, SemiThemePlugin, createSemiTheme, createSemiTheme as default };
@@ -0,0 +1,12 @@
1
+ import {
2
+ SUPPORTED_COMPONENTS,
3
+ SemiThemePlugin,
4
+ createSemiTheme,
5
+ plugin_default
6
+ } from "../chunk-FMQWBDDZ.js";
7
+ export {
8
+ SUPPORTED_COMPONENTS,
9
+ SemiThemePlugin,
10
+ createSemiTheme,
11
+ plugin_default as default
12
+ };
@@ -0,0 +1,83 @@
1
+ /**
2
+ * antd-semi-theme 完整 CSS 样式
3
+ *
4
+ * 包含所有组件的 CSS 覆盖样式
5
+ * 适用于需要完全 CSS 控制的场景(不使用 Token)
6
+ *
7
+ * 注意:如果已使用 Token,大部分样式会重复
8
+ * 推荐只使用 'antd-semi-theme/styles' 而非此文件
9
+ *
10
+ * @example
11
+ * import 'antd-semi-theme/styles/all' // 完整 CSS
12
+ */
13
+
14
+ /* ========== 变量和基础 ========== */
15
+ @import './variables.css';
16
+ @import './base.css';
17
+
18
+ /* ========== 通用组件 ========== */
19
+ @import './components/button.css';
20
+
21
+ /* ========== 数据录入 ========== */
22
+ @import './components/input.css';
23
+ @import './components/select.css';
24
+ @import './components/checkbox.css';
25
+ @import './components/radio.css';
26
+ @import './components/switch.css';
27
+ @import './components/slider.css';
28
+ @import './components/rate.css';
29
+ @import './components/datepicker.css';
30
+ @import './components/upload.css';
31
+ @import './components/transfer.css';
32
+ @import './components/form.css';
33
+
34
+ /* ========== 数据展示 ========== */
35
+ @import './components/table.css';
36
+ @import './components/card.css';
37
+ @import './components/tag.css';
38
+ @import './components/collapse.css';
39
+ @import './components/list.css';
40
+ @import './components/tree.css';
41
+ @import './components/avatar.css';
42
+ @import './components/badge.css';
43
+ @import './components/timeline.css';
44
+ @import './components/descriptions.css';
45
+ @import './components/statistic.css';
46
+ @import './components/empty.css';
47
+ @import './components/image.css';
48
+ @import './components/carousel.css';
49
+ @import './components/calendar.css';
50
+ @import './components/skeleton.css';
51
+
52
+ /* ========== 导航 ========== */
53
+ @import './components/tabs.css';
54
+ @import './components/breadcrumb.css';
55
+ @import './components/pagination.css';
56
+ @import './components/steps.css';
57
+ @import './components/menu.css';
58
+ @import './components/dropdown.css';
59
+ @import './components/anchor.css';
60
+ @import './components/backtop.css';
61
+
62
+ /* ========== 反馈 ========== */
63
+ @import './components/modal.css';
64
+ @import './components/drawer.css';
65
+ @import './components/message.css';
66
+ @import './components/notification.css';
67
+ @import './components/tooltip.css';
68
+ @import './components/popover.css';
69
+ @import './components/popconfirm.css';
70
+ @import './components/progress.css';
71
+ @import './components/alert.css';
72
+ @import './components/spin.css';
73
+ @import './components/result.css';
74
+
75
+ /* ========== 布局 ========== */
76
+ @import './components/divider.css';
77
+ @import './components/space.css';
78
+
79
+ /* ========== AI 组件 ========== */
80
+ @import './components/ai.css';
81
+
82
+ /* ========== 特殊效果 ========== */
83
+ @import './overrides.css';
@@ -0,0 +1,202 @@
1
+ /**
2
+ * Semi Theme for Ant Design Vue - 基础样式
3
+ *
4
+ * 包含:
5
+ * - CSS 变量定义
6
+ * - 全局基础样式
7
+ *
8
+ * 使用方式:
9
+ * import 'semi-theme/antd/styles/base'
10
+ */
11
+
12
+ /* ========== Semi Design 颜色变量 ========== */
13
+ :root {
14
+ /* 品牌色 - Primary */
15
+ --semi-color-primary: #0064FA;
16
+ --semi-color-primary-hover: #0050D0;
17
+ --semi-color-primary-active: #003DA8;
18
+ --semi-color-primary-disabled: rgba(0, 100, 250, 0.4);
19
+ --semi-color-primary-light-default: rgba(0, 100, 250, 0.08);
20
+ --semi-color-primary-light-hover: rgba(0, 100, 250, 0.12);
21
+ --semi-color-primary-light-active: rgba(0, 100, 250, 0.16);
22
+
23
+ /* 次要色 - Secondary */
24
+ --semi-color-secondary: #0095EE;
25
+ --semi-color-secondary-hover: #007ACC;
26
+ --semi-color-secondary-active: #0060AA;
27
+ --semi-color-secondary-light-default: rgba(0, 149, 238, 0.08);
28
+ --semi-color-secondary-light-hover: rgba(0, 149, 238, 0.12);
29
+
30
+ /* 第三色 - Tertiary */
31
+ --semi-color-tertiary: rgba(46, 50, 56, 0.55);
32
+ --semi-color-tertiary-hover: rgba(46, 50, 56, 0.65);
33
+ --semi-color-tertiary-active: rgba(46, 50, 56, 0.75);
34
+ --semi-color-tertiary-light-default: rgba(46, 50, 56, 0.05);
35
+ --semi-color-tertiary-light-hover: rgba(46, 50, 56, 0.09);
36
+ --semi-color-tertiary-light-active: rgba(46, 50, 56, 0.13);
37
+
38
+ /* 成功色 - Success */
39
+ --semi-color-success: #3BB346;
40
+ --semi-color-success-hover: #2E9E39;
41
+ --semi-color-success-active: #22892C;
42
+ --semi-color-success-light-default: rgba(59, 179, 70, 0.08);
43
+ --semi-color-success-light-hover: rgba(59, 179, 70, 0.12);
44
+ --semi-color-success-light-active: rgba(59, 179, 70, 0.16);
45
+
46
+ /* 警告色 - Warning */
47
+ --semi-color-warning: #FC8800;
48
+ --semi-color-warning-hover: #E07800;
49
+ --semi-color-warning-active: #C46800;
50
+ --semi-color-warning-light-default: rgba(252, 136, 0, 0.08);
51
+ --semi-color-warning-light-hover: rgba(252, 136, 0, 0.12);
52
+ --semi-color-warning-light-active: rgba(252, 136, 0, 0.16);
53
+
54
+ /* 危险色 - Danger */
55
+ --semi-color-danger: #F93920;
56
+ --semi-color-danger-hover: #DD2C15;
57
+ --semi-color-danger-active: #C1200A;
58
+ --semi-color-danger-light-default: rgba(249, 57, 32, 0.08);
59
+ --semi-color-danger-light-hover: rgba(249, 57, 32, 0.12);
60
+ --semi-color-danger-light-active: rgba(249, 57, 32, 0.16);
61
+
62
+ /* 信息色 - Info */
63
+ --semi-color-info: #0064FA;
64
+ --semi-color-info-light-default: rgba(0, 100, 250, 0.08);
65
+
66
+ /* 文字颜色 */
67
+ --semi-color-text-0: rgba(28, 31, 35, 1);
68
+ --semi-color-text-1: rgba(28, 31, 35, 0.8);
69
+ --semi-color-text-2: rgba(28, 31, 35, 0.62);
70
+ --semi-color-text-3: rgba(28, 31, 35, 0.35);
71
+
72
+ /* 填充色 */
73
+ --semi-color-fill-0: rgba(46, 50, 56, 0.05);
74
+ --semi-color-fill-1: rgba(46, 50, 56, 0.09);
75
+ --semi-color-fill-2: rgba(46, 50, 56, 0.13);
76
+
77
+ /* 边框色 */
78
+ --semi-color-border: rgba(28, 31, 35, 0.08);
79
+ --semi-color-border-hover: rgba(28, 31, 35, 0.12);
80
+ --semi-color-focus-border: #0064FA;
81
+
82
+ /* 禁用状态 */
83
+ --semi-color-disabled-fill: rgba(46, 50, 56, 0.04);
84
+ --semi-color-disabled-text: rgba(28, 31, 35, 0.35);
85
+ --semi-color-disabled-border: transparent;
86
+ --semi-color-disabled-bg: rgba(46, 50, 56, 0.04);
87
+
88
+ /* 背景色 */
89
+ --semi-color-bg-0: #fff;
90
+ --semi-color-bg-1: rgba(46, 50, 56, 0.02);
91
+ --semi-color-bg-2: rgba(46, 50, 56, 0.05);
92
+ --semi-color-bg-3: rgba(46, 50, 56, 0.08);
93
+
94
+ /* 圆角 */
95
+ --semi-border-radius-extra-small: 3px;
96
+ --semi-border-radius-small: 3px;
97
+ --semi-border-radius-medium: 6px;
98
+ --semi-border-radius-large: 8px;
99
+ --semi-border-radius-full: 9999px;
100
+
101
+ /* 字体大小 */
102
+ --semi-font-size-extra-small: 12px;
103
+ --semi-font-size-small: 12px;
104
+ --semi-font-size-regular: 14px;
105
+ --semi-font-size-large: 16px;
106
+ --semi-font-size-extra-large: 20px;
107
+
108
+ /* 阴影 */
109
+ --semi-shadow-elevated: 0 0 1px rgba(0, 0, 0, 0.3), 0 4px 14px rgba(0, 0, 0, 0.1);
110
+ --semi-shadow-floating: 0 0 1px rgba(0, 0, 0, 0.3), 0 8px 24px rgba(0, 0, 0, 0.12);
111
+
112
+ /* 过渡 */
113
+ --semi-transition-duration: 0.15s;
114
+ --semi-transition-timing: cubic-bezier(0.4, 0, 0.2, 1);
115
+
116
+ /* AI 渐变色 */
117
+ --semi-color-ai-start: #A647FF;
118
+ --semi-color-ai-middle: #0064FA;
119
+ --semi-color-ai-end: #0095EE;
120
+ --semi-gradient-ai: linear-gradient(135deg, var(--semi-color-ai-start) 0%, var(--semi-color-ai-middle) 50%, var(--semi-color-ai-end) 100%);
121
+ }
122
+
123
+ /* ========== 深色模式变量 ========== */
124
+ .semi-dark,
125
+ .semi.dark,
126
+ [data-theme="dark"] .semi,
127
+ [theme-mode="dark"] .semi {
128
+ /* 品牌色 - Primary (深色模式更亮) */
129
+ --semi-color-primary: #54A9FF;
130
+ --semi-color-primary-hover: #78BBFF;
131
+ --semi-color-primary-active: #3D9BFF;
132
+ --semi-color-primary-light-default: rgba(84, 169, 255, 0.15);
133
+ --semi-color-primary-light-hover: rgba(84, 169, 255, 0.2);
134
+ --semi-color-primary-light-active: rgba(84, 169, 255, 0.25);
135
+
136
+ /* 次要色 */
137
+ --semi-color-secondary: #6BC5FF;
138
+ --semi-color-secondary-light-default: rgba(107, 197, 255, 0.15);
139
+
140
+ /* 成功色 */
141
+ --semi-color-success: #5DC264;
142
+ --semi-color-success-hover: #70CC76;
143
+ --semi-color-success-light-default: rgba(93, 194, 100, 0.15);
144
+
145
+ /* 警告色 */
146
+ --semi-color-warning: #FFA633;
147
+ --semi-color-warning-hover: #FFB54D;
148
+ --semi-color-warning-light-default: rgba(255, 166, 51, 0.15);
149
+
150
+ /* 危险色 */
151
+ --semi-color-danger: #FC7266;
152
+ --semi-color-danger-hover: #FD8A80;
153
+ --semi-color-danger-light-default: rgba(252, 114, 102, 0.15);
154
+
155
+ /* 文字颜色 */
156
+ --semi-color-text-0: rgba(249, 249, 249, 1);
157
+ --semi-color-text-1: rgba(249, 249, 249, 0.8);
158
+ --semi-color-text-2: rgba(249, 249, 249, 0.62);
159
+ --semi-color-text-3: rgba(249, 249, 249, 0.35);
160
+
161
+ /* 填充色 */
162
+ --semi-color-fill-0: rgba(255, 255, 255, 0.08);
163
+ --semi-color-fill-1: rgba(255, 255, 255, 0.12);
164
+ --semi-color-fill-2: rgba(255, 255, 255, 0.16);
165
+
166
+ /* 边框色 */
167
+ --semi-color-border: rgba(255, 255, 255, 0.08);
168
+ --semi-color-border-hover: rgba(255, 255, 255, 0.12);
169
+ --semi-color-focus-border: #54A9FF;
170
+
171
+ /* 禁用状态 */
172
+ --semi-color-disabled-fill: rgba(255, 255, 255, 0.04);
173
+ --semi-color-disabled-text: rgba(249, 249, 249, 0.35);
174
+ --semi-color-disabled-border: transparent;
175
+ --semi-color-disabled-bg: rgba(255, 255, 255, 0.04);
176
+
177
+ /* 背景色 */
178
+ --semi-color-bg-0: #16161A;
179
+ --semi-color-bg-1: #232429;
180
+ --semi-color-bg-2: #2E3035;
181
+ --semi-color-bg-3: #3A3D42;
182
+
183
+ /* 第三色 */
184
+ --semi-color-tertiary: rgba(255, 255, 255, 0.55);
185
+ --semi-color-tertiary-hover: rgba(255, 255, 255, 0.65);
186
+ --semi-color-tertiary-light-default: rgba(255, 255, 255, 0.08);
187
+ --semi-color-tertiary-light-hover: rgba(255, 255, 255, 0.12);
188
+
189
+ /* 阴影 */
190
+ --semi-shadow-elevated: 0 0 1px rgba(0, 0, 0, 0.5), 0 4px 14px rgba(0, 0, 0, 0.25);
191
+ --semi-shadow-floating: 0 0 1px rgba(0, 0, 0, 0.5), 0 8px 24px rgba(0, 0, 0, 0.3);
192
+ }
193
+
194
+ /* ========== 全局基础样式重置 ========== */
195
+ .semi {
196
+ color: var(--semi-color-text-0);
197
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif;
198
+ font-size: var(--semi-font-size-regular);
199
+ line-height: 1.5715;
200
+ -webkit-font-smoothing: antialiased;
201
+ -moz-osx-font-smoothing: grayscale;
202
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Affix 固钉 - Semi Design 风格
3
+ */
4
+
5
+ .semi:where([data-semi="all"], [data-semi-affix]) .ant-affix {
6
+ z-index: 10;
7
+ }
@@ -0,0 +1,242 @@
1
+ /**
2
+ * AI 组件样式
3
+ * Semi Design AI 渐变色规范
4
+ *
5
+ * 使用方式:
6
+ * 1. data 属性(推荐):<a-button data-ai>AI 按钮</a-button>
7
+ * 2. 类名(兼容):<a-button class="semi-btn-ai">AI 按钮</a-button>
8
+ */
9
+
10
+ /* ========== AI 变量 ========== */
11
+ :root {
12
+ --semi-color-ai-start: #A647FF;
13
+ --semi-color-ai-middle: #0064FA;
14
+ --semi-color-ai-end: #0095EE;
15
+ --semi-color-ai-general: linear-gradient(135deg, var(--semi-color-ai-start) 0%, var(--semi-color-ai-middle) 50%, var(--semi-color-ai-end) 100%);
16
+ --semi-ai-purple-5: 166, 71, 255;
17
+ --semi-ai-general-5-2: 0, 100, 250;
18
+ --semi-ai-general-5-3: 0, 149, 238;
19
+ }
20
+
21
+ /* ========== AI 按钮 ========== */
22
+ /* data-ai 属性方式(推荐) */
23
+ .semi:where([data-semi="all"], [data-semi-button]) .ant-btn[data-ai],
24
+ .ant-btn.semi-btn-ai {
25
+ background: var(--semi-color-ai-general);
26
+ border: none;
27
+ color: #fff;
28
+ position: relative;
29
+ overflow: hidden;
30
+ }
31
+
32
+ .semi:where([data-semi="all"], [data-semi-button]) .ant-btn[data-ai]:hover,
33
+ .ant-btn.semi-btn-ai:hover {
34
+ filter: brightness(1.1);
35
+ }
36
+
37
+ .semi:where([data-semi="all"], [data-semi-button]) .ant-btn[data-ai]:active,
38
+ .ant-btn.semi-btn-ai:active {
39
+ filter: brightness(0.95);
40
+ }
41
+
42
+ /* AI 按钮 Light */
43
+ .semi:where([data-semi="all"], [data-semi-button]) .ant-btn[data-ai][data-theme="light"],
44
+ .ant-btn.semi-btn-ai-light {
45
+ background: rgba(var(--semi-ai-purple-5), 0.1);
46
+ border: none;
47
+ color: rgb(var(--semi-ai-purple-5));
48
+ }
49
+
50
+ .semi:where([data-semi="all"], [data-semi-button]) .ant-btn[data-ai][data-theme="light"]:hover,
51
+ .ant-btn.semi-btn-ai-light:hover {
52
+ background: rgba(var(--semi-ai-purple-5), 0.15);
53
+ }
54
+
55
+ /* AI 按钮 Outline */
56
+ .semi:where([data-semi="all"], [data-semi-button]) .ant-btn[data-ai][data-theme="outline"],
57
+ .ant-btn.semi-btn-ai-outline {
58
+ background: transparent;
59
+ border: 1px solid rgb(var(--semi-ai-purple-5));
60
+ color: rgb(var(--semi-ai-purple-5));
61
+ }
62
+
63
+ .semi:where([data-semi="all"], [data-semi-button]) .ant-btn[data-ai][data-theme="outline"]:hover,
64
+ .ant-btn.semi-btn-ai-outline:hover {
65
+ background: rgba(var(--semi-ai-purple-5), 0.08);
66
+ }
67
+
68
+ /* AI 按钮 Borderless */
69
+ .semi:where([data-semi="all"], [data-semi-button]) .ant-btn[data-ai][data-theme="borderless"],
70
+ .ant-btn.semi-btn-ai-borderless {
71
+ background: transparent;
72
+ border: none;
73
+ color: rgb(var(--semi-ai-purple-5));
74
+ }
75
+
76
+ .semi:where([data-semi="all"], [data-semi-button]) .ant-btn[data-ai][data-theme="borderless"]:hover,
77
+ .ant-btn.semi-btn-ai-borderless:hover {
78
+ background: rgba(var(--semi-ai-purple-5), 0.08);
79
+ }
80
+
81
+ /* ========== AI 输入框 ========== */
82
+ .semi:where([data-semi="all"], [data-semi-input]) .ant-input[data-ai],
83
+ .semi:where([data-semi="all"], [data-semi-input]) .ant-input-affix-wrapper[data-ai],
84
+ .ant-input.semi-input-ai,
85
+ .ant-input-affix-wrapper.semi-input-ai {
86
+ border: 1px solid transparent;
87
+ background:
88
+ linear-gradient(var(--semi-color-bg-0), var(--semi-color-bg-0)) padding-box,
89
+ var(--semi-color-ai-general) border-box;
90
+ }
91
+
92
+ .semi:where([data-semi="all"], [data-semi-input]) .ant-input[data-ai]:focus,
93
+ .semi:where([data-semi="all"], [data-semi-input]) .ant-input-affix-wrapper[data-ai]:focus-within,
94
+ .ant-input.semi-input-ai:focus,
95
+ .ant-input-affix-wrapper.semi-input-ai:focus-within {
96
+ box-shadow: 0 0 0 2px rgba(var(--semi-ai-purple-5), 0.2);
97
+ outline: none;
98
+ }
99
+
100
+ /* ========== AI 标签 ========== */
101
+ .semi:where([data-semi="all"], [data-semi-tag]) .ant-tag[data-ai],
102
+ .ant-tag.semi-tag-ai {
103
+ background: var(--semi-color-ai-general);
104
+ color: #fff;
105
+ border: none;
106
+ }
107
+
108
+ .semi:where([data-semi="all"], [data-semi-tag]) .ant-tag[data-ai][data-theme="light"],
109
+ .ant-tag.semi-tag-ai-light {
110
+ background: rgba(var(--semi-ai-purple-5), 0.1);
111
+ color: rgb(var(--semi-ai-purple-5));
112
+ }
113
+
114
+ /* ========== AI 文本 ========== */
115
+ .semi-text-ai,
116
+ [data-ai-text] {
117
+ background: var(--semi-color-ai-general);
118
+ -webkit-background-clip: text;
119
+ -webkit-text-fill-color: transparent;
120
+ background-clip: text;
121
+ }
122
+
123
+ /* ========== AI 进度条 ========== */
124
+ .semi:where([data-semi="all"], [data-semi-progress]) .ant-progress[data-ai] .ant-progress-bg,
125
+ .semi-progress-ai .ant-progress-bg {
126
+ background: var(--semi-color-ai-general);
127
+ }
128
+
129
+ .semi:where([data-semi="all"], [data-semi-progress]) .ant-progress[data-ai] .ant-progress-circle-path,
130
+ .semi-progress-ai .ant-progress-circle-path {
131
+ stroke: url(#ai-gradient);
132
+ }
133
+
134
+ /* ========== AI 头像 ========== */
135
+ .semi:where([data-semi="all"], [data-semi-avatar]) .ant-avatar[data-ai],
136
+ .semi-avatar-ai {
137
+ background: var(--semi-color-ai-general);
138
+ color: #fff;
139
+ }
140
+
141
+ /* ========== AI 卡片 ========== */
142
+ .semi:where([data-semi="all"], [data-semi-card]) .ant-card[data-ai],
143
+ .semi-card-ai {
144
+ position: relative;
145
+ border: 1px solid transparent;
146
+ background:
147
+ linear-gradient(var(--semi-color-bg-0), var(--semi-color-bg-0)) padding-box,
148
+ var(--semi-color-ai-general) border-box;
149
+ }
150
+
151
+ /* AI 卡片动态边框 */
152
+ .semi-card-ai-animated,
153
+ .ant-card[data-ai-animated] {
154
+ position: relative;
155
+ overflow: hidden;
156
+ }
157
+
158
+ .semi-card-ai-animated::before,
159
+ .ant-card[data-ai-animated]::before {
160
+ content: '';
161
+ position: absolute;
162
+ inset: -2px;
163
+ background: var(--semi-color-ai-general);
164
+ border-radius: inherit;
165
+ z-index: -1;
166
+ animation: ai-border-rotate 3s linear infinite;
167
+ }
168
+
169
+ @keyframes ai-border-rotate {
170
+ 0% {
171
+ filter: hue-rotate(0deg);
172
+ }
173
+ 100% {
174
+ filter: hue-rotate(360deg);
175
+ }
176
+ }
177
+
178
+ /* ========== AI 开关 ========== */
179
+ .semi:where([data-semi="all"], [data-semi-switch]) .ant-switch[data-ai].ant-switch-checked,
180
+ .semi-switch-ai.ant-switch-checked {
181
+ background: var(--semi-color-ai-general);
182
+ }
183
+
184
+ /* ========== AI 步骤条 ========== */
185
+ .semi:where([data-semi="all"], [data-semi-steps]) .ant-steps[data-ai] .ant-steps-item-process .ant-steps-item-icon,
186
+ .semi-steps-ai .ant-steps-item-process .ant-steps-item-icon {
187
+ background: var(--semi-color-ai-general);
188
+ border: none;
189
+ }
190
+
191
+ .semi:where([data-semi="all"], [data-semi-steps]) .ant-steps[data-ai] .ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon,
192
+ .semi-steps-ai .ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {
193
+ color: #fff;
194
+ }
195
+
196
+ .semi:where([data-semi="all"], [data-semi-steps]) .ant-steps[data-ai] .ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon,
197
+ .semi-steps-ai .ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon {
198
+ color: rgb(var(--semi-ai-purple-5));
199
+ }
200
+
201
+ .semi:where([data-semi="all"], [data-semi-steps]) .ant-steps[data-ai] .ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-tail::after,
202
+ .semi-steps-ai .ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-tail::after {
203
+ background: var(--semi-color-ai-general);
204
+ }
205
+
206
+ /* ========== AI 时间线 ========== */
207
+ .semi:where([data-semi="all"], [data-semi-timeline]) .ant-timeline[data-ai] .ant-timeline-item-head,
208
+ .semi-timeline-ai .ant-timeline-item-head {
209
+ background: var(--semi-color-ai-general);
210
+ border: none;
211
+ }
212
+
213
+ /* ========== AI 光晕效果 ========== */
214
+ .semi-glow-ai,
215
+ [data-ai-glow] {
216
+ box-shadow:
217
+ 0 0 20px rgba(var(--semi-ai-purple-5), 0.3),
218
+ 0 0 40px rgba(var(--semi-ai-general-5-2), 0.2),
219
+ 0 0 60px rgba(var(--semi-ai-general-5-3), 0.1);
220
+ }
221
+
222
+ /* ========== AI 边框动画 ========== */
223
+ .semi-border-ai-animated,
224
+ [data-ai-border-animated] {
225
+ position: relative;
226
+ }
227
+
228
+ .semi-border-ai-animated::after,
229
+ [data-ai-border-animated]::after {
230
+ content: '';
231
+ position: absolute;
232
+ inset: 0;
233
+ border-radius: inherit;
234
+ padding: 1px;
235
+ background: var(--semi-color-ai-general);
236
+ -webkit-mask:
237
+ linear-gradient(#fff 0 0) content-box,
238
+ linear-gradient(#fff 0 0);
239
+ -webkit-mask-composite: xor;
240
+ mask-composite: exclude;
241
+ pointer-events: none;
242
+ }