@incremark/theme 0.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.
package/dist/index.js ADDED
@@ -0,0 +1,440 @@
1
+ import { generateBrand } from '@incremark/colors';
2
+
3
+ // src/themes/default.ts
4
+ var brandColors = generateBrand("#3b82f6");
5
+ var neutralSeries = {
6
+ 1: "#ffffff",
7
+ 2: "#f8f9fc",
8
+ // 稍微偏蓝一点
9
+ 3: "#f1f3f8",
10
+ // 稍微偏蓝
11
+ 4: "#e2e5ec",
12
+ // 稍微调整
13
+ 5: "#cdd1da",
14
+ // 稍微调整
15
+ 6: "#9ca4b1",
16
+ // 稍微调整
17
+ 7: "#677284",
18
+ // 稍微调整
19
+ 8: "#34435a",
20
+ // 稍微偏蓝
21
+ 9: "#011431",
22
+ // 稍微调整
23
+ 10: "#01122d"
24
+ // 稍微调整
25
+ };
26
+ var baseBlue = generateBrand("#3b82f6");
27
+ var basePurple = generateBrand("#a855f7");
28
+ var baseGreen = generateBrand("#10b981");
29
+ var baseRed = generateBrand("#ef4444");
30
+ var baseOrange = generateBrand("#f97316");
31
+ var baseCyan = generateBrand("#06b6d4");
32
+ var defaultTheme = {
33
+ // ============ 基础色系统 ============
34
+ baseColors: {
35
+ blue: {
36
+ 1: baseBlue.palette[1],
37
+ 2: baseBlue.palette[2],
38
+ 3: baseBlue.palette[3],
39
+ 4: baseBlue.palette[4],
40
+ 5: baseBlue.palette[5],
41
+ 6: baseBlue.palette[6],
42
+ // 主色
43
+ 7: baseBlue.palette[7],
44
+ 8: baseBlue.palette[8],
45
+ 9: baseBlue.palette[9],
46
+ 10: baseBlue.palette[10]
47
+ },
48
+ purple: {
49
+ 1: basePurple.palette[1],
50
+ 2: basePurple.palette[2],
51
+ 3: basePurple.palette[3],
52
+ 4: basePurple.palette[4],
53
+ 5: basePurple.palette[5],
54
+ 6: basePurple.palette[6],
55
+ // 主色
56
+ 7: basePurple.palette[7],
57
+ 8: basePurple.palette[8],
58
+ 9: basePurple.palette[9],
59
+ 10: basePurple.palette[10]
60
+ },
61
+ green: {
62
+ 1: baseGreen.palette[1],
63
+ 2: baseGreen.palette[2],
64
+ 3: baseGreen.palette[3],
65
+ 4: baseGreen.palette[4],
66
+ 5: baseGreen.palette[5],
67
+ 6: baseGreen.palette[6],
68
+ // 主色
69
+ 7: baseGreen.palette[7],
70
+ 8: baseGreen.palette[8],
71
+ 9: baseGreen.palette[9],
72
+ 10: baseGreen.palette[10]
73
+ },
74
+ red: {
75
+ 1: baseRed.palette[1],
76
+ 2: baseRed.palette[2],
77
+ 3: baseRed.palette[3],
78
+ 4: baseRed.palette[4],
79
+ 5: baseRed.palette[5],
80
+ 6: baseRed.palette[6],
81
+ // 主色
82
+ 7: baseRed.palette[7],
83
+ 8: baseRed.palette[8],
84
+ 9: baseRed.palette[9],
85
+ 10: baseRed.palette[10]
86
+ },
87
+ orange: {
88
+ 1: baseOrange.palette[1],
89
+ 2: baseOrange.palette[2],
90
+ 3: baseOrange.palette[3],
91
+ 4: baseOrange.palette[4],
92
+ 5: baseOrange.palette[5],
93
+ 6: baseOrange.palette[6],
94
+ // 主色
95
+ 7: baseOrange.palette[7],
96
+ 8: baseOrange.palette[8],
97
+ 9: baseOrange.palette[9],
98
+ 10: baseOrange.palette[10]
99
+ },
100
+ cyan: {
101
+ 1: baseCyan.palette[1],
102
+ 2: baseCyan.palette[2],
103
+ 3: baseCyan.palette[3],
104
+ 4: baseCyan.palette[4],
105
+ 5: baseCyan.palette[5],
106
+ 6: baseCyan.palette[6],
107
+ // 主色
108
+ 7: baseCyan.palette[7],
109
+ 8: baseCyan.palette[8],
110
+ 9: baseCyan.palette[9],
111
+ 10: baseCyan.palette[10]
112
+ }
113
+ },
114
+ color: {
115
+ // ============ Neutral 中性色系统 ============
116
+ neutral: {
117
+ 1: neutralSeries[1],
118
+ 2: neutralSeries[2],
119
+ 3: neutralSeries[3],
120
+ 4: neutralSeries[4],
121
+ 5: neutralSeries[5],
122
+ 6: neutralSeries[6],
123
+ 7: neutralSeries[7],
124
+ 8: neutralSeries[8],
125
+ 9: neutralSeries[9],
126
+ 10: neutralSeries[10]
127
+ },
128
+ // ============ 品牌主题色(自动生成)============
129
+ brand: {
130
+ primary: brandColors.primary,
131
+ primaryHover: brandColors.hover,
132
+ primaryActive: brandColors.active,
133
+ primaryLight: brandColors.light
134
+ },
135
+ // ============ 语义化颜色(基于 neutral) ============
136
+ text: {
137
+ primary: neutralSeries[8],
138
+ // neutral-8
139
+ secondary: neutralSeries[7],
140
+ // neutral-7
141
+ tertiary: neutralSeries[6],
142
+ // neutral-6
143
+ inverse: neutralSeries[1]
144
+ // neutral-1
145
+ },
146
+ background: {
147
+ base: neutralSeries[1],
148
+ // neutral-1
149
+ elevated: neutralSeries[2],
150
+ // neutral-2
151
+ overlay: "rgba(1, 20, 49, 0.6)"
152
+ // neutral-9 with alpha
153
+ },
154
+ border: {
155
+ default: neutralSeries[4],
156
+ // neutral-4 - 浅灰色边框
157
+ subtle: neutralSeries[3],
158
+ // neutral-3 - 极浅边框
159
+ strong: neutralSeries[7]
160
+ // neutral-7 - 深灰色边框
161
+ },
162
+ code: {
163
+ inlineBackground: neutralSeries[3],
164
+ // neutral-3 - 行内代码浅色背景
165
+ inlineText: neutralSeries[8],
166
+ // neutral-8 - 行内代码深色文本
167
+ blockBackground: neutralSeries[9],
168
+ // neutral-9 - 代码块深色背景
169
+ blockText: neutralSeries[2],
170
+ // neutral-2 - 代码块浅色文本
171
+ headerBackground: neutralSeries[10]
172
+ // neutral-10 - 代码块头部更深背景
173
+ // border 使用通用的 border.strong,不单独定义
174
+ },
175
+ status: {
176
+ pending: basePurple.palette[6],
177
+ // 使用紫色系主色
178
+ completed: baseGreen.palette[6]
179
+ // 使用绿色系主色
180
+ },
181
+ // ============ 交互元素颜色 ============
182
+ interactive: {
183
+ link: brandColors.primary,
184
+ // 使用品牌主色
185
+ linkHover: brandColors.hover,
186
+ // 使用 hover 变体
187
+ linkVisited: basePurple.palette[7],
188
+ // 使用紫色系深色表示访问过
189
+ checked: baseGreen.palette[6]
190
+ // 使用绿色系主色表示选中
191
+ }
192
+ },
193
+ typography: {
194
+ fontFamily: {
195
+ base: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif",
196
+ mono: "'Fira Code', 'SF Mono', 'Monaco', 'Consolas', monospace"
197
+ },
198
+ fontSize: {
199
+ xs: "11px",
200
+ sm: "12px",
201
+ base: "14px",
202
+ md: "16px",
203
+ lg: "18px",
204
+ heading: {
205
+ h1: "2em",
206
+ h2: "1.5em",
207
+ h3: "1.25em",
208
+ h4: "1em",
209
+ h5: "0.875em",
210
+ h6: "0.85em"
211
+ }
212
+ },
213
+ fontWeight: {
214
+ normal: 400,
215
+ medium: 500,
216
+ semibold: 600,
217
+ bold: 700
218
+ },
219
+ lineHeight: {
220
+ tight: 1.25,
221
+ normal: 1.5,
222
+ relaxed: 1.75
223
+ }
224
+ },
225
+ spacing: {
226
+ xs: "4px",
227
+ sm: "8px",
228
+ md: "12px",
229
+ lg: "16px",
230
+ xl: "24px"
231
+ },
232
+ border: {
233
+ radius: {
234
+ sm: "4px",
235
+ md: "8px",
236
+ lg: "12px"
237
+ }
238
+ },
239
+ shadow: {
240
+ sm: "0 1px 2px rgba(0, 0, 0, 0.05)",
241
+ md: "0 4px 6px rgba(0, 0, 0, 0.1)",
242
+ lg: "0 10px 15px rgba(0, 0, 0, 0.1)"
243
+ },
244
+ animation: {
245
+ duration: {
246
+ fast: "150ms",
247
+ normal: "200ms",
248
+ slow: "300ms"
249
+ },
250
+ easing: {
251
+ easeInOut: "cubic-bezier(0.4, 0, 0.2, 1)",
252
+ easeOut: "cubic-bezier(0, 0, 0.2, 1)"
253
+ }
254
+ }
255
+ };
256
+ var darkBrandColors = generateBrand("#60a5fa");
257
+ var darkBasePurple = generateBrand("#c084fc");
258
+ var darkBaseGreen = generateBrand("#34d399");
259
+ var darkNeutralSeries = {
260
+ 1: "#0a1628",
261
+ 2: "#162033",
262
+ 3: "#273548",
263
+ 4: "#546070",
264
+ 5: "#8891a0",
265
+ 6: "#cdd1da",
266
+ 7: "#e2e5ec",
267
+ 8: "#f1f3f8",
268
+ 9: "#f8f9fc",
269
+ 10: "#ffffff"
270
+ };
271
+ var darkTheme = {
272
+ ...defaultTheme,
273
+ // 继承亮色主题的基础色系统(baseColors 保持一致)
274
+ baseColors: defaultTheme.baseColors,
275
+ color: {
276
+ // ============ Neutral 中性色系统(暗色模式反转) ============
277
+ neutral: {
278
+ 1: darkNeutralSeries[1],
279
+ 2: darkNeutralSeries[2],
280
+ 3: darkNeutralSeries[3],
281
+ 4: darkNeutralSeries[4],
282
+ 5: darkNeutralSeries[5],
283
+ 6: darkNeutralSeries[6],
284
+ 7: darkNeutralSeries[7],
285
+ 8: darkNeutralSeries[8],
286
+ 9: darkNeutralSeries[9],
287
+ 10: darkNeutralSeries[10]
288
+ },
289
+ // ============ 品牌主题色(暗色模式自动生成)============
290
+ brand: {
291
+ primary: darkBrandColors.primary,
292
+ primaryHover: darkBrandColors.hover,
293
+ primaryActive: darkBrandColors.active,
294
+ primaryLight: darkBrandColors.light
295
+ },
296
+ // ============ 语义化颜色 ============
297
+ text: {
298
+ primary: darkNeutralSeries[8],
299
+ // neutral-8 (dark)
300
+ secondary: darkNeutralSeries[7],
301
+ // neutral-7 (dark)
302
+ tertiary: darkNeutralSeries[6],
303
+ // neutral-6 (dark)
304
+ inverse: darkNeutralSeries[1]
305
+ // neutral-1 (dark)
306
+ },
307
+ background: {
308
+ base: darkNeutralSeries[1],
309
+ // neutral-1 (dark)
310
+ elevated: darkNeutralSeries[2],
311
+ // neutral-2 (dark)
312
+ overlay: "rgba(0, 0, 0, 0.75)"
313
+ },
314
+ border: {
315
+ subtle: darkNeutralSeries[3],
316
+ // neutral-3 (dark) - 极浅边框
317
+ default: darkNeutralSeries[4],
318
+ // neutral-4 (dark) - 浅灰色边框
319
+ strong: darkNeutralSeries[7]
320
+ // neutral-7 (dark) - 深灰色边框
321
+ },
322
+ code: {
323
+ inlineBackground: darkNeutralSeries[3],
324
+ // neutral-3 (dark) - 行内代码适中暗色背景
325
+ inlineText: darkNeutralSeries[8],
326
+ // neutral-8 (dark) - 行内代码浅色文本
327
+ blockBackground: darkNeutralSeries[3],
328
+ // neutral-2 (dark) - 代码块深色背景
329
+ blockText: darkNeutralSeries[9],
330
+ // neutral-9 (dark) - 代码块极浅文本
331
+ headerBackground: darkNeutralSeries[2]
332
+ // neutral-2 (dark) - 代码块头部背景
333
+ // border 使用通用的 border.strong,不单独定义
334
+ },
335
+ status: {
336
+ pending: darkBasePurple.palette[6],
337
+ // 使用暗色紫色系主色
338
+ completed: darkBaseGreen.palette[6]
339
+ // 使用暗色绿色系主色
340
+ },
341
+ // ============ 交互元素颜色 ============
342
+ interactive: {
343
+ link: darkBrandColors.primary,
344
+ // 使用暗色品牌主色
345
+ linkHover: darkBrandColors.hover,
346
+ // 使用 hover 变体
347
+ linkVisited: darkBasePurple.palette[4],
348
+ // 使用暗色紫色系浅色
349
+ checked: darkBaseGreen.palette[6]
350
+ // 使用暗色绿色系主色
351
+ }
352
+ },
353
+ // 其他 Token 继承自 defaultTheme
354
+ typography: defaultTheme.typography,
355
+ spacing: defaultTheme.spacing,
356
+ border: defaultTheme.border,
357
+ shadow: defaultTheme.shadow,
358
+ animation: defaultTheme.animation
359
+ };
360
+
361
+ // src/utils/generate-css-vars.ts
362
+ function objectToCSSVars(obj, prefix, result = []) {
363
+ for (const [key, value] of Object.entries(obj)) {
364
+ const varName = prefix ? `${prefix}-${key}` : key;
365
+ const kebabKey = varName.replace(/([A-Z])/g, "-$1").toLowerCase();
366
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) {
367
+ objectToCSSVars(value, kebabKey, result);
368
+ } else {
369
+ result.push(` --${kebabKey}: ${value};`);
370
+ }
371
+ }
372
+ }
373
+ function generateCSSVars(tokens, options = {}) {
374
+ const { prefix = "incremark", selector = ":root" } = options;
375
+ const vars = [];
376
+ objectToCSSVars(tokens, prefix, vars);
377
+ if (vars.length === 0) {
378
+ return selector ? `${selector} {}` : "";
379
+ }
380
+ if (!selector) {
381
+ return vars.join("\n");
382
+ }
383
+ return `${selector} {
384
+ ${vars.join("\n")}
385
+ }`;
386
+ }
387
+
388
+ // src/utils/merge-theme.ts
389
+ function deepMerge(target, source) {
390
+ const result = { ...target };
391
+ for (const key in source) {
392
+ if (source[key] && typeof source[key] === "object" && !Array.isArray(source[key])) {
393
+ result[key] = deepMerge(
394
+ target[key] || {},
395
+ source[key]
396
+ );
397
+ } else if (source[key] !== void 0) {
398
+ result[key] = source[key];
399
+ }
400
+ }
401
+ return result;
402
+ }
403
+ function mergeTheme(base, override) {
404
+ return deepMerge(base, override);
405
+ }
406
+
407
+ // src/utils/apply-theme.ts
408
+ function applyTheme(element = document, theme) {
409
+ const target = element === document ? document.documentElement : element;
410
+ if (typeof theme === "string") {
411
+ if (theme === "dark") {
412
+ target.classList.add("theme-dark");
413
+ target.setAttribute("data-theme", "dark");
414
+ } else {
415
+ target.classList.remove("theme-dark");
416
+ target.removeAttribute("data-theme");
417
+ }
418
+ target.style.cssText = "";
419
+ return;
420
+ }
421
+ let finalTheme;
422
+ const isCompleteTheme = theme.color?.text?.primary !== void 0 && theme.typography?.fontFamily?.base !== void 0 && theme.spacing?.sm !== void 0;
423
+ if (isCompleteTheme) {
424
+ finalTheme = theme;
425
+ } else {
426
+ finalTheme = mergeTheme(defaultTheme, theme);
427
+ }
428
+ target.classList.remove("theme-dark");
429
+ target.removeAttribute("data-theme");
430
+ const cssVars = generateCSSVars(finalTheme, {
431
+ prefix: "incremark",
432
+ selector: ""
433
+ // 空选择器,只生成变量声明
434
+ });
435
+ target.style.cssText = cssVars;
436
+ }
437
+
438
+ export { applyTheme, darkTheme, defaultTheme, generateCSSVars, mergeTheme };
439
+ //# sourceMappingURL=index.js.map
440
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/themes/default.ts","../src/themes/dark.ts","../src/utils/generate-css-vars.ts","../src/utils/merge-theme.ts","../src/utils/apply-theme.ts"],"names":["generateBrand"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * 默认主题值定义\n */\n\nimport type { DesignTokens } from '../tokens'\nimport { generateBrand } from '@incremark/colors'\n\n// 生成品牌色(蓝色系)\nconst brandColors = generateBrand('#3b82f6')\n\n// 中性色系列(微调后的颜色,与公司颜色有细微差异)\nconst neutralSeries = {\n 1: '#ffffff',\n 2: '#f8f9fc', // 稍微偏蓝一点\n 3: '#f1f3f8', // 稍微偏蓝\n 4: '#e2e5ec', // 稍微调整\n 5: '#cdd1da', // 稍微调整\n 6: '#9ca4b1', // 稍微调整\n 7: '#677284', // 稍微调整\n 8: '#34435a', // 稍微偏蓝\n 9: '#011431', // 稍微调整\n 10: '#01122d' // 稍微调整\n} as const;\n\n// 基础色系统(使用自动生成)\nconst baseBlue = generateBrand('#3b82f6')\nconst basePurple = generateBrand('#a855f7')\nconst baseGreen = generateBrand('#10b981')\nconst baseRed = generateBrand('#ef4444')\nconst baseOrange = generateBrand('#f97316')\nconst baseCyan = generateBrand('#06b6d4')\n\nexport const defaultTheme: DesignTokens = {\n // ============ 基础色系统 ============\n baseColors: {\n blue: {\n 1: baseBlue.palette[1],\n 2: baseBlue.palette[2],\n 3: baseBlue.palette[3],\n 4: baseBlue.palette[4],\n 5: baseBlue.palette[5],\n 6: baseBlue.palette[6], // 主色\n 7: baseBlue.palette[7],\n 8: baseBlue.palette[8],\n 9: baseBlue.palette[9],\n 10: baseBlue.palette[10]\n },\n purple: {\n 1: basePurple.palette[1],\n 2: basePurple.palette[2],\n 3: basePurple.palette[3],\n 4: basePurple.palette[4],\n 5: basePurple.palette[5],\n 6: basePurple.palette[6], // 主色\n 7: basePurple.palette[7],\n 8: basePurple.palette[8],\n 9: basePurple.palette[9],\n 10: basePurple.palette[10]\n },\n green: {\n 1: baseGreen.palette[1],\n 2: baseGreen.palette[2],\n 3: baseGreen.palette[3],\n 4: baseGreen.palette[4],\n 5: baseGreen.palette[5],\n 6: baseGreen.palette[6], // 主色\n 7: baseGreen.palette[7],\n 8: baseGreen.palette[8],\n 9: baseGreen.palette[9],\n 10: baseGreen.palette[10]\n },\n red: {\n 1: baseRed.palette[1],\n 2: baseRed.palette[2],\n 3: baseRed.palette[3],\n 4: baseRed.palette[4],\n 5: baseRed.palette[5],\n 6: baseRed.palette[6], // 主色\n 7: baseRed.palette[7],\n 8: baseRed.palette[8],\n 9: baseRed.palette[9],\n 10: baseRed.palette[10]\n },\n orange: {\n 1: baseOrange.palette[1],\n 2: baseOrange.palette[2],\n 3: baseOrange.palette[3],\n 4: baseOrange.palette[4],\n 5: baseOrange.palette[5],\n 6: baseOrange.palette[6], // 主色\n 7: baseOrange.palette[7],\n 8: baseOrange.palette[8],\n 9: baseOrange.palette[9],\n 10: baseOrange.palette[10]\n },\n cyan: {\n 1: baseCyan.palette[1],\n 2: baseCyan.palette[2],\n 3: baseCyan.palette[3],\n 4: baseCyan.palette[4],\n 5: baseCyan.palette[5],\n 6: baseCyan.palette[6], // 主色\n 7: baseCyan.palette[7],\n 8: baseCyan.palette[8],\n 9: baseCyan.palette[9],\n 10: baseCyan.palette[10]\n }\n },\n color: {\n // ============ Neutral 中性色系统 ============\n neutral: {\n 1: neutralSeries[1],\n 2: neutralSeries[2],\n 3: neutralSeries[3],\n 4: neutralSeries[4],\n 5: neutralSeries[5],\n 6: neutralSeries[6],\n 7: neutralSeries[7],\n 8: neutralSeries[8],\n 9: neutralSeries[9],\n 10: neutralSeries[10]\n },\n // ============ 品牌主题色(自动生成)============\n brand: {\n primary: brandColors.primary,\n primaryHover: brandColors.hover,\n primaryActive: brandColors.active,\n primaryLight: brandColors.light\n },\n // ============ 语义化颜色(基于 neutral) ============\n text: {\n primary: neutralSeries[8], // neutral-8\n secondary: neutralSeries[7], // neutral-7\n tertiary: neutralSeries[6], // neutral-6\n inverse: neutralSeries[1] // neutral-1\n },\n background: {\n base: neutralSeries[1], // neutral-1\n elevated: neutralSeries[2], // neutral-2\n overlay: 'rgba(1, 20, 49, 0.6)' // neutral-9 with alpha\n },\n border: {\n default: neutralSeries[4], // neutral-4 - 浅灰色边框\n subtle: neutralSeries[3], // neutral-3 - 极浅边框\n strong: neutralSeries[7] // neutral-7 - 深灰色边框\n },\n code: {\n inlineBackground: neutralSeries[3], // neutral-3 - 行内代码浅色背景\n inlineText: neutralSeries[8], // neutral-8 - 行内代码深色文本\n blockBackground: neutralSeries[9], // neutral-9 - 代码块深色背景\n blockText: neutralSeries[2], // neutral-2 - 代码块浅色文本\n headerBackground: neutralSeries[10] // neutral-10 - 代码块头部更深背景\n // border 使用通用的 border.strong,不单独定义\n },\n status: {\n pending: basePurple.palette[6], // 使用紫色系主色\n completed: baseGreen.palette[6] // 使用绿色系主色\n },\n // ============ 交互元素颜色 ============\n interactive: {\n link: brandColors.primary, // 使用品牌主色\n linkHover: brandColors.hover, // 使用 hover 变体\n linkVisited: basePurple.palette[7], // 使用紫色系深色表示访问过\n checked: baseGreen.palette[6] // 使用绿色系主色表示选中\n }\n },\n typography: {\n fontFamily: {\n base: \"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif\",\n mono: \"'Fira Code', 'SF Mono', 'Monaco', 'Consolas', monospace\"\n },\n fontSize: {\n xs: '11px',\n sm: '12px',\n base: '14px',\n md: '16px',\n lg: '18px',\n heading: {\n h1: '2em',\n h2: '1.5em',\n h3: '1.25em',\n h4: '1em',\n h5: '0.875em',\n h6: '0.85em'\n }\n },\n fontWeight: {\n normal: 400,\n medium: 500,\n semibold: 600,\n bold: 700\n },\n lineHeight: {\n tight: 1.25,\n normal: 1.5,\n relaxed: 1.75\n }\n },\n spacing: {\n xs: '4px',\n sm: '8px',\n md: '12px',\n lg: '16px',\n xl: '24px'\n },\n border: {\n radius: {\n sm: '4px',\n md: '8px',\n lg: '12px'\n }\n },\n shadow: {\n sm: '0 1px 2px rgba(0, 0, 0, 0.05)',\n md: '0 4px 6px rgba(0, 0, 0, 0.1)',\n lg: '0 10px 15px rgba(0, 0, 0, 0.1)'\n },\n animation: {\n duration: {\n fast: '150ms',\n normal: '200ms',\n slow: '300ms'\n },\n easing: {\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n easeOut: 'cubic-bezier(0, 0, 0.2, 1)'\n }\n }\n}\n\n","/**\n * 深色主题值定义\n */\n\nimport type { DesignTokens } from '../tokens'\nimport { defaultTheme } from './default'\nimport { generateBrand } from '@incremark/colors'\n\n// 生成暗色模式的品牌色(稍微调亮)\nconst darkBrandColors = generateBrand('#60a5fa')\n\n// 暗色模式基础色系统(稍微调亮)\nconst darkBasePurple = generateBrand('#c084fc')\nconst darkBaseGreen = generateBrand('#34d399')\n\n// 暗色模式中性色系列(反转后的颜色,增强 1-2 对比度)\nconst darkNeutralSeries = {\n 1: '#0a1628',\n 2: '#162033',\n 3: '#273548',\n 4: '#546070',\n 5: '#8891a0',\n 6: '#cdd1da',\n 7: '#e2e5ec',\n 8: '#f1f3f8',\n 9: '#f8f9fc',\n 10: '#ffffff'\n} as const\n\nexport const darkTheme: DesignTokens = {\n ...defaultTheme,\n // 继承亮色主题的基础色系统(baseColors 保持一致)\n baseColors: defaultTheme.baseColors,\n color: {\n // ============ Neutral 中性色系统(暗色模式反转) ============\n neutral: {\n 1: darkNeutralSeries[1],\n 2: darkNeutralSeries[2],\n 3: darkNeutralSeries[3],\n 4: darkNeutralSeries[4],\n 5: darkNeutralSeries[5],\n 6: darkNeutralSeries[6],\n 7: darkNeutralSeries[7],\n 8: darkNeutralSeries[8],\n 9: darkNeutralSeries[9],\n 10: darkNeutralSeries[10]\n },\n // ============ 品牌主题色(暗色模式自动生成)============\n brand: {\n primary: darkBrandColors.primary,\n primaryHover: darkBrandColors.hover,\n primaryActive: darkBrandColors.active,\n primaryLight: darkBrandColors.light\n },\n // ============ 语义化颜色 ============\n text: {\n primary: darkNeutralSeries[8], // neutral-8 (dark)\n secondary: darkNeutralSeries[7], // neutral-7 (dark)\n tertiary: darkNeutralSeries[6], // neutral-6 (dark)\n inverse: darkNeutralSeries[1] // neutral-1 (dark)\n },\n background: {\n base: darkNeutralSeries[1], // neutral-1 (dark)\n elevated: darkNeutralSeries[2], // neutral-2 (dark)\n overlay: 'rgba(0, 0, 0, 0.75)'\n },\n border: {\n subtle: darkNeutralSeries[3], // neutral-3 (dark) - 极浅边框\n default: darkNeutralSeries[4], // neutral-4 (dark) - 浅灰色边框\n strong: darkNeutralSeries[7] // neutral-7 (dark) - 深灰色边框\n },\n code: {\n inlineBackground: darkNeutralSeries[3], // neutral-3 (dark) - 行内代码适中暗色背景\n inlineText: darkNeutralSeries[8], // neutral-8 (dark) - 行内代码浅色文本\n blockBackground: darkNeutralSeries[3], // neutral-2 (dark) - 代码块深色背景\n blockText: darkNeutralSeries[9], // neutral-9 (dark) - 代码块极浅文本\n headerBackground: darkNeutralSeries[2] // neutral-2 (dark) - 代码块头部背景\n // border 使用通用的 border.strong,不单独定义\n },\n status: {\n pending: darkBasePurple.palette[6], // 使用暗色紫色系主色\n completed: darkBaseGreen.palette[6] // 使用暗色绿色系主色\n },\n // ============ 交互元素颜色 ============\n interactive: {\n link: darkBrandColors.primary, // 使用暗色品牌主色\n linkHover: darkBrandColors.hover, // 使用 hover 变体\n linkVisited: darkBasePurple.palette[4], // 使用暗色紫色系浅色\n checked: darkBaseGreen.palette[6] // 使用暗色绿色系主色\n }\n },\n // 其他 Token 继承自 defaultTheme\n typography: defaultTheme.typography,\n spacing: defaultTheme.spacing,\n border: defaultTheme.border,\n shadow: defaultTheme.shadow,\n animation: defaultTheme.animation\n}\n\n\n","/**\n * 从 Token 生成 CSS Variables\n */\n\nimport type { DesignTokens } from '../tokens'\n\nexport interface GenerateCSSVarsOptions {\n /** CSS Variables 前缀,默认 'incremark' */\n prefix?: string\n /** CSS 选择器,默认 ':root' */\n selector?: string\n}\n\n/**\n * 递归将对象转换为 CSS Variables\n */\nfunction objectToCSSVars(\n obj: Record<string, any>,\n prefix: string,\n result: string[] = []\n): void {\n for (const [key, value] of Object.entries(obj)) {\n const varName = prefix ? `${prefix}-${key}` : key\n const kebabKey = varName.replace(/([A-Z])/g, '-$1').toLowerCase()\n\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n // 递归处理嵌套对象\n objectToCSSVars(value, kebabKey, result)\n } else {\n // 叶子节点,生成 CSS Variable\n result.push(` --${kebabKey}: ${value};`)\n }\n }\n}\n\n/**\n * 从 DesignTokens 生成 CSS Variables 字符串\n * \n * @example\n * ```typescript\n * const cssVars = generateCSSVars(defaultTheme, {\n * prefix: 'incremark',\n * selector: ':root'\n * })\n * // 输出:\n * // :root {\n * // --incremark-color-text-primary: #1f2328;\n * // ...\n * // }\n * ```\n */\nexport function generateCSSVars(\n tokens: DesignTokens,\n options: GenerateCSSVarsOptions = {}\n): string {\n const { prefix = 'incremark', selector = ':root' } = options\n\n const vars: string[] = []\n objectToCSSVars(tokens, prefix, vars)\n\n if (vars.length === 0) {\n return selector ? `${selector} {}` : ''\n }\n\n // 如果选择器为空,只返回变量声明(用于 applyTheme)\n if (!selector) {\n return vars.join('\\n')\n }\n\n return `${selector} {\\n${vars.join('\\n')}\\n}`\n}\n\n","/**\n * 深度合并主题,支持部分替换\n */\n\nimport type { DesignTokens } from '../tokens'\n\n/**\n * 深度合并两个对象\n */\nfunction deepMerge<T extends Record<string, any>>(\n target: T,\n source: Partial<T>\n): T {\n const result = { ...target }\n\n for (const key in source) {\n if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) {\n // 递归合并嵌套对象\n result[key] = deepMerge(\n target[key] || ({} as any),\n source[key] as any\n )\n } else if (source[key] !== undefined) {\n // 直接覆盖\n result[key] = source[key] as any\n }\n }\n\n return result\n}\n\n/**\n * 合并主题,支持部分替换\n * \n * @example\n * ```typescript\n * const customTheme = mergeTheme(defaultTheme, {\n * color: {\n * text: {\n * primary: '#custom-color'\n * }\n * }\n * })\n * // 只替换 text.primary,其他保持默认值\n * ```\n */\nexport function mergeTheme(\n base: DesignTokens,\n override: Partial<DesignTokens>\n): DesignTokens {\n return deepMerge(base, override)\n}\n\n","/**\n * 应用主题到 DOM 元素\n */\n\nimport type { DesignTokens } from '../tokens'\nimport { generateCSSVars } from './generate-css-vars'\nimport { mergeTheme } from './merge-theme'\nimport { defaultTheme } from '../themes/default'\nimport { darkTheme } from '../themes/dark'\n\n/**\n * 应用主题到 DOM 元素\n *\n * @param element - 目标元素,默认为 document.documentElement\n * @param theme - 主题配置,可以是:\n * - 字符串:'default' | 'dark'\n * - 完整主题对象:DesignTokens\n * - 部分主题对象:Partial<DesignTokens>(会合并到默认主题)\n *\n * @example\n * ```typescript\n * // 使用预设主题(通过类名切换)\n * applyTheme(containerElement, 'dark') // 添加 .theme-dark 类\n * applyTheme(containerElement, 'default') // 移除 .theme-dark 类\n *\n * // 使用自定义主题(通过 inline style 设置 CSS 变量)\n * applyTheme(containerElement, {\n * color: {\n * brand: {\n * primary: '#8b5cf6'\n * }\n * }\n * })\n * ```\n */\nexport function applyTheme(\n element: HTMLElement | Document = document,\n theme: 'default' | 'dark' | DesignTokens | Partial<DesignTokens>\n): void {\n const target: HTMLElement = element === document ? document.documentElement : (element as HTMLElement)\n\n // 处理字符串主题名(使用类名切换)\n if (typeof theme === 'string') {\n if (theme === 'dark') {\n // 添加 dark 主题类名\n target.classList.add('theme-dark')\n target.setAttribute('data-theme', 'dark')\n } else {\n // 移除 dark 主题类名(回到默认主题)\n target.classList.remove('theme-dark')\n target.removeAttribute('data-theme')\n }\n target.style.cssText = \"\";\n return\n }\n\n // 处理主题对象(使用 inline style 设置 CSS 变量)\n let finalTheme: DesignTokens\n\n // 检查是否是完整主题(有所有必需字段)还是部分主题\n const isCompleteTheme =\n theme.color?.text?.primary !== undefined &&\n theme.typography?.fontFamily?.base !== undefined &&\n theme.spacing?.sm !== undefined\n\n if (isCompleteTheme) {\n finalTheme = theme as DesignTokens\n } else {\n // 部分主题,合并到默认主题\n finalTheme = mergeTheme(defaultTheme, theme)\n }\n\n // 移除预设主题类名(使用自定义主题时)\n target.classList.remove('theme-dark')\n target.removeAttribute('data-theme')\n\n // 生成 CSS Variables(不包含选择器)\n const cssVars = generateCSSVars(finalTheme, {\n prefix: 'incremark',\n selector: '' // 空选择器,只生成变量声明\n })\n\n target.style.cssText = cssVars;\n}\n"]}