@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.
- package/dist/components/content.js +1 -1
- package/dist/components/content.js.map +1 -1
- package/dist/components/index.d.ts +5 -5
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +5 -5
- package/dist/components/index.js.map +1 -1
- package/dist/components/interactive.js +1 -1
- package/dist/components/interactive.js.map +1 -1
- package/dist/components/layout.js +2 -2
- package/dist/components/layout.js.map +1 -1
- package/dist/components/typography.js +1 -1
- package/dist/components/typography.js.map +1 -1
- package/dist/emails/anniversary.js +1 -1
- package/dist/emails/anniversary.js.map +1 -1
- package/dist/emails/app-review-request.js +1 -1
- package/dist/emails/app-review-request.js.map +1 -1
- package/dist/emails/bodyweight-goal-reached.js +1 -1
- package/dist/emails/bodyweight-goal-reached.js.map +1 -1
- package/dist/emails/client-inactive-alert.js +1 -1
- package/dist/emails/client-inactive-alert.js.map +1 -1
- package/dist/emails/client-onboarded.js +1 -1
- package/dist/emails/client-onboarded.js.map +1 -1
- package/dist/emails/coach-invite.js +1 -1
- package/dist/emails/coach-invite.js.map +1 -1
- package/dist/emails/coach-removed-client.js +1 -1
- package/dist/emails/coach-removed-client.js.map +1 -1
- package/dist/emails/direct-message.js +1 -1
- package/dist/emails/direct-message.js.map +1 -1
- package/dist/emails/feature-discovery.js +1 -1
- package/dist/emails/feature-discovery.js.map +1 -1
- package/dist/emails/first-workout-assigned.js +1 -1
- package/dist/emails/first-workout-assigned.js.map +1 -1
- package/dist/emails/first-workout-completed.js +1 -1
- package/dist/emails/first-workout-completed.js.map +1 -1
- package/dist/emails/inactive-reengagement.js +1 -1
- package/dist/emails/inactive-reengagement.js.map +1 -1
- package/dist/emails/index.d.ts +24 -24
- package/dist/emails/index.d.ts.map +1 -1
- package/dist/emails/index.js +24 -24
- package/dist/emails/index.js.map +1 -1
- package/dist/emails/monthly-report.js +1 -1
- package/dist/emails/monthly-report.js.map +1 -1
- package/dist/emails/new-follower.js +1 -1
- package/dist/emails/new-follower.js.map +1 -1
- package/dist/emails/nps-survey.js +1 -1
- package/dist/emails/nps-survey.js.map +1 -1
- package/dist/emails/subscription-canceled.js +1 -1
- package/dist/emails/subscription-canceled.js.map +1 -1
- package/dist/emails/support-email.js +1 -1
- package/dist/emails/support-email.js.map +1 -1
- package/dist/emails/team-invite.js +1 -1
- package/dist/emails/team-invite.js.map +1 -1
- package/dist/emails/team-member-removed-email.js +1 -1
- package/dist/emails/team-member-removed-email.js.map +1 -1
- package/dist/emails/tracked-magic-link-activate.js +1 -1
- package/dist/emails/tracked-magic-link-activate.js.map +1 -1
- package/dist/emails/tracked-magic-link.js +1 -1
- package/dist/emails/tracked-magic-link.js.map +1 -1
- package/dist/emails/trial-converted.d.ts +8 -0
- package/dist/emails/trial-converted.d.ts.map +1 -0
- package/dist/emails/trial-converted.js +7 -0
- package/dist/emails/trial-converted.js.map +1 -0
- package/dist/emails/trial-ending-soon.d.ts +10 -0
- package/dist/emails/trial-ending-soon.d.ts.map +1 -0
- package/dist/emails/trial-ending-soon.js +36 -0
- package/dist/emails/trial-ending-soon.js.map +1 -0
- package/dist/emails/trial-expired.d.ts +8 -0
- package/dist/emails/trial-expired.d.ts.map +1 -0
- package/dist/emails/trial-expired.js +24 -0
- package/dist/emails/trial-expired.js.map +1 -0
- package/dist/emails/trial-midpoint.d.ts +11 -0
- package/dist/emails/trial-midpoint.d.ts.map +1 -0
- package/dist/emails/trial-midpoint.js +37 -0
- package/dist/emails/trial-midpoint.js.map +1 -0
- package/dist/emails/trial-started.d.ts +10 -0
- package/dist/emails/trial-started.d.ts.map +1 -0
- package/dist/emails/trial-started.js +7 -0
- package/dist/emails/trial-started.js.map +1 -0
- package/dist/emails/week-one-checkin.js +1 -1
- package/dist/emails/week-one-checkin.js.map +1 -1
- package/dist/emails/weekly-progress-digest.js +1 -1
- package/dist/emails/weekly-progress-digest.js.map +1 -1
- package/dist/emails/welcome.d.ts.map +1 -1
- package/dist/emails/welcome.js +1 -1
- package/dist/emails/welcome.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/index.d.ts +2 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -2
- package/dist/utils/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/content.tsx +1 -1
- package/src/components/index.ts +5 -5
- package/src/components/interactive.tsx +1 -1
- package/src/components/layout.tsx +2 -2
- package/src/components/typography.tsx +1 -1
- package/src/emails/anniversary.tsx +1 -1
- package/src/emails/app-review-request.tsx +1 -1
- package/src/emails/bodyweight-goal-reached.tsx +1 -1
- package/src/emails/client-inactive-alert.tsx +1 -1
- package/src/emails/client-onboarded.tsx +1 -1
- package/src/emails/coach-invite.tsx +1 -1
- package/src/emails/coach-removed-client.tsx +1 -1
- package/src/emails/direct-message.tsx +1 -1
- package/src/emails/feature-discovery.tsx +1 -1
- package/src/emails/first-workout-assigned.tsx +1 -1
- package/src/emails/first-workout-completed.tsx +1 -1
- package/src/emails/inactive-reengagement.tsx +1 -1
- package/src/emails/index.tsx +24 -24
- package/src/emails/monthly-report.tsx +1 -1
- package/src/emails/new-follower.tsx +1 -1
- package/src/emails/nps-survey.tsx +1 -1
- package/src/emails/subscription-canceled.tsx +1 -1
- package/src/emails/support-email.tsx +1 -1
- package/src/emails/team-invite.tsx +1 -1
- package/src/emails/team-member-removed-email.tsx +1 -1
- package/src/emails/tracked-magic-link-activate.tsx +1 -1
- package/src/emails/tracked-magic-link.tsx +1 -1
- package/src/emails/trial-converted.tsx +68 -0
- package/src/emails/trial-ending-soon.tsx +126 -0
- package/src/emails/trial-expired.tsx +96 -0
- package/src/emails/trial-midpoint.tsx +150 -0
- package/src/emails/trial-started.tsx +75 -0
- package/src/emails/week-one-checkin.tsx +1 -1
- package/src/emails/weekly-progress-digest.tsx +1 -1
- package/src/emails/welcome.tsx +1 -2
- package/src/index.ts +10 -0
- 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"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/utils/index.js
CHANGED
|
@@ -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
|
package/dist/utils/index.js.map
CHANGED
|
@@ -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,
|
|
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
|
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
|
package/src/components/index.ts
CHANGED
|
@@ -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
|
package/src/emails/index.tsx
CHANGED
|
@@ -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";
|
|
@@ -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;
|