@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.
Files changed (116) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +211 -0
  3. package/dist/emails/bodyweight-goal-reached.d.ts +14 -0
  4. package/dist/emails/bodyweight-goal-reached.d.ts.map +1 -0
  5. package/dist/emails/bodyweight-goal-reached.js +177 -0
  6. package/dist/emails/bodyweight-goal-reached.js.map +1 -0
  7. package/dist/emails/client-accepted-invitation.d.ts +10 -0
  8. package/dist/emails/client-accepted-invitation.d.ts.map +1 -0
  9. package/dist/emails/client-accepted-invitation.js +99 -0
  10. package/dist/emails/client-accepted-invitation.js.map +1 -0
  11. package/dist/emails/coach-invite.d.ts +10 -0
  12. package/dist/emails/coach-invite.d.ts.map +1 -0
  13. package/dist/emails/coach-invite.js +126 -0
  14. package/dist/emails/coach-invite.js.map +1 -0
  15. package/dist/emails/coach-removed-client.d.ts +8 -0
  16. package/dist/emails/coach-removed-client.d.ts.map +1 -0
  17. package/dist/emails/coach-removed-client.js +80 -0
  18. package/dist/emails/coach-removed-client.js.map +1 -0
  19. package/dist/emails/direct-message.d.ts +11 -0
  20. package/dist/emails/direct-message.d.ts.map +1 -0
  21. package/dist/emails/direct-message.js +103 -0
  22. package/dist/emails/direct-message.js.map +1 -0
  23. package/dist/emails/feature-discovery.d.ts +11 -0
  24. package/dist/emails/feature-discovery.d.ts.map +1 -0
  25. package/dist/emails/feature-discovery.js +121 -0
  26. package/dist/emails/feature-discovery.js.map +1 -0
  27. package/dist/emails/first-workout-assigned.d.ts +10 -0
  28. package/dist/emails/first-workout-assigned.d.ts.map +1 -0
  29. package/dist/emails/first-workout-assigned.js +98 -0
  30. package/dist/emails/first-workout-assigned.js.map +1 -0
  31. package/dist/emails/first-workout-completed.d.ts +11 -0
  32. package/dist/emails/first-workout-completed.d.ts.map +1 -0
  33. package/dist/emails/first-workout-completed.js +129 -0
  34. package/dist/emails/first-workout-completed.js.map +1 -0
  35. package/dist/emails/index.d.ts +7 -0
  36. package/dist/emails/index.d.ts.map +1 -0
  37. package/dist/emails/index.js +7 -0
  38. package/dist/emails/index.js.map +1 -0
  39. package/dist/emails/new-follower.d.ts +11 -0
  40. package/dist/emails/new-follower.d.ts.map +1 -0
  41. package/dist/emails/new-follower.js +98 -0
  42. package/dist/emails/new-follower.js.map +1 -0
  43. package/dist/emails/subscription-canceled.d.ts +10 -0
  44. package/dist/emails/subscription-canceled.d.ts.map +1 -0
  45. package/dist/emails/subscription-canceled.js +131 -0
  46. package/dist/emails/subscription-canceled.js.map +1 -0
  47. package/dist/emails/support-email.d.ts +8 -0
  48. package/dist/emails/support-email.d.ts.map +1 -0
  49. package/dist/emails/support-email.js +40 -0
  50. package/dist/emails/support-email.js.map +1 -0
  51. package/dist/emails/team-invite.d.ts +11 -0
  52. package/dist/emails/team-invite.d.ts.map +1 -0
  53. package/dist/emails/team-invite.js +100 -0
  54. package/dist/emails/team-invite.js.map +1 -0
  55. package/dist/emails/team-member-removed-email.d.ts +8 -0
  56. package/dist/emails/team-member-removed-email.d.ts.map +1 -0
  57. package/dist/emails/team-member-removed-email.js +97 -0
  58. package/dist/emails/team-member-removed-email.js.map +1 -0
  59. package/dist/emails/tracked-magic-link-activate.d.ts +7 -0
  60. package/dist/emails/tracked-magic-link-activate.d.ts.map +1 -0
  61. package/dist/emails/tracked-magic-link-activate.js +93 -0
  62. package/dist/emails/tracked-magic-link-activate.js.map +1 -0
  63. package/dist/emails/tracked-magic-link.d.ts +7 -0
  64. package/dist/emails/tracked-magic-link.d.ts.map +1 -0
  65. package/dist/emails/tracked-magic-link.js +101 -0
  66. package/dist/emails/tracked-magic-link.js.map +1 -0
  67. package/dist/emails/week-one-checkin.d.ts +10 -0
  68. package/dist/emails/week-one-checkin.d.ts.map +1 -0
  69. package/dist/emails/week-one-checkin.js +141 -0
  70. package/dist/emails/week-one-checkin.js.map +1 -0
  71. package/dist/emails/welcome.d.ts +8 -0
  72. package/dist/emails/welcome.d.ts.map +1 -0
  73. package/dist/emails/welcome.js +146 -0
  74. package/dist/emails/welcome.js.map +1 -0
  75. package/dist/index.d.ts +22 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +24 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/utils/email-validation.d.ts +48 -0
  80. package/dist/utils/email-validation.d.ts.map +1 -0
  81. package/dist/utils/email-validation.js +72 -0
  82. package/dist/utils/email-validation.js.map +1 -0
  83. package/dist/utils/index.d.ts +8 -0
  84. package/dist/utils/index.d.ts.map +1 -0
  85. package/dist/utils/index.js +8 -0
  86. package/dist/utils/index.js.map +1 -0
  87. package/dist/utils/username-validation.d.ts +54 -0
  88. package/dist/utils/username-validation.d.ts.map +1 -0
  89. package/dist/utils/username-validation.js +76 -0
  90. package/dist/utils/username-validation.js.map +1 -0
  91. package/package.json +78 -0
  92. package/src/emails/bodyweight-goal-reached.tsx +396 -0
  93. package/src/emails/client-accepted-invitation.tsx +258 -0
  94. package/src/emails/coach-invite.tsx +270 -0
  95. package/src/emails/coach-removed-client.tsx +212 -0
  96. package/src/emails/direct-message.tsx +249 -0
  97. package/src/emails/feature-discovery.tsx +289 -0
  98. package/src/emails/first-workout-assigned.tsx +255 -0
  99. package/src/emails/first-workout-completed.tsx +312 -0
  100. package/src/emails/index.tsx +6 -0
  101. package/src/emails/new-follower.tsx +260 -0
  102. package/src/emails/subscription-canceled.tsx +311 -0
  103. package/src/emails/support-email.tsx +80 -0
  104. package/src/emails/team-invite.tsx +262 -0
  105. package/src/emails/team-member-removed-email.tsx +240 -0
  106. package/src/emails/tracked-magic-link-activate.tsx +252 -0
  107. package/src/emails/tracked-magic-link.tsx +264 -0
  108. package/src/emails/week-one-checkin.tsx +353 -0
  109. package/src/emails/welcome.tsx +341 -0
  110. package/src/index.ts +57 -0
  111. package/src/utils/email-validation.test.ts +78 -0
  112. package/src/utils/email-validation.ts +80 -0
  113. package/src/utils/index.ts +13 -0
  114. package/src/utils/username-validation.test.ts +118 -0
  115. package/src/utils/username-validation.ts +89 -0
  116. 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,6 @@
1
+ export * from "./support-email";
2
+ export * from "./tracked-magic-link";
3
+ export * from "./tracked-magic-link-activate";
4
+ export * from "./team-invite";
5
+ export * from "./coach-invite";
6
+ export * from "./team-member-removed-email";
@@ -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;