Your current subscription will remain active until the end of your
- billing period, and the new subscription will take effect on{" "}
- {props.newSubscriptionDate}.
-
-
- If you have any questions, please don't hesitate to contact our
- support team.
-
- Best regards - Team Nano
-
+ billing period. The new subscription will take effect on{" "}
+ {props.newSubscriptionDate}.
+
+
+
+ {/* Support */}
+
+
+ Have questions about your subscription change? Our{" "}
+
+ support team
+ {" "}
+ is here to help you.
+
+
+
+ {/* Footer */}
+
+
+ Thank you for being part of our community! 🙏
+
+
+ Best regards,
+ The NanoAPI Team
+
+
>,
);
};
diff --git a/packages/core/src/email/templates/InvitationEmail.tsx b/packages/core/src/email/templates/InvitationEmail.tsx
index 4f11aa8..78dd26d 100644
--- a/packages/core/src/email/templates/InvitationEmail.tsx
+++ b/packages/core/src/email/templates/InvitationEmail.tsx
@@ -1,52 +1,98 @@
-import { Button, Heading, Section, Text } from "@react-email/components";
import { baseTemplate } from "./base.tsx";
-import { headingStyle } from "./styles.tsx";
+import { sharedStyles } from "./sharedStyles.ts";
const InvitationEmail = (props: {
workspaceName: string;
invitationLink: string;
}) => {
const previewText = `Invitation to join "${props.workspaceName}" on NanoAPI`;
+
return baseTemplate(
previewText,
<>
-
-
- You have been invited to join "{props.workspaceName}"
-
-
- We're excited to have you as part of our team. To get started, simply
- click the link below to accept your invitation and set up your
- account:
-
-
-
+
+ 👥
+
+
You're Invited!
+
+ Join "{props.workspaceName}" on NanoAPI
+
+
+
+ {/* Invitation Details */}
+
+
+ We're excited to have you as part of our team! To get started, simply
+ click the button below to accept your invitation and set up your
+ account.
+
This invitation link is unique to you and will expire after a period
- for security reasons. If you have any questions or need assistance,
- please don't hesitate to reach out to your team administrator.
-
- We look forward to collaborating with you!
- Best regards - Team Nano
-
+ for security reasons. If you have any questions, please contact your
+ team administrator.
+
+
+
+ {/* Footer */}
+
+
+ We look forward to collaborating with you! 🚀
+
+
+ Best regards,
+ The NanoAPI Team
+
+
>,
);
};
diff --git a/packages/core/src/email/templates/OtpEmail.tsx b/packages/core/src/email/templates/OtpEmail.tsx
index ec97552..3fd9a6c 100644
--- a/packages/core/src/email/templates/OtpEmail.tsx
+++ b/packages/core/src/email/templates/OtpEmail.tsx
@@ -1,55 +1,105 @@
-import { Heading, Section, Text } from "@react-email/components";
import { baseTemplate } from "./base.tsx";
-import { headingStyle } from "./styles.tsx";
+import { sharedStyles } from "./sharedStyles.ts";
const OtpEmail = ({ otp }: {
otp: string;
}) => {
const previewText = `Your one-time password (OTP) code is ${otp}`;
+
return baseTemplate(
previewText,
-
-
- One-Time Password (OTP) Code
-
- Hi there,
-
-
- You've requested a one-time password to access your account. Please use
- the code below to complete your authentication:
-
-
-
+ {/* Header */}
+
+
+ 🔐
+
+
One-Time Password
+
+ Use the code below to complete your authentication
+
+
+
+ {/* OTP Code */}
+
- {otp}
-
+
+ Your One-Time Password
+
+
+ {otp}
+
+
-
- This code is valid for a limited time and can only be used once. For
- your security, please do not share this code with anyone.
-
+ {/* Security Notice */}
+
+
+ Security Notice
+
+
+ This code is valid for a limited time and can only be used once. For
+ your security, please do not share this code with anyone.
+
+
-
- If you didn't request this code, please ignore this email or contact our
- support team if you have concerns about your account security.
-
+ {/* Support */}
+
+
+ Didn't request this code? Please ignore this email or contact our{" "}
+
+ support team
+ {" "}
+ if you have concerns about your account security.
+
+
- Best regards - Team Nano
- ,
+ {/* Footer */}
+
+
+ Stay secure,
+ The NanoAPI Team
+
+
+ >,
);
};
diff --git a/packages/core/src/email/templates/UpgradeEmail.tsx b/packages/core/src/email/templates/UpgradeEmail.tsx
index 22fc57a..40eac49 100644
--- a/packages/core/src/email/templates/UpgradeEmail.tsx
+++ b/packages/core/src/email/templates/UpgradeEmail.tsx
@@ -1,6 +1,5 @@
-import { Heading, Section, Text } from "@react-email/components";
import { baseTemplate } from "./base.tsx";
-import { headingStyle } from "./styles.tsx";
+import { sharedStyles } from "./sharedStyles.ts";
import type {
StripeBillingCycle,
StripeProduct,
@@ -19,43 +18,127 @@ const UpgradeEmail = (props: {
};
}) => {
const previewText = "Confirmation of your subscription upgrade | NanoAPI";
+
return baseTemplate(
previewText,
<>
-
-
- Congratulations on your upgrade! 🎉
-
-
- Your subscription for workspace {props.workspaceName}{" "}
- has been successfully upgraded!
-
-
-
-
- ❌ Previous subscription: {props.oldSubscription.product}{" "}
- ({props.oldSubscription.billingCycle ?? "Custom billing cycle"})
-
-
+
+ 🚀
+
+
Upgrade Successful! 🎉
+
+ Your subscription for "{props.workspaceName}"{" "}
+ has been upgraded
+
This change is effective immediately, and you now have access to all
the features included in your new subscription.
-
-
- If you have any questions about your upgraded subscription, please
- don't hesitate to contact our support team.
-
- Best regards - Team Nano
-
+
+
+
+ {/* Support */}
+
+
+ Have questions about your upgraded subscription? Contact our{" "}
+
+ support team
+ {" "}
+ - we're here to help!
+
+
+
+ {/* Footer */}
+
+
+ Thank you for choosing NanoAPI! 🎉
+
+
+ Best regards,
+ The NanoAPI Team
+
+
>,
);
};
diff --git a/packages/core/src/email/templates/WelcomeEmail.tsx b/packages/core/src/email/templates/WelcomeEmail.tsx
index 8487d0c..a3ec76f 100644
--- a/packages/core/src/email/templates/WelcomeEmail.tsx
+++ b/packages/core/src/email/templates/WelcomeEmail.tsx
@@ -1,117 +1,112 @@
-import {
- Button,
- Column,
- Heading,
- Link,
- Row,
- Section,
- Text,
-} from "@react-email/components";
import { baseTemplate } from "./base.tsx";
-import { headingStyle } from "./styles.tsx";
+import { sharedStyles } from "./sharedStyles.ts";
const WelcomeEmail = () => {
const previewText = "Welcome to NanoAPI - Your account has been created!";
+
return baseTemplate(
previewText,
<>
-
-
- Welcome to our platform! We're thrilled to have you join our
- community.
-
-
- Your account has been successfully created and you're all set to get
- started. Here's what you can do next:
-
-
- {[
- "Explore the dashboard and familiarize yourself with the interface",
- "Set up your profile and preferences",
- "Create your first workspace or join an existing one",
- "Invite team members to collaborate with you",
- ].map((item, index) => (
-
-
{item}
+ {/* Header */}
+
+
+ 🎉
+
+
Welcome to NanoAPI!
+
+ Your account has been successfully created and you're ready to start
+ building amazing software architecture.
+
+
+
+ {/* Getting Started */}
+
+
Getting Started
+
+
+
+ Read our documentation to learn the basics
- ))}
-
-
- We also recommend checking out our{" "}
-
- documentation
- {" "}
- as well as{" "}
-
- downloading the CLI to get started
- .
-
-
- If you have any questions or need assistance getting started, our
- support team is here to help. Don't hesitate to reach out!
-
-
- We're excited to see what you'll accomplish with our platform.
-
-
-
-
-
-
-
-
+ Download the CLI for powerful local development:{" "}
+
-
-
-
-
-
- Best regards - Team Nano
-
+ github.com/nanoapi-io/napi
+
+
+
+ Create your first workspace or join an existing one
+
+
+ Invite team members to collaborate with you
+
+
+
+
+
+ {/* Call to Action */}
+
+
Ready to get started?
+
+ Jump into the app or explore our documentation to begin your journey.
+