51 lines
2.0 KiB
TypeScript
51 lines
2.0 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 { ReferralStatsEmail } from '../../../../emails/referral-stats';
|
|
import { ReferralSignupEmail } from '../../../../emails/referral-signup';
|
|
import { WaitlistEmail } from '../../../../emails/waitlist';
|
|
import { PromotionalEmail } from '../../../../emails/promotional';
|
|
import { KycVerificationEmail } from '../../../../emails/kyc-verification';
|
|
import { AccountBannedEmail } from '../../../../emails/account-banned';
|
|
import { TransactionReviewEmail } from '../../../../emails/transaction-review';
|
|
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,
|
|
'referral-stats': ReferralStatsEmail,
|
|
'referral-signup': ReferralSignupEmail,
|
|
waitlist: WaitlistEmail,
|
|
promotional: PromotionalEmail,
|
|
'kyc-verification': KycVerificationEmail,
|
|
'account-banned': AccountBannedEmail,
|
|
'transaction-review': TransactionReviewEmail,
|
|
};
|
|
|
|
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',
|
|
},
|
|
});
|
|
}
|