Skip to content

fix: border problem solved (#2305) #2307

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 62 commits into
base: canary
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
cb56d2d
feat(tailwind): extract pseudo classes to stylesheet (#1864)
Sjoertjuh Feb 26, 2025
c85fafc
fix(tailwind): Infinite loop during sanitization
gabrielmfern Feb 27, 2025
851fbc0
chore(tailwind): Improve code for running Tailwind integration test (…
gabrielmfern Feb 27, 2025
b4b279d
chore: Enter pre-release
gabrielmfern Apr 8, 2025
a133a4c
chore(root): Version packages (canary) (#2064)
github-actions[bot] Apr 8, 2025
35cd4c1
fix(tailwind): linter (#2021)
bukinoshita Apr 9, 2025
2bab8cc
chore(root): Version packages (canary) (#2087)
github-actions[bot] Apr 14, 2025
9b85a80
chore(root): Version packages (canary) (#2088)
github-actions[bot] Apr 15, 2025
8a23fc2
chore(root): Version packages (canary) (#2090)
github-actions[bot] Apr 15, 2025
9fe2ccb
chore(root): Version packages (canary) (#2092)
github-actions[bot] Apr 16, 2025
42fc27a
chore(root): Version packages (canary) (#2096)
github-actions[bot] Apr 16, 2025
9f60af8
chore(root): Version packages (canary) (#2098)
github-actions[bot] Apr 16, 2025
eab0d0d
chore(root): Version packages (canary) (#2175)
github-actions[bot] Apr 21, 2025
7be7a47
chore(deps): update changesets/action digest to 5f15b43 (#2198)
renovate[bot] May 5, 2025
9e23268
chore(deps): update buildjet/cache digest to 9347ea1 (#2197)
renovate[bot] May 5, 2025
cc7113d
chore(deps): update dependency vite to v6.3.4 [security] (#2196)
renovate[bot] May 5, 2025
a0407d5
chore(root): Version packages (canary) (#2184)
github-actions[bot] May 5, 2025
ae91f7d
Revert "chore(deps): update changesets/action digest to 5f15b43 (#2198)"
gabrielmfern May 5, 2025
958f4cf
chore(react-email): Pre-render email templates on hover (#2187)
gabrielmfern May 5, 2025
c7f0982
chore(root): Add `minor` changeset for @react-email/components
gabrielmfern May 6, 2025
81e646f
fix(render): reactDOMServer import on browser and some bundlers (#2221)
MendyLanda May 7, 2025
8c24fb1
chore(react-email): 'email: not found' error during CI after caching …
gabrielmfern May 7, 2025
4a39d73
feat(react-email): Polished way of ensuring `email` binary is availab…
gabrielmfern May 7, 2025
0c6857e
chore(root): Version packages (canary) (#2217)
github-actions[bot] May 7, 2025
c308748
chore(root): Version packages (canary) (#2233)
github-actions[bot] May 12, 2025
06227c2
feat(button): respect the user's order of padding properties (#2234)
gabrielmfern May 12, 2025
8d96b1c
feat(react-email): TypeScript's path aliases support for hot reloadin…
gabrielmfern May 12, 2025
bea5185
chore(root): Add changesets
gabrielmfern May 12, 2025
7ba79be
chore(root): Improve changeset for components
gabrielmfern May 12, 2025
a2993b7
chore(root): Version packages (canary) (#2236)
github-actions[bot] May 12, 2025
9b9e63b
fix(react-email): prettier errors causing NextJS serialization error …
gabrielmfern May 16, 2025
2f78583
chore(root): Version packages (canary) (#2238)
github-actions[bot] May 16, 2025
1c042f9
feat: Separate preview server from `react-email` (#2182)
gabrielmfern May 20, 2025
060416e
chore(root): Version packages (canary) (#2255)
github-actions[bot] May 20, 2025
3944fc5
FIX: fix(types): correct typo in SupportEntryCategory type (#2260)
PedroMarianoAlmeida May 22, 2025
06ded0f
docs(readme): split build and run instructions for clarity (#2261)
PedroMarianoAlmeida May 26, 2025
955bb7c
chore(root): Update biome to beta.5 (#2264)
gabrielmfern May 26, 2025
bc417a9
fix(preview-server): `<svg>` not being flagged by compatibility check…
PedroMarianoAlmeida May 27, 2025
22feab1
chore(root): Version packages (canary) (#2266)
github-actions[bot] May 27, 2025
8a07adb
fix(render): Browser version including errors in the output instead o…
gabrielmfern May 28, 2025
30d0146
chore(root): Version packages (canary) (#2269)
github-actions[bot] May 28, 2025
e9c0e9d
chore(deps): bump next from 14.2.3 to 15.3.1 (#2244)
dependabot[bot] May 28, 2025
6ea4646
chore(deps): bump next from 14.2.3 to 15.3.2 (#2273)
dependabot[bot] Jun 2, 2025
0cd907c
feat(react-email, preview-server): fixed equal versions for both (#2277)
gabrielmfern Jun 3, 2025
0545dd3
chore(root): Version packages (canary) (#2278)
github-actions[bot] Jun 3, 2025
45aead6
fix(react-email): testing data
gabrielmfern Jun 3, 2025
20fd2e9
chore(root): lint
gabrielmfern Jun 3, 2025
6fbb852
feat(react-email): email-dev package for linking globally (#2258)
gabrielmfern Jun 6, 2025
7a3bd9d
fix(preview-server): hot reloading with collapsed directories (#2284)
gabrielmfern Jun 9, 2025
87552c8
chore(root): Ignore the `email-dev` private package
gabrielmfern Jun 9, 2025
8c32420
chore(root): Version packages (canary) (#2286)
github-actions[bot] Jun 9, 2025
c37a2a4
fix(react-email): security issue with path for static files (#2289)
gabrielmfern Jun 10, 2025
487acf3
fix(preview-server): forced `color-scheme: dark` (#2271)
gabrielmfern Jun 10, 2025
b0fa1cb
chore(deps): bump next from 14.2.3 to 15.3.2 (#2290)
dependabot[bot] Jun 10, 2025
ea1a13d
chore(demo): use `email-dev` instead of `react-email` in commands (#2…
gabrielmfern Jun 10, 2025
ade5f69
chore(root): Version packages (canary) (#2291)
github-actions[bot] Jun 10, 2025
e20a224
fix/border problem solved
Sagarbisht99 Jun 21, 2025
a51bf0a
fixed/Border problem
Sagarbisht99 Jun 21, 2025
dd26304
fixed border problem
Sagarbisht99 Jun 21, 2025
35f045f
updated/
Sagarbisht99 Jun 21, 2025
76c5438
fixed
Sagarbisht99 Jun 21, 2025
51511f7
fixed
Sagarbisht99 Jun 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/afraid-sides-agree.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@react-email/preview-server": patch
---

fix `<svg>` not being flagged as incompatible
5 changes: 5 additions & 0 deletions .changeset/better-insects-like.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@react-email/preview-server": patch
---

fix the forced `color-scheme: dark` for the preview
6 changes: 6 additions & 0 deletions .changeset/common-goats-find.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@react-email/preview-server": patch
"react-email": patch
---

Use the same version for the preview-server and react-email
11 changes: 6 additions & 5 deletions .changeset/config.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
{
"$schema": "https://unpkg.com/@changesets/[email protected]/schema.json",
"changelog": "@changesets/cli/changelog",
"commit": false,
"linked": [],
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"changelog": "@changesets/cli/changelog",
"commit": false,
"fixed": [["react-email", "@react-email/preview-server"]],
"ignore": [
"@benchmarks/preview-server",
"@benchmarks/tailwind-component",
"demo",
"email-dev",
"web"
]
],
"updateInternalDependencies": "patch"
}
5 changes: 5 additions & 0 deletions .changeset/crazy-seas-eat.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@react-email/components": minor
---

Update `@react-email/[email protected]`
5 changes: 5 additions & 0 deletions .changeset/deep-clowns-bet.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@react-email/render": patch
---

fix browser version including errors in the output instead of throwing them
5 changes: 5 additions & 0 deletions .changeset/great-parrots-yell.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@react-email/tailwind": minor
---

Extract tailwind pseudo classes to stylesheet
5 changes: 5 additions & 0 deletions .changeset/kind-showers-exist.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"react-email": patch
---

fix static file serving security issue with logging
5 changes: 5 additions & 0 deletions .changeset/mighty-pigs-add.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"react-email": patch
---

Add support for hot reloading with tsconfig path aliases
5 changes: 5 additions & 0 deletions .changeset/petite-boxes-find.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@react-email/preview-server": patch
---

fix hot reloading with collapsed directories
53 changes: 53 additions & 0 deletions .changeset/pre.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
{
"mode": "pre",
"tag": "canary",
"initialVersions": {
"@benchmarks/preview-server": "0.0.0",
"@benchmarks/tailwind-component": "0.0.0",
"@react-email/body": "0.0.11",
"@react-email/button": "0.1.0",
"@react-email/code-block": "0.1.0",
"@react-email/code-inline": "0.0.5",
"@react-email/column": "0.0.13",
"@react-email/components": "0.1.0",
"@react-email/container": "0.0.15",
"@react-email/font": "0.0.9",
"@react-email/head": "0.0.12",
"@react-email/heading": "0.0.15",
"@react-email/hr": "0.0.11",
"@react-email/html": "0.0.11",
"@react-email/img": "0.0.11",
"@react-email/link": "0.0.12",
"@react-email/markdown": "0.0.15",
"@react-email/preview": "0.0.13",
"@react-email/render": "1.1.2",
"@react-email/row": "0.0.12",
"@react-email/section": "0.0.16",
"@react-email/tailwind": "1.0.5",
"@react-email/text": "0.1.5",
"create-email": "1.2.1",
"demo": "0.0.0",
"docs": "0.0.0",
"react-email": "4.0.16",
"tsconfig": "0.0.0",
"web": "0.0.0",
"@react-email/preview-server": "4.1.0-canary.10",
"email-dev": "0.0.0"
},
"changesets": [
"afraid-sides-agree",
"better-insects-like",
"common-goats-find",
"crazy-seas-eat",
"deep-clowns-bet",
"great-parrots-yell",
"kind-showers-exist",
"mighty-pigs-add",
"petite-boxes-find",
"puny-chicken-argue",
"stupid-ghosts-decide",
"tasty-swans-taste",
"tidy-geese-cross",
"tiny-rice-give"
]
}
5 changes: 5 additions & 0 deletions .changeset/puny-chicken-argue.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"react-email": minor
---

use a separate package for storing the preview server (@react-email/preview-server)
5 changes: 5 additions & 0 deletions .changeset/stupid-ghosts-decide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"react-email": patch
---

Fix prettier errors causing NextJS serialization error
5 changes: 5 additions & 0 deletions .changeset/tasty-swans-taste.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@react-email/components": minor
---

Updated @react-email/[email protected]
5 changes: 5 additions & 0 deletions .changeset/tidy-geese-cross.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"react-email": patch
---

Pre-render email templates on hover
5 changes: 5 additions & 0 deletions .changeset/tiny-rice-give.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@react-email/button": minor
---

respect the order in which padding properties are defined
2 changes: 1 addition & 1 deletion .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
- name: pnpm Cache
id: pnpm-cache
uses: buildjet/cache@3e70d19e31d6a8030aeddf6ed8dbe601f94d09f4
uses: buildjet/cache@9347ea1c7c1f331d397aa98b3894420448373372
with:
path: |
~/.pnpm-store
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/preview-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
- name: pnpm Cache
id: pnpm-cache
uses: buildjet/cache@3e70d19e31d6a8030aeddf6ed8dbe601f94d09f4
uses: buildjet/cache@9347ea1c7c1f331d397aa98b3894420448373372
with:
path: |
~/.pnpm-store
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release-canary.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
corepack prepare [email protected] --activate
pnpm config set script-shell "/usr/bin/bash"
- name: pnpm Cache
uses: buildjet/cache@3e70d19e31d6a8030aeddf6ed8dbe601f94d09f4
uses: buildjet/cache@9347ea1c7c1f331d397aa98b3894420448373372
with:
path: |
~/.pnpm-store
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
- name: pnpm Cache
id: pnpm-cache
uses: buildjet/cache@3e70d19e31d6a8030aeddf6ed8dbe601f94d09f4
uses: buildjet/cache@9347ea1c7c1f331d397aa98b3894420448373372
with:
path: |
~/.pnpm-store
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/version.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
- name: pnpm Cache
id: pnpm-cache
uses: buildjet/cache@3e70d19e31d6a8030aeddf6ed8dbe601f94d09f4
uses: buildjet/cache@9347ea1c7c1f331d397aa98b3894420448373372
with:
path: |
~/.pnpm-store
Expand Down
8 changes: 7 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,13 @@ All components were tested using the most popular email clients.
pnpm install
```

#### Build and run packages
#### Build

```sh
pnpm build
```

#### Run packages

```sh
pnpm dev
Expand Down
13 changes: 7 additions & 6 deletions apps/demo/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,20 @@
"version": "0.0.0",
"private": true,
"scripts": {
"build": "email build",
"dev": "email dev",
"start": "email start",
"export": "email export"
"build": "email-dev build",
"dev": "email-dev dev",
"start": "email-dev start",
"export": "email-dev export"
},
"dependencies": {
"@react-email/components": "workspace:*",
"react": "^19",
"react-dom": "^19",
"react-email": "workspace:*"
"email-dev": "workspace:*"
},
"devDependencies": {
"next": "15.3.1",
"@react-email/preview-server": "workspace:*",
"next": "^15.3.2",
"@types/react": "^19",
"@types/react-dom": "^19",
"tsx": "4.19.3"
Expand Down
2 changes: 1 addition & 1 deletion apps/web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"@vercel/analytics": "1.5.0",
"framer-motion": "12.7.4",
"lucide-react": "^0.492.0",
"next": "15.3.1",
"next": "15.3.2",
"prism-react-renderer": "2.4.1",
"react": "^19",
"react-dom": "^19",
Expand Down

This file was deleted.

17 changes: 17 additions & 0 deletions apps/web/src/app/api/check-spam/check-spam.spec.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,24 @@
import { render } from '@react-email/components';
import { vi } from 'vitest';
import { checkSpam } from './check-spam';
import { StripeWelcomeEmail } from './testing/stripe-welcome-email';

const mockChecks = [
{ description: 'Test rule 1', name: 'TEST_RULE_1', points: 2.5 },
{ description: 'Test rule 2', name: 'TEST_RULE_2', points: 3.0 },
];

// Mock the parser to return a stable result, making the test more robust.
vi.mock('../../../utils/spam-assassin/parse-pointing-table-rows', () => ({
parsePointingTableRows: () => mockChecks,
}));

// Mock sendToSpamd just to prevent it from trying to make a real network connection.
// The actual return value doesn't matter because we mocked the parser.
vi.mock('../../../utils/spam-assassin/send-to-spamd', () => ({
sendToSpamd: async () => 'mocked response',
}));

describe('checkSpam()', { timeout: 10_000 }, () => {
test('with most spammy email', async () => {
const template = (
Expand Down
2 changes: 1 addition & 1 deletion apps/web/src/components/template.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
'use client';

import classNames from 'classnames';
import Image from 'next/image';
import type { ImageLoader } from 'next/image';
import Image from 'next/image';
import Link from 'next/link';
import * as React from 'react';
import { Heading } from './heading';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ export const parsePointingTableRows = (response: string) => {
const responseFromTableStart = response.slice(
tableStartMatch.index + tableStartMatch[0].length,
);
let currentRow: Row | undefined = undefined;
let currentRow: Row | undefined;
for (const line of responseFromTableStart.split(/\r\n|\n|\r/)) {
if (line.trim().length === 0) break;

Expand Down
7 changes: 4 additions & 3 deletions biome.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"$schema": "https://biomejs.dev/schemas/2.0.0-beta.1/schema.json",
"$schema": "https://biomejs.dev/schemas/2.0.0-beta.5/schema.json",
"assist": {
"actions": {
"source": {
Expand Down Expand Up @@ -31,7 +31,6 @@
"noCommaOperator": "error",
"useNodejsImportProtocol": "error",
"useAsConstAssertion": "error",
"useNumericLiterals": "error",
"useEnumInitializers": "error",
"useSelfClosingElements": "error",
"useConst": "error",
Expand All @@ -54,6 +53,7 @@
"noDelete": "off"
},
"a11y": {
"noStaticElementInteractions": "off",
"noSvgWithoutTitle": "off",
"noAutofocus": "off"
},
Expand All @@ -67,6 +67,7 @@
"useSortedClasses": "off"
},
"complexity": {
"useNumericLiterals": "error",
"noUselessFragments": "off",
"noForEach": "off"
},
Expand All @@ -87,7 +88,7 @@
"!**/pnpm-lock.yaml",
"!**/.next",
"!**/public",
"!packages/react-email/src/actions/email-validation/caniemail-data.ts",
"!packages/preview-server/src/actions/email-validation/caniemail-data.ts",
"!**/.react-email/**/*",
"!**/node_modules/**/*",
"!**/*.d.ts",
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"test:watch": "turbo run test:watch"
},
"devDependencies": {
"@biomejs/biome": "2.0.0-beta.1",
"@biomejs/biome": "2.0.0-beta.5",
"@changesets/cli": "2.29.4",
"@types/node": "22.14.1",
"@types/react": "19.0.1",
Expand Down
6 changes: 6 additions & 0 deletions packages/button/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@

- 4c4c5ef: respect the order in which padding properties are defined

## 0.1.0-canary.0

### Minor Changes

- 11c4600: respect the order in which padding properties are defined

## 0.0.19

### Patch Changes
Expand Down
Loading
Loading