From 34b914f509262be2059dcddabfcb550b92acb884 Mon Sep 17 00:00:00 2001
From: miloschwartz
Date: Wed, 4 Feb 2026 15:38:02 -0800
Subject: [PATCH] add license email
---
.../EnterpriseEditionKeyGenerated.tsx | 118 ++++++++++++++++++
.../templates/components/CopyCodeBox.tsx | 14 ++-
2 files changed, 128 insertions(+), 4 deletions(-)
create mode 100644 server/emails/templates/EnterpriseEditionKeyGenerated.tsx
diff --git a/server/emails/templates/EnterpriseEditionKeyGenerated.tsx b/server/emails/templates/EnterpriseEditionKeyGenerated.tsx
new file mode 100644
index 00000000..44472c8a
--- /dev/null
+++ b/server/emails/templates/EnterpriseEditionKeyGenerated.tsx
@@ -0,0 +1,118 @@
+import React from "react";
+import { Body, Head, Html, Preview, Tailwind } from "@react-email/components";
+import { themeColors } from "./lib/theme";
+import {
+ EmailContainer,
+ EmailFooter,
+ EmailGreeting,
+ EmailHeading,
+ EmailInfoSection,
+ EmailLetterHead,
+ EmailSection,
+ EmailSignature,
+ EmailText
+} from "./components/Email";
+import CopyCodeBox from "./components/CopyCodeBox";
+import ButtonLink from "./components/ButtonLink";
+
+type EnterpriseEditionKeyGeneratedProps = {
+ keyValue: string;
+ personalUseOnly: boolean;
+ users: number;
+ sites: number;
+ modifySubscriptionLink?: string;
+};
+
+export const EnterpriseEditionKeyGenerated = ({
+ keyValue,
+ personalUseOnly,
+ users,
+ sites,
+ modifySubscriptionLink
+}: EnterpriseEditionKeyGeneratedProps) => {
+ const previewText = personalUseOnly
+ ? "Your Enterprise Edition key for personal use is ready"
+ : "Thank you for your purchase — your Enterprise Edition key is ready";
+
+ return (
+
+
+ {previewText}
+
+
+
+
+
+ Hi there,
+
+ {personalUseOnly ? (
+
+ Your Enterprise Edition license key has been
+ generated. Qualifying users can use the
+ Enterprise Edition for free for{" "}
+ personal use only.
+
+ ) : (
+ <>
+
+ Thank you for your purchase. Your Enterprise
+ Edition license key is ready. Below are the
+ terms of your license.
+
+
+ {modifySubscriptionLink && (
+
+
+ Modify subscription
+
+
+ )}
+ >
+ )}
+
+
+ Your license key:
+
+
+
+
+ If you need to purchase additional license keys or
+ modify your existing license, please reach out to
+ our support team at{" "}
+
+ support@pangolin.net
+
+ .
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default EnterpriseEditionKeyGenerated;
diff --git a/server/emails/templates/components/CopyCodeBox.tsx b/server/emails/templates/components/CopyCodeBox.tsx
index 3e4d1d08..497fe7a9 100644
--- a/server/emails/templates/components/CopyCodeBox.tsx
+++ b/server/emails/templates/components/CopyCodeBox.tsx
@@ -1,6 +1,14 @@
import React from "react";
-export default function CopyCodeBox({ text }: { text: string }) {
+const DEFAULT_HINT = "Copy and paste this code when prompted";
+
+export default function CopyCodeBox({
+ text,
+ hint
+}: {
+ text: string;
+ hint?: string;
+}) {
return (
@@ -8,9 +16,7 @@ export default function CopyCodeBox({ text }: { text: string }) {
{text}
-
- Copy and paste this code when prompted
-
+
{hint ?? DEFAULT_HINT}
);
}