@travetto/email-inky
Version:
Email Inky templating module
29 lines (25 loc) • 1.02 kB
text/typescript
import path from 'node:path';
import { EmailTemplateModule, EmailTemplateLocation, EmailResourceLoader } from '@travetto/email';
import { PackageUtil } from '@travetto/manifest';
import { JSXElement } from '@travetto/email-inky/jsx-runtime';
import { InkyRenderer } from './render/renderer';
import { Html } from './render/html';
import { Markdown } from './render/markdown';
import { Subject } from './render/subject';
export async function prepare(node: JSXElement, loc: EmailTemplateLocation): Promise<EmailTemplateModule> {
const ctx = {
...loc,
loader: new EmailResourceLoader(loc.module, [path.dirname(PackageUtil.resolveImport('foundation-emails/scss/_global.scss'))])
};
return {
loader: ctx.loader,
globalStyles: `
@import 'email/inky.variables';
@import '_global';
@import 'foundation-emails';
`,
html: () => InkyRenderer.render(node, Html, ctx),
text: () => InkyRenderer.render(node, Markdown, ctx),
subject: () => InkyRenderer.render(node, Subject, ctx),
};
}