brookmind-emails 0.1.11 → 0.1.12
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/.context/attachments/Review request.md +61 -0
- package/.context/notes.md +0 -0
- package/.context/todos.md +0 -0
- package/dist/foodstudio/config.d.ts +11 -0
- package/dist/foodstudio/config.d.ts.map +1 -0
- package/dist/foodstudio/config.js +12 -0
- package/dist/foodstudio/index.d.ts +16 -0
- package/dist/foodstudio/index.d.ts.map +1 -0
- package/dist/foodstudio/index.js +43 -0
- package/dist/foodstudio/templates/GrantCreditsEmail.d.ts +10 -0
- package/dist/foodstudio/templates/GrantCreditsEmail.d.ts.map +1 -0
- package/dist/foodstudio/templates/GrantCreditsEmail.js +188 -0
- package/dist/foodstudio/templates/OtpEmail.d.ts +8 -0
- package/dist/foodstudio/templates/OtpEmail.d.ts.map +1 -0
- package/dist/foodstudio/templates/OtpEmail.js +144 -0
- package/dist/foodstudio/templates/PromoSubscriptionEmail.d.ts +11 -0
- package/dist/foodstudio/templates/PromoSubscriptionEmail.d.ts.map +1 -0
- package/dist/foodstudio/templates/PromoSubscriptionEmail.js +170 -0
- package/dist/foodstudio/templates/WelcomeEmail.d.ts +6 -0
- package/dist/foodstudio/templates/WelcomeEmail.d.ts.map +1 -0
- package/dist/foodstudio/templates/WelcomeEmail.js +155 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/package.json +6 -1
- package/src/foodstudio/config.ts +12 -0
- package/src/foodstudio/index.ts +71 -0
- package/src/foodstudio/templates/GrantCreditsEmail.tsx +352 -0
- package/src/foodstudio/templates/OtpEmail.tsx +273 -0
- package/src/foodstudio/templates/PromoSubscriptionEmail.tsx +344 -0
- package/src/foodstudio/templates/WelcomeEmail.tsx +293 -0
- package/src/index.ts +3 -0
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Html,
|
|
3
|
+
Head,
|
|
4
|
+
Body,
|
|
5
|
+
Container,
|
|
6
|
+
Section,
|
|
7
|
+
Text,
|
|
8
|
+
Link,
|
|
9
|
+
Preview,
|
|
10
|
+
Font,
|
|
11
|
+
Img,
|
|
12
|
+
Button as ReactEmailButton,
|
|
13
|
+
} from "@react-email/components";
|
|
14
|
+
import { foodstudioConfig } from "../config.js";
|
|
15
|
+
|
|
16
|
+
export interface PromoSubscriptionEmailProps {
|
|
17
|
+
email: string;
|
|
18
|
+
planName: string;
|
|
19
|
+
durationDays: number;
|
|
20
|
+
credits?: number;
|
|
21
|
+
expiresAt: string;
|
|
22
|
+
notes?: string;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Design System Colors - Matching FoodStudio Landing
|
|
26
|
+
const colors = {
|
|
27
|
+
background: "#0d0d0d",
|
|
28
|
+
cardBg: "#121212",
|
|
29
|
+
primary: "#ea580c",
|
|
30
|
+
accent: "#ea580c",
|
|
31
|
+
white: "#f2f2f2",
|
|
32
|
+
textSecondary: "rgba(242, 242, 242, 0.7)",
|
|
33
|
+
textMuted: "#8c8c8c",
|
|
34
|
+
border: "#262626",
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
const styles = {
|
|
38
|
+
body: {
|
|
39
|
+
margin: 0,
|
|
40
|
+
padding: 0,
|
|
41
|
+
backgroundColor: colors.background,
|
|
42
|
+
fontFamily: "'Inter', 'Segoe UI', Arial, sans-serif",
|
|
43
|
+
},
|
|
44
|
+
container: {
|
|
45
|
+
maxWidth: "600px",
|
|
46
|
+
margin: "0 auto",
|
|
47
|
+
backgroundColor: colors.background,
|
|
48
|
+
},
|
|
49
|
+
header: {
|
|
50
|
+
backgroundColor: colors.background,
|
|
51
|
+
padding: "40px 32px 24px",
|
|
52
|
+
textAlign: "center" as const,
|
|
53
|
+
},
|
|
54
|
+
logo: {
|
|
55
|
+
display: "block" as const,
|
|
56
|
+
margin: "0 auto",
|
|
57
|
+
},
|
|
58
|
+
heroSection: {
|
|
59
|
+
padding: "24px 32px 40px",
|
|
60
|
+
textAlign: "center" as const,
|
|
61
|
+
},
|
|
62
|
+
heroTagline: {
|
|
63
|
+
margin: "0 0 12px",
|
|
64
|
+
fontSize: "13px",
|
|
65
|
+
fontWeight: 600,
|
|
66
|
+
color: colors.accent,
|
|
67
|
+
letterSpacing: "2px",
|
|
68
|
+
textTransform: "uppercase" as const,
|
|
69
|
+
},
|
|
70
|
+
heroHeading: {
|
|
71
|
+
margin: "0 0 16px",
|
|
72
|
+
fontSize: "28px",
|
|
73
|
+
fontWeight: 700,
|
|
74
|
+
color: colors.white,
|
|
75
|
+
lineHeight: "1.3",
|
|
76
|
+
},
|
|
77
|
+
paragraph: {
|
|
78
|
+
margin: "0 0 28px",
|
|
79
|
+
fontSize: "16px",
|
|
80
|
+
lineHeight: "1.6",
|
|
81
|
+
color: colors.textSecondary,
|
|
82
|
+
textAlign: "center" as const,
|
|
83
|
+
},
|
|
84
|
+
highlightBox: {
|
|
85
|
+
backgroundColor: "rgba(234, 88, 12, 0.15)",
|
|
86
|
+
border: `1px solid rgba(234, 88, 12, 0.3)`,
|
|
87
|
+
borderRadius: "12px",
|
|
88
|
+
padding: "24px",
|
|
89
|
+
marginBottom: "28px",
|
|
90
|
+
},
|
|
91
|
+
highlightLabel: {
|
|
92
|
+
fontSize: "13px",
|
|
93
|
+
color: colors.textMuted,
|
|
94
|
+
margin: "0 0 4px",
|
|
95
|
+
},
|
|
96
|
+
highlightValue: {
|
|
97
|
+
fontSize: "16px",
|
|
98
|
+
fontWeight: 600,
|
|
99
|
+
color: colors.white,
|
|
100
|
+
margin: 0,
|
|
101
|
+
},
|
|
102
|
+
buttonContainer: {
|
|
103
|
+
textAlign: "center" as const,
|
|
104
|
+
marginBottom: "28px",
|
|
105
|
+
},
|
|
106
|
+
ctaButton: {
|
|
107
|
+
display: "inline-block",
|
|
108
|
+
padding: "14px 36px",
|
|
109
|
+
fontSize: "15px",
|
|
110
|
+
fontWeight: 600,
|
|
111
|
+
textDecoration: "none",
|
|
112
|
+
borderRadius: "10px",
|
|
113
|
+
backgroundColor: colors.primary,
|
|
114
|
+
color: "#ffffff",
|
|
115
|
+
textAlign: "center" as const,
|
|
116
|
+
},
|
|
117
|
+
contentSection: {
|
|
118
|
+
backgroundColor: colors.cardBg,
|
|
119
|
+
padding: "32px",
|
|
120
|
+
borderTop: `1px solid ${colors.border}`,
|
|
121
|
+
},
|
|
122
|
+
smallText: {
|
|
123
|
+
margin: "0 0 12px",
|
|
124
|
+
fontSize: "14px",
|
|
125
|
+
lineHeight: "1.6",
|
|
126
|
+
color: colors.textMuted,
|
|
127
|
+
textAlign: "center" as const,
|
|
128
|
+
},
|
|
129
|
+
notesText: {
|
|
130
|
+
margin: "0 0 24px",
|
|
131
|
+
fontSize: "15px",
|
|
132
|
+
lineHeight: "1.6",
|
|
133
|
+
color: colors.textSecondary,
|
|
134
|
+
textAlign: "center" as const,
|
|
135
|
+
fontStyle: "italic" as const,
|
|
136
|
+
},
|
|
137
|
+
link: {
|
|
138
|
+
color: colors.primary,
|
|
139
|
+
textDecoration: "none",
|
|
140
|
+
fontWeight: 600,
|
|
141
|
+
},
|
|
142
|
+
footer: {
|
|
143
|
+
backgroundColor: colors.cardBg,
|
|
144
|
+
padding: "24px 32px",
|
|
145
|
+
textAlign: "center" as const,
|
|
146
|
+
borderTop: `1px solid ${colors.border}`,
|
|
147
|
+
},
|
|
148
|
+
footerLogo: {
|
|
149
|
+
display: "block" as const,
|
|
150
|
+
margin: "0 auto 12px",
|
|
151
|
+
opacity: 0.6,
|
|
152
|
+
},
|
|
153
|
+
footerText: {
|
|
154
|
+
margin: "0 0 4px",
|
|
155
|
+
fontSize: "11px",
|
|
156
|
+
color: colors.textMuted,
|
|
157
|
+
lineHeight: "1.6",
|
|
158
|
+
},
|
|
159
|
+
footerLink: {
|
|
160
|
+
color: colors.textMuted,
|
|
161
|
+
textDecoration: "underline",
|
|
162
|
+
},
|
|
163
|
+
downloadSection: {
|
|
164
|
+
backgroundColor: colors.cardBg,
|
|
165
|
+
padding: "24px 32px",
|
|
166
|
+
textAlign: "center" as const,
|
|
167
|
+
borderTop: `1px solid ${colors.border}`,
|
|
168
|
+
},
|
|
169
|
+
downloadText: {
|
|
170
|
+
margin: "0 0 16px",
|
|
171
|
+
fontSize: "14px",
|
|
172
|
+
color: colors.white,
|
|
173
|
+
},
|
|
174
|
+
badgeContainer: {
|
|
175
|
+
textAlign: "center" as const,
|
|
176
|
+
},
|
|
177
|
+
badge: {
|
|
178
|
+
display: "inline-block",
|
|
179
|
+
margin: "0 8px",
|
|
180
|
+
},
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
export function PromoSubscriptionEmail({
|
|
184
|
+
email = "user@example.com",
|
|
185
|
+
planName = "Pro",
|
|
186
|
+
durationDays = 30,
|
|
187
|
+
credits = 500,
|
|
188
|
+
expiresAt = "January 31, 2025",
|
|
189
|
+
notes,
|
|
190
|
+
}: PromoSubscriptionEmailProps): React.ReactElement {
|
|
191
|
+
const safeCredits = Number.isFinite(credits) ? Number(credits) : 0;
|
|
192
|
+
|
|
193
|
+
return (
|
|
194
|
+
<Html lang="en">
|
|
195
|
+
<Head>
|
|
196
|
+
<Font
|
|
197
|
+
fontFamily="Inter"
|
|
198
|
+
fallbackFontFamily="Arial"
|
|
199
|
+
webFont={{
|
|
200
|
+
url: "https://fonts.gstatic.com/s/inter/v13/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfAZ9hjp-Ek-_0.woff2",
|
|
201
|
+
format: "woff2",
|
|
202
|
+
}}
|
|
203
|
+
fontWeight={400}
|
|
204
|
+
fontStyle="normal"
|
|
205
|
+
/>
|
|
206
|
+
<Font
|
|
207
|
+
fontFamily="Inter"
|
|
208
|
+
fallbackFontFamily="Arial"
|
|
209
|
+
webFont={{
|
|
210
|
+
url: "https://fonts.gstatic.com/s/inter/v13/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuFuYAZ9hjp-Ek-_0.woff2",
|
|
211
|
+
format: "woff2",
|
|
212
|
+
}}
|
|
213
|
+
fontWeight={700}
|
|
214
|
+
fontStyle="normal"
|
|
215
|
+
/>
|
|
216
|
+
</Head>
|
|
217
|
+
<Preview>
|
|
218
|
+
{`You've received a ${durationDays}-day ${planName} subscription!`}
|
|
219
|
+
</Preview>
|
|
220
|
+
<Body style={styles.body}>
|
|
221
|
+
<Container style={styles.container}>
|
|
222
|
+
{/* Header */}
|
|
223
|
+
<Section style={styles.header}>
|
|
224
|
+
<Img
|
|
225
|
+
src={foodstudioConfig.logoUrl}
|
|
226
|
+
width="130"
|
|
227
|
+
height="auto"
|
|
228
|
+
alt="FoodStudio"
|
|
229
|
+
style={styles.logo}
|
|
230
|
+
/>
|
|
231
|
+
</Section>
|
|
232
|
+
|
|
233
|
+
{/* Hero Section */}
|
|
234
|
+
<Section style={styles.heroSection}>
|
|
235
|
+
<Text style={styles.heroTagline}>Gift for You</Text>
|
|
236
|
+
<Text style={styles.heroHeading}>You've Got a Gift!</Text>
|
|
237
|
+
<Text style={{ ...styles.paragraph, margin: "0 0 4px" }}>
|
|
238
|
+
Hi <span style={{ color: colors.white, fontWeight: 600 }}>{email}</span>, great news!
|
|
239
|
+
</Text>
|
|
240
|
+
<Text style={styles.paragraph}>
|
|
241
|
+
You've been granted a promotional{" "}
|
|
242
|
+
<span style={{ color: colors.accent, fontWeight: 600 }}>{planName}</span> subscription.
|
|
243
|
+
</Text>
|
|
244
|
+
|
|
245
|
+
<div style={styles.highlightBox}>
|
|
246
|
+
<table width="100%" cellPadding={0} cellSpacing={0}>
|
|
247
|
+
<tbody>
|
|
248
|
+
<tr>
|
|
249
|
+
<td style={{ paddingBottom: "16px" }}>
|
|
250
|
+
<Text style={styles.highlightLabel}>Plan</Text>
|
|
251
|
+
<Text style={styles.highlightValue}>{planName}</Text>
|
|
252
|
+
</td>
|
|
253
|
+
<td style={{ paddingBottom: "16px", textAlign: "right" as const }}>
|
|
254
|
+
<Text style={styles.highlightLabel}>Duration</Text>
|
|
255
|
+
<Text style={styles.highlightValue}>{durationDays} days</Text>
|
|
256
|
+
</td>
|
|
257
|
+
</tr>
|
|
258
|
+
<tr>
|
|
259
|
+
<td>
|
|
260
|
+
<Text style={styles.highlightLabel}>Credits Included</Text>
|
|
261
|
+
<Text style={styles.highlightValue}>{safeCredits.toLocaleString()}</Text>
|
|
262
|
+
</td>
|
|
263
|
+
<td style={{ textAlign: "right" as const }}>
|
|
264
|
+
<Text style={styles.highlightLabel}>Expires</Text>
|
|
265
|
+
<Text style={styles.highlightValue}>{expiresAt}</Text>
|
|
266
|
+
</td>
|
|
267
|
+
</tr>
|
|
268
|
+
</tbody>
|
|
269
|
+
</table>
|
|
270
|
+
</div>
|
|
271
|
+
|
|
272
|
+
{notes && <Text style={styles.notesText}>"{notes}"</Text>}
|
|
273
|
+
|
|
274
|
+
<div style={styles.buttonContainer}>
|
|
275
|
+
<ReactEmailButton href={foodstudioConfig.appUrl} style={styles.ctaButton}>
|
|
276
|
+
Open FoodStudio
|
|
277
|
+
</ReactEmailButton>
|
|
278
|
+
</div>
|
|
279
|
+
</Section>
|
|
280
|
+
|
|
281
|
+
{/* Content Section */}
|
|
282
|
+
<Section style={styles.contentSection}>
|
|
283
|
+
<Text style={styles.smallText}>
|
|
284
|
+
This promotional subscription will not auto-renew. Enjoy your free access!
|
|
285
|
+
</Text>
|
|
286
|
+
<Text style={styles.smallText}>
|
|
287
|
+
Questions?{" "}
|
|
288
|
+
<Link href={`mailto:${foodstudioConfig.supportEmail}`} style={styles.link}>
|
|
289
|
+
{foodstudioConfig.supportEmail}
|
|
290
|
+
</Link>
|
|
291
|
+
</Text>
|
|
292
|
+
</Section>
|
|
293
|
+
|
|
294
|
+
{/* Download App Section */}
|
|
295
|
+
<Section style={styles.downloadSection}>
|
|
296
|
+
<Text style={styles.downloadText}>Get the FoodStudio app</Text>
|
|
297
|
+
<div style={styles.badgeContainer}>
|
|
298
|
+
<Link href={foodstudioConfig.appStoreUrl} style={styles.badge}>
|
|
299
|
+
<Img
|
|
300
|
+
src={foodstudioConfig.appStoreBadgeUrl}
|
|
301
|
+
width="120"
|
|
302
|
+
height="40"
|
|
303
|
+
alt="Download on the App Store"
|
|
304
|
+
/>
|
|
305
|
+
</Link>
|
|
306
|
+
<Link href={foodstudioConfig.playStoreUrl} style={styles.badge}>
|
|
307
|
+
<Img
|
|
308
|
+
src={foodstudioConfig.playStoreBadgeUrl}
|
|
309
|
+
width="135"
|
|
310
|
+
height="40"
|
|
311
|
+
alt="Get it on Google Play"
|
|
312
|
+
/>
|
|
313
|
+
</Link>
|
|
314
|
+
</div>
|
|
315
|
+
</Section>
|
|
316
|
+
|
|
317
|
+
{/* Footer */}
|
|
318
|
+
<Section style={styles.footer}>
|
|
319
|
+
<Img
|
|
320
|
+
src={foodstudioConfig.logoUrl}
|
|
321
|
+
width="80"
|
|
322
|
+
height="auto"
|
|
323
|
+
alt="FoodStudio"
|
|
324
|
+
style={styles.footerLogo}
|
|
325
|
+
/>
|
|
326
|
+
<Text style={styles.footerText}>
|
|
327
|
+
© {new Date().getFullYear()} {foodstudioConfig.companyName}. All rights reserved.
|
|
328
|
+
</Text>
|
|
329
|
+
<Text style={styles.footerText}>
|
|
330
|
+
You received this email because you were granted a promotional subscription.
|
|
331
|
+
</Text>
|
|
332
|
+
<Text style={styles.footerText}>
|
|
333
|
+
<Link href={`${foodstudioConfig.appUrl}/privacy`} style={styles.footerLink}>
|
|
334
|
+
Privacy Policy
|
|
335
|
+
</Link>
|
|
336
|
+
</Text>
|
|
337
|
+
</Section>
|
|
338
|
+
</Container>
|
|
339
|
+
</Body>
|
|
340
|
+
</Html>
|
|
341
|
+
);
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
export default PromoSubscriptionEmail;
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Html,
|
|
3
|
+
Head,
|
|
4
|
+
Body,
|
|
5
|
+
Container,
|
|
6
|
+
Section,
|
|
7
|
+
Text,
|
|
8
|
+
Link,
|
|
9
|
+
Preview,
|
|
10
|
+
Font,
|
|
11
|
+
Img,
|
|
12
|
+
Button as ReactEmailButton,
|
|
13
|
+
} from "@react-email/components";
|
|
14
|
+
import { foodstudioConfig } from "../config.js";
|
|
15
|
+
|
|
16
|
+
export interface WelcomeEmailProps {
|
|
17
|
+
email: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Design System Colors - Matching FoodStudio Landing
|
|
21
|
+
const colors = {
|
|
22
|
+
background: "#0d0d0d",
|
|
23
|
+
cardBg: "#121212",
|
|
24
|
+
primary: "#ea580c",
|
|
25
|
+
white: "#f2f2f2",
|
|
26
|
+
textSecondary: "rgba(242, 242, 242, 0.7)",
|
|
27
|
+
textMuted: "#8c8c8c",
|
|
28
|
+
border: "#262626",
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const styles = {
|
|
32
|
+
body: {
|
|
33
|
+
margin: 0,
|
|
34
|
+
padding: 0,
|
|
35
|
+
backgroundColor: colors.background,
|
|
36
|
+
fontFamily: "'Inter', 'Segoe UI', Arial, sans-serif",
|
|
37
|
+
},
|
|
38
|
+
container: {
|
|
39
|
+
maxWidth: "600px",
|
|
40
|
+
margin: "0 auto",
|
|
41
|
+
backgroundColor: colors.background,
|
|
42
|
+
},
|
|
43
|
+
header: {
|
|
44
|
+
backgroundColor: colors.background,
|
|
45
|
+
padding: "40px 32px 24px",
|
|
46
|
+
textAlign: "center" as const,
|
|
47
|
+
},
|
|
48
|
+
logo: {
|
|
49
|
+
display: "block" as const,
|
|
50
|
+
margin: "0 auto",
|
|
51
|
+
},
|
|
52
|
+
heroSection: {
|
|
53
|
+
padding: "24px 32px 40px",
|
|
54
|
+
textAlign: "center" as const,
|
|
55
|
+
},
|
|
56
|
+
heroTagline: {
|
|
57
|
+
margin: "0 0 12px",
|
|
58
|
+
fontSize: "13px",
|
|
59
|
+
fontWeight: 600,
|
|
60
|
+
color: colors.primary,
|
|
61
|
+
letterSpacing: "2px",
|
|
62
|
+
textTransform: "uppercase" as const,
|
|
63
|
+
},
|
|
64
|
+
heroHeading: {
|
|
65
|
+
margin: "0 0 16px",
|
|
66
|
+
fontSize: "28px",
|
|
67
|
+
fontWeight: 700,
|
|
68
|
+
color: colors.white,
|
|
69
|
+
lineHeight: "1.3",
|
|
70
|
+
},
|
|
71
|
+
heroSubheading: {
|
|
72
|
+
margin: "0 0 28px",
|
|
73
|
+
fontSize: "16px",
|
|
74
|
+
lineHeight: "1.6",
|
|
75
|
+
color: colors.textSecondary,
|
|
76
|
+
},
|
|
77
|
+
heroCta: {
|
|
78
|
+
display: "inline-block",
|
|
79
|
+
padding: "14px 36px",
|
|
80
|
+
fontSize: "15px",
|
|
81
|
+
fontWeight: 600,
|
|
82
|
+
textDecoration: "none",
|
|
83
|
+
borderRadius: "10px",
|
|
84
|
+
backgroundColor: colors.primary,
|
|
85
|
+
color: "#ffffff",
|
|
86
|
+
textAlign: "center" as const,
|
|
87
|
+
},
|
|
88
|
+
welcomeSection: {
|
|
89
|
+
backgroundColor: colors.cardBg,
|
|
90
|
+
padding: "32px",
|
|
91
|
+
textAlign: "center" as const,
|
|
92
|
+
borderTop: `1px solid ${colors.border}`,
|
|
93
|
+
borderBottom: `1px solid ${colors.border}`,
|
|
94
|
+
},
|
|
95
|
+
welcomeText: {
|
|
96
|
+
margin: "0 0 16px",
|
|
97
|
+
fontSize: "16px",
|
|
98
|
+
lineHeight: "1.6",
|
|
99
|
+
color: colors.textSecondary,
|
|
100
|
+
},
|
|
101
|
+
welcomeEmail: {
|
|
102
|
+
color: colors.white,
|
|
103
|
+
fontWeight: 600,
|
|
104
|
+
},
|
|
105
|
+
supportSection: {
|
|
106
|
+
backgroundColor: colors.background,
|
|
107
|
+
padding: "32px",
|
|
108
|
+
textAlign: "center" as const,
|
|
109
|
+
},
|
|
110
|
+
supportText: {
|
|
111
|
+
margin: "0 0 4px",
|
|
112
|
+
fontSize: "13px",
|
|
113
|
+
color: colors.textMuted,
|
|
114
|
+
},
|
|
115
|
+
supportLink: {
|
|
116
|
+
color: colors.primary,
|
|
117
|
+
textDecoration: "none",
|
|
118
|
+
fontWeight: 600,
|
|
119
|
+
},
|
|
120
|
+
footer: {
|
|
121
|
+
backgroundColor: colors.cardBg,
|
|
122
|
+
padding: "24px 32px",
|
|
123
|
+
textAlign: "center" as const,
|
|
124
|
+
borderTop: `1px solid ${colors.border}`,
|
|
125
|
+
},
|
|
126
|
+
footerLogo: {
|
|
127
|
+
display: "block" as const,
|
|
128
|
+
margin: "0 auto 12px",
|
|
129
|
+
opacity: 0.6,
|
|
130
|
+
},
|
|
131
|
+
footerText: {
|
|
132
|
+
margin: "0 0 4px",
|
|
133
|
+
fontSize: "11px",
|
|
134
|
+
color: colors.textMuted,
|
|
135
|
+
lineHeight: "1.6",
|
|
136
|
+
},
|
|
137
|
+
footerLink: {
|
|
138
|
+
color: colors.textMuted,
|
|
139
|
+
textDecoration: "underline",
|
|
140
|
+
},
|
|
141
|
+
downloadSection: {
|
|
142
|
+
backgroundColor: colors.cardBg,
|
|
143
|
+
padding: "24px 32px",
|
|
144
|
+
textAlign: "center" as const,
|
|
145
|
+
borderTop: `1px solid ${colors.border}`,
|
|
146
|
+
},
|
|
147
|
+
downloadText: {
|
|
148
|
+
margin: "0 0 16px",
|
|
149
|
+
fontSize: "14px",
|
|
150
|
+
color: colors.white,
|
|
151
|
+
},
|
|
152
|
+
badgeContainer: {
|
|
153
|
+
textAlign: "center" as const,
|
|
154
|
+
},
|
|
155
|
+
badge: {
|
|
156
|
+
display: "inline-block",
|
|
157
|
+
margin: "0 8px",
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
export function WelcomeEmail({ email = "user@example.com" }: WelcomeEmailProps): React.ReactElement {
|
|
162
|
+
return (
|
|
163
|
+
<Html lang="en">
|
|
164
|
+
<Head>
|
|
165
|
+
<Font
|
|
166
|
+
fontFamily="Inter"
|
|
167
|
+
fallbackFontFamily="Arial"
|
|
168
|
+
webFont={{
|
|
169
|
+
url: "https://fonts.gstatic.com/s/inter/v13/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfAZ9hjp-Ek-_0.woff2",
|
|
170
|
+
format: "woff2",
|
|
171
|
+
}}
|
|
172
|
+
fontWeight={400}
|
|
173
|
+
fontStyle="normal"
|
|
174
|
+
/>
|
|
175
|
+
<Font
|
|
176
|
+
fontFamily="Inter"
|
|
177
|
+
fallbackFontFamily="Arial"
|
|
178
|
+
webFont={{
|
|
179
|
+
url: "https://fonts.gstatic.com/s/inter/v13/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuI6fAZ9hjp-Ek-_0.woff2",
|
|
180
|
+
format: "woff2",
|
|
181
|
+
}}
|
|
182
|
+
fontWeight={600}
|
|
183
|
+
fontStyle="normal"
|
|
184
|
+
/>
|
|
185
|
+
<Font
|
|
186
|
+
fontFamily="Inter"
|
|
187
|
+
fallbackFontFamily="Arial"
|
|
188
|
+
webFont={{
|
|
189
|
+
url: "https://fonts.gstatic.com/s/inter/v13/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuFuYAZ9hjp-Ek-_0.woff2",
|
|
190
|
+
format: "woff2",
|
|
191
|
+
}}
|
|
192
|
+
fontWeight={700}
|
|
193
|
+
fontStyle="normal"
|
|
194
|
+
/>
|
|
195
|
+
</Head>
|
|
196
|
+
<Preview>Welcome to FoodStudio</Preview>
|
|
197
|
+
<Body style={styles.body}>
|
|
198
|
+
<Container style={styles.container}>
|
|
199
|
+
{/* Header */}
|
|
200
|
+
<Section style={styles.header}>
|
|
201
|
+
<Img
|
|
202
|
+
src={foodstudioConfig.logoUrl}
|
|
203
|
+
width="130"
|
|
204
|
+
height="auto"
|
|
205
|
+
alt="FoodStudio"
|
|
206
|
+
style={styles.logo}
|
|
207
|
+
/>
|
|
208
|
+
</Section>
|
|
209
|
+
|
|
210
|
+
{/* Hero Section */}
|
|
211
|
+
<Section style={styles.heroSection}>
|
|
212
|
+
<Text style={styles.heroTagline}>Welcome to FoodStudio</Text>
|
|
213
|
+
<Text style={styles.heroHeading}>
|
|
214
|
+
Your Account is Ready!
|
|
215
|
+
</Text>
|
|
216
|
+
<Text style={styles.heroSubheading}>
|
|
217
|
+
We're excited to have you on board. Start exploring FoodStudio and discover all the amazing features waiting for you.
|
|
218
|
+
</Text>
|
|
219
|
+
<ReactEmailButton href={foodstudioConfig.appUrl} style={styles.heroCta}>
|
|
220
|
+
Get Started
|
|
221
|
+
</ReactEmailButton>
|
|
222
|
+
</Section>
|
|
223
|
+
|
|
224
|
+
{/* Welcome Message */}
|
|
225
|
+
<Section style={styles.welcomeSection}>
|
|
226
|
+
<Text style={styles.welcomeText}>
|
|
227
|
+
Hi <span style={styles.welcomeEmail}>{email}</span>, your account is ready.
|
|
228
|
+
<br />
|
|
229
|
+
You now have access to the complete FoodStudio platform.
|
|
230
|
+
</Text>
|
|
231
|
+
</Section>
|
|
232
|
+
|
|
233
|
+
{/* Support Section */}
|
|
234
|
+
<Section style={styles.supportSection}>
|
|
235
|
+
<Text style={styles.supportText}>Need help getting started?</Text>
|
|
236
|
+
<Text style={styles.supportText}>
|
|
237
|
+
<Link href={`mailto:${foodstudioConfig.supportEmail}`} style={styles.supportLink}>
|
|
238
|
+
{foodstudioConfig.supportEmail}
|
|
239
|
+
</Link>
|
|
240
|
+
</Text>
|
|
241
|
+
</Section>
|
|
242
|
+
|
|
243
|
+
{/* Download App Section */}
|
|
244
|
+
<Section style={styles.downloadSection}>
|
|
245
|
+
<Text style={styles.downloadText}>Get the FoodStudio app</Text>
|
|
246
|
+
<div style={styles.badgeContainer}>
|
|
247
|
+
<Link href={foodstudioConfig.appStoreUrl} style={styles.badge}>
|
|
248
|
+
<Img
|
|
249
|
+
src={foodstudioConfig.appStoreBadgeUrl}
|
|
250
|
+
width="120"
|
|
251
|
+
height="40"
|
|
252
|
+
alt="Download on the App Store"
|
|
253
|
+
/>
|
|
254
|
+
</Link>
|
|
255
|
+
<Link href={foodstudioConfig.playStoreUrl} style={styles.badge}>
|
|
256
|
+
<Img
|
|
257
|
+
src={foodstudioConfig.playStoreBadgeUrl}
|
|
258
|
+
width="135"
|
|
259
|
+
height="40"
|
|
260
|
+
alt="Get it on Google Play"
|
|
261
|
+
/>
|
|
262
|
+
</Link>
|
|
263
|
+
</div>
|
|
264
|
+
</Section>
|
|
265
|
+
|
|
266
|
+
{/* Footer */}
|
|
267
|
+
<Section style={styles.footer}>
|
|
268
|
+
<Img
|
|
269
|
+
src={foodstudioConfig.logoUrl}
|
|
270
|
+
width="80"
|
|
271
|
+
height="auto"
|
|
272
|
+
alt="FoodStudio"
|
|
273
|
+
style={styles.footerLogo}
|
|
274
|
+
/>
|
|
275
|
+
<Text style={styles.footerText}>
|
|
276
|
+
© {new Date().getFullYear()} {foodstudioConfig.companyName}. All rights reserved.
|
|
277
|
+
</Text>
|
|
278
|
+
<Text style={styles.footerText}>
|
|
279
|
+
You received this email because you signed up for FoodStudio.
|
|
280
|
+
</Text>
|
|
281
|
+
<Text style={styles.footerText}>
|
|
282
|
+
<Link href={`${foodstudioConfig.appUrl}/privacy`} style={styles.footerLink}>
|
|
283
|
+
Privacy Policy
|
|
284
|
+
</Link>
|
|
285
|
+
</Text>
|
|
286
|
+
</Section>
|
|
287
|
+
</Container>
|
|
288
|
+
</Body>
|
|
289
|
+
</Html>
|
|
290
|
+
);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
export default WelcomeEmail;
|