The emailcn registry ships components, blocks, themes, and font helpers in the shadcn registry format, in three styles: react-email, mjml-react, and jsx-email. Every item has the same name in every style — the style you configure decides which implementation you get.
Setup
Add a registries entry for this site, pointing at the style you want. See the shadcn registry documentation for all components.json fields and behaviors.
{
"registries": {
"@emailcn": "https://emailcn.vercel.app/r/react-email/{name}.json"
}
}Swap react-email for mjml-react or jsx-email to use those styles:
{
"registries": {
"@emailcn": "https://emailcn.vercel.app/r/jsx-email/{name}.json"
}
}You can replace @emailcn with another namespace; it only needs to match what you pass to shadcn add.
Usage
Item names are identical across styles, with no prefix:
$ pnpm dlx shadcn@latest add @emailcn/buttons
Themes are theme-<id>:
$ pnpm dlx shadcn@latest add @emailcn/theme-stripe
Blocks are block-<id>:
$ pnpm dlx shadcn@latest add @emailcn/block-onboarding-default
Fonts (React Email and JSX Email styles) — e.g. default-fonts, tech-fonts:
$ pnpm dlx shadcn@latest add @emailcn/default-fonts
Without a registry alias, use the full per-style URL:
$ pnpm dlx shadcn@latest add https://emailcn.vercel.app/r/react-email/buttons.json
Each style also serves its full index at https://emailcn.vercel.app/r/<style>/registry.json.