@lemonppt/themes 1.0.2 → 1.0.4

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,208 @@
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
+ aurora: 'radial-gradient(140% 120% at 12% 12%, #e0f7fa 0%, #e1f5fe 25%, #ede7f6 55%, #f3e5f5 80%, #ffffff 100%)',
9
+ daylight: 'linear-gradient(160deg, #f8fafc 0%, #eef2f7 50%, #e2e8f0 100%)',
10
+ sunset: 'linear-gradient(135deg, #fff8e1 0%, #ffe0b2 35%, #ffccbc 70%, #ffffff 100%)',
11
+ };
12
+ const C = {
13
+ ink: '#1A202C',
14
+ ink2: '#5A6578',
15
+ ink3: '#8B95A5',
16
+ inverse: '#FFFFFF',
17
+ accent: '#00BCD4',
18
+ accent2: '#7C4DFF',
19
+ accent3: '#2979FF',
20
+ orange: '#FF9100',
21
+ red: '#FF5252',
22
+ green: '#00C853',
23
+ violet: '#7C4DFF',
24
+ cyan: '#00BCD4',
25
+ };
26
+ const SERIES = [C.accent, C.accent2, C.accent3, C.orange, C.green, C.red];
27
+ /* 高饱和渐变卡片(与参考图对齐:蓝青、紫蓝、橙红、绿青) */
28
+ const GRADIENTS = {
29
+ blueCyan: 'linear-gradient(135deg, #2979FF 0%, #00BCD4 100%)',
30
+ violetBlue: 'linear-gradient(135deg, #7C4DFF 0%, #2979FF 100%)',
31
+ orangeRed: 'linear-gradient(135deg, #FF9100 0%, #FF5252 100%)',
32
+ greenCyan: 'linear-gradient(135deg, #00C853 0%, #00BCD4 100%)',
33
+ violetPink: 'linear-gradient(135deg, #7C4DFF 0%, #FF5252 100%)',
34
+ cyanBlue: 'linear-gradient(135deg, #00BCD4 0%, #2979FF 100%)',
35
+ };
36
+ const BASE_BG = '#F8FAFC';
37
+ const BG_START = '#F8FAFC';
38
+ const BG_END = '#E2E8F0';
39
+ function buildTokenCatalog() {
40
+ return {
41
+ id: 'theme11',
42
+ displayName: 'Theme 11',
43
+ description: '流光科技 · 浅色扁平科技风:白/浅灰底 + 柔和弥散渐变 + 多彩强调色 + 轻量圆角卡片 + 细网格/信号线,适合 SaaS、AI、科技产品路演与数据仪表盘',
44
+ colors: {
45
+ ink: C.ink,
46
+ ink2: C.ink2,
47
+ ink3: C.ink3,
48
+ textInverse: C.inverse,
49
+ accent: C.accent,
50
+ accent2: C.accent2,
51
+ accent3: C.accent3,
52
+ orange: C.orange,
53
+ red: C.red,
54
+ green: C.green,
55
+ violet: C.violet,
56
+ cyan: C.cyan,
57
+ series: SERIES,
58
+ background: BASE_BG,
59
+ backgroundGradientStart: BG_START,
60
+ backgroundGradientEnd: BG_END,
61
+ surface: '#FFFFFF',
62
+ surfaceSoft: '#F1F5F9',
63
+ surfaceStrong: '#E2E8F0',
64
+ surfaceSolid: '#FFFFFF',
65
+ surfaceElevated: '#FFFFFF',
66
+ border: '#E2E8F0',
67
+ borderStrong: '#CBD5E1',
68
+ shadow: '0 22px 54px rgba(30, 41, 59, 0.14)',
69
+ shadowSmall: '0 4px 24px rgba(30, 41, 59, 0.08)',
70
+ shadowMedium: '0 12px 32px rgba(30, 41, 59, 0.12)',
71
+ shadowLarge: '0 18px 44px rgba(30, 41, 59, 0.16)',
72
+ shadowBlue: '0 12px 32px rgba(41, 121, 255, 0.25)',
73
+ shadowCyan: '0 12px 32px rgba(0, 188, 212, 0.22)',
74
+ shadowViolet: '0 12px 32px rgba(124, 77, 255, 0.22)',
75
+ shadowOrange: '0 12px 32px rgba(255, 145, 0, 0.22)',
76
+ shadowGreen: '0 12px 32px rgba(0, 200, 83, 0.22)',
77
+ shadowRed: '0 12px 32px rgba(255, 82, 82, 0.22)',
78
+ gridLine: 'rgba(30, 41, 59, 0.06)',
79
+ },
80
+ fonts: {
81
+ heading: '"Inter", "Noto Sans SC", system-ui, sans-serif',
82
+ body: '"Noto Sans SC", system-ui, sans-serif',
83
+ mono: '"Space Mono", "IBM Plex Mono", ui-monospace, monospace',
84
+ en: '"Inter", "SF Pro Display", system-ui, sans-serif',
85
+ },
86
+ spacing: {
87
+ pagePadding: '60px',
88
+ sectionGap: '30px',
89
+ elementGap: '14px',
90
+ padTop: '72px',
91
+ padBottom: '68px',
92
+ cardPaddingLarge: '30px 34px',
93
+ cardPaddingMedium: '20px 24px',
94
+ },
95
+ borderRadius: {
96
+ small: '8px',
97
+ medium: '14px',
98
+ large: '20px',
99
+ },
100
+ fontSize: {
101
+ display: '104px',
102
+ displaySmall: '72px',
103
+ h1: '46px',
104
+ h2: '32px',
105
+ h3: '22px',
106
+ body: '17px',
107
+ bodySmall: '14px',
108
+ caption: '12px',
109
+ },
110
+ };
111
+ }
112
+ export const theme11Tokens = buildTokenCatalog();
113
+ export function getTheme11Tokens() {
114
+ return buildTokenCatalog();
115
+ }
116
+ /* ────────────────────────────────────────────────────────────────
117
+ * CSS 变量生成(被 render-editor-data.tsx / gallery.mjs 注入到 <style>)
118
+ * ──────────────────────────────────────────────────────────────── */
119
+ function buildCssVars() {
120
+ const t = buildTokenCatalog();
121
+ const c = t.colors;
122
+ return `
123
+ --lp-ink: ${c.ink};
124
+ --lp-ink2: ${c.ink2};
125
+ --lp-ink3: ${c.ink3};
126
+ --lp-text-inverse: ${c.textInverse};
127
+ --lp-accent: ${c.accent};
128
+ --lp-accent-2: ${c.accent2};
129
+ --lp-accent-3: ${c.accent3};
130
+ --lp-orange: ${c.orange};
131
+ --lp-red: ${c.red};
132
+ --lp-green: ${c.green};
133
+ --lp-violet: ${c.violet};
134
+ --lp-cyan: ${c.cyan};
135
+ --lp-series-1: ${c.series[0]};
136
+ --lp-series-2: ${c.series[1]};
137
+ --lp-series-3: ${c.series[2]};
138
+ --lp-series-4: ${c.series[3]};
139
+ --lp-series-5: ${c.series[4]};
140
+ --lp-series-6: ${c.series[5]};
141
+ --lp-bg: ${c.background};
142
+ --lp-bg-gradient-start: ${c.backgroundGradientStart};
143
+ --lp-bg-gradient-end: ${c.backgroundGradientEnd};
144
+ --lp-surface: ${c.surface};
145
+ --lp-surface-soft: ${c.surfaceSoft};
146
+ --lp-surface-strong: ${c.surfaceStrong};
147
+ --lp-surface-solid: ${c.surfaceSolid};
148
+ --lp-surface-elevated: ${c.surfaceElevated};
149
+ --lp-border: ${c.border};
150
+ --lp-border-strong: ${c.borderStrong};
151
+ --lp-shadow: ${c.shadow};
152
+ --lp-shadow-small: ${c.shadowSmall};
153
+ --lp-shadow-medium: ${c.shadowMedium};
154
+ --lp-shadow-large: ${c.shadowLarge};
155
+ --lp-shadow-blue: ${c.shadowBlue};
156
+ --lp-shadow-cyan: ${c.shadowCyan};
157
+ --lp-shadow-violet: ${c.shadowViolet};
158
+ --lp-shadow-orange: ${c.shadowOrange};
159
+ --lp-shadow-green: ${c.shadowGreen};
160
+ --lp-shadow-red: ${c.shadowRed};
161
+ --lp-grid-line: ${c.gridLine};
162
+ /* 高饱和渐变卡片 */
163
+ --lp-gradient-blue-cyan: ${GRADIENTS.blueCyan};
164
+ --lp-gradient-violet-blue: ${GRADIENTS.violetBlue};
165
+ --lp-gradient-orange-red: ${GRADIENTS.orangeRed};
166
+ --lp-gradient-green-cyan: ${GRADIENTS.greenCyan};
167
+ --lp-gradient-violet-pink: ${GRADIENTS.violetPink};
168
+ --lp-gradient-cyan-blue: ${GRADIENTS.cyanBlue};
169
+ --lp-font: ${t.fonts.body};
170
+ --lp-font-mono: ${t.fonts.mono};
171
+ --lp-font-heading: ${t.fonts.heading};
172
+ --lp-radius-small: ${t.borderRadius.small};
173
+ --lp-radius-medium: ${t.borderRadius.medium};
174
+ --lp-radius-large: ${t.borderRadius.large};
175
+ --lp-font-size-display: ${t.fontSize.display};
176
+ --lp-font-size-display-small: ${t.fontSize.displaySmall};
177
+ --lp-font-size-h1: ${t.fontSize.h1};
178
+ --lp-font-size-h2: ${t.fontSize.h2};
179
+ --lp-font-size-h3: ${t.fontSize.h3};
180
+ --lp-font-size-body: ${t.fontSize.body};
181
+ --lp-font-size-body-small: ${t.fontSize.bodySmall};
182
+ --lp-font-size-caption: ${t.fontSize.caption};
183
+ /* 通用布局别名 */
184
+ --lp-card-border: var(--lp-border);
185
+ --lp-card-radius: var(--lp-radius-large);
186
+ --lp-card-surface: var(--lp-surface);
187
+ --lp-card-shadow: var(--lp-shadow-small);
188
+ --lp-on-accent: #FFFFFF;
189
+ --lp-error: var(--lp-red);
190
+ --lp-warning: var(--lp-orange);
191
+ --lp-success: var(--lp-green);
192
+ --lp-font-display: ${t.fonts.heading};
193
+ /* theme11 专有 */
194
+ --lp-t11-mood: daylight;
195
+ --lp-t11-signal: var(--lp-accent);
196
+ --lp-t11-grid: var(--lp-grid-line);
197
+ `;
198
+ }
199
+ export function generateTheme11CssVariables(mood = 'daylight') {
200
+ const blocks = [];
201
+ blocks.push(`:root {\n${buildCssVars()}\n --lp-t11-mood: daylight;\n}`);
202
+ for (const m of ['aurora', 'daylight', 'sunset']) {
203
+ blocks.push(`.lp-theme11-mood-${m} {\n --lp-mood-gradient: ${MOOD_GRADIENT[m]};\n --lp-t11-mood: ${m};\n}`);
204
+ }
205
+ blocks.push(`:root[data-mood="${mood}"] {\n${buildCssVars()}\n}`);
206
+ return blocks.join('\n');
207
+ }
208
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/theme11/tokens.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,gCAAgC;AAChC,6CAA6C;AA8F7C;;sEAEsE;AACtE,MAAM,aAAa,GAAgC;IACjD,MAAM,EACJ,wGAAwG;IAC1G,QAAQ,EACN,gEAAgE;IAClE,MAAM,EACJ,6EAA6E;CAChF,CAAC;AAEF,MAAM,CAAC,GAAG;IACR,GAAG,EAAE,SAAS;IACd,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,SAAS;IACjB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,SAAS;IACjB,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AAE1E,iCAAiC;AACjC,MAAM,SAAS,GAAG;IAChB,QAAQ,EAAE,mDAAmD;IAC7D,UAAU,EAAE,mDAAmD;IAC/D,SAAS,EAAE,mDAAmD;IAC9D,SAAS,EAAE,mDAAmD;IAC9D,UAAU,EAAE,mDAAmD;IAC/D,QAAQ,EAAE,mDAAmD;CAC9D,CAAC;AAEF,MAAM,OAAO,GAAG,SAAS,CAAC;AAC1B,MAAM,QAAQ,GAAG,SAAS,CAAC;AAC3B,MAAM,MAAM,GAAG,SAAS,CAAC;AAEzB,SAAS,iBAAiB;IACxB,OAAO;QACL,EAAE,EAAE,SAAS;QACb,WAAW,EAAE,UAAU;QACvB,WAAW,EACT,kFAAkF;QACpF,MAAM,EAAE;YACN,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,OAAO;YACtB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,OAAO;YACnB,uBAAuB,EAAE,QAAQ;YACjC,qBAAqB,EAAE,MAAM;YAC7B,OAAO,EAAE,SAAS;YAClB,WAAW,EAAE,SAAS;YACtB,aAAa,EAAE,SAAS;YACxB,YAAY,EAAE,SAAS;YACvB,eAAe,EAAE,SAAS;YAC1B,MAAM,EAAE,SAAS;YACjB,YAAY,EAAE,SAAS;YACvB,MAAM,EAAE,oCAAoC;YAC5C,WAAW,EAAE,mCAAmC;YAChD,YAAY,EAAE,oCAAoC;YAClD,WAAW,EAAE,oCAAoC;YACjD,UAAU,EAAE,sCAAsC;YAClD,UAAU,EAAE,qCAAqC;YACjD,YAAY,EAAE,sCAAsC;YACpD,YAAY,EAAE,qCAAqC;YACnD,WAAW,EAAE,oCAAoC;YACjD,SAAS,EAAE,qCAAqC;YAChD,QAAQ,EAAE,wBAAwB;SACnC;QACD,KAAK,EAAE;YACL,OAAO,EAAE,gDAAgD;YACzD,IAAI,EAAE,uCAAuC;YAC7C,IAAI,EAAE,wDAAwD;YAC9D,EAAE,EAAE,kDAAkD;SACvD;QACD,OAAO,EAAE;YACP,WAAW,EAAE,MAAM;YACnB,UAAU,EAAE,MAAM;YAClB,UAAU,EAAE,MAAM;YAClB,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,MAAM;YACjB,gBAAgB,EAAE,WAAW;YAC7B,iBAAiB,EAAE,WAAW;SAC/B;QACD,YAAY,EAAE;YACZ,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,MAAM;SACd;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,MAAM;YACpB,EAAE,EAAE,MAAM;YACV,EAAE,EAAE,MAAM;YACV,EAAE,EAAE,MAAM;YACV,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,MAAM;YACjB,OAAO,EAAE,MAAM;SAChB;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,iBAAiB,EAAE,CAAC;AAEjD,MAAM,UAAU,gBAAgB;IAC9B,OAAO,iBAAiB,EAAE,CAAC;AAC7B,CAAC;AAED;;sEAEsE;AACtE,SAAS,YAAY;IACnB,MAAM,CAAC,GAAG,iBAAiB,EAAE,CAAC;IAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,OAAO;cACK,CAAC,CAAC,GAAG;eACJ,CAAC,CAAC,IAAI;eACN,CAAC,CAAC,IAAI;uBACE,CAAC,CAAC,WAAW;iBACnB,CAAC,CAAC,MAAM;mBACN,CAAC,CAAC,OAAO;mBACT,CAAC,CAAC,OAAO;iBACX,CAAC,CAAC,MAAM;cACX,CAAC,CAAC,GAAG;gBACH,CAAC,CAAC,KAAK;iBACN,CAAC,CAAC,MAAM;eACV,CAAC,CAAC,IAAI;mBACF,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;mBACX,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;mBACX,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;mBACX,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;mBACX,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;mBACX,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;aACjB,CAAC,CAAC,UAAU;4BACG,CAAC,CAAC,uBAAuB;0BAC3B,CAAC,CAAC,qBAAqB;kBAC/B,CAAC,CAAC,OAAO;uBACJ,CAAC,CAAC,WAAW;yBACX,CAAC,CAAC,aAAa;wBAChB,CAAC,CAAC,YAAY;2BACX,CAAC,CAAC,eAAe;iBAC3B,CAAC,CAAC,MAAM;wBACD,CAAC,CAAC,YAAY;iBACrB,CAAC,CAAC,MAAM;uBACF,CAAC,CAAC,WAAW;wBACZ,CAAC,CAAC,YAAY;uBACf,CAAC,CAAC,WAAW;sBACd,CAAC,CAAC,UAAU;sBACZ,CAAC,CAAC,UAAU;wBACV,CAAC,CAAC,YAAY;wBACd,CAAC,CAAC,YAAY;uBACf,CAAC,CAAC,WAAW;qBACf,CAAC,CAAC,SAAS;oBACZ,CAAC,CAAC,QAAQ;;6BAED,SAAS,CAAC,QAAQ;+BAChB,SAAS,CAAC,UAAU;8BACrB,SAAS,CAAC,SAAS;8BACnB,SAAS,CAAC,SAAS;+BAClB,SAAS,CAAC,UAAU;6BACtB,SAAS,CAAC,QAAQ;eAChC,CAAC,CAAC,KAAK,CAAC,IAAI;oBACP,CAAC,CAAC,KAAK,CAAC,IAAI;uBACT,CAAC,CAAC,KAAK,CAAC,OAAO;uBACf,CAAC,CAAC,YAAY,CAAC,KAAK;wBACnB,CAAC,CAAC,YAAY,CAAC,MAAM;uBACtB,CAAC,CAAC,YAAY,CAAC,KAAK;4BACf,CAAC,CAAC,QAAQ,CAAC,OAAO;kCACZ,CAAC,CAAC,QAAQ,CAAC,YAAY;uBAClC,CAAC,CAAC,QAAQ,CAAC,EAAE;uBACb,CAAC,CAAC,QAAQ,CAAC,EAAE;uBACb,CAAC,CAAC,QAAQ,CAAC,EAAE;yBACX,CAAC,CAAC,QAAQ,CAAC,IAAI;+BACT,CAAC,CAAC,QAAQ,CAAC,SAAS;4BACvB,CAAC,CAAC,QAAQ,CAAC,OAAO;;;;;;;;;;uBAUvB,CAAC,CAAC,KAAK,CAAC,OAAO;;;;;GAKnC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAAoB,UAAU;IACxE,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,CAAC,IAAI,CAAC,YAAY,YAAY,EAAE,iCAAiC,CAAC,CAAC;IACzE,KAAK,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAkB,EAAE,CAAC;QAClE,MAAM,CAAC,IAAI,CACT,oBAAoB,CAAC,6BAA6B,aAAa,CAAC,CAAC,CAAC,uBAAuB,CAAC,MAAM,CACjG,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,oBAAoB,IAAI,SAAS,YAAY,EAAE,KAAK,CAAC,CAAC;IAClE,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lemonppt/themes",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -27,7 +27,7 @@
27
27
  },
28
28
  "homepage": "https://github.com/lemonforme/lemonPPT#readme",
29
29
  "dependencies": {
30
- "@lemonppt/core": "1.0.2"
30
+ "@lemonppt/core": "1.0.4"
31
31
  },
32
32
  "devDependencies": {
33
33
  "typescript": "^5.5.0"