@tracked/emails 0.1.5 → 0.2.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 (50) hide show
  1. package/dist/emails/client-onboarded.d.ts +35 -0
  2. package/dist/emails/client-onboarded.d.ts.map +1 -0
  3. package/dist/emails/client-onboarded.js +152 -0
  4. package/dist/emails/client-onboarded.js.map +1 -0
  5. package/dist/emails/index.d.ts +1 -0
  6. package/dist/emails/index.d.ts.map +1 -1
  7. package/dist/emails/index.js +1 -0
  8. package/dist/emails/index.js.map +1 -1
  9. package/dist/index.d.ts +2 -2
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +2 -2
  12. package/dist/index.js.map +1 -1
  13. package/package.json +20 -20
  14. package/src/components/content.tsx +351 -0
  15. package/src/components/index.ts +44 -0
  16. package/src/components/interactive.tsx +260 -0
  17. package/src/components/layout.tsx +217 -0
  18. package/src/components/tokens.ts +74 -0
  19. package/src/components/typography.tsx +148 -0
  20. package/src/emails/anniversary.tsx +133 -0
  21. package/src/emails/app-review-request.tsx +100 -0
  22. package/src/emails/bodyweight-goal-reached.tsx +202 -350
  23. package/src/emails/client-inactive-alert.tsx +130 -0
  24. package/src/emails/client-onboarded.tsx +272 -0
  25. package/src/emails/coach-invite.tsx +67 -250
  26. package/src/emails/coach-removed-client.tsx +36 -197
  27. package/src/emails/direct-message.tsx +69 -227
  28. package/src/emails/feature-discovery.tsx +82 -266
  29. package/src/emails/first-workout-assigned.tsx +52 -238
  30. package/src/emails/first-workout-completed.tsx +88 -294
  31. package/src/emails/inactive-reengagement.tsx +81 -0
  32. package/src/emails/index.tsx +1 -0
  33. package/src/emails/monthly-report.tsx +198 -520
  34. package/src/emails/new-follower.tsx +60 -238
  35. package/src/emails/nps-survey.tsx +149 -0
  36. package/src/emails/subscription-canceled.tsx +88 -294
  37. package/src/emails/support-email.tsx +33 -67
  38. package/src/emails/team-invite.tsx +47 -240
  39. package/src/emails/team-member-removed-email.tsx +23 -218
  40. package/src/emails/tracked-magic-link-activate.tsx +29 -237
  41. package/src/emails/tracked-magic-link.tsx +31 -251
  42. package/src/emails/week-one-checkin.tsx +108 -329
  43. package/src/emails/weekly-progress-digest.tsx +248 -0
  44. package/src/emails/welcome.tsx +58 -326
  45. package/src/index.ts +19 -2
  46. package/dist/emails/client-accepted-invitation.d.ts +0 -10
  47. package/dist/emails/client-accepted-invitation.d.ts.map +0 -1
  48. package/dist/emails/client-accepted-invitation.js +0 -99
  49. package/dist/emails/client-accepted-invitation.js.map +0 -1
  50. package/src/emails/client-accepted-invitation.tsx +0 -258
@@ -1,255 +1,69 @@
1
- import React from "react";
1
+ import * as React from "react";
2
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";
3
+ EmailLayout,
4
+ EmailHeader,
5
+ EmailFooter,
6
+ Heading,
7
+ Paragraph,
8
+ FeatureBox,
9
+ SmallText,
10
+ PrimaryButton,
11
+ DiscordButton,
12
+ } from "../components";
16
13
 
17
14
  interface FirstWorkoutAssignedEmailProps {
18
15
  clientName: string;
19
16
  coachName: string;
20
17
  programName: string;
21
18
  workoutUrl: string;
22
- websiteUrl: string;
19
+ websiteUrl?: string;
23
20
  }
24
21
 
25
- const baseUrl = "https://tracked.gg/android-chrome-192x192.png";
26
-
27
22
  export const FirstWorkoutAssignedEmail = ({
28
- clientName,
29
- coachName,
30
- programName,
31
- workoutUrl,
23
+ clientName = "Alex",
24
+ coachName = "Sarah Johnson",
25
+ programName = "8-Week Strength Builder",
26
+ workoutUrl = "tracked://app",
32
27
  websiteUrl = "https://tracked.gg",
33
28
  }: FirstWorkoutAssignedEmailProps) => {
34
29
  return (
35
- <Html>
36
- <Head>
37
- <meta name="color-scheme" content="light only" />
38
- <meta name="supported-color-schemes" content="light only" />
39
- </Head>
40
- <Preview>
41
- {coachName} has assigned your first workout program on Tracked
42
- </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}>Your Training Journey Begins!</Text>
76
- <Text style={paragraph}>
77
- Hi {clientName}, {coachName} has created your personalized workout
78
- program and it's ready for you to start.
79
- </Text>
80
-
81
- <Section style={infoBox}>
82
- <Text style={infoHeading}>Program Details:</Text>
83
- <Text style={infoText}>
84
- <strong>Program:</strong> {programName}
85
- </Text>
86
- <Text style={infoText}>
87
- <strong>Coach:</strong> {coachName}
88
- </Text>
89
- </Section>
90
-
91
- <Text style={paragraph}>
92
- Your coach has designed this program specifically for your goals.
93
- Open the app to view your workouts and get started!
94
- </Text>
95
-
96
- <div
97
- style={{
98
- marginTop: "24px",
99
- marginBottom: "24px",
100
- textAlign: "left" as const,
101
- }}
102
- >
103
- <a
104
- href={workoutUrl}
105
- style={{
106
- backgroundColor: "#0f172a",
107
- borderRadius: "8px",
108
- fontSize: "16px",
109
- fontWeight: "bold",
110
- textDecoration: "none",
111
- padding: "12px 32px",
112
- display: "inline-block",
113
- }}
114
- >
115
- <span style={{ color: "#ffffff", textDecoration: "none" }}>
116
- View Your Program
117
- </span>
118
- </a>
119
- </div>
120
-
121
- <Text style={{ ...paragraph }}>
122
- Remember to track each workout and communicate with your coach if
123
- you have any questions or concerns.
124
- </Text>
125
-
126
- <div
127
- style={{
128
- textAlign: "left" as const,
129
- margin: "24px 0",
130
- }}
131
- >
132
- <a
133
- href="https://www.discord.gg/trackedgg"
134
- style={{
135
- backgroundColor: "#5865F2",
136
- borderRadius: "8px",
137
- fontSize: "16px",
138
- fontWeight: "bold",
139
- textDecoration: "none",
140
- padding: "12px 32px",
141
- display: "inline-block",
142
- }}
143
- >
144
- <span style={{ color: "#ffffff", textDecoration: "none" }}>
145
- Join our Discord Community
146
- </span>
147
- </a>
148
- </div>
149
-
150
- <Hr style={hr} />
151
- <Text style={footer}>
152
- Copyright © Tracked Training Platform Inc. <br /> 9101 Horne
153
- Street, Vancouver, BC
154
- </Text>
155
-
156
- <Container>
157
- <Link
158
- href={`${websiteUrl}/terms`}
159
- style={{ ...footer, paddingRight: 10 }}
160
- >
161
- Terms
162
- </Link>
163
- <Link style={{ ...footer, paddingRight: 10 }}> | </Link>
164
- <Link
165
- href={`${websiteUrl}/privacy`}
166
- style={{ ...footer, paddingRight: 10 }}
167
- >
168
- Privacy
169
- </Link>
170
- <Link style={{ ...footer, paddingRight: 10 }}> | </Link>
171
- <Link
172
- href={`${websiteUrl}/support`}
173
- style={{ ...footer, paddingRight: 10 }}
174
- >
175
- Support
176
- </Link>
177
- </Container>
178
-
179
- <Text style={footer}>
180
- This is a service notification by the Tracked Training Platform.
181
- </Text>
182
- </Section>
183
- </Container>
184
- </Body>
185
- </Html>
30
+ <EmailLayout
31
+ preview={`${coachName} has assigned your first workout program on Tracked`}
32
+ >
33
+ <EmailHeader />
34
+
35
+ <Heading>Your Training Journey Begins!</Heading>
36
+ <Paragraph>
37
+ Hi {clientName}, {coachName} has created your personalized workout
38
+ program and it's ready for you to start.
39
+ </Paragraph>
40
+
41
+ <FeatureBox title="Program Details:">
42
+ <SmallText>
43
+ <strong>Program:</strong> {programName}
44
+ </SmallText>
45
+ <SmallText style={{ marginTop: "4px" }}>
46
+ <strong>Coach:</strong> {coachName}
47
+ </SmallText>
48
+ </FeatureBox>
49
+
50
+ <Paragraph>
51
+ Your coach has designed this program specifically for your goals. Open
52
+ the app to view your workouts and get started!
53
+ </Paragraph>
54
+
55
+ <PrimaryButton href={workoutUrl}>View Your Program</PrimaryButton>
56
+
57
+ <Paragraph>
58
+ Remember to track each workout and communicate with your coach if you
59
+ have any questions or concerns.
60
+ </Paragraph>
61
+
62
+ <DiscordButton />
63
+
64
+ <EmailFooter websiteUrl={websiteUrl} />
65
+ </EmailLayout>
186
66
  );
187
67
  };
188
68
 
189
- const main = {
190
- backgroundColor: "#020617", // slate-950
191
- fontFamily:
192
- '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Ubuntu,sans-serif',
193
- };
194
-
195
- const container = {
196
- backgroundColor: "#020617", // slate-950
197
- margin: "0 auto",
198
- padding: "20px 0 48px",
199
- marginBottom: "64px",
200
- borderRadius: "8px",
201
- };
202
-
203
- const box = {
204
- padding: "0 24px",
205
- };
206
-
207
- const hr = {
208
- borderColor: "#4ade80", // green-400
209
- margin: "24px 0",
210
- borderWidth: "1px",
211
- };
212
-
213
- const paragraph = {
214
- color: "#ffffff", // white
215
- fontSize: "16px",
216
- lineHeight: "24px",
217
- textAlign: "left" as const,
218
- };
219
-
220
- const heading = {
221
- color: "#ffffff", // white
222
- fontSize: "24px",
223
- lineHeight: "32px",
224
- fontWeight: "bold",
225
- marginBottom: "16px",
226
- };
227
-
228
- const infoBox = {
229
- backgroundColor: "#1e293b",
230
- padding: "16px 24px",
231
- borderRadius: "8px",
232
- margin: "24px 0",
233
- };
234
-
235
- const infoHeading = {
236
- color: "#ffffff",
237
- fontSize: "16px",
238
- fontWeight: "bold",
239
- marginBottom: "12px",
240
- };
241
-
242
- const infoText = {
243
- color: "#e2e8f0",
244
- fontSize: "14px",
245
- lineHeight: "24px",
246
- marginBottom: "4px",
247
- };
248
-
249
- const footer = {
250
- color: "#94a3b8", // slate-400 for subtle footer text
251
- fontSize: "12px",
252
- lineHeight: "16px",
253
- };
254
-
255
69
  export default FirstWorkoutAssignedEmail;