@lemonppt/themes 0.2.0 → 0.2.2

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.
@@ -0,0 +1,286 @@
1
+ // lemonPPT - AI-powered presentation generation
2
+ // Copyright (c) 2026 lemonforme
3
+ // SPDX-License-Identifier: AGPL-3.0-or-later
4
+ /**
5
+ * 黑金实验风色板(原创设计,非复制 third-party)。
6
+ * primary:深黑底 + 荧光金高饱和点缀,强发布会海报感。
7
+ * muted:象牙暖白底 + 古铜金强调,保持黑金调性的可读浅色外观。
8
+ */
9
+ const obsidianGoldPalette = {
10
+ accent: '#FFD23F',
11
+ accent2: '#FF2D9B',
12
+ accentCool: '#2BD2FF',
13
+ };
14
+ /** 浅色模式专用装饰亮金(用于辉光/渐变/条形等非文字元素) */
15
+ const LIGHT_ACCENT_BRIGHT = '#E8B633';
16
+ /** 浅色模式主强调古铜金(WCAG AA 正文达标) */
17
+ const LIGHT_ACCENT_READABLE = '#8F6608';
18
+ function buildTokenCatalog(appearance = 'primary') {
19
+ const isPrimary = appearance === 'primary';
20
+ return {
21
+ id: 'theme08',
22
+ displayName: 'Theme 08',
23
+ description: '黑金实验风,深黑底荧光金与高饱和点缀,适合高端发布、品牌提案与实验性概念表达',
24
+ colors: {
25
+ ink: isPrimary ? '#F7F4EA' : '#1A1812',
26
+ ink2: isPrimary ? 'rgba(247, 244, 234, 0.74)' : 'rgba(26, 24, 18, 0.85)',
27
+ ink3: isPrimary ? 'rgba(247, 244, 234, 0.58)' : 'rgba(26, 24, 18, 0.68)',
28
+ textInverse: isPrimary ? '#14130D' : '#FBFAF4',
29
+ accent: isPrimary ? obsidianGoldPalette.accent : LIGHT_ACCENT_READABLE,
30
+ accent2: isPrimary ? obsidianGoldPalette.accent2 : '#C41B7A',
31
+ accentCool: isPrimary ? obsidianGoldPalette.accentCool : '#0E8FA8',
32
+ red: isPrimary ? '#FF4D4D' : '#C0392B',
33
+ orange: isPrimary ? '#FF9F1C' : '#C25E00',
34
+ amber: isPrimary ? '#FFC400' : '#B45309',
35
+ yellow: isPrimary ? '#FFE34D' : '#9A7B00',
36
+ teal: isPrimary ? '#2BE0C0' : '#0B7A85',
37
+ green: isPrimary ? '#3DDC84' : '#15803D',
38
+ cyan: isPrimary ? '#2BD2FF' : '#0E8FA8',
39
+ blue: isPrimary ? '#4D9FFF' : '#0E6FB8',
40
+ indigo: isPrimary ? '#7C6BFF' : '#4338CA',
41
+ violet: isPrimary ? '#B98CFF' : '#7C3AED',
42
+ purple: isPrimary ? '#C44DFF' : '#9333EA',
43
+ series: isPrimary
44
+ ? [obsidianGoldPalette.accent, obsidianGoldPalette.accent2, obsidianGoldPalette.accentCool, '#B98CFF', '#3DDC84', '#FF9F1C']
45
+ : [LIGHT_ACCENT_READABLE, '#C41B7A', '#0E8FA8', '#7C3AED', '#15803D', '#C25E00'],
46
+ background: isPrimary ? '#14130D' : '#FDFBF4',
47
+ backgroundGradientStart: isPrimary ? '#1C1A12' : '#FAF7EE',
48
+ backgroundGradientEnd: isPrimary ? '#0C0B07' : '#F5F0E4',
49
+ surface: isPrimary ? 'rgba(255, 210, 63, 0.06)' : 'rgba(143, 102, 8, 0.05)',
50
+ surfaceStrong: isPrimary ? 'rgba(255, 210, 63, 0.10)' : 'rgba(143, 102, 8, 0.08)',
51
+ surfaceSolid: isPrimary ? '#211F17' : '#FFFFFF',
52
+ surfaceElevated: isPrimary ? '#2C281E' : '#FFFFFF',
53
+ border: isPrimary ? 'rgba(255, 210, 63, 0.20)' : 'rgba(26, 24, 18, 0.10)',
54
+ borderStrong: isPrimary ? 'rgba(255, 210, 63, 0.40)' : 'rgba(26, 24, 18, 0.16)',
55
+ shadow: isPrimary ? '0 24px 60px rgba(0, 0, 0, 0.55)' : '0 24px 60px rgba(20, 19, 13, 0.12)',
56
+ shadowSmall: isPrimary ? '0 8px 24px rgba(0, 0, 0, 0.45)' : '0 8px 24px rgba(20, 19, 13, 0.06)',
57
+ nodeBg: isPrimary ? '#211F17' : '#FFFFFF',
58
+ nodeBorder: isPrimary ? 'rgba(255, 210, 63, 0.30)' : 'rgba(26, 24, 18, 0.14)',
59
+ edge: isPrimary ? 'rgba(255, 210, 63, 0.28)' : 'rgba(26, 24, 18, 0.18)',
60
+ focusGlow: isPrimary ? 'rgba(255, 210, 63, 0.45)' : 'rgba(143, 102, 8, 0.22)',
61
+ panelLine: isPrimary ? 'rgba(255, 210, 63, 0.14)' : 'rgba(26, 24, 18, 0.08)',
62
+ accentBright: isPrimary ? obsidianGoldPalette.accent : LIGHT_ACCENT_BRIGHT,
63
+ inversePanel: isPrimary ? '#14130D' : '#FFFFFF',
64
+ inversePanelInk: isPrimary ? '#F7F4EA' : '#1A1812',
65
+ },
66
+ fonts: {
67
+ heading: '"Noto Sans SC", system-ui, sans-serif',
68
+ body: '"Noto Sans SC", system-ui, sans-serif',
69
+ mono: '"JetBrains Mono", ui-monospace, monospace',
70
+ en: '"Anton", "Noto Sans SC", sans-serif',
71
+ },
72
+ spacing: {
73
+ pagePadding: '56px',
74
+ sectionGap: '32px',
75
+ elementGap: '14px',
76
+ padTop: '76px',
77
+ padBottom: '64px',
78
+ cardPaddingLarge: '32px 36px',
79
+ cardPaddingMedium: '22px 24px',
80
+ },
81
+ borderRadius: {
82
+ small: '6px',
83
+ medium: '10px',
84
+ large: '14px',
85
+ },
86
+ fontSize: {
87
+ display: '88px',
88
+ displaySmall: '64px',
89
+ h1: '48px',
90
+ h2: '34px',
91
+ h3: '24px',
92
+ body: '18px',
93
+ bodySmall: '15px',
94
+ caption: '13px',
95
+ },
96
+ effect: {
97
+ riseDistance: '14px',
98
+ riseDuration: '0.5s',
99
+ },
100
+ };
101
+ }
102
+ export const theme08Tokens = buildTokenCatalog('primary');
103
+ export function getTheme08Tokens(appearance = 'primary') {
104
+ return buildTokenCatalog(appearance);
105
+ }
106
+ function makeCssTokens(appearance = 'primary') {
107
+ const tokens = buildTokenCatalog(appearance);
108
+ const isPrimary = appearance === 'primary';
109
+ return {
110
+ ink: tokens.colors.ink,
111
+ ink2: tokens.colors.ink2,
112
+ ink3: tokens.colors.ink3,
113
+ textInverse: tokens.colors.textInverse,
114
+ accent: tokens.colors.accent,
115
+ accent2: tokens.colors.accent2,
116
+ accentCool: tokens.colors.accentCool,
117
+ red: tokens.colors.red,
118
+ orange: tokens.colors.orange,
119
+ amber: tokens.colors.amber,
120
+ yellow: tokens.colors.yellow,
121
+ teal: tokens.colors.teal,
122
+ green: tokens.colors.green,
123
+ cyan: tokens.colors.cyan,
124
+ blue: tokens.colors.blue,
125
+ indigo: tokens.colors.indigo,
126
+ violet: tokens.colors.violet,
127
+ purple: tokens.colors.purple,
128
+ series: tokens.colors.series,
129
+ bg: tokens.colors.background,
130
+ bgGradientStart: tokens.colors.backgroundGradientStart,
131
+ bgGradientEnd: tokens.colors.backgroundGradientEnd,
132
+ surface: tokens.colors.surface,
133
+ surfaceStrong: tokens.colors.surfaceStrong,
134
+ surfaceSolid: tokens.colors.surfaceSolid,
135
+ surfaceElevated: tokens.colors.surfaceElevated,
136
+ border: tokens.colors.border,
137
+ borderStrong: tokens.colors.borderStrong,
138
+ shadow: tokens.colors.shadow,
139
+ shadowSm: tokens.colors.shadowSmall,
140
+ shadowInset: isPrimary ? '0 1px 0 rgba(255, 255, 255, 0.08) inset' : '0 1px 0 rgba(0, 0, 0, 0.04) inset',
141
+ overlay: isPrimary ? 'rgba(255, 255, 255, 0.04)' : 'rgba(0, 0, 0, 0.02)',
142
+ overlayStrong: isPrimary ? 'rgba(255, 255, 255, 0.08)' : 'rgba(0, 0, 0, 0.04)',
143
+ divider: isPrimary ? 'rgba(255, 210, 63, 0.16)' : 'rgba(26, 24, 18, 0.08)',
144
+ scrim: isPrimary ? 'rgba(0, 0, 0, 0.55)' : 'rgba(255, 255, 255, 0.55)',
145
+ imageOverlay: isPrimary
146
+ ? 'linear-gradient(180deg, rgba(20, 19, 13, 0.72) 0%, rgba(20, 19, 13, 0.92) 100%)'
147
+ : 'linear-gradient(180deg, rgba(237, 234, 244, 0.72) 0%, rgba(237, 234, 244, 0.92) 100%)',
148
+ shadowRgb: isPrimary ? '0, 0, 0' : '26, 24, 18',
149
+ stroke: isPrimary ? 'rgba(255, 210, 63, 0.20)' : 'rgba(26, 24, 18, 0.10)',
150
+ whiteAlpha80: 'rgba(255, 255, 255, 0.8)',
151
+ whiteAlpha85: 'rgba(255, 255, 255, 0.85)',
152
+ whiteAlpha90: 'rgba(255, 255, 255, 0.9)',
153
+ nodeBg: tokens.colors.nodeBg,
154
+ nodeBorder: tokens.colors.nodeBorder,
155
+ edge: tokens.colors.edge,
156
+ focusGlow: tokens.colors.focusGlow,
157
+ panelLine: tokens.colors.panelLine,
158
+ accentBright: tokens.colors.accentBright,
159
+ inversePanel: tokens.colors.inversePanel,
160
+ inversePanelInk: tokens.colors.inversePanelInk,
161
+ font: tokens.fonts.body,
162
+ fontMono: tokens.fonts.mono,
163
+ fontHeading: tokens.fonts.heading,
164
+ radiusSmall: tokens.borderRadius.small,
165
+ radiusMedium: tokens.borderRadius.medium,
166
+ radiusLarge: tokens.borderRadius.large,
167
+ };
168
+ }
169
+ function buildCssVarsFromTokens(tokens) {
170
+ return `
171
+ --lp-ink: ${tokens.ink};
172
+ --lp-ink2: ${tokens.ink2};
173
+ --lp-ink3: ${tokens.ink3};
174
+ --lp-text-inverse: ${tokens.textInverse};
175
+ --lp-accent: ${tokens.accent};
176
+ --lp-accent-2: ${tokens.accent2};
177
+ --lp-accent-cool: ${tokens.accentCool};
178
+ --lp-red: ${tokens.red};
179
+ --lp-orange: ${tokens.orange};
180
+ --lp-amber: ${tokens.amber};
181
+ --lp-yellow: ${tokens.yellow};
182
+ --lp-teal: ${tokens.teal};
183
+ --lp-green: ${tokens.green};
184
+ --lp-cyan: ${tokens.cyan};
185
+ --lp-blue: ${tokens.blue};
186
+ --lp-indigo: ${tokens.indigo};
187
+ --lp-violet: ${tokens.violet};
188
+ --lp-purple: ${tokens.purple};
189
+ --lp-series-1: ${tokens.series[0]};
190
+ --lp-series-2: ${tokens.series[1]};
191
+ --lp-series-3: ${tokens.series[2]};
192
+ --lp-series-4: ${tokens.series[3]};
193
+ --lp-series-5: ${tokens.series[4]};
194
+ --lp-series-6: ${tokens.series[5]};
195
+ --lp-bg: ${tokens.bg};
196
+ --lp-bg-gradient-start: ${tokens.bgGradientStart};
197
+ --lp-bg-gradient-end: ${tokens.bgGradientEnd};
198
+ --lp-surface: ${tokens.surface};
199
+ --lp-surface-strong: ${tokens.surfaceStrong};
200
+ --lp-surface-solid: ${tokens.surfaceSolid};
201
+ --lp-surface-elevated: ${tokens.surfaceElevated};
202
+ --lp-border: ${tokens.border};
203
+ --lp-border-strong: ${tokens.borderStrong};
204
+ --lp-shadow: ${tokens.shadow};
205
+ --lp-shadow-sm: ${tokens.shadowSm};
206
+ --lp-shadow-inset: ${tokens.shadowInset};
207
+ --lp-overlay: ${tokens.overlay};
208
+ --lp-overlay-strong: ${tokens.overlayStrong};
209
+ --lp-divider: ${tokens.divider};
210
+ --lp-scrim: ${tokens.scrim};
211
+ --lp-image-overlay: ${tokens.imageOverlay};
212
+ --lp-shadow-rgb: ${tokens.shadowRgb};
213
+ --lp-stroke: ${tokens.stroke};
214
+ --lp-white-alpha-80: ${tokens.whiteAlpha80};
215
+ --lp-white-alpha-85: ${tokens.whiteAlpha85};
216
+ --lp-white-alpha-90: ${tokens.whiteAlpha90};
217
+ --lp-node-bg: ${tokens.nodeBg};
218
+ --lp-node-border: ${tokens.nodeBorder};
219
+ --lp-edge: ${tokens.edge};
220
+ --lp-focus-glow: ${tokens.focusGlow};
221
+ --lp-panel-line: ${tokens.panelLine};
222
+ --lp-accent-bright: ${tokens.accentBright};
223
+ --lp-inverse-panel: ${tokens.inversePanel};
224
+ --lp-inverse-panel-ink: ${tokens.inversePanelInk};
225
+ --lp-font: ${tokens.font};
226
+ --lp-font-mono: ${tokens.fontMono};
227
+ --lp-font-heading: ${tokens.fontHeading};
228
+ --lp-radius-small: ${tokens.radiusSmall};
229
+ --lp-radius-medium: ${tokens.radiusMedium};
230
+ --lp-radius-large: ${tokens.radiusLarge};
231
+ --lp-radius-lg: ${tokens.radiusLarge};
232
+ --lp-font-size-display: ${theme08Tokens.fontSize.display};
233
+ --lp-font-size-display-small: ${theme08Tokens.fontSize.displaySmall};
234
+ --lp-font-size-h1: ${theme08Tokens.fontSize.h1};
235
+ --lp-font-size-h2: ${theme08Tokens.fontSize.h2};
236
+ --lp-font-size-h3: ${theme08Tokens.fontSize.h3};
237
+ --lp-font-size-body: ${theme08Tokens.fontSize.body};
238
+ --lp-font-size-body-small: ${theme08Tokens.fontSize.bodySmall};
239
+ --lp-font-size-caption: ${theme08Tokens.fontSize.caption};
240
+ /* theme08 常用布局别名 */
241
+ --lp-card-border: var(--lp-border);
242
+ --lp-card-radius: var(--lp-radius-large);
243
+ --lp-card-surface: var(--lp-surface-solid);
244
+ --lp-card-accent: color-mix(in srgb, var(--lp-accent) 14%, transparent);
245
+ --lp-card-accent-border: var(--lp-accent);
246
+ --lp-on-accent: var(--lp-text-inverse);
247
+ --lp-on-accent-soft: color-mix(in srgb, var(--lp-text-inverse) 72%, transparent);
248
+ --lp-error: var(--lp-red);
249
+ --lp-warning: var(--lp-amber);
250
+ --lp-success: var(--lp-green);
251
+ --lp-font-size-hero: var(--lp-font-size-display-small);
252
+ --lp-font-size-hero-small: var(--lp-font-size-h1);
253
+ --lp-font-size-subtitle: var(--lp-font-size-h3);
254
+ --lp-font-size-small: var(--lp-font-size-body-small);
255
+ --lp-font-display: "Anton", "Noto Sans SC", sans-serif;
256
+ `;
257
+ }
258
+ export function generateTheme08CssVariables(appearance = 'primary') {
259
+ const tokens = makeCssTokens(appearance);
260
+ return `:root {\n${buildCssVarsFromTokens(tokens)}\n}`;
261
+ }
262
+ export function generateTheme08CssVariablesWithAppearance() {
263
+ return generateTheme08CssVariables('primary');
264
+ }
265
+ /**
266
+ * 生成包含 primary + muted 双外观的完整 CSS 变量块,通过 data-appearance 切换。
267
+ * 同时提供 light/dark 别名(编辑器浅色/深色按钮使用)。
268
+ */
269
+ export function generateTheme08CssVariablesWithSchemesAndAppearance() {
270
+ const appearances = ['primary', 'muted'];
271
+ const blocks = [];
272
+ for (const appearance of appearances) {
273
+ if (appearance === 'primary') {
274
+ blocks.push(`:root[data-theme="obsidian-gold"] {\n${buildCssVarsFromTokens(makeCssTokens('primary'))}\n}`);
275
+ blocks.push(`:root[data-appearance="primary"][data-theme="obsidian-gold"] {\n${buildCssVarsFromTokens(makeCssTokens('primary'))}\n}`);
276
+ }
277
+ else {
278
+ blocks.push(`:root[data-appearance="muted"][data-theme="obsidian-gold"] {\n${buildCssVarsFromTokens(makeCssTokens('muted'))}\n}`);
279
+ }
280
+ }
281
+ /* light/dark 别名(与编辑器按钮 data-appearance 值对齐) */
282
+ blocks.push(`:root[data-appearance="light"][data-theme="obsidian-gold"] {\n${buildCssVarsFromTokens(makeCssTokens('muted'))}\n}`);
283
+ blocks.push(`:root[data-appearance="dark"][data-theme="obsidian-gold"] {\n${buildCssVarsFromTokens(makeCssTokens('primary'))}\n}`);
284
+ return blocks.join('\n');
285
+ }
286
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/theme08/tokens.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * ⚠️ 渲染真源(SOURCE OF TRUTH)⚠️
3
+ * renderer 经 @lemonppt/templates 实际调用本文件。
4
+ * 镜像副本 `packages/themes/src/theme09/tokens.ts` 仅供 getTheme() 元数据使用。
5
+ * 改配色请先改本文件,再同步:
6
+ * cp packages/templates/src/themes/theme09/tokens.ts packages/themes/src/theme09/tokens.ts
7
+ *
8
+ * theme09 设计 Token。
9
+ * 风格:墨韵专色风 / Ink Rhythm · Spot-Color Editorial。
10
+ *
11
+ * ── 核心创新:双基底(substrate)──
12
+ * 不同于其他主题的「单一底色 + 明暗翻转」,theme09 为每个版式**预分配基底**:
13
+ * paper 纸底 #F4F1EA —— 数据、表格、正文密集页(64 个版式)
14
+ * ink 墨底 #14161C —— 影像、章节、金句、跨页(47 个版式)
15
+ * 翻页时形成杂志跨页的呼吸节奏。两套基底各有完整令牌组,专色在墨底上提亮
16
+ * 饱和度以维持视觉重量一致(朱砂 #C8102E → #F04A62)。
17
+ *
18
+ * appearance(primary / muted)不翻转明暗,只调整**专色浓度与网点密度**。
19
+ *
20
+ * 所有色值、类名、装饰语汇均为原创,不复制 third-party theme09 的实现、
21
+ * 色值(#46e3c6 / #4a86ff 等)、类名(bg-deep / bg-blue 等)与 --acl- 前缀。
22
+ */
23
+ export type Theme09Appearance = 'primary' | 'muted';
24
+ export type Theme09Substrate = 'paper' | 'ink';
25
+ export interface Theme09Tokens {
26
+ id: string;
27
+ displayName: string;
28
+ description: string;
29
+ colors: {
30
+ ink: string;
31
+ ink2: string;
32
+ ink3: string;
33
+ textInverse: string;
34
+ accent: string;
35
+ accent2: string;
36
+ accentCool: string;
37
+ red: string;
38
+ orange: string;
39
+ amber: string;
40
+ yellow: string;
41
+ teal: string;
42
+ green: string;
43
+ cyan: string;
44
+ blue: string;
45
+ indigo: string;
46
+ violet: string;
47
+ purple: string;
48
+ series: readonly string[];
49
+ background: string;
50
+ backgroundGradientStart: string;
51
+ backgroundGradientEnd: string;
52
+ surface: string;
53
+ surfaceStrong: string;
54
+ surfaceSolid: string;
55
+ surfaceElevated: string;
56
+ border: string;
57
+ borderStrong: string;
58
+ shadow: string;
59
+ shadowSmall: string;
60
+ nodeBg: string;
61
+ nodeBorder: string;
62
+ edge: string;
63
+ focusGlow: string;
64
+ panelLine: string;
65
+ accentBright: string;
66
+ inversePanel: string;
67
+ inversePanelInk: string;
68
+ /** 栏线(杂志细分栏线) */
69
+ rule: string;
70
+ /** 强栏线(题头下方的粗规线) */
71
+ ruleStrong: string;
72
+ /** 网点半调基色 */
73
+ halftone: string;
74
+ /** 纸纤维 / 墨面噪点 */
75
+ grain: string;
76
+ };
77
+ fonts: {
78
+ heading: string;
79
+ body: string;
80
+ mono: string;
81
+ en: string;
82
+ hand: string;
83
+ };
84
+ spacing: {
85
+ pagePadding: string;
86
+ sectionGap: string;
87
+ elementGap: string;
88
+ padTop: string;
89
+ padBottom: string;
90
+ cardPaddingLarge: string;
91
+ cardPaddingMedium: string;
92
+ };
93
+ borderRadius: {
94
+ small: string;
95
+ medium: string;
96
+ large: string;
97
+ };
98
+ fontSize: {
99
+ display: string;
100
+ displaySmall: string;
101
+ h1: string;
102
+ h2: string;
103
+ h3: string;
104
+ body: string;
105
+ bodySmall: string;
106
+ caption: string;
107
+ };
108
+ effect: {
109
+ riseDistance: string;
110
+ riseDuration: string;
111
+ };
112
+ }
113
+ export declare const theme09Tokens: Theme09Tokens;
114
+ export declare function getTheme09Tokens(substrate?: Theme09Substrate, appearance?: Theme09Appearance): Theme09Tokens;
115
+ /**
116
+ * 生成 theme09 完整 CSS 变量块。
117
+ *
118
+ * 层叠顺序(必须保持 paper 在前、ink 在后,否则墨底会被纸底覆盖):
119
+ * 1. :root 兜底(未设 data-theme 的场景,如画廊/快照)
120
+ * 2. [data-theme] 兜底(未设 data-appearance)
121
+ * 3. [data-appearance="primary"]
122
+ * 4. [data-appearance="muted"]
123
+ * 每组内:paper(.lp-theme09)→ ink(.lp-theme09-sub-ink)
124
+ */
125
+ export declare function generateTheme09CssVariablesWithSchemesAndAppearance(): string;
126
+ export declare function generateTheme09CssVariables(substrate?: Theme09Substrate, appearance?: Theme09Appearance): string;
127
+ export declare function generateTheme09CssVariablesWithAppearance(): string;
128
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/theme09/tokens.ts"],"names":[],"mappings":"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"}