@bytechain.cn/colamd-themes 0.3.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/.claude/skills/colamd-themes-preview.skill.md +333 -0
  2. package/.claude/skills/colamd-themes.skill.md +10 -0
  3. package/.dsh/skills/colamd-themes/SKILL.md +14 -0
  4. package/.github/supported-topics.yml +17 -0
  5. package/.hermes/skills/tools/colamd-themes/SKILL.md +14 -0
  6. package/.openclaw/skills/colamd-themes/SKILL.md +1 -146
  7. package/.opencode/skills/colamd-themes/SKILL.md +17 -0
  8. package/.trae/rules/colamd-themes.md +0 -145
  9. package/CHANGELOG.md +318 -240
  10. package/DSH_SUPPORT_SUMMARY.md +87 -0
  11. package/README.md +414 -384
  12. package/README_CN.md +412 -384
  13. package/RELEASENOTE.md +541 -365
  14. package/bytechain.cn-colamd-themes-0.5.0.tgz +0 -0
  15. package/dist/cli.js +272 -32
  16. package/dist/cli.js.map +1 -1
  17. package/dist/color-utils.d.ts +1 -0
  18. package/dist/color-utils.js +25 -6
  19. package/dist/color-utils.js.map +1 -1
  20. package/dist/extractors/pdf-extractor.js +6 -1
  21. package/dist/extractors/pdf-extractor.js.map +1 -1
  22. package/dist/extractors/url-extractor.d.ts +0 -4
  23. package/dist/extractors/url-extractor.js +13 -126
  24. package/dist/extractors/url-extractor.js.map +1 -1
  25. package/dist/generator.d.ts +1 -1
  26. package/dist/generator.js +32 -11
  27. package/dist/generator.js.map +1 -1
  28. package/dist/models.d.ts +5 -4
  29. package/dist/models.js +2 -3
  30. package/dist/models.js.map +1 -1
  31. package/dist/renderer.d.ts +4 -2
  32. package/dist/renderer.js +68 -25
  33. package/dist/renderer.js.map +1 -1
  34. package/dist/templates/template.css +220 -498
  35. package/dist/templates/theme-paradigm.md +530 -658
  36. package/dist/templates/theme-template.hbs +256 -370
  37. package/dist/theme-store.js +19 -3
  38. package/dist/theme-store.js.map +1 -1
  39. package/dist/utils/document-paradigm.d.ts +12 -0
  40. package/dist/utils/document-paradigm.js +109 -0
  41. package/dist/utils/document-paradigm.js.map +1 -0
  42. package/dist/validators.d.ts +4 -1
  43. package/dist/validators.js +115 -1
  44. package/dist/validators.js.map +1 -1
  45. package/mcp-server/dist/index.d.ts +13 -0
  46. package/mcp-server/dist/index.d.ts.map +1 -0
  47. package/mcp-server/dist/index.js +0 -0
  48. package/mcp-server/dist/index.js.map +1 -0
  49. package/mcp-server/package-lock.json +1759 -0
  50. package/mcp-server/package.json +24 -0
  51. package/mcp-server/src/index.ts +0 -0
  52. package/mcp-server/tsconfig.json +19 -0
  53. package/package.json +54 -36
  54. package/skills/build-skills.sh +30 -5
  55. package/skills/colamd-themes/SKILL.md +180 -148
  56. package/src/cli.ts +474 -217
  57. package/src/color-systems.ts +289 -289
  58. package/src/color-utils.ts +137 -120
  59. package/src/contrast.ts +66 -66
  60. package/src/docx-style-paradigm.ts +811 -811
  61. package/src/export-cli.ts +356 -356
  62. package/src/extractors/base.ts +8 -8
  63. package/src/extractors/docx-extractor.ts +417 -417
  64. package/src/extractors/pdf-extractor.ts +533 -527
  65. package/src/extractors/url-extractor.ts +846 -981
  66. package/src/generator.ts +197 -169
  67. package/src/index.ts +29 -29
  68. package/src/models.ts +212 -212
  69. package/src/renderer.ts +332 -288
  70. package/src/templates/template.css +220 -498
  71. package/src/templates/theme-paradigm.md +530 -658
  72. package/src/templates/theme-template.hbs +256 -370
  73. package/src/theme-store.ts +185 -170
  74. package/src/types/pdf-parse.d.ts +12 -12
  75. package/src/utils/cli-utils.ts +84 -84
  76. package/src/utils/document-paradigm.ts +118 -0
  77. package/src/validators.ts +298 -176
  78. package/themes/academic-paper-pt.css +353 -1805
  79. package/themes/academic-paper.css +350 -1099
  80. package/themes/academic-style.css +342 -2430
  81. package/themes/colly.css +256 -370
  82. package/themes/elegant.css +288 -671
  83. package/themes/forest-ink.css +240 -664
  84. package/themes/guizang.css +250 -732
  85. package/themes/hermes-security.css +279 -0
  86. package/themes/meeting-minutes.css +256 -370
  87. package/themes/pixso-design.css +278 -1261
  88. package/themes/salvator-blog.css +256 -370
  89. package/themes/shimo-theme.css +256 -0
  90. package/themes/swiss-design.css +285 -746
  91. package/themes/template.css +220 -498
  92. package/themes/trae-blue.css +280 -737
  93. package/themes/word-contract.css +249 -0
  94. package/themes-preview/demo-content.md +187 -187
  95. package/tsconfig.json +18 -18
  96. package/src/mermaid-presets.ts +0 -142
  97. package/themes/swiss-design copy.css +0 -746
  98. package/themes-preview/colly-preview.html +0 -623
  99. package/themes-preview/meeting-minutes-preview.html +0 -625
  100. package/themes-preview/salvator-blog-preview.html +0 -623
package/src/models.ts CHANGED
@@ -1,212 +1,212 @@
1
- /** Theme style data models — v3.0 Seed Palette paradigm. */
2
-
3
- // ═══════════════════════════════════════════════════════════
4
- // Legacy model (kept for extractor compatibility)
5
- // ═══════════════════════════════════════════════════════════
6
-
7
- export interface ColorPalette {
8
- bgColor: string;
9
- textColor: string;
10
- headingColor: string;
11
- borderColor: string;
12
- accentColor: string;
13
- codeBg: string;
14
- codeColor: string;
15
- codeBlockBg: string;
16
- codeBlockText: string;
17
- blockquoteBg: string;
18
- blockquoteBorder: string;
19
- tableHeaderBg: string;
20
- selectionBg: string;
21
- textMuted: string;
22
- }
23
-
24
- export interface Typography {
25
- bodyFontFamily: string;
26
- headingFontFamily: string;
27
- codeFontFamily: string;
28
- baseFontSize: string;
29
- baseLineHeight: number;
30
- headingWeight: number;
31
- }
32
-
33
- export interface Spacing {
34
- contentMaxWidth: string;
35
- contentPadding: string;
36
- paragraphMargin: string;
37
- headingMarginTop: string;
38
- headingMarginBottom: string;
39
- }
40
-
41
- export interface SyntaxHighlighting {
42
- comment: string;
43
- punctuation: string;
44
- keyword: string;
45
- booleanBuiltinTag: string;
46
- string: string;
47
- number: string;
48
- functionClass: string;
49
- operator: string;
50
- variable: string;
51
- regex: string;
52
- }
53
-
54
- // ═══════════════════════════════════════════════════════════
55
- // v3.0 Seed Palette model
56
- // ═══════════════════════════════════════════════════════════
57
-
58
- export interface SeedPalette {
59
- accent: string;
60
- accentLight: string;
61
- accentDark: string;
62
- surface: string;
63
- panel: string;
64
- panelAlt: string;
65
- ink: string;
66
- inkMuted: string;
67
- inkDim: string;
68
- border: string;
69
- borderStrong: string;
70
- }
71
-
72
- export interface SeedTypography {
73
- fontBody: string;
74
- fontHeading: string;
75
- fontCode: string;
76
- fontMermaid: string;
77
- fontSizeRoot: string; // e.g. "16px"
78
- fontScaleH1: number;
79
- fontScaleH2: number;
80
- fontScaleH3: number;
81
- fontScaleH4: number;
82
- fontScaleH5: number;
83
- fontScaleH6: number;
84
- fontSizeMermaid: string;
85
- lineHeightBody: number;
86
- lineHeightHeading: number;
87
- lineHeightCode: number;
88
- }
89
-
90
- export interface ThemeStyle {
91
- name: string;
92
- description: string;
93
- /** Legacy — populated by extractors, then mapped to seed */
94
- palette: ColorPalette;
95
- typography: Typography;
96
- spacing: Spacing;
97
- syntax: SyntaxHighlighting;
98
- /** v3.0 seed palette */
99
- seed: SeedPalette;
100
- seedTypography: SeedTypography;
101
- /** Selected presets */
102
- colorSystemId: string;
103
- mermaidPresetId: string;
104
- /** Metadata */
105
- sourceUrl: string;
106
- sourceType: string;
107
- /** Computed radius and width */
108
- radiusSm: string;
109
- radiusMd: string;
110
- radiusLg: string;
111
- contentWidth: string;
112
- }
113
-
114
- // ═══════════════════════════════════════════════════════════
115
- // Defaults
116
- // ═══════════════════════════════════════════════════════════
117
-
118
- export function defaultPalette(): ColorPalette {
119
- return {
120
- bgColor: "#ffffff", textColor: "#000000", headingColor: "",
121
- borderColor: "#cccccc", accentColor: "#0000ff", codeBg: "#f5f5f5",
122
- codeColor: "", codeBlockBg: "#1e1e1e", codeBlockText: "#d4d4d4",
123
- blockquoteBg: "#f9f9f9", blockquoteBorder: "",
124
- tableHeaderBg: "#f0f0f0", selectionBg: "", textMuted: "#666666",
125
- };
126
- }
127
-
128
- export function defaultTypography(): Typography {
129
- return {
130
- bodyFontFamily: "Georgia, serif", headingFontFamily: "",
131
- codeFontFamily: "'JetBrains Mono', 'Fira Code', monospace",
132
- baseFontSize: "16px", baseLineHeight: 1.9, headingWeight: 700,
133
- };
134
- }
135
-
136
- export function defaultSpacing(): Spacing {
137
- return {
138
- contentMaxWidth: "820px", contentPadding: "30px 60px 100px",
139
- paragraphMargin: "0.8em 0", headingMarginTop: "1.8em",
140
- headingMarginBottom: "0.6em",
141
- };
142
- }
143
-
144
- export function defaultSyntax(): SyntaxHighlighting {
145
- return { comment: "", punctuation: "", keyword: "", booleanBuiltinTag: "",
146
- string: "", number: "", functionClass: "", operator: "", variable: "", regex: "" };
147
- }
148
-
149
- export function defaultSeedPalette(): SeedPalette {
150
- return {
151
- accent: "#6366f1", accentLight: "#eef2ff", accentDark: "#4f46e5",
152
- surface: "#ffffff", panel: "#f8f9fb", panelAlt: "#f1f3f5",
153
- ink: "#1a1d26", inkMuted: "#6b7280", inkDim: "#9ca3af",
154
- border: "#e5e7eb", borderStrong: "#d1d5db",
155
- };
156
- }
157
-
158
- export function defaultSeedTypography(): SeedTypography {
159
- return {
160
- fontBody: `"Inter", "SF Pro Text", -apple-system, "Noto Serif SC", "Source Han Serif SC", Georgia, serif`,
161
- fontHeading: `"Inter", "SF Pro Display", -apple-system, "Noto Sans SC", "PingFang SC", sans-serif`,
162
- fontCode: `"JetBrains Mono", "SF Mono", "Fira Code", Menlo, Consolas, monospace`,
163
- fontMermaid: `var(--font-heading)`,
164
- fontSizeRoot: "16px",
165
- fontScaleH1: 2.0, fontScaleH2: 1.5, fontScaleH3: 1.25,
166
- fontScaleH4: 1.1, fontScaleH5: 1.0, fontScaleH6: 0.95,
167
- fontSizeMermaid: "13px",
168
- lineHeightBody: 1.75, lineHeightHeading: 1.35, lineHeightCode: 1.6,
169
- };
170
- }
171
-
172
- // ═══════════════════════════════════════════════════════════
173
- // Factory
174
- // ═══════════════════════════════════════════════════════════
175
-
176
- export function makeThemeStyle(name: string, sourceType: string, sourceUrl: string): ThemeStyle {
177
- return {
178
- name,
179
- description: `Theme extracted from ${sourceType}`,
180
- palette: defaultPalette(),
181
- typography: defaultTypography(),
182
- spacing: defaultSpacing(),
183
- syntax: defaultSyntax(),
184
- seed: defaultSeedPalette(),
185
- seedTypography: defaultSeedTypography(),
186
- colorSystemId: "",
187
- mermaidPresetId: "",
188
- sourceUrl,
189
- sourceType,
190
- radiusSm: "3px",
191
- radiusMd: "6px",
192
- radiusLg: "10px",
193
- contentWidth: "820px",
194
- };
195
- }
196
-
197
- /** Map legacy ColorPalette to SeedPalette. */
198
- export function paletteToSeed(palette: ColorPalette): SeedPalette {
199
- return {
200
- accent: palette.accentColor,
201
- accentLight: palette.selectionBg || palette.accentColor,
202
- accentDark: palette.accentColor,
203
- surface: palette.bgColor,
204
- panel: palette.codeBg,
205
- panelAlt: palette.codeBlockBg,
206
- ink: palette.textColor,
207
- inkMuted: palette.textMuted,
208
- inkDim: palette.textMuted,
209
- border: palette.borderColor,
210
- borderStrong: palette.borderColor,
211
- };
212
- }
1
+ /** Theme style data models — v4.0 Seed Palette paradigm (ColaMD 2.7.7 contract). */
2
+
3
+ // ═══════════════════════════════════════════════════════════
4
+ // Legacy model (kept for extractor compatibility)
5
+ // ═══════════════════════════════════════════════════════════
6
+
7
+ export interface ColorPalette {
8
+ bgColor: string;
9
+ textColor: string;
10
+ headingColor: string;
11
+ borderColor: string;
12
+ accentColor: string;
13
+ codeBg: string;
14
+ codeColor: string;
15
+ codeBlockBg: string;
16
+ codeBlockText: string;
17
+ blockquoteBg: string;
18
+ blockquoteBorder: string;
19
+ tableHeaderBg: string;
20
+ selectionBg: string;
21
+ textMuted: string;
22
+ }
23
+
24
+ export interface Typography {
25
+ bodyFontFamily: string;
26
+ headingFontFamily: string;
27
+ codeFontFamily: string;
28
+ baseFontSize: string;
29
+ baseLineHeight: number;
30
+ headingWeight: number;
31
+ }
32
+
33
+ export interface Spacing {
34
+ contentMaxWidth: string;
35
+ contentPadding: string;
36
+ paragraphMargin: string;
37
+ headingMarginTop: string;
38
+ headingMarginBottom: string;
39
+ }
40
+
41
+ export interface SyntaxHighlighting {
42
+ comment: string;
43
+ punctuation: string;
44
+ keyword: string;
45
+ booleanBuiltinTag: string;
46
+ string: string;
47
+ number: string;
48
+ functionClass: string;
49
+ operator: string;
50
+ variable: string;
51
+ regex: string;
52
+ }
53
+
54
+ // ═══════════════════════════════════════════════════════════
55
+ // 2.7 Seed Palette model
56
+ // ═══════════════════════════════════════════════════════════
57
+
58
+ export interface SeedPalette {
59
+ accent: string;
60
+ accentLight: string;
61
+ accentDark: string;
62
+ surface: string;
63
+ panel: string;
64
+ panelAlt: string;
65
+ ink: string;
66
+ inkMuted: string;
67
+ inkDim: string;
68
+ border: string;
69
+ borderStrong: string;
70
+ }
71
+
72
+ export interface SeedTypography {
73
+ fontBody: string;
74
+ fontHeading: string;
75
+ fontCode: string;
76
+ /** @deprecated 2.7 起图表改用 Pele,Mermaid 字段仅为提取器兼容保留 */
77
+ fontMermaid: string;
78
+ fontSizeRoot: string; // e.g. "16px"
79
+ fontScaleH1: number;
80
+ fontScaleH2: number;
81
+ fontScaleH3: number;
82
+ fontScaleH4: number;
83
+ fontScaleH5: number;
84
+ fontScaleH6: number;
85
+ /** @deprecated 2.7 起图表改用 Pele */
86
+ fontSizeMermaid: string;
87
+ lineHeightBody: number;
88
+ lineHeightHeading: number;
89
+ lineHeightCode: number;
90
+ }
91
+
92
+ export interface ThemeStyle {
93
+ name: string;
94
+ description: string;
95
+ /** Legacy — populated by extractors, then mapped to seed */
96
+ palette: ColorPalette;
97
+ typography: Typography;
98
+ spacing: Spacing;
99
+ syntax: SyntaxHighlighting;
100
+ /** 2.7 seed palette */
101
+ seed: SeedPalette;
102
+ seedTypography: SeedTypography;
103
+ /** Selected color system */
104
+ colorSystemId: string;
105
+ /** Metadata */
106
+ sourceUrl: string;
107
+ sourceType: string;
108
+ /** Computed radius and width */
109
+ radiusSm: string;
110
+ radiusMd: string;
111
+ radiusLg: string;
112
+ contentWidth: string;
113
+ }
114
+
115
+ // ═══════════════════════════════════════════════════════════
116
+ // Defaults
117
+ // ═══════════════════════════════════════════════════════════
118
+
119
+ export function defaultPalette(): ColorPalette {
120
+ return {
121
+ bgColor: "#ffffff", textColor: "#000000", headingColor: "",
122
+ borderColor: "#cccccc", accentColor: "#0000ff", codeBg: "#f5f5f5",
123
+ codeColor: "", codeBlockBg: "#1e1e1e", codeBlockText: "#d4d4d4",
124
+ blockquoteBg: "#f9f9f9", blockquoteBorder: "",
125
+ tableHeaderBg: "#f0f0f0", selectionBg: "", textMuted: "#666666",
126
+ };
127
+ }
128
+
129
+ export function defaultTypography(): Typography {
130
+ return {
131
+ bodyFontFamily: "Georgia, serif", headingFontFamily: "",
132
+ codeFontFamily: "'JetBrains Mono', 'Fira Code', monospace",
133
+ baseFontSize: "16px", baseLineHeight: 1.9, headingWeight: 700,
134
+ };
135
+ }
136
+
137
+ export function defaultSpacing(): Spacing {
138
+ return {
139
+ contentMaxWidth: "820px", contentPadding: "30px 60px 100px",
140
+ paragraphMargin: "0.8em 0", headingMarginTop: "1.8em",
141
+ headingMarginBottom: "0.6em",
142
+ };
143
+ }
144
+
145
+ export function defaultSyntax(): SyntaxHighlighting {
146
+ return { comment: "", punctuation: "", keyword: "", booleanBuiltinTag: "",
147
+ string: "", number: "", functionClass: "", operator: "", variable: "", regex: "" };
148
+ }
149
+
150
+ export function defaultSeedPalette(): SeedPalette {
151
+ return {
152
+ accent: "#6366f1", accentLight: "#eef2ff", accentDark: "#4f46e5",
153
+ surface: "#ffffff", panel: "#f8f9fb", panelAlt: "#f1f3f5",
154
+ ink: "#1a1d26", inkMuted: "#6b7280", inkDim: "#9ca3af",
155
+ border: "#e5e7eb", borderStrong: "#d1d5db",
156
+ };
157
+ }
158
+
159
+ export function defaultSeedTypography(): SeedTypography {
160
+ return {
161
+ fontBody: `"Inter", "SF Pro Text", -apple-system, "Noto Serif SC", "Source Han Serif SC", Georgia, serif`,
162
+ fontHeading: `"Inter", "SF Pro Display", -apple-system, "Noto Sans SC", "PingFang SC", sans-serif`,
163
+ fontCode: `"JetBrains Mono", "SF Mono", "Fira Code", Menlo, Consolas, monospace`,
164
+ fontMermaid: `var(--font-body)`,
165
+ fontSizeRoot: "16px",
166
+ fontScaleH1: 2.0, fontScaleH2: 1.5, fontScaleH3: 1.25,
167
+ fontScaleH4: 1.1, fontScaleH5: 1.0, fontScaleH6: 0.95,
168
+ fontSizeMermaid: "13px",
169
+ lineHeightBody: 1.75, lineHeightHeading: 1.35, lineHeightCode: 1.6,
170
+ };
171
+ }
172
+
173
+ // ═══════════════════════════════════════════════════════════
174
+ // Factory
175
+ // ═══════════════════════════════════════════════════════════
176
+
177
+ export function makeThemeStyle(name: string, sourceType: string, sourceUrl: string): ThemeStyle {
178
+ return {
179
+ name,
180
+ description: `Theme extracted from ${sourceType}`,
181
+ palette: defaultPalette(),
182
+ typography: defaultTypography(),
183
+ spacing: defaultSpacing(),
184
+ syntax: defaultSyntax(),
185
+ seed: defaultSeedPalette(),
186
+ seedTypography: defaultSeedTypography(),
187
+ colorSystemId: "",
188
+ sourceUrl,
189
+ sourceType,
190
+ radiusSm: "3px",
191
+ radiusMd: "6px",
192
+ radiusLg: "10px",
193
+ contentWidth: "820px",
194
+ };
195
+ }
196
+
197
+ /** Map legacy ColorPalette to SeedPalette. */
198
+ export function paletteToSeed(palette: ColorPalette): SeedPalette {
199
+ return {
200
+ accent: palette.accentColor,
201
+ accentLight: palette.selectionBg || palette.accentColor,
202
+ accentDark: palette.accentColor,
203
+ surface: palette.bgColor,
204
+ panel: palette.codeBg,
205
+ panelAlt: palette.codeBlockBg,
206
+ ink: palette.textColor,
207
+ inkMuted: palette.textMuted,
208
+ inkDim: palette.textMuted,
209
+ border: palette.borderColor,
210
+ borderStrong: palette.borderColor,
211
+ };
212
+ }