@tracked/emails 0.1.4 → 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 (53) 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/emails/monthly-report.d.ts.map +1 -1
  10. package/dist/emails/monthly-report.js +31 -47
  11. package/dist/emails/monthly-report.js.map +1 -1
  12. package/dist/index.d.ts +2 -2
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +2 -2
  15. package/dist/index.js.map +1 -1
  16. package/package.json +20 -20
  17. package/src/components/content.tsx +351 -0
  18. package/src/components/index.ts +44 -0
  19. package/src/components/interactive.tsx +260 -0
  20. package/src/components/layout.tsx +217 -0
  21. package/src/components/tokens.ts +74 -0
  22. package/src/components/typography.tsx +148 -0
  23. package/src/emails/anniversary.tsx +133 -0
  24. package/src/emails/app-review-request.tsx +100 -0
  25. package/src/emails/bodyweight-goal-reached.tsx +202 -350
  26. package/src/emails/client-inactive-alert.tsx +130 -0
  27. package/src/emails/client-onboarded.tsx +272 -0
  28. package/src/emails/coach-invite.tsx +67 -250
  29. package/src/emails/coach-removed-client.tsx +36 -197
  30. package/src/emails/direct-message.tsx +69 -227
  31. package/src/emails/feature-discovery.tsx +82 -266
  32. package/src/emails/first-workout-assigned.tsx +52 -238
  33. package/src/emails/first-workout-completed.tsx +88 -294
  34. package/src/emails/inactive-reengagement.tsx +81 -0
  35. package/src/emails/index.tsx +1 -0
  36. package/src/emails/monthly-report.tsx +195 -525
  37. package/src/emails/new-follower.tsx +60 -238
  38. package/src/emails/nps-survey.tsx +149 -0
  39. package/src/emails/subscription-canceled.tsx +88 -294
  40. package/src/emails/support-email.tsx +33 -67
  41. package/src/emails/team-invite.tsx +47 -240
  42. package/src/emails/team-member-removed-email.tsx +23 -218
  43. package/src/emails/tracked-magic-link-activate.tsx +29 -237
  44. package/src/emails/tracked-magic-link.tsx +31 -251
  45. package/src/emails/week-one-checkin.tsx +108 -329
  46. package/src/emails/weekly-progress-digest.tsx +248 -0
  47. package/src/emails/welcome.tsx +58 -326
  48. package/src/index.ts +19 -2
  49. package/dist/emails/client-accepted-invitation.d.ts +0 -10
  50. package/dist/emails/client-accepted-invitation.d.ts.map +0 -1
  51. package/dist/emails/client-accepted-invitation.js +0 -99
  52. package/dist/emails/client-accepted-invitation.js.map +0 -1
  53. 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;