@tracked/emails 0.1.5 → 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 +35 -0
- package/dist/emails/client-onboarded.d.ts.map +1 -0
- package/dist/emails/client-onboarded.js +66 -0
- package/dist/emails/client-onboarded.js.map +1 -0
- 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/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 +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 +9 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -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 +198 -520
- 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
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
interface FeatureBoxProps {
|
|
3
|
+
title?: string;
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
}
|
|
6
|
+
export declare const FeatureBox: ({ title, children }: FeatureBoxProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
interface TipBoxProps {
|
|
8
|
+
title?: string;
|
|
9
|
+
children: React.ReactNode;
|
|
10
|
+
}
|
|
11
|
+
export declare const TipBox: ({ title, children }: TipBoxProps) => import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
interface MetricCardProps {
|
|
13
|
+
label: string;
|
|
14
|
+
value: string | number;
|
|
15
|
+
change?: React.ReactNode;
|
|
16
|
+
size?: "normal" | "small";
|
|
17
|
+
}
|
|
18
|
+
export declare const MetricCard: ({ label, value, change, size, }: MetricCardProps) => import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
interface ChangeIndicatorProps {
|
|
20
|
+
value: number | null;
|
|
21
|
+
previousValue: number | null;
|
|
22
|
+
decimals?: number;
|
|
23
|
+
}
|
|
24
|
+
export declare const ChangeIndicator: ({ value, previousValue, decimals, }: ChangeIndicatorProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
25
|
+
interface DataRowProps {
|
|
26
|
+
label: string;
|
|
27
|
+
value: string | number;
|
|
28
|
+
isLast?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export declare const DataRow: ({ label, value, isLast }: DataRowProps) => import("react/jsx-runtime").JSX.Element;
|
|
31
|
+
interface FeatureListItem {
|
|
32
|
+
title: string;
|
|
33
|
+
description?: string;
|
|
34
|
+
}
|
|
35
|
+
interface FeatureListProps {
|
|
36
|
+
items: FeatureListItem[];
|
|
37
|
+
}
|
|
38
|
+
export declare const FeatureList: ({ items }: FeatureListProps) => import("react/jsx-runtime").JSX.Element;
|
|
39
|
+
interface ListBoxProps {
|
|
40
|
+
children: React.ReactNode;
|
|
41
|
+
}
|
|
42
|
+
export declare const ListBox: ({ children }: ListBoxProps) => import("react/jsx-runtime").JSX.Element;
|
|
43
|
+
interface SectionHeadingProps {
|
|
44
|
+
children: React.ReactNode;
|
|
45
|
+
}
|
|
46
|
+
export declare const SectionHeading: ({ children }: SectionHeadingProps) => import("react/jsx-runtime").JSX.Element;
|
|
47
|
+
interface HighlightBannerProps {
|
|
48
|
+
children: React.ReactNode;
|
|
49
|
+
}
|
|
50
|
+
export declare const HighlightBanner: ({ children }: HighlightBannerProps) => import("react/jsx-runtime").JSX.Element;
|
|
51
|
+
interface AvatarProps {
|
|
52
|
+
src: string;
|
|
53
|
+
alt: string;
|
|
54
|
+
size?: number;
|
|
55
|
+
}
|
|
56
|
+
export declare const Avatar: ({ src, alt, size }: AvatarProps) => import("react/jsx-runtime").JSX.Element;
|
|
57
|
+
export {};
|
|
58
|
+
//# sourceMappingURL=content.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/components/content.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,eAAO,MAAM,UAAU,GAAI,qBAAqB,eAAe,4CAO9D,CAAC;AAqBF,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,eAAO,MAAM,MAAM,GAAI,qBAA6B,WAAW,4CAO9D,CAAC;AA4BF,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CAC3B;AAED,eAAO,MAAM,UAAU,GAAI,iCAKxB,eAAe,4CAoBjB,CAAC;AAiCF,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,eAAe,GAAI,qCAI7B,oBAAoB,mDAatB,CAAC;AAuBF,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,OAAO,GAAI,0BAAkC,YAAY,4CAgBrE,CAAC;AAkBF,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,gBAAgB;IACxB,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B;AAED,eAAO,MAAM,WAAW,GAAI,WAAW,gBAAgB,4CAgBtD,CAAC;AAiBF,UAAU,YAAY;IACpB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,eAAO,MAAM,OAAO,GAAI,cAAc,YAAY,4CAEjD,CAAC;AAYF,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,eAAO,MAAM,cAAc,GAAI,cAAc,mBAAmB,4CAE/D,CAAC;AAcF,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,eAAO,MAAM,eAAe,GAAI,cAAc,oBAAoB,4CAEjE,CAAC;AAaF,UAAU,WAAW;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,MAAM,GAAI,oBAAyB,WAAW,4CAc1D,CAAC"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Section, Text, Row, Column } from "@react-email/components";
|
|
3
|
+
import { colors, borderRadius, spacing } from "./tokens";
|
|
4
|
+
export const FeatureBox = ({ title, children }) => {
|
|
5
|
+
return (_jsxs(Section, { style: featureBoxStyle, children: [title && _jsx(Text, { style: featureBoxTitleStyle, children: title }), children] }));
|
|
6
|
+
};
|
|
7
|
+
const featureBoxStyle = {
|
|
8
|
+
backgroundColor: colors.surface,
|
|
9
|
+
padding: `${spacing.md} ${spacing.lg}`,
|
|
10
|
+
borderRadius: borderRadius.md,
|
|
11
|
+
margin: `${spacing.lg} 0`,
|
|
12
|
+
border: `1px solid ${colors.border}`,
|
|
13
|
+
};
|
|
14
|
+
const featureBoxTitleStyle = {
|
|
15
|
+
color: colors.textPrimary,
|
|
16
|
+
fontSize: "16px",
|
|
17
|
+
fontWeight: "bold",
|
|
18
|
+
marginBottom: spacing.sm,
|
|
19
|
+
marginTop: "0",
|
|
20
|
+
};
|
|
21
|
+
export const TipBox = ({ title = "Tip", children }) => {
|
|
22
|
+
return (_jsxs(Section, { style: tipBoxStyle, children: [_jsx(Text, { style: tipBoxTitleStyle, children: title }), _jsx(Text, { style: tipBoxTextStyle, children: children })] }));
|
|
23
|
+
};
|
|
24
|
+
const tipBoxStyle = {
|
|
25
|
+
backgroundColor: colors.surface,
|
|
26
|
+
padding: `${spacing.md} ${spacing.lg}`,
|
|
27
|
+
borderRadius: borderRadius.md,
|
|
28
|
+
margin: `${spacing.lg} 0`,
|
|
29
|
+
borderLeft: `4px solid ${colors.accent}`,
|
|
30
|
+
};
|
|
31
|
+
const tipBoxTitleStyle = {
|
|
32
|
+
color: colors.accent,
|
|
33
|
+
fontSize: "14px",
|
|
34
|
+
fontWeight: "bold",
|
|
35
|
+
marginBottom: spacing.xs,
|
|
36
|
+
marginTop: "0",
|
|
37
|
+
};
|
|
38
|
+
const tipBoxTextStyle = {
|
|
39
|
+
color: colors.textSecondary,
|
|
40
|
+
fontSize: "14px",
|
|
41
|
+
lineHeight: "20px",
|
|
42
|
+
margin: "0",
|
|
43
|
+
};
|
|
44
|
+
export const MetricCard = ({ label, value, change, size = "normal", }) => {
|
|
45
|
+
return (_jsxs(Section, { style: metricCardStyle, children: [_jsx(Text, { style: metricLabelStyle, children: label }), _jsx("table", { children: _jsxs("tr", { children: [_jsx("td", { style: { verticalAlign: "middle" }, children: _jsx(Text, { style: size === "small" ? metricValueSmallStyle : metricValueStyle, children: value }) }), change && (_jsx("td", { style: { verticalAlign: "middle", paddingLeft: spacing.sm }, children: change }))] }) })] }));
|
|
46
|
+
};
|
|
47
|
+
const metricCardStyle = {
|
|
48
|
+
backgroundColor: colors.surface,
|
|
49
|
+
padding: `${spacing.sm} ${spacing.md} ${spacing.md} ${spacing.md}`,
|
|
50
|
+
borderRadius: borderRadius.md,
|
|
51
|
+
border: `1px solid ${colors.border}`,
|
|
52
|
+
};
|
|
53
|
+
const metricLabelStyle = {
|
|
54
|
+
color: colors.textMuted,
|
|
55
|
+
fontSize: "14px",
|
|
56
|
+
marginBottom: "2px",
|
|
57
|
+
marginTop: "0",
|
|
58
|
+
};
|
|
59
|
+
const metricValueStyle = {
|
|
60
|
+
color: colors.textPrimary,
|
|
61
|
+
fontSize: "24px",
|
|
62
|
+
fontWeight: "700",
|
|
63
|
+
margin: "0",
|
|
64
|
+
};
|
|
65
|
+
const metricValueSmallStyle = {
|
|
66
|
+
color: colors.textPrimary,
|
|
67
|
+
fontSize: "20px",
|
|
68
|
+
fontWeight: "700",
|
|
69
|
+
margin: "0",
|
|
70
|
+
};
|
|
71
|
+
export const ChangeIndicator = ({ value, previousValue, decimals = 1, }) => {
|
|
72
|
+
if (value === null || previousValue === null)
|
|
73
|
+
return null;
|
|
74
|
+
const diff = value - previousValue;
|
|
75
|
+
const formatted = Math.abs(diff).toFixed(decimals);
|
|
76
|
+
if (diff > 0) {
|
|
77
|
+
return _jsxs(Text, { style: changePositiveStyle, children: ["\u25B2 ", formatted] });
|
|
78
|
+
}
|
|
79
|
+
if (diff < 0) {
|
|
80
|
+
return _jsxs(Text, { style: changeNegativeStyle, children: ["\u25BC ", formatted] });
|
|
81
|
+
}
|
|
82
|
+
return _jsx(Text, { style: changeNeutralStyle, children: "\u2014" });
|
|
83
|
+
};
|
|
84
|
+
const changePositiveStyle = {
|
|
85
|
+
color: colors.success,
|
|
86
|
+
fontSize: "14px",
|
|
87
|
+
margin: "0",
|
|
88
|
+
};
|
|
89
|
+
const changeNegativeStyle = {
|
|
90
|
+
color: colors.error,
|
|
91
|
+
fontSize: "14px",
|
|
92
|
+
margin: "0",
|
|
93
|
+
};
|
|
94
|
+
const changeNeutralStyle = {
|
|
95
|
+
color: colors.textMuted,
|
|
96
|
+
fontSize: "14px",
|
|
97
|
+
margin: "0",
|
|
98
|
+
};
|
|
99
|
+
export const DataRow = ({ label, value, isLast = false }) => {
|
|
100
|
+
return (_jsxs(Row, { style: {
|
|
101
|
+
padding: spacing.sm,
|
|
102
|
+
borderBottom: isLast ? "none" : `1px solid ${colors.border}`,
|
|
103
|
+
}, children: [_jsx(Column, { children: _jsx(Text, { style: dataRowLabelStyle, children: label }) }), _jsx(Column, { style: { textAlign: "right" }, children: _jsx(Text, { style: dataRowValueStyle, children: value }) })] }));
|
|
104
|
+
};
|
|
105
|
+
const dataRowLabelStyle = {
|
|
106
|
+
color: colors.textSecondary,
|
|
107
|
+
fontSize: "14px",
|
|
108
|
+
margin: "0",
|
|
109
|
+
};
|
|
110
|
+
const dataRowValueStyle = {
|
|
111
|
+
color: colors.accent,
|
|
112
|
+
fontSize: "16px",
|
|
113
|
+
fontWeight: "600",
|
|
114
|
+
margin: "0",
|
|
115
|
+
};
|
|
116
|
+
export const FeatureList = ({ items }) => {
|
|
117
|
+
return (_jsx("ul", { style: featureListStyle, children: items.map((item, index) => (_jsx("li", { style: featureListItemStyle, children: item.description ? (_jsxs(_Fragment, { children: [_jsxs("strong", { children: [item.title, ":"] }), " ", item.description] })) : (item.title) }, index))) }));
|
|
118
|
+
};
|
|
119
|
+
const featureListStyle = {
|
|
120
|
+
margin: "0",
|
|
121
|
+
paddingLeft: "20px",
|
|
122
|
+
};
|
|
123
|
+
const featureListItemStyle = {
|
|
124
|
+
color: colors.textSecondary,
|
|
125
|
+
fontSize: "14px",
|
|
126
|
+
lineHeight: "24px",
|
|
127
|
+
marginBottom: spacing.sm,
|
|
128
|
+
};
|
|
129
|
+
export const ListBox = ({ children }) => {
|
|
130
|
+
return _jsx(Section, { style: listBoxStyle, children: children });
|
|
131
|
+
};
|
|
132
|
+
const listBoxStyle = {
|
|
133
|
+
backgroundColor: colors.surface,
|
|
134
|
+
borderRadius: borderRadius.md,
|
|
135
|
+
overflow: "hidden",
|
|
136
|
+
border: `1px solid ${colors.border}`,
|
|
137
|
+
};
|
|
138
|
+
export const SectionHeading = ({ children }) => {
|
|
139
|
+
return _jsx(Text, { style: sectionHeadingStyle, children: children });
|
|
140
|
+
};
|
|
141
|
+
const sectionHeadingStyle = {
|
|
142
|
+
color: colors.textPrimary,
|
|
143
|
+
fontSize: "18px",
|
|
144
|
+
margin: `0 0 ${spacing.sm} 0`,
|
|
145
|
+
fontWeight: "600",
|
|
146
|
+
textTransform: "uppercase",
|
|
147
|
+
letterSpacing: "0.5px",
|
|
148
|
+
};
|
|
149
|
+
export const HighlightBanner = ({ children }) => {
|
|
150
|
+
return _jsx(Section, { style: highlightBannerStyle, children: children });
|
|
151
|
+
};
|
|
152
|
+
const highlightBannerStyle = {
|
|
153
|
+
backgroundColor: colors.accent,
|
|
154
|
+
padding: `${spacing.sm} ${spacing.lg}`,
|
|
155
|
+
textAlign: "center",
|
|
156
|
+
borderRadius: borderRadius.md,
|
|
157
|
+
margin: `${spacing.lg} 0`,
|
|
158
|
+
};
|
|
159
|
+
export const Avatar = ({ src, alt, size = 64 }) => {
|
|
160
|
+
return (_jsx("img", { src: src, alt: alt, width: size, height: size, style: {
|
|
161
|
+
borderRadius: "50%",
|
|
162
|
+
display: "block",
|
|
163
|
+
margin: "0 auto",
|
|
164
|
+
} }));
|
|
165
|
+
};
|
|
166
|
+
//# sourceMappingURL=content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/components/content.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from "./tokens";
|
|
2
|
+
export { EmailLayout, EmailHeader, EmailFooter, ContentSection, Divider, } from "./layout";
|
|
3
|
+
export { Heading, Paragraph, Label, HighlightText, SmallText, } from "./typography";
|
|
4
|
+
export { PrimaryButton, SecondaryButton, DiscordButton, SocialButtons, AppStoreButtons, TextLink, } from "./interactive";
|
|
5
|
+
export { FeatureBox, TipBox, MetricCard, ChangeIndicator, DataRow, FeatureList, ListBox, SectionHeading, HighlightBanner, Avatar, } from "./content";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AACA,cAAc,UAAU,CAAC;AAGzB,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,cAAc,EACd,OAAO,GACR,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,OAAO,EACP,SAAS,EACT,KAAK,EACL,aAAa,EACb,SAAS,GACV,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,aAAa,EACb,eAAe,EACf,aAAa,EACb,aAAa,EACb,eAAe,EACf,QAAQ,GACT,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,UAAU,EACV,MAAM,EACN,UAAU,EACV,eAAe,EACf,OAAO,EACP,WAAW,EACX,OAAO,EACP,cAAc,EACd,eAAe,EACf,MAAM,GACP,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Design Tokens
|
|
2
|
+
export * from "./tokens";
|
|
3
|
+
// Layout Components
|
|
4
|
+
export { EmailLayout, EmailHeader, EmailFooter, ContentSection, Divider, } from "./layout";
|
|
5
|
+
// Typography Components
|
|
6
|
+
export { Heading, Paragraph, Label, HighlightText, SmallText, } from "./typography";
|
|
7
|
+
// Interactive Components
|
|
8
|
+
export { PrimaryButton, SecondaryButton, DiscordButton, SocialButtons, AppStoreButtons, TextLink, } from "./interactive";
|
|
9
|
+
// Content Components
|
|
10
|
+
export { FeatureBox, TipBox, MetricCard, ChangeIndicator, DataRow, FeatureList, ListBox, SectionHeading, HighlightBanner, Avatar, } from "./content";
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,cAAc,UAAU,CAAC;AAEzB,oBAAoB;AACpB,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,cAAc,EACd,OAAO,GACR,MAAM,UAAU,CAAC;AAElB,wBAAwB;AACxB,OAAO,EACL,OAAO,EACP,SAAS,EACT,KAAK,EACL,aAAa,EACb,SAAS,GACV,MAAM,cAAc,CAAC;AAEtB,yBAAyB;AACzB,OAAO,EACL,aAAa,EACb,eAAe,EACf,aAAa,EACb,aAAa,EACb,eAAe,EACf,QAAQ,GACT,MAAM,eAAe,CAAC;AAEvB,qBAAqB;AACrB,OAAO,EACL,UAAU,EACV,MAAM,EACN,UAAU,EACV,eAAe,EACf,OAAO,EACP,WAAW,EACX,OAAO,EACP,cAAc,EACd,eAAe,EACf,MAAM,GACP,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
interface PrimaryButtonProps {
|
|
3
|
+
href: string;
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
fullWidth?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare const PrimaryButton: ({ href, children, fullWidth, }: PrimaryButtonProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
interface SecondaryButtonProps {
|
|
9
|
+
href: string;
|
|
10
|
+
children: React.ReactNode;
|
|
11
|
+
fullWidth?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare const SecondaryButton: ({ href, children, fullWidth, }: SecondaryButtonProps) => import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export declare const SocialButtons: () => import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export declare const DiscordButton: () => import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export declare const AppStoreButtons: () => import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
interface TextLinkProps {
|
|
18
|
+
href: string;
|
|
19
|
+
children: React.ReactNode;
|
|
20
|
+
}
|
|
21
|
+
export declare const TextLink: ({ href, children }: TextLinkProps) => import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=interactive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/components/interactive.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,aAAa,GAAI,gCAI3B,kBAAkB,4CAqBpB,CAAC;AAKF,UAAU,oBAAoB;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,eAAe,GAAI,gCAI7B,oBAAoB,4CAsBtB,CAAC;AAKF,eAAO,MAAM,aAAa,+CAkHzB,CAAC;AAGF,eAAO,MAAM,aAAa,+CAAgB,CAAC;AAK3C,eAAO,MAAM,eAAe,+CAmC3B,CAAC;AAKF,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,eAAO,MAAM,QAAQ,GAAI,oBAAoB,aAAa,4CAYzD,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Img, Section } from "@react-email/components";
|
|
3
|
+
import { colors, borderRadius, spacing } from "./tokens";
|
|
4
|
+
export const PrimaryButton = ({ href, children, fullWidth = false, }) => {
|
|
5
|
+
return (_jsx(Section, { style: { margin: `${spacing.lg} 0`, textAlign: "left" }, children: _jsx("a", { href: href, style: {
|
|
6
|
+
backgroundColor: colors.primary,
|
|
7
|
+
borderRadius: borderRadius.md,
|
|
8
|
+
color: "#ffffff",
|
|
9
|
+
fontSize: "16px",
|
|
10
|
+
fontWeight: "bold",
|
|
11
|
+
textDecoration: "none",
|
|
12
|
+
padding: "12px 32px",
|
|
13
|
+
display: fullWidth ? "block" : "inline-block",
|
|
14
|
+
textAlign: "center",
|
|
15
|
+
}, children: children }) }));
|
|
16
|
+
};
|
|
17
|
+
export const SecondaryButton = ({ href, children, fullWidth = false, }) => {
|
|
18
|
+
return (_jsx(Section, { style: { margin: `${spacing.md} 0`, textAlign: "left" }, children: _jsx("a", { href: href, style: {
|
|
19
|
+
backgroundColor: colors.surface,
|
|
20
|
+
border: `1px solid ${colors.borderStrong}`,
|
|
21
|
+
borderRadius: borderRadius.md,
|
|
22
|
+
color: colors.textPrimary,
|
|
23
|
+
fontSize: "16px",
|
|
24
|
+
fontWeight: "600",
|
|
25
|
+
textDecoration: "none",
|
|
26
|
+
padding: "12px 32px",
|
|
27
|
+
display: fullWidth ? "block" : "inline-block",
|
|
28
|
+
textAlign: "center",
|
|
29
|
+
}, children: children }) }));
|
|
30
|
+
};
|
|
31
|
+
// ============================================
|
|
32
|
+
// SocialButtons - Discord and YouTube icon buttons
|
|
33
|
+
// ============================================
|
|
34
|
+
export const SocialButtons = () => {
|
|
35
|
+
return (_jsx(Section, { style: { margin: `${spacing.sm} 0`, textAlign: "center" }, children: _jsx("table", { cellPadding: "0", cellSpacing: "0", style: { margin: "0 auto" }, children: _jsxs("tr", { children: [_jsx("td", { style: { paddingRight: "12px" }, children: _jsx("a", { href: "https://www.discord.gg/trackedgg", style: {
|
|
36
|
+
display: "inline-block",
|
|
37
|
+
textDecoration: "none",
|
|
38
|
+
}, children: _jsx("svg", { width: "24", height: "24", viewBox: "0 0 127.14 96.36", children: _jsx("path", { fill: colors.textSecondary, d: "M107.7,8.07A105.15,105.15,0,0,0,81.47,0a72.06,72.06,0,0,0-3.36,6.83A97.68,97.68,0,0,0,49,6.83,72.37,72.37,0,0,0,45.64,0,105.89,105.89,0,0,0,19.39,8.09C2.79,32.65-1.71,56.6.54,80.21h0A105.73,105.73,0,0,0,32.71,96.36,77.7,77.7,0,0,0,39.6,85.25a68.42,68.42,0,0,1-10.85-5.18c.91-.66,1.8-1.34,2.66-2a75.57,75.57,0,0,0,64.32,0c.87.71,1.76,1.39,2.66,2a68.68,68.68,0,0,1-10.87,5.19,77,77,0,0,0,6.89,11.1A105.25,105.25,0,0,0,126.6,80.22h0C129.24,52.84,122.09,29.11,107.7,8.07ZM42.45,65.69C36.18,65.69,31,60,31,53s5-12.74,11.43-12.74S54,46,53.89,53,48.84,65.69,42.45,65.69Zm42.24,0C78.41,65.69,73.25,60,73.25,53s5-12.74,11.44-12.74S96.23,46,96.12,53,91.08,65.69,84.69,65.69Z" }) }) }) }), _jsx("td", { style: { paddingRight: "12px" }, children: _jsx("a", { href: "https://www.youtube.com/@Keenanrmalloy", style: {
|
|
39
|
+
display: "inline-block",
|
|
40
|
+
textDecoration: "none",
|
|
41
|
+
}, children: _jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", children: _jsx("path", { fill: colors.textSecondary, d: "M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z" }) }) }) }), _jsx("td", { style: { paddingRight: "12px" }, children: _jsx("a", { href: "https://www.tiktok.com/@keenanrmalloy", style: {
|
|
42
|
+
display: "inline-block",
|
|
43
|
+
textDecoration: "none",
|
|
44
|
+
}, children: _jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", children: _jsx("path", { fill: colors.textSecondary, d: "M19.59 6.69a4.83 4.83 0 0 1-3.77-4.25V2h-3.45v13.67a2.89 2.89 0 0 1-5.2 1.74 2.89 2.89 0 0 1 2.31-4.64 2.93 2.93 0 0 1 .88.13V9.4a6.84 6.84 0 0 0-1-.05A6.33 6.33 0 0 0 5 20.1a6.34 6.34 0 0 0 10.86-4.43v-7a8.16 8.16 0 0 0 4.77 1.52v-3.4a4.85 4.85 0 0 1-1-.1z" }) }) }) }), _jsx("td", { style: { paddingRight: "12px" }, children: _jsx("a", { href: "https://www.instagram.com/keenanrmalloy/", style: {
|
|
45
|
+
display: "inline-block",
|
|
46
|
+
textDecoration: "none",
|
|
47
|
+
}, children: _jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", children: _jsx("path", { fill: colors.textSecondary, d: "M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z" }) }) }) }), _jsx("td", { children: _jsx("a", { href: "https://www.reddit.com/r/trackedapp/", style: {
|
|
48
|
+
display: "inline-block",
|
|
49
|
+
textDecoration: "none",
|
|
50
|
+
}, children: _jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", children: _jsx("path", { fill: colors.textSecondary, d: "M12 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0zm5.01 4.744c.688 0 1.25.561 1.25 1.249a1.25 1.25 0 0 1-2.498.056l-2.597-.547-.8 3.747c1.824.07 3.48.632 4.674 1.488.308-.309.73-.491 1.207-.491.968 0 1.754.786 1.754 1.754 0 .716-.435 1.333-1.01 1.614a3.111 3.111 0 0 1 .042.52c0 2.694-3.13 4.87-7.004 4.87-3.874 0-7.004-2.176-7.004-4.87 0-.183.015-.366.043-.534A1.748 1.748 0 0 1 4.028 12c0-.968.786-1.754 1.754-1.754.463 0 .898.196 1.207.49 1.207-.883 2.878-1.43 4.744-1.487l.885-4.182a.342.342 0 0 1 .14-.197.35.35 0 0 1 .238-.042l2.906.617a1.214 1.214 0 0 1 1.108-.701zM9.25 12C8.561 12 8 12.562 8 13.25c0 .687.561 1.248 1.25 1.248.687 0 1.248-.561 1.248-1.249 0-.688-.561-1.249-1.249-1.249zm5.5 0c-.687 0-1.248.561-1.248 1.25 0 .687.561 1.248 1.249 1.248.688 0 1.249-.561 1.249-1.249 0-.687-.562-1.249-1.25-1.249zm-5.466 3.99a.327.327 0 0 0-.231.094.33.33 0 0 0 0 .463c.842.842 2.484.913 2.961.913.477 0 2.105-.056 2.961-.913a.361.361 0 0 0 .029-.463.33.33 0 0 0-.464 0c-.547.533-1.684.73-2.512.73-.828 0-1.979-.196-2.512-.73a.326.326 0 0 0-.232-.095z" }) }) }) })] }) }) }));
|
|
51
|
+
};
|
|
52
|
+
// Keep DiscordButton for backward compatibility
|
|
53
|
+
export const DiscordButton = SocialButtons;
|
|
54
|
+
// ============================================
|
|
55
|
+
// AppStoreButtons - iOS/Android download buttons
|
|
56
|
+
// ============================================
|
|
57
|
+
export const AppStoreButtons = () => {
|
|
58
|
+
return (_jsx(Section, { style: { marginTop: spacing.lg, textAlign: "center" }, children: _jsx("table", { cellPadding: "0", cellSpacing: "0", style: { margin: "0 auto" }, children: _jsxs("tr", { children: [_jsx("td", { style: { paddingRight: "8px" }, children: _jsx("a", { href: "https://apps.apple.com/app/tracked-training/id6450913418", style: { display: "block", textDecoration: "none" }, children: _jsx(Img, { src: "https://cdn.trckd.ca/assets/Download_on_the_App_Store_Badge_US-UK_RGB_blk_092917.svg", alt: "Download on the App Store", height: "36", style: { display: "block" } }) }) }), _jsx("td", { style: { paddingLeft: "8px" }, children: _jsx("a", { href: "https://play.google.com/store/apps/details?id=com.tracked.mobile", style: { display: "block", textDecoration: "none" }, children: _jsx(Img, { src: "https://cdn.trckd.ca/assets/GetItOnGooglePlay_Badge_Web_color_English.svg", alt: "Get it on Google Play", height: "36", style: { display: "block" } }) }) })] }) }) }));
|
|
59
|
+
};
|
|
60
|
+
export const TextLink = ({ href, children }) => {
|
|
61
|
+
return (_jsx("a", { href: href, style: {
|
|
62
|
+
color: colors.accent,
|
|
63
|
+
textDecoration: "underline",
|
|
64
|
+
}, children: children }));
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=interactive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../src/components/interactive.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
interface EmailLayoutProps {
|
|
3
|
+
preview: string;
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
}
|
|
6
|
+
export declare const EmailLayout: ({ preview, children }: EmailLayoutProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
interface EmailHeaderProps {
|
|
8
|
+
showDivider?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare const EmailHeader: ({ showDivider }: EmailHeaderProps) => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
interface EmailFooterProps {
|
|
12
|
+
websiteUrl?: string;
|
|
13
|
+
marketing?: boolean;
|
|
14
|
+
unsubscribeUrl?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare const EmailFooter: ({ websiteUrl, marketing, unsubscribeUrl, }: EmailFooterProps) => import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
interface ContentSectionProps {
|
|
18
|
+
children: React.ReactNode;
|
|
19
|
+
style?: React.CSSProperties;
|
|
20
|
+
}
|
|
21
|
+
export declare const ContentSection: ({ children, style }: ContentSectionProps) => import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
interface DividerProps {
|
|
23
|
+
accent?: boolean;
|
|
24
|
+
}
|
|
25
|
+
export declare const Divider: ({ accent }: DividerProps) => import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/components/layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAsB/B,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,eAAO,MAAM,WAAW,GAAI,uBAAuB,gBAAgB,4CAelE,CAAC;AAqBF,UAAU,gBAAgB;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAM,WAAW,GAAI,iBAAwB,gBAAgB,4CAgBnE,CAAC;AAqBF,UAAU,gBAAgB;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,WAAW,GAAI,4CAIzB,gBAAgB,4CAsClB,CAAC;AAsCF,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,eAAO,MAAM,cAAc,GAAI,qBAAqB,mBAAmB,4CAEtE,CAAC;AAKF,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,OAAO,GAAI,YAAoB,YAAY,4CAUvD,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Body, Container, Head, Hr, Html, Img, Link, Preview, Section, Text, } from "@react-email/components";
|
|
3
|
+
import { colors, typography, spacing } from "./tokens";
|
|
4
|
+
import { AppStoreButtons } from "./interactive";
|
|
5
|
+
const baseUrl = "https://tracked.gg/android-chrome-192x192.png";
|
|
6
|
+
const defaultWebsiteUrl = "https://tracked.gg";
|
|
7
|
+
export const EmailLayout = ({ preview, children }) => {
|
|
8
|
+
return (_jsxs(Html, { children: [_jsxs(Head, { children: [_jsx("meta", { name: "color-scheme", content: "light only" }), _jsx("meta", { name: "supported-color-schemes", content: "light only" })] }), _jsx(Preview, { children: preview }), _jsx(Body, { style: mainStyle, children: _jsx(Container, { style: containerStyle, children: _jsx(Section, { style: boxStyle, children: children }) }) })] }));
|
|
9
|
+
};
|
|
10
|
+
const mainStyle = {
|
|
11
|
+
backgroundColor: colors.background,
|
|
12
|
+
fontFamily: typography.fontFamily,
|
|
13
|
+
};
|
|
14
|
+
const containerStyle = {
|
|
15
|
+
backgroundColor: colors.background,
|
|
16
|
+
margin: "0 auto",
|
|
17
|
+
padding: "20px 0 48px",
|
|
18
|
+
maxWidth: "600px",
|
|
19
|
+
};
|
|
20
|
+
const boxStyle = {
|
|
21
|
+
padding: "0 24px",
|
|
22
|
+
};
|
|
23
|
+
export const EmailHeader = ({ showDivider = true }) => {
|
|
24
|
+
return (_jsxs(_Fragment, { children: [_jsx("table", { cellPadding: "0", cellSpacing: "0", style: { marginBottom: spacing.sm }, children: _jsxs("tr", { children: [_jsx("td", { style: { verticalAlign: "middle" }, children: _jsx(Img, { src: baseUrl, width: "28", height: "28", alt: "Tracked" }) }), _jsx("td", { style: { verticalAlign: "middle", paddingLeft: "6px" }, children: _jsx(Text, { style: logoStyle, children: "TRACKED" }) })] }) }), showDivider && _jsx(Hr, { style: headerDividerStyle })] }));
|
|
25
|
+
};
|
|
26
|
+
const logoStyle = {
|
|
27
|
+
fontSize: "28px",
|
|
28
|
+
fontWeight: "900",
|
|
29
|
+
fontFamily: typography.brandFont,
|
|
30
|
+
color: colors.textPrimary,
|
|
31
|
+
margin: "0",
|
|
32
|
+
lineHeight: "32px",
|
|
33
|
+
letterSpacing: "-0.5px",
|
|
34
|
+
};
|
|
35
|
+
const headerDividerStyle = {
|
|
36
|
+
borderColor: colors.border,
|
|
37
|
+
margin: `${spacing.lg} 0`,
|
|
38
|
+
borderWidth: "1px",
|
|
39
|
+
};
|
|
40
|
+
export const EmailFooter = ({ websiteUrl = defaultWebsiteUrl, marketing = false, unsubscribeUrl, }) => {
|
|
41
|
+
return (_jsxs(_Fragment, { children: [_jsx(Hr, { style: footerDividerStyle }), _jsx(AppStoreButtons, {}), _jsxs(Text, { style: footerTextStyle, children: ["Copyright \u00A9 ", new Date().getFullYear(), " Tracked Training Platform Inc.", " ", _jsx("br", {}), "9101 Horne Street, Vancouver, BC"] }), _jsxs(Section, { style: { textAlign: "center" }, children: [_jsx(Link, { href: `${websiteUrl}/terms`, style: footerLinkStyle, children: "Terms" }), _jsx(Text, { style: footerDividerTextStyle, children: " | " }), _jsx(Link, { href: `${websiteUrl}/privacy`, style: footerLinkStyle, children: "Privacy" }), _jsx(Text, { style: footerDividerTextStyle, children: " | " }), _jsx(Link, { href: `${websiteUrl}/support`, style: footerLinkStyle, children: "Support" }), marketing && unsubscribeUrl && (_jsxs(_Fragment, { children: [_jsx(Text, { style: footerDividerTextStyle, children: " | " }), _jsx(Link, { href: unsubscribeUrl, style: footerLinkStyle, children: "Unsubscribe" })] }))] }), _jsx(Text, { style: footerDisclaimerStyle, children: marketing
|
|
42
|
+
? "You're receiving this email because you opted in to marketing communications from Tracked."
|
|
43
|
+
: "This is a service notification by the Tracked Training Platform." })] }));
|
|
44
|
+
};
|
|
45
|
+
const footerDividerStyle = {
|
|
46
|
+
borderColor: colors.border,
|
|
47
|
+
margin: `${spacing.lg} 0`,
|
|
48
|
+
borderWidth: "1px",
|
|
49
|
+
};
|
|
50
|
+
const footerTextStyle = {
|
|
51
|
+
color: colors.textMuted,
|
|
52
|
+
fontSize: "12px",
|
|
53
|
+
lineHeight: "16px",
|
|
54
|
+
textAlign: "center",
|
|
55
|
+
};
|
|
56
|
+
const footerLinkStyle = {
|
|
57
|
+
color: colors.textMuted,
|
|
58
|
+
fontSize: "12px",
|
|
59
|
+
textDecoration: "none",
|
|
60
|
+
};
|
|
61
|
+
const footerDividerTextStyle = {
|
|
62
|
+
color: colors.textMuted,
|
|
63
|
+
fontSize: "12px",
|
|
64
|
+
display: "inline",
|
|
65
|
+
};
|
|
66
|
+
const footerDisclaimerStyle = {
|
|
67
|
+
color: colors.textMuted,
|
|
68
|
+
fontSize: "12px",
|
|
69
|
+
lineHeight: "16px",
|
|
70
|
+
textAlign: "center",
|
|
71
|
+
marginTop: spacing.md,
|
|
72
|
+
};
|
|
73
|
+
export const ContentSection = ({ children, style }) => {
|
|
74
|
+
return _jsx(Section, { style: { marginBottom: spacing.lg, ...style }, children: children });
|
|
75
|
+
};
|
|
76
|
+
export const Divider = ({ accent = false }) => {
|
|
77
|
+
return (_jsx(Hr, { style: {
|
|
78
|
+
borderColor: accent ? colors.borderAccent : colors.border,
|
|
79
|
+
margin: `${spacing.lg} 0`,
|
|
80
|
+
borderWidth: "1px",
|
|
81
|
+
} }));
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/components/layout.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Design tokens for email templates
|
|
3
|
+
* Light/professional theme
|
|
4
|
+
*/
|
|
5
|
+
export declare const colors: {
|
|
6
|
+
background: string;
|
|
7
|
+
surface: string;
|
|
8
|
+
surfaceAlt: string;
|
|
9
|
+
textPrimary: string;
|
|
10
|
+
textSecondary: string;
|
|
11
|
+
textMuted: string;
|
|
12
|
+
primary: string;
|
|
13
|
+
accent: string;
|
|
14
|
+
discord: string;
|
|
15
|
+
youtube: string;
|
|
16
|
+
tiktok: string;
|
|
17
|
+
instagram: string;
|
|
18
|
+
border: string;
|
|
19
|
+
borderStrong: string;
|
|
20
|
+
borderAccent: string;
|
|
21
|
+
success: string;
|
|
22
|
+
error: string;
|
|
23
|
+
warning: string;
|
|
24
|
+
};
|
|
25
|
+
export declare const typography: {
|
|
26
|
+
fontFamily: string;
|
|
27
|
+
brandFont: string;
|
|
28
|
+
};
|
|
29
|
+
export declare const spacing: {
|
|
30
|
+
xs: string;
|
|
31
|
+
sm: string;
|
|
32
|
+
md: string;
|
|
33
|
+
lg: string;
|
|
34
|
+
xl: string;
|
|
35
|
+
xxl: string;
|
|
36
|
+
};
|
|
37
|
+
export declare const borderRadius: {
|
|
38
|
+
sm: string;
|
|
39
|
+
md: string;
|
|
40
|
+
lg: string;
|
|
41
|
+
full: string;
|
|
42
|
+
};
|
|
43
|
+
export declare const baseStyles: {
|
|
44
|
+
main: {
|
|
45
|
+
backgroundColor: string;
|
|
46
|
+
fontFamily: string;
|
|
47
|
+
};
|
|
48
|
+
container: {
|
|
49
|
+
backgroundColor: string;
|
|
50
|
+
margin: string;
|
|
51
|
+
padding: string;
|
|
52
|
+
maxWidth: string;
|
|
53
|
+
};
|
|
54
|
+
box: {
|
|
55
|
+
padding: string;
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=tokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/components/tokens.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;CA4BlB,CAAC;AAEF,eAAO,MAAM,UAAU;;;CAKtB,CAAC;AAEF,eAAO,MAAM,OAAO;;;;;;;CAOnB,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;CAKxB,CAAC;AAGF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;CActB,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Design tokens for email templates
|
|
3
|
+
* Light/professional theme
|
|
4
|
+
*/
|
|
5
|
+
export const colors = {
|
|
6
|
+
// Backgrounds
|
|
7
|
+
background: "#ffffff",
|
|
8
|
+
surface: "#f8fafc", // slate-50
|
|
9
|
+
surfaceAlt: "#f1f5f9", // slate-100
|
|
10
|
+
// Text
|
|
11
|
+
textPrimary: "#0f172a", // slate-900
|
|
12
|
+
textSecondary: "#475569", // slate-600
|
|
13
|
+
textMuted: "#94a3b8", // slate-400
|
|
14
|
+
// Brand
|
|
15
|
+
primary: "#0f172a", // dark navy for buttons
|
|
16
|
+
accent: "#10b981", // emerald-500 for highlights
|
|
17
|
+
discord: "#5865F2",
|
|
18
|
+
youtube: "#FF0000",
|
|
19
|
+
tiktok: "#000000",
|
|
20
|
+
instagram: "#E4405F",
|
|
21
|
+
// Borders
|
|
22
|
+
border: "#e2e8f0", // slate-200
|
|
23
|
+
borderStrong: "#cbd5e1", // slate-300
|
|
24
|
+
borderAccent: "#10b981", // emerald-500
|
|
25
|
+
// Status
|
|
26
|
+
success: "#10b981", // emerald-500
|
|
27
|
+
error: "#ef4444", // red-500
|
|
28
|
+
warning: "#f59e0b", // amber-500
|
|
29
|
+
};
|
|
30
|
+
export const typography = {
|
|
31
|
+
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
|
|
32
|
+
brandFont: 'Raleway, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',
|
|
33
|
+
};
|
|
34
|
+
export const spacing = {
|
|
35
|
+
xs: "4px",
|
|
36
|
+
sm: "8px",
|
|
37
|
+
md: "16px",
|
|
38
|
+
lg: "24px",
|
|
39
|
+
xl: "32px",
|
|
40
|
+
xxl: "48px",
|
|
41
|
+
};
|
|
42
|
+
export const borderRadius = {
|
|
43
|
+
sm: "4px",
|
|
44
|
+
md: "8px",
|
|
45
|
+
lg: "12px",
|
|
46
|
+
full: "9999px",
|
|
47
|
+
};
|
|
48
|
+
// Base styles used across components
|
|
49
|
+
export const baseStyles = {
|
|
50
|
+
main: {
|
|
51
|
+
backgroundColor: colors.background,
|
|
52
|
+
fontFamily: typography.fontFamily,
|
|
53
|
+
},
|
|
54
|
+
container: {
|
|
55
|
+
backgroundColor: colors.background,
|
|
56
|
+
margin: "0 auto",
|
|
57
|
+
padding: "20px 0 48px",
|
|
58
|
+
maxWidth: "600px",
|
|
59
|
+
},
|
|
60
|
+
box: {
|
|
61
|
+
padding: "0 24px",
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=tokens.js.map
|