@react-email/preview-server 4.2.5 → 4.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +7 -7
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/app/_not-found/page.js +1 -1
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +1 -1
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/preview/[...slug]/page.js +166 -143
- package/.next/server/app/preview/[...slug]/page.js.nft.json +1 -1
- package/.next/server/app/preview/[...slug]/page_client-reference-manifest.js +1 -1
- package/.next/server/chunks/12.js +1 -1
- package/.next/server/chunks/{37.js → 157.js} +5 -5
- package/.next/server/chunks/565.js +1 -0
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/{713-505889a7a160009b.js → 713-5291130b4d871493.js} +1 -1
- package/.next/static/chunks/824-ee56559d9c878713.js +1 -0
- package/.next/static/chunks/app/{layout-c150aaa970ce097a.js → layout-388382080183ddd8.js} +1 -1
- package/.next/static/chunks/app/{page-410b4634696dec1b.js → page-0f5269be22bf1b39.js} +1 -1
- package/.next/static/chunks/app/preview/[...slug]/page-10339d2e14bc15dc.js +1 -0
- package/.next/trace +28 -28
- package/CHANGELOG.md +12 -0
- package/package.json +3 -3
- package/src/actions/render-email-by-path.tsx +17 -9
- package/src/app/preview/[...slug]/page.tsx +2 -2
- package/src/app/preview/[...slug]/preview.tsx +1 -1
- package/src/components/toolbar/checking-results.tsx +3 -3
- package/src/components/toolbar.tsx +6 -6
- package/src/utils/__snapshots__/get-email-component.spec.ts.snap +151 -128
- package/src/utils/constants.ts +3 -1
- package/.next/server/chunks/894.js +0 -1
- package/.next/static/chunks/251-988548d3856d975a.js +0 -1
- package/.next/static/chunks/app/preview/[...slug]/page-7ecc2002daee7da3.js +0 -1
- /package/.next/static/{Nnvq__KH7K-JssDF-_qWF → dr3qqzvlj3qJTPOuUIRnm}/_buildManifest.js +0 -0
- /package/.next/static/{Nnvq__KH7K-JssDF-_qWF → dr3qqzvlj3qJTPOuUIRnm}/_ssgManifest.js +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @react-email/preview-server
|
|
2
2
|
|
|
3
|
+
## 4.2.7
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 6997a9e: fix broken file tree animation on built preview server
|
|
8
|
+
|
|
9
|
+
## 4.2.6
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- d3cc64d: use unformmated markup to send emails, and to render into the iframe
|
|
14
|
+
|
|
3
15
|
## 4.2.5
|
|
4
16
|
|
|
5
17
|
## 4.2.4
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-email/preview-server",
|
|
3
|
-
"version": "4.2.
|
|
3
|
+
"version": "4.2.7",
|
|
4
4
|
"description": "A live preview of your emails right in your browser.",
|
|
5
5
|
"main": "./index.mjs",
|
|
6
6
|
"dependencies": {
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"chalk": "4.1.2",
|
|
26
26
|
"clsx": "2.1.1",
|
|
27
27
|
"esbuild": "0.25.0",
|
|
28
|
-
"framer-motion": "12.
|
|
28
|
+
"framer-motion": "12.23.12",
|
|
29
29
|
"json5": "2.2.3",
|
|
30
30
|
"log-symbols": "4.1.0",
|
|
31
31
|
"module-punycode": "npm:punycode@2.3.1",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"postcss": "8.5.3",
|
|
62
62
|
"tailwindcss": "3.4.0",
|
|
63
63
|
"typescript": "5.8.3",
|
|
64
|
-
"@react-email/components": "0.
|
|
64
|
+
"@react-email/components": "0.4.0"
|
|
65
65
|
},
|
|
66
66
|
"license": "MIT",
|
|
67
67
|
"repository": {
|
|
@@ -17,6 +17,7 @@ import { registerSpinnerAutostopping } from '../utils/register-spinner-autostopp
|
|
|
17
17
|
import type { ErrorObject } from '../utils/types/error-object';
|
|
18
18
|
|
|
19
19
|
export interface RenderedEmailMetadata {
|
|
20
|
+
prettyMarkup: string;
|
|
20
21
|
markup: string;
|
|
21
22
|
/**
|
|
22
23
|
* HTML markup with `data-source-file` and `data-source-line` attributes pointing to the original
|
|
@@ -85,15 +86,21 @@ export const renderEmailByPath = async (
|
|
|
85
86
|
const EmailComponent = Email as React.FC;
|
|
86
87
|
try {
|
|
87
88
|
const element = createElement(EmailComponent, previewProps);
|
|
88
|
-
const markupWithReferences
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
89
|
+
const [markupWithReferences, prettyMarkup, markup, plainText] =
|
|
90
|
+
await Promise.all([
|
|
91
|
+
renderWithReferences(element, {
|
|
92
|
+
pretty: true,
|
|
93
|
+
}),
|
|
94
|
+
render(element, {
|
|
95
|
+
pretty: true,
|
|
96
|
+
}),
|
|
97
|
+
render(element, {
|
|
98
|
+
pretty: false,
|
|
99
|
+
}),
|
|
100
|
+
render(element, {
|
|
101
|
+
plainText: true,
|
|
102
|
+
}),
|
|
103
|
+
]);
|
|
97
104
|
|
|
98
105
|
const reactMarkup = await fs.promises.readFile(emailPath, 'utf-8');
|
|
99
106
|
|
|
@@ -112,6 +119,7 @@ export const renderEmailByPath = async (
|
|
|
112
119
|
});
|
|
113
120
|
|
|
114
121
|
const renderingResult: RenderedEmailMetadata = {
|
|
122
|
+
prettyMarkup,
|
|
115
123
|
// This ensures that no null byte character ends up in the rendered
|
|
116
124
|
// markup making users suspect of any issues. These null byte characters
|
|
117
125
|
// only seem to happen with React 18, as it has no similar incident with React 19.
|
|
@@ -71,7 +71,7 @@ This is most likely not an issue with the preview server. Maybe there was a typo
|
|
|
71
71
|
});
|
|
72
72
|
}
|
|
73
73
|
const lintingSources = getLintingSources(
|
|
74
|
-
serverEmailRenderingResult.
|
|
74
|
+
serverEmailRenderingResult.prettyMarkup,
|
|
75
75
|
'',
|
|
76
76
|
);
|
|
77
77
|
lintingRows = [];
|
|
@@ -103,7 +103,7 @@ This is most likely not an issue with the preview server. Maybe there was a typo
|
|
|
103
103
|
method: 'POST',
|
|
104
104
|
headers: { 'Content-Type': 'application/json' },
|
|
105
105
|
body: JSON.stringify({
|
|
106
|
-
html: serverEmailRenderingResult.
|
|
106
|
+
html: serverEmailRenderingResult.prettyMarkup,
|
|
107
107
|
plainText: serverEmailRenderingResult.plainText,
|
|
108
108
|
}),
|
|
109
109
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as Collapsible from '@radix-ui/react-collapsible';
|
|
2
|
-
import { AnimatePresence, motion } from 'framer-motion';
|
|
2
|
+
import { AnimatePresence, motion, type Variants } from 'framer-motion';
|
|
3
3
|
import type { ComponentProps } from 'react';
|
|
4
4
|
import { cn } from '../../utils';
|
|
5
5
|
|
|
@@ -80,7 +80,7 @@ type ResultProps = {
|
|
|
80
80
|
status: ResultStatus;
|
|
81
81
|
} & ComponentProps<typeof motion.li>;
|
|
82
82
|
|
|
83
|
-
const resultAnimation = {
|
|
83
|
+
const resultAnimation: Variants = {
|
|
84
84
|
hidden: { opacity: 0, y: 10 },
|
|
85
85
|
visible: {
|
|
86
86
|
opacity: 1,
|
|
@@ -110,7 +110,7 @@ export const Result = ({ children, status, ...rest }: ResultProps) => {
|
|
|
110
110
|
);
|
|
111
111
|
};
|
|
112
112
|
|
|
113
|
-
const titleStatusAnimation = {
|
|
113
|
+
const titleStatusAnimation: Variants = {
|
|
114
114
|
hidden: { opacity: 0, y: 5 },
|
|
115
115
|
visible: {
|
|
116
116
|
opacity: 1,
|
|
@@ -41,13 +41,13 @@ const ToolbarInner = ({
|
|
|
41
41
|
serverSpamCheckingResult,
|
|
42
42
|
serverCompatibilityResults,
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
prettyMarkup,
|
|
45
45
|
reactMarkup,
|
|
46
46
|
plainText,
|
|
47
47
|
emailPath,
|
|
48
48
|
emailSlug,
|
|
49
49
|
}: ToolbarProps & {
|
|
50
|
-
|
|
50
|
+
prettyMarkup: string;
|
|
51
51
|
reactMarkup: string;
|
|
52
52
|
plainText: string;
|
|
53
53
|
emailSlug: string;
|
|
@@ -75,7 +75,7 @@ const ToolbarInner = ({
|
|
|
75
75
|
);
|
|
76
76
|
const [spamCheckingResult, { load: loadSpamChecking, loading: spamLoading }] =
|
|
77
77
|
useSpamAssassin({
|
|
78
|
-
markup,
|
|
78
|
+
markup: prettyMarkup,
|
|
79
79
|
plainText,
|
|
80
80
|
|
|
81
81
|
initialResult: serverSpamCheckingResult ?? cachedSpamCheckingResult,
|
|
@@ -85,7 +85,7 @@ const ToolbarInner = ({
|
|
|
85
85
|
LintingRow[]
|
|
86
86
|
>(`linter-${emailSlug.replaceAll('/', '-')}`);
|
|
87
87
|
const [lintingRows, { load: loadLinting, loading: lintLoading }] = useLinter({
|
|
88
|
-
markup,
|
|
88
|
+
markup: prettyMarkup,
|
|
89
89
|
|
|
90
90
|
initialRows: serverLintingRows ?? cachedLintingRows,
|
|
91
91
|
});
|
|
@@ -336,13 +336,13 @@ export const Toolbar = ({
|
|
|
336
336
|
React.use(PreviewContext)!;
|
|
337
337
|
|
|
338
338
|
if (renderedEmailMetadata === undefined) return null;
|
|
339
|
-
const {
|
|
339
|
+
const { prettyMarkup, plainText, reactMarkup } = renderedEmailMetadata;
|
|
340
340
|
|
|
341
341
|
return (
|
|
342
342
|
<ToolbarInner
|
|
343
343
|
emailPath={emailPath}
|
|
344
344
|
emailSlug={emailSlug}
|
|
345
|
-
|
|
345
|
+
prettyMarkup={prettyMarkup}
|
|
346
346
|
reactMarkup={reactMarkup}
|
|
347
347
|
plainText={plainText}
|
|
348
348
|
serverLintingRows={serverLintingRows}
|
|
@@ -14,25 +14,25 @@ exports[`getEmailComponent() > with a demo email template 1`] = `
|
|
|
14
14
|
</head>
|
|
15
15
|
<body
|
|
16
16
|
style='margin-left:auto;margin-right:auto;margin-top:auto;margin-bottom:auto;background-color:rgb(255,255,255);padding-left:8px;padding-right:8px;font-family:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"'>
|
|
17
|
-
<div
|
|
18
|
-
style="display:none;overflow:hidden;line-height:1px;opacity:0;max-height:0;max-width:0"
|
|
19
|
-
data-skip-in-text="true">
|
|
20
|
-
Join Alan on Vercel
|
|
21
|
-
<div>
|
|
22
|
-
|
|
23
|
-
</div>
|
|
24
|
-
</div>
|
|
25
17
|
<table
|
|
26
|
-
align="center"
|
|
27
|
-
width="100%"
|
|
28
18
|
border="0"
|
|
19
|
+
width="100%"
|
|
29
20
|
cellpadding="0"
|
|
30
21
|
cellspacing="0"
|
|
31
22
|
role="presentation"
|
|
32
|
-
|
|
23
|
+
align="center">
|
|
33
24
|
<tbody>
|
|
34
|
-
<tr
|
|
35
|
-
<td
|
|
25
|
+
<tr>
|
|
26
|
+
<td
|
|
27
|
+
style='margin-left:auto;margin-right:auto;margin-top:auto;margin-bottom:auto;background-color:rgb(255,255,255);padding-left:8px;padding-right:8px;font-family:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"'>
|
|
28
|
+
<div
|
|
29
|
+
style="display:none;overflow:hidden;line-height:1px;opacity:0;max-height:0;max-width:0"
|
|
30
|
+
data-skip-in-text="true">
|
|
31
|
+
Join Alan on Vercel
|
|
32
|
+
<div>
|
|
33
|
+
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
36
|
<table
|
|
37
37
|
align="center"
|
|
38
38
|
width="100%"
|
|
@@ -40,48 +40,9 @@ exports[`getEmailComponent() > with a demo email template 1`] = `
|
|
|
40
40
|
cellpadding="0"
|
|
41
41
|
cellspacing="0"
|
|
42
42
|
role="presentation"
|
|
43
|
-
style="margin-top:
|
|
43
|
+
style="margin-left:auto;margin-right:auto;margin-top:40px;margin-bottom:40px;max-width:465px;border-radius:0.25rem;border-width:1px;border-color:rgb(234,234,234);border-style:solid;padding:20px">
|
|
44
44
|
<tbody>
|
|
45
|
-
<tr>
|
|
46
|
-
<td>
|
|
47
|
-
<img
|
|
48
|
-
alt="Vercel Logo"
|
|
49
|
-
height="37"
|
|
50
|
-
src="/static/vercel-logo.png"
|
|
51
|
-
style="margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;display:block;outline:none;border:none;text-decoration:none"
|
|
52
|
-
width="40" />
|
|
53
|
-
</td>
|
|
54
|
-
</tr>
|
|
55
|
-
</tbody>
|
|
56
|
-
</table>
|
|
57
|
-
<h1
|
|
58
|
-
style="margin-left:0;margin-right:0;margin-top:30px;margin-bottom:30px;padding:0;text-align:center;font-weight:400;font-size:24px;color:rgb(0,0,0)">
|
|
59
|
-
Join <strong>Enigma</strong> on <strong>Vercel</strong>
|
|
60
|
-
</h1>
|
|
61
|
-
<p
|
|
62
|
-
style="font-size:14px;color:rgb(0,0,0);line-height:24px;margin-top:16px;margin-bottom:16px">
|
|
63
|
-
Hello
|
|
64
|
-
<!-- -->alanturing<!-- -->,
|
|
65
|
-
</p>
|
|
66
|
-
<p
|
|
67
|
-
style="font-size:14px;color:rgb(0,0,0);line-height:24px;margin-top:16px;margin-bottom:16px">
|
|
68
|
-
<strong>Alan</strong> (<a
|
|
69
|
-
href="mailto:alan.turing@example.com"
|
|
70
|
-
style="color:rgb(37,99,235);text-decoration-line:none"
|
|
71
|
-
target="_blank"
|
|
72
|
-
>alan.turing@example.com</a
|
|
73
|
-
>) has invited you to the <strong>Enigma</strong> team on<!-- -->
|
|
74
|
-
<strong>Vercel</strong>.
|
|
75
|
-
</p>
|
|
76
|
-
<table
|
|
77
|
-
align="center"
|
|
78
|
-
width="100%"
|
|
79
|
-
border="0"
|
|
80
|
-
cellpadding="0"
|
|
81
|
-
cellspacing="0"
|
|
82
|
-
role="presentation">
|
|
83
|
-
<tbody>
|
|
84
|
-
<tr>
|
|
45
|
+
<tr style="width:100%">
|
|
85
46
|
<td>
|
|
86
47
|
<table
|
|
87
48
|
align="center"
|
|
@@ -89,91 +50,153 @@ exports[`getEmailComponent() > with a demo email template 1`] = `
|
|
|
89
50
|
border="0"
|
|
90
51
|
cellpadding="0"
|
|
91
52
|
cellspacing="0"
|
|
92
|
-
role="presentation"
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
53
|
+
role="presentation"
|
|
54
|
+
style="margin-top:32px">
|
|
55
|
+
<tbody>
|
|
56
|
+
<tr>
|
|
57
|
+
<td>
|
|
96
58
|
<img
|
|
97
|
-
alt="
|
|
98
|
-
height="
|
|
99
|
-
src="/static/vercel-
|
|
100
|
-
style="
|
|
101
|
-
width="
|
|
59
|
+
alt="Vercel Logo"
|
|
60
|
+
height="37"
|
|
61
|
+
src="/static/vercel-logo.png"
|
|
62
|
+
style="margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;display:block;outline:none;border:none;text-decoration:none"
|
|
63
|
+
width="40" />
|
|
102
64
|
</td>
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
65
|
+
</tr>
|
|
66
|
+
</tbody>
|
|
67
|
+
</table>
|
|
68
|
+
<h1
|
|
69
|
+
style="margin-left:0;margin-right:0;margin-top:30px;margin-bottom:30px;padding:0;text-align:center;font-weight:400;font-size:24px;color:rgb(0,0,0)">
|
|
70
|
+
Join <strong>Enigma</strong> on <strong>Vercel</strong>
|
|
71
|
+
</h1>
|
|
72
|
+
<p
|
|
73
|
+
style="font-size:14px;color:rgb(0,0,0);line-height:24px;margin-top:16px;margin-bottom:16px">
|
|
74
|
+
Hello
|
|
75
|
+
<!-- -->alanturing<!-- -->,
|
|
76
|
+
</p>
|
|
77
|
+
<p
|
|
78
|
+
style="font-size:14px;color:rgb(0,0,0);line-height:24px;margin-top:16px;margin-bottom:16px">
|
|
79
|
+
<strong>Alan</strong> (<a
|
|
80
|
+
href="mailto:alan.turing@example.com"
|
|
81
|
+
style="color:rgb(37,99,235);text-decoration-line:none"
|
|
82
|
+
target="_blank"
|
|
83
|
+
>alan.turing@example.com</a
|
|
84
|
+
>) has invited you to the <strong>Enigma</strong> team on<!-- -->
|
|
85
|
+
<strong>Vercel</strong>.
|
|
86
|
+
</p>
|
|
87
|
+
<table
|
|
88
|
+
align="center"
|
|
89
|
+
width="100%"
|
|
90
|
+
border="0"
|
|
91
|
+
cellpadding="0"
|
|
92
|
+
cellspacing="0"
|
|
93
|
+
role="presentation">
|
|
94
|
+
<tbody>
|
|
95
|
+
<tr>
|
|
96
|
+
<td>
|
|
97
|
+
<table
|
|
98
|
+
align="center"
|
|
99
|
+
width="100%"
|
|
100
|
+
border="0"
|
|
101
|
+
cellpadding="0"
|
|
102
|
+
cellspacing="0"
|
|
103
|
+
role="presentation">
|
|
104
|
+
<tbody style="width:100%">
|
|
105
|
+
<tr style="width:100%">
|
|
106
|
+
<td
|
|
107
|
+
align="right"
|
|
108
|
+
data-id="__react-email-column">
|
|
109
|
+
<img
|
|
110
|
+
alt="alanturing's profile picture"
|
|
111
|
+
height="64"
|
|
112
|
+
src="/static/vercel-user.png"
|
|
113
|
+
style="border-radius:9999px;display:block;outline:none;border:none;text-decoration:none"
|
|
114
|
+
width="64" />
|
|
115
|
+
</td>
|
|
116
|
+
<td
|
|
117
|
+
align="center"
|
|
118
|
+
data-id="__react-email-column">
|
|
119
|
+
<img
|
|
120
|
+
alt="Arrow indicating invitation"
|
|
121
|
+
height="9"
|
|
122
|
+
src="/static/vercel-arrow.png"
|
|
123
|
+
style="display:block;outline:none;border:none;text-decoration:none"
|
|
124
|
+
width="12" />
|
|
125
|
+
</td>
|
|
126
|
+
<td
|
|
127
|
+
align="left"
|
|
128
|
+
data-id="__react-email-column">
|
|
129
|
+
<img
|
|
130
|
+
alt="Enigma team logo"
|
|
131
|
+
height="64"
|
|
132
|
+
src="/static/vercel-team.png"
|
|
133
|
+
style="border-radius:9999px;display:block;outline:none;border:none;text-decoration:none"
|
|
134
|
+
width="64" />
|
|
135
|
+
</td>
|
|
136
|
+
</tr>
|
|
137
|
+
</tbody>
|
|
138
|
+
</table>
|
|
110
139
|
</td>
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
140
|
+
</tr>
|
|
141
|
+
</tbody>
|
|
142
|
+
</table>
|
|
143
|
+
<table
|
|
144
|
+
align="center"
|
|
145
|
+
width="100%"
|
|
146
|
+
border="0"
|
|
147
|
+
cellpadding="0"
|
|
148
|
+
cellspacing="0"
|
|
149
|
+
role="presentation"
|
|
150
|
+
style="margin-top:32px;margin-bottom:32px;text-align:center">
|
|
151
|
+
<tbody>
|
|
152
|
+
<tr>
|
|
153
|
+
<td>
|
|
154
|
+
<a
|
|
155
|
+
href="https://vercel.com"
|
|
156
|
+
style="border-radius:0.25rem;background-color:rgb(0,0,0);padding-left:20px;padding-right:20px;padding-top:12px;padding-bottom:12px;text-align:center;font-weight:600;font-size:12px;color:rgb(255,255,255);text-decoration-line:none;line-height:100%;text-decoration:none;display:inline-block;max-width:100%;mso-padding-alt:0px"
|
|
157
|
+
target="_blank"
|
|
158
|
+
><span
|
|
159
|
+
><!--[if mso]><i style="mso-font-width:500%;mso-text-raise:18" hidden>  </i><![endif]--></span
|
|
160
|
+
><span
|
|
161
|
+
style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:9px"
|
|
162
|
+
>Join the team</span
|
|
163
|
+
><span
|
|
164
|
+
><!--[if mso]><i style="mso-font-width:500%" hidden>  ​</i><![endif]--></span
|
|
165
|
+
></a
|
|
166
|
+
>
|
|
118
167
|
</td>
|
|
119
168
|
</tr>
|
|
120
169
|
</tbody>
|
|
121
170
|
</table>
|
|
171
|
+
<p
|
|
172
|
+
style="font-size:14px;color:rgb(0,0,0);line-height:24px;margin-top:16px;margin-bottom:16px">
|
|
173
|
+
or copy and paste this URL into your browser:<!-- -->
|
|
174
|
+
<a
|
|
175
|
+
href="https://vercel.com"
|
|
176
|
+
style="color:rgb(37,99,235);text-decoration-line:none"
|
|
177
|
+
target="_blank"
|
|
178
|
+
>https://vercel.com</a
|
|
179
|
+
>
|
|
180
|
+
</p>
|
|
181
|
+
<hr
|
|
182
|
+
style="margin-left:0;margin-right:0;margin-top:26px;margin-bottom:26px;width:100%;border-width:1px;border-color:rgb(234,234,234);border-style:solid;border:none;border-top:1px solid #eaeaea" />
|
|
183
|
+
<p
|
|
184
|
+
style="color:rgb(102,102,102);font-size:12px;line-height:24px;margin-top:16px;margin-bottom:16px">
|
|
185
|
+
This invitation was intended for<!-- -->
|
|
186
|
+
<span style="color:rgb(0,0,0)">alanturing</span>. This
|
|
187
|
+
invite was sent from
|
|
188
|
+
<span style="color:rgb(0,0,0)">204.13.186.218</span>
|
|
189
|
+
<!-- -->located in<!-- -->
|
|
190
|
+
<span style="color:rgb(0,0,0)">São Paulo, Brazil</span>.
|
|
191
|
+
If you were not expecting this invitation, you can ignore
|
|
192
|
+
this email. If you are concerned about your account's
|
|
193
|
+
safety, please reply to this email to get in touch with
|
|
194
|
+
us.
|
|
195
|
+
</p>
|
|
122
196
|
</td>
|
|
123
197
|
</tr>
|
|
124
198
|
</tbody>
|
|
125
199
|
</table>
|
|
126
|
-
<table
|
|
127
|
-
align="center"
|
|
128
|
-
width="100%"
|
|
129
|
-
border="0"
|
|
130
|
-
cellpadding="0"
|
|
131
|
-
cellspacing="0"
|
|
132
|
-
role="presentation"
|
|
133
|
-
style="margin-top:32px;margin-bottom:32px;text-align:center">
|
|
134
|
-
<tbody>
|
|
135
|
-
<tr>
|
|
136
|
-
<td>
|
|
137
|
-
<a
|
|
138
|
-
href="https://vercel.com"
|
|
139
|
-
style="border-radius:0.25rem;background-color:rgb(0,0,0);padding-left:20px;padding-right:20px;padding-top:12px;padding-bottom:12px;text-align:center;font-weight:600;font-size:12px;color:rgb(255,255,255);text-decoration-line:none;line-height:100%;text-decoration:none;display:inline-block;max-width:100%;mso-padding-alt:0px"
|
|
140
|
-
target="_blank"
|
|
141
|
-
><span
|
|
142
|
-
><!--[if mso]><i style="mso-font-width:500%;mso-text-raise:18" hidden>  </i><![endif]--></span
|
|
143
|
-
><span
|
|
144
|
-
style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:9px"
|
|
145
|
-
>Join the team</span
|
|
146
|
-
><span
|
|
147
|
-
><!--[if mso]><i style="mso-font-width:500%" hidden>  ​</i><![endif]--></span
|
|
148
|
-
></a
|
|
149
|
-
>
|
|
150
|
-
</td>
|
|
151
|
-
</tr>
|
|
152
|
-
</tbody>
|
|
153
|
-
</table>
|
|
154
|
-
<p
|
|
155
|
-
style="font-size:14px;color:rgb(0,0,0);line-height:24px;margin-top:16px;margin-bottom:16px">
|
|
156
|
-
or copy and paste this URL into your browser:<!-- -->
|
|
157
|
-
<a
|
|
158
|
-
href="https://vercel.com"
|
|
159
|
-
style="color:rgb(37,99,235);text-decoration-line:none"
|
|
160
|
-
target="_blank"
|
|
161
|
-
>https://vercel.com</a
|
|
162
|
-
>
|
|
163
|
-
</p>
|
|
164
|
-
<hr
|
|
165
|
-
style="margin-left:0;margin-right:0;margin-top:26px;margin-bottom:26px;width:100%;border-width:1px;border-color:rgb(234,234,234);border-style:solid;border:none;border-top:1px solid #eaeaea" />
|
|
166
|
-
<p
|
|
167
|
-
style="color:rgb(102,102,102);font-size:12px;line-height:24px;margin-top:16px;margin-bottom:16px">
|
|
168
|
-
This invitation was intended for<!-- -->
|
|
169
|
-
<span style="color:rgb(0,0,0)">alanturing</span>. This invite was
|
|
170
|
-
sent from <span style="color:rgb(0,0,0)">204.13.186.218</span>
|
|
171
|
-
<!-- -->located in<!-- -->
|
|
172
|
-
<span style="color:rgb(0,0,0)">São Paulo, Brazil</span>. If you
|
|
173
|
-
were not expecting this invitation, you can ignore this email. If
|
|
174
|
-
you are concerned about your account's safety, please reply
|
|
175
|
-
to this email to get in touch with us.
|
|
176
|
-
</p>
|
|
177
200
|
</td>
|
|
178
201
|
</tr>
|
|
179
202
|
</tbody>
|
package/src/utils/constants.ts
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
exports.id=894,exports.ids=[894],exports.modules={19233:()=>{},26376:(a,b,c)=>{Promise.resolve().then(c.bind(c,30928))},26778:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e});var d=c(51956);let e=async a=>[{type:"image/x-icon",sizes:"16x16",url:(0,d.fillMetadataSegment)(".",await a.params,"favicon.ico")+""}]},30928:(a,b,c)=>{"use strict";c.d(b,{EmailsProvider:()=>l,J:()=>k});var d=c(92805),e=c(68928),f=c(23705);let g=(0,f.createServerReference)("7f4ea949a5b95c3d1eb43bc8bc8058a730a29a1629",f.callServer,void 0,f.findSourceMapURL,"getEmailsDirectoryMetadataAction");var h=c(58366),i=c(59833);let j=(0,e.createContext)(void 0),k=()=>{let a=(0,e.useContext)(j);if(void 0===a)throw Error("Cannot call `useEmail()` outside of an EmailsContext provider!");return a},l=a=>{let[b,c]=(0,e.useState)(a.initialEmailsDirectoryMetadata);return h.Hf||h.m4||(0,i.a)(async()=>{let b=await g(a.initialEmailsDirectoryMetadata.absolutePath);if(b)c(b);else throw Error("Hot reloading: unable to find the emails directory to update the sidebar")}),(0,d.jsx)(j.Provider,{value:{emailsDirectoryMetadata:b},children:a.children})}},37261:(a,b,c)=>{"use strict";c.d(b,{EmailsProvider:()=>e});var d=c(65863);(0,d.registerClientReference)(function(){throw Error("Attempted to call useEmails() from the server but useEmails is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/actions-runner/_work/react-email/react-email/packages/preview-server/src/contexts/emails.tsx","useEmails");let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call EmailsProvider() from the server but EmailsProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/actions-runner/_work/react-email/react-email/packages/preview-server/src/contexts/emails.tsx","EmailsProvider")},39528:(a,b,c)=>{Promise.resolve().then(c.bind(c,37261))},42192:(a,b,c)=>{"use strict";c.d(b,{Hf:()=>g,Z8:()=>f,m4:()=>h,n_:()=>e,w5:()=>d}),process.env.EMAILS_DIR_RELATIVE_PATH;let d=process.env.USER_PROJECT_LOCATION,e=process.env.PREVIEW_SERVER_LOCATION,f=process.env.EMAILS_DIR_ABSOLUTE_PATH,g="true"===process.env.NEXT_PUBLIC_IS_BUILDING,h="true"===process.env.NEXT_PUBLIC_IS_PREVIEW_DEVELOPMENT},44713:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,99141,23)),Promise.resolve().then(c.t.bind(c,26812,23)),Promise.resolve().then(c.t.bind(c,3378,23)),Promise.resolve().then(c.t.bind(c,21381,23)),Promise.resolve().then(c.t.bind(c,54209,23)),Promise.resolve().then(c.t.bind(c,39801,23)),Promise.resolve().then(c.t.bind(c,72241,23)),Promise.resolve().then(c.t.bind(c,17443,23)),Promise.resolve().then(c.bind(c,8897))},46263:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>n,dynamic:()=>m,metadata:()=>l});var d=c(89815);c(19233);var e=c(37261),f=c(95455),g=c(42192),h=c(97964),i=c.n(h),j=c(94455),k=c.n(j);let l={title:"React Email"},m="force-dynamic",n=async({children:a})=>{let b=await (0,f.getEmailsDirectoryMetadata)(g.Z8);if(void 0===b)throw Error(`Could not find the emails directory specified under ${g.Z8}!`);return(0,d.jsx)("html",{className:`${i().variable} ${k().variable} font-sans`,lang:"en",children:(0,d.jsx)("body",{className:"relative h-screen bg-black text-slate-11 leading-loose selection:bg-cyan-5 selection:text-cyan-12",children:(0,d.jsx)("div",{className:"bg-gradient-to-t from-slate-3 flex flex-col",children:(0,d.jsx)(e.EmailsProvider,{initialEmailsDirectoryMetadata:b,children:a})})})})}},58366:(a,b,c)=>{"use strict";c.d(b,{Hf:()=>d,m4:()=>e}),process.env.EMAILS_DIR_RELATIVE_PATH,process.env.USER_PROJECT_LOCATION,process.env.PREVIEW_SERVER_LOCATION,process.env.EMAILS_DIR_ABSOLUTE_PATH;let d="true"===process.env.NEXT_PUBLIC_IS_BUILDING,e="true"===process.env.NEXT_PUBLIC_IS_PREVIEW_DEVELOPMENT},59833:(a,b,c)=>{"use strict";c.d(b,{a:()=>f});var d=c(68928),e=c(40745);let f=a=>{let b=(0,d.useRef)(null);(0,d.useEffect)(()=>{b.current||(b.current=(0,e.io)());let c=b.current;return c.on("reload",b=>{console.debug("Reloading..."),a(b)}),()=>{c.off()}},[a])}},61064:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"7f4ea949a5b95c3d1eb43bc8bc8058a730a29a1629":()=>l});var d=c(24901);c(47185);var e=c(73024),f=c.n(e),g=c(76760),h=c.n(g);let i=async a=>{let b;try{b=await f().promises.open(a,"r")}catch(a){return console.warn(a),!1}if((await b.stat()).isDirectory())return await b.close(),!1;let{ext:c}=h().parse(a);if(![".js",".tsx",".jsx"].includes(c))return await b.close(),!1;let d=await b.readFile("utf8");await b.close();let e=/\bexport\s+default\b/gm.test(d),g=/\bmodule\.exports\s*=/gm.test(d),i=/\bexport\s+\{[^}]*\bdefault\b[^}]*\}/gm.test(d);return e||g||i},j=async(a,b=!1,c=!1,d=a)=>{if(!f().existsSync(a))return;let e=await f().promises.readdir(a,{withFileTypes:!0}),g=await Promise.all(e.map(b=>i(h().join(a,b.name)))),k=e.filter((a,b)=>g[b]).map(a=>b?a.name:a.name.replace(h().extname(a.name),"")),l=await Promise.all(e.filter(a=>a.isDirectory()&&!a.name.startsWith("_")&&"static"!==a.name).map(c=>j(h().join(a,c.name),b,!0,d))),m={absolutePath:a,relativePath:h().relative(d,a),directoryName:a.split(h().sep).pop(),emailFilenames:k,subDirectories:l};return c?(a=>{let b=a;for(;0===b.emailFilenames.length&&1===b.subDirectories.length;){let a=b.subDirectories[0];b={...a,directoryName:h().join(b.directoryName,a.directoryName)}}return b})(m):m};var k=c(86153);let l=async(a,b=!1,c=!1,d=a)=>j(a,b,c,d);(0,k.D)([l]),(0,d.A)(l,"7f4ea949a5b95c3d1eb43bc8bc8058a730a29a1629",null)},72112:()=>{},79561:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,94955,23)),Promise.resolve().then(c.t.bind(c,93642,23)),Promise.resolve().then(c.t.bind(c,35500,23)),Promise.resolve().then(c.t.bind(c,29651,23)),Promise.resolve().then(c.t.bind(c,41699,23)),Promise.resolve().then(c.t.bind(c,44843,23)),Promise.resolve().then(c.t.bind(c,18779,23)),Promise.resolve().then(c.t.bind(c,71741,23)),Promise.resolve().then(c.t.bind(c,35059,23))},92665:()=>{},95455:(a,b,c)=>{"use strict";c.r(b),c.d(b,{getEmailsDirectoryMetadata:()=>i});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f);let h=async a=>{let b;try{b=await e().promises.open(a,"r")}catch(a){return console.warn(a),!1}if((await b.stat()).isDirectory())return await b.close(),!1;let{ext:c}=g().parse(a);if(![".js",".tsx",".jsx"].includes(c))return await b.close(),!1;let d=await b.readFile("utf8");await b.close();let f=/\bexport\s+default\b/gm.test(d),h=/\bmodule\.exports\s*=/gm.test(d),i=/\bexport\s+\{[^}]*\bdefault\b[^}]*\}/gm.test(d);return f||h||i},i=async(a,b=!1,c=!1,d=a)=>{if(!e().existsSync(a))return;let f=await e().promises.readdir(a,{withFileTypes:!0}),j=await Promise.all(f.map(b=>h(g().join(a,b.name)))),k=f.filter((a,b)=>j[b]).map(a=>b?a.name:a.name.replace(g().extname(a.name),"")),l=await Promise.all(f.filter(a=>a.isDirectory()&&!a.name.startsWith("_")&&"static"!==a.name).map(c=>i(g().join(a,c.name),b,!0,d))),m={absolutePath:a,relativePath:g().relative(d,a),directoryName:a.split(g().sep).pop(),emailFilenames:k,subDirectories:l};return c?(a=>{let b=a;for(;0===b.emailFilenames.length&&1===b.subDirectories.length;){let a=b.subDirectories[0];b={...a,directoryName:g().join(b.directoryName,a.directoryName)}}return b})(m):m}}};
|