@tracked/emails 0.1.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/LICENSE +21 -0
- package/README.md +211 -0
- package/dist/emails/bodyweight-goal-reached.d.ts +14 -0
- package/dist/emails/bodyweight-goal-reached.d.ts.map +1 -0
- package/dist/emails/bodyweight-goal-reached.js +177 -0
- package/dist/emails/bodyweight-goal-reached.js.map +1 -0
- package/dist/emails/client-accepted-invitation.d.ts +10 -0
- package/dist/emails/client-accepted-invitation.d.ts.map +1 -0
- package/dist/emails/client-accepted-invitation.js +99 -0
- package/dist/emails/client-accepted-invitation.js.map +1 -0
- package/dist/emails/coach-invite.d.ts +10 -0
- package/dist/emails/coach-invite.d.ts.map +1 -0
- package/dist/emails/coach-invite.js +126 -0
- package/dist/emails/coach-invite.js.map +1 -0
- package/dist/emails/coach-removed-client.d.ts +8 -0
- package/dist/emails/coach-removed-client.d.ts.map +1 -0
- package/dist/emails/coach-removed-client.js +80 -0
- package/dist/emails/coach-removed-client.js.map +1 -0
- package/dist/emails/direct-message.d.ts +11 -0
- package/dist/emails/direct-message.d.ts.map +1 -0
- package/dist/emails/direct-message.js +103 -0
- package/dist/emails/direct-message.js.map +1 -0
- package/dist/emails/feature-discovery.d.ts +11 -0
- package/dist/emails/feature-discovery.d.ts.map +1 -0
- package/dist/emails/feature-discovery.js +121 -0
- package/dist/emails/feature-discovery.js.map +1 -0
- package/dist/emails/first-workout-assigned.d.ts +10 -0
- package/dist/emails/first-workout-assigned.d.ts.map +1 -0
- package/dist/emails/first-workout-assigned.js +98 -0
- package/dist/emails/first-workout-assigned.js.map +1 -0
- package/dist/emails/first-workout-completed.d.ts +11 -0
- package/dist/emails/first-workout-completed.d.ts.map +1 -0
- package/dist/emails/first-workout-completed.js +129 -0
- package/dist/emails/first-workout-completed.js.map +1 -0
- package/dist/emails/index.d.ts +7 -0
- package/dist/emails/index.d.ts.map +1 -0
- package/dist/emails/index.js +7 -0
- package/dist/emails/index.js.map +1 -0
- package/dist/emails/new-follower.d.ts +11 -0
- package/dist/emails/new-follower.d.ts.map +1 -0
- package/dist/emails/new-follower.js +98 -0
- package/dist/emails/new-follower.js.map +1 -0
- package/dist/emails/subscription-canceled.d.ts +10 -0
- package/dist/emails/subscription-canceled.d.ts.map +1 -0
- package/dist/emails/subscription-canceled.js +131 -0
- package/dist/emails/subscription-canceled.js.map +1 -0
- package/dist/emails/support-email.d.ts +8 -0
- package/dist/emails/support-email.d.ts.map +1 -0
- package/dist/emails/support-email.js +40 -0
- package/dist/emails/support-email.js.map +1 -0
- package/dist/emails/team-invite.d.ts +11 -0
- package/dist/emails/team-invite.d.ts.map +1 -0
- package/dist/emails/team-invite.js +100 -0
- package/dist/emails/team-invite.js.map +1 -0
- package/dist/emails/team-member-removed-email.d.ts +8 -0
- package/dist/emails/team-member-removed-email.d.ts.map +1 -0
- package/dist/emails/team-member-removed-email.js +97 -0
- package/dist/emails/team-member-removed-email.js.map +1 -0
- package/dist/emails/tracked-magic-link-activate.d.ts +7 -0
- package/dist/emails/tracked-magic-link-activate.d.ts.map +1 -0
- package/dist/emails/tracked-magic-link-activate.js +93 -0
- package/dist/emails/tracked-magic-link-activate.js.map +1 -0
- package/dist/emails/tracked-magic-link.d.ts +7 -0
- package/dist/emails/tracked-magic-link.d.ts.map +1 -0
- package/dist/emails/tracked-magic-link.js +101 -0
- package/dist/emails/tracked-magic-link.js.map +1 -0
- package/dist/emails/week-one-checkin.d.ts +10 -0
- package/dist/emails/week-one-checkin.d.ts.map +1 -0
- package/dist/emails/week-one-checkin.js +141 -0
- package/dist/emails/week-one-checkin.js.map +1 -0
- package/dist/emails/welcome.d.ts +8 -0
- package/dist/emails/welcome.d.ts.map +1 -0
- package/dist/emails/welcome.js +146 -0
- package/dist/emails/welcome.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/email-validation.d.ts +48 -0
- package/dist/utils/email-validation.d.ts.map +1 -0
- package/dist/utils/email-validation.js +72 -0
- package/dist/utils/email-validation.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +8 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/username-validation.d.ts +54 -0
- package/dist/utils/username-validation.d.ts.map +1 -0
- package/dist/utils/username-validation.js +76 -0
- package/dist/utils/username-validation.js.map +1 -0
- package/package.json +78 -0
- package/src/emails/bodyweight-goal-reached.tsx +396 -0
- package/src/emails/client-accepted-invitation.tsx +258 -0
- package/src/emails/coach-invite.tsx +270 -0
- package/src/emails/coach-removed-client.tsx +212 -0
- package/src/emails/direct-message.tsx +249 -0
- package/src/emails/feature-discovery.tsx +289 -0
- package/src/emails/first-workout-assigned.tsx +255 -0
- package/src/emails/first-workout-completed.tsx +312 -0
- package/src/emails/index.tsx +6 -0
- package/src/emails/new-follower.tsx +260 -0
- package/src/emails/subscription-canceled.tsx +311 -0
- package/src/emails/support-email.tsx +80 -0
- package/src/emails/team-invite.tsx +262 -0
- package/src/emails/team-member-removed-email.tsx +240 -0
- package/src/emails/tracked-magic-link-activate.tsx +252 -0
- package/src/emails/tracked-magic-link.tsx +264 -0
- package/src/emails/week-one-checkin.tsx +353 -0
- package/src/emails/welcome.tsx +341 -0
- package/src/index.ts +57 -0
- package/src/utils/email-validation.test.ts +78 -0
- package/src/utils/email-validation.ts +80 -0
- package/src/utils/index.ts +13 -0
- package/src/utils/username-validation.test.ts +118 -0
- package/src/utils/username-validation.ts +89 -0
- package/static/tracked-logo.png +0 -0
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import {
|
|
3
|
+
Body,
|
|
4
|
+
Column,
|
|
5
|
+
Container,
|
|
6
|
+
Head,
|
|
7
|
+
Hr,
|
|
8
|
+
Html,
|
|
9
|
+
Img,
|
|
10
|
+
Link,
|
|
11
|
+
Preview,
|
|
12
|
+
Row,
|
|
13
|
+
Section,
|
|
14
|
+
Text,
|
|
15
|
+
} from "@react-email/components";
|
|
16
|
+
|
|
17
|
+
interface FirstWorkoutCompletedEmailProps {
|
|
18
|
+
userName: string;
|
|
19
|
+
workoutName: string;
|
|
20
|
+
totalSets?: number;
|
|
21
|
+
totalReps?: number;
|
|
22
|
+
workoutHistoryUrl: string;
|
|
23
|
+
websiteUrl: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const baseUrl = "https://tracked.gg/android-chrome-192x192.png";
|
|
27
|
+
|
|
28
|
+
export const FirstWorkoutCompletedEmail = ({
|
|
29
|
+
userName,
|
|
30
|
+
workoutName,
|
|
31
|
+
totalSets,
|
|
32
|
+
totalReps,
|
|
33
|
+
workoutHistoryUrl,
|
|
34
|
+
websiteUrl = "https://tracked.gg",
|
|
35
|
+
}: FirstWorkoutCompletedEmailProps) => {
|
|
36
|
+
return (
|
|
37
|
+
<Html>
|
|
38
|
+
<Head>
|
|
39
|
+
<meta name="color-scheme" content="light only" />
|
|
40
|
+
<meta name="supported-color-schemes" content="light only" />
|
|
41
|
+
</Head>
|
|
42
|
+
<Preview>Congratulations on completing your first workout on Tracked!</Preview>
|
|
43
|
+
<Body style={main}>
|
|
44
|
+
<Container style={container}>
|
|
45
|
+
<Section style={box}>
|
|
46
|
+
<Row style={{ marginBottom: "8px" }}>
|
|
47
|
+
<Column style={{ width: "auto", verticalAlign: "middle" }}>
|
|
48
|
+
<Img src={`${baseUrl}`} width="28" height="28" alt="Tracked" />
|
|
49
|
+
</Column>
|
|
50
|
+
<Column
|
|
51
|
+
style={{
|
|
52
|
+
width: "auto",
|
|
53
|
+
verticalAlign: "middle",
|
|
54
|
+
paddingLeft: "4px",
|
|
55
|
+
}}
|
|
56
|
+
>
|
|
57
|
+
<Text
|
|
58
|
+
style={{
|
|
59
|
+
fontSize: "28px",
|
|
60
|
+
fontWeight: "900",
|
|
61
|
+
fontFamily:
|
|
62
|
+
"Raleway, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
|
|
63
|
+
color: "#020617",
|
|
64
|
+
margin: "0",
|
|
65
|
+
lineHeight: "32px",
|
|
66
|
+
letterSpacing: "0.5px",
|
|
67
|
+
}}
|
|
68
|
+
>
|
|
69
|
+
TRACKED
|
|
70
|
+
</Text>
|
|
71
|
+
</Column>
|
|
72
|
+
</Row>
|
|
73
|
+
<Hr style={hr} />
|
|
74
|
+
|
|
75
|
+
<Section style={{ textAlign: "center" as const, margin: "24px 0" }}>
|
|
76
|
+
<Text style={{ fontSize: "48px", margin: "0" }}>🎉</Text>
|
|
77
|
+
</Section>
|
|
78
|
+
|
|
79
|
+
<Text style={heading}>First Workout Complete!</Text>
|
|
80
|
+
<Text style={paragraph}>
|
|
81
|
+
Congratulations, {userName}! You've just completed your first workout
|
|
82
|
+
on Tracked. This is the beginning of an amazing journey.
|
|
83
|
+
</Text>
|
|
84
|
+
|
|
85
|
+
<Section style={statsBox}>
|
|
86
|
+
<Text style={statsHeading}>Your First Workout:</Text>
|
|
87
|
+
<Text style={statsText}>
|
|
88
|
+
<strong>Workout:</strong> {workoutName}
|
|
89
|
+
</Text>
|
|
90
|
+
{totalSets !== undefined && (
|
|
91
|
+
<Text style={statsText}>
|
|
92
|
+
<strong>Sets Completed:</strong> {totalSets}
|
|
93
|
+
</Text>
|
|
94
|
+
)}
|
|
95
|
+
{totalReps !== undefined && (
|
|
96
|
+
<Text style={statsText}>
|
|
97
|
+
<strong>Total Reps:</strong> {totalReps}
|
|
98
|
+
</Text>
|
|
99
|
+
)}
|
|
100
|
+
</Section>
|
|
101
|
+
|
|
102
|
+
<Section style={motivationBox}>
|
|
103
|
+
<Text style={motivationText}>
|
|
104
|
+
"The secret of getting ahead is getting started." - Mark Twain
|
|
105
|
+
</Text>
|
|
106
|
+
</Section>
|
|
107
|
+
|
|
108
|
+
<Text style={paragraph}>
|
|
109
|
+
You've taken the first step towards your fitness goals. Keep showing
|
|
110
|
+
up, stay consistent, and watch yourself grow stronger every day.
|
|
111
|
+
</Text>
|
|
112
|
+
|
|
113
|
+
<div
|
|
114
|
+
style={{
|
|
115
|
+
marginTop: "24px",
|
|
116
|
+
marginBottom: "24px",
|
|
117
|
+
textAlign: "left" as const,
|
|
118
|
+
}}
|
|
119
|
+
>
|
|
120
|
+
<a
|
|
121
|
+
href={workoutHistoryUrl}
|
|
122
|
+
style={{
|
|
123
|
+
backgroundColor: "#0f172a",
|
|
124
|
+
borderRadius: "8px",
|
|
125
|
+
fontSize: "16px",
|
|
126
|
+
fontWeight: "bold",
|
|
127
|
+
textDecoration: "none",
|
|
128
|
+
padding: "12px 32px",
|
|
129
|
+
display: "inline-block",
|
|
130
|
+
}}
|
|
131
|
+
>
|
|
132
|
+
<span style={{ color: "#ffffff", textDecoration: "none" }}>
|
|
133
|
+
View Your Progress
|
|
134
|
+
</span>
|
|
135
|
+
</a>
|
|
136
|
+
</div>
|
|
137
|
+
|
|
138
|
+
<Section style={tipBox}>
|
|
139
|
+
<Text style={tipHeading}>Pro Tip:</Text>
|
|
140
|
+
<Text style={tipText}>
|
|
141
|
+
Track every workout to see your progress over time. The data you
|
|
142
|
+
collect now will help you understand how far you've come in the
|
|
143
|
+
weeks and months ahead.
|
|
144
|
+
</Text>
|
|
145
|
+
</Section>
|
|
146
|
+
|
|
147
|
+
<div
|
|
148
|
+
style={{
|
|
149
|
+
textAlign: "left" as const,
|
|
150
|
+
margin: "24px 0",
|
|
151
|
+
}}
|
|
152
|
+
>
|
|
153
|
+
<a
|
|
154
|
+
href="https://www.discord.gg/trackedgg"
|
|
155
|
+
style={{
|
|
156
|
+
backgroundColor: "#5865F2",
|
|
157
|
+
borderRadius: "8px",
|
|
158
|
+
fontSize: "16px",
|
|
159
|
+
fontWeight: "bold",
|
|
160
|
+
textDecoration: "none",
|
|
161
|
+
padding: "12px 32px",
|
|
162
|
+
display: "inline-block",
|
|
163
|
+
}}
|
|
164
|
+
>
|
|
165
|
+
<span style={{ color: "#ffffff", textDecoration: "none" }}>
|
|
166
|
+
Join our Discord Community
|
|
167
|
+
</span>
|
|
168
|
+
</a>
|
|
169
|
+
</div>
|
|
170
|
+
|
|
171
|
+
<Hr style={hr} />
|
|
172
|
+
<Text style={footer}>
|
|
173
|
+
Copyright © Tracked Training Platform Inc. <br /> 9101 Horne
|
|
174
|
+
Street, Vancouver, BC
|
|
175
|
+
</Text>
|
|
176
|
+
|
|
177
|
+
<Container>
|
|
178
|
+
<Link
|
|
179
|
+
href={`${websiteUrl}/terms`}
|
|
180
|
+
style={{ ...footer, paddingRight: 10 }}
|
|
181
|
+
>
|
|
182
|
+
Terms
|
|
183
|
+
</Link>
|
|
184
|
+
<Link style={{ ...footer, paddingRight: 10 }}> | </Link>
|
|
185
|
+
<Link
|
|
186
|
+
href={`${websiteUrl}/privacy`}
|
|
187
|
+
style={{ ...footer, paddingRight: 10 }}
|
|
188
|
+
>
|
|
189
|
+
Privacy
|
|
190
|
+
</Link>
|
|
191
|
+
<Link style={{ ...footer, paddingRight: 10 }}> | </Link>
|
|
192
|
+
<Link
|
|
193
|
+
href={`${websiteUrl}/support`}
|
|
194
|
+
style={{ ...footer, paddingRight: 10 }}
|
|
195
|
+
>
|
|
196
|
+
Support
|
|
197
|
+
</Link>
|
|
198
|
+
</Container>
|
|
199
|
+
|
|
200
|
+
<Text style={footer}>
|
|
201
|
+
This is a service notification by the Tracked Training Platform.
|
|
202
|
+
</Text>
|
|
203
|
+
</Section>
|
|
204
|
+
</Container>
|
|
205
|
+
</Body>
|
|
206
|
+
</Html>
|
|
207
|
+
);
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
const main = {
|
|
211
|
+
backgroundColor: "#020617", // slate-950
|
|
212
|
+
fontFamily:
|
|
213
|
+
'-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Ubuntu,sans-serif',
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
const container = {
|
|
217
|
+
backgroundColor: "#020617", // slate-950
|
|
218
|
+
margin: "0 auto",
|
|
219
|
+
padding: "20px 0 48px",
|
|
220
|
+
marginBottom: "64px",
|
|
221
|
+
borderRadius: "8px",
|
|
222
|
+
};
|
|
223
|
+
|
|
224
|
+
const box = {
|
|
225
|
+
padding: "0 24px",
|
|
226
|
+
};
|
|
227
|
+
|
|
228
|
+
const hr = {
|
|
229
|
+
borderColor: "#4ade80", // green-400
|
|
230
|
+
margin: "24px 0",
|
|
231
|
+
borderWidth: "1px",
|
|
232
|
+
};
|
|
233
|
+
|
|
234
|
+
const paragraph = {
|
|
235
|
+
color: "#ffffff", // white
|
|
236
|
+
fontSize: "16px",
|
|
237
|
+
lineHeight: "24px",
|
|
238
|
+
textAlign: "left" as const,
|
|
239
|
+
};
|
|
240
|
+
|
|
241
|
+
const heading = {
|
|
242
|
+
color: "#ffffff", // white
|
|
243
|
+
fontSize: "24px",
|
|
244
|
+
lineHeight: "32px",
|
|
245
|
+
fontWeight: "bold",
|
|
246
|
+
marginBottom: "16px",
|
|
247
|
+
textAlign: "center" as const,
|
|
248
|
+
};
|
|
249
|
+
|
|
250
|
+
const statsBox = {
|
|
251
|
+
backgroundColor: "#1e293b",
|
|
252
|
+
padding: "16px 24px",
|
|
253
|
+
borderRadius: "8px",
|
|
254
|
+
margin: "24px 0",
|
|
255
|
+
};
|
|
256
|
+
|
|
257
|
+
const statsHeading = {
|
|
258
|
+
color: "#4ade80",
|
|
259
|
+
fontSize: "16px",
|
|
260
|
+
fontWeight: "bold",
|
|
261
|
+
marginBottom: "12px",
|
|
262
|
+
};
|
|
263
|
+
|
|
264
|
+
const statsText = {
|
|
265
|
+
color: "#e2e8f0",
|
|
266
|
+
fontSize: "14px",
|
|
267
|
+
lineHeight: "24px",
|
|
268
|
+
marginBottom: "4px",
|
|
269
|
+
};
|
|
270
|
+
|
|
271
|
+
const motivationBox = {
|
|
272
|
+
backgroundColor: "transparent",
|
|
273
|
+
padding: "16px 0",
|
|
274
|
+
margin: "24px 0",
|
|
275
|
+
borderLeft: "4px solid #4ade80",
|
|
276
|
+
paddingLeft: "20px",
|
|
277
|
+
};
|
|
278
|
+
|
|
279
|
+
const motivationText = {
|
|
280
|
+
color: "#94a3b8",
|
|
281
|
+
fontSize: "15px",
|
|
282
|
+
lineHeight: "22px",
|
|
283
|
+
fontStyle: "italic" as const,
|
|
284
|
+
};
|
|
285
|
+
|
|
286
|
+
const tipBox = {
|
|
287
|
+
backgroundColor: "#1e293b",
|
|
288
|
+
padding: "16px 24px",
|
|
289
|
+
borderRadius: "8px",
|
|
290
|
+
margin: "24px 0",
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
const tipHeading = {
|
|
294
|
+
color: "#4ade80",
|
|
295
|
+
fontSize: "14px",
|
|
296
|
+
fontWeight: "bold",
|
|
297
|
+
marginBottom: "8px",
|
|
298
|
+
};
|
|
299
|
+
|
|
300
|
+
const tipText = {
|
|
301
|
+
color: "#e2e8f0",
|
|
302
|
+
fontSize: "14px",
|
|
303
|
+
lineHeight: "20px",
|
|
304
|
+
};
|
|
305
|
+
|
|
306
|
+
const footer = {
|
|
307
|
+
color: "#94a3b8", // slate-400 for subtle footer text
|
|
308
|
+
fontSize: "12px",
|
|
309
|
+
lineHeight: "16px",
|
|
310
|
+
};
|
|
311
|
+
|
|
312
|
+
export default FirstWorkoutCompletedEmail;
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import {
|
|
3
|
+
Body,
|
|
4
|
+
Column,
|
|
5
|
+
Container,
|
|
6
|
+
Head,
|
|
7
|
+
Hr,
|
|
8
|
+
Html,
|
|
9
|
+
Img,
|
|
10
|
+
Link,
|
|
11
|
+
Preview,
|
|
12
|
+
Row,
|
|
13
|
+
Section,
|
|
14
|
+
Text,
|
|
15
|
+
} from "@react-email/components";
|
|
16
|
+
|
|
17
|
+
interface NewFollowerEmailProps {
|
|
18
|
+
userName: string;
|
|
19
|
+
followerName: string;
|
|
20
|
+
followerUsername?: string;
|
|
21
|
+
followerAvatarUrl?: string;
|
|
22
|
+
followerProfileUrl: string;
|
|
23
|
+
websiteUrl: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const baseUrl = "https://tracked.gg/android-chrome-192x192.png";
|
|
27
|
+
|
|
28
|
+
export const NewFollowerEmail = ({
|
|
29
|
+
userName,
|
|
30
|
+
followerName,
|
|
31
|
+
followerUsername,
|
|
32
|
+
followerAvatarUrl,
|
|
33
|
+
followerProfileUrl,
|
|
34
|
+
websiteUrl = "https://tracked.gg",
|
|
35
|
+
}: NewFollowerEmailProps) => {
|
|
36
|
+
const displayName = followerUsername
|
|
37
|
+
? `${followerName} (@${followerUsername})`
|
|
38
|
+
: followerName;
|
|
39
|
+
|
|
40
|
+
return (
|
|
41
|
+
<Html>
|
|
42
|
+
<Head>
|
|
43
|
+
<meta name="color-scheme" content="light only" />
|
|
44
|
+
<meta name="supported-color-schemes" content="light only" />
|
|
45
|
+
</Head>
|
|
46
|
+
<Preview>{followerName} started following you on Tracked</Preview>
|
|
47
|
+
<Body style={main}>
|
|
48
|
+
<Container style={container}>
|
|
49
|
+
<Section style={box}>
|
|
50
|
+
<Row style={{ marginBottom: "8px" }}>
|
|
51
|
+
<Column style={{ width: "auto", verticalAlign: "middle" }}>
|
|
52
|
+
<Img src={`${baseUrl}`} width="28" height="28" alt="Tracked" />
|
|
53
|
+
</Column>
|
|
54
|
+
<Column
|
|
55
|
+
style={{
|
|
56
|
+
width: "auto",
|
|
57
|
+
verticalAlign: "middle",
|
|
58
|
+
paddingLeft: "4px",
|
|
59
|
+
}}
|
|
60
|
+
>
|
|
61
|
+
<Text
|
|
62
|
+
style={{
|
|
63
|
+
fontSize: "28px",
|
|
64
|
+
fontWeight: "900",
|
|
65
|
+
fontFamily:
|
|
66
|
+
"Raleway, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
|
|
67
|
+
color: "#020617",
|
|
68
|
+
margin: "0",
|
|
69
|
+
lineHeight: "32px",
|
|
70
|
+
letterSpacing: "0.5px",
|
|
71
|
+
}}
|
|
72
|
+
>
|
|
73
|
+
TRACKED
|
|
74
|
+
</Text>
|
|
75
|
+
</Column>
|
|
76
|
+
</Row>
|
|
77
|
+
<Hr style={hr} />
|
|
78
|
+
|
|
79
|
+
<Text style={heading}>You Have a New Follower!</Text>
|
|
80
|
+
<Text style={paragraph}>
|
|
81
|
+
Hi {userName}, {displayName} started following you on Tracked.
|
|
82
|
+
</Text>
|
|
83
|
+
|
|
84
|
+
{followerAvatarUrl && (
|
|
85
|
+
<Section
|
|
86
|
+
style={{ textAlign: "center" as const, margin: "24px 0" }}
|
|
87
|
+
>
|
|
88
|
+
<Img
|
|
89
|
+
src={followerAvatarUrl}
|
|
90
|
+
width="80"
|
|
91
|
+
height="80"
|
|
92
|
+
alt={followerName}
|
|
93
|
+
style={{
|
|
94
|
+
borderRadius: "50%",
|
|
95
|
+
border: "2px solid #4ade80",
|
|
96
|
+
}}
|
|
97
|
+
/>
|
|
98
|
+
</Section>
|
|
99
|
+
)}
|
|
100
|
+
|
|
101
|
+
<Section style={infoBox}>
|
|
102
|
+
<Text style={infoText}>
|
|
103
|
+
<strong>{displayName}</strong> is now following your fitness
|
|
104
|
+
journey and will see your public workouts and achievements.
|
|
105
|
+
</Text>
|
|
106
|
+
</Section>
|
|
107
|
+
|
|
108
|
+
<div
|
|
109
|
+
style={{
|
|
110
|
+
marginTop: "24px",
|
|
111
|
+
marginBottom: "24px",
|
|
112
|
+
textAlign: "left" as const,
|
|
113
|
+
}}
|
|
114
|
+
>
|
|
115
|
+
<a
|
|
116
|
+
href={followerProfileUrl}
|
|
117
|
+
style={{
|
|
118
|
+
backgroundColor: "#0f172a",
|
|
119
|
+
borderRadius: "8px",
|
|
120
|
+
fontSize: "16px",
|
|
121
|
+
fontWeight: "bold",
|
|
122
|
+
textDecoration: "none",
|
|
123
|
+
padding: "12px 32px",
|
|
124
|
+
display: "inline-block",
|
|
125
|
+
}}
|
|
126
|
+
>
|
|
127
|
+
<span style={{ color: "#ffffff", textDecoration: "none" }}>
|
|
128
|
+
View Profile
|
|
129
|
+
</span>
|
|
130
|
+
</a>
|
|
131
|
+
</div>
|
|
132
|
+
|
|
133
|
+
<Text style={{ ...paragraph }}>
|
|
134
|
+
Check out their profile to see their workouts and consider
|
|
135
|
+
following them back!
|
|
136
|
+
</Text>
|
|
137
|
+
|
|
138
|
+
<div
|
|
139
|
+
style={{
|
|
140
|
+
textAlign: "left" as const,
|
|
141
|
+
margin: "24px 0",
|
|
142
|
+
}}
|
|
143
|
+
>
|
|
144
|
+
<a
|
|
145
|
+
href="https://www.discord.gg/trackedgg"
|
|
146
|
+
style={{
|
|
147
|
+
backgroundColor: "#5865F2",
|
|
148
|
+
borderRadius: "8px",
|
|
149
|
+
fontSize: "16px",
|
|
150
|
+
fontWeight: "bold",
|
|
151
|
+
textDecoration: "none",
|
|
152
|
+
padding: "12px 32px",
|
|
153
|
+
display: "inline-block",
|
|
154
|
+
}}
|
|
155
|
+
>
|
|
156
|
+
<span style={{ color: "#ffffff", textDecoration: "none" }}>
|
|
157
|
+
Join our Discord Community
|
|
158
|
+
</span>
|
|
159
|
+
</a>
|
|
160
|
+
</div>
|
|
161
|
+
|
|
162
|
+
<Hr style={hr} />
|
|
163
|
+
<Text style={footer}>
|
|
164
|
+
Copyright © Tracked Training Platform Inc. <br /> 9101 Horne
|
|
165
|
+
Street, Vancouver, BC
|
|
166
|
+
</Text>
|
|
167
|
+
|
|
168
|
+
<Container>
|
|
169
|
+
<Link
|
|
170
|
+
href={`${websiteUrl}/terms`}
|
|
171
|
+
style={{ ...footer, paddingRight: 10 }}
|
|
172
|
+
>
|
|
173
|
+
Terms
|
|
174
|
+
</Link>
|
|
175
|
+
<Link style={{ ...footer, paddingRight: 10 }}> | </Link>
|
|
176
|
+
<Link
|
|
177
|
+
href={`${websiteUrl}/privacy`}
|
|
178
|
+
style={{ ...footer, paddingRight: 10 }}
|
|
179
|
+
>
|
|
180
|
+
Privacy
|
|
181
|
+
</Link>
|
|
182
|
+
<Link style={{ ...footer, paddingRight: 10 }}> | </Link>
|
|
183
|
+
<Link
|
|
184
|
+
href={`${websiteUrl}/support`}
|
|
185
|
+
style={{ ...footer, paddingRight: 10 }}
|
|
186
|
+
>
|
|
187
|
+
Support
|
|
188
|
+
</Link>
|
|
189
|
+
</Container>
|
|
190
|
+
|
|
191
|
+
<Text style={footer}>
|
|
192
|
+
This is a service notification by the Tracked Training Platform.
|
|
193
|
+
</Text>
|
|
194
|
+
</Section>
|
|
195
|
+
</Container>
|
|
196
|
+
</Body>
|
|
197
|
+
</Html>
|
|
198
|
+
);
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
const main = {
|
|
202
|
+
backgroundColor: "#020617", // slate-950
|
|
203
|
+
fontFamily:
|
|
204
|
+
'-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Ubuntu,sans-serif',
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
const container = {
|
|
208
|
+
backgroundColor: "#020617", // slate-950
|
|
209
|
+
margin: "0 auto",
|
|
210
|
+
padding: "20px 0 48px",
|
|
211
|
+
marginBottom: "64px",
|
|
212
|
+
borderRadius: "8px",
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
const box = {
|
|
216
|
+
padding: "0 24px",
|
|
217
|
+
};
|
|
218
|
+
|
|
219
|
+
const hr = {
|
|
220
|
+
borderColor: "#4ade80", // green-400
|
|
221
|
+
margin: "24px 0",
|
|
222
|
+
borderWidth: "1px",
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
const paragraph = {
|
|
226
|
+
color: "#ffffff", // white
|
|
227
|
+
fontSize: "16px",
|
|
228
|
+
lineHeight: "24px",
|
|
229
|
+
textAlign: "left" as const,
|
|
230
|
+
};
|
|
231
|
+
|
|
232
|
+
const heading = {
|
|
233
|
+
color: "#ffffff", // white
|
|
234
|
+
fontSize: "24px",
|
|
235
|
+
lineHeight: "32px",
|
|
236
|
+
fontWeight: "bold",
|
|
237
|
+
marginBottom: "16px",
|
|
238
|
+
};
|
|
239
|
+
|
|
240
|
+
const infoBox = {
|
|
241
|
+
backgroundColor: "#1e293b",
|
|
242
|
+
padding: "16px 24px",
|
|
243
|
+
borderRadius: "8px",
|
|
244
|
+
margin: "24px 0",
|
|
245
|
+
};
|
|
246
|
+
|
|
247
|
+
const infoText = {
|
|
248
|
+
color: "#e2e8f0",
|
|
249
|
+
fontSize: "14px",
|
|
250
|
+
lineHeight: "24px",
|
|
251
|
+
marginBottom: "4px",
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
const footer = {
|
|
255
|
+
color: "#94a3b8", // slate-400 for subtle footer text
|
|
256
|
+
fontSize: "12px",
|
|
257
|
+
lineHeight: "16px",
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
export default NewFollowerEmail;
|