Here's what wrote Now that the review period is over, we’ve posted ’s review to your Airbnb profile. While it’s too late to write a review of your own, you can send your feedback to using your Airbnb message thread. Read undefined's review  |
![]() |
Here's what wrote Now that the review period is over, we’ve posted ’s review to your Airbnb profile. While it’s too late to write a review of your own, you can send your feedback to using your Airbnb message thread.
+
@@ -453,7 +453,7 @@ exports[`render > renders the airbnb demo template 2`] = `
"
`;
-exports[`render > renders the plaid demo template 1`] = `" Verify Your Identity Enter the following code to finish linking Venmo.Not expecting this email? Contact login@plaid.com if you did not request this code. |
Securely powered by Plaid. "`;
+exports[`render > renders the plaid demo template 1`] = `" Verify Your Identity Enter the following code to finish linking Venmo.Not expecting this email? Contact login@plaid.com if you did not request this code. |
Securely powered by Plaid. "`;
exports[`render > renders the plaid demo template 2`] = `
"
@@ -466,7 +466,7 @@ exports[`render > renders the plaid demo template 2`] = `
-
+
@@ -502,7 +502,7 @@ exports[`render > renders the plaid demo template 2`] = `
`;
exports[`render > renders the vercel demo template 1`] = `
-"Join on VercelHello, () has invited you to the team on Vercel. Join on VercelHello, () has invited you to the team on Vercel.
+
+
@@ -787,6 +787,6 @@ exports[`render > renders the vercel demo template 2`] = `
"
`;
-exports[`render > renders with minifying 1`] = `" Verify Your Identity Enter the following code to finish linking Venmo.Not expecting this email? Contact login@plaid.com if you did not request this code. |
Securely powered by Plaid."`;
+exports[`render > renders with minifying 1`] = `"  Verify Your Identity Enter the following code to finish linking Venmo.Not expecting this email? Contact login@plaid.com if you did not request this code. |
Securely powered by Plaid."`;
-exports[`render > renders without minifying 1`] = `"  Verify Your Identity Enter the following code to finish linking Venmo.Not expecting this email? Contact login@plaid.com if you did not request this code. |
Securely powered by Plaid. "`;
+exports[`render > renders without minifying 1`] = `" Verify Your Identity Enter the following code to finish linking Venmo.Not expecting this email? Contact login@plaid.com if you did not request this code. |
Securely powered by Plaid. "`;
diff --git a/packages/jsx-email/test/render/compile-path.test.ts b/packages/jsx-email/test/render/compile-path.test.ts
new file mode 100644
index 00000000..2f4c1c9f
--- /dev/null
+++ b/packages/jsx-email/test/render/compile-path.test.ts
@@ -0,0 +1,38 @@
+import { mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises';
+import { join } from 'node:path';
+import { pathToFileURL } from 'node:url';
+
+import { isWindows } from 'std-env';
+
+import { compile } from '../../src/renderer/compile.js';
+
+describe('compile', () => {
+ it('returns an importable path for nested entrypoints', async () => {
+ const tmpRoot = await mkdtemp(join(process.cwd(), '.tmp-jsx-email-compile-'));
+
+ try {
+ const entryDir = join(tmpRoot, 'templates', 'nested');
+ await mkdir(entryDir, { recursive: true });
+
+ const entryPoint = join(entryDir, 'template.tsx');
+ await writeFile(
+ entryPoint,
+ `export const Template = ({ name }: { name: string }) => Hello {name};\n`,
+ 'utf8'
+ );
+
+ const outDir = join(tmpRoot, 'out');
+ const results = await compile({ files: [entryPoint], outDir });
+ const result = results[0];
+
+ if (!result) throw new Error('Expected compile to return at least one output');
+
+ const compiledImportPath = isWindows ? pathToFileURL(result.path).toString() : result.path;
+
+ const mod = await import(compiledImportPath);
+ expect(typeof mod.Template).toBe('function');
+ } finally {
+ await rm(tmpRoot, { recursive: true, force: true });
+ }
+ });
+});
diff --git a/packages/jsx-email/test/tailwind/.snapshots/tailwind-head.test.tsx.snap b/packages/jsx-email/test/tailwind/.snapshots/tailwind-head.test.tsx.snap
index c4df61e4..64d5d544 100644
--- a/packages/jsx-email/test/tailwind/.snapshots/tailwind-head.test.tsx.snap
+++ b/packages/jsx-email/test/tailwind/.snapshots/tailwind-head.test.tsx.snap
@@ -1,6 +1,6 @@
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
-exports[`Tailwind + Head > should not clobber content 1`] = `"test title"`;
+exports[`Tailwind + Head > should not clobber content 1`] = `"test title"`;
exports[`Tailwind + Head > should not clobber content 2`] = `
"
@@ -14,10 +14,10 @@ exports[`Tailwind + Head > should not clobber content 2`] = `
- test title
+ test title
+
diff --git a/packages/jsx-email/test/tailwind/.snapshots/tailwind.test.tsx.snap b/packages/jsx-email/test/tailwind/.snapshots/tailwind.test.tsx.snap
index ddaab049..234e3e4c 100644
--- a/packages/jsx-email/test/tailwind/.snapshots/tailwind.test.tsx.snap
+++ b/packages/jsx-email/test/tailwind/.snapshots/tailwind.test.tsx.snap
@@ -1,7 +1,7 @@
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
exports[` component > should preserve mso styles 1`] = `
-" |
|
|
|
|
|
|
|
|
|
|
|