@tracked/emails 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +211 -0
  3. package/dist/emails/bodyweight-goal-reached.d.ts +14 -0
  4. package/dist/emails/bodyweight-goal-reached.d.ts.map +1 -0
  5. package/dist/emails/bodyweight-goal-reached.js +177 -0
  6. package/dist/emails/bodyweight-goal-reached.js.map +1 -0
  7. package/dist/emails/client-accepted-invitation.d.ts +10 -0
  8. package/dist/emails/client-accepted-invitation.d.ts.map +1 -0
  9. package/dist/emails/client-accepted-invitation.js +99 -0
  10. package/dist/emails/client-accepted-invitation.js.map +1 -0
  11. package/dist/emails/coach-invite.d.ts +10 -0
  12. package/dist/emails/coach-invite.d.ts.map +1 -0
  13. package/dist/emails/coach-invite.js +126 -0
  14. package/dist/emails/coach-invite.js.map +1 -0
  15. package/dist/emails/coach-removed-client.d.ts +8 -0
  16. package/dist/emails/coach-removed-client.d.ts.map +1 -0
  17. package/dist/emails/coach-removed-client.js +80 -0
  18. package/dist/emails/coach-removed-client.js.map +1 -0
  19. package/dist/emails/direct-message.d.ts +11 -0
  20. package/dist/emails/direct-message.d.ts.map +1 -0
  21. package/dist/emails/direct-message.js +103 -0
  22. package/dist/emails/direct-message.js.map +1 -0
  23. package/dist/emails/feature-discovery.d.ts +11 -0
  24. package/dist/emails/feature-discovery.d.ts.map +1 -0
  25. package/dist/emails/feature-discovery.js +121 -0
  26. package/dist/emails/feature-discovery.js.map +1 -0
  27. package/dist/emails/first-workout-assigned.d.ts +10 -0
  28. package/dist/emails/first-workout-assigned.d.ts.map +1 -0
  29. package/dist/emails/first-workout-assigned.js +98 -0
  30. package/dist/emails/first-workout-assigned.js.map +1 -0
  31. package/dist/emails/first-workout-completed.d.ts +11 -0
  32. package/dist/emails/first-workout-completed.d.ts.map +1 -0
  33. package/dist/emails/first-workout-completed.js +129 -0
  34. package/dist/emails/first-workout-completed.js.map +1 -0
  35. package/dist/emails/index.d.ts +7 -0
  36. package/dist/emails/index.d.ts.map +1 -0
  37. package/dist/emails/index.js +7 -0
  38. package/dist/emails/index.js.map +1 -0
  39. package/dist/emails/new-follower.d.ts +11 -0
  40. package/dist/emails/new-follower.d.ts.map +1 -0
  41. package/dist/emails/new-follower.js +98 -0
  42. package/dist/emails/new-follower.js.map +1 -0
  43. package/dist/emails/subscription-canceled.d.ts +10 -0
  44. package/dist/emails/subscription-canceled.d.ts.map +1 -0
  45. package/dist/emails/subscription-canceled.js +131 -0
  46. package/dist/emails/subscription-canceled.js.map +1 -0
  47. package/dist/emails/support-email.d.ts +8 -0
  48. package/dist/emails/support-email.d.ts.map +1 -0
  49. package/dist/emails/support-email.js +40 -0
  50. package/dist/emails/support-email.js.map +1 -0
  51. package/dist/emails/team-invite.d.ts +11 -0
  52. package/dist/emails/team-invite.d.ts.map +1 -0
  53. package/dist/emails/team-invite.js +100 -0
  54. package/dist/emails/team-invite.js.map +1 -0
  55. package/dist/emails/team-member-removed-email.d.ts +8 -0
  56. package/dist/emails/team-member-removed-email.d.ts.map +1 -0
  57. package/dist/emails/team-member-removed-email.js +97 -0
  58. package/dist/emails/team-member-removed-email.js.map +1 -0
  59. package/dist/emails/tracked-magic-link-activate.d.ts +7 -0
  60. package/dist/emails/tracked-magic-link-activate.d.ts.map +1 -0
  61. package/dist/emails/tracked-magic-link-activate.js +93 -0
  62. package/dist/emails/tracked-magic-link-activate.js.map +1 -0
  63. package/dist/emails/tracked-magic-link.d.ts +7 -0
  64. package/dist/emails/tracked-magic-link.d.ts.map +1 -0
  65. package/dist/emails/tracked-magic-link.js +101 -0
  66. package/dist/emails/tracked-magic-link.js.map +1 -0
  67. package/dist/emails/week-one-checkin.d.ts +10 -0
  68. package/dist/emails/week-one-checkin.d.ts.map +1 -0
  69. package/dist/emails/week-one-checkin.js +141 -0
  70. package/dist/emails/week-one-checkin.js.map +1 -0
  71. package/dist/emails/welcome.d.ts +8 -0
  72. package/dist/emails/welcome.d.ts.map +1 -0
  73. package/dist/emails/welcome.js +146 -0
  74. package/dist/emails/welcome.js.map +1 -0
  75. package/dist/index.d.ts +22 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +24 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/utils/email-validation.d.ts +48 -0
  80. package/dist/utils/email-validation.d.ts.map +1 -0
  81. package/dist/utils/email-validation.js +72 -0
  82. package/dist/utils/email-validation.js.map +1 -0
  83. package/dist/utils/index.d.ts +8 -0
  84. package/dist/utils/index.d.ts.map +1 -0
  85. package/dist/utils/index.js +8 -0
  86. package/dist/utils/index.js.map +1 -0
  87. package/dist/utils/username-validation.d.ts +54 -0
  88. package/dist/utils/username-validation.d.ts.map +1 -0
  89. package/dist/utils/username-validation.js +76 -0
  90. package/dist/utils/username-validation.js.map +1 -0
  91. package/package.json +78 -0
  92. package/src/emails/bodyweight-goal-reached.tsx +396 -0
  93. package/src/emails/client-accepted-invitation.tsx +258 -0
  94. package/src/emails/coach-invite.tsx +270 -0
  95. package/src/emails/coach-removed-client.tsx +212 -0
  96. package/src/emails/direct-message.tsx +249 -0
  97. package/src/emails/feature-discovery.tsx +289 -0
  98. package/src/emails/first-workout-assigned.tsx +255 -0
  99. package/src/emails/first-workout-completed.tsx +312 -0
  100. package/src/emails/index.tsx +6 -0
  101. package/src/emails/new-follower.tsx +260 -0
  102. package/src/emails/subscription-canceled.tsx +311 -0
  103. package/src/emails/support-email.tsx +80 -0
  104. package/src/emails/team-invite.tsx +262 -0
  105. package/src/emails/team-member-removed-email.tsx +240 -0
  106. package/src/emails/tracked-magic-link-activate.tsx +252 -0
  107. package/src/emails/tracked-magic-link.tsx +264 -0
  108. package/src/emails/week-one-checkin.tsx +353 -0
  109. package/src/emails/welcome.tsx +341 -0
  110. package/src/index.ts +57 -0
  111. package/src/utils/email-validation.test.ts +78 -0
  112. package/src/utils/email-validation.ts +80 -0
  113. package/src/utils/index.ts +13 -0
  114. package/src/utils/username-validation.test.ts +118 -0
  115. package/src/utils/username-validation.ts +89 -0
  116. package/static/tracked-logo.png +0 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Tracked Training Platform Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,211 @@
1
+ # @tracked/emails
2
+
3
+ Email templates and utilities for Tracked Training Platform.
4
+
5
+ ## Features
6
+
7
+ - 📧 Pre-built React Email templates for common use cases
8
+ - ✅ Email and username validation utilities
9
+ - 🎨 Consistent branding and styling
10
+ - 📦 TypeScript support with full type definitions
11
+ - 🧪 Comprehensive test coverage
12
+
13
+ ## Installation
14
+
15
+ ```bash
16
+ npm install @tracked/emails
17
+ # or
18
+ yarn add @tracked/emails
19
+ # or
20
+ pnpm add @tracked/emails
21
+ ```
22
+
23
+ ## Usage
24
+
25
+ ### Email Templates
26
+
27
+ Import and use any of the pre-built email templates:
28
+
29
+ ```typescript
30
+ import { TrackedMagicLink, WelcomeEmail } from '@tracked/emails';
31
+ import { render } from '@react-email/components';
32
+
33
+ // Magic link email
34
+ const magicLinkHtml = render(
35
+ <TrackedMagicLink url="https://app.tracked.com/verify?token=..." />
36
+ );
37
+
38
+ // Welcome email
39
+ const welcomeHtml = render(
40
+ <WelcomeEmail username="john_doe" />
41
+ );
42
+ ```
43
+
44
+ ### Available Templates
45
+
46
+ - `TrackedMagicLink` - Magic link authentication emails
47
+ - `TrackedMagicLinkActivate` - Account activation emails
48
+ - `WelcomeEmail` - Welcome new users
49
+ - `CoachInviteEmail` - Coach invitation emails
50
+ - `TeamInviteEmail` - Team invitation emails
51
+ - `FirstWorkoutAssignedEmail` - First workout assignment notification
52
+ - `FirstWorkoutCompletedEmail` - First workout completion celebration
53
+ - `NewFollowerEmail` - New follower notifications
54
+ - `DirectMessageEmail` - Direct message notifications
55
+ - `SupportEmail` - Support request confirmations
56
+ - `FeatureDiscoveryEmail` - Feature announcement emails
57
+ - `WeekOneCheckinEmail` - First week check-in
58
+ - `ClientAcceptedInvitationEmail` - Client acceptance notification
59
+ - `CoachRemovedClientEmail` - Client removal notification
60
+ - `TeamMemberRemovedEmail` - Team member removal notification
61
+ - `SubscriptionCanceledEmail` - Subscription cancellation confirmation
62
+ - `BodyweightGoalReachedEmail` - Goal achievement celebration
63
+
64
+ ### Validation Utilities
65
+
66
+ #### Email Validation
67
+
68
+ ```typescript
69
+ import {
70
+ isValidEmailFormat,
71
+ isPrivateRelayEmail,
72
+ shouldSendEmailTo
73
+ } from '@tracked/emails';
74
+
75
+ // Check email format
76
+ isValidEmailFormat('user@example.com'); // true
77
+ isValidEmailFormat('invalid-email'); // false
78
+
79
+ // Detect Apple private relay emails
80
+ isPrivateRelayEmail('abc123@privaterelay.appleid.com'); // true
81
+ isPrivateRelayEmail('user@gmail.com'); // false
82
+
83
+ // Main validation function (recommended)
84
+ shouldSendEmailTo('user@example.com'); // true
85
+ shouldSendEmailTo('abc@privaterelay.appleid.com'); // false
86
+ shouldSendEmailTo(null); // false
87
+ ```
88
+
89
+ #### Username Validation
90
+
91
+ ```typescript
92
+ import {
93
+ isAnonymousUsername,
94
+ getSafeDisplayName
95
+ } from '@tracked/emails';
96
+
97
+ // Detect auto-generated UUIDs
98
+ isAnonymousUsername('01944f9e-8e64-7a78-9e1e-3daba7b13e9f'); // true
99
+ isAnonymousUsername('john_doe'); // false
100
+
101
+ // Get safe display name with intelligent fallback
102
+ getSafeDisplayName('john_doe', 'John', 'John Smith'); // 'john_doe'
103
+ getSafeDisplayName('01944f9e-...', 'John', 'John Smith'); // 'John'
104
+ getSafeDisplayName('01944f9e-...', null, 'John Smith'); // 'John Smith'
105
+ getSafeDisplayName('01944f9e-...', null, null); // 'there'
106
+ getSafeDisplayName('01944f9e-...', null, null, 'friend'); // 'friend'
107
+ ```
108
+
109
+ ## Development
110
+
111
+ ### Setup
112
+
113
+ ```bash
114
+ # Install dependencies
115
+ yarn install
116
+
117
+ # Run tests
118
+ yarn test
119
+
120
+ # Run tests in watch mode
121
+ yarn test:watch
122
+
123
+ # Build the package
124
+ yarn build
125
+
126
+ # Type check
127
+ yarn typecheck
128
+
129
+ # Lint
130
+ yarn lint
131
+
132
+ # Format code
133
+ yarn format:fix
134
+ ```
135
+
136
+ ### Preview Emails
137
+
138
+ This package uses [React Email](https://react.email/) for email development.
139
+
140
+ ```bash
141
+ # Start the email preview server
142
+ yarn dev:email
143
+ ```
144
+
145
+ Then open http://localhost:3000 to preview all email templates.
146
+
147
+ ## Testing
148
+
149
+ The package includes comprehensive tests for all validation utilities:
150
+
151
+ ```bash
152
+ # Run all tests
153
+ yarn test
154
+
155
+ # Run with coverage
156
+ yarn test:coverage
157
+
158
+ # Watch mode for development
159
+ yarn test:watch
160
+ ```
161
+
162
+ ## Building
163
+
164
+ ```bash
165
+ yarn build
166
+ ```
167
+
168
+ This will:
169
+ 1. Clean the `dist/` directory
170
+ 2. Compile TypeScript to ESM format
171
+ 3. Generate type definitions and source maps
172
+
173
+ ## Publishing
174
+
175
+ ```bash
176
+ # Version bump (patch/minor/major)
177
+ npm version patch
178
+
179
+ # Publish to npm
180
+ npm publish --access public
181
+ ```
182
+
183
+ ## Package Structure
184
+
185
+ ```
186
+ @tracked/emails/
187
+ ├── src/
188
+ │ ├── emails/ # Email template components
189
+ │ ├── utils/ # Validation utilities
190
+ │ └── index.ts # Main entry point
191
+ ├── static/ # Static assets (logos, images)
192
+ ├── dist/ # Build output
193
+ └── package.json
194
+ ```
195
+
196
+ ## TypeScript
197
+
198
+ This package is written in TypeScript and includes full type definitions. All exports are fully typed for the best developer experience.
199
+
200
+ ## License
201
+
202
+ MIT © Tracked Training Platform Inc.
203
+
204
+ ## Contributing
205
+
206
+ This package is part of the Tracked Training Platform ecosystem. For issues or feature requests, please contact the development team.
207
+
208
+ ## Links
209
+
210
+ - [React Email Documentation](https://react.email/)
211
+ - [Tracked Training Platform](https://tracked.gg/)
@@ -0,0 +1,14 @@
1
+ interface BodyweightGoalReachedEmailProps {
2
+ userName: string;
3
+ goalType: "gain" | "loss" | "maintain";
4
+ startWeight: number;
5
+ currentWeight: number;
6
+ goalWeight: number;
7
+ weightUnit: "kg" | "lbs";
8
+ timeToGoal?: string;
9
+ progressUrl: string;
10
+ websiteUrl: string;
11
+ }
12
+ export declare const BodyweightGoalReachedEmail: ({ userName, goalType, startWeight, currentWeight, goalWeight, weightUnit, timeToGoal, progressUrl, websiteUrl, }: BodyweightGoalReachedEmailProps) => import("react/jsx-runtime").JSX.Element;
13
+ export default BodyweightGoalReachedEmail;
14
+ //# sourceMappingURL=bodyweight-goal-reached.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bodyweight-goal-reached.d.ts","sourceRoot":"","sources":["../../src/emails/bodyweight-goal-reached.tsx"],"names":[],"mappings":"AAgBA,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,EAAE,MAAM,CAAC;CACpB;AAID,eAAO,MAAM,0BAA0B,GAAI,kHAUxC,+BAA+B,4CAoNjC,CAAC;AA+IF,eAAe,0BAA0B,CAAC"}
@@ -0,0 +1,177 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Body, Column, Container, Head, Hr, Html, Img, Link, Preview, Row, Section, Text, } from "@react-email/components";
3
+ const baseUrl = "https://tracked.gg/android-chrome-192x192.png";
4
+ export const BodyweightGoalReachedEmail = ({ userName, goalType, startWeight, currentWeight, goalWeight, weightUnit, timeToGoal, progressUrl, websiteUrl = "https://tracked.gg", }) => {
5
+ const weightChange = Math.abs(currentWeight - startWeight);
6
+ const changeDirection = currentWeight > startWeight ? "gained" : "lost";
7
+ const getGoalMessage = () => {
8
+ switch (goalType) {
9
+ case "gain":
10
+ return "You've reached your weight gain goal!";
11
+ case "loss":
12
+ return "You've reached your weight loss goal!";
13
+ case "maintain":
14
+ return "You've successfully maintained your goal weight!";
15
+ default:
16
+ return "You've reached your goal!";
17
+ }
18
+ };
19
+ 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: "Congratulations! You've reached your bodyweight goal on Tracked" }), _jsx(Body, { style: main, children: _jsx(Container, { style: container, children: _jsxs(Section, { style: box, children: [_jsxs(Row, { style: { marginBottom: "8px" }, children: [_jsx(Column, { style: { width: "auto", verticalAlign: "middle" }, children: _jsx(Img, { src: `${baseUrl}`, width: "28", height: "28", alt: "Tracked" }) }), _jsx(Column, { style: {
20
+ width: "auto",
21
+ verticalAlign: "middle",
22
+ paddingLeft: "4px",
23
+ }, children: _jsx(Text, { style: {
24
+ fontSize: "28px",
25
+ fontWeight: "900",
26
+ fontFamily: "Raleway, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
27
+ color: "#020617",
28
+ margin: "0",
29
+ lineHeight: "32px",
30
+ letterSpacing: "0.5px",
31
+ }, children: "TRACKED" }) })] }), _jsx(Hr, { style: hr }), _jsx(Section, { style: { textAlign: "center", margin: "24px 0" }, children: _jsx(Text, { style: { fontSize: "64px", margin: "0" }, children: "\uD83C\uDF89" }) }), _jsx(Text, { style: heading, children: "Goal Achieved!" }), _jsx(Text, { style: celebrationText, children: getGoalMessage() }), _jsxs(Section, { style: statsBox, children: [_jsx(Text, { style: statsHeading, children: "Your Achievement:" }), _jsxs(Row, { children: [_jsxs(Column, { children: [_jsx(Text, { style: statsLabel, children: "Starting Weight" }), _jsxs(Text, { style: statsValue, children: [startWeight, " ", weightUnit] })] }), _jsxs(Column, { children: [_jsx(Text, { style: statsLabel, children: "Current Weight" }), _jsxs(Text, { style: statsValue, children: [currentWeight, " ", weightUnit] })] }), _jsxs(Column, { children: [_jsx(Text, { style: statsLabel, children: "Goal Weight" }), _jsxs(Text, { style: statsValue, children: [goalWeight, " ", weightUnit] })] })] }), _jsx(Section, { style: changeBox, children: _jsxs(Text, { style: changeText, children: ["You've ", changeDirection, " ", weightChange.toFixed(1), " ", weightUnit, timeToGoal && ` in ${timeToGoal}`, "!"] }) })] }), _jsxs(Text, { style: 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("div", { style: {
32
+ marginTop: "24px",
33
+ marginBottom: "24px",
34
+ textAlign: "left",
35
+ }, children: _jsx("a", { href: progressUrl, style: {
36
+ backgroundColor: "#0f172a",
37
+ borderRadius: "8px",
38
+ fontSize: "16px",
39
+ fontWeight: "bold",
40
+ textDecoration: "none",
41
+ padding: "12px 32px",
42
+ display: "inline-block",
43
+ }, children: _jsx("span", { style: { color: "#ffffff", textDecoration: "none" }, children: "View Your Progress" }) }) }), _jsxs(Section, { style: nextStepsBox, children: [_jsx(Text, { style: nextStepsHeading, children: "What's Next?" }), _jsxs("ul", { style: nextStepsList, children: [_jsx("li", { style: nextStepItem, children: "Maintain your progress with consistent training" }), _jsx("li", { style: nextStepItem, children: "Set a new goal to continue your journey" }), _jsx("li", { style: nextStepItem, children: "Share your success with the Tracked community" }), _jsx("li", { style: nextStepItem, children: "Reflect on what worked and keep building on it" })] })] }), _jsxs(Section, { style: motivationBox, children: [_jsx(Text, { style: motivationText, children: "\"Success is the sum of small efforts repeated day in and day out.\"" }), _jsx(Text, { style: { ...motivationText, marginTop: "8px", fontStyle: "normal" }, children: "You proved it - congratulations! \uD83D\uDCAA" })] }), _jsx("div", { style: {
44
+ textAlign: "left",
45
+ margin: "24px 0",
46
+ }, children: _jsx("a", { href: "https://www.discord.gg/trackedgg", style: {
47
+ backgroundColor: "#5865F2",
48
+ borderRadius: "8px",
49
+ fontSize: "16px",
50
+ fontWeight: "bold",
51
+ textDecoration: "none",
52
+ padding: "12px 32px",
53
+ display: "inline-block",
54
+ }, children: _jsx("span", { style: { color: "#ffffff", textDecoration: "none" }, children: "Join our Discord Community" }) }) }), _jsx(Hr, { style: hr }), _jsxs(Text, { style: footer, children: ["Copyright \u00A9 Tracked Training Platform Inc. ", _jsx("br", {}), " 9101 Horne Street, Vancouver, BC"] }), _jsxs(Container, { children: [_jsx(Link, { href: `${websiteUrl}/terms`, style: { ...footer, paddingRight: 10 }, children: "Terms" }), _jsx(Link, { style: { ...footer, paddingRight: 10 }, children: " | " }), _jsx(Link, { href: `${websiteUrl}/privacy`, style: { ...footer, paddingRight: 10 }, children: "Privacy" }), _jsx(Link, { style: { ...footer, paddingRight: 10 }, children: " | " }), _jsx(Link, { href: `${websiteUrl}/support`, style: { ...footer, paddingRight: 10 }, children: "Support" })] }), _jsx(Text, { style: footer, children: "This is a service notification by the Tracked Training Platform." })] }) }) })] }));
55
+ };
56
+ const main = {
57
+ backgroundColor: "#020617", // slate-950
58
+ fontFamily: '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Ubuntu,sans-serif',
59
+ };
60
+ const container = {
61
+ backgroundColor: "#020617", // slate-950
62
+ margin: "0 auto",
63
+ padding: "20px 0 48px",
64
+ marginBottom: "64px",
65
+ borderRadius: "8px",
66
+ };
67
+ const box = {
68
+ padding: "0 24px",
69
+ };
70
+ const hr = {
71
+ borderColor: "#4ade80", // green-400
72
+ margin: "24px 0",
73
+ borderWidth: "1px",
74
+ };
75
+ const paragraph = {
76
+ color: "#ffffff", // white
77
+ fontSize: "16px",
78
+ lineHeight: "24px",
79
+ textAlign: "left",
80
+ };
81
+ const heading = {
82
+ color: "#ffffff", // white
83
+ fontSize: "32px",
84
+ lineHeight: "40px",
85
+ fontWeight: "bold",
86
+ marginBottom: "8px",
87
+ textAlign: "center",
88
+ };
89
+ const celebrationText = {
90
+ color: "#4ade80",
91
+ fontSize: "18px",
92
+ lineHeight: "26px",
93
+ textAlign: "center",
94
+ marginBottom: "24px",
95
+ };
96
+ const statsBox = {
97
+ backgroundColor: "#1e293b",
98
+ padding: "20px 24px",
99
+ borderRadius: "8px",
100
+ margin: "24px 0",
101
+ borderLeft: "4px solid #4ade80",
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",
175
+ };
176
+ export default BodyweightGoalReachedEmail;
177
+ //# sourceMappingURL=bodyweight-goal-reached.js.map
@@ -0,0 +1 @@
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,10 @@
1
+ interface ClientAcceptedInvitationEmailProps {
2
+ coachName: string;
3
+ clientName: string;
4
+ clientEmail: string;
5
+ clientProfileUrl: string;
6
+ websiteUrl: string;
7
+ }
8
+ export declare const ClientAcceptedInvitationEmail: ({ coachName, clientName, clientEmail, clientProfileUrl, websiteUrl, }: ClientAcceptedInvitationEmailProps) => import("react/jsx-runtime").JSX.Element;
9
+ export default ClientAcceptedInvitationEmail;
10
+ //# sourceMappingURL=client-accepted-invitation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-accepted-invitation.d.ts","sourceRoot":"","sources":["../../src/emails/client-accepted-invitation.tsx"],"names":[],"mappings":"AAiBA,UAAU,kCAAkC;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AAID,eAAO,MAAM,6BAA6B,GAAI,uEAM3C,kCAAkC,4CA4JpC,CAAC;AAoEF,eAAe,6BAA6B,CAAC"}
@@ -0,0 +1,99 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Body, Column, Container, Head, Hr, Html, Img, Link, Preview, Row, Section, Text, } from "@react-email/components";
3
+ const baseUrl = "https://tracked.gg/android-chrome-192x192.png";
4
+ export const ClientAcceptedInvitationEmail = ({ coachName, clientName, clientEmail, clientProfileUrl, websiteUrl = "https://tracked.gg", }) => {
5
+ const displayName = clientName || clientEmail;
6
+ return (_jsxs(Html, { children: [_jsxs(Head, { children: [_jsx("meta", { name: "color-scheme", content: "light only" }), _jsx("meta", { name: "supported-color-schemes", content: "light only" })] }), _jsxs(Preview, { children: [displayName, " accepted your coaching invitation on Tracked"] }), _jsx(Body, { style: main, children: _jsx(Container, { style: container, children: _jsxs(Section, { style: box, children: [_jsxs(Row, { style: { marginBottom: "8px" }, children: [_jsx(Column, { style: { width: "auto", verticalAlign: "middle" }, children: _jsx(Img, { src: `${baseUrl}`, width: "28", height: "28", alt: "Tracked" }) }), _jsx(Column, { style: {
7
+ width: "auto",
8
+ verticalAlign: "middle",
9
+ paddingLeft: "4px",
10
+ }, children: _jsx(Text, { style: {
11
+ fontSize: "28px",
12
+ fontWeight: "900",
13
+ fontFamily: "Raleway, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
14
+ color: "#020617",
15
+ margin: "0",
16
+ lineHeight: "32px",
17
+ letterSpacing: "0.5px",
18
+ }, children: "TRACKED" }) })] }), _jsx(Hr, { style: hr }), _jsx(Text, { style: heading, children: "Great News!" }), _jsxs(Text, { style: paragraph, children: ["Hi ", coachName, ", ", displayName, " has accepted your coaching invitation and is now part of your coaching roster."] }), _jsxs(Section, { style: infoBox, children: [_jsx(Text, { style: infoHeading, children: "Client Details:" }), _jsxs(Text, { style: infoText, children: [_jsx("strong", { children: "Name:" }), " ", displayName] }), _jsxs(Text, { style: infoText, children: [_jsx("strong", { children: "Email:" }), " ", clientEmail] })] }), _jsx(Text, { style: paragraph, children: "You can now start creating their personalized training program and tracking their progress." }), _jsx("div", { style: {
19
+ marginTop: "24px",
20
+ marginBottom: "24px",
21
+ textAlign: "left",
22
+ }, children: _jsx("a", { href: clientProfileUrl, style: {
23
+ backgroundColor: "#0f172a",
24
+ borderRadius: "8px",
25
+ fontSize: "16px",
26
+ fontWeight: "bold",
27
+ textDecoration: "none",
28
+ padding: "12px 32px",
29
+ display: "inline-block",
30
+ }, children: _jsx("span", { style: { color: "#ffffff", textDecoration: "none" }, children: "View Client Profile" }) }) }), _jsx(Text, { style: { ...paragraph }, children: "Get started by creating their first workout program or checking in with them through the app." }), _jsx("div", { style: {
31
+ textAlign: "left",
32
+ margin: "24px 0",
33
+ }, children: _jsx("a", { href: "https://www.discord.gg/trackedgg", style: {
34
+ backgroundColor: "#5865F2",
35
+ borderRadius: "8px",
36
+ fontSize: "16px",
37
+ fontWeight: "bold",
38
+ textDecoration: "none",
39
+ padding: "12px 32px",
40
+ display: "inline-block",
41
+ }, children: _jsx("span", { style: { color: "#ffffff", textDecoration: "none" }, children: "Join our Discord Community" }) }) }), _jsx(Hr, { style: hr }), _jsxs(Text, { style: footer, children: ["Copyright \u00A9 Tracked Training Platform Inc. ", _jsx("br", {}), " 9101 Horne Street, Vancouver, BC"] }), _jsxs(Container, { children: [_jsx(Link, { href: `${websiteUrl}/terms`, style: { ...footer, paddingRight: 10 }, children: "Terms" }), _jsx(Link, { style: { ...footer, paddingRight: 10 }, children: " | " }), _jsx(Link, { href: `${websiteUrl}/privacy`, style: { ...footer, paddingRight: 10 }, children: "Privacy" }), _jsx(Link, { style: { ...footer, paddingRight: 10 }, children: " | " }), _jsx(Link, { href: `${websiteUrl}/support`, style: { ...footer, paddingRight: 10 }, children: "Support" })] }), _jsx(Text, { style: footer, children: "This is a service notification by the Tracked Training Platform." })] }) }) })] }));
42
+ };
43
+ const main = {
44
+ backgroundColor: "#020617", // slate-950
45
+ fontFamily: '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Ubuntu,sans-serif',
46
+ };
47
+ const container = {
48
+ backgroundColor: "#020617", // slate-950
49
+ margin: "0 auto",
50
+ padding: "20px 0 48px",
51
+ marginBottom: "64px",
52
+ borderRadius: "8px",
53
+ };
54
+ const box = {
55
+ padding: "0 24px",
56
+ };
57
+ const hr = {
58
+ borderColor: "#4ade80", // green-400
59
+ margin: "24px 0",
60
+ borderWidth: "1px",
61
+ };
62
+ const paragraph = {
63
+ color: "#ffffff", // white
64
+ fontSize: "16px",
65
+ lineHeight: "24px",
66
+ textAlign: "left",
67
+ };
68
+ const heading = {
69
+ color: "#ffffff", // white
70
+ fontSize: "24px",
71
+ lineHeight: "32px",
72
+ fontWeight: "bold",
73
+ marginBottom: "16px",
74
+ };
75
+ const infoBox = {
76
+ backgroundColor: "#1e293b",
77
+ padding: "16px 24px",
78
+ borderRadius: "8px",
79
+ margin: "24px 0",
80
+ };
81
+ const infoHeading = {
82
+ color: "#ffffff",
83
+ fontSize: "16px",
84
+ fontWeight: "bold",
85
+ marginBottom: "12px",
86
+ };
87
+ const infoText = {
88
+ color: "#e2e8f0",
89
+ fontSize: "14px",
90
+ lineHeight: "24px",
91
+ marginBottom: "4px",
92
+ };
93
+ const footer = {
94
+ color: "#94a3b8", // slate-400 for subtle footer text
95
+ fontSize: "12px",
96
+ lineHeight: "16px",
97
+ };
98
+ export default ClientAcceptedInvitationEmail;
99
+ //# sourceMappingURL=client-accepted-invitation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-accepted-invitation.js","sourceRoot":"","sources":["../../src/emails/client-accepted-invitation.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ interface CoachInviteEmailProps {
2
+ coachName: string;
3
+ coachEmail: string;
4
+ websiteUrl: string;
5
+ invitationLink: string;
6
+ coachAvatarUrl?: string;
7
+ }
8
+ export declare const CoachInviteEmail: ({ coachName, coachEmail, websiteUrl, invitationLink, coachAvatarUrl, }: CoachInviteEmailProps) => import("react/jsx-runtime").JSX.Element;
9
+ export default CoachInviteEmail;
10
+ //# sourceMappingURL=coach-invite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coach-invite.d.ts","sourceRoot":"","sources":["../../src/emails/coach-invite.tsx"],"names":[],"mappings":"AAeA,UAAU,qBAAqB;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAID,eAAO,MAAM,gBAAgB,GAAI,wEAM9B,qBAAqB,4CA8GvB,CAAC;AAgIF,eAAe,gBAAgB,CAAC"}