@tracked/emails 0.2.0 → 0.2.1
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/components/content.d.ts +58 -0
- package/dist/components/content.d.ts.map +1 -0
- package/dist/components/content.js +166 -0
- package/dist/components/content.js.map +1 -0
- package/dist/components/index.d.ts +6 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +11 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/interactive.d.ts +23 -0
- package/dist/components/interactive.d.ts.map +1 -0
- package/dist/components/interactive.js +66 -0
- package/dist/components/interactive.js.map +1 -0
- package/dist/components/layout.d.ts +27 -0
- package/dist/components/layout.d.ts.map +1 -0
- package/dist/components/layout.js +83 -0
- package/dist/components/layout.js.map +1 -0
- package/dist/components/tokens.d.ts +58 -0
- package/dist/components/tokens.d.ts.map +1 -0
- package/dist/components/tokens.js +64 -0
- package/dist/components/tokens.js.map +1 -0
- package/dist/components/typography.d.ts +31 -0
- package/dist/components/typography.d.ts.map +1 -0
- package/dist/components/typography.js +72 -0
- package/dist/components/typography.js.map +1 -0
- package/dist/emails/anniversary.d.ts +12 -0
- package/dist/emails/anniversary.d.ts.map +1 -0
- package/dist/emails/anniversary.js +41 -0
- package/dist/emails/anniversary.js.map +1 -0
- package/dist/emails/app-review-request.d.ts +11 -0
- package/dist/emails/app-review-request.d.ts.map +1 -0
- package/dist/emails/app-review-request.js +24 -0
- package/dist/emails/app-review-request.js.map +1 -0
- package/dist/emails/bodyweight-goal-reached.d.ts +1 -1
- package/dist/emails/bodyweight-goal-reached.d.ts.map +1 -1
- package/dist/emails/bodyweight-goal-reached.js +86 -159
- package/dist/emails/bodyweight-goal-reached.js.map +1 -1
- package/dist/emails/client-inactive-alert.d.ts +14 -0
- package/dist/emails/client-inactive-alert.d.ts.map +1 -0
- package/dist/emails/client-inactive-alert.js +34 -0
- package/dist/emails/client-inactive-alert.js.map +1 -0
- package/dist/emails/client-onboarded.d.ts.map +1 -1
- package/dist/emails/client-onboarded.js +37 -123
- package/dist/emails/client-onboarded.js.map +1 -1
- package/dist/emails/coach-invite.d.ts +1 -1
- package/dist/emails/coach-invite.d.ts.map +1 -1
- package/dist/emails/coach-invite.js +13 -121
- package/dist/emails/coach-invite.js.map +1 -1
- package/dist/emails/coach-removed-client.d.ts +1 -1
- package/dist/emails/coach-removed-client.d.ts.map +1 -1
- package/dist/emails/coach-removed-client.js +3 -76
- package/dist/emails/coach-removed-client.js.map +1 -1
- package/dist/emails/direct-message.d.ts +1 -1
- package/dist/emails/direct-message.d.ts.map +1 -1
- package/dist/emails/direct-message.js +22 -96
- package/dist/emails/direct-message.js.map +1 -1
- package/dist/emails/feature-discovery.d.ts +2 -1
- package/dist/emails/feature-discovery.d.ts.map +1 -1
- package/dist/emails/feature-discovery.js +20 -117
- package/dist/emails/feature-discovery.js.map +1 -1
- package/dist/emails/first-workout-assigned.d.ts +1 -1
- package/dist/emails/first-workout-assigned.d.ts.map +1 -1
- package/dist/emails/first-workout-assigned.js +3 -94
- package/dist/emails/first-workout-assigned.js.map +1 -1
- package/dist/emails/first-workout-completed.d.ts +1 -1
- package/dist/emails/first-workout-completed.d.ts.map +1 -1
- package/dist/emails/first-workout-completed.js +14 -125
- package/dist/emails/first-workout-completed.js.map +1 -1
- package/dist/emails/inactive-reengagement.d.ts +10 -0
- package/dist/emails/inactive-reengagement.d.ts.map +1 -0
- package/dist/emails/inactive-reengagement.js +31 -0
- package/dist/emails/inactive-reengagement.js.map +1 -0
- package/dist/emails/monthly-report.d.ts +2 -1
- package/dist/emails/monthly-report.d.ts.map +1 -1
- package/dist/emails/monthly-report.js +14 -166
- package/dist/emails/monthly-report.js.map +1 -1
- package/dist/emails/new-follower.d.ts +1 -1
- package/dist/emails/new-follower.d.ts.map +1 -1
- package/dist/emails/new-follower.js +7 -91
- package/dist/emails/new-follower.js.map +1 -1
- package/dist/emails/nps-survey.d.ts +9 -0
- package/dist/emails/nps-survey.d.ts.map +1 -0
- package/dist/emails/nps-survey.js +51 -0
- package/dist/emails/nps-survey.js.map +1 -0
- package/dist/emails/subscription-canceled.d.ts +1 -1
- package/dist/emails/subscription-canceled.d.ts.map +1 -1
- package/dist/emails/subscription-canceled.js +20 -127
- package/dist/emails/subscription-canceled.js.map +1 -1
- package/dist/emails/support-email.d.ts +1 -1
- package/dist/emails/support-email.d.ts.map +1 -1
- package/dist/emails/support-email.js +3 -38
- package/dist/emails/support-email.js.map +1 -1
- package/dist/emails/team-invite.d.ts.map +1 -1
- package/dist/emails/team-invite.js +7 -96
- package/dist/emails/team-invite.js.map +1 -1
- package/dist/emails/team-member-removed-email.d.ts +1 -1
- package/dist/emails/team-member-removed-email.d.ts.map +1 -1
- package/dist/emails/team-member-removed-email.js +3 -93
- package/dist/emails/team-member-removed-email.js.map +1 -1
- package/dist/emails/tracked-magic-link-activate.d.ts +2 -2
- package/dist/emails/tracked-magic-link-activate.d.ts.map +1 -1
- package/dist/emails/tracked-magic-link-activate.js +3 -91
- package/dist/emails/tracked-magic-link-activate.js.map +1 -1
- package/dist/emails/tracked-magic-link.d.ts +3 -3
- package/dist/emails/tracked-magic-link.d.ts.map +1 -1
- package/dist/emails/tracked-magic-link.js +3 -99
- package/dist/emails/tracked-magic-link.js.map +1 -1
- package/dist/emails/week-one-checkin.d.ts +3 -2
- package/dist/emails/week-one-checkin.d.ts.map +1 -1
- package/dist/emails/week-one-checkin.js +22 -136
- package/dist/emails/week-one-checkin.js.map +1 -1
- package/dist/emails/weekly-progress-digest.d.ts +21 -0
- package/dist/emails/weekly-progress-digest.d.ts.map +1 -0
- package/dist/emails/weekly-progress-digest.js +78 -0
- package/dist/emails/weekly-progress-digest.js.map +1 -0
- package/dist/emails/welcome.d.ts +3 -2
- package/dist/emails/welcome.d.ts.map +1 -1
- package/dist/emails/welcome.js +16 -142
- package/dist/emails/welcome.js.map +1 -1
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/components/tokens.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,cAAc;IACd,UAAU,EAAE,SAAS;IACrB,OAAO,EAAE,SAAS,EAAE,WAAW;IAC/B,UAAU,EAAE,SAAS,EAAE,YAAY;IAEnC,OAAO;IACP,WAAW,EAAE,SAAS,EAAE,YAAY;IACpC,aAAa,EAAE,SAAS,EAAE,YAAY;IACtC,SAAS,EAAE,SAAS,EAAE,YAAY;IAElC,QAAQ;IACR,OAAO,EAAE,SAAS,EAAE,wBAAwB;IAC5C,MAAM,EAAE,SAAS,EAAE,6BAA6B;IAChD,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,SAAS;IAEpB,UAAU;IACV,MAAM,EAAE,SAAS,EAAE,YAAY;IAC/B,YAAY,EAAE,SAAS,EAAE,YAAY;IACrC,YAAY,EAAE,SAAS,EAAE,cAAc;IAEvC,SAAS;IACT,OAAO,EAAE,SAAS,EAAE,cAAc;IAClC,KAAK,EAAE,SAAS,EAAE,UAAU;IAC5B,OAAO,EAAE,SAAS,EAAE,YAAY;CACjC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,UAAU,EACR,4FAA4F;IAC9F,SAAS,EACP,oEAAoE;CACvE,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,MAAM;IACV,GAAG,EAAE,MAAM;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,QAAQ;CACf,CAAC;AAEF,qCAAqC;AACrC,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE;QACJ,eAAe,EAAE,MAAM,CAAC,UAAU;QAClC,UAAU,EAAE,UAAU,CAAC,UAAU;KAClC;IACD,SAAS,EAAE;QACT,eAAe,EAAE,MAAM,CAAC,UAAU;QAClC,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,aAAa;QACtB,QAAQ,EAAE,OAAO;KAClB;IACD,GAAG,EAAE;QACH,OAAO,EAAE,QAAQ;KAClB;CACF,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
interface HeadingProps {
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
as?: "h1" | "h2" | "h3";
|
|
5
|
+
style?: React.CSSProperties;
|
|
6
|
+
}
|
|
7
|
+
export declare const Heading: ({ children, as, style }: HeadingProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
interface ParagraphProps {
|
|
9
|
+
children: React.ReactNode;
|
|
10
|
+
muted?: boolean;
|
|
11
|
+
style?: React.CSSProperties;
|
|
12
|
+
}
|
|
13
|
+
export declare const Paragraph: ({ children, muted, style }: ParagraphProps) => import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
interface LabelProps {
|
|
15
|
+
children: React.ReactNode;
|
|
16
|
+
style?: React.CSSProperties;
|
|
17
|
+
}
|
|
18
|
+
export declare const Label: ({ children, style }: LabelProps) => import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
interface HighlightTextProps {
|
|
20
|
+
children: React.ReactNode;
|
|
21
|
+
style?: React.CSSProperties;
|
|
22
|
+
}
|
|
23
|
+
export declare const HighlightText: ({ children, style }: HighlightTextProps) => import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
interface SmallTextProps {
|
|
25
|
+
children: React.ReactNode;
|
|
26
|
+
muted?: boolean;
|
|
27
|
+
style?: React.CSSProperties;
|
|
28
|
+
}
|
|
29
|
+
export declare const SmallText: ({ children, muted, style }: SmallTextProps) => import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=typography.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typography.d.ts","sourceRoot":"","sources":["../../src/components/typography.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,UAAU,YAAY;IACpB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,eAAO,MAAM,OAAO,GAAI,yBAAgC,YAAY,4CAOnE,CAAC;AAgCF,UAAU,cAAc;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,eAAO,MAAM,SAAS,GAAI,4BAAoC,cAAc,4CAe3E,CAAC;AAKF,UAAU,UAAU;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,eAAO,MAAM,KAAK,GAAI,qBAAqB,UAAU,4CAcpD,CAAC;AAKF,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,eAAO,MAAM,aAAa,GAAI,qBAAqB,kBAAkB,4CAepE,CAAC;AAKF,UAAU,cAAc;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,eAAO,MAAM,SAAS,GAAI,4BAAoC,cAAc,4CAc3E,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Text, Heading as EmailHeading } from "@react-email/components";
|
|
3
|
+
import { colors, spacing } from "./tokens";
|
|
4
|
+
export const Heading = ({ children, as = "h1", style }) => {
|
|
5
|
+
const baseStyle = headingStyles[as];
|
|
6
|
+
return (_jsx(EmailHeading, { as: as, style: { ...baseStyle, ...style }, children: children }));
|
|
7
|
+
};
|
|
8
|
+
const headingStyles = {
|
|
9
|
+
h1: {
|
|
10
|
+
color: colors.textPrimary,
|
|
11
|
+
fontSize: "24px",
|
|
12
|
+
lineHeight: "32px",
|
|
13
|
+
fontWeight: "bold",
|
|
14
|
+
marginBottom: spacing.md,
|
|
15
|
+
marginTop: "0",
|
|
16
|
+
},
|
|
17
|
+
h2: {
|
|
18
|
+
color: colors.textPrimary,
|
|
19
|
+
fontSize: "20px",
|
|
20
|
+
lineHeight: "28px",
|
|
21
|
+
fontWeight: "600",
|
|
22
|
+
marginBottom: spacing.sm,
|
|
23
|
+
marginTop: "0",
|
|
24
|
+
},
|
|
25
|
+
h3: {
|
|
26
|
+
color: colors.textPrimary,
|
|
27
|
+
fontSize: "16px",
|
|
28
|
+
lineHeight: "24px",
|
|
29
|
+
fontWeight: "600",
|
|
30
|
+
marginBottom: spacing.sm,
|
|
31
|
+
marginTop: "0",
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
export const Paragraph = ({ children, muted = false, style }) => {
|
|
35
|
+
return (_jsx(Text, { style: {
|
|
36
|
+
color: muted ? colors.textSecondary : colors.textPrimary,
|
|
37
|
+
fontSize: "16px",
|
|
38
|
+
lineHeight: "24px",
|
|
39
|
+
textAlign: "left",
|
|
40
|
+
margin: `0 0 ${spacing.md} 0`,
|
|
41
|
+
...style,
|
|
42
|
+
}, children: children }));
|
|
43
|
+
};
|
|
44
|
+
export const Label = ({ children, style }) => {
|
|
45
|
+
return (_jsx(Text, { style: {
|
|
46
|
+
color: colors.textMuted,
|
|
47
|
+
fontSize: "14px",
|
|
48
|
+
lineHeight: "20px",
|
|
49
|
+
margin: "0",
|
|
50
|
+
...style,
|
|
51
|
+
}, children: children }));
|
|
52
|
+
};
|
|
53
|
+
export const HighlightText = ({ children, style }) => {
|
|
54
|
+
return (_jsx(Text, { style: {
|
|
55
|
+
color: colors.accent,
|
|
56
|
+
fontSize: "16px",
|
|
57
|
+
fontWeight: "600",
|
|
58
|
+
lineHeight: "24px",
|
|
59
|
+
margin: "0",
|
|
60
|
+
...style,
|
|
61
|
+
}, children: children }));
|
|
62
|
+
};
|
|
63
|
+
export const SmallText = ({ children, muted = false, style }) => {
|
|
64
|
+
return (_jsx(Text, { style: {
|
|
65
|
+
color: muted ? colors.textMuted : colors.textSecondary,
|
|
66
|
+
fontSize: "14px",
|
|
67
|
+
lineHeight: "20px",
|
|
68
|
+
margin: "0",
|
|
69
|
+
...style,
|
|
70
|
+
}, children: children }));
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=typography.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typography.js","sourceRoot":"","sources":["../../src/components/typography.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
interface AnniversaryEmailProps {
|
|
2
|
+
userName: string;
|
|
3
|
+
yearsOnPlatform: number;
|
|
4
|
+
totalWorkouts?: number;
|
|
5
|
+
totalVolume?: string;
|
|
6
|
+
appUrl: string;
|
|
7
|
+
websiteUrl?: string;
|
|
8
|
+
unsubscribeUrl?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare const AnniversaryEmail: ({ userName, yearsOnPlatform, totalWorkouts, totalVolume, appUrl, websiteUrl, unsubscribeUrl, }: AnniversaryEmailProps) => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export default AnniversaryEmail;
|
|
12
|
+
//# sourceMappingURL=anniversary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anniversary.d.ts","sourceRoot":"","sources":["../../src/emails/anniversary.tsx"],"names":[],"mappings":"AAcA,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,gBAAgB,GAAI,gGAQ9B,qBAAqB,4CAkGvB,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Section, Text } from "@react-email/components";
|
|
3
|
+
import { EmailLayout, EmailHeader, EmailFooter, Heading, Paragraph, PrimaryButton, DiscordButton, colors, spacing, } from "../components";
|
|
4
|
+
export const AnniversaryEmail = ({ userName = "Alex", yearsOnPlatform = 1, totalWorkouts = 156, totalVolume = "1,250,000 lbs", appUrl = "tracked://bodyweight", websiteUrl = "https://tracked.gg", unsubscribeUrl = "https://tracked.gg/unsubscribe", }) => {
|
|
5
|
+
const yearText = yearsOnPlatform === 1 ? "1 Year" : `${yearsOnPlatform} Years`;
|
|
6
|
+
return (_jsxs(EmailLayout, { preview: `Happy ${yearText} Anniversary on Tracked!`, children: [_jsx(EmailHeader, {}), _jsxs(Heading, { children: ["Happy ", yearText, " Anniversary!"] }), _jsxs(Paragraph, { children: ["Congratulations ", userName, "! Today marks ", yearsOnPlatform, " ", yearsOnPlatform === 1 ? "year" : "years", " since you joined Tracked. Thank you for being part of our community!"] }), (totalWorkouts || totalVolume) && (_jsxs(Section, { style: {
|
|
7
|
+
backgroundColor: colors.surface,
|
|
8
|
+
padding: spacing.lg,
|
|
9
|
+
borderRadius: "8px",
|
|
10
|
+
margin: `${spacing.lg} 0`,
|
|
11
|
+
border: `1px solid ${colors.border}`,
|
|
12
|
+
textAlign: "center",
|
|
13
|
+
}, children: [_jsx(Text, { style: {
|
|
14
|
+
color: colors.accent,
|
|
15
|
+
fontSize: "14px",
|
|
16
|
+
fontWeight: "bold",
|
|
17
|
+
textTransform: "uppercase",
|
|
18
|
+
letterSpacing: "0.5px",
|
|
19
|
+
margin: "0 0 16px 0",
|
|
20
|
+
}, children: "Your Journey So Far" }), totalWorkouts && (_jsx(Text, { style: {
|
|
21
|
+
color: colors.textPrimary,
|
|
22
|
+
fontSize: "32px",
|
|
23
|
+
fontWeight: "bold",
|
|
24
|
+
margin: "0 0 4px 0",
|
|
25
|
+
}, children: totalWorkouts.toLocaleString() })), totalWorkouts && (_jsx(Text, { style: {
|
|
26
|
+
color: colors.textSecondary,
|
|
27
|
+
fontSize: "14px",
|
|
28
|
+
margin: "0 0 16px 0",
|
|
29
|
+
}, children: "workouts logged" })), totalVolume && (_jsxs(_Fragment, { children: [_jsx(Text, { style: {
|
|
30
|
+
color: colors.textPrimary,
|
|
31
|
+
fontSize: "32px",
|
|
32
|
+
fontWeight: "bold",
|
|
33
|
+
margin: "0 0 4px 0",
|
|
34
|
+
}, children: totalVolume }), _jsx(Text, { style: {
|
|
35
|
+
color: colors.textSecondary,
|
|
36
|
+
fontSize: "14px",
|
|
37
|
+
margin: "0",
|
|
38
|
+
}, children: "total volume lifted" })] }))] })), _jsx(Paragraph, { children: "Here's to another year of crushing goals and getting stronger. Keep up the amazing work!" }), _jsx(PrimaryButton, { href: appUrl, children: "View Your Progress" }), _jsx(DiscordButton, {}), _jsx(EmailFooter, { websiteUrl: websiteUrl, marketing: true, unsubscribeUrl: unsubscribeUrl })] }));
|
|
39
|
+
};
|
|
40
|
+
export default AnniversaryEmail;
|
|
41
|
+
//# sourceMappingURL=anniversary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anniversary.js","sourceRoot":"","sources":["../../src/emails/anniversary.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,OAAO,EACP,SAAS,EACT,aAAa,EACb,aAAa,EACb,MAAM,EACN,OAAO,GACR,MAAM,eAAe,CAAC;AAYvB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAC/B,QAAQ,GAAG,MAAM,EACjB,eAAe,GAAG,CAAC,EACnB,aAAa,GAAG,GAAG,EACnB,WAAW,GAAG,eAAe,EAC7B,MAAM,GAAG,sBAAsB,EAC/B,UAAU,GAAG,oBAAoB,EACjC,cAAc,GAAG,gCAAgC,GAC3B,EAAE,EAAE;IAC1B,MAAM,QAAQ,GAAG,eAAe,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,eAAe,QAAQ,CAAC;IAE/E,OAAO,CACL,MAAC,WAAW,IAAC,OAAO,EAAE,SAAS,QAAQ,0BAA0B,aAC/D,KAAC,WAAW,KAAG,EAEf,MAAC,OAAO,yBAAQ,QAAQ,qBAAwB,EAChD,MAAC,SAAS,mCACS,QAAQ,oBAAgB,eAAe,EAAE,GAAG,EAC5D,eAAe,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,6EAE/B,EAEX,CAAC,aAAa,IAAI,WAAW,CAAC,IAAI,CACjC,MAAC,OAAO,IACN,KAAK,EAAE;oBACL,eAAe,EAAE,MAAM,CAAC,OAAO;oBAC/B,OAAO,EAAE,OAAO,CAAC,EAAE;oBACnB,YAAY,EAAE,KAAK;oBACnB,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI;oBACzB,MAAM,EAAE,aAAa,MAAM,CAAC,MAAM,EAAE;oBACpC,SAAS,EAAE,QAAiB;iBAC7B,aAED,KAAC,IAAI,IACH,KAAK,EAAE;4BACL,KAAK,EAAE,MAAM,CAAC,MAAM;4BACpB,QAAQ,EAAE,MAAM;4BAChB,UAAU,EAAE,MAAM;4BAClB,aAAa,EAAE,WAAoB;4BACnC,aAAa,EAAE,OAAO;4BACtB,MAAM,EAAE,YAAY;yBACrB,oCAGI,EACN,aAAa,IAAI,CAChB,KAAC,IAAI,IACH,KAAK,EAAE;4BACL,KAAK,EAAE,MAAM,CAAC,WAAW;4BACzB,QAAQ,EAAE,MAAM;4BAChB,UAAU,EAAE,MAAM;4BAClB,MAAM,EAAE,WAAW;yBACpB,YAEA,aAAa,CAAC,cAAc,EAAE,GAC1B,CACR,EACA,aAAa,IAAI,CAChB,KAAC,IAAI,IACH,KAAK,EAAE;4BACL,KAAK,EAAE,MAAM,CAAC,aAAa;4BAC3B,QAAQ,EAAE,MAAM;4BAChB,MAAM,EAAE,YAAY;yBACrB,gCAGI,CACR,EACA,WAAW,IAAI,CACd,8BACE,KAAC,IAAI,IACH,KAAK,EAAE;oCACL,KAAK,EAAE,MAAM,CAAC,WAAW;oCACzB,QAAQ,EAAE,MAAM;oCAChB,UAAU,EAAE,MAAM;oCAClB,MAAM,EAAE,WAAW;iCACpB,YAEA,WAAW,GACP,EACP,KAAC,IAAI,IACH,KAAK,EAAE;oCACL,KAAK,EAAE,MAAM,CAAC,aAAa;oCAC3B,QAAQ,EAAE,MAAM;oCAChB,MAAM,EAAE,GAAG;iCACZ,oCAGI,IACN,CACJ,IACO,CACX,EAED,KAAC,SAAS,2GAGE,EAEZ,KAAC,aAAa,IAAC,IAAI,EAAE,MAAM,mCAAoC,EAE/D,KAAC,aAAa,KAAG,EAEjB,KAAC,WAAW,IAAC,UAAU,EAAE,UAAU,EAAE,SAAS,QAAC,cAAc,EAAE,cAAc,GAAI,IACrE,CACf,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface AppReviewRequestEmailProps {
|
|
2
|
+
userName: string;
|
|
3
|
+
workoutsCompleted: number;
|
|
4
|
+
appStoreUrl?: string;
|
|
5
|
+
playStoreUrl?: string;
|
|
6
|
+
websiteUrl?: string;
|
|
7
|
+
unsubscribeUrl?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const AppReviewRequestEmail: ({ userName, workoutsCompleted, appStoreUrl, playStoreUrl, websiteUrl, unsubscribeUrl, }: AppReviewRequestEmailProps) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export default AppReviewRequestEmail;
|
|
11
|
+
//# sourceMappingURL=app-review-request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-review-request.d.ts","sourceRoot":"","sources":["../../src/emails/app-review-request.tsx"],"names":[],"mappings":"AAgBA,UAAU,0BAA0B;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,qBAAqB,GAAI,yFAOnC,0BAA0B,4CAiE5B,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Section, Text } from "@react-email/components";
|
|
3
|
+
import { EmailLayout, EmailHeader, EmailFooter, Heading, Paragraph, PrimaryButton, SecondaryButton, DiscordButton, colors, spacing, borderRadius, } from "../components";
|
|
4
|
+
export const AppReviewRequestEmail = ({ userName = "Alex", workoutsCompleted = 50, appStoreUrl = "https://apps.apple.com/app/tracked-training/id6450913418", playStoreUrl = "https://play.google.com/store/apps/details?id=com.tracked.mobile", websiteUrl = "https://tracked.gg", unsubscribeUrl = "https://tracked.gg/unsubscribe", }) => {
|
|
5
|
+
return (_jsxs(EmailLayout, { preview: `You've completed ${workoutsCompleted} workouts! Share your experience`, children: [_jsx(EmailHeader, {}), _jsx(Heading, { children: "You're Crushing It!" }), _jsxs(Paragraph, { children: ["Hi ", userName, ", you've completed ", _jsxs("strong", { children: [workoutsCompleted, " workouts"] }), " on Tracked. That's an amazing achievement!"] }), _jsxs(Section, { style: {
|
|
6
|
+
backgroundColor: colors.surface,
|
|
7
|
+
padding: spacing.lg,
|
|
8
|
+
borderRadius: borderRadius.md,
|
|
9
|
+
margin: `${spacing.lg} 0`,
|
|
10
|
+
border: `1px solid ${colors.border}`,
|
|
11
|
+
textAlign: "center",
|
|
12
|
+
}, children: [_jsx(Text, { style: {
|
|
13
|
+
color: colors.textPrimary,
|
|
14
|
+
fontSize: "48px",
|
|
15
|
+
fontWeight: "bold",
|
|
16
|
+
margin: "0",
|
|
17
|
+
}, children: workoutsCompleted }), _jsx(Text, { style: {
|
|
18
|
+
color: colors.textSecondary,
|
|
19
|
+
fontSize: "14px",
|
|
20
|
+
margin: "8px 0 0 0",
|
|
21
|
+
}, children: "workouts and counting" })] }), _jsx(Paragraph, { children: "We'd love to hear what you think! A quick review helps other athletes discover Tracked and helps us continue improving the app." }), _jsx(Paragraph, { style: { fontWeight: "600" }, children: "Would you take 30 seconds to leave a review?" }), _jsx(PrimaryButton, { href: appStoreUrl, children: "Review on App Store" }), _jsx(SecondaryButton, { href: playStoreUrl, children: "Review on Google Play" }), _jsx(Paragraph, { muted: true, style: { textAlign: "center" }, children: "Thank you for being part of the Tracked community. Your support means everything to us!" }), _jsx(DiscordButton, {}), _jsx(EmailFooter, { websiteUrl: websiteUrl, marketing: true, unsubscribeUrl: unsubscribeUrl })] }));
|
|
22
|
+
};
|
|
23
|
+
export default AppReviewRequestEmail;
|
|
24
|
+
//# sourceMappingURL=app-review-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-review-request.js","sourceRoot":"","sources":["../../src/emails/app-review-request.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,OAAO,EACP,SAAS,EACT,aAAa,EACb,eAAe,EACf,aAAa,EACb,MAAM,EACN,OAAO,EACP,YAAY,GACb,MAAM,eAAe,CAAC;AAWvB,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EACpC,QAAQ,GAAG,MAAM,EACjB,iBAAiB,GAAG,EAAE,EACtB,WAAW,GAAG,0DAA0D,EACxE,YAAY,GAAG,kEAAkE,EACjF,UAAU,GAAG,oBAAoB,EACjC,cAAc,GAAG,gCAAgC,GACtB,EAAE,EAAE;IAC/B,OAAO,CACL,MAAC,WAAW,IAAC,OAAO,EAAE,oBAAoB,iBAAiB,kCAAkC,aAC3F,KAAC,WAAW,KAAG,EAEf,KAAC,OAAO,sCAA8B,EACtC,MAAC,SAAS,sBACJ,QAAQ,yBAAoB,6BAAS,iBAAiB,iBAAmB,mDAEnE,EAEZ,MAAC,OAAO,IACN,KAAK,EAAE;oBACL,eAAe,EAAE,MAAM,CAAC,OAAO;oBAC/B,OAAO,EAAE,OAAO,CAAC,EAAE;oBACnB,YAAY,EAAE,YAAY,CAAC,EAAE;oBAC7B,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI;oBACzB,MAAM,EAAE,aAAa,MAAM,CAAC,MAAM,EAAE;oBACpC,SAAS,EAAE,QAAiB;iBAC7B,aAED,KAAC,IAAI,IACH,KAAK,EAAE;4BACL,KAAK,EAAE,MAAM,CAAC,WAAW;4BACzB,QAAQ,EAAE,MAAM;4BAChB,UAAU,EAAE,MAAM;4BAClB,MAAM,EAAE,GAAG;yBACZ,YAEA,iBAAiB,GACb,EACP,KAAC,IAAI,IACH,KAAK,EAAE;4BACL,KAAK,EAAE,MAAM,CAAC,aAAa;4BAC3B,QAAQ,EAAE,MAAM;4BAChB,MAAM,EAAE,WAAW;yBACpB,sCAGI,IACC,EAEV,KAAC,SAAS,kJAGE,EAEZ,KAAC,SAAS,IAAC,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,6DAE3B,EAEZ,KAAC,aAAa,IAAC,IAAI,EAAE,WAAW,oCAAqC,EAErE,KAAC,eAAe,IAAC,IAAI,EAAE,YAAY,sCAAyC,EAE5E,KAAC,SAAS,IAAC,KAAK,QAAC,KAAK,EAAE,EAAE,SAAS,EAAE,QAAiB,EAAE,wGAG5C,EAEZ,KAAC,aAAa,KAAG,EAEjB,KAAC,WAAW,IAAC,UAAU,EAAE,UAAU,EAAE,SAAS,QAAC,cAAc,EAAE,cAAc,GAAI,IACrE,CACf,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
|
|
@@ -7,7 +7,7 @@ interface BodyweightGoalReachedEmailProps {
|
|
|
7
7
|
weightUnit: "kg" | "lbs";
|
|
8
8
|
timeToGoal?: string;
|
|
9
9
|
progressUrl: string;
|
|
10
|
-
websiteUrl
|
|
10
|
+
websiteUrl?: string;
|
|
11
11
|
}
|
|
12
12
|
export declare const BodyweightGoalReachedEmail: ({ userName, goalType, startWeight, currentWeight, goalWeight, weightUnit, timeToGoal, progressUrl, websiteUrl, }: BodyweightGoalReachedEmailProps) => import("react/jsx-runtime").JSX.Element;
|
|
13
13
|
export default BodyweightGoalReachedEmail;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bodyweight-goal-reached.d.ts","sourceRoot":"","sources":["../../src/emails/bodyweight-goal-reached.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bodyweight-goal-reached.d.ts","sourceRoot":"","sources":["../../src/emails/bodyweight-goal-reached.tsx"],"names":[],"mappings":"AAeA,UAAU,+BAA+B;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,IAAI,GAAG,KAAK,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,0BAA0B,GAAI,kHAUxC,+BAA+B,4CAgNjC,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
export const BodyweightGoalReachedEmail = ({ userName, goalType, startWeight, currentWeight, goalWeight, weightUnit, timeToGoal, progressUrl, websiteUrl = "https://tracked.gg", }) => {
|
|
2
|
+
import { Section, Text, Row, Column } from "@react-email/components";
|
|
3
|
+
import { EmailLayout, EmailHeader, EmailFooter, Heading, Paragraph, FeatureBox, FeatureList, PrimaryButton, DiscordButton, colors, } from "../components";
|
|
4
|
+
export const BodyweightGoalReachedEmail = ({ userName = "Alex", goalType = "loss", startWeight = 185, currentWeight = 170, goalWeight = 170, weightUnit = "lbs", timeToGoal = "12 weeks", progressUrl = "tracked://bodyweight", websiteUrl = "https://tracked.gg", }) => {
|
|
5
5
|
const weightChange = Math.abs(currentWeight - startWeight);
|
|
6
6
|
const changeDirection = currentWeight > startWeight ? "gained" : "lost";
|
|
7
7
|
const getGoalMessage = () => {
|
|
@@ -16,162 +16,89 @@ export const BodyweightGoalReachedEmail = ({ userName, goalType, startWeight, cu
|
|
|
16
16
|
return "You've reached your goal!";
|
|
17
17
|
}
|
|
18
18
|
};
|
|
19
|
-
return (_jsxs(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
};
|
|
103
|
-
const statsHeading = {
|
|
104
|
-
color: "#4ade80",
|
|
105
|
-
fontSize: "16px",
|
|
106
|
-
fontWeight: "bold",
|
|
107
|
-
marginBottom: "16px",
|
|
108
|
-
textAlign: "center",
|
|
109
|
-
};
|
|
110
|
-
const statsLabel = {
|
|
111
|
-
color: "#94a3b8",
|
|
112
|
-
fontSize: "12px",
|
|
113
|
-
textAlign: "center",
|
|
114
|
-
marginBottom: "4px",
|
|
115
|
-
textTransform: "uppercase",
|
|
116
|
-
};
|
|
117
|
-
const statsValue = {
|
|
118
|
-
color: "#ffffff",
|
|
119
|
-
fontSize: "20px",
|
|
120
|
-
fontWeight: "bold",
|
|
121
|
-
textAlign: "center",
|
|
122
|
-
};
|
|
123
|
-
const changeBox = {
|
|
124
|
-
backgroundColor: "#0f172a",
|
|
125
|
-
padding: "12px 16px",
|
|
126
|
-
borderRadius: "6px",
|
|
127
|
-
marginTop: "16px",
|
|
128
|
-
};
|
|
129
|
-
const changeText = {
|
|
130
|
-
color: "#4ade80",
|
|
131
|
-
fontSize: "16px",
|
|
132
|
-
fontWeight: "bold",
|
|
133
|
-
textAlign: "center",
|
|
134
|
-
margin: "0",
|
|
135
|
-
};
|
|
136
|
-
const nextStepsBox = {
|
|
137
|
-
backgroundColor: "#1e293b",
|
|
138
|
-
padding: "16px 24px",
|
|
139
|
-
borderRadius: "8px",
|
|
140
|
-
margin: "24px 0",
|
|
141
|
-
};
|
|
142
|
-
const nextStepsHeading = {
|
|
143
|
-
color: "#ffffff",
|
|
144
|
-
fontSize: "16px",
|
|
145
|
-
fontWeight: "bold",
|
|
146
|
-
marginBottom: "12px",
|
|
147
|
-
};
|
|
148
|
-
const nextStepsList = {
|
|
149
|
-
margin: "0",
|
|
150
|
-
paddingLeft: "20px",
|
|
151
|
-
};
|
|
152
|
-
const nextStepItem = {
|
|
153
|
-
color: "#e2e8f0",
|
|
154
|
-
fontSize: "14px",
|
|
155
|
-
lineHeight: "24px",
|
|
156
|
-
marginBottom: "8px",
|
|
157
|
-
};
|
|
158
|
-
const motivationBox = {
|
|
159
|
-
backgroundColor: "transparent",
|
|
160
|
-
padding: "16px 0",
|
|
161
|
-
margin: "24px 0",
|
|
162
|
-
borderLeft: "4px solid #4ade80",
|
|
163
|
-
paddingLeft: "20px",
|
|
164
|
-
};
|
|
165
|
-
const motivationText = {
|
|
166
|
-
color: "#94a3b8",
|
|
167
|
-
fontSize: "15px",
|
|
168
|
-
lineHeight: "22px",
|
|
169
|
-
fontStyle: "italic",
|
|
170
|
-
};
|
|
171
|
-
const footer = {
|
|
172
|
-
color: "#94a3b8", // slate-400 for subtle footer text
|
|
173
|
-
fontSize: "12px",
|
|
174
|
-
lineHeight: "16px",
|
|
19
|
+
return (_jsxs(EmailLayout, { preview: "Congratulations! You've reached your bodyweight goal on Tracked", children: [_jsx(EmailHeader, {}), _jsx(Section, { style: { textAlign: "center", margin: "24px 0" }, children: _jsx(Text, { style: { fontSize: "64px", margin: "0" }, children: "\uD83C\uDF89" }) }), _jsx(Heading, { style: { textAlign: "center", fontSize: "32px" }, children: "Goal Achieved!" }), _jsx(Text, { style: {
|
|
20
|
+
color: colors.accent,
|
|
21
|
+
fontSize: "18px",
|
|
22
|
+
lineHeight: "26px",
|
|
23
|
+
textAlign: "center",
|
|
24
|
+
marginBottom: "24px",
|
|
25
|
+
}, children: getGoalMessage() }), _jsxs(Section, { style: {
|
|
26
|
+
backgroundColor: colors.surface,
|
|
27
|
+
padding: "20px 24px",
|
|
28
|
+
borderRadius: "8px",
|
|
29
|
+
margin: "24px 0",
|
|
30
|
+
borderLeft: `4px solid ${colors.accent}`,
|
|
31
|
+
}, children: [_jsx(Text, { style: {
|
|
32
|
+
color: colors.accent,
|
|
33
|
+
fontSize: "16px",
|
|
34
|
+
fontWeight: "bold",
|
|
35
|
+
marginBottom: "16px",
|
|
36
|
+
textAlign: "center",
|
|
37
|
+
}, children: "Your Achievement:" }), _jsxs(Row, { children: [_jsxs(Column, { children: [_jsx(Text, { style: {
|
|
38
|
+
color: colors.textMuted,
|
|
39
|
+
fontSize: "12px",
|
|
40
|
+
textAlign: "center",
|
|
41
|
+
marginBottom: "4px",
|
|
42
|
+
textTransform: "uppercase",
|
|
43
|
+
}, children: "Starting Weight" }), _jsxs(Text, { style: {
|
|
44
|
+
color: colors.textPrimary,
|
|
45
|
+
fontSize: "20px",
|
|
46
|
+
fontWeight: "bold",
|
|
47
|
+
textAlign: "center",
|
|
48
|
+
}, children: [startWeight, " ", weightUnit] })] }), _jsxs(Column, { children: [_jsx(Text, { style: {
|
|
49
|
+
color: colors.textMuted,
|
|
50
|
+
fontSize: "12px",
|
|
51
|
+
textAlign: "center",
|
|
52
|
+
marginBottom: "4px",
|
|
53
|
+
textTransform: "uppercase",
|
|
54
|
+
}, children: "Current Weight" }), _jsxs(Text, { style: {
|
|
55
|
+
color: colors.textPrimary,
|
|
56
|
+
fontSize: "20px",
|
|
57
|
+
fontWeight: "bold",
|
|
58
|
+
textAlign: "center",
|
|
59
|
+
}, children: [currentWeight, " ", weightUnit] })] }), _jsxs(Column, { children: [_jsx(Text, { style: {
|
|
60
|
+
color: colors.textMuted,
|
|
61
|
+
fontSize: "12px",
|
|
62
|
+
textAlign: "center",
|
|
63
|
+
marginBottom: "4px",
|
|
64
|
+
textTransform: "uppercase",
|
|
65
|
+
}, children: "Goal Weight" }), _jsxs(Text, { style: {
|
|
66
|
+
color: colors.textPrimary,
|
|
67
|
+
fontSize: "20px",
|
|
68
|
+
fontWeight: "bold",
|
|
69
|
+
textAlign: "center",
|
|
70
|
+
}, children: [goalWeight, " ", weightUnit] })] })] }), _jsx(Section, { style: {
|
|
71
|
+
backgroundColor: colors.surfaceAlt,
|
|
72
|
+
padding: "12px 16px",
|
|
73
|
+
borderRadius: "6px",
|
|
74
|
+
marginTop: "16px",
|
|
75
|
+
}, children: _jsxs(Text, { style: {
|
|
76
|
+
color: colors.accent,
|
|
77
|
+
fontSize: "16px",
|
|
78
|
+
fontWeight: "bold",
|
|
79
|
+
textAlign: "center",
|
|
80
|
+
margin: "0",
|
|
81
|
+
}, children: ["You've ", changeDirection, " ", weightChange.toFixed(1), " ", weightUnit, timeToGoal && ` in ${timeToGoal}`, "!"] }) })] }), _jsxs(Paragraph, { children: ["Congratulations, ", userName, "! This is a huge accomplishment that took dedication, consistency, and hard work. You set a goal and achieved it - that's something to be proud of!"] }), _jsx(PrimaryButton, { href: progressUrl, children: "View Your Progress" }), _jsx(FeatureBox, { title: "What's Next?", children: _jsx(FeatureList, { items: [
|
|
82
|
+
{ title: "Maintain your progress with consistent training" },
|
|
83
|
+
{ title: "Set a new goal to continue your journey" },
|
|
84
|
+
{ title: "Share your success with the Tracked community" },
|
|
85
|
+
{ title: "Reflect on what worked and keep building on it" },
|
|
86
|
+
] }) }), _jsxs(Section, { style: {
|
|
87
|
+
padding: "16px 0 16px 20px",
|
|
88
|
+
margin: "24px 0",
|
|
89
|
+
borderLeft: `4px solid ${colors.accent}`,
|
|
90
|
+
}, children: [_jsx(Text, { style: {
|
|
91
|
+
color: colors.textMuted,
|
|
92
|
+
fontSize: "15px",
|
|
93
|
+
lineHeight: "22px",
|
|
94
|
+
fontStyle: "italic",
|
|
95
|
+
margin: "0",
|
|
96
|
+
}, children: "\"Success is the sum of small efforts repeated day in and day out.\"" }), _jsx(Text, { style: {
|
|
97
|
+
color: colors.textMuted,
|
|
98
|
+
fontSize: "15px",
|
|
99
|
+
lineHeight: "22px",
|
|
100
|
+
marginTop: "8px",
|
|
101
|
+
}, children: "You proved it - congratulations! \uD83D\uDCAA" })] }), _jsx(DiscordButton, {}), _jsx(EmailFooter, { websiteUrl: websiteUrl })] }));
|
|
175
102
|
};
|
|
176
103
|
export default BodyweightGoalReachedEmail;
|
|
177
104
|
//# sourceMappingURL=bodyweight-goal-reached.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bodyweight-goal-reached.js","sourceRoot":"","sources":["../../src/emails/bodyweight-goal-reached.tsx"],"names":[],"mappings":";AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"bodyweight-goal-reached.js","sourceRoot":"","sources":["../../src/emails/bodyweight-goal-reached.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
interface ClientInactiveAlertEmailProps {
|
|
2
|
+
coachName: string;
|
|
3
|
+
clientName: string;
|
|
4
|
+
clientEmail: string;
|
|
5
|
+
clientAvatarUrl?: string;
|
|
6
|
+
daysInactive: number;
|
|
7
|
+
lastWorkoutDate?: string;
|
|
8
|
+
clientProfileUrl: string;
|
|
9
|
+
messageUrl: string;
|
|
10
|
+
websiteUrl?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare const ClientInactiveAlertEmail: ({ coachName, clientName, clientEmail, clientAvatarUrl, daysInactive, lastWorkoutDate, clientProfileUrl, messageUrl, websiteUrl, }: ClientInactiveAlertEmailProps) => import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export default ClientInactiveAlertEmail;
|
|
14
|
+
//# sourceMappingURL=client-inactive-alert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-inactive-alert.d.ts","sourceRoot":"","sources":["../../src/emails/client-inactive-alert.tsx"],"names":[],"mappings":"AAeA,UAAU,6BAA6B;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,wBAAwB,GAAI,mIAUtC,6BAA6B,4CA0F/B,CAAC;AAEF,eAAe,wBAAwB,CAAC"}
|