Amba-Emails/app/api/email/[template]/route.ts
2025-12-14 22:50:58 +03:00

39 lines
1.3 KiB
TypeScript

import React from 'react';
import { render } from '@react-email/render';
import { WelcomeEmail } from '../../../../emails/welcome';
import { TransactionCompleteEmail } from '../../../../emails/transaction-complete';
import { EventTicketEmail } from '../../../../emails/event-ticket';
import { PaymentRequestEmail } from '../../../../emails/payment-request';
import { ReferralSuccessEmail } from '../../../../emails/referral-success';
import { WaitlistEmail } from '../../../../emails/waitlist';
import { NextResponse } from 'next/server';
const templates: Record<string, React.ComponentType<any>> = {
welcome: WelcomeEmail,
'transaction-complete': TransactionCompleteEmail,
'event-ticket': EventTicketEmail,
'payment-request': PaymentRequestEmail,
'referral-success': ReferralSuccessEmail,
waitlist: WaitlistEmail,
};
export async function GET(
request: Request,
context: { params: Promise<{ template: string }> }
) {
const { template } = await context.params;
const TemplateComponent = templates[template];
if (!TemplateComponent) {
return NextResponse.json({ error: 'Template not found' }, { status: 404 });
}
const html = await render(React.createElement(TemplateComponent));
return new NextResponse(html, {
headers: {
'Content-Type': 'text/html',
},
});
}