@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.
- package/dist/emails/client-onboarded.d.ts +35 -0
- package/dist/emails/client-onboarded.d.ts.map +1 -0
- package/dist/emails/client-onboarded.js +152 -0
- package/dist/emails/client-onboarded.js.map +1 -0
- package/dist/emails/index.d.ts +1 -0
- package/dist/emails/index.d.ts.map +1 -1
- package/dist/emails/index.js +1 -0
- package/dist/emails/index.js.map +1 -1
- package/dist/emails/monthly-report.d.ts.map +1 -1
- package/dist/emails/monthly-report.js +31 -47
- package/dist/emails/monthly-report.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +20 -20
- package/src/components/content.tsx +351 -0
- package/src/components/index.ts +44 -0
- package/src/components/interactive.tsx +260 -0
- package/src/components/layout.tsx +217 -0
- package/src/components/tokens.ts +74 -0
- package/src/components/typography.tsx +148 -0
- package/src/emails/anniversary.tsx +133 -0
- package/src/emails/app-review-request.tsx +100 -0
- package/src/emails/bodyweight-goal-reached.tsx +202 -350
- package/src/emails/client-inactive-alert.tsx +130 -0
- package/src/emails/client-onboarded.tsx +272 -0
- package/src/emails/coach-invite.tsx +67 -250
- package/src/emails/coach-removed-client.tsx +36 -197
- package/src/emails/direct-message.tsx +69 -227
- package/src/emails/feature-discovery.tsx +82 -266
- package/src/emails/first-workout-assigned.tsx +52 -238
- package/src/emails/first-workout-completed.tsx +88 -294
- package/src/emails/inactive-reengagement.tsx +81 -0
- package/src/emails/index.tsx +1 -0
- package/src/emails/monthly-report.tsx +195 -525
- package/src/emails/new-follower.tsx +60 -238
- package/src/emails/nps-survey.tsx +149 -0
- package/src/emails/subscription-canceled.tsx +88 -294
- package/src/emails/support-email.tsx +33 -67
- package/src/emails/team-invite.tsx +47 -240
- package/src/emails/team-member-removed-email.tsx +23 -218
- package/src/emails/tracked-magic-link-activate.tsx +29 -237
- package/src/emails/tracked-magic-link.tsx +31 -251
- package/src/emails/week-one-checkin.tsx +108 -329
- package/src/emails/weekly-progress-digest.tsx +248 -0
- package/src/emails/welcome.tsx +58 -326
- package/src/index.ts +19 -2
- package/dist/emails/client-accepted-invitation.d.ts +0 -10
- package/dist/emails/client-accepted-invitation.d.ts.map +0 -1
- package/dist/emails/client-accepted-invitation.js +0 -99
- package/dist/emails/client-accepted-invitation.js.map +0 -1
- package/src/emails/client-accepted-invitation.tsx +0 -258
package/src/index.ts
CHANGED
|
@@ -1,19 +1,26 @@
|
|
|
1
|
+
// Email templates
|
|
2
|
+
import { AnniversaryEmail } from "./emails/anniversary.js";
|
|
3
|
+
import { AppReviewRequestEmail } from "./emails/app-review-request.js";
|
|
1
4
|
import { BodyweightGoalReachedEmail } from "./emails/bodyweight-goal-reached.js";
|
|
2
|
-
import {
|
|
5
|
+
import { ClientInactiveAlertEmail } from "./emails/client-inactive-alert.js";
|
|
6
|
+
import { ClientOnboardedEmail } from "./emails/client-onboarded.js";
|
|
3
7
|
import { CoachInviteEmail } from "./emails/coach-invite.js";
|
|
4
8
|
import { CoachRemovedClientEmail } from "./emails/coach-removed-client.js";
|
|
5
9
|
import { DirectMessageEmail } from "./emails/direct-message.js";
|
|
6
10
|
import { FeatureDiscoveryEmail } from "./emails/feature-discovery.js";
|
|
7
11
|
import { FirstWorkoutAssignedEmail } from "./emails/first-workout-assigned.js";
|
|
8
12
|
import { FirstWorkoutCompletedEmail } from "./emails/first-workout-completed.js";
|
|
13
|
+
import { InactiveReengagementEmail } from "./emails/inactive-reengagement.js";
|
|
9
14
|
import { MonthlyReportEmail } from "./emails/monthly-report.js";
|
|
10
15
|
import { NewFollowerEmail } from "./emails/new-follower.js";
|
|
16
|
+
import { NpsSurveyEmail } from "./emails/nps-survey.js";
|
|
11
17
|
import { SubscriptionCanceledEmail } from "./emails/subscription-canceled.js";
|
|
12
18
|
import { SupportEmail } from "./emails/support-email.js";
|
|
13
19
|
import { TeamInviteEmail } from "./emails/team-invite.js";
|
|
14
20
|
import { TeamMemberRemovedEmail } from "./emails/team-member-removed-email.js";
|
|
15
21
|
import { TrackedMagicLink } from "./emails/tracked-magic-link.js";
|
|
16
22
|
import { TrackedMagicLinkActivate } from "./emails/tracked-magic-link-activate.js";
|
|
23
|
+
import { WeeklyProgressDigestEmail } from "./emails/weekly-progress-digest.js";
|
|
17
24
|
import { WeekOneCheckinEmail } from "./emails/week-one-checkin.js";
|
|
18
25
|
import { WelcomeEmail } from "./emails/welcome.js";
|
|
19
26
|
|
|
@@ -28,23 +35,30 @@ import {
|
|
|
28
35
|
getSafeDisplayName,
|
|
29
36
|
} from "./utils/username-validation.js";
|
|
30
37
|
|
|
38
|
+
// Export email templates
|
|
31
39
|
export {
|
|
40
|
+
AnniversaryEmail,
|
|
41
|
+
AppReviewRequestEmail,
|
|
32
42
|
BodyweightGoalReachedEmail,
|
|
33
|
-
|
|
43
|
+
ClientInactiveAlertEmail,
|
|
44
|
+
ClientOnboardedEmail,
|
|
34
45
|
CoachInviteEmail,
|
|
35
46
|
CoachRemovedClientEmail,
|
|
36
47
|
DirectMessageEmail,
|
|
37
48
|
FeatureDiscoveryEmail,
|
|
38
49
|
FirstWorkoutAssignedEmail,
|
|
39
50
|
FirstWorkoutCompletedEmail,
|
|
51
|
+
InactiveReengagementEmail,
|
|
40
52
|
MonthlyReportEmail,
|
|
41
53
|
NewFollowerEmail,
|
|
54
|
+
NpsSurveyEmail,
|
|
42
55
|
SubscriptionCanceledEmail,
|
|
43
56
|
SupportEmail,
|
|
44
57
|
TeamInviteEmail,
|
|
45
58
|
TeamMemberRemovedEmail,
|
|
46
59
|
TrackedMagicLink,
|
|
47
60
|
TrackedMagicLinkActivate,
|
|
61
|
+
WeeklyProgressDigestEmail,
|
|
48
62
|
WeekOneCheckinEmail,
|
|
49
63
|
WelcomeEmail,
|
|
50
64
|
};
|
|
@@ -57,3 +71,6 @@ export {
|
|
|
57
71
|
isAnonymousUsername,
|
|
58
72
|
getSafeDisplayName,
|
|
59
73
|
};
|
|
74
|
+
|
|
75
|
+
// Export shared components
|
|
76
|
+
export * from "./components/index.js";
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
interface ClientAcceptedInvitationEmailProps {
|
|
2
|
-
coachName: string;
|
|
3
|
-
clientName: string;
|
|
4
|
-
clientEmail: string;
|
|
5
|
-
clientProfileUrl: string;
|
|
6
|
-
websiteUrl: string;
|
|
7
|
-
}
|
|
8
|
-
export declare const ClientAcceptedInvitationEmail: ({ coachName, clientName, clientEmail, clientProfileUrl, websiteUrl, }: ClientAcceptedInvitationEmailProps) => import("react/jsx-runtime").JSX.Element;
|
|
9
|
-
export default ClientAcceptedInvitationEmail;
|
|
10
|
-
//# sourceMappingURL=client-accepted-invitation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client-accepted-invitation.d.ts","sourceRoot":"","sources":["../../src/emails/client-accepted-invitation.tsx"],"names":[],"mappings":"AAiBA,UAAU,kCAAkC;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AAID,eAAO,MAAM,6BAA6B,GAAI,uEAM3C,kCAAkC,4CA4JpC,CAAC;AAoEF,eAAe,6BAA6B,CAAC"}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Body, Column, Container, Head, Hr, Html, Img, Link, Preview, Row, Section, Text, } from "@react-email/components";
|
|
3
|
-
const baseUrl = "https://tracked.gg/android-chrome-192x192.png";
|
|
4
|
-
export const ClientAcceptedInvitationEmail = ({ coachName, clientName, clientEmail, clientProfileUrl, websiteUrl = "https://tracked.gg", }) => {
|
|
5
|
-
const displayName = clientName || clientEmail;
|
|
6
|
-
return (_jsxs(Html, { children: [_jsxs(Head, { children: [_jsx("meta", { name: "color-scheme", content: "light only" }), _jsx("meta", { name: "supported-color-schemes", content: "light only" })] }), _jsxs(Preview, { children: [displayName, " accepted your coaching invitation on Tracked"] }), _jsx(Body, { style: main, children: _jsx(Container, { style: container, children: _jsxs(Section, { style: box, children: [_jsxs(Row, { style: { marginBottom: "8px" }, children: [_jsx(Column, { style: { width: "auto", verticalAlign: "middle" }, children: _jsx(Img, { src: `${baseUrl}`, width: "28", height: "28", alt: "Tracked" }) }), _jsx(Column, { style: {
|
|
7
|
-
width: "auto",
|
|
8
|
-
verticalAlign: "middle",
|
|
9
|
-
paddingLeft: "4px",
|
|
10
|
-
}, children: _jsx(Text, { style: {
|
|
11
|
-
fontSize: "28px",
|
|
12
|
-
fontWeight: "900",
|
|
13
|
-
fontFamily: "Raleway, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
|
|
14
|
-
color: "#020617",
|
|
15
|
-
margin: "0",
|
|
16
|
-
lineHeight: "32px",
|
|
17
|
-
letterSpacing: "0.5px",
|
|
18
|
-
}, children: "TRACKED" }) })] }), _jsx(Hr, { style: hr }), _jsx(Text, { style: heading, children: "Great News!" }), _jsxs(Text, { style: paragraph, children: ["Hi ", coachName, ", ", displayName, " has accepted your coaching invitation and is now part of your coaching roster."] }), _jsxs(Section, { style: infoBox, children: [_jsx(Text, { style: infoHeading, children: "Client Details:" }), _jsxs(Text, { style: infoText, children: [_jsx("strong", { children: "Name:" }), " ", displayName] }), _jsxs(Text, { style: infoText, children: [_jsx("strong", { children: "Email:" }), " ", clientEmail] })] }), _jsx(Text, { style: paragraph, children: "You can now start creating their personalized training program and tracking their progress." }), _jsx("div", { style: {
|
|
19
|
-
marginTop: "24px",
|
|
20
|
-
marginBottom: "24px",
|
|
21
|
-
textAlign: "left",
|
|
22
|
-
}, children: _jsx("a", { href: clientProfileUrl, style: {
|
|
23
|
-
backgroundColor: "#0f172a",
|
|
24
|
-
borderRadius: "8px",
|
|
25
|
-
fontSize: "16px",
|
|
26
|
-
fontWeight: "bold",
|
|
27
|
-
textDecoration: "none",
|
|
28
|
-
padding: "12px 32px",
|
|
29
|
-
display: "inline-block",
|
|
30
|
-
}, children: _jsx("span", { style: { color: "#ffffff", textDecoration: "none" }, children: "View Client Profile" }) }) }), _jsx(Text, { style: { ...paragraph }, children: "Get started by creating their first workout program or checking in with them through the app." }), _jsx("div", { style: {
|
|
31
|
-
textAlign: "left",
|
|
32
|
-
margin: "24px 0",
|
|
33
|
-
}, children: _jsx("a", { href: "https://www.discord.gg/trackedgg", style: {
|
|
34
|
-
backgroundColor: "#5865F2",
|
|
35
|
-
borderRadius: "8px",
|
|
36
|
-
fontSize: "16px",
|
|
37
|
-
fontWeight: "bold",
|
|
38
|
-
textDecoration: "none",
|
|
39
|
-
padding: "12px 32px",
|
|
40
|
-
display: "inline-block",
|
|
41
|
-
}, children: _jsx("span", { style: { color: "#ffffff", textDecoration: "none" }, children: "Join our Discord Community" }) }) }), _jsx(Hr, { style: hr }), _jsxs(Text, { style: footer, children: ["Copyright \u00A9 Tracked Training Platform Inc. ", _jsx("br", {}), " 9101 Horne Street, Vancouver, BC"] }), _jsxs(Container, { children: [_jsx(Link, { href: `${websiteUrl}/terms`, style: { ...footer, paddingRight: 10 }, children: "Terms" }), _jsx(Link, { style: { ...footer, paddingRight: 10 }, children: " | " }), _jsx(Link, { href: `${websiteUrl}/privacy`, style: { ...footer, paddingRight: 10 }, children: "Privacy" }), _jsx(Link, { style: { ...footer, paddingRight: 10 }, children: " | " }), _jsx(Link, { href: `${websiteUrl}/support`, style: { ...footer, paddingRight: 10 }, children: "Support" })] }), _jsx(Text, { style: footer, children: "This is a service notification by the Tracked Training Platform." })] }) }) })] }));
|
|
42
|
-
};
|
|
43
|
-
const main = {
|
|
44
|
-
backgroundColor: "#020617", // slate-950
|
|
45
|
-
fontFamily: '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Ubuntu,sans-serif',
|
|
46
|
-
};
|
|
47
|
-
const container = {
|
|
48
|
-
backgroundColor: "#020617", // slate-950
|
|
49
|
-
margin: "0 auto",
|
|
50
|
-
padding: "20px 0 48px",
|
|
51
|
-
marginBottom: "64px",
|
|
52
|
-
borderRadius: "8px",
|
|
53
|
-
};
|
|
54
|
-
const box = {
|
|
55
|
-
padding: "0 24px",
|
|
56
|
-
};
|
|
57
|
-
const hr = {
|
|
58
|
-
borderColor: "#4ade80", // green-400
|
|
59
|
-
margin: "24px 0",
|
|
60
|
-
borderWidth: "1px",
|
|
61
|
-
};
|
|
62
|
-
const paragraph = {
|
|
63
|
-
color: "#ffffff", // white
|
|
64
|
-
fontSize: "16px",
|
|
65
|
-
lineHeight: "24px",
|
|
66
|
-
textAlign: "left",
|
|
67
|
-
};
|
|
68
|
-
const heading = {
|
|
69
|
-
color: "#ffffff", // white
|
|
70
|
-
fontSize: "24px",
|
|
71
|
-
lineHeight: "32px",
|
|
72
|
-
fontWeight: "bold",
|
|
73
|
-
marginBottom: "16px",
|
|
74
|
-
};
|
|
75
|
-
const infoBox = {
|
|
76
|
-
backgroundColor: "#1e293b",
|
|
77
|
-
padding: "16px 24px",
|
|
78
|
-
borderRadius: "8px",
|
|
79
|
-
margin: "24px 0",
|
|
80
|
-
};
|
|
81
|
-
const infoHeading = {
|
|
82
|
-
color: "#ffffff",
|
|
83
|
-
fontSize: "16px",
|
|
84
|
-
fontWeight: "bold",
|
|
85
|
-
marginBottom: "12px",
|
|
86
|
-
};
|
|
87
|
-
const infoText = {
|
|
88
|
-
color: "#e2e8f0",
|
|
89
|
-
fontSize: "14px",
|
|
90
|
-
lineHeight: "24px",
|
|
91
|
-
marginBottom: "4px",
|
|
92
|
-
};
|
|
93
|
-
const footer = {
|
|
94
|
-
color: "#94a3b8", // slate-400 for subtle footer text
|
|
95
|
-
fontSize: "12px",
|
|
96
|
-
lineHeight: "16px",
|
|
97
|
-
};
|
|
98
|
-
export default ClientAcceptedInvitationEmail;
|
|
99
|
-
//# sourceMappingURL=client-accepted-invitation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client-accepted-invitation.js","sourceRoot":"","sources":["../../src/emails/client-accepted-invitation.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,258 +0,0 @@
|
|
|
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 ClientAcceptedInvitationEmailProps {
|
|
19
|
-
coachName: string;
|
|
20
|
-
clientName: string;
|
|
21
|
-
clientEmail: string;
|
|
22
|
-
clientProfileUrl: string;
|
|
23
|
-
websiteUrl: string;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const baseUrl = "https://tracked.gg/android-chrome-192x192.png";
|
|
27
|
-
|
|
28
|
-
export const ClientAcceptedInvitationEmail = ({
|
|
29
|
-
coachName,
|
|
30
|
-
clientName,
|
|
31
|
-
clientEmail,
|
|
32
|
-
clientProfileUrl,
|
|
33
|
-
websiteUrl = "https://tracked.gg",
|
|
34
|
-
}: ClientAcceptedInvitationEmailProps) => {
|
|
35
|
-
const displayName = clientName || clientEmail;
|
|
36
|
-
|
|
37
|
-
return (
|
|
38
|
-
<Html>
|
|
39
|
-
<Head>
|
|
40
|
-
<meta name="color-scheme" content="light only" />
|
|
41
|
-
<meta name="supported-color-schemes" content="light only" />
|
|
42
|
-
</Head>
|
|
43
|
-
<Preview>
|
|
44
|
-
{displayName} accepted your coaching invitation on Tracked
|
|
45
|
-
</Preview>
|
|
46
|
-
<Body style={main}>
|
|
47
|
-
<Container style={container}>
|
|
48
|
-
<Section style={box}>
|
|
49
|
-
<Row style={{ marginBottom: "8px" }}>
|
|
50
|
-
<Column style={{ width: "auto", verticalAlign: "middle" }}>
|
|
51
|
-
<Img src={`${baseUrl}`} width="28" height="28" alt="Tracked" />
|
|
52
|
-
</Column>
|
|
53
|
-
<Column
|
|
54
|
-
style={{
|
|
55
|
-
width: "auto",
|
|
56
|
-
verticalAlign: "middle",
|
|
57
|
-
paddingLeft: "4px",
|
|
58
|
-
}}
|
|
59
|
-
>
|
|
60
|
-
<Text
|
|
61
|
-
style={{
|
|
62
|
-
fontSize: "28px",
|
|
63
|
-
fontWeight: "900",
|
|
64
|
-
fontFamily:
|
|
65
|
-
"Raleway, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
|
|
66
|
-
color: "#020617",
|
|
67
|
-
margin: "0",
|
|
68
|
-
lineHeight: "32px",
|
|
69
|
-
letterSpacing: "0.5px",
|
|
70
|
-
}}
|
|
71
|
-
>
|
|
72
|
-
TRACKED
|
|
73
|
-
</Text>
|
|
74
|
-
</Column>
|
|
75
|
-
</Row>
|
|
76
|
-
<Hr style={hr} />
|
|
77
|
-
|
|
78
|
-
<Text style={heading}>Great News!</Text>
|
|
79
|
-
<Text style={paragraph}>
|
|
80
|
-
Hi {coachName}, {displayName} has accepted your coaching
|
|
81
|
-
invitation and is now part of your coaching roster.
|
|
82
|
-
</Text>
|
|
83
|
-
|
|
84
|
-
<Section style={infoBox}>
|
|
85
|
-
<Text style={infoHeading}>Client Details:</Text>
|
|
86
|
-
<Text style={infoText}>
|
|
87
|
-
<strong>Name:</strong> {displayName}
|
|
88
|
-
</Text>
|
|
89
|
-
<Text style={infoText}>
|
|
90
|
-
<strong>Email:</strong> {clientEmail}
|
|
91
|
-
</Text>
|
|
92
|
-
</Section>
|
|
93
|
-
|
|
94
|
-
<Text style={paragraph}>
|
|
95
|
-
You can now start creating their personalized training program and
|
|
96
|
-
tracking their progress.
|
|
97
|
-
</Text>
|
|
98
|
-
|
|
99
|
-
<div
|
|
100
|
-
style={{
|
|
101
|
-
marginTop: "24px",
|
|
102
|
-
marginBottom: "24px",
|
|
103
|
-
textAlign: "left" as const,
|
|
104
|
-
}}
|
|
105
|
-
>
|
|
106
|
-
<a
|
|
107
|
-
href={clientProfileUrl}
|
|
108
|
-
style={{
|
|
109
|
-
backgroundColor: "#0f172a",
|
|
110
|
-
borderRadius: "8px",
|
|
111
|
-
fontSize: "16px",
|
|
112
|
-
fontWeight: "bold",
|
|
113
|
-
textDecoration: "none",
|
|
114
|
-
padding: "12px 32px",
|
|
115
|
-
display: "inline-block",
|
|
116
|
-
}}
|
|
117
|
-
>
|
|
118
|
-
<span style={{ color: "#ffffff", textDecoration: "none" }}>
|
|
119
|
-
View Client Profile
|
|
120
|
-
</span>
|
|
121
|
-
</a>
|
|
122
|
-
</div>
|
|
123
|
-
|
|
124
|
-
<Text style={{ ...paragraph }}>
|
|
125
|
-
Get started by creating their first workout program or checking in
|
|
126
|
-
with them through the app.
|
|
127
|
-
</Text>
|
|
128
|
-
|
|
129
|
-
<div
|
|
130
|
-
style={{
|
|
131
|
-
textAlign: "left" as const,
|
|
132
|
-
margin: "24px 0",
|
|
133
|
-
}}
|
|
134
|
-
>
|
|
135
|
-
<a
|
|
136
|
-
href="https://www.discord.gg/trackedgg"
|
|
137
|
-
style={{
|
|
138
|
-
backgroundColor: "#5865F2",
|
|
139
|
-
borderRadius: "8px",
|
|
140
|
-
fontSize: "16px",
|
|
141
|
-
fontWeight: "bold",
|
|
142
|
-
textDecoration: "none",
|
|
143
|
-
padding: "12px 32px",
|
|
144
|
-
display: "inline-block",
|
|
145
|
-
}}
|
|
146
|
-
>
|
|
147
|
-
<span style={{ color: "#ffffff", textDecoration: "none" }}>
|
|
148
|
-
Join our Discord Community
|
|
149
|
-
</span>
|
|
150
|
-
</a>
|
|
151
|
-
</div>
|
|
152
|
-
|
|
153
|
-
<Hr style={hr} />
|
|
154
|
-
<Text style={footer}>
|
|
155
|
-
Copyright © Tracked Training Platform Inc. <br /> 9101 Horne
|
|
156
|
-
Street, Vancouver, BC
|
|
157
|
-
</Text>
|
|
158
|
-
|
|
159
|
-
<Container>
|
|
160
|
-
<Link
|
|
161
|
-
href={`${websiteUrl}/terms`}
|
|
162
|
-
style={{ ...footer, paddingRight: 10 }}
|
|
163
|
-
>
|
|
164
|
-
Terms
|
|
165
|
-
</Link>
|
|
166
|
-
<Link style={{ ...footer, paddingRight: 10 }}> | </Link>
|
|
167
|
-
<Link
|
|
168
|
-
href={`${websiteUrl}/privacy`}
|
|
169
|
-
style={{ ...footer, paddingRight: 10 }}
|
|
170
|
-
>
|
|
171
|
-
Privacy
|
|
172
|
-
</Link>
|
|
173
|
-
<Link style={{ ...footer, paddingRight: 10 }}> | </Link>
|
|
174
|
-
<Link
|
|
175
|
-
href={`${websiteUrl}/support`}
|
|
176
|
-
style={{ ...footer, paddingRight: 10 }}
|
|
177
|
-
>
|
|
178
|
-
Support
|
|
179
|
-
</Link>
|
|
180
|
-
</Container>
|
|
181
|
-
|
|
182
|
-
<Text style={footer}>
|
|
183
|
-
This is a service notification by the Tracked Training Platform.
|
|
184
|
-
</Text>
|
|
185
|
-
</Section>
|
|
186
|
-
</Container>
|
|
187
|
-
</Body>
|
|
188
|
-
</Html>
|
|
189
|
-
);
|
|
190
|
-
};
|
|
191
|
-
|
|
192
|
-
const main = {
|
|
193
|
-
backgroundColor: "#020617", // slate-950
|
|
194
|
-
fontFamily:
|
|
195
|
-
'-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Ubuntu,sans-serif',
|
|
196
|
-
};
|
|
197
|
-
|
|
198
|
-
const container = {
|
|
199
|
-
backgroundColor: "#020617", // slate-950
|
|
200
|
-
margin: "0 auto",
|
|
201
|
-
padding: "20px 0 48px",
|
|
202
|
-
marginBottom: "64px",
|
|
203
|
-
borderRadius: "8px",
|
|
204
|
-
};
|
|
205
|
-
|
|
206
|
-
const box = {
|
|
207
|
-
padding: "0 24px",
|
|
208
|
-
};
|
|
209
|
-
|
|
210
|
-
const hr = {
|
|
211
|
-
borderColor: "#4ade80", // green-400
|
|
212
|
-
margin: "24px 0",
|
|
213
|
-
borderWidth: "1px",
|
|
214
|
-
};
|
|
215
|
-
|
|
216
|
-
const paragraph = {
|
|
217
|
-
color: "#ffffff", // white
|
|
218
|
-
fontSize: "16px",
|
|
219
|
-
lineHeight: "24px",
|
|
220
|
-
textAlign: "left" as const,
|
|
221
|
-
};
|
|
222
|
-
|
|
223
|
-
const heading = {
|
|
224
|
-
color: "#ffffff", // white
|
|
225
|
-
fontSize: "24px",
|
|
226
|
-
lineHeight: "32px",
|
|
227
|
-
fontWeight: "bold",
|
|
228
|
-
marginBottom: "16px",
|
|
229
|
-
};
|
|
230
|
-
|
|
231
|
-
const infoBox = {
|
|
232
|
-
backgroundColor: "#1e293b",
|
|
233
|
-
padding: "16px 24px",
|
|
234
|
-
borderRadius: "8px",
|
|
235
|
-
margin: "24px 0",
|
|
236
|
-
};
|
|
237
|
-
|
|
238
|
-
const infoHeading = {
|
|
239
|
-
color: "#ffffff",
|
|
240
|
-
fontSize: "16px",
|
|
241
|
-
fontWeight: "bold",
|
|
242
|
-
marginBottom: "12px",
|
|
243
|
-
};
|
|
244
|
-
|
|
245
|
-
const infoText = {
|
|
246
|
-
color: "#e2e8f0",
|
|
247
|
-
fontSize: "14px",
|
|
248
|
-
lineHeight: "24px",
|
|
249
|
-
marginBottom: "4px",
|
|
250
|
-
};
|
|
251
|
-
|
|
252
|
-
const footer = {
|
|
253
|
-
color: "#94a3b8", // slate-400 for subtle footer text
|
|
254
|
-
fontSize: "12px",
|
|
255
|
-
lineHeight: "16px",
|
|
256
|
-
};
|
|
257
|
-
|
|
258
|
-
export default ClientAcceptedInvitationEmail;
|