@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,334 @@
1
+ // lemonPPT - AI-powered presentation generation
2
+ // Copyright (c) 2026 lemonforme
3
+ // SPDX-License-Identifier: AGPL-3.0-or-later
4
+ /* ────────────────────────────────────────────────────────────────
5
+ * 专色系统(原创印刷专色,全部经 WCAG 2.1 AA 预校验)
6
+ *
7
+ * 纸底 #F4F1EA 上(相对亮度 0.881):
8
+ * 朱砂 #C8102E → 5.22:1 ✅ 靛青 #2B4A8B → 7.58:1 ✅
9
+ * 芥黄 #7A5410 → 5.1:1 ✅ 石绿 #355C4E → 4.8:1 ✅
10
+ * 墨底 #14161C 上(相对亮度 0.008):
11
+ * 朱砂 #F47A93 → 7.2:1 ✅ 靛青 #7E9BC8 → 6.3:1 ✅
12
+ * 芥黄 #D9A83C → 8.2:1 ✅ 石绿 #6FA894 → 6.56:1 ✅
13
+ * 注:组件常把专色落于「比基底更深的芯片」(#3D2530/#30222C/#24262E/#31333A),
14
+ * 故墨底 vermilion/indigo 已提亮、ink3 已提亮至 #BCB9B1 以保 ≥4.5:1。
15
+ * ──────────────────────────────────────────────────────────────── */
16
+ /** 纸底专色 —— 浓墨重彩档(primary)
17
+ * 注:sienna/mustard/celadon 已压深一档,确保落在浅纸芯片(#F0E6DC/#EEE7DA/#D7DDD5)上 ≥4.5:1 */
18
+ const PAPER_SPOT = {
19
+ vermilion: '#C8102E', // 专色主:朱砂
20
+ indigo: '#2B4A8B', // 专色次:靛青
21
+ mustard: '#7A5410', // 点缀:芥黄(压深,浅底 ≥5.1:1)
22
+ celadon: '#355C4E', // 点缀:石绿(压深,浅底 ≥4.8:1)
23
+ plum: '#6D4C7D', // 序列五:紫棠
24
+ sienna: '#97491C', // 序列六:赭石(压深,浅底 ≥5.0:1)
25
+ };
26
+ /** 纸底专色 —— 淡墨档(muted,降饱和不降明度差) */
27
+ const PAPER_SPOT_MUTED = {
28
+ vermilion: '#9C2233',
29
+ indigo: '#3C5580',
30
+ mustard: '#6A4810',
31
+ celadon: '#2F5044',
32
+ plum: '#61496D',
33
+ sienna: '#83431C',
34
+ };
35
+ /** 墨底专色 —— 提亮档(primary)
36
+ * 注:vermilion/indigo 已提亮,确保落在最深芯片(#3D2530/#1B1E26)上 ≥4.5:1 */
37
+ const INK_SPOT = {
38
+ vermilion: '#F47A93', // 朱砂提亮(#F04A62 → #F47A93,深芯片 ≥5.4:1)
39
+ indigo: '#7E9BC8', // 靛青提亮(#5B82D6 → #7E9BC8,≥6.3:1)
40
+ mustard: '#D9A83C',
41
+ celadon: '#6FA894',
42
+ plum: '#A98BC4',
43
+ sienna: '#E08A5B',
44
+ };
45
+ /** 墨底专色 —— 柔和档(muted) */
46
+ const INK_SPOT_MUTED = {
47
+ vermilion: '#E08A9C',
48
+ indigo: '#7E9BC8',
49
+ mustard: '#C0A068',
50
+ celadon: '#8AAFA0',
51
+ plum: '#B0A0C4',
52
+ sienna: '#CE9878',
53
+ };
54
+ /** 纸底墨色阶 */
55
+ const PAPER_BASE = {
56
+ bg: '#F4F1EA',
57
+ bgStart: '#F8F6F0',
58
+ bgEnd: '#EDE9DE',
59
+ ink: '#14161C',
60
+ ink2: '#3A3F4A',
61
+ ink3: '#5C6270',
62
+ inverse: '#F8F6F0',
63
+ rgb: '20, 22, 28',
64
+ };
65
+ /** 墨底墨色阶 */
66
+ const INK_BASE = {
67
+ bg: '#14161C',
68
+ bgStart: '#1B1E26',
69
+ bgEnd: '#0D0F14',
70
+ ink: '#F4F1EA',
71
+ ink2: '#C9C6BE',
72
+ ink3: '#BCB9B1', // 提亮(#8E8B84 → #BCB9B1,深芯片 ≥4.9:1)
73
+ inverse: '#14161C',
74
+ rgb: '244, 241, 234',
75
+ };
76
+ function spotOf(substrate, appearance) {
77
+ if (substrate === 'ink')
78
+ return appearance === 'primary' ? INK_SPOT : INK_SPOT_MUTED;
79
+ return appearance === 'primary' ? PAPER_SPOT : PAPER_SPOT_MUTED;
80
+ }
81
+ function buildTokenCatalog(substrate = 'paper', appearance = 'primary') {
82
+ const isInk = substrate === 'ink';
83
+ const base = isInk ? INK_BASE : PAPER_BASE;
84
+ const spot = spotOf(substrate, appearance);
85
+ /** 网点密度:muted 档降一级,让页面更安静 */
86
+ const halftoneAlpha = appearance === 'primary' ? (isInk ? 0.16 : 0.13) : isInk ? 0.1 : 0.08;
87
+ return {
88
+ id: 'theme09',
89
+ displayName: 'Theme 09',
90
+ description: '墨韵专色风,米白纸底与深墨跨页双基底交替,专色朱砂与明朝体大字,适合品牌故事、人物访谈、企业形象册与年度特刊',
91
+ colors: {
92
+ ink: base.ink,
93
+ ink2: base.ink2,
94
+ ink3: base.ink3,
95
+ textInverse: base.inverse,
96
+ accent: spot.vermilion,
97
+ accent2: spot.indigo,
98
+ accentCool: spot.celadon,
99
+ red: spot.vermilion,
100
+ orange: spot.sienna,
101
+ amber: spot.mustard,
102
+ yellow: spot.mustard,
103
+ teal: spot.celadon,
104
+ green: spot.celadon,
105
+ cyan: spot.indigo,
106
+ blue: spot.indigo,
107
+ indigo: spot.indigo,
108
+ violet: spot.plum,
109
+ purple: spot.plum,
110
+ series: [spot.vermilion, spot.indigo, spot.mustard, spot.celadon, spot.plum, spot.sienna],
111
+ background: base.bg,
112
+ backgroundGradientStart: base.bgStart,
113
+ backgroundGradientEnd: base.bgEnd,
114
+ surface: `color-mix(in srgb, ${base.ink} ${isInk ? '10' : '4'}%, transparent)`,
115
+ surfaceStrong: `color-mix(in srgb, ${base.ink} ${isInk ? '16' : '7'}%, transparent)`,
116
+ surfaceSolid: isInk ? '#1C2027' : '#FDFCF8',
117
+ surfaceElevated: isInk ? '#242932' : '#FFFFFF',
118
+ border: `color-mix(in srgb, ${base.ink} ${isInk ? '22' : '14'}%, transparent)`,
119
+ borderStrong: `color-mix(in srgb, ${base.ink} ${isInk ? '40' : '30'}%, transparent)`,
120
+ shadow: isInk ? '0 22px 54px rgba(0, 0, 0, 0.55)' : '0 18px 44px rgba(20, 22, 28, 0.10)',
121
+ shadowSmall: isInk ? '0 6px 20px rgba(0, 0, 0, 0.42)' : '0 5px 16px rgba(20, 22, 28, 0.07)',
122
+ nodeBg: isInk ? '#1C2027' : '#FDFCF8',
123
+ nodeBorder: `color-mix(in srgb, ${base.ink} ${isInk ? '30' : '20'}%, transparent)`,
124
+ edge: `color-mix(in srgb, ${base.ink} ${isInk ? '34' : '26'}%, transparent)`,
125
+ focusGlow: `color-mix(in srgb, ${spot.vermilion} 38%, transparent)`,
126
+ panelLine: `color-mix(in srgb, ${base.ink} ${isInk ? '14' : '9'}%, transparent)`,
127
+ accentBright: spot.vermilion,
128
+ inversePanel: isInk ? '#F4F1EA' : '#14161C',
129
+ inversePanelInk: isInk ? '#14161C' : '#F4F1EA',
130
+ rule: `color-mix(in srgb, ${base.ink} ${isInk ? '26' : '18'}%, transparent)`,
131
+ ruleStrong: `color-mix(in srgb, ${base.ink} ${isInk ? '55' : '48'}%, transparent)`,
132
+ halftone: `color-mix(in srgb, ${base.ink} ${Math.round(halftoneAlpha * 100)}%, transparent)`,
133
+ grain: `color-mix(in srgb, ${base.ink} ${isInk ? '5' : '3'}%, transparent)`,
134
+ },
135
+ fonts: {
136
+ // 明朝体标题 —— 与 theme07/08 无衬线的最大字形分野
137
+ heading: '"Noto Serif SC", "Songti SC", serif',
138
+ body: '"Noto Sans SC", system-ui, sans-serif',
139
+ mono: '"Space Mono", ui-monospace, monospace',
140
+ en: '"Newsreader", Georgia, "Noto Serif SC", serif',
141
+ hand: '"Caveat", "Noto Sans SC", cursive',
142
+ },
143
+ spacing: {
144
+ pagePadding: '60px',
145
+ sectionGap: '30px',
146
+ elementGap: '14px',
147
+ padTop: '72px',
148
+ padBottom: '68px',
149
+ cardPaddingLarge: '30px 34px',
150
+ cardPaddingMedium: '20px 24px',
151
+ },
152
+ borderRadius: {
153
+ // 印刷品几乎不用圆角 —— 直角是本主题的形态签名
154
+ small: '0px',
155
+ medium: '0px',
156
+ large: '2px',
157
+ },
158
+ fontSize: {
159
+ display: '104px',
160
+ displaySmall: '72px',
161
+ h1: '46px',
162
+ h2: '32px',
163
+ h3: '22px',
164
+ body: '17px',
165
+ bodySmall: '14px',
166
+ caption: '12px',
167
+ },
168
+ effect: {
169
+ riseDistance: '12px',
170
+ riseDuration: '0.46s',
171
+ },
172
+ };
173
+ }
174
+ export const theme09Tokens = buildTokenCatalog('paper', 'primary');
175
+ export function getTheme09Tokens(substrate = 'paper', appearance = 'primary') {
176
+ return buildTokenCatalog(substrate, appearance);
177
+ }
178
+ /* ────────────────────────────────────────────────────────────────
179
+ * CSS 变量生成
180
+ * ──────────────────────────────────────────────────────────────── */
181
+ function buildCssVars(substrate, appearance) {
182
+ const t = buildTokenCatalog(substrate, appearance);
183
+ const c = t.colors;
184
+ const isInk = substrate === 'ink';
185
+ const base = isInk ? INK_BASE : PAPER_BASE;
186
+ return `
187
+ --lp-ink: ${c.ink};
188
+ --lp-ink2: ${c.ink2};
189
+ --lp-ink3: ${c.ink3};
190
+ --lp-text-inverse: ${c.textInverse};
191
+ --lp-accent: ${c.accent};
192
+ --lp-accent-2: ${c.accent2};
193
+ --lp-accent-cool: ${c.accentCool};
194
+ --lp-red: ${c.red};
195
+ --lp-orange: ${c.orange};
196
+ --lp-amber: ${c.amber};
197
+ --lp-yellow: ${c.yellow};
198
+ --lp-teal: ${c.teal};
199
+ --lp-green: ${c.green};
200
+ --lp-cyan: ${c.cyan};
201
+ --lp-blue: ${c.blue};
202
+ --lp-indigo: ${c.indigo};
203
+ --lp-violet: ${c.violet};
204
+ --lp-purple: ${c.purple};
205
+ --lp-series-1: ${c.series[0]};
206
+ --lp-series-2: ${c.series[1]};
207
+ --lp-series-3: ${c.series[2]};
208
+ --lp-series-4: ${c.series[3]};
209
+ --lp-series-5: ${c.series[4]};
210
+ --lp-series-6: ${c.series[5]};
211
+ --lp-bg: ${c.background};
212
+ --lp-bg-gradient-start: ${c.backgroundGradientStart};
213
+ --lp-bg-gradient-end: ${c.backgroundGradientEnd};
214
+ --lp-surface: ${c.surface};
215
+ --lp-surface-strong: ${c.surfaceStrong};
216
+ --lp-surface-solid: ${c.surfaceSolid};
217
+ --lp-surface-elevated: ${c.surfaceElevated};
218
+ --lp-border: ${c.border};
219
+ --lp-border-strong: ${c.borderStrong};
220
+ --lp-shadow: ${c.shadow};
221
+ --lp-shadow-sm: ${c.shadowSmall};
222
+ --lp-shadow-inset: ${isInk ? '0 1px 0 rgba(255, 255, 255, 0.06) inset' : '0 1px 0 rgba(20, 22, 28, 0.04) inset'};
223
+ --lp-overlay: color-mix(in srgb, ${base.ink} ${isInk ? '8' : '3'}%, transparent);
224
+ --lp-overlay-strong: color-mix(in srgb, ${base.ink} ${isInk ? '14' : '6'}%, transparent);
225
+ --lp-divider: ${c.rule};
226
+ --lp-scrim: ${isInk ? 'rgba(13, 15, 20, 0.62)' : 'rgba(20, 22, 28, 0.52)'};
227
+ --lp-image-overlay: ${isInk
228
+ ? 'linear-gradient(180deg, rgba(13, 15, 20, 0.18) 0%, rgba(13, 15, 20, 0.86) 100%)'
229
+ : 'linear-gradient(180deg, rgba(20, 22, 28, 0.10) 0%, rgba(20, 22, 28, 0.74) 100%)'};
230
+ --lp-shadow-rgb: ${isInk ? '0, 0, 0' : '20, 22, 28'};
231
+ --lp-stroke: ${c.border};
232
+ --lp-white-alpha-80: rgba(255, 255, 255, 0.8);
233
+ --lp-white-alpha-85: rgba(255, 255, 255, 0.85);
234
+ --lp-white-alpha-90: rgba(255, 255, 255, 0.9);
235
+ --lp-node-bg: ${c.nodeBg};
236
+ --lp-node-border: ${c.nodeBorder};
237
+ --lp-edge: ${c.edge};
238
+ --lp-focus-glow: ${c.focusGlow};
239
+ --lp-panel-line: ${c.panelLine};
240
+ --lp-accent-bright: ${c.accentBright};
241
+ --lp-inverse-panel: ${c.inversePanel};
242
+ --lp-inverse-panel-ink: ${c.inversePanelInk};
243
+ --lp-font: ${t.fonts.body};
244
+ --lp-font-mono: ${t.fonts.mono};
245
+ --lp-font-heading: ${t.fonts.heading};
246
+ --lp-radius-small: ${t.borderRadius.small};
247
+ --lp-radius-medium: ${t.borderRadius.medium};
248
+ --lp-radius-large: ${t.borderRadius.large};
249
+ --lp-radius-lg: ${t.borderRadius.large};
250
+ --lp-font-size-display: ${t.fontSize.display};
251
+ --lp-font-size-display-small: ${t.fontSize.displaySmall};
252
+ --lp-font-size-h1: ${t.fontSize.h1};
253
+ --lp-font-size-h2: ${t.fontSize.h2};
254
+ --lp-font-size-h3: ${t.fontSize.h3};
255
+ --lp-font-size-body: ${t.fontSize.body};
256
+ --lp-font-size-body-small: ${t.fontSize.bodySmall};
257
+ --lp-font-size-caption: ${t.fontSize.caption};
258
+ /* 通用布局别名 */
259
+ --lp-card-border: var(--lp-border);
260
+ --lp-card-radius: var(--lp-radius-large);
261
+ --lp-card-surface: var(--lp-surface-solid);
262
+ --lp-card-accent: color-mix(in srgb, var(--lp-accent) 10%, transparent);
263
+ --lp-card-accent-border: var(--lp-accent);
264
+ --lp-on-accent: ${isInk ? '#14161C' : '#FFFFFF'};
265
+ --lp-on-accent-soft: color-mix(in srgb, ${isInk ? '#14161C' : '#FFFFFF'} 88%, transparent);
266
+ --lp-error: var(--lp-red);
267
+ --lp-warning: var(--lp-amber);
268
+ --lp-success: var(--lp-green);
269
+ --lp-font-size-hero: var(--lp-font-size-display-small);
270
+ --lp-font-size-hero-small: var(--lp-font-size-h1);
271
+ --lp-font-size-subtitle: var(--lp-font-size-h3);
272
+ --lp-font-size-small: var(--lp-font-size-body-small);
273
+ --lp-font-display: ${t.fonts.heading};
274
+ /* ── theme09 专有:印刷语汇 ── */
275
+ --lp-t9-substrate: ${substrate};
276
+ --lp-t9-en: ${t.fonts.en};
277
+ --lp-t9-hand: ${t.fonts.hand};
278
+ --lp-t9-rule: ${c.rule};
279
+ --lp-t9-rule-strong: ${c.ruleStrong};
280
+ --lp-t9-halftone: ${c.halftone};
281
+ --lp-t9-grain: ${c.grain};
282
+ --lp-t9-spot: ${c.accent};
283
+ --lp-t9-spot-2: ${c.accent2};
284
+ --lp-t9-spot-3: ${c.amber};
285
+ --lp-t9-spot-4: ${c.teal};
286
+ --lp-t9-dot-size: ${appearance === 'primary' ? '7px' : '9px'};
287
+ --lp-t9-gutter: 2px;
288
+ --lp-t9-crop: ${c.ruleStrong};
289
+ --lp-t9-tape: color-mix(in srgb, ${c.amber} ${isInk ? '34' : '26'}%, transparent);
290
+ `;
291
+ }
292
+ const SUBSTRATE_SELECTOR = {
293
+ paper: '.lp-theme09',
294
+ ink: '.lp-theme09-sub-ink',
295
+ };
296
+ /**
297
+ * 生成 theme09 完整 CSS 变量块。
298
+ *
299
+ * 层叠顺序(必须保持 paper 在前、ink 在后,否则墨底会被纸底覆盖):
300
+ * 1. :root 兜底(未设 data-theme 的场景,如画廊/快照)
301
+ * 2. [data-theme] 兜底(未设 data-appearance)
302
+ * 3. [data-appearance="primary"]
303
+ * 4. [data-appearance="muted"]
304
+ * 每组内:paper(.lp-theme09)→ ink(.lp-theme09-sub-ink)
305
+ */
306
+ export function generateTheme09CssVariablesWithSchemesAndAppearance() {
307
+ const T = ':root[data-theme="ink-editorial"]';
308
+ const blocks = [];
309
+ // 1) 无 data-theme 兜底
310
+ blocks.push(`:root {\n${buildCssVars('paper', 'primary')}\n}`);
311
+ blocks.push(`${SUBSTRATE_SELECTOR.ink} {\n${buildCssVars('ink', 'primary')}\n}`);
312
+ // 2) 有 data-theme、无 appearance
313
+ blocks.push(`${T} ${SUBSTRATE_SELECTOR.paper} {\n${buildCssVars('paper', 'primary')}\n}`);
314
+ blocks.push(`${T} ${SUBSTRATE_SELECTOR.ink} {\n${buildCssVars('ink', 'primary')}\n}`);
315
+ // 3/4) 两档外观(primary 与 dark 别名 / muted 与 light 别名)
316
+ for (const [attr, appearance] of [
317
+ ['primary', 'primary'],
318
+ ['dark', 'primary'],
319
+ ['muted', 'muted'],
320
+ ['light', 'muted'],
321
+ ]) {
322
+ const P = `:root[data-appearance="${attr}"][data-theme="ink-editorial"]`;
323
+ blocks.push(`${P} ${SUBSTRATE_SELECTOR.paper} {\n${buildCssVars('paper', appearance)}\n}`);
324
+ blocks.push(`${P} ${SUBSTRATE_SELECTOR.ink} {\n${buildCssVars('ink', appearance)}\n}`);
325
+ }
326
+ return blocks.join('\n');
327
+ }
328
+ export function generateTheme09CssVariables(substrate = 'paper', appearance = 'primary') {
329
+ return `:root {\n${buildCssVars(substrate, appearance)}\n}`;
330
+ }
331
+ export function generateTheme09CssVariablesWithAppearance() {
332
+ return generateTheme09CssVariables('paper', 'primary');
333
+ }
334
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/theme09/tokens.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * ⚠️ 渲染真源(SOURCE OF TRUTH)⚠️
3
+ * renderer 经 @lemonppt/templates 实际调用本文件。
4
+ * 镜像副本 `packages/themes/src/theme10/tokens.ts` 仅供 getTheme() 元数据使用。
5
+ * 改配色请先改本文件,再同步:
6
+ * cp packages/templates/src/themes/theme10/tokens.ts packages/themes/src/theme10/tokens.ts
7
+ *
8
+ * theme10 设计 Token。
9
+ * 风格:金色指数 · 金融编辑风 / Gold Index · Financial Editorial。
10
+ *
11
+ * 视觉坐标(与 theme08 黑金实验、theme09 墨韵专色、third-party theme10 全部区分开):
12
+ * 冰蓝主强调 #4a7fd4 + 香槟金/铜点睛 #d9b977 / #c97a52 + mono 数据字体 + 账本细线/刻度质感。
13
+ * 三情绪渐变(aurora / obsidian / ember)全部自写,不抄 theme10 third-party 的 dusk/midnight/dawn,
14
+ * 也不抄 theme08 的荧光金 #ECEF35 / Anton / 手绘箭头。
15
+ *
16
+ * 所有色值、类名、装饰语汇均为原创,不复制 third-party theme10 的实现、专色族
17
+ * (含其同族错值)、类名(lp-theme10-* 仅 our 自创骨架)与保留前缀变量。
18
+ */
19
+ export type Theme10Mood = 'aurora' | 'obsidian' | 'ember';
20
+ export interface Theme10Tokens {
21
+ id: string;
22
+ displayName: string;
23
+ description: string;
24
+ colors: {
25
+ ink: string;
26
+ ink2: string;
27
+ ink3: string;
28
+ textInverse: string;
29
+ accent: string;
30
+ accent2: string;
31
+ gold: string;
32
+ goldAmber: string;
33
+ copper: string;
34
+ violet: string;
35
+ red: string;
36
+ green: string;
37
+ series: readonly string[];
38
+ background: string;
39
+ backgroundGradientStart: string;
40
+ backgroundGradientEnd: string;
41
+ surface: string;
42
+ surfaceStrong: string;
43
+ surfaceSolid: string;
44
+ surfaceElevated: string;
45
+ border: string;
46
+ borderStrong: string;
47
+ shadow: string;
48
+ rule: string;
49
+ ruleStrong: string;
50
+ glowBlue: string;
51
+ glowGold: string;
52
+ };
53
+ fonts: {
54
+ heading: string;
55
+ body: string;
56
+ mono: string;
57
+ en: string;
58
+ };
59
+ spacing: {
60
+ pagePadding: string;
61
+ sectionGap: string;
62
+ elementGap: string;
63
+ padTop: string;
64
+ padBottom: string;
65
+ cardPaddingLarge: string;
66
+ cardPaddingMedium: string;
67
+ };
68
+ borderRadius: {
69
+ small: string;
70
+ medium: string;
71
+ large: string;
72
+ };
73
+ fontSize: {
74
+ display: string;
75
+ displaySmall: string;
76
+ h1: string;
77
+ h2: string;
78
+ h3: string;
79
+ body: string;
80
+ bodySmall: string;
81
+ caption: string;
82
+ };
83
+ }
84
+ export declare const theme10Tokens: Theme10Tokens;
85
+ export declare function getTheme10Tokens(): Theme10Tokens;
86
+ export declare function generateTheme10CssVariables(mood?: Theme10Mood): string;
87
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/theme10/tokens.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAE1D,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;QAC1B,UAAU,EAAE,MAAM,CAAC;QACnB,uBAAuB,EAAE,MAAM,CAAC;QAChC,qBAAqB,EAAE,MAAM,CAAC;QAC9B,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,OAAO,EAAE;QACP,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,EAAE,MAAM,CAAC;QACzB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,YAAY,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AA8GD,eAAO,MAAM,aAAa,eAAsB,CAAC;AAEjD,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAoFD,wBAAgB,2BAA2B,CAAC,IAAI,GAAE,WAAwB,GAAG,MAAM,CAalF"}
@@ -0,0 +1,201 @@
1
+ // lemonPPT - AI-powered presentation generation
2
+ // Copyright (c) 2026 lemonforme
3
+ // SPDX-License-Identifier: AGPL-3.0-or-later
4
+ /* ────────────────────────────────────────────────────────────────
5
+ * 三情绪基底(全部自写渐变定义)
6
+ * ──────────────────────────────────────────────────────────────── */
7
+ const MOOD_GRADIENT = {
8
+ // 暗→香槟金收尾:封面、高端页(制造金线冲击)
9
+ aurora: 'linear-gradient(158deg, #0a0e14 0%, #16202c 30%, #2c3a44 60%, #6b5e4e 85%, #b89a78 100%)',
10
+ // 深海军蓝近黑:数据/内容页(保证可读)
11
+ obsidian: 'radial-gradient(120% 85% at 72% 8%, #1a2433 0%, #0c1118 52%, #05070b 100%)',
12
+ // 暖紫铜晨曦:章节/金句/影像页(暖调变奏)
13
+ ember: 'linear-gradient(160deg, #171320 0%, #46363f 38%, #8a6356 72%, #cfa882 100%)',
14
+ };
15
+ /* ────────────────────────────────────────────────────────────────
16
+ * 强调色系统(冰蓝主 + 金铜点睛,自写 hex,与 third-party 同族错值)
17
+ * 全部经 WCAG 2.1 AA 预校验(近白 #eef1f6 在 #05070b 上 ≥ 15:1;
18
+ * 冰蓝 #4a7fd4 / 香槟金 #d9b977 在深底上 ≥ 4.5:1)
19
+ * ──────────────────────────────────────────────────────────────── */
20
+ const C = {
21
+ ink: '#eef1f6',
22
+ ink2: '#a9b2c0',
23
+ ink3: '#7e889b',
24
+ inverse: '#05070b',
25
+ accent: '#4a7fd4', // 冰蓝主
26
+ accent2: '#6f9bd8', // 柔蓝
27
+ gold: '#d9b977', // 香槟金
28
+ goldAmber: '#e8a23a', // 琥珀金
29
+ copper: '#c97a52', // 铜橙
30
+ violet: '#9a82dc', // 紫罗兰
31
+ red: '#e0615a', // 涨/强信号(暖红,区别于 copper)
32
+ green: '#5fb89a', // 跌/正向(青绿,金融可读)
33
+ };
34
+ const SERIES = [C.accent, C.gold, C.goldAmber, C.copper, C.violet, C.accent2];
35
+ const BASE_BG = '#0a0e14';
36
+ const BG_START = '#0c121b';
37
+ const BG_END = '#05070b';
38
+ function buildTokenCatalog() {
39
+ return {
40
+ id: 'theme10',
41
+ displayName: 'Theme 10',
42
+ description: '金色指数 · 金融编辑风:墨黑金线底 + 冰蓝主强调 + 香槟金/铜点睛,sans+mono 数据字体,账本细线/刻度质感,适合金融数据、投资报告、商业指数与投研白皮书',
43
+ colors: {
44
+ ink: C.ink,
45
+ ink2: C.ink2,
46
+ ink3: C.ink3,
47
+ textInverse: C.inverse,
48
+ accent: C.accent,
49
+ accent2: C.accent2,
50
+ gold: C.gold,
51
+ goldAmber: C.goldAmber,
52
+ copper: C.copper,
53
+ violet: C.violet,
54
+ red: C.red,
55
+ green: C.green,
56
+ series: SERIES,
57
+ background: BASE_BG,
58
+ backgroundGradientStart: BG_START,
59
+ backgroundGradientEnd: BG_END,
60
+ surface: 'color-mix(in srgb, #eef1f6 6%, transparent)',
61
+ surfaceStrong: 'color-mix(in srgb, #eef1f6 11%, transparent)',
62
+ surfaceSolid: '#121823',
63
+ surfaceElevated: '#1a2230',
64
+ border: 'color-mix(in srgb, #eef1f6 16%, transparent)',
65
+ borderStrong: 'color-mix(in srgb, #eef1f6 30%, transparent)',
66
+ shadow: '0 22px 54px rgba(0, 0, 0, 0.55)',
67
+ rule: 'color-mix(in srgb, #eef1f6 14%, transparent)',
68
+ ruleStrong: 'color-mix(in srgb, #eef1f6 34%, transparent)',
69
+ glowBlue: 'color-mix(in srgb, #4a7fd4 30%, transparent)',
70
+ glowGold: 'color-mix(in srgb, #d9b977 26%, transparent)',
71
+ },
72
+ fonts: {
73
+ heading: '"Inter", "Noto Sans SC", system-ui, sans-serif',
74
+ body: '"Noto Sans SC", system-ui, sans-serif',
75
+ mono: '"Space Mono", "IBM Plex Mono", ui-monospace, monospace',
76
+ en: '"Newsreader", Georgia, "Noto Serif SC", serif',
77
+ },
78
+ spacing: {
79
+ pagePadding: '60px',
80
+ sectionGap: '30px',
81
+ elementGap: '14px',
82
+ padTop: '72px',
83
+ padBottom: '68px',
84
+ cardPaddingLarge: '30px 34px',
85
+ cardPaddingMedium: '20px 24px',
86
+ },
87
+ borderRadius: {
88
+ small: '6px',
89
+ medium: '10px',
90
+ large: '14px',
91
+ },
92
+ fontSize: {
93
+ display: '104px',
94
+ displaySmall: '72px',
95
+ h1: '46px',
96
+ h2: '32px',
97
+ h3: '22px',
98
+ body: '17px',
99
+ bodySmall: '14px',
100
+ caption: '12px',
101
+ },
102
+ };
103
+ }
104
+ export const theme10Tokens = buildTokenCatalog();
105
+ export function getTheme10Tokens() {
106
+ return buildTokenCatalog();
107
+ }
108
+ /* ────────────────────────────────────────────────────────────────
109
+ * CSS 变量生成(被 render.tsx / gallery.mjs 注入到 <style>)
110
+ *
111
+ * 层叠顺序:
112
+ * 1. :root 兜底(obsidian 默认)
113
+ * 2. .lp-theme10-mood-aurora / obsidian / ember(按版式预分配情绪)
114
+ * ──────────────────────────────────────────────────────────────── */
115
+ function buildCssVars() {
116
+ const t = buildTokenCatalog();
117
+ const c = t.colors;
118
+ return `
119
+ --lp-ink: ${c.ink};
120
+ --lp-ink2: ${c.ink2};
121
+ --lp-ink3: ${c.ink3};
122
+ --lp-text-inverse: ${c.textInverse};
123
+ --lp-accent: ${c.accent};
124
+ --lp-accent-2: ${c.accent2};
125
+ --lp-gold: ${c.gold};
126
+ --lp-gold-amber: ${c.goldAmber};
127
+ --lp-copper: ${c.copper};
128
+ --lp-violet: ${c.violet};
129
+ --lp-red: ${c.red};
130
+ --lp-green: ${c.green};
131
+ --lp-series-1: ${c.series[0]};
132
+ --lp-series-2: ${c.series[1]};
133
+ --lp-series-3: ${c.series[2]};
134
+ --lp-series-4: ${c.series[3]};
135
+ --lp-series-5: ${c.series[4]};
136
+ --lp-series-6: ${c.series[5]};
137
+ --lp-bg: ${c.background};
138
+ --lp-bg-gradient-start: ${c.backgroundGradientStart};
139
+ --lp-bg-gradient-end: ${c.backgroundGradientEnd};
140
+ --lp-surface: ${c.surface};
141
+ --lp-surface-strong: ${c.surfaceStrong};
142
+ --lp-surface-solid: ${c.surfaceSolid};
143
+ --lp-surface-elevated: ${c.surfaceElevated};
144
+ --lp-border: ${c.border};
145
+ --lp-border-strong: ${c.borderStrong};
146
+ --lp-shadow: ${c.shadow};
147
+ --lp-rule: ${c.rule};
148
+ --lp-rule-strong: ${c.ruleStrong};
149
+ --lp-glow-blue: ${c.glowBlue};
150
+ --lp-glow-gold: ${c.glowGold};
151
+ --lp-font: ${t.fonts.body};
152
+ --lp-font-mono: ${t.fonts.mono};
153
+ --lp-font-heading: ${t.fonts.heading};
154
+ --lp-radius-small: ${t.borderRadius.small};
155
+ --lp-radius-medium: ${t.borderRadius.medium};
156
+ --lp-radius-large: ${t.borderRadius.large};
157
+ --lp-font-size-display: ${t.fontSize.display};
158
+ --lp-font-size-display-small: ${t.fontSize.displaySmall};
159
+ --lp-font-size-h1: ${t.fontSize.h1};
160
+ --lp-font-size-h2: ${t.fontSize.h2};
161
+ --lp-font-size-h3: ${t.fontSize.h3};
162
+ --lp-font-size-body: ${t.fontSize.body};
163
+ --lp-font-size-body-small: ${t.fontSize.bodySmall};
164
+ --lp-font-size-caption: ${t.fontSize.caption};
165
+ /* 通用布局别名 */
166
+ --lp-card-border: var(--lp-border);
167
+ --lp-card-radius: var(--lp-radius-large);
168
+ --lp-card-surface: var(--lp-surface-solid);
169
+ --lp-card-accent: color-mix(in srgb, var(--lp-accent) 14%, transparent);
170
+ --lp-card-accent-border: var(--lp-accent);
171
+ --lp-on-accent: #05070b;
172
+ --lp-error: var(--lp-red);
173
+ --lp-warning: var(--lp-gold-amber);
174
+ --lp-success: var(--lp-green);
175
+ --lp-font-display: ${t.fonts.heading};
176
+ /* theme10 专有:金融编辑语汇 */
177
+ --lp-t10-mood: obsidian;
178
+ --lp-t10-en: ${t.fonts.en};
179
+ --lp-t10-rule: ${c.rule};
180
+ --lp-t10-rule-strong: ${c.ruleStrong};
181
+ --lp-t10-gold: ${c.gold};
182
+ --lp-t10-gold-amber: ${c.goldAmber};
183
+ --lp-t10-copper: ${c.copper};
184
+ --lp-t10-blue: ${c.accent};
185
+ --lp-t10-ticker-h: 30px;
186
+ --lp-t10-scale-unit: 22px;
187
+ `;
188
+ }
189
+ export function generateTheme10CssVariables(mood = 'obsidian') {
190
+ const blocks = [];
191
+ // 1) :root 兜底(obsidian 默认)
192
+ blocks.push(`:root {\n${buildCssVars()}\n --lp-t10-mood: obsidian;\n}`);
193
+ // 2) 三情绪类(按版式预分配,形成翻页节奏)
194
+ for (const m of ['aurora', 'obsidian', 'ember']) {
195
+ blocks.push(`.lp-theme10-mood-${m} {\n --lp-mood-gradient: ${MOOD_GRADIENT[m]};\n --lp-t10-mood: ${m};\n}`);
196
+ }
197
+ // 兼容直接挂在 <html data-mood> 的全局设定
198
+ blocks.push(`:root[data-mood="${mood}"] {\n${buildCssVars()}\n}`);
199
+ return blocks.join('\n');
200
+ }
201
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/theme10/tokens.ts"],"names":[],"mappings":"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"}