diff --git a/apps/demo/emails/index.css b/apps/demo/emails/index.css
new file mode 100644
index 0000000000..f1d8c73cdc
--- /dev/null
+++ b/apps/demo/emails/index.css
@@ -0,0 +1 @@
+@import "tailwindcss";
diff --git a/apps/demo/emails/reset-password/dropbox-reset-password.tsx b/apps/demo/emails/reset-password/dropbox-reset-password.tsx
index 91a4ef6d83..907fe6e021 100644
--- a/apps/demo/emails/reset-password/dropbox-reset-password.tsx
+++ b/apps/demo/emails/reset-password/dropbox-reset-password.tsx
@@ -8,8 +8,10 @@ import {
Link,
Preview,
Section,
+ Tailwind,
Text,
} from '@react-email/components';
+import tailwindConfig from '../tailwind.config';
interface DropboxResetPasswordEmailProps {
userFirstname?: string;
@@ -27,39 +29,48 @@ export const DropboxResetPasswordEmail = ({
return (
- Dropbox reset your password
-
-
-
- Hi {userFirstname},
-
- Someone recently requested a password change for your Dropbox
- account. If this was you, you can set a new password here:
-
-
-
- If you don't want to change your password or didn't
- request this, just ignore and delete this message.
-
-
- To keep your account secure, please don't forward this email
- to anyone. See our Help Center for{' '}
-
- more security tips.
-
-
- Happy Dropboxing!
-
-
-
+
+
+ Dropbox reset your password
+
+
+
+
+ Hi {userFirstname},
+
+
+ Someone recently requested a password change for your Dropbox
+ account. If this was you, you can set a new password here:
+
+
+
+ If you don't want to change your password or didn't
+ request this, just ignore and delete this message.
+
+
+ To keep your account secure, please don't forward this
+ email to anyone. See our Help Center for{' '}
+
+ more security tips.
+
+
+
+ Happy Dropboxing!
+
+
+
+
+
);
};
@@ -69,41 +80,6 @@ DropboxResetPasswordEmail.PreviewProps = {
resetPasswordLink: 'https://www.dropbox.com',
} as DropboxResetPasswordEmailProps;
-export default DropboxResetPasswordEmail;
-
-const main = {
- backgroundColor: '#f6f9fc',
- padding: '10px 0',
-};
+DropboxResetPasswordEmail.tailwindConfig = tailwindConfig;
-const container = {
- backgroundColor: '#ffffff',
- border: '1px solid #f0f0f0',
- padding: '45px',
-};
-
-const text = {
- fontSize: '16px',
- fontFamily:
- "'Open Sans', 'HelveticaNeue-Light', 'Helvetica Neue Light', 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif",
- fontWeight: '300',
- color: '#404040',
- lineHeight: '26px',
-};
-
-const button = {
- backgroundColor: '#007ee6',
- borderRadius: '4px',
- color: '#fff',
- fontFamily: "'Open Sans', 'Helvetica Neue', Arial",
- fontSize: '15px',
- textDecoration: 'none',
- textAlign: 'center' as const,
- display: 'block',
- width: '210px',
- padding: '14px 7px',
-};
-
-const anchor = {
- textDecoration: 'underline',
-};
+export default DropboxResetPasswordEmail;
diff --git a/apps/demo/emails/reviews/amazon-review.tsx b/apps/demo/emails/reviews/amazon-review.tsx
index 08fb4a2ffb..02da9acef4 100644
--- a/apps/demo/emails/reviews/amazon-review.tsx
+++ b/apps/demo/emails/reviews/amazon-review.tsx
@@ -10,8 +10,10 @@ import {
Preview,
Row,
Section,
+ Tailwind,
Text,
} from '@react-email/components';
+import tailwindConfig from '../tailwind.config';
interface AmazonReviewEmailProps {
titleText?: string;
@@ -38,204 +40,158 @@ export const AmazonReviewEmail = ({
- Amazon Review
-
-
-
-
-
+
+
+ Amazon Review
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {titleText}
+
+ {reviewText}
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
- {titleText}
- {reviewText}
-
-
-
-
-
-
-
-
-
-
-
-
- 14 Habits of Highly Productive Developers (English Edition)
-
- Start with rating this product
-
- {reviwStars.map((star, index) => (
+
+
+
+
+ 14 Habits of Highly Productive Developers (English Edition)
+
+ Start with rating this product
+
+ {reviwStars.map((star, index) => (
+
+ ))}
+
+
+ Your reviews will be posted on Amazon using your public
+ name.
+ Check your public name.
+
+
+
+
+
+
+
+
+
+ How about evaluating a previous purchase?{' '}
+
+ View more
+
+
+
+
+
+
+
+
+
+
+
- ))}
-
-
- Your reviews will be posted on Amazon using your public name.
- Check your public name.
+
+
+
+ {socialMediaIcons.map((src, index) => (
+
+ ))}
+
+
+
+
+
+
+
+ Customer reviews must adhere to the{' '}
+
+ Community Guidelines
+ {' '}
+ .
-
-
-
-
-
-
-
-
- How about evaluating a previous purchase?{' '}
- View more
+
+ We hope this message was helpful to you. However, if you
+ prefer not to receive this type of communication from{' '}
+
+ Amazon.com
+ {' '}
+ at{' '}
+
+ alanturing@gmail.com{' '}
+
+ ,{' '}
+
+ click here
+ {' '}
+ .
-
-
-
-
-
-
-
-
-
-
-
-
-
- {socialMediaIcons.map((src, index) => (
-
- ))}
-
-
-
-
-
-
-
- Customer reviews must adhere to the{' '}
- Community Guidelines .
-
-
- We hope this message was helpful to you. However, if you prefer
- not to receive this type of communication from{' '}
- Amazon.com at{' '}
- alanturing@gmail.com ,{' '}
- click here .
-
-
- Please note that product prices and availability are subject to
- change.
-
-
- © 2023 Amazon.com, Inc. or its affiliates. Amazon and all
- associated marks are trademarks of Amazon.com, Inc. or its
- affiliates.
-
- Reference: 706784740
-
-
-
-
+
+ Please note that product prices and availability are subject
+ to change.
+
+
+ © 2023 Amazon.com, Inc. or its affiliates. Amazon and all
+ associated marks are trademarks of Amazon.com, Inc. or its
+ affiliates.
+
+
+ Reference: 706784740
+
+
+
+
+
+
);
};
-export default AmazonReviewEmail;
-
-const main = {
- fontFamily: 'Ember,Helvetica,Arial,sans-seri',
- backgroundColor: '#ffffff',
-};
-
-const container = {
- borderTop: '4px solid #FF9900',
- margin: '0 auto',
- padding: '20px',
- width: '640px',
-};
-
-const title = {
- color: '#232f3e',
- fontSize: '36px',
- lineHeight: '38px',
- fontWeight: '400',
- margin: '20px 0',
-};
-
-const ratingContent = {
- paddingLeft: '30px',
-};
+AmazonReviewEmail.tailwindConfig = tailwindConfig;
-const rating = {
- display: 'inline-block',
-};
-
-const previewPurchase = {
- background: '#008296',
- color: '#ffffff',
- padding: '8px 0',
-};
-
-const previewPurchaseLink = {
- color: '#ffffff',
- textDecoration: 'underline',
- cursor: 'pointer',
-};
-
-const socialMedia = {
- display: 'inline-block',
- marginLeft: '10px',
-};
-
-const communityLink = {
- color: '#666666',
- textDecoration: 'underline',
- cursor: 'pointer',
-};
-
-const clickHereLink = {
- color: '#999999',
- textDecoration: 'underline',
- cursor: 'pointer',
-};
-
-const urlLink = {
- color: '#1155cc',
- textDecoration: 'underline',
- cursor: 'pointer',
-};
-
-const footerText = {
- fontSize: '10px',
- color: '#666666',
- margin: '8px 0',
-};
+export default AmazonReviewEmail;
diff --git a/apps/demo/emails/tailwind.config.ts b/apps/demo/emails/tailwind.config.ts
new file mode 100644
index 0000000000..9d90f279d6
--- /dev/null
+++ b/apps/demo/emails/tailwind.config.ts
@@ -0,0 +1,30 @@
+import { pixelBasedPreset, type TailwindConfig } from '@react-email/components';
+
+export default {
+ presets: [pixelBasedPreset],
+ theme: {
+ fontFamily: {
+ amazon: ['Ember', 'Helvetica', 'Arial', 'sans-serif'],
+ stripe: [
+ '-apple-system',
+ 'BlinkMacSystemFont',
+ '"Segoe UI"',
+ 'Roboto',
+ '"Helvetica Neue"',
+ 'Ubuntu',
+ 'sans-serif',
+ ],
+ dropbox: [
+ 'Open Sans',
+ 'HelveticaNeue-Light',
+ 'Helvetica Neue Light',
+ 'Helvetica Neue',
+ 'Helvetica',
+ 'Arial',
+ 'Lucida Grande',
+ 'sans-serif',
+ ],
+ 'dropbox-sans': ['Open Sans', 'Helvetica Neue', 'Arial'],
+ },
+ },
+} satisfies TailwindConfig;
diff --git a/apps/demo/emails/welcome/stripe-welcome.tsx b/apps/demo/emails/welcome/stripe-welcome.tsx
index 9422531e01..1ceac00d5d 100644
--- a/apps/demo/emails/welcome/stripe-welcome.tsx
+++ b/apps/demo/emails/welcome/stripe-welcome.tsx
@@ -9,8 +9,10 @@ import {
Link,
Preview,
Section,
+ Tailwind,
Text,
} from '@react-email/components';
+import tailwindConfig from '../tailwind.config';
const baseUrl = process.env.VERCEL_URL
? `https://${process.env.VERCEL_URL}`
@@ -19,138 +21,98 @@ const baseUrl = process.env.VERCEL_URL
export const StripeWelcomeEmail = () => (
- You're now ready to make live transactions with Stripe!
-
-
-
-
-
- Thanks for submitting your account information. You're now ready to
- make live transactions with Stripe!
-
-
- You can view your payments and a variety of other information about
- your account right from your dashboard.
-
-
-
-
- If you haven't finished your integration, you might find our{' '}
-
+
+
+ You're now ready to make live transactions with Stripe!
+
+
+
+
+
+
+ Thanks for submitting your account information. You're now ready
+ to make live transactions with Stripe!
+
+
+ You can view your payments and a variety of other information
+ about your account right from your dashboard.
+
+
-
- Once you're ready to start accepting payments, you'll just need to
- use your live{' '}
-
- API keys
- {' '}
- instead of your test API keys. Your account can simultaneously be
- used for both test and live requests, so you can continue testing
- while accepting live payments. Check out our{' '}
-
- tutorial about account basics
-
- .
-
-
- Finally, we've put together a{' '}
-
- quick checklist
- {' '}
- to ensure your website conforms to card network standards.
-
-
- We'll be here to help you with any step along the way. You can find
- answers to most questions and get in touch with us on our{' '}
-
- support site
-
- .
-
- — The Stripe team
-
-
- Stripe, 354 Oyster Point Blvd, South San Francisco, CA 94080
-
-
-
-
+ View your Stripe Dashboard
+
+
+
+ If you haven't finished your integration, you might find our{' '}
+
+ docs
+ {' '}
+ handy.
+
+
+ Once you're ready to start accepting payments, you'll just need to
+ use your live{' '}
+
+ API keys
+ {' '}
+ instead of your test API keys. Your account can simultaneously be
+ used for both test and live requests, so you can continue testing
+ while accepting live payments. Check out our{' '}
+
+ tutorial about account basics
+
+ .
+
+
+ Finally, we've put together a{' '}
+
+ quick checklist
+ {' '}
+ to ensure your website conforms to card network standards.
+
+
+ We'll be here to help you with any step along the way. You can
+ find answers to most questions and get in touch with us on our{' '}
+
+ support site
+
+ .
+
+
+ — The Stripe team
+
+
+
+ Stripe, 354 Oyster Point Blvd, South San Francisco, CA 94080
+
+
+
+
+
);
export default StripeWelcomeEmail;
-
-const main = {
- backgroundColor: '#f6f9fc',
- fontFamily:
- '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Ubuntu,sans-serif',
-};
-
-const container = {
- backgroundColor: '#ffffff',
- margin: '0 auto',
- padding: '20px 0 48px',
- marginBottom: '64px',
-};
-
-const box = {
- padding: '0 48px',
-};
-
-const hr = {
- borderColor: '#e6ebf1',
- margin: '20px 0',
-};
-
-const paragraph = {
- color: '#525f7f',
-
- fontSize: '16px',
- lineHeight: '24px',
- textAlign: 'left' as const,
-};
-
-const anchor = {
- color: '#556cd6',
-};
-
-const button = {
- backgroundColor: '#656ee8',
- borderRadius: '5px',
- color: '#fff',
- fontSize: '16px',
- fontWeight: 'bold',
- textDecoration: 'none',
- textAlign: 'center' as const,
- display: 'block',
- padding: '10px',
-};
-
-const footer = {
- color: '#8898aa',
- fontSize: '12px',
- lineHeight: '16px',
-};
diff --git a/apps/demo/package.json b/apps/demo/package.json
index 79ff536b09..c5e35d446c 100644
--- a/apps/demo/package.json
+++ b/apps/demo/package.json
@@ -9,15 +9,15 @@
"export": "email-dev export"
},
"dependencies": {
- "@react-email/components": "workspace:*",
+ "@react-email/components": "npm:@react-email/components@1.0.0-tailwindv4.5",
+ "email-dev": "workspace:*",
"react": "^19",
- "react-dom": "^19",
- "email-dev": "workspace:*"
+ "react-dom": "^19"
},
"devDependencies": {
"@react-email/preview-server": "workspace:*",
- "next": "^15.3.2",
"@types/react": "^19",
- "@types/react-dom": "^19"
+ "@types/react-dom": "^19",
+ "next": "^15.3.2"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b93c205785..bec52fc050 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -57,8 +57,8 @@ importers:
apps/demo:
dependencies:
'@react-email/components':
- specifier: workspace:*
- version: link:../../packages/components
+ specifier: npm:@react-email/components@1.0.0-tailwindv4.5
+ version: 1.0.0-tailwindv4.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
email-dev:
specifier: workspace:*
version: link:../../packages/react-email/dev
@@ -3512,6 +3512,100 @@ packages:
'@radix-ui/rect@1.1.1':
resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==}
+ '@react-email/body@0.1.1-tailwindv4.0':
+ resolution: {integrity: sha512-9yWjQmQw6/XLeus6vnr4rB09hVlJUW0+MwCT8aqngfIfDNcxF0muzmGG4wyUwhtFtoxnECEaivVhjvuJDCEnuw==}
+ peerDependencies:
+ react: ^19.0.0
+
+ '@react-email/button@0.2.1-tailwindv4.0':
+ resolution: {integrity: sha512-Dl8JfMsYApz+Jd3z4TTHeeLVak0dxu8Ms7gWy8fwT9/tu49ULGYWf7t1AEYtHG1OH4HN2UrGIDErJn1ACMR8TQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ react: ^19.0.0
+
+ '@react-email/code-block@0.1.1-tailwindv4.0':
+ resolution: {integrity: sha512-X9NV4lKKmGQobRU5t4B+OVe+RUtsOQ9Ej5HorFWFA0a3M0kaD8bbAvWgSD58S7mA2pFlwqhg7ti2ifMmQD+3Pw==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ react: ^19.0.0
+
+ '@react-email/code-inline@0.0.6-tailwindv4.0':
+ resolution: {integrity: sha512-2cZ1tzmVfKe4O3Xom/yEgBfNGrGS763xDLnhCter8R2GYUNBUEjJjAz/pXLiFjpqvSWPPH3elwowqURIB3orjQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ react: ^19.0.0
+
+ '@react-email/column@0.0.13':
+ resolution: {integrity: sha512-Lqq17l7ShzJG/d3b1w/+lVO+gp2FM05ZUo/nW0rjxB8xBICXOVv6PqjDnn3FXKssvhO5qAV20lHM6S+spRhEwQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ react: ^19.0.0
+
+ '@react-email/components@1.0.0-tailwindv4.5':
+ resolution: {integrity: sha512-q12JqHQk0r1ET4g5TS9pETKz38NrNCzdQlUp4rilpdfO8D5Ivjd5ly6ft7jRN+op7H+bmBl+bDkSJq8qfncmzQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ react: ^19.0.0
+
+ '@react-email/container@0.0.16-tailwindv4.0':
+ resolution: {integrity: sha512-RUgvF17EDOgjxwvPejNRf3j9w4PplHfBecRa/5vpL3QdTWrETIBIXDJCprStTNkjo81y+sD49iDwDcKuohMjWw==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ react: ^19.0.0
+
+ '@react-email/font@0.0.9':
+ resolution: {integrity: sha512-4zjq23oT9APXkerqeslPH3OZWuh5X4crHK6nx82mVHV2SrLba8+8dPEnWbaACWTNjOCbcLIzaC9unk7Wq2MIXw==}
+ peerDependencies:
+ react: ^19.0.0
+
+ '@react-email/head@0.0.12':
+ resolution: {integrity: sha512-X2Ii6dDFMF+D4niNwMAHbTkeCjlYYnMsd7edXOsi0JByxt9wNyZ9EnhFiBoQdqkE+SMDcu8TlNNttMrf5sJeMA==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ react: ^19.0.0
+
+ '@react-email/heading@0.0.16-tailwindv4.0':
+ resolution: {integrity: sha512-WbcKUHcCkyoaQZceNf/RmhSe/qqnRJnWrg13IFwCM3/7i7zFqMZz7XiLsyraOeqKPafb3K9/OZW3iM7oYy0TiA==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ react: ^19.0.0
+
+ '@react-email/hr@0.0.12-tailwindv4.0':
+ resolution: {integrity: sha512-N4cmqCuNt/35WjwiTsAl2YjMn/0JEF5BIkgdW5NbT3bypJq9uD6IuDrZuoQdhQF/U6nXKoAnDDM0olOJI5Fvfg==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ react: ^19.0.0
+
+ '@react-email/html@0.0.11':
+ resolution: {integrity: sha512-qJhbOQy5VW5qzU74AimjAR9FRFQfrMa7dn4gkEXKMB/S9xZN8e1yC1uA9C15jkXI/PzmJ0muDIWmFwatm5/+VA==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ react: ^19.0.0
+
+ '@react-email/img@0.0.12-tailwindv4.0':
+ resolution: {integrity: sha512-fyux6rY919CvYyQ3naIwIFEFwWsLVhwOdUDOrVkpjypB/5f4E39niM74xaMr/u1CNcWsxINwxlryp44tjAHGhw==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ react: ^19.0.0
+
+ '@react-email/link@0.0.13-tailwindv4.0':
+ resolution: {integrity: sha512-undFRiSltzPPdMmk/9OhAitDMqPxASiKo3ee9MSPUHyMz8VsaJmy8TPgOH/j6D30TObfcmH0fCQTrWH28qqbJw==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ react: ^19.0.0
+
+ '@react-email/markdown@0.0.15':
+ resolution: {integrity: sha512-UQA9pVm5sbflgtg3EX3FquUP4aMBzmLReLbGJ6DZQZnAskBF36aI56cRykDq1o+1jT+CKIK1CducPYziaXliag==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ react: ^19.0.0
+
+ '@react-email/preview@0.0.14-tailwindv4.0':
+ resolution: {integrity: sha512-20IIqdGeSGGWAy0hKvAS2XoQX1muE1K8wLYVyJBFNpX/ghuKUeSDno72Xb8egUFHGlDVwM5q735j7bXpH1/bgg==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ react: ^19.0.0
+
'@react-email/render@1.0.6':
resolution: {integrity: sha512-zNueW5Wn/4jNC1c5LFgXzbUdv5Lhms+FWjOvWAhal7gx5YVf0q6dPJ0dnR70+ifo59gcMLwCZEaTS9EEuUhKvQ==}
engines: {node: '>=18.0.0'}
@@ -3519,12 +3613,31 @@ packages:
react: ^19.0.0
react-dom: ^19.0.0
+ '@react-email/render@1.3.2':
+ resolution: {integrity: sha512-oq8/BD/I/YspeuBjjdLJG6xaf9tsPYk+VWu8/mX9xWbRN0t0ExKSVm9sEBL6RsCpndQA2jbY2VgPEreIrzUgqw==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ react: ^19.0.0
+ react-dom: ^19.0.0
+
+ '@react-email/row@0.0.12':
+ resolution: {integrity: sha512-HkCdnEjvK3o+n0y0tZKXYhIXUNPDx+2vq1dJTmqappVHXS5tXS6W5JOPZr5j+eoZ8gY3PShI2LWj5rWF7ZEtIQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ react: ^19.0.0
+
'@react-email/section@0.0.14':
resolution: {integrity: sha512-+fYWLb4tPU1A/+GE5J1+SEMA7/wR3V30lQ+OR9t2kAJqNrARDbMx0bLnYnR1QL5TiFRz0pCF05SQUobk6gHEDQ==}
engines: {node: '>=18.0.0'}
peerDependencies:
react: ^19.0.0
+ '@react-email/section@0.0.16':
+ resolution: {integrity: sha512-FjqF9xQ8FoeUZYKSdt8sMIKvoT9XF8BrzhT3xiFKdEMwYNbsDflcjfErJe3jb7Wj/es/lKTbV5QR1dnLzGpL3w==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ react: ^19.0.0
+
'@react-email/tailwind@0.0.12':
resolution: {integrity: sha512-s8Ch7GL30qRKScn9NWwItMqxjtzbyUtCnXfC6sL2YTVtulbfvZZ06W+aA0S6f7fdrVlOOlQzZuK/sVaQCHhcSw==}
engines: {node: '>=18.0.0'}
@@ -3537,6 +3650,18 @@ packages:
peerDependencies:
react: ^19.0.0
+ '@react-email/tailwind@2.0.0-tailwindv4.3':
+ resolution: {integrity: sha512-uuTYJY+UZdq6mtq/wh2CANjsYv79DpcgVLFg5yBlME0DNHO+nQ5IHVNckVvWlvs2maS6IP8sUYWxuFgYqUvf6w==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ react: ^19.0.0
+
+ '@react-email/text@0.1.6-tailwindv4.0':
+ resolution: {integrity: sha512-IVoq2zqCzokjbeEtpFw0VgfL2z7O2K+BTG8nWMZKofUf8UX66X3JwdOGRw/K6U3XS6IahE9gy3yycX7rqn3gKw==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ react: ^19.0.0
+
'@react-spring/animated@9.7.5':
resolution: {integrity: sha512-Tqrwz7pIlsSDITzxoLS3n/v/YCUHQdOIKtOJf4yL6kYVSDTSmVK1LI1Q3M/uu2Sx4X3pIWF3xLUhlsA6SPNTNg==}
peerDependencies:
@@ -8206,6 +8331,9 @@ packages:
engines: {node: '>=14.0.0'}
hasBin: true
+ tailwindcss@4.1.12:
+ resolution: {integrity: sha512-DzFtxOi+7NsFf7DBtI3BJsynR+0Yp6etH+nRPTbpWnS2pZBaSksv/JGctNwSWzbFjp0vxSqknaUylseZqMDGrA==}
+
tapable@2.2.1:
resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
engines: {node: '>=6'}
@@ -11573,6 +11701,94 @@ snapshots:
'@radix-ui/rect@1.1.1': {}
+ '@react-email/body@0.1.1-tailwindv4.0(react@19.0.0)':
+ dependencies:
+ react: 19.0.0
+
+ '@react-email/button@0.2.1-tailwindv4.0(react@19.0.0)':
+ dependencies:
+ react: 19.0.0
+
+ '@react-email/code-block@0.1.1-tailwindv4.0(react@19.0.0)':
+ dependencies:
+ prismjs: 1.30.0
+ react: 19.0.0
+
+ '@react-email/code-inline@0.0.6-tailwindv4.0(react@19.0.0)':
+ dependencies:
+ react: 19.0.0
+
+ '@react-email/column@0.0.13(react@19.0.0)':
+ dependencies:
+ react: 19.0.0
+
+ '@react-email/components@1.0.0-tailwindv4.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
+ dependencies:
+ '@react-email/body': 0.1.1-tailwindv4.0(react@19.0.0)
+ '@react-email/button': 0.2.1-tailwindv4.0(react@19.0.0)
+ '@react-email/code-block': 0.1.1-tailwindv4.0(react@19.0.0)
+ '@react-email/code-inline': 0.0.6-tailwindv4.0(react@19.0.0)
+ '@react-email/column': 0.0.13(react@19.0.0)
+ '@react-email/container': 0.0.16-tailwindv4.0(react@19.0.0)
+ '@react-email/font': 0.0.9(react@19.0.0)
+ '@react-email/head': 0.0.12(react@19.0.0)
+ '@react-email/heading': 0.0.16-tailwindv4.0(react@19.0.0)
+ '@react-email/hr': 0.0.12-tailwindv4.0(react@19.0.0)
+ '@react-email/html': 0.0.11(react@19.0.0)
+ '@react-email/img': 0.0.12-tailwindv4.0(react@19.0.0)
+ '@react-email/link': 0.0.13-tailwindv4.0(react@19.0.0)
+ '@react-email/markdown': 0.0.15(react@19.0.0)
+ '@react-email/preview': 0.0.14-tailwindv4.0(react@19.0.0)
+ '@react-email/render': 1.3.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@react-email/row': 0.0.12(react@19.0.0)
+ '@react-email/section': 0.0.16(react@19.0.0)
+ '@react-email/tailwind': 2.0.0-tailwindv4.3(react@19.0.0)
+ '@react-email/text': 0.1.6-tailwindv4.0(react@19.0.0)
+ react: 19.0.0
+ transitivePeerDependencies:
+ - react-dom
+
+ '@react-email/container@0.0.16-tailwindv4.0(react@19.0.0)':
+ dependencies:
+ react: 19.0.0
+
+ '@react-email/font@0.0.9(react@19.0.0)':
+ dependencies:
+ react: 19.0.0
+
+ '@react-email/head@0.0.12(react@19.0.0)':
+ dependencies:
+ react: 19.0.0
+
+ '@react-email/heading@0.0.16-tailwindv4.0(react@19.0.0)':
+ dependencies:
+ react: 19.0.0
+
+ '@react-email/hr@0.0.12-tailwindv4.0(react@19.0.0)':
+ dependencies:
+ react: 19.0.0
+
+ '@react-email/html@0.0.11(react@19.0.0)':
+ dependencies:
+ react: 19.0.0
+
+ '@react-email/img@0.0.12-tailwindv4.0(react@19.0.0)':
+ dependencies:
+ react: 19.0.0
+
+ '@react-email/link@0.0.13-tailwindv4.0(react@19.0.0)':
+ dependencies:
+ react: 19.0.0
+
+ '@react-email/markdown@0.0.15(react@19.0.0)':
+ dependencies:
+ md-to-react-email: 5.0.5(react@19.0.0)
+ react: 19.0.0
+
+ '@react-email/preview@0.0.14-tailwindv4.0(react@19.0.0)':
+ dependencies:
+ react: 19.0.0
+
'@react-email/render@1.0.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
html-to-text: 9.0.5
@@ -11581,10 +11797,26 @@ snapshots:
react-dom: 19.0.0(react@19.0.0)
react-promise-suspense: 0.3.4
+ '@react-email/render@1.3.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
+ dependencies:
+ html-to-text: 9.0.5
+ prettier: 3.5.3
+ react: 19.0.0
+ react-dom: 19.0.0(react@19.0.0)
+ react-promise-suspense: 0.3.4
+
+ '@react-email/row@0.0.12(react@19.0.0)':
+ dependencies:
+ react: 19.0.0
+
'@react-email/section@0.0.14(react@19.0.0)':
dependencies:
react: 19.0.0
+ '@react-email/section@0.0.16(react@19.0.0)':
+ dependencies:
+ react: 19.0.0
+
'@react-email/tailwind@0.0.12(react@19.0.0)':
dependencies:
react: 19.0.0
@@ -11597,6 +11829,15 @@ snapshots:
dependencies:
react: 19.0.0
+ '@react-email/tailwind@2.0.0-tailwindv4.3(react@19.0.0)':
+ dependencies:
+ react: 19.0.0
+ tailwindcss: 4.1.12
+
+ '@react-email/text@0.1.6-tailwindv4.0(react@19.0.0)':
+ dependencies:
+ react: 19.0.0
+
'@react-spring/animated@9.7.5(react@19.0.0)':
dependencies:
'@react-spring/shared': 9.7.5(react@19.0.0)
@@ -17376,6 +17617,8 @@ snapshots:
transitivePeerDependencies:
- ts-node
+ tailwindcss@4.1.12: {}
+
tapable@2.2.1: {}
tar-fs@3.0.8: