@tracked/emails 0.2.4 → 0.2.7

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 (131) hide show
  1. package/dist/components/content.js +1 -1
  2. package/dist/components/content.js.map +1 -1
  3. package/dist/components/index.d.ts +5 -5
  4. package/dist/components/index.d.ts.map +1 -1
  5. package/dist/components/index.js +5 -5
  6. package/dist/components/index.js.map +1 -1
  7. package/dist/components/interactive.js +1 -1
  8. package/dist/components/interactive.js.map +1 -1
  9. package/dist/components/layout.js +2 -2
  10. package/dist/components/layout.js.map +1 -1
  11. package/dist/components/typography.js +1 -1
  12. package/dist/components/typography.js.map +1 -1
  13. package/dist/emails/anniversary.js +1 -1
  14. package/dist/emails/anniversary.js.map +1 -1
  15. package/dist/emails/app-review-request.js +1 -1
  16. package/dist/emails/app-review-request.js.map +1 -1
  17. package/dist/emails/bodyweight-goal-reached.js +1 -1
  18. package/dist/emails/bodyweight-goal-reached.js.map +1 -1
  19. package/dist/emails/client-inactive-alert.js +1 -1
  20. package/dist/emails/client-inactive-alert.js.map +1 -1
  21. package/dist/emails/client-onboarded.js +1 -1
  22. package/dist/emails/client-onboarded.js.map +1 -1
  23. package/dist/emails/coach-invite.js +1 -1
  24. package/dist/emails/coach-invite.js.map +1 -1
  25. package/dist/emails/coach-removed-client.js +1 -1
  26. package/dist/emails/coach-removed-client.js.map +1 -1
  27. package/dist/emails/direct-message.js +1 -1
  28. package/dist/emails/direct-message.js.map +1 -1
  29. package/dist/emails/feature-discovery.js +1 -1
  30. package/dist/emails/feature-discovery.js.map +1 -1
  31. package/dist/emails/first-workout-assigned.js +1 -1
  32. package/dist/emails/first-workout-assigned.js.map +1 -1
  33. package/dist/emails/first-workout-completed.js +1 -1
  34. package/dist/emails/first-workout-completed.js.map +1 -1
  35. package/dist/emails/inactive-reengagement.js +1 -1
  36. package/dist/emails/inactive-reengagement.js.map +1 -1
  37. package/dist/emails/index.d.ts +24 -24
  38. package/dist/emails/index.d.ts.map +1 -1
  39. package/dist/emails/index.js +24 -24
  40. package/dist/emails/index.js.map +1 -1
  41. package/dist/emails/monthly-report.js +1 -1
  42. package/dist/emails/monthly-report.js.map +1 -1
  43. package/dist/emails/new-follower.js +1 -1
  44. package/dist/emails/new-follower.js.map +1 -1
  45. package/dist/emails/nps-survey.js +1 -1
  46. package/dist/emails/nps-survey.js.map +1 -1
  47. package/dist/emails/subscription-canceled.js +1 -1
  48. package/dist/emails/subscription-canceled.js.map +1 -1
  49. package/dist/emails/support-email.js +1 -1
  50. package/dist/emails/support-email.js.map +1 -1
  51. package/dist/emails/team-invite.js +1 -1
  52. package/dist/emails/team-invite.js.map +1 -1
  53. package/dist/emails/team-member-removed-email.js +1 -1
  54. package/dist/emails/team-member-removed-email.js.map +1 -1
  55. package/dist/emails/tracked-magic-link-activate.js +1 -1
  56. package/dist/emails/tracked-magic-link-activate.js.map +1 -1
  57. package/dist/emails/tracked-magic-link.js +1 -1
  58. package/dist/emails/tracked-magic-link.js.map +1 -1
  59. package/dist/emails/trial-converted.d.ts +8 -0
  60. package/dist/emails/trial-converted.d.ts.map +1 -0
  61. package/dist/emails/trial-converted.js +7 -0
  62. package/dist/emails/trial-converted.js.map +1 -0
  63. package/dist/emails/trial-ending-soon.d.ts +10 -0
  64. package/dist/emails/trial-ending-soon.d.ts.map +1 -0
  65. package/dist/emails/trial-ending-soon.js +36 -0
  66. package/dist/emails/trial-ending-soon.js.map +1 -0
  67. package/dist/emails/trial-expired.d.ts +8 -0
  68. package/dist/emails/trial-expired.d.ts.map +1 -0
  69. package/dist/emails/trial-expired.js +24 -0
  70. package/dist/emails/trial-expired.js.map +1 -0
  71. package/dist/emails/trial-midpoint.d.ts +11 -0
  72. package/dist/emails/trial-midpoint.d.ts.map +1 -0
  73. package/dist/emails/trial-midpoint.js +37 -0
  74. package/dist/emails/trial-midpoint.js.map +1 -0
  75. package/dist/emails/trial-started.d.ts +10 -0
  76. package/dist/emails/trial-started.d.ts.map +1 -0
  77. package/dist/emails/trial-started.js +7 -0
  78. package/dist/emails/trial-started.js.map +1 -0
  79. package/dist/emails/week-one-checkin.js +1 -1
  80. package/dist/emails/week-one-checkin.js.map +1 -1
  81. package/dist/emails/weekly-progress-digest.js +1 -1
  82. package/dist/emails/weekly-progress-digest.js.map +1 -1
  83. package/dist/emails/welcome.d.ts.map +1 -1
  84. package/dist/emails/welcome.js +1 -1
  85. package/dist/emails/welcome.js.map +1 -1
  86. package/dist/index.d.ts +6 -1
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +6 -1
  89. package/dist/index.js.map +1 -1
  90. package/dist/utils/index.d.ts +2 -2
  91. package/dist/utils/index.d.ts.map +1 -1
  92. package/dist/utils/index.js +2 -2
  93. package/dist/utils/index.js.map +1 -1
  94. package/package.json +1 -1
  95. package/src/components/content.tsx +1 -1
  96. package/src/components/index.ts +5 -5
  97. package/src/components/interactive.tsx +1 -1
  98. package/src/components/layout.tsx +2 -2
  99. package/src/components/typography.tsx +1 -1
  100. package/src/emails/anniversary.tsx +1 -1
  101. package/src/emails/app-review-request.tsx +1 -1
  102. package/src/emails/bodyweight-goal-reached.tsx +1 -1
  103. package/src/emails/client-inactive-alert.tsx +1 -1
  104. package/src/emails/client-onboarded.tsx +1 -1
  105. package/src/emails/coach-invite.tsx +1 -1
  106. package/src/emails/coach-removed-client.tsx +1 -1
  107. package/src/emails/direct-message.tsx +1 -1
  108. package/src/emails/feature-discovery.tsx +1 -1
  109. package/src/emails/first-workout-assigned.tsx +1 -1
  110. package/src/emails/first-workout-completed.tsx +1 -1
  111. package/src/emails/inactive-reengagement.tsx +1 -1
  112. package/src/emails/index.tsx +24 -24
  113. package/src/emails/monthly-report.tsx +1 -1
  114. package/src/emails/new-follower.tsx +1 -1
  115. package/src/emails/nps-survey.tsx +1 -1
  116. package/src/emails/subscription-canceled.tsx +1 -1
  117. package/src/emails/support-email.tsx +1 -1
  118. package/src/emails/team-invite.tsx +1 -1
  119. package/src/emails/team-member-removed-email.tsx +1 -1
  120. package/src/emails/tracked-magic-link-activate.tsx +1 -1
  121. package/src/emails/tracked-magic-link.tsx +1 -1
  122. package/src/emails/trial-converted.tsx +68 -0
  123. package/src/emails/trial-ending-soon.tsx +126 -0
  124. package/src/emails/trial-expired.tsx +96 -0
  125. package/src/emails/trial-midpoint.tsx +150 -0
  126. package/src/emails/trial-started.tsx +75 -0
  127. package/src/emails/week-one-checkin.tsx +1 -1
  128. package/src/emails/weekly-progress-digest.tsx +1 -1
  129. package/src/emails/welcome.tsx +1 -2
  130. package/src/index.ts +10 -0
  131. package/src/utils/index.ts +2 -2
package/dist/index.js CHANGED
@@ -16,6 +16,11 @@ import { NewFollowerEmail } from "./emails/new-follower.js";
16
16
  import { NpsSurveyEmail } from "./emails/nps-survey.js";
17
17
  import { SubscriptionCanceledEmail } from "./emails/subscription-canceled.js";
18
18
  import { SupportEmail } from "./emails/support-email.js";
19
+ import { TrialConvertedEmail } from "./emails/trial-converted.js";
20
+ import { TrialEndingSoonEmail } from "./emails/trial-ending-soon.js";
21
+ import { TrialExpiredEmail } from "./emails/trial-expired.js";
22
+ import { TrialMidpointEmail } from "./emails/trial-midpoint.js";
23
+ import { TrialStartedEmail } from "./emails/trial-started.js";
19
24
  import { TeamInviteEmail } from "./emails/team-invite.js";
20
25
  import { TeamMemberRemovedEmail } from "./emails/team-member-removed-email.js";
21
26
  import { TrackedMagicLink } from "./emails/tracked-magic-link.js";
@@ -27,7 +32,7 @@ import { WelcomeEmail } from "./emails/welcome.js";
27
32
  import { isPrivateRelayEmail, isValidEmailFormat, shouldSendEmailTo, } from "./utils/email-validation.js";
28
33
  import { isAnonymousUsername, getSafeDisplayName, } from "./utils/username-validation.js";
29
34
  // Export email templates
30
- export { AnniversaryEmail, AppReviewRequestEmail, BodyweightGoalReachedEmail, ClientInactiveAlertEmail, ClientOnboardedEmail, CoachInviteEmail, CoachRemovedClientEmail, DirectMessageEmail, FeatureDiscoveryEmail, FirstWorkoutAssignedEmail, FirstWorkoutCompletedEmail, InactiveReengagementEmail, MonthlyReportEmail, NewFollowerEmail, NpsSurveyEmail, SubscriptionCanceledEmail, SupportEmail, TeamInviteEmail, TeamMemberRemovedEmail, TrackedMagicLink, TrackedMagicLinkActivate, WeeklyProgressDigestEmail, WeekOneCheckinEmail, WelcomeEmail, };
35
+ export { AnniversaryEmail, AppReviewRequestEmail, BodyweightGoalReachedEmail, ClientInactiveAlertEmail, ClientOnboardedEmail, CoachInviteEmail, CoachRemovedClientEmail, DirectMessageEmail, FeatureDiscoveryEmail, FirstWorkoutAssignedEmail, FirstWorkoutCompletedEmail, InactiveReengagementEmail, MonthlyReportEmail, NewFollowerEmail, NpsSurveyEmail, SubscriptionCanceledEmail, SupportEmail, TeamInviteEmail, TeamMemberRemovedEmail, TrackedMagicLink, TrackedMagicLinkActivate, TrialConvertedEmail, TrialEndingSoonEmail, TrialExpiredEmail, TrialMidpointEmail, TrialStartedEmail, WeeklyProgressDigestEmail, WeekOneCheckinEmail, WelcomeEmail, };
31
36
  // Export validation utilities
32
37
  export { isPrivateRelayEmail, isValidEmailFormat, shouldSendEmailTo, isAnonymousUsername, getSafeDisplayName, };
33
38
  // Export shared components
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,8BAA8B;AAC9B,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,gCAAgC,CAAC;AAExC,yBAAyB;AACzB,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,yBAAyB,EACzB,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,EACzB,mBAAmB,EACnB,YAAY,GACb,CAAC;AAEF,8BAA8B;AAC9B,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,GACnB,CAAC;AAEF,2BAA2B;AAC3B,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,8BAA8B;AAC9B,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,gCAAgC,CAAC;AAExC,yBAAyB;AACzB,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,yBAAyB,EACzB,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,yBAAyB,EACzB,mBAAmB,EACnB,YAAY,GACb,CAAC;AAEF,8BAA8B;AAC9B,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,GACnB,CAAC;AAEF,2BAA2B;AAC3B,cAAc,uBAAuB,CAAC"}
@@ -3,6 +3,6 @@
3
3
  *
4
4
  * Export all validation utilities for use across the application.
5
5
  */
6
- export { isPrivateRelayEmail, isValidEmailFormat, shouldSendEmailTo, } from "./email-validation";
7
- export { isAnonymousUsername, getSafeDisplayName } from "./username-validation";
6
+ export { isPrivateRelayEmail, isValidEmailFormat, shouldSendEmailTo, } from "./email-validation.js";
7
+ export { isAnonymousUsername, getSafeDisplayName } from "./username-validation.js";
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -3,6 +3,6 @@
3
3
  *
4
4
  * Export all validation utilities for use across the application.
5
5
  */
6
- export { isPrivateRelayEmail, isValidEmailFormat, shouldSendEmailTo, } from "./email-validation";
7
- export { isAnonymousUsername, getSafeDisplayName } from "./username-validation";
6
+ export { isPrivateRelayEmail, isValidEmailFormat, shouldSendEmailTo, } from "./email-validation.js";
7
+ export { isAnonymousUsername, getSafeDisplayName } from "./username-validation.js";
8
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tracked/emails",
3
- "version": "0.2.4",
3
+ "version": "0.2.7",
4
4
  "description": "Email templates for Tracked Training Platform",
5
5
  "author": "Tracked Training Platform Inc.",
6
6
  "license": "MIT",
@@ -1,6 +1,6 @@
1
1
  import * as React from "react";
2
2
  import { Section, Text, Row, Column } from "@react-email/components";
3
- import { colors, borderRadius, spacing } from "./tokens";
3
+ import { colors, borderRadius, spacing } from "./tokens.js";
4
4
 
5
5
  // ============================================
6
6
  // FeatureBox - Highlighted feature/info box
@@ -1,5 +1,5 @@
1
1
  // Design Tokens
2
- export * from "./tokens";
2
+ export * from "./tokens.js";
3
3
 
4
4
  // Layout Components
5
5
  export {
@@ -8,7 +8,7 @@ export {
8
8
  EmailFooter,
9
9
  ContentSection,
10
10
  Divider,
11
- } from "./layout";
11
+ } from "./layout.js";
12
12
 
13
13
  // Typography Components
14
14
  export {
@@ -17,7 +17,7 @@ export {
17
17
  Label,
18
18
  HighlightText,
19
19
  SmallText,
20
- } from "./typography";
20
+ } from "./typography.js";
21
21
 
22
22
  // Interactive Components
23
23
  export {
@@ -27,7 +27,7 @@ export {
27
27
  SocialButtons,
28
28
  AppStoreButtons,
29
29
  TextLink,
30
- } from "./interactive";
30
+ } from "./interactive.js";
31
31
 
32
32
  // Content Components
33
33
  export {
@@ -41,4 +41,4 @@ export {
41
41
  SectionHeading,
42
42
  HighlightBanner,
43
43
  Avatar,
44
- } from "./content";
44
+ } from "./content.js";
@@ -1,6 +1,6 @@
1
1
  import * as React from "react";
2
2
  import { Img, Section } from "@react-email/components";
3
- import { colors, borderRadius, spacing } from "./tokens";
3
+ import { colors, borderRadius, spacing } from "./tokens.js";
4
4
 
5
5
  // ============================================
6
6
  // PrimaryButton - Main CTA button
@@ -11,8 +11,8 @@ import {
11
11
  Section,
12
12
  Text,
13
13
  } from "@react-email/components";
14
- import { colors, typography, spacing } from "./tokens";
15
- import { AppStoreButtons } from "./interactive";
14
+ import { colors, typography, spacing } from "./tokens.js";
15
+ import { AppStoreButtons } from "./interactive.js";
16
16
 
17
17
  const baseUrl = "https://tracked.gg/android-chrome-192x192.png";
18
18
  const defaultWebsiteUrl = "https://tracked.gg";
@@ -1,6 +1,6 @@
1
1
  import * as React from "react";
2
2
  import { Text, Heading as EmailHeading } from "@react-email/components";
3
- import { colors, spacing } from "./tokens";
3
+ import { colors, spacing } from "./tokens.js";
4
4
 
5
5
  // ============================================
6
6
  // Heading - Title text with variants
@@ -10,7 +10,7 @@ import {
10
10
  DiscordButton,
11
11
  colors,
12
12
  spacing,
13
- } from "../components";
13
+ } from "../components/index.js";
14
14
 
15
15
  interface AnniversaryEmailProps {
16
16
  userName: string;
@@ -12,7 +12,7 @@ import {
12
12
  colors,
13
13
  spacing,
14
14
  borderRadius,
15
- } from "../components";
15
+ } from "../components/index.js";
16
16
 
17
17
  interface AppReviewRequestEmailProps {
18
18
  userName: string;
@@ -11,7 +11,7 @@ import {
11
11
  PrimaryButton,
12
12
  DiscordButton,
13
13
  colors,
14
- } from "../components";
14
+ } from "../components/index.js";
15
15
 
16
16
  interface BodyweightGoalReachedEmailProps {
17
17
  userName: string;
@@ -11,7 +11,7 @@ import {
11
11
  colors,
12
12
  spacing,
13
13
  borderRadius,
14
- } from "../components";
14
+ } from "../components/index.js";
15
15
 
16
16
  interface ClientInactiveAlertEmailProps {
17
17
  coachName: string;
@@ -9,7 +9,7 @@ import {
9
9
  TipBox,
10
10
  PrimaryButton,
11
11
  colors,
12
- } from "../components";
12
+ } from "../components/index.js";
13
13
 
14
14
  interface ClientOnboardedEmailProps {
15
15
  coachName: string;
@@ -11,7 +11,7 @@ import {
11
11
  PrimaryButton,
12
12
  TextLink,
13
13
  colors,
14
- } from "../components";
14
+ } from "../components/index.js";
15
15
 
16
16
  interface CoachInviteEmailProps {
17
17
  coachName: string;
@@ -7,7 +7,7 @@ import {
7
7
  Paragraph,
8
8
  FeatureBox,
9
9
  SmallText,
10
- } from "../components";
10
+ } from "../components/index.js";
11
11
 
12
12
  interface CoachRemovedClientEmailProps {
13
13
  clientName: string;
@@ -10,7 +10,7 @@ import {
10
10
  PrimaryButton,
11
11
  DiscordButton,
12
12
  colors,
13
- } from "../components";
13
+ } from "../components/index.js";
14
14
 
15
15
  interface DirectMessageEmailProps {
16
16
  recipientName: string;
@@ -12,7 +12,7 @@ import {
12
12
  PrimaryButton,
13
13
  DiscordButton,
14
14
  colors,
15
- } from "../components";
15
+ } from "../components/index.js";
16
16
 
17
17
  interface FeatureDiscoveryEmailProps {
18
18
  userName?: string;
@@ -9,7 +9,7 @@ import {
9
9
  SmallText,
10
10
  PrimaryButton,
11
11
  DiscordButton,
12
- } from "../components";
12
+ } from "../components/index.js";
13
13
 
14
14
  interface FirstWorkoutAssignedEmailProps {
15
15
  clientName: string;
@@ -11,7 +11,7 @@ import {
11
11
  SmallText,
12
12
  PrimaryButton,
13
13
  DiscordButton,
14
- } from "../components";
14
+ } from "../components/index.js";
15
15
 
16
16
  interface FirstWorkoutCompletedEmailProps {
17
17
  userName: string;
@@ -9,7 +9,7 @@ import {
9
9
  FeatureList,
10
10
  PrimaryButton,
11
11
  DiscordButton,
12
- } from "../components";
12
+ } from "../components/index.js";
13
13
 
14
14
  interface InactiveReengagementEmailProps {
15
15
  userName: string;
@@ -1,24 +1,24 @@
1
- export * from "./anniversary";
2
- export * from "./app-review-request";
3
- export * from "./bodyweight-goal-reached";
4
- export * from "./client-inactive-alert";
5
- export * from "./client-onboarded";
6
- export * from "./coach-invite";
7
- export * from "./coach-removed-client";
8
- export * from "./direct-message";
9
- export * from "./feature-discovery";
10
- export * from "./first-workout-assigned";
11
- export * from "./first-workout-completed";
12
- export * from "./inactive-reengagement";
13
- export * from "./monthly-report";
14
- export * from "./new-follower";
15
- export * from "./nps-survey";
16
- export * from "./subscription-canceled";
17
- export * from "./support-email";
18
- export * from "./team-invite";
19
- export * from "./team-member-removed-email";
20
- export * from "./tracked-magic-link";
21
- export * from "./tracked-magic-link-activate";
22
- export * from "./week-one-checkin";
23
- export * from "./weekly-progress-digest";
24
- export * from "./welcome";
1
+ export * from "./anniversary.js";
2
+ export * from "./app-review-request.js";
3
+ export * from "./bodyweight-goal-reached.js";
4
+ export * from "./client-inactive-alert.js";
5
+ export * from "./client-onboarded.js";
6
+ export * from "./coach-invite.js";
7
+ export * from "./coach-removed-client.js";
8
+ export * from "./direct-message.js";
9
+ export * from "./feature-discovery.js";
10
+ export * from "./first-workout-assigned.js";
11
+ export * from "./first-workout-completed.js";
12
+ export * from "./inactive-reengagement.js";
13
+ export * from "./monthly-report.js";
14
+ export * from "./new-follower.js";
15
+ export * from "./nps-survey.js";
16
+ export * from "./subscription-canceled.js";
17
+ export * from "./support-email.js";
18
+ export * from "./team-invite.js";
19
+ export * from "./team-member-removed-email.js";
20
+ export * from "./tracked-magic-link.js";
21
+ export * from "./tracked-magic-link-activate.js";
22
+ export * from "./week-one-checkin.js";
23
+ export * from "./weekly-progress-digest.js";
24
+ export * from "./welcome.js";
@@ -12,7 +12,7 @@ import {
12
12
  HighlightBanner,
13
13
  SmallText,
14
14
  colors,
15
- } from "../components";
15
+ } from "../components/index.js";
16
16
 
17
17
  interface MuscleGroup {
18
18
  muscleGroupId: string;
@@ -11,7 +11,7 @@ import {
11
11
  PrimaryButton,
12
12
  DiscordButton,
13
13
  colors,
14
- } from "../components";
14
+ } from "../components/index.js";
15
15
 
16
16
  interface NewFollowerEmailProps {
17
17
  userName: string;
@@ -9,7 +9,7 @@ import {
9
9
  colors,
10
10
  spacing,
11
11
  borderRadius,
12
- } from "../components";
12
+ } from "../components/index.js";
13
13
 
14
14
  interface NpsSurveyEmailProps {
15
15
  userName: string;
@@ -12,7 +12,7 @@ import {
12
12
  SecondaryButton,
13
13
  DiscordButton,
14
14
  colors,
15
- } from "../components";
15
+ } from "../components/index.js";
16
16
 
17
17
  interface SubscriptionCanceledEmailProps {
18
18
  userName: string;
@@ -7,7 +7,7 @@ import {
7
7
  FeatureBox,
8
8
  SmallText,
9
9
  DiscordButton,
10
- } from "../components";
10
+ } from "../components/index.js";
11
11
 
12
12
  interface SupportEmailProps {
13
13
  email: string;
@@ -9,7 +9,7 @@ import {
9
9
  PrimaryButton,
10
10
  DiscordButton,
11
11
  TextLink,
12
- } from "../components";
12
+ } from "../components/index.js";
13
13
 
14
14
  interface TeamInviteEmailProps {
15
15
  teamName?: string;
@@ -7,7 +7,7 @@ import {
7
7
  Paragraph,
8
8
  DiscordButton,
9
9
  TextLink,
10
- } from "../components";
10
+ } from "../components/index.js";
11
11
 
12
12
  interface TeamMemberRemovedEmailProps {
13
13
  teamName?: string;
@@ -7,7 +7,7 @@ import {
7
7
  PrimaryButton,
8
8
  DiscordButton,
9
9
  TextLink,
10
- } from "../components";
10
+ } from "../components/index.js";
11
11
 
12
12
  interface Props {
13
13
  activateButtonLink: string;
@@ -7,7 +7,7 @@ import {
7
7
  PrimaryButton,
8
8
  DiscordButton,
9
9
  TextLink,
10
- } from "../components";
10
+ } from "../components/index.js";
11
11
 
12
12
  interface Props {
13
13
  loginButtonLink: string;
@@ -0,0 +1,68 @@
1
+ import * as React from "react";
2
+ import {
3
+ EmailLayout,
4
+ EmailHeader,
5
+ EmailFooter,
6
+ Heading,
7
+ Paragraph,
8
+ FeatureBox,
9
+ SmallText,
10
+ PrimaryButton,
11
+ DiscordButton,
12
+ } from "../components/index.js";
13
+
14
+ interface TrialConvertedEmailProps {
15
+ userName: string;
16
+ dashboardUrl: string;
17
+ websiteUrl?: string;
18
+ }
19
+
20
+ export const TrialConvertedEmail = ({
21
+ userName = "Coach",
22
+ dashboardUrl = "https://dashboard.tracked.gg",
23
+ websiteUrl = "https://tracked.gg",
24
+ }: TrialConvertedEmailProps) => {
25
+ return (
26
+ <EmailLayout preview="Welcome to Tracked - You're now a subscriber">
27
+ <EmailHeader />
28
+
29
+ <Heading>Welcome to Tracked</Heading>
30
+ <Paragraph>
31
+ Hi {userName}, thank you for subscribing to Tracked. You now have full
32
+ access to all coaching features with no time limits.
33
+ </Paragraph>
34
+
35
+ <FeatureBox title="What's next:">
36
+ <SmallText style={{ marginBottom: "4px" }}>
37
+ • Continue managing your clients from the dashboard
38
+ </SmallText>
39
+ <SmallText style={{ marginBottom: "4px" }}>
40
+ • Your billing is based on your active client count
41
+ </SmallText>
42
+ <SmallText style={{ marginBottom: "4px" }}>
43
+ • Manage your subscription anytime from billing settings
44
+ </SmallText>
45
+ <SmallText>• Reach out if you need any help getting started</SmallText>
46
+ </FeatureBox>
47
+
48
+ <Paragraph>
49
+ We're excited to have you as part of the Tracked community. If you have
50
+ any questions about your subscription or the platform, we're here to
51
+ help.
52
+ </Paragraph>
53
+
54
+ <PrimaryButton href={dashboardUrl}>Go to Dashboard</PrimaryButton>
55
+
56
+ <Paragraph style={{ marginTop: "24px" }}>
57
+ Join our Discord community to connect with other coaches, share tips,
58
+ and get the latest updates.
59
+ </Paragraph>
60
+
61
+ <DiscordButton />
62
+
63
+ <EmailFooter websiteUrl={websiteUrl} />
64
+ </EmailLayout>
65
+ );
66
+ };
67
+
68
+ export default TrialConvertedEmail;
@@ -0,0 +1,126 @@
1
+ import * as React from "react";
2
+ import { Section, Text } from "@react-email/components";
3
+ import {
4
+ EmailLayout,
5
+ EmailHeader,
6
+ EmailFooter,
7
+ Heading,
8
+ Paragraph,
9
+ FeatureBox,
10
+ SmallText,
11
+ PrimaryButton,
12
+ DiscordButton,
13
+ colors,
14
+ } from "../components/index.js";
15
+
16
+ interface TrialEndingSoonEmailProps {
17
+ userName: string;
18
+ daysRemaining: number;
19
+ trialEndDate: string;
20
+ upgradeUrl: string;
21
+ websiteUrl?: string;
22
+ }
23
+
24
+ export const TrialEndingSoonEmail = ({
25
+ userName = "Coach",
26
+ daysRemaining = 3,
27
+ trialEndDate = "January 29, 2025",
28
+ upgradeUrl = "https://dashboard.tracked.gg/billing",
29
+ websiteUrl = "https://tracked.gg",
30
+ }: TrialEndingSoonEmailProps) => {
31
+ const dayText = daysRemaining === 1 ? "day" : "days";
32
+
33
+ return (
34
+ <EmailLayout
35
+ preview={`Only ${daysRemaining} ${dayText} left in your Tracked trial`}
36
+ >
37
+ <EmailHeader />
38
+
39
+ <Section
40
+ style={{
41
+ backgroundColor: "#FEF3C7",
42
+ padding: "16px 20px",
43
+ borderRadius: "8px",
44
+ marginBottom: "24px",
45
+ borderLeft: "4px solid #F59E0B",
46
+ }}
47
+ >
48
+ <Text
49
+ style={{
50
+ color: "#92400E",
51
+ fontSize: "14px",
52
+ fontWeight: "600",
53
+ margin: "0",
54
+ }}
55
+ >
56
+ Your trial ends in {daysRemaining} {dayText}
57
+ </Text>
58
+ </Section>
59
+
60
+ <Heading>Your Trial is Almost Over</Heading>
61
+ <Paragraph>
62
+ Hi {userName}, your free trial of Tracked ends on {trialEndDate}. To
63
+ keep your client data and continue using the coaching dashboard,
64
+ subscribe before your trial expires.
65
+ </Paragraph>
66
+
67
+ <FeatureBox title="What happens when your trial ends:">
68
+ <SmallText style={{ marginBottom: "4px" }}>
69
+ • You'll lose access to the coaching dashboard
70
+ </SmallText>
71
+ <SmallText style={{ marginBottom: "4px" }}>
72
+ • Your client data will be safely preserved
73
+ </SmallText>
74
+ <SmallText style={{ marginBottom: "4px" }}>
75
+ • Clients will still have access to their workouts
76
+ </SmallText>
77
+ <SmallText>• You can reactivate at any time to regain access</SmallText>
78
+ </FeatureBox>
79
+
80
+ <Section
81
+ style={{
82
+ backgroundColor: colors.surface,
83
+ padding: "20px 24px",
84
+ borderRadius: "8px",
85
+ margin: "24px 0",
86
+ borderLeft: `4px solid ${colors.accent}`,
87
+ }}
88
+ >
89
+ <Text
90
+ style={{
91
+ color: colors.accent,
92
+ fontSize: "18px",
93
+ fontWeight: "bold" as const,
94
+ marginBottom: "8px",
95
+ }}
96
+ >
97
+ Don't lose access
98
+ </Text>
99
+ <Text
100
+ style={{
101
+ color: colors.textSecondary,
102
+ fontSize: "14px",
103
+ lineHeight: "20px",
104
+ margin: "0 0 16px 0",
105
+ }}
106
+ >
107
+ Subscribe now to keep managing your clients without interruption.
108
+ Pricing starts at just a few dollars per month based on your client
109
+ count.
110
+ </Text>
111
+ <PrimaryButton href={upgradeUrl}>Subscribe Now</PrimaryButton>
112
+ </Section>
113
+
114
+ <Paragraph>
115
+ Have questions about pricing or need more time? Reply to this email or
116
+ reach out on Discord. We're happy to help.
117
+ </Paragraph>
118
+
119
+ <DiscordButton />
120
+
121
+ <EmailFooter websiteUrl={websiteUrl} />
122
+ </EmailLayout>
123
+ );
124
+ };
125
+
126
+ export default TrialEndingSoonEmail;