@incremark/theme 0.4.0-alpha.1 → 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.
- package/dist/chat.css +149 -95
- package/dist/chat.css.map +1 -1
- package/dist/incremark.css +96 -45
- package/dist/incremark.css.map +1 -1
- package/dist/index.d.ts +13 -0
- package/dist/index.js +52 -9
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -7,6 +7,7 @@ var colorGreen = generateColorSystem("#10b981");
|
|
|
7
7
|
var colorRed = generateColorSystem("#ef4444");
|
|
8
8
|
var colorOrange = generateColorSystem("#f97316");
|
|
9
9
|
var colorCyan = generateColorSystem("#06b6d4");
|
|
10
|
+
var colorTeal = generateColorSystem("#0D9488");
|
|
10
11
|
var colorIndigo = generateColorSystem("#5776ff");
|
|
11
12
|
var neutralSeries = {
|
|
12
13
|
1: "#ffffff",
|
|
@@ -33,6 +34,7 @@ var defaultTheme = {
|
|
|
33
34
|
// ============ 基础色系统 ============
|
|
34
35
|
baseColors: {
|
|
35
36
|
blue: colorBlue,
|
|
37
|
+
teal: colorTeal,
|
|
36
38
|
purple: colorPurple,
|
|
37
39
|
green: colorGreen,
|
|
38
40
|
red: colorRed,
|
|
@@ -56,6 +58,16 @@ var defaultTheme = {
|
|
|
56
58
|
},
|
|
57
59
|
// ============ 品牌主题色(引用 indigo)============
|
|
58
60
|
brand: {
|
|
61
|
+
1: colorIndigo[1],
|
|
62
|
+
2: colorIndigo[2],
|
|
63
|
+
3: colorIndigo[3],
|
|
64
|
+
4: colorIndigo[4],
|
|
65
|
+
5: colorIndigo[5],
|
|
66
|
+
6: colorIndigo[6],
|
|
67
|
+
7: colorIndigo[7],
|
|
68
|
+
8: colorIndigo[8],
|
|
69
|
+
9: colorIndigo[9],
|
|
70
|
+
10: colorIndigo[10],
|
|
59
71
|
primary: colorIndigo.primary,
|
|
60
72
|
// indigo[6]
|
|
61
73
|
primaryHover: colorIndigo.hover,
|
|
@@ -97,12 +109,12 @@ var defaultTheme = {
|
|
|
97
109
|
// neutral-3 - 行内代码浅色背景
|
|
98
110
|
inlineText: neutralSeries[8],
|
|
99
111
|
// neutral-8 - 行内代码深色文本
|
|
100
|
-
blockBackground: neutralSeries[
|
|
101
|
-
// neutral-
|
|
102
|
-
blockText: neutralSeries[
|
|
103
|
-
// neutral-
|
|
104
|
-
headerBackground: neutralSeries[
|
|
105
|
-
// neutral-
|
|
112
|
+
blockBackground: neutralSeries[2],
|
|
113
|
+
// neutral-2 - 代码块浅色背景(配合 github-light Shiki 主题)
|
|
114
|
+
blockText: neutralSeries[9],
|
|
115
|
+
// neutral-9 - 代码块深色文本
|
|
116
|
+
headerBackground: neutralSeries[3]
|
|
117
|
+
// neutral-3 - 代码块头部稍深背景
|
|
106
118
|
// border 使用通用的 border.strong,不单独定义
|
|
107
119
|
},
|
|
108
120
|
status: {
|
|
@@ -231,6 +243,7 @@ var darkTheme = {
|
|
|
231
243
|
// ============ 基础色系统 ============
|
|
232
244
|
baseColors: {
|
|
233
245
|
blue: defaultTheme.baseColors.blue,
|
|
246
|
+
teal: defaultTheme.baseColors.teal,
|
|
234
247
|
indigo: darkColorIndigo,
|
|
235
248
|
purple: darkColorPurple,
|
|
236
249
|
green: darkColorGreen,
|
|
@@ -255,14 +268,24 @@ var darkTheme = {
|
|
|
255
268
|
},
|
|
256
269
|
// ============ 品牌主题色(暗色模式引用 indigo)============
|
|
257
270
|
brand: {
|
|
271
|
+
1: darkColorIndigo[1],
|
|
272
|
+
2: darkColorIndigo[2],
|
|
273
|
+
3: darkColorIndigo[3],
|
|
274
|
+
4: darkColorIndigo[4],
|
|
275
|
+
5: darkColorIndigo[5],
|
|
276
|
+
6: darkColorIndigo[6],
|
|
277
|
+
7: darkColorIndigo[7],
|
|
278
|
+
8: darkColorIndigo[8],
|
|
279
|
+
9: darkColorIndigo[9],
|
|
280
|
+
10: darkColorIndigo[10],
|
|
258
281
|
primary: darkColorIndigo.primary,
|
|
259
282
|
// indigo[6]
|
|
260
283
|
primaryHover: darkColorIndigo.hover,
|
|
261
284
|
// indigo[7]
|
|
262
285
|
primaryActive: darkColorIndigo.active,
|
|
263
286
|
// indigo[8]
|
|
264
|
-
primaryLight: darkColorIndigo
|
|
265
|
-
//
|
|
287
|
+
primaryLight: darkColorIndigo[9]
|
|
288
|
+
// 暗色模式用深色调
|
|
266
289
|
},
|
|
267
290
|
// ============ 语义化颜色 ============
|
|
268
291
|
text: {
|
|
@@ -337,6 +360,16 @@ function createTheme(brandColor) {
|
|
|
337
360
|
color: {
|
|
338
361
|
...defaultTheme.color,
|
|
339
362
|
brand: {
|
|
363
|
+
1: colorSystem[1],
|
|
364
|
+
2: colorSystem[2],
|
|
365
|
+
3: colorSystem[3],
|
|
366
|
+
4: colorSystem[4],
|
|
367
|
+
5: colorSystem[5],
|
|
368
|
+
6: colorSystem[6],
|
|
369
|
+
7: colorSystem[7],
|
|
370
|
+
8: colorSystem[8],
|
|
371
|
+
9: colorSystem[9],
|
|
372
|
+
10: colorSystem[10],
|
|
340
373
|
primary: colorSystem.primary,
|
|
341
374
|
primaryHover: colorSystem.hover,
|
|
342
375
|
primaryActive: colorSystem.active,
|
|
@@ -358,10 +391,20 @@ function createDarkTheme(brandColor) {
|
|
|
358
391
|
color: {
|
|
359
392
|
...darkTheme.color,
|
|
360
393
|
brand: {
|
|
394
|
+
1: defaultDarkColor[1],
|
|
395
|
+
2: defaultDarkColor[2],
|
|
396
|
+
3: defaultDarkColor[3],
|
|
397
|
+
4: defaultDarkColor[4],
|
|
398
|
+
5: defaultDarkColor[5],
|
|
399
|
+
6: defaultDarkColor[6],
|
|
400
|
+
7: defaultDarkColor[7],
|
|
401
|
+
8: defaultDarkColor[8],
|
|
402
|
+
9: defaultDarkColor[9],
|
|
403
|
+
10: defaultDarkColor[10],
|
|
361
404
|
primary: defaultDarkColor.primary,
|
|
362
405
|
primaryHover: defaultDarkColor.hover,
|
|
363
406
|
primaryActive: defaultDarkColor.active,
|
|
364
|
-
primaryLight: defaultDarkColor
|
|
407
|
+
primaryLight: defaultDarkColor[9]
|
|
365
408
|
},
|
|
366
409
|
interactive: {
|
|
367
410
|
...darkTheme.color.interactive,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/themes/default.ts","../src/themes/dark.ts","../src/themes/index.ts","../src/utils/generate-css-vars.ts","../src/utils/merge-theme.ts","../src/utils/apply-theme.ts"],"names":["generateColorSystem"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * 默认主题值定义\n */\n\nimport type { DesignTokens } from '../tokens'\nimport { generateColorSystem } from '@incremark/colors'\n\n// 生成完整的颜色系统(包含交互状态)\nconst colorBlue = generateColorSystem('#3b82f6')\nconst colorPurple = generateColorSystem('#a855f7')\nconst colorGreen = generateColorSystem('#10b981')\nconst colorRed = generateColorSystem('#ef4444')\nconst colorOrange = generateColorSystem('#f97316')\nconst colorCyan = generateColorSystem('#06b6d4')\nconst colorIndigo = generateColorSystem('#5776ff')\n\n// 中性色系列(调整后的颜色,增强对比度)\nconst neutralSeries = {\n 1: '#ffffff',\n 2: '#fafbfc', // 极浅背景\n 3: '#f3f4f6', // hover 背景(加深)\n 4: '#e5e7eb', // active/selected 背景(加深)\n 5: '#d1d5db', // 边框色(加深)\n 6: '#9ca3af', // 次要文字\n 7: '#6b7280', // 主要文字\n 8: '#374151', // 深色文字\n 9: '#1f2937', // 代码块背景\n 10: '#111827' // 最深色\n} as const;\n\nexport const defaultTheme: DesignTokens = {\n // ============ 基础色系统 ============\n baseColors: {\n blue: colorBlue,\n purple: colorPurple,\n green: colorGreen,\n red: colorRed,\n orange: colorOrange,\n cyan: colorCyan,\n indigo: colorIndigo\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 // ============ 品牌主题色(引用 indigo)============\n brand: {\n primary: colorIndigo.primary, // indigo[6]\n primaryHover: colorIndigo.hover, // indigo[7]\n primaryActive: colorIndigo.active, // indigo[8]\n primaryLight: colorIndigo.light // indigo[2]\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: colorPurple.primary, // 使用紫色系主色\n completed: colorGreen.primary // 使用绿色系主色\n },\n // ============ 交互元素颜色 ============\n interactive: {\n link: colorIndigo.primary, // 使用 indigo 主色\n linkHover: colorIndigo.hover, // 使用 indigo hover\n linkVisited: colorPurple.dark, // 使用紫色系深色表示访问过\n checked: colorGreen.primary // 使用绿色系主色表示选中\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: '12px',\n sm: '13px',\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 // 基础阴影(使用深蓝色基底,更有质感)\n sm: '0 2px 4px rgba(0, 19, 48, 0.06)',\n md: '0 2px 12px rgba(0, 19, 48, 0.08)',\n lg: '0 2px 16px rgba(0, 19, 48, 0.12)',\n center: '0 0 8px rgba(0, 19, 48, 0.08)',\n // 方向性阴影 - 一级(轻量)\n level1: {\n down: '0 2px 4px rgba(0, 19, 48, 0.06)',\n up: '0 -2px 4px rgba(0, 19, 48, 0.06)',\n left: '-2px 0 8px rgba(0, 19, 48, 0.06)',\n right: '2px 0 8px rgba(0, 19, 48, 0.06)'\n },\n // 方向性阴影 - 二级(中等)\n level2: {\n down: '0 2px 12px rgba(0, 19, 48, 0.08)',\n up: '0 -2px 12px rgba(0, 19, 48, 0.08)',\n left: '-2px 0 12px rgba(0, 19, 48, 0.08)',\n right: '2px 0 12px rgba(0, 19, 48, 0.08)'\n },\n // 方向性阴影 - 三级(强调)\n level3: {\n down: '0 2px 16px rgba(0, 19, 48, 0.12)',\n up: '0 -2px 16px rgba(0, 19, 48, 0.12)',\n left: '-2px 0 16px rgba(0, 19, 48, 0.12)',\n right: '2px 0 16px rgba(0, 19, 48, 0.12)'\n },\n // 品牌色卡片阴影\n brandCard: '0 2px 12px rgba(1, 69, 197, 0.12)'\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\nimport type { DesignTokens } from '../tokens'\nimport { defaultTheme } from './default'\nimport { generateColorSystem } from '@incremark/colors'\n\n// 生成暗色模式的颜色系统(稍微调亮)\nconst darkColorIndigo = generateColorSystem('#7D95FF')\nconst darkColorPurple = generateColorSystem('#c084fc')\nconst darkColorGreen = generateColorSystem('#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 // ============ 基础色系统 ============\n baseColors: {\n blue: defaultTheme.baseColors.blue,\n indigo: darkColorIndigo,\n purple: darkColorPurple,\n green: darkColorGreen,\n // 其他颜色继承默认主题\n red: defaultTheme.baseColors.red,\n orange: defaultTheme.baseColors.orange,\n cyan: defaultTheme.baseColors.cyan\n },\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 // ============ 品牌主题色(暗色模式引用 indigo)============\n brand: {\n primary: darkColorIndigo.primary, // indigo[6]\n primaryHover: darkColorIndigo.hover, // indigo[7]\n primaryActive: darkColorIndigo.active, // indigo[8]\n primaryLight: darkColorIndigo.light // indigo[2]\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: darkColorPurple.primary, // 使用暗色紫色系主色\n completed: darkColorGreen.primary // 使用暗色绿色系主色\n },\n // ============ 交互元素颜色 ============\n interactive: {\n link: darkColorIndigo.primary, // 使用暗色 indigo 主色\n linkHover: darkColorIndigo.hover, // 使用 hover 变体\n linkVisited: darkColorPurple.lighter, // 使用暗色紫色系浅色\n checked: darkColorGreen.primary // 使用暗色绿色系主色\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\nimport type { DesignTokens } from '../tokens'\nimport { generateColorSystem } from '@incremark/colors'\nimport { defaultTheme as baseDefaultTheme } from './default'\nimport { darkTheme as baseDarkTheme } from './dark'\n\n/**\n * 创建自定义主题\n *\n * @param brandColor 品牌主色(hex 格式),如果不提供则使用默认的 indigo\n * @returns 自定义主题\n *\n * @example\n * ```typescript\n * // 使用默认主题(indigo)\n * import { defaultTheme } from '@incremark/theme'\n *\n * // 自定义品牌色\n * import { createTheme } from '@incremark/theme'\n * const purpleTheme = createTheme('#a855f7')\n *\n * // 运行时切换\n * const myTheme = createTheme(userSettings.brandColor)\n * ```\n */\nexport function createTheme(brandColor?: string): DesignTokens {\n // 如果没有提供颜色,使用默认的 indigo(从 defaultTheme 中获取)\n const colorSystem = brandColor\n ? generateColorSystem(brandColor)\n : baseDefaultTheme.baseColors.indigo\n\n return {\n ...baseDefaultTheme,\n color: {\n ...baseDefaultTheme.color,\n brand: {\n primary: colorSystem.primary,\n primaryHover: colorSystem.hover,\n primaryActive: colorSystem.active,\n primaryLight: colorSystem.light\n },\n // 同步更新 link 颜色\n interactive: {\n ...baseDefaultTheme.color.interactive,\n link: colorSystem.primary,\n linkHover: colorSystem.hover\n }\n }\n }\n}\n\n/**\n * 创建深色主题\n *\n * @param brandColor 品牌主色(hex 格式),如果不提供则使用默认的较亮 indigo\n * @returns 深色主题\n */\nexport function createDarkTheme(brandColor?: string): DesignTokens {\n // 深色模式默认使用较亮的品牌色\n const defaultDarkColor = brandColor\n ? generateColorSystem(brandColor)\n : baseDarkTheme.baseColors.indigo\n\n return {\n ...baseDarkTheme,\n color: {\n ...baseDarkTheme.color,\n brand: {\n primary: defaultDarkColor.primary,\n primaryHover: defaultDarkColor.hover,\n primaryActive: defaultDarkColor.active,\n primaryLight: defaultDarkColor.light\n },\n interactive: {\n ...baseDarkTheme.color.interactive,\n link: defaultDarkColor.primary,\n linkHover: defaultDarkColor.hover\n }\n }\n }\n}\n\n// 导出默认主题(indigo)\nexport { defaultTheme } from './default'\n\n// 导出深色主题(indigo)\nexport { darkTheme } from './dark'\n\n// 导出类型\nexport type { DesignTokens } from '../tokens'\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"]}
|
|
1
|
+
{"version":3,"sources":["../src/themes/default.ts","../src/themes/dark.ts","../src/themes/index.ts","../src/utils/generate-css-vars.ts","../src/utils/merge-theme.ts","../src/utils/apply-theme.ts"],"names":["generateColorSystem"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * 默认主题值定义\n */\n\nimport type { DesignTokens } from '../tokens'\nimport { generateColorSystem } from '@incremark/colors'\n\n// 生成完整的颜色系统(包含交互状态)\nconst colorBlue = generateColorSystem('#3b82f6')\nconst colorPurple = generateColorSystem('#a855f7')\nconst colorGreen = generateColorSystem('#10b981')\nconst colorRed = generateColorSystem('#ef4444')\nconst colorOrange = generateColorSystem('#f97316')\nconst colorCyan = generateColorSystem('#06b6d4')\nconst colorTeal = generateColorSystem('#0D9488')\nconst colorIndigo = generateColorSystem('#5776ff')\n\n// 中性色系列(调整后的颜色,增强对比度)\nconst neutralSeries = {\n 1: '#ffffff',\n 2: '#fafbfc', // 极浅背景\n 3: '#f3f4f6', // hover 背景(加深)\n 4: '#e5e7eb', // active/selected 背景(加深)\n 5: '#d1d5db', // 边框色(加深)\n 6: '#9ca3af', // 次要文字\n 7: '#6b7280', // 主要文字\n 8: '#374151', // 深色文字\n 9: '#1f2937', // 代码块背景\n 10: '#111827' // 最深色\n} as const;\n\nexport const defaultTheme: DesignTokens = {\n // ============ 基础色系统 ============\n baseColors: {\n blue: colorBlue,\n teal: colorTeal,\n purple: colorPurple,\n green: colorGreen,\n red: colorRed,\n orange: colorOrange,\n cyan: colorCyan,\n indigo: colorIndigo\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 // ============ 品牌主题色(引用 indigo)============\n brand: {\n 1: colorIndigo[1],\n 2: colorIndigo[2],\n 3: colorIndigo[3],\n 4: colorIndigo[4],\n 5: colorIndigo[5],\n 6: colorIndigo[6],\n 7: colorIndigo[7],\n 8: colorIndigo[8],\n 9: colorIndigo[9],\n 10: colorIndigo[10],\n primary: colorIndigo.primary, // indigo[6]\n primaryHover: colorIndigo.hover, // indigo[7]\n primaryActive: colorIndigo.active, // indigo[8]\n primaryLight: colorIndigo.light // indigo[2]\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[2], // neutral-2 - 代码块浅色背景(配合 github-light Shiki 主题)\n blockText: neutralSeries[9], // neutral-9 - 代码块深色文本\n headerBackground: neutralSeries[3] // neutral-3 - 代码块头部稍深背景\n // border 使用通用的 border.strong,不单独定义\n },\n status: {\n pending: colorPurple.primary, // 使用紫色系主色\n completed: colorGreen.primary // 使用绿色系主色\n },\n // ============ 交互元素颜色 ============\n interactive: {\n link: colorIndigo.primary, // 使用 indigo 主色\n linkHover: colorIndigo.hover, // 使用 indigo hover\n linkVisited: colorPurple.dark, // 使用紫色系深色表示访问过\n checked: colorGreen.primary // 使用绿色系主色表示选中\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: '12px',\n sm: '13px',\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 // 基础阴影(使用深蓝色基底,更有质感)\n sm: '0 2px 4px rgba(0, 19, 48, 0.06)',\n md: '0 2px 12px rgba(0, 19, 48, 0.08)',\n lg: '0 2px 16px rgba(0, 19, 48, 0.12)',\n center: '0 0 8px rgba(0, 19, 48, 0.08)',\n // 方向性阴影 - 一级(轻量)\n level1: {\n down: '0 2px 4px rgba(0, 19, 48, 0.06)',\n up: '0 -2px 4px rgba(0, 19, 48, 0.06)',\n left: '-2px 0 8px rgba(0, 19, 48, 0.06)',\n right: '2px 0 8px rgba(0, 19, 48, 0.06)'\n },\n // 方向性阴影 - 二级(中等)\n level2: {\n down: '0 2px 12px rgba(0, 19, 48, 0.08)',\n up: '0 -2px 12px rgba(0, 19, 48, 0.08)',\n left: '-2px 0 12px rgba(0, 19, 48, 0.08)',\n right: '2px 0 12px rgba(0, 19, 48, 0.08)'\n },\n // 方向性阴影 - 三级(强调)\n level3: {\n down: '0 2px 16px rgba(0, 19, 48, 0.12)',\n up: '0 -2px 16px rgba(0, 19, 48, 0.12)',\n left: '-2px 0 16px rgba(0, 19, 48, 0.12)',\n right: '2px 0 16px rgba(0, 19, 48, 0.12)'\n },\n // 品牌色卡片阴影\n brandCard: '0 2px 12px rgba(1, 69, 197, 0.12)'\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\nimport type { DesignTokens } from '../tokens'\nimport { defaultTheme } from './default'\nimport { generateColorSystem } from '@incremark/colors'\n\n// 生成暗色模式的颜色系统(稍微调亮)\nconst darkColorIndigo = generateColorSystem('#7D95FF')\nconst darkColorPurple = generateColorSystem('#c084fc')\nconst darkColorGreen = generateColorSystem('#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 // ============ 基础色系统 ============\n baseColors: {\n blue: defaultTheme.baseColors.blue,\n teal: defaultTheme.baseColors.teal,\n indigo: darkColorIndigo,\n purple: darkColorPurple,\n green: darkColorGreen,\n // 其他颜色继承默认主题\n red: defaultTheme.baseColors.red,\n orange: defaultTheme.baseColors.orange,\n cyan: defaultTheme.baseColors.cyan\n },\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 // ============ 品牌主题色(暗色模式引用 indigo)============\n brand: {\n 1: darkColorIndigo[1],\n 2: darkColorIndigo[2],\n 3: darkColorIndigo[3],\n 4: darkColorIndigo[4],\n 5: darkColorIndigo[5],\n 6: darkColorIndigo[6],\n 7: darkColorIndigo[7],\n 8: darkColorIndigo[8],\n 9: darkColorIndigo[9],\n 10: darkColorIndigo[10],\n primary: darkColorIndigo.primary, // indigo[6]\n primaryHover: darkColorIndigo.hover, // indigo[7]\n primaryActive: darkColorIndigo.active, // indigo[8]\n primaryLight: darkColorIndigo[9] // 暗色模式用深色调\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: darkColorPurple.primary, // 使用暗色紫色系主色\n completed: darkColorGreen.primary // 使用暗色绿色系主色\n },\n // ============ 交互元素颜色 ============\n interactive: {\n link: darkColorIndigo.primary, // 使用暗色 indigo 主色\n linkHover: darkColorIndigo.hover, // 使用 hover 变体\n linkVisited: darkColorPurple.lighter, // 使用暗色紫色系浅色\n checked: darkColorGreen.primary // 使用暗色绿色系主色\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\nimport type { DesignTokens } from '../tokens'\nimport { generateColorSystem } from '@incremark/colors'\nimport { defaultTheme as baseDefaultTheme } from './default'\nimport { darkTheme as baseDarkTheme } from './dark'\n\n/**\n * 创建自定义主题\n *\n * @param brandColor 品牌主色(hex 格式),如果不提供则使用默认的 indigo\n * @returns 自定义主题\n *\n * @example\n * ```typescript\n * // 使用默认主题(indigo)\n * import { defaultTheme } from '@incremark/theme'\n *\n * // 自定义品牌色\n * import { createTheme } from '@incremark/theme'\n * const purpleTheme = createTheme('#a855f7')\n *\n * // 运行时切换\n * const myTheme = createTheme(userSettings.brandColor)\n * ```\n */\nexport function createTheme(brandColor?: string): DesignTokens {\n // 如果没有提供颜色,使用默认的 indigo(从 defaultTheme 中获取)\n const colorSystem = brandColor\n ? generateColorSystem(brandColor)\n : baseDefaultTheme.baseColors.indigo\n\n return {\n ...baseDefaultTheme,\n color: {\n ...baseDefaultTheme.color,\n brand: {\n 1: colorSystem[1],\n 2: colorSystem[2],\n 3: colorSystem[3],\n 4: colorSystem[4],\n 5: colorSystem[5],\n 6: colorSystem[6],\n 7: colorSystem[7],\n 8: colorSystem[8],\n 9: colorSystem[9],\n 10: colorSystem[10],\n primary: colorSystem.primary,\n primaryHover: colorSystem.hover,\n primaryActive: colorSystem.active,\n primaryLight: colorSystem.light\n },\n // 同步更新 link 颜色\n interactive: {\n ...baseDefaultTheme.color.interactive,\n link: colorSystem.primary,\n linkHover: colorSystem.hover\n }\n }\n }\n}\n\n/**\n * 创建深色主题\n *\n * @param brandColor 品牌主色(hex 格式),如果不提供则使用默认的较亮 indigo\n * @returns 深色主题\n */\nexport function createDarkTheme(brandColor?: string): DesignTokens {\n // 深色模式默认使用较亮的品牌色\n const defaultDarkColor = brandColor\n ? generateColorSystem(brandColor)\n : baseDarkTheme.baseColors.indigo\n\n return {\n ...baseDarkTheme,\n color: {\n ...baseDarkTheme.color,\n brand: {\n 1: defaultDarkColor[1],\n 2: defaultDarkColor[2],\n 3: defaultDarkColor[3],\n 4: defaultDarkColor[4],\n 5: defaultDarkColor[5],\n 6: defaultDarkColor[6],\n 7: defaultDarkColor[7],\n 8: defaultDarkColor[8],\n 9: defaultDarkColor[9],\n 10: defaultDarkColor[10],\n primary: defaultDarkColor.primary,\n primaryHover: defaultDarkColor.hover,\n primaryActive: defaultDarkColor.active,\n primaryLight: defaultDarkColor[9]\n },\n interactive: {\n ...baseDarkTheme.color.interactive,\n link: defaultDarkColor.primary,\n linkHover: defaultDarkColor.hover\n }\n }\n }\n}\n\n// 导出默认主题(indigo)\nexport { defaultTheme } from './default'\n\n// 导出深色主题(indigo)\nexport { darkTheme } from './dark'\n\n// 导出类型\nexport type { DesignTokens } from '../tokens'\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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@incremark/theme",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Incremark theme package - Unified design tokens and styling system for markdown rendering.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"typescript": "^5.9.3"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@incremark/colors": "0.
|
|
28
|
+
"@incremark/colors": "1.0.0"
|
|
29
29
|
},
|
|
30
30
|
"keywords": [
|
|
31
31
|
"incremark",
|