diff --git a/index.ts b/index.ts index 4fbded9..313a07a 100644 --- a/index.ts +++ b/index.ts @@ -4,7 +4,7 @@ import { Handler, } from "aws-lambda"; import fetch from "node-fetch"; -import { EmailTemplate } from "./src/emails/test"; +import { renderEmail } from "renderEmail"; // Import the function from the .tsx file const RESEND_API_KEY = process.env["RESEND_API_KEY"]; @@ -13,6 +13,11 @@ interface ResendResponse { message?: string; } +const html = renderEmail( + "Kaarthik", // Provide title as a string + "/" // Provide link as a string +); + export const handler: Handler = async ( event: APIGatewayProxyEvent ): Promise => { @@ -53,8 +58,7 @@ export const handler: Handler = async ( from: "onboarding@resend.dev", to: ["kaarthikandavar@gmail.com"], subject: "hello world", - react: EmailTemplate({ firstName: "John" }), - html: "

Hello world

", + html: html, text: "Hello world", }), }); diff --git a/package-lock.json b/package-lock.json index f23777d..4dd76bb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "license": "ISC", "dependencies": { "@react-email/components": "^0.0.7", + "@react-email/render": "0.0.7", "aws-lambda": "^1.0.7", "node-fetch": "^3.3.1", "react-email": "^1.9.4", @@ -840,20 +841,6 @@ "node": ">=16.0.0" } }, - "node_modules/@react-email/components/node_modules/@react-email/render": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@react-email/render/-/render-0.0.7.tgz", - "integrity": "sha512-hMMhxk6TpOcDC5qnKzXPVJoVGEwfm+U5bGOPH+MyTTlx0F02RLQygcATBKsbP7aI/mvkmBAZoFbgPIHop7ovug==", - "dependencies": { - "html-to-text": "9.0.3", - "pretty": "2.0.0", - "react": "18.2.0", - "react-dom": "18.2.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, "node_modules/@react-email/container": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/@react-email/container/-/container-0.0.8.tgz", @@ -949,9 +936,9 @@ } }, "node_modules/@react-email/render": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@react-email/render/-/render-0.0.6.tgz", - "integrity": "sha512-6zs7WZbd37TcPT1OmMPH/kcBpv0QSi+k3om7LyDnbdIcrbwOO/OstVwUaa/6zgvDvnq9Y2wOosbru7j5kUrW9A==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@react-email/render/-/render-0.0.7.tgz", + "integrity": "sha512-hMMhxk6TpOcDC5qnKzXPVJoVGEwfm+U5bGOPH+MyTTlx0F02RLQygcATBKsbP7aI/mvkmBAZoFbgPIHop7ovug==", "dependencies": { "html-to-text": "9.0.3", "pretty": "2.0.0", @@ -3373,6 +3360,20 @@ "node": ">=16.0.0" } }, + "node_modules/react-email/node_modules/@react-email/render": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@react-email/render/-/render-0.0.6.tgz", + "integrity": "sha512-6zs7WZbd37TcPT1OmMPH/kcBpv0QSi+k3om7LyDnbdIcrbwOO/OstVwUaa/6zgvDvnq9Y2wOosbru7j5kUrW9A==", + "dependencies": { + "html-to-text": "9.0.3", + "pretty": "2.0.0", + "react": "18.2.0", + "react-dom": "18.2.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/react-property": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/react-property/-/react-property-2.0.0.tgz", @@ -3472,20 +3473,6 @@ "type-fest": "3.13.0" } }, - "node_modules/resend/node_modules/@react-email/render": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@react-email/render/-/render-0.0.7.tgz", - "integrity": "sha512-hMMhxk6TpOcDC5qnKzXPVJoVGEwfm+U5bGOPH+MyTTlx0F02RLQygcATBKsbP7aI/mvkmBAZoFbgPIHop7ovug==", - "dependencies": { - "html-to-text": "9.0.3", - "pretty": "2.0.0", - "react": "18.2.0", - "react-dom": "18.2.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, "node_modules/resend/node_modules/type-fest": { "version": "3.13.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.0.tgz", diff --git a/package.json b/package.json index 4ca9303..8fdf6d5 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ }, "dependencies": { "@react-email/components": "^0.0.7", + "@react-email/render": "0.0.7", "aws-lambda": "^1.0.7", "node-fetch": "^3.3.1", "react-email": "^1.9.4", diff --git a/renderEmail.tsx b/renderEmail.tsx new file mode 100644 index 0000000..9943797 --- /dev/null +++ b/renderEmail.tsx @@ -0,0 +1,7 @@ +import { render } from "@react-email/render"; +import React from "react"; +import TestTemplate from "./src/emails/TestTemplate"; + +export function renderEmail(title: string, link: string) { + return render(); +} diff --git a/src/emails/TestTemplate.tsx b/src/emails/TestTemplate.tsx new file mode 100644 index 0000000..63d2036 --- /dev/null +++ b/src/emails/TestTemplate.tsx @@ -0,0 +1,22 @@ +// src/emails/testTemplate.tsx +import { Button } from '@react-email/button'; +import { Hr } from '@react-email/hr'; +import { Html } from '@react-email/html'; +import { Text } from '@react-email/text'; +import * as React from 'react'; + +type TestTemplateProps = { + /* Define the shape of the props here. For example: */ + title: string; + link: string; +}; + +export default function TestTemplate({ title, link }: TestTemplateProps) { + return ( + + {title} +
+ + + ); +} diff --git a/src/emails/emailComponentPicker.tsx b/src/emails/emailComponentPicker.tsx deleted file mode 100644 index 52ba264..0000000 --- a/src/emails/emailComponentPicker.tsx +++ /dev/null @@ -1,17 +0,0 @@ -// import other email components as needed - -import React from "react"; -import { EmailTemplate } from "./test"; - -// A function that takes the name of an email type and returns the corresponding React component -export const emailComponentPicker = (emailType: string) => { - switch (emailType) { - case "invite": - return (props: any) => ; - case "confirmation": - return EmailTemplate; - // other cases as needed... - default: - throw new Error("Invalid email type"); - } -}; diff --git a/src/emails/test.tsx b/src/emails/test.tsx deleted file mode 100644 index 4f7be99..0000000 --- a/src/emails/test.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import * as React from 'react'; - -interface EmailTemplateProps { - firstName: string; -} - -export const EmailTemplate: React.FC> = ({ - firstName, -}) => ( -
-

Welcome, {firstName}!

-
-);