@rovela-ai/sdk 0.14.0 → 0.15.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/admin/api/emails.d.ts +2 -1
- package/dist/admin/api/emails.d.ts.map +1 -1
- package/dist/admin/api/emails.js +203 -34
- package/dist/admin/api/emails.js.map +1 -1
- package/dist/admin/components/AdminNav.d.ts.map +1 -1
- package/dist/admin/components/AdminNav.js +2 -1
- package/dist/admin/components/AdminNav.js.map +1 -1
- package/dist/admin/components/EmailsManager.d.ts.map +1 -1
- package/dist/admin/components/EmailsManager.js +168 -51
- package/dist/admin/components/EmailsManager.js.map +1 -1
- package/dist/admin/components/emails/BlocksEditor.d.ts +17 -0
- package/dist/admin/components/emails/BlocksEditor.d.ts.map +1 -0
- package/dist/admin/components/emails/BlocksEditor.js +110 -0
- package/dist/admin/components/emails/BlocksEditor.js.map +1 -0
- package/dist/admin/components/emails/EmailPreviewPane.d.ts +18 -0
- package/dist/admin/components/emails/EmailPreviewPane.d.ts.map +1 -0
- package/dist/admin/components/emails/EmailPreviewPane.js +52 -0
- package/dist/admin/components/emails/EmailPreviewPane.js.map +1 -0
- package/dist/admin/components/emails/EmailThemePanel.d.ts +27 -0
- package/dist/admin/components/emails/EmailThemePanel.d.ts.map +1 -0
- package/dist/admin/components/emails/EmailThemePanel.js +25 -0
- package/dist/admin/components/emails/EmailThemePanel.js.map +1 -0
- package/dist/admin/components/emails/FontPicker.d.ts +11 -0
- package/dist/admin/components/emails/FontPicker.d.ts.map +1 -0
- package/dist/admin/components/emails/FontPicker.js +55 -0
- package/dist/admin/components/emails/FontPicker.js.map +1 -0
- package/dist/admin/components/emails/TextBlockEditor.d.ts +7 -0
- package/dist/admin/components/emails/TextBlockEditor.d.ts.map +1 -0
- package/dist/admin/components/emails/TextBlockEditor.js +70 -0
- package/dist/admin/components/emails/TextBlockEditor.js.map +1 -0
- package/dist/core/db/queries.d.ts +38 -29
- package/dist/core/db/queries.d.ts.map +1 -1
- package/dist/core/db/queries.js +20 -0
- package/dist/core/db/queries.js.map +1 -1
- package/dist/core/db/schema.d.ts +35 -1
- package/dist/core/db/schema.d.ts.map +1 -1
- package/dist/core/db/schema.js +4 -0
- package/dist/core/db/schema.js.map +1 -1
- package/dist/emails/blocks.d.ts +95 -0
- package/dist/emails/blocks.d.ts.map +1 -0
- package/dist/emails/blocks.js +239 -0
- package/dist/emails/blocks.js.map +1 -0
- package/dist/emails/google-fonts.d.ts +13 -0
- package/dist/emails/google-fonts.d.ts.map +1 -0
- package/dist/emails/google-fonts.js +1943 -0
- package/dist/emails/google-fonts.js.map +1 -0
- package/dist/emails/overrides.d.ts +6 -0
- package/dist/emails/overrides.d.ts.map +1 -1
- package/dist/emails/overrides.js +10 -2
- package/dist/emails/overrides.js.map +1 -1
- package/dist/emails/registry.d.ts +49 -5
- package/dist/emails/registry.d.ts.map +1 -1
- package/dist/emails/registry.js +584 -122
- package/dist/emails/registry.js.map +1 -1
- package/dist/emails/send/auth.d.ts.map +1 -1
- package/dist/emails/send/auth.js +40 -25
- package/dist/emails/send/auth.js.map +1 -1
- package/dist/emails/send/orders.d.ts.map +1 -1
- package/dist/emails/send/orders.js +85 -55
- package/dist/emails/send/orders.js.map +1 -1
- package/dist/emails/templates/base.d.ts +7 -0
- package/dist/emails/templates/base.d.ts.map +1 -1
- package/dist/emails/templates/base.js +34 -12
- package/dist/emails/templates/base.js.map +1 -1
- package/dist/emails/templates/email-verification.d.ts +4 -0
- package/dist/emails/templates/email-verification.d.ts.map +1 -1
- package/dist/emails/templates/email-verification.js +10 -2
- package/dist/emails/templates/email-verification.js.map +1 -1
- package/dist/emails/templates/order-cancelled.d.ts +4 -0
- package/dist/emails/templates/order-cancelled.d.ts.map +1 -1
- package/dist/emails/templates/order-cancelled.js +18 -10
- package/dist/emails/templates/order-cancelled.js.map +1 -1
- package/dist/emails/templates/order-confirmation.d.ts +18 -0
- package/dist/emails/templates/order-confirmation.d.ts.map +1 -1
- package/dist/emails/templates/order-confirmation.js +43 -21
- package/dist/emails/templates/order-confirmation.js.map +1 -1
- package/dist/emails/templates/order-delivered.d.ts +6 -0
- package/dist/emails/templates/order-delivered.d.ts.map +1 -1
- package/dist/emails/templates/order-delivered.js +22 -16
- package/dist/emails/templates/order-delivered.js.map +1 -1
- package/dist/emails/templates/order-ready-for-pickup.d.ts +10 -0
- package/dist/emails/templates/order-ready-for-pickup.d.ts.map +1 -1
- package/dist/emails/templates/order-ready-for-pickup.js +38 -22
- package/dist/emails/templates/order-ready-for-pickup.js.map +1 -1
- package/dist/emails/templates/order-shipped.d.ts +6 -0
- package/dist/emails/templates/order-shipped.d.ts.map +1 -1
- package/dist/emails/templates/order-shipped.js +17 -9
- package/dist/emails/templates/order-shipped.js.map +1 -1
- package/dist/emails/templates/password-reset.d.ts +4 -0
- package/dist/emails/templates/password-reset.d.ts.map +1 -1
- package/dist/emails/templates/password-reset.js +10 -2
- package/dist/emails/templates/password-reset.js.map +1 -1
- package/dist/emails/templates/refund-processed.d.ts +6 -0
- package/dist/emails/templates/refund-processed.d.ts.map +1 -1
- package/dist/emails/templates/refund-processed.js +17 -7
- package/dist/emails/templates/refund-processed.js.map +1 -1
- package/dist/emails/templates/welcome.d.ts +2 -0
- package/dist/emails/templates/welcome.d.ts.map +1 -1
- package/dist/emails/templates/welcome.js +8 -4
- package/dist/emails/templates/welcome.js.map +1 -1
- package/dist/emails/theme.d.ts +35 -12
- package/dist/emails/theme.d.ts.map +1 -1
- package/dist/emails/theme.js +178 -53
- package/dist/emails/theme.js.map +1 -1
- package/package.json +7 -1
package/dist/emails/theme.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Resolution order (highest wins), cached briefly per process:
|
|
9
9
|
* 1. store_settings.email_theme (admin "Emails → Theme" panel)
|
|
10
|
-
* 2. brand-derived defaults (blueprint
|
|
10
|
+
* 2. brand-derived defaults (blueprint colors + heading/body fonts)
|
|
11
11
|
* 3. the shipped defaults (DEFAULT_EMAIL_STYLES)
|
|
12
12
|
*
|
|
13
13
|
* Branch-per-store means one store per process, so applying the theme via
|
|
@@ -18,12 +18,51 @@
|
|
|
18
18
|
* an email is never blocked or broken by theming.
|
|
19
19
|
*/
|
|
20
20
|
import { findSettings } from '../core/db';
|
|
21
|
-
import { getBlueprint } from '../core/config';
|
|
22
21
|
import { setEmailStyles } from './templates/base';
|
|
22
|
+
import { GOOGLE_FONT_NAMES } from './google-fonts';
|
|
23
|
+
function loadNodeBuiltin(id) {
|
|
24
|
+
try {
|
|
25
|
+
const proc = process;
|
|
26
|
+
if (typeof proc.getBuiltinModule === 'function') {
|
|
27
|
+
return proc.getBuiltinModule(id) ?? null;
|
|
28
|
+
}
|
|
29
|
+
// Bundled CJS server runtimes: an indirect require stays invisible to
|
|
30
|
+
// static analysis; pure ESM throws and we fail open.
|
|
31
|
+
return (0, eval)('require')(id);
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
let blueprintThemeCache = null;
|
|
38
|
+
/** Read the blueprint's theme slice from disk. Server-only; null anywhere else. */
|
|
39
|
+
function readBlueprintTheme() {
|
|
40
|
+
if (blueprintThemeCache)
|
|
41
|
+
return blueprintThemeCache.value;
|
|
42
|
+
let value = null;
|
|
43
|
+
try {
|
|
44
|
+
if (typeof window === 'undefined' && typeof process !== 'undefined' && typeof process.cwd === 'function') {
|
|
45
|
+
const fs = loadNodeBuiltin('node:fs');
|
|
46
|
+
const path = loadNodeBuiltin('node:path');
|
|
47
|
+
if (fs && path) {
|
|
48
|
+
// Same resolution as core/config.ts getBlueprintPath() — keep in sync.
|
|
49
|
+
const blueprintPath = process.env.ROVELA_BLUEPRINT_PATH || path.join(process.cwd(), '.rovela/blueprint.json');
|
|
50
|
+
if (fs.existsSync(blueprintPath)) {
|
|
51
|
+
const parsed = JSON.parse(fs.readFileSync(blueprintPath, 'utf-8'));
|
|
52
|
+
value = parsed?.theme ?? null;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// No blueprint / unreadable — shipped defaults apply.
|
|
59
|
+
}
|
|
60
|
+
blueprintThemeCache = { value };
|
|
61
|
+
return value;
|
|
62
|
+
}
|
|
23
63
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* else — the same progressive strategy the templates always used.
|
|
64
|
+
* Suggested fonts, shown first in the picker. The full catalog
|
|
65
|
+
* (GOOGLE_FONT_NAMES, ~1900 fonts) is valid everywhere a font is accepted.
|
|
27
66
|
*/
|
|
28
67
|
export const EMAIL_FONTS = [
|
|
29
68
|
{ name: 'Plus Jakarta Sans', stack: "'Plus Jakarta Sans', system-ui, sans-serif" },
|
|
@@ -35,43 +74,93 @@ export const EMAIL_FONTS = [
|
|
|
35
74
|
{ name: 'Playfair Display', stack: "'Playfair Display', Georgia, serif" },
|
|
36
75
|
{ name: 'Georgia', stack: 'Georgia, serif' },
|
|
37
76
|
];
|
|
77
|
+
/**
|
|
78
|
+
* Well-known serif + mono Google families, so real email clients that don't
|
|
79
|
+
* load webfonts degrade into the right typographic family instead of a
|
|
80
|
+
* generic sans. Anything not listed falls back to the system sans stack —
|
|
81
|
+
* a safe default for the long tail.
|
|
82
|
+
*/
|
|
83
|
+
const SERIF_FONTS = new Set([
|
|
84
|
+
'Lora', 'Playfair Display', 'Merriweather', 'PT Serif', 'Libre Baskerville',
|
|
85
|
+
'Crimson Text', 'Crimson Pro', 'EB Garamond', 'Cormorant', 'Cormorant Garamond',
|
|
86
|
+
'Source Serif 4', 'Source Serif Pro', 'Noto Serif', 'Roboto Serif', 'IBM Plex Serif',
|
|
87
|
+
'Bitter', 'Domine', 'Spectral', 'Zilla Slab', 'Roboto Slab', 'Arvo', 'Vollkorn',
|
|
88
|
+
'Cardo', 'Neuton', 'Alegreya', 'Frank Ruhl Libre', 'Fraunces', 'Newsreader',
|
|
89
|
+
'Literata', 'Petrona', 'Bodoni Moda', 'DM Serif Display', 'DM Serif Text',
|
|
90
|
+
'Abril Fatface', 'Georgia', 'Old Standard TT', 'Prata', 'Marcellus', 'Cinzel',
|
|
91
|
+
'Gelasio', 'Tinos', 'STIX Two Text', 'Besley', 'Brygada 1918', 'Piazzolla',
|
|
92
|
+
]);
|
|
93
|
+
const MONO_FONTS = new Set([
|
|
94
|
+
'Roboto Mono', 'JetBrains Mono', 'IBM Plex Mono', 'Source Code Pro', 'Fira Code',
|
|
95
|
+
'Fira Mono', 'Space Mono', 'Inconsolata', 'Ubuntu Mono', 'Courier Prime',
|
|
96
|
+
'DM Mono', 'Overpass Mono', 'PT Mono', 'Noto Sans Mono', 'Red Hat Mono',
|
|
97
|
+
]);
|
|
98
|
+
const FONT_SET = new Set(GOOGLE_FONT_NAMES);
|
|
99
|
+
export function isEmailFont(name) {
|
|
100
|
+
return typeof name === 'string' && FONT_SET.has(name);
|
|
101
|
+
}
|
|
102
|
+
/** CSS font-family stack for a catalog font, with the right fallback family. */
|
|
103
|
+
export function fontStack(name) {
|
|
104
|
+
const quoted = name.includes(' ') || name.includes("'") ? `'${name.replace(/'/g, '')}'` : name;
|
|
105
|
+
if (SERIF_FONTS.has(name))
|
|
106
|
+
return `${quoted}, Georgia, 'Times New Roman', serif`;
|
|
107
|
+
if (MONO_FONTS.has(name))
|
|
108
|
+
return `${quoted}, 'Courier New', monospace`;
|
|
109
|
+
return `${quoted}, system-ui, -apple-system, 'Segoe UI', sans-serif`;
|
|
110
|
+
}
|
|
38
111
|
const BUTTON_RADIUS_PX = {
|
|
39
112
|
sm: '6px',
|
|
40
113
|
md: '12px',
|
|
41
114
|
full: '9999px',
|
|
42
115
|
};
|
|
116
|
+
const CARD_RADIUS_PX = {
|
|
117
|
+
sm: '8px',
|
|
118
|
+
md: '16px',
|
|
119
|
+
lg: '24px',
|
|
120
|
+
};
|
|
121
|
+
const LOGO_WIDTH_PX = {
|
|
122
|
+
sm: '120px',
|
|
123
|
+
md: '180px',
|
|
124
|
+
lg: '260px',
|
|
125
|
+
};
|
|
43
126
|
const HEX_RE = /^#[0-9a-fA-F]{6}$/;
|
|
44
|
-
|
|
45
|
-
if (typeof raw !== 'object' || raw === null || Array.isArray(raw))
|
|
46
|
-
return false;
|
|
47
|
-
const t = raw;
|
|
48
|
-
if (t.primaryColor !== undefined && !(typeof t.primaryColor === 'string' && HEX_RE.test(t.primaryColor)))
|
|
49
|
-
return false;
|
|
50
|
-
if (t.backgroundColor !== undefined && !(typeof t.backgroundColor === 'string' && HEX_RE.test(t.backgroundColor)))
|
|
51
|
-
return false;
|
|
52
|
-
if (t.fontName !== undefined && !EMAIL_FONTS.some((f) => f.name === t.fontName))
|
|
53
|
-
return false;
|
|
54
|
-
if (t.buttonRadius !== undefined && !['sm', 'md', 'full'].includes(t.buttonRadius))
|
|
55
|
-
return false;
|
|
56
|
-
if (t.footerNote !== undefined && typeof t.footerNote !== 'string')
|
|
57
|
-
return false;
|
|
58
|
-
return true;
|
|
59
|
-
}
|
|
60
|
-
/** Sanitize an incoming theme (admin writes) — keeps only valid fields. */
|
|
127
|
+
/** Sanitize an incoming theme (admin writes + reads) — keeps only valid fields. */
|
|
61
128
|
export function sanitizeEmailTheme(raw) {
|
|
62
129
|
if (typeof raw !== 'object' || raw === null || Array.isArray(raw))
|
|
63
130
|
return {};
|
|
64
131
|
const t = raw;
|
|
65
132
|
const out = {};
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
if (
|
|
69
|
-
out.
|
|
70
|
-
|
|
133
|
+
const hex = (v) => typeof v === 'string' && HEX_RE.test(v) ? v : undefined;
|
|
134
|
+
const color = hex(t.primaryColor);
|
|
135
|
+
if (color)
|
|
136
|
+
out.primaryColor = color;
|
|
137
|
+
const bg = hex(t.backgroundColor);
|
|
138
|
+
if (bg)
|
|
139
|
+
out.backgroundColor = bg;
|
|
140
|
+
const card = hex(t.cardColor);
|
|
141
|
+
if (card)
|
|
142
|
+
out.cardColor = card;
|
|
143
|
+
const text = hex(t.textColor);
|
|
144
|
+
if (text)
|
|
145
|
+
out.textColor = text;
|
|
146
|
+
if (isEmailFont(t.headingFont))
|
|
147
|
+
out.headingFont = t.headingFont;
|
|
148
|
+
if (isEmailFont(t.bodyFont))
|
|
149
|
+
out.bodyFont = t.bodyFont;
|
|
150
|
+
if (isEmailFont(t.fontName))
|
|
71
151
|
out.fontName = t.fontName;
|
|
72
152
|
if (typeof t.buttonRadius === 'string' && ['sm', 'md', 'full'].includes(t.buttonRadius)) {
|
|
73
153
|
out.buttonRadius = t.buttonRadius;
|
|
74
154
|
}
|
|
155
|
+
if (typeof t.cardRadius === 'string' && ['sm', 'md', 'lg'].includes(t.cardRadius)) {
|
|
156
|
+
out.cardRadius = t.cardRadius;
|
|
157
|
+
}
|
|
158
|
+
if (typeof t.logoSize === 'string' && ['sm', 'md', 'lg'].includes(t.logoSize)) {
|
|
159
|
+
out.logoSize = t.logoSize;
|
|
160
|
+
}
|
|
161
|
+
if (typeof t.logoAlign === 'string' && ['left', 'center'].includes(t.logoAlign)) {
|
|
162
|
+
out.logoAlign = t.logoAlign;
|
|
163
|
+
}
|
|
75
164
|
if (typeof t.footerNote === 'string')
|
|
76
165
|
out.footerNote = t.footerNote.slice(0, 300);
|
|
77
166
|
return out;
|
|
@@ -80,32 +169,55 @@ export function sanitizeEmailTheme(raw) {
|
|
|
80
169
|
// Brand derivation (the zero-config default)
|
|
81
170
|
// =============================================================================
|
|
82
171
|
/**
|
|
83
|
-
* Derive the theme from the store's brand: blueprint primary color +
|
|
84
|
-
*
|
|
85
|
-
* store's emails brand-matched with no merchant action.
|
|
172
|
+
* Derive the theme from the store's brand: blueprint primary color +
|
|
173
|
+
* heading/body fonts (when they exist in the Google catalog). This is what
|
|
174
|
+
* makes every store's emails brand-matched with no merchant action.
|
|
86
175
|
*/
|
|
87
176
|
export function deriveBrandEmailTheme() {
|
|
88
177
|
const derived = {};
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
// Blueprint fonts use next/font underscore form ('Work_Sans').
|
|
96
|
-
const bodyFontRaw = blueprint?.theme
|
|
97
|
-
?.typography?.body?.name;
|
|
98
|
-
if (typeof bodyFontRaw === 'string') {
|
|
99
|
-
const bodyFont = bodyFontRaw.replace(/_/g, ' ');
|
|
100
|
-
if (EMAIL_FONTS.some((f) => f.name === bodyFont))
|
|
101
|
-
derived.fontName = bodyFont;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
catch {
|
|
105
|
-
// No blueprint (imported stores, early boot) — shipped defaults apply.
|
|
178
|
+
const theme = readBlueprintTheme();
|
|
179
|
+
if (!theme)
|
|
180
|
+
return derived;
|
|
181
|
+
const primary = theme.colors?.primary?.['500'];
|
|
182
|
+
if (typeof primary === 'string' && HEX_RE.test(primary)) {
|
|
183
|
+
derived.primaryColor = primary;
|
|
106
184
|
}
|
|
185
|
+
// Blueprint fonts use next/font underscore form ('Work_Sans').
|
|
186
|
+
const font = (raw) => {
|
|
187
|
+
if (typeof raw !== 'string')
|
|
188
|
+
return undefined;
|
|
189
|
+
const name = raw.replace(/_/g, ' ');
|
|
190
|
+
return isEmailFont(name) ? name : undefined;
|
|
191
|
+
};
|
|
192
|
+
const headingFont = font(theme.typography?.heading?.name);
|
|
193
|
+
if (headingFont)
|
|
194
|
+
derived.headingFont = headingFont;
|
|
195
|
+
const bodyFont = font(theme.typography?.body?.name);
|
|
196
|
+
if (bodyFont)
|
|
197
|
+
derived.bodyFont = bodyFont;
|
|
107
198
|
return derived;
|
|
108
199
|
}
|
|
200
|
+
/**
|
|
201
|
+
* Brand color swatches for the admin theme panel — one click puts the store
|
|
202
|
+
* on-brand. Unique, ordered by prominence.
|
|
203
|
+
*/
|
|
204
|
+
export function deriveBrandPalette() {
|
|
205
|
+
const theme = readBlueprintTheme();
|
|
206
|
+
if (!theme?.colors)
|
|
207
|
+
return [];
|
|
208
|
+
const out = [];
|
|
209
|
+
const push = (v) => {
|
|
210
|
+
if (typeof v === 'string' && HEX_RE.test(v) && !out.includes(v))
|
|
211
|
+
out.push(v);
|
|
212
|
+
};
|
|
213
|
+
for (const scale of [theme.colors.primary, theme.colors.secondary, theme.colors.accent]) {
|
|
214
|
+
push(scale?.['500']);
|
|
215
|
+
push(scale?.['700']);
|
|
216
|
+
}
|
|
217
|
+
push(theme.colors.neutral?.['900']);
|
|
218
|
+
push(theme.colors.neutral?.['50']);
|
|
219
|
+
return out.slice(0, 8);
|
|
220
|
+
}
|
|
109
221
|
// =============================================================================
|
|
110
222
|
// Resolution + application (the send/preview chokepoint)
|
|
111
223
|
// =============================================================================
|
|
@@ -115,15 +227,28 @@ function themeToStyles(theme) {
|
|
|
115
227
|
styles.primaryColor = theme.primaryColor;
|
|
116
228
|
if (theme.backgroundColor)
|
|
117
229
|
styles.backgroundColor = theme.backgroundColor;
|
|
118
|
-
if (theme.
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
230
|
+
if (theme.cardColor)
|
|
231
|
+
styles.cardBackground = theme.cardColor;
|
|
232
|
+
if (theme.textColor)
|
|
233
|
+
styles.textPrimary = theme.textColor;
|
|
234
|
+
const bodyFont = theme.bodyFont ?? theme.fontName;
|
|
235
|
+
if (bodyFont && isEmailFont(bodyFont)) {
|
|
236
|
+
styles.fontName = bodyFont;
|
|
237
|
+
styles.fontFamily = fontStack(bodyFont);
|
|
238
|
+
}
|
|
239
|
+
const headingFont = theme.headingFont ?? bodyFont;
|
|
240
|
+
if (headingFont && isEmailFont(headingFont)) {
|
|
241
|
+
styles.headingFontName = headingFont;
|
|
242
|
+
styles.headingFontFamily = fontStack(headingFont);
|
|
124
243
|
}
|
|
125
244
|
if (theme.buttonRadius)
|
|
126
245
|
styles.buttonRadius = BUTTON_RADIUS_PX[theme.buttonRadius];
|
|
246
|
+
if (theme.cardRadius)
|
|
247
|
+
styles.cardRadius = CARD_RADIUS_PX[theme.cardRadius];
|
|
248
|
+
if (theme.logoSize)
|
|
249
|
+
styles.logoWidth = LOGO_WIDTH_PX[theme.logoSize];
|
|
250
|
+
if (theme.logoAlign)
|
|
251
|
+
styles.logoAlign = theme.logoAlign;
|
|
127
252
|
if (theme.footerNote !== undefined)
|
|
128
253
|
styles.footerNote = theme.footerNote;
|
|
129
254
|
return styles;
|
package/dist/emails/theme.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/emails/theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/emails/theme.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rovela-ai/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"description": "Rovela SDK - Pre-built e-commerce components for AI-powered store generation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -296,7 +296,13 @@
|
|
|
296
296
|
"dependencies": {
|
|
297
297
|
"@aws-sdk/client-s3": "3.978.0",
|
|
298
298
|
"@aws-sdk/s3-request-presigner": "3.978.0",
|
|
299
|
+
"@dnd-kit/core": "^6.3.1",
|
|
300
|
+
"@dnd-kit/sortable": "^10.0.0",
|
|
301
|
+
"@dnd-kit/utilities": "^3.2.2",
|
|
299
302
|
"@neondatabase/serverless": "1.0.2",
|
|
303
|
+
"@tiptap/extension-link": "^3.23.6",
|
|
304
|
+
"@tiptap/react": "^3.23.6",
|
|
305
|
+
"@tiptap/starter-kit": "^3.23.6",
|
|
300
306
|
"bcryptjs": "3.0.3",
|
|
301
307
|
"clsx": "2.1.1",
|
|
302
308
|
"drizzle-orm": "0.44.7",
|