@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.
Files changed (123) hide show
  1. package/dist/components/content.d.ts +58 -0
  2. package/dist/components/content.d.ts.map +1 -0
  3. package/dist/components/content.js +166 -0
  4. package/dist/components/content.js.map +1 -0
  5. package/dist/components/index.d.ts +6 -0
  6. package/dist/components/index.d.ts.map +1 -0
  7. package/dist/components/index.js +11 -0
  8. package/dist/components/index.js.map +1 -0
  9. package/dist/components/interactive.d.ts +23 -0
  10. package/dist/components/interactive.d.ts.map +1 -0
  11. package/dist/components/interactive.js +66 -0
  12. package/dist/components/interactive.js.map +1 -0
  13. package/dist/components/layout.d.ts +27 -0
  14. package/dist/components/layout.d.ts.map +1 -0
  15. package/dist/components/layout.js +83 -0
  16. package/dist/components/layout.js.map +1 -0
  17. package/dist/components/tokens.d.ts +58 -0
  18. package/dist/components/tokens.d.ts.map +1 -0
  19. package/dist/components/tokens.js +64 -0
  20. package/dist/components/tokens.js.map +1 -0
  21. package/dist/components/typography.d.ts +31 -0
  22. package/dist/components/typography.d.ts.map +1 -0
  23. package/dist/components/typography.js +72 -0
  24. package/dist/components/typography.js.map +1 -0
  25. package/dist/emails/anniversary.d.ts +12 -0
  26. package/dist/emails/anniversary.d.ts.map +1 -0
  27. package/dist/emails/anniversary.js +41 -0
  28. package/dist/emails/anniversary.js.map +1 -0
  29. package/dist/emails/app-review-request.d.ts +11 -0
  30. package/dist/emails/app-review-request.d.ts.map +1 -0
  31. package/dist/emails/app-review-request.js +24 -0
  32. package/dist/emails/app-review-request.js.map +1 -0
  33. package/dist/emails/bodyweight-goal-reached.d.ts +1 -1
  34. package/dist/emails/bodyweight-goal-reached.d.ts.map +1 -1
  35. package/dist/emails/bodyweight-goal-reached.js +86 -159
  36. package/dist/emails/bodyweight-goal-reached.js.map +1 -1
  37. package/dist/emails/client-inactive-alert.d.ts +14 -0
  38. package/dist/emails/client-inactive-alert.d.ts.map +1 -0
  39. package/dist/emails/client-inactive-alert.js +34 -0
  40. package/dist/emails/client-inactive-alert.js.map +1 -0
  41. package/dist/emails/client-onboarded.d.ts.map +1 -1
  42. package/dist/emails/client-onboarded.js +37 -123
  43. package/dist/emails/client-onboarded.js.map +1 -1
  44. package/dist/emails/coach-invite.d.ts +1 -1
  45. package/dist/emails/coach-invite.d.ts.map +1 -1
  46. package/dist/emails/coach-invite.js +13 -121
  47. package/dist/emails/coach-invite.js.map +1 -1
  48. package/dist/emails/coach-removed-client.d.ts +1 -1
  49. package/dist/emails/coach-removed-client.d.ts.map +1 -1
  50. package/dist/emails/coach-removed-client.js +3 -76
  51. package/dist/emails/coach-removed-client.js.map +1 -1
  52. package/dist/emails/direct-message.d.ts +1 -1
  53. package/dist/emails/direct-message.d.ts.map +1 -1
  54. package/dist/emails/direct-message.js +22 -96
  55. package/dist/emails/direct-message.js.map +1 -1
  56. package/dist/emails/feature-discovery.d.ts +2 -1
  57. package/dist/emails/feature-discovery.d.ts.map +1 -1
  58. package/dist/emails/feature-discovery.js +20 -117
  59. package/dist/emails/feature-discovery.js.map +1 -1
  60. package/dist/emails/first-workout-assigned.d.ts +1 -1
  61. package/dist/emails/first-workout-assigned.d.ts.map +1 -1
  62. package/dist/emails/first-workout-assigned.js +3 -94
  63. package/dist/emails/first-workout-assigned.js.map +1 -1
  64. package/dist/emails/first-workout-completed.d.ts +1 -1
  65. package/dist/emails/first-workout-completed.d.ts.map +1 -1
  66. package/dist/emails/first-workout-completed.js +14 -125
  67. package/dist/emails/first-workout-completed.js.map +1 -1
  68. package/dist/emails/inactive-reengagement.d.ts +10 -0
  69. package/dist/emails/inactive-reengagement.d.ts.map +1 -0
  70. package/dist/emails/inactive-reengagement.js +31 -0
  71. package/dist/emails/inactive-reengagement.js.map +1 -0
  72. package/dist/emails/monthly-report.d.ts +2 -1
  73. package/dist/emails/monthly-report.d.ts.map +1 -1
  74. package/dist/emails/monthly-report.js +14 -166
  75. package/dist/emails/monthly-report.js.map +1 -1
  76. package/dist/emails/new-follower.d.ts +1 -1
  77. package/dist/emails/new-follower.d.ts.map +1 -1
  78. package/dist/emails/new-follower.js +7 -91
  79. package/dist/emails/new-follower.js.map +1 -1
  80. package/dist/emails/nps-survey.d.ts +9 -0
  81. package/dist/emails/nps-survey.d.ts.map +1 -0
  82. package/dist/emails/nps-survey.js +51 -0
  83. package/dist/emails/nps-survey.js.map +1 -0
  84. package/dist/emails/subscription-canceled.d.ts +1 -1
  85. package/dist/emails/subscription-canceled.d.ts.map +1 -1
  86. package/dist/emails/subscription-canceled.js +20 -127
  87. package/dist/emails/subscription-canceled.js.map +1 -1
  88. package/dist/emails/support-email.d.ts +1 -1
  89. package/dist/emails/support-email.d.ts.map +1 -1
  90. package/dist/emails/support-email.js +3 -38
  91. package/dist/emails/support-email.js.map +1 -1
  92. package/dist/emails/team-invite.d.ts.map +1 -1
  93. package/dist/emails/team-invite.js +7 -96
  94. package/dist/emails/team-invite.js.map +1 -1
  95. package/dist/emails/team-member-removed-email.d.ts +1 -1
  96. package/dist/emails/team-member-removed-email.d.ts.map +1 -1
  97. package/dist/emails/team-member-removed-email.js +3 -93
  98. package/dist/emails/team-member-removed-email.js.map +1 -1
  99. package/dist/emails/tracked-magic-link-activate.d.ts +2 -2
  100. package/dist/emails/tracked-magic-link-activate.d.ts.map +1 -1
  101. package/dist/emails/tracked-magic-link-activate.js +3 -91
  102. package/dist/emails/tracked-magic-link-activate.js.map +1 -1
  103. package/dist/emails/tracked-magic-link.d.ts +3 -3
  104. package/dist/emails/tracked-magic-link.d.ts.map +1 -1
  105. package/dist/emails/tracked-magic-link.js +3 -99
  106. package/dist/emails/tracked-magic-link.js.map +1 -1
  107. package/dist/emails/week-one-checkin.d.ts +3 -2
  108. package/dist/emails/week-one-checkin.d.ts.map +1 -1
  109. package/dist/emails/week-one-checkin.js +22 -136
  110. package/dist/emails/week-one-checkin.js.map +1 -1
  111. package/dist/emails/weekly-progress-digest.d.ts +21 -0
  112. package/dist/emails/weekly-progress-digest.d.ts.map +1 -0
  113. package/dist/emails/weekly-progress-digest.js +78 -0
  114. package/dist/emails/weekly-progress-digest.js.map +1 -0
  115. package/dist/emails/welcome.d.ts +3 -2
  116. package/dist/emails/welcome.d.ts.map +1 -1
  117. package/dist/emails/welcome.js +16 -142
  118. package/dist/emails/welcome.js.map +1 -1
  119. package/dist/index.d.ts +8 -1
  120. package/dist/index.d.ts.map +1 -1
  121. package/dist/index.js +11 -1
  122. package/dist/index.js.map +1 -1
  123. package/package.json +1 -1
@@ -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