@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,264 @@
1
+ import React from "react";
2
+ import {
3
+ Body,
4
+ Button,
5
+ Column,
6
+ Container,
7
+ Head,
8
+ Hr,
9
+ Html,
10
+ Img,
11
+ Link,
12
+ Preview,
13
+ Row,
14
+ Section,
15
+ Text,
16
+ } from "@react-email/components";
17
+
18
+ interface Props {
19
+ loginButtonLink: string;
20
+ websiteUrl: string;
21
+ }
22
+
23
+ const baseUrl = "https://tracked.gg/android-chrome-192x192.png";
24
+
25
+ export const TrackedMagicLink = ({ loginButtonLink, websiteUrl }: Props) => (
26
+ <Html>
27
+ <Head>
28
+ <meta name="color-scheme" content="light only" />
29
+ <meta name="supported-color-schemes" content="light only" />
30
+ </Head>
31
+ <Preview>
32
+ New login requested for Tracked - The gym tracking platform
33
+ </Preview>
34
+ <Body style={main}>
35
+ <Container style={container}>
36
+ <Section style={box}>
37
+ <Row style={{ marginBottom: "8px" }}>
38
+ <Column style={{ width: "auto", verticalAlign: "middle" }}>
39
+ <Img src={`${baseUrl}`} width="28" height="28" alt="Tracked" />
40
+ </Column>
41
+ <Column
42
+ style={{
43
+ width: "auto",
44
+ verticalAlign: "middle",
45
+ paddingLeft: "4px",
46
+ }}
47
+ >
48
+ <Text
49
+ style={{
50
+ fontSize: "28px",
51
+ fontWeight: "900",
52
+ fontFamily:
53
+ "Raleway, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
54
+ color: "#020617",
55
+ margin: "0",
56
+ lineHeight: "32px",
57
+ letterSpacing: "0.5px",
58
+ }}
59
+ >
60
+ TRACKED
61
+ </Text>
62
+ </Column>
63
+ </Row>
64
+ <Hr style={hr} />
65
+ <Text style={paragraph}>Welcome to Tracked!</Text>
66
+ <Text style={paragraph}>
67
+ To get started, press the button below to log in to your Tracked
68
+ account. You will be redirected to the app.
69
+ </Text>
70
+ <div
71
+ style={{
72
+ marginTop: "24px",
73
+ marginBottom: "24px",
74
+ textAlign: "left" as const,
75
+ }}
76
+ >
77
+ <a
78
+ href={loginButtonLink}
79
+ style={{
80
+ backgroundColor: "#0f172a",
81
+ borderRadius: "8px",
82
+ fontSize: "16px",
83
+ fontWeight: "bold",
84
+ textDecoration: "none",
85
+ padding: "12px 32px",
86
+ display: "inline-block",
87
+ }}
88
+ >
89
+ <span style={{ color: "#ffffff", textDecoration: "none" }}>
90
+ Login to Tracked
91
+ </span>
92
+ </a>
93
+ </div>
94
+
95
+ <Text style={{ ...paragraph }}>
96
+ If this email was not expected, please ignore it. You can learn more
97
+ about the Tracked Training Platform by visiting our{" "}
98
+ <Link style={anchor} href={websiteUrl}>
99
+ website
100
+ </Link>
101
+ .
102
+ </Text>
103
+
104
+ <Row style={row}>
105
+ <Column style={column}>
106
+ <Button
107
+ style={appButton}
108
+ href="https://apps.apple.com/app/tracked-training/id6450913418"
109
+ >
110
+ <Img
111
+ src="https://cdn.trckd.ca/assets/app-store-black.png"
112
+ alt="Download on the App Store"
113
+ style={img}
114
+ />
115
+ </Button>
116
+ </Column>
117
+ <Column style={column}>
118
+ <Button
119
+ style={appButton}
120
+ href="https://play.google.com/store/apps/details?id=com.tracked.mobile"
121
+ >
122
+ <Img
123
+ src="https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png"
124
+ alt="Google Play"
125
+ style={img}
126
+ />
127
+ </Button>
128
+ </Column>
129
+ </Row>
130
+
131
+ <div
132
+ style={{
133
+ textAlign: "left" as const,
134
+ margin: "24px 0",
135
+ }}
136
+ >
137
+ <a
138
+ href="https://www.discord.gg/trackedgg"
139
+ style={{
140
+ backgroundColor: "#5865F2",
141
+ borderRadius: "8px",
142
+ fontSize: "16px",
143
+ fontWeight: "bold",
144
+ textDecoration: "none",
145
+ padding: "12px 32px",
146
+ display: "inline-block",
147
+ }}
148
+ >
149
+ <span style={{ color: "#ffffff", textDecoration: "none" }}>
150
+ Join our Discord Community
151
+ </span>
152
+ </a>
153
+ </div>
154
+
155
+ <Hr style={hr} />
156
+ <Text style={footer}>
157
+ Copyright © Tracked Training Platform Inc. <br /> 9101 Horne
158
+ Street, Vancouver, BC
159
+ </Text>
160
+
161
+ <Container>
162
+ <Link
163
+ href="https://tracked.gg/terms"
164
+ style={{ ...footer, paddingRight: 10 }}
165
+ >
166
+ Terms
167
+ </Link>
168
+ <Link style={{ ...footer, paddingRight: 10 }}> | </Link>
169
+ <Link
170
+ href="https://tracked.gg/privacy"
171
+ style={{ ...footer, paddingRight: 10 }}
172
+ >
173
+ Privacy
174
+ </Link>
175
+ <Link style={{ ...footer, paddingRight: 10 }}> | </Link>
176
+ <Link
177
+ href="https://tracked.gg/support"
178
+ style={{ ...footer, paddingRight: 10 }}
179
+ >
180
+ Support
181
+ </Link>
182
+ </Container>
183
+
184
+ <Text style={footer}>
185
+ This is a service notification by the Tracked Training Platform.
186
+ </Text>
187
+ </Section>
188
+ </Container>
189
+ </Body>
190
+ </Html>
191
+ );
192
+
193
+ const main = {
194
+ backgroundColor: "#020617", // slate-950
195
+ fontFamily:
196
+ '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Ubuntu,sans-serif',
197
+ };
198
+
199
+ const container = {
200
+ backgroundColor: "#020617", // slate-950
201
+ margin: "0 auto",
202
+ padding: "20px 0 48px",
203
+ marginBottom: "64px",
204
+ borderRadius: "8px",
205
+ };
206
+
207
+ const box = {
208
+ padding: "0 24px",
209
+ };
210
+
211
+ const row = {
212
+ display: "flex",
213
+ flexDirection: "row" as const,
214
+ };
215
+
216
+ const column = {
217
+ flex: "0 0 48%",
218
+ "@media (maxWidth: 600px)": {
219
+ flex: "0 0 100%",
220
+ marginBottom: "10px",
221
+ },
222
+ };
223
+
224
+ const img = {
225
+ maxWidth: "100%",
226
+ height: "auto",
227
+ };
228
+
229
+ const appButton = {
230
+ backgroundColor: "transparent",
231
+ borderRadius: "8px",
232
+ color: "#ffffff", // white
233
+ fontSize: "16px",
234
+ fontWeight: "bold",
235
+ textDecoration: "none",
236
+ textAlign: "center" as const,
237
+ display: "block",
238
+ width: "100%",
239
+ maxWidth: "150px",
240
+ };
241
+
242
+ const hr = {
243
+ borderColor: "#4ade80", // green-400
244
+ margin: "24px 0",
245
+ borderWidth: "1px",
246
+ };
247
+
248
+ const paragraph = {
249
+ color: "#ffffff", // white
250
+ fontSize: "16px",
251
+ lineHeight: "24px",
252
+ textAlign: "left" as const,
253
+ };
254
+
255
+ const anchor = {
256
+ color: "#4ade80", // green-400
257
+ textDecoration: "underline",
258
+ };
259
+
260
+ const footer = {
261
+ color: "#94a3b8", // slate-400 for subtle footer text
262
+ fontSize: "12px",
263
+ lineHeight: "16px",
264
+ };
@@ -0,0 +1,353 @@
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 WeekOneCheckinEmailProps {
18
+ userName: string;
19
+ workoutsCompleted: number;
20
+ appUrl: string;
21
+ supportUrl?: string;
22
+ websiteUrl: string;
23
+ }
24
+
25
+ const baseUrl = "https://tracked.gg/android-chrome-192x192.png";
26
+
27
+ export const WeekOneCheckinEmail = ({
28
+ userName,
29
+ workoutsCompleted,
30
+ appUrl,
31
+ supportUrl,
32
+ websiteUrl = "https://tracked.gg",
33
+ }: WeekOneCheckinEmailProps) => {
34
+ const isActive = workoutsCompleted > 0;
35
+
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>How's your first week on Tracked going?</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
+ <Text style={heading}>Week One Check-In</Text>
76
+
77
+ {isActive ? (
78
+ <>
79
+ <Text style={paragraph}>
80
+ Hi {userName}, you've been on Tracked for a week now and we
81
+ wanted to check in!
82
+ </Text>
83
+
84
+ <Section style={statsBox}>
85
+ <Text style={statsHeading}>Your First Week:</Text>
86
+ <Text style={statsText}>
87
+ <strong>Workouts Logged:</strong> {workoutsCompleted}
88
+ </Text>
89
+ <Text style={{ ...statsText, marginTop: "8px" }}>
90
+ {workoutsCompleted >= 3
91
+ ? "🔥 Great start! You're building strong habits."
92
+ : "💪 Good progress! Try to aim for 3-4 workouts per week."}
93
+ </Text>
94
+ </Section>
95
+
96
+ <Text style={paragraph}>
97
+ Consistency is the key to reaching your fitness goals. Keep up
98
+ the momentum and remember - every workout counts!
99
+ </Text>
100
+ </>
101
+ ) : (
102
+ <>
103
+ <Text style={paragraph}>
104
+ Hi {userName}, you joined Tracked a week ago, and we noticed you
105
+ haven't logged your first workout yet.
106
+ </Text>
107
+
108
+ <Section style={encouragementBox}>
109
+ <Text style={encouragementHeading}>Getting Started is Easy:</Text>
110
+ <ul style={featureList}>
111
+ <li style={featureItem}>
112
+ Open the app and tap the "+" button
113
+ </li>
114
+ <li style={featureItem}>
115
+ Select your exercises or create a custom workout
116
+ </li>
117
+ <li style={featureItem}>
118
+ Track your sets, reps, and weight as you go
119
+ </li>
120
+ <li style={featureItem}>
121
+ Complete your workout and see your progress!
122
+ </li>
123
+ </ul>
124
+ </Section>
125
+
126
+ <Text style={paragraph}>
127
+ The hardest part is getting started. Once you log that first
128
+ workout, you'll be on your way to building lasting fitness habits.
129
+ </Text>
130
+ </>
131
+ )}
132
+
133
+ <div
134
+ style={{
135
+ marginTop: "24px",
136
+ marginBottom: "24px",
137
+ textAlign: "left" as const,
138
+ }}
139
+ >
140
+ <a
141
+ href={appUrl}
142
+ style={{
143
+ backgroundColor: "#0f172a",
144
+ borderRadius: "8px",
145
+ fontSize: "16px",
146
+ fontWeight: "bold",
147
+ textDecoration: "none",
148
+ padding: "12px 32px",
149
+ display: "inline-block",
150
+ }}
151
+ >
152
+ <span style={{ color: "#ffffff", textDecoration: "none" }}>
153
+ {isActive ? "Continue Your Journey" : "Log Your First Workout"}
154
+ </span>
155
+ </a>
156
+ </div>
157
+
158
+ <Section style={tipBox}>
159
+ <Text style={tipHeading}>Need Help?</Text>
160
+ <Text style={tipText}>
161
+ Our support team is here to help you get the most out of Tracked.
162
+ {supportUrl && (
163
+ <>
164
+ {" "}
165
+ <Link
166
+ href={supportUrl}
167
+ style={{ color: "#4ade80", textDecoration: "underline" }}
168
+ >
169
+ Contact us
170
+ </Link>{" "}
171
+ anytime with questions.
172
+ </>
173
+ )}
174
+ </Text>
175
+ </Section>
176
+
177
+ <div
178
+ style={{
179
+ textAlign: "left" as const,
180
+ margin: "24px 0",
181
+ }}
182
+ >
183
+ <a
184
+ href="https://www.discord.gg/trackedgg"
185
+ style={{
186
+ backgroundColor: "#5865F2",
187
+ borderRadius: "8px",
188
+ fontSize: "16px",
189
+ fontWeight: "bold",
190
+ textDecoration: "none",
191
+ padding: "12px 32px",
192
+ display: "inline-block",
193
+ }}
194
+ >
195
+ <span style={{ color: "#ffffff", textDecoration: "none" }}>
196
+ Join our Discord Community
197
+ </span>
198
+ </a>
199
+ </div>
200
+
201
+ <Hr style={hr} />
202
+ <Text style={footer}>
203
+ Copyright © Tracked Training Platform Inc. <br /> 9101 Horne
204
+ Street, Vancouver, BC
205
+ </Text>
206
+
207
+ <Container>
208
+ <Link
209
+ href={`${websiteUrl}/terms`}
210
+ style={{ ...footer, paddingRight: 10 }}
211
+ >
212
+ Terms
213
+ </Link>
214
+ <Link style={{ ...footer, paddingRight: 10 }}> | </Link>
215
+ <Link
216
+ href={`${websiteUrl}/privacy`}
217
+ style={{ ...footer, paddingRight: 10 }}
218
+ >
219
+ Privacy
220
+ </Link>
221
+ <Link style={{ ...footer, paddingRight: 10 }}> | </Link>
222
+ <Link
223
+ href={`${websiteUrl}/support`}
224
+ style={{ ...footer, paddingRight: 10 }}
225
+ >
226
+ Support
227
+ </Link>
228
+ </Container>
229
+
230
+ <Text style={footer}>
231
+ This is a service notification by the Tracked Training Platform.
232
+ </Text>
233
+ </Section>
234
+ </Container>
235
+ </Body>
236
+ </Html>
237
+ );
238
+ };
239
+
240
+ const main = {
241
+ backgroundColor: "#020617", // slate-950
242
+ fontFamily:
243
+ '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Ubuntu,sans-serif',
244
+ };
245
+
246
+ const container = {
247
+ backgroundColor: "#020617", // slate-950
248
+ margin: "0 auto",
249
+ padding: "20px 0 48px",
250
+ marginBottom: "64px",
251
+ borderRadius: "8px",
252
+ };
253
+
254
+ const box = {
255
+ padding: "0 24px",
256
+ };
257
+
258
+ const hr = {
259
+ borderColor: "#4ade80", // green-400
260
+ margin: "24px 0",
261
+ borderWidth: "1px",
262
+ };
263
+
264
+ const paragraph = {
265
+ color: "#ffffff", // white
266
+ fontSize: "16px",
267
+ lineHeight: "24px",
268
+ textAlign: "left" as const,
269
+ };
270
+
271
+ const heading = {
272
+ color: "#ffffff", // white
273
+ fontSize: "24px",
274
+ lineHeight: "32px",
275
+ fontWeight: "bold",
276
+ marginBottom: "16px",
277
+ };
278
+
279
+ const statsBox = {
280
+ backgroundColor: "#1e293b",
281
+ padding: "16px 24px",
282
+ borderRadius: "8px",
283
+ margin: "24px 0",
284
+ borderLeft: "4px solid #4ade80",
285
+ };
286
+
287
+ const statsHeading = {
288
+ color: "#4ade80",
289
+ fontSize: "16px",
290
+ fontWeight: "bold",
291
+ marginBottom: "12px",
292
+ };
293
+
294
+ const statsText = {
295
+ color: "#e2e8f0",
296
+ fontSize: "14px",
297
+ lineHeight: "24px",
298
+ marginBottom: "4px",
299
+ };
300
+
301
+ const encouragementBox = {
302
+ backgroundColor: "#1e293b",
303
+ padding: "16px 24px",
304
+ borderRadius: "8px",
305
+ margin: "24px 0",
306
+ };
307
+
308
+ const encouragementHeading = {
309
+ color: "#ffffff",
310
+ fontSize: "16px",
311
+ fontWeight: "bold",
312
+ marginBottom: "12px",
313
+ };
314
+
315
+ const featureList = {
316
+ margin: "0",
317
+ paddingLeft: "20px",
318
+ };
319
+
320
+ const featureItem = {
321
+ color: "#e2e8f0",
322
+ fontSize: "14px",
323
+ lineHeight: "24px",
324
+ marginBottom: "8px",
325
+ };
326
+
327
+ const tipBox = {
328
+ backgroundColor: "#1e293b",
329
+ padding: "16px 24px",
330
+ borderRadius: "8px",
331
+ margin: "24px 0",
332
+ };
333
+
334
+ const tipHeading = {
335
+ color: "#4ade80",
336
+ fontSize: "14px",
337
+ fontWeight: "bold",
338
+ marginBottom: "8px",
339
+ };
340
+
341
+ const tipText = {
342
+ color: "#e2e8f0",
343
+ fontSize: "14px",
344
+ lineHeight: "20px",
345
+ };
346
+
347
+ const footer = {
348
+ color: "#94a3b8", // slate-400 for subtle footer text
349
+ fontSize: "12px",
350
+ lineHeight: "16px",
351
+ };
352
+
353
+ export default WeekOneCheckinEmail;