# Introduction **emailcn** provides beautifully designed and customizable email components for [React Email](https://github.com/resend/react-email), [MJML React](https://github.com/faire/mjml-react), and [JSX Email](https://github.com/shellscape/jsx-email), designed to work seamlessly with the [shadcn CLI](https://ui.shadcn.com). ## Philosophy [#philosophy] emailcn follows the shadcn model for emails: copy-paste components you can own, with zero lock-in and sensible defaults that work immediately. Email stacks are easy to fragment across one-off templates. emailcn keeps themes, fonts, etc. consistent across blocks and primitives, while still letting you drop down to raw `react-email`, `mjml-react`, or `jsx-email` APIs when needed. The goal is simple: make emails feel like the rest of your stack — composable, themeable, and easy to customize. ## Why emailcn? [#why-emailcn] Most email components are either too opinionated or too scattered. emailcn is built for teams that want to ship quickly without giving up control: * **Own Your Code:** Copy the components into your project and customize everything. * **Start Fast:** Run one command and render your first email with production-ready defaults. * **Scale Safely:** Build on React Email, MJML React, or JSX Email directly, then drop to raw APIs when needed. ## Features [#features]
# Installation ## Prerequisites [#prerequisites] * **React Email** templates: a project with **`react-email`** installed. * **MJML React** templates: a project with **`@faire/mjml-react`** installed. * **JSX Email** templates: a project with **`jsx-email`** installed. Configure the `@emailcn` namespace first, then select the framework in the item path — see [Registry](/docs/registry). ## Installation [#installation] Run the following command to add any component or block: ```bash npx shadcn@latest add @emailcn/react-email/block-onboarding-default ``` ## Usage [#usage] Import and use the component: ```tsx import { OnboardingDefault } from "@/components/email/onboarding-default"; export function WelcomeEmail() { return ; } ``` Components install with a `*Section` export you can compose inside your own document (React Email style shown): ```tsx import { Body, Container, Head, Html, Preview, Tailwind } from "react-email"; import { createEmailTailwindConfig } from "@/components/email/email-theme"; import { DefaultFonts } from "@/components/email/font-default"; import { defaultTheme } from "@/components/email/theme-default"; import { ButtonsSection } from "@/components/email/buttons"; export function WelcomeEmail() { return ( Welcome ); } ``` For registry URLs and namespace configuration, see [Registry](/docs/registry). # MCP [MCP](https://modelcontextprotocol.io/) is an open protocol that standardizes how applications provide context to LLMs. The shadcn CLI can register an MCP server so your editor can discover registry components—including items you install from **emailcn** via the same CLI. ## Configure MCP [#configure-mcp] Run: ```bash npx shadcn@latest mcp init ``` Choose your MCP client when prompted, then enable the MCP server in that client to finish setup. ## Usage [#usage] With MCP enabled, you can ask your IDE to work with **emailcn** patterns. Example prompts: * Add a **React Email** welcome flow using **`block-onboarding-default`**, a **`heroes`** variant, and **`defaultTheme`**. * Scaffold a **magic link** or **OTP** auth email from **`block-auth-magic-link-default`** / **`block-auth-otp-default`**. * Build a **receipt** or **notification** layout using existing blocks and **`data-tables`** components. * Create an **MJML React** variant of the same items from the **`mjml-react`** style — item names are identical across styles and share the same theme tokens. * Wire **`DefaultFonts`** and a **`tech-fonts`** preset to match a Resend-style demo. Install items with **`npx shadcn@latest add @emailcn//`** or the **`https://emailcn.run/r//.json`** URL on each docs page (bases: `react-email`, `mjml-react`, `jsx-email`), then import from **`@/components/email/...`** as usual. See the [registry docs](/docs/registry) for configuring the `@emailcn` namespace. # Registry The **emailcn** registry ships components, blocks, themes, and font helpers in the [shadcn registry format](https://ui.shadcn.com/docs/registry). Items are namespaced by framework: `react-email/`, `mjml-react/`, or `jsx-email/`. ## Setup [#setup] Add a **registries** entry for this site. See the [shadcn registry documentation](https://ui.shadcn.com/docs/registry) for all `components.json` fields and behaviors. ```json { "registries": { "@emailcn": "https://emailcn.run/r/{name}.json" } } ``` You can replace `@emailcn` with another namespace; it only needs to match what you pass to `shadcn add`. ## Usage [#usage] Prefix each item with its framework: ```bash npx shadcn@latest add @emailcn/react-email/button ``` **Themes** are `theme-`: ```bash npx shadcn@latest add @emailcn/react-email/theme-stripe ``` **Blocks** are `block-`: ```bash npx shadcn@latest add @emailcn/react-email/block-onboarding-default ``` **Fonts** (React Email and JSX Email styles) — e.g. `default-fonts`, `tech-fonts`: ```bash npx shadcn@latest add @emailcn/react-email/default-fonts ``` Without a registry alias, use the full item URL: ```bash npx shadcn@latest add https://emailcn.run/r/react-email/button.json ``` The complete registry index is available at `https://emailcn.run/r/registry.json`. # Theming All three renderers use the same `EmailTheme` token shape. React Email and JSX Email convert those tokens into their framework-specific Tailwind configuration, while MJML React applies them directly. ## Install a theme [#install-a-theme] Themes are registry items named `theme-` under each framework: ```bash npx shadcn@latest add @emailcn/react-email/theme-default ``` Or paste the full item URL: ```bash npx shadcn@latest add https://emailcn.run/r/react-email/theme-linear.json ``` ## Use with React Email [#use-with-react-email] ```tsx import { Tailwind } from "react-email"; import { createEmailTailwindConfig } from "@/components/email/email-theme"; import { defaultTheme } from "@/components/email/theme-default"; ``` ```tsx {/* ... */} ``` ## Use with JSX Email [#use-with-jsx-email] ```tsx import { EmailTailwind } from "@/components/email/email-theme"; import { defaultTheme } from "@/components/email/theme-default"; ``` ```tsx {/* ... */} ``` ## Use with MJML React [#use-with-mjml-react] MJML React components use the tokens directly: ```tsx import { defaultTheme } from "@/components/email/theme-default"; ``` ```tsx Hello ``` ## Available Fonts (React Email and JSX Email) [#available-fonts-react-email-and-jsx-email] # Blocks # Components ## Marketing [#marketing] ### Bento Grids [#bento-grids] ### Blog [#blog] ### Coupons [#coupons] ### CTA Banner [#cta-banner] ### Feature Row [#feature-row] ### Footers [#footers] ### Logo Header [#logo-header] ### Hero [#hero] ### Images [#images] ### Pricing Table [#pricing-table] ### Stats [#stats] ### Timelines [#timelines] ## Ecommerce [#ecommerce] ### Order Summary [#order-summary] ### Product Detail [#product-detail] ## UI Elements [#ui-elements] ### Avatar Row [#avatar-row] ### Divider & Spacing [#divider--spacing] # Fonts # Themes # July 27, 2026 - Initial Release We shipped the initial release of emailcn with ready-to-use email components for React Email, MJML React, and JSX Email.
# Changelog ## July 2026 - Initial Release [#july-2026---initial-release] We shipped the initial release of emailcn with ready-to-use email components for React Email, MJML React, and JSX Email. # Authentication Emails ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/jsx-email/block-auth-otp-default ``` **Install the following dependencies:** ```bash npm install jsx-email ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { AuthOtpDefault } from "@/components/email/auth-otp-default"; ``` ```tsx ``` ## API Reference [#api-reference] ### Authentication Emails [#authentication-emails] | Prop | Type | Default | Description | | ------------------ | -------- | ------------------- | ----------------------- | | `logoUrl` | `string` | - | URL of the product logo | | `_logoAlt` | `string` | `"Logo"` | Alt text for logo | | `otpCode` | `string` | `"123456"` | OTP code | | `expiresInMinutes` | `number` | `10` | Code expiration time | | `magicLink` | `string` | `"#"` | Magic link URL | | `_recipientEmail` | `string` | `"you@example.com"` | Recipient email | | `_productName` | `string` | `"Acme"` | Product name | # JSX Email Blocks # Invitation Emails ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/jsx-email/block-invite-default ``` **Install the following dependencies:** ```bash npm install jsx-email ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { InviteDefault } from "@/components/email/invite-default"; ``` ```tsx ``` ## API Reference [#api-reference] ### Invitation Emails [#invitation-emails] | Prop | Type | Default | Description | | ------------------ | -------- | ------------- | ----------------------- | | `logoUrl` | `string` | - | URL of the product logo | | `inviterName` | `string` | `"Someone"` | Name of the inviter | | `inviterAvatarUrl` | `string` | - | URL of inviter's avatar | | `_teamName` | `string` | `"Acme Team"` | Team or project name | | `role` | `string` | `"Member"` | Invited role | | `ctaLabel` | `string` | `"Join Team"` | CTA button label | | `ctaHref` | `string` | `"#"` | CTA button link | | `_productName` | `string` | `"Acme"` | Product name | # Newsletter Emails ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/jsx-email/block-newsletter-default ``` **Install the following dependencies:** ```bash npm install jsx-email ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { NewsletterDefault } from "@/components/email/newsletter-default"; ``` ```tsx ``` ## API Reference [#api-reference] ### Newsletter Emails [#newsletter-emails] | Prop | Type | Default | Description | | ---------------- | --------------------------------------------- | -------------- | ----------------------- | | `logoUrl` | `string` | - | URL of the product logo | | `headerImageUrl` | `string` | - | Header image URL | | `title` | `string` | `"Newsletter"` | Newsletter title | | `preheader` | `string` | - | Preview text | | `_productName` | `string` | `"Acme"` | Product name | | `articles` | `Array<{title, description, imageUrl, href}>` | - | Featured articles | | `ctaLabel` | `string` | `"Read More"` | CTA button label | # Notification Emails ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/jsx-email/block-notification-default ``` **Install the following dependencies:** ```bash npm install jsx-email ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { NotificationDefault } from "@/components/email/notification-default"; ``` ```tsx ``` ## API Reference [#api-reference] ### Notification Emails [#notification-emails] | Prop | Type | Default | Description | | ---------------- | -------- | ---------------- | ----------------------------------------- | | `logoUrl` | `string` | - | URL of the product logo | | `actorName` | `string` | `"Someone"` | Name of the user who performed the action | | `actorAvatarUrl` | `string` | - | URL of the user's avatar | | `_action` | `string` | `"notified you"` | Action description | | `_targetName` | `string` | `"your update"` | Name of the notification target | | `ctaLabel` | `string` | `"View"` | CTA button label | | `ctaHref` | `string` | `"#"` | CTA button link | | `_productName` | `string` | `"Acme"` | Product name | # Onboarding Emails ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/jsx-email/block-onboarding-default ``` **Install the following dependencies:** ```bash npm install jsx-email ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { OnboardingDefault } from "@/components/email/onboarding-default"; ``` ```tsx ``` ## API Reference [#api-reference] ### Onboarding Emails [#onboarding-emails] | Prop | Type | Default | Description | | -------------- | ----------------------------------- | --------------- | ----------------------- | | `logoUrl` | `string` | - | URL of the product logo | | `userName` | `string` | `"User"` | User's name | | `_productName` | `string` | `"Acme"` | Product name | | `features` | `Array<{icon, title, description}>` | - | Feature list | | `ctaLabel` | `string` | `"Get Started"` | CTA button label | | `ctaHref` | `string` | `"#"` | CTA button link | # Receipt Emails ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/jsx-email/block-receipt-default ``` **Install the following dependencies:** ```bash npm install jsx-email ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { ReceiptDefault } from "@/components/email/receipt-default"; ``` ```tsx ``` ## API Reference [#api-reference] ### Receipt Emails [#receipt-emails] | Prop | Type | Default | Description | | -------------- | ---------------------------------------- | -------- | ----------------------- | | `logoUrl` | `string` | - | URL of the product logo | | `logoAlt` | `string` | `"Logo"` | Alt text for logo | | `items` | `Array<{description, amount, quantity}>` | - | Line items | | `subtotal` | `string` | - | Subtotal amount | | `tax` | `string` | - | Tax amount | | `total` | `string` | - | Total amount | | `currency` | `string` | `"USD"` | Currency code | | `_productName` | `string` | `"Acme"` | Product name | # Authentication Emails ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/mjml-react/block-auth-otp-default ``` **Install the following dependencies:** ```bash npm install @faire/mjml-react mjml ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { AuthOtpDefault } from "@/components/email/auth-otp-default"; ``` ```tsx ``` ## API Reference [#api-reference] ### Authentication Emails [#authentication-emails] | Prop | Type | Default | Description | | ------------------ | -------- | ------------------- | ----------------------- | | `logoUrl` | `string` | - | URL of the product logo | | `_logoAlt` | `string` | `"Logo"` | Alt text for logo | | `otpCode` | `string` | `"123456"` | OTP code | | `expiresInMinutes` | `number` | `10` | Code expiration time | | `magicLink` | `string` | `"#"` | Magic link URL | | `_recipientEmail` | `string` | `"you@example.com"` | Recipient email | | `_productName` | `string` | `"Acme"` | Product name | # MJML React Blocks # Invitation Emails ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/mjml-react/block-invite-default ``` **Install the following dependencies:** ```bash npm install @faire/mjml-react mjml ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { InviteDefault } from "@/components/email/invite-default"; ``` ```tsx ``` ## API Reference [#api-reference] ### Invitation Emails [#invitation-emails] | Prop | Type | Default | Description | | ------------------ | -------- | ------------- | ----------------------- | | `logoUrl` | `string` | - | URL of the product logo | | `inviterName` | `string` | `"Someone"` | Name of the inviter | | `inviterAvatarUrl` | `string` | - | URL of inviter's avatar | | `_teamName` | `string` | `"Acme Team"` | Team or project name | | `role` | `string` | `"Member"` | Invited role | | `ctaLabel` | `string` | `"Join Team"` | CTA button label | | `ctaHref` | `string` | `"#"` | CTA button link | | `_productName` | `string` | `"Acme"` | Product name | # Newsletter Emails ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/mjml-react/block-newsletter-default ``` **Install the following dependencies:** ```bash npm install @faire/mjml-react mjml ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { NewsletterDefault } from "@/components/email/newsletter-default"; ``` ```tsx ``` ## API Reference [#api-reference] ### Newsletter Emails [#newsletter-emails] | Prop | Type | Default | Description | | ---------------- | --------------------------------------------- | -------------- | ----------------------- | | `logoUrl` | `string` | - | URL of the product logo | | `headerImageUrl` | `string` | - | Header image URL | | `title` | `string` | `"Newsletter"` | Newsletter title | | `preheader` | `string` | - | Preview text | | `_productName` | `string` | `"Acme"` | Product name | | `articles` | `Array<{title, description, imageUrl, href}>` | - | Featured articles | | `ctaLabel` | `string` | `"Read More"` | CTA button label | # Notification Emails ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/mjml-react/block-notification-default ``` **Install the following dependencies:** ```bash npm install @faire/mjml-react mjml ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { NotificationDefault } from "@/components/email/notification-default"; ``` ```tsx ``` ## API Reference [#api-reference] ### Notification Emails [#notification-emails] | Prop | Type | Default | Description | | ---------------- | -------- | ---------------- | ----------------------------------------- | | `logoUrl` | `string` | - | URL of the product logo | | `actorName` | `string` | `"Someone"` | Name of the user who performed the action | | `actorAvatarUrl` | `string` | - | URL of the user's avatar | | `_action` | `string` | `"notified you"` | Action description | | `_targetName` | `string` | `"your update"` | Name of the notification target | | `ctaLabel` | `string` | `"View"` | CTA button label | | `ctaHref` | `string` | `"#"` | CTA button link | | `_productName` | `string` | `"Acme"` | Product name | # Onboarding Emails ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/mjml-react/block-onboarding-default ``` **Install the following dependencies:** ```bash npm install @faire/mjml-react mjml ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { OnboardingDefault } from "@/components/email/onboarding-default"; ``` ```tsx ``` ## API Reference [#api-reference] ### Onboarding Emails [#onboarding-emails] | Prop | Type | Default | Description | | -------------- | ----------------------------------- | --------------- | ----------------------- | | `logoUrl` | `string` | - | URL of the product logo | | `userName` | `string` | `"User"` | User's name | | `_productName` | `string` | `"Acme"` | Product name | | `features` | `Array<{icon, title, description}>` | - | Feature list | | `ctaLabel` | `string` | `"Get Started"` | CTA button label | | `ctaHref` | `string` | `"#"` | CTA button link | # Receipt Emails ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/mjml-react/block-receipt-default ``` **Install the following dependencies:** ```bash npm install @faire/mjml-react mjml ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { ReceiptDefault } from "@/components/email/receipt-default"; ``` ```tsx ``` ## API Reference [#api-reference] ### Receipt Emails [#receipt-emails] | Prop | Type | Default | Description | | -------------- | ---------------------------------------- | -------- | ----------------------- | | `logoUrl` | `string` | - | URL of the product logo | | `logoAlt` | `string` | `"Logo"` | Alt text for logo | | `items` | `Array<{description, amount, quantity}>` | - | Line items | | `subtotal` | `string` | - | Subtotal amount | | `tax` | `string` | - | Tax amount | | `total` | `string` | - | Total amount | | `currency` | `string` | `"USD"` | Currency code | | `_productName` | `string` | `"Acme"` | Product name | # Authentication Emails ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/react-email/block-auth-otp-default ``` **Install the following dependencies:** ```bash npm install react-email tailwindcss ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { AuthOtpDefault } from "@/components/email/auth-otp-default"; ``` ```tsx ``` ## API Reference [#api-reference] ### Authentication Emails [#authentication-emails] | Prop | Type | Default | Description | | ------------------ | -------- | ------------------- | ----------------------- | | `logoUrl` | `string` | - | URL of the product logo | | `_logoAlt` | `string` | `"Logo"` | Alt text for logo | | `otpCode` | `string` | `"123456"` | OTP code | | `expiresInMinutes` | `number` | `10` | Code expiration time | | `magicLink` | `string` | `"#"` | Magic link URL | | `_recipientEmail` | `string` | `"you@example.com"` | Recipient email | | `_productName` | `string` | `"Acme"` | Product name | # React Email Blocks # Invitation Emails ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/react-email/block-invite-default ``` **Install the following dependencies:** ```bash npm install react-email tailwindcss ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { InviteDefault } from "@/components/email/invite-default"; ``` ```tsx ``` ## API Reference [#api-reference] ### Invitation Emails [#invitation-emails] | Prop | Type | Default | Description | | ------------------ | -------- | ------------- | ----------------------- | | `logoUrl` | `string` | - | URL of the product logo | | `inviterName` | `string` | `"Someone"` | Name of the inviter | | `inviterAvatarUrl` | `string` | - | URL of inviter's avatar | | `_teamName` | `string` | `"Acme Team"` | Team or project name | | `role` | `string` | `"Member"` | Invited role | | `ctaLabel` | `string` | `"Join Team"` | CTA button label | | `ctaHref` | `string` | `"#"` | CTA button link | | `_productName` | `string` | `"Acme"` | Product name | # Newsletter Emails ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/react-email/block-newsletter-default ``` **Install the following dependencies:** ```bash npm install react-email tailwindcss ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { NewsletterDefault } from "@/components/email/newsletter-default"; ``` ```tsx ``` ## API Reference [#api-reference] ### Newsletter Emails [#newsletter-emails] | Prop | Type | Default | Description | | ---------------- | --------------------------------------------- | -------------- | ----------------------- | | `logoUrl` | `string` | - | URL of the product logo | | `headerImageUrl` | `string` | - | Header image URL | | `title` | `string` | `"Newsletter"` | Newsletter title | | `preheader` | `string` | - | Preview text | | `_productName` | `string` | `"Acme"` | Product name | | `articles` | `Array<{title, description, imageUrl, href}>` | - | Featured articles | | `ctaLabel` | `string` | `"Read More"` | CTA button label | # Notification Emails ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/react-email/block-notification-default ``` **Install the following dependencies:** ```bash npm install react-email tailwindcss ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { NotificationDefault } from "@/components/email/notification-default"; ``` ```tsx ``` ## API Reference [#api-reference] ### Notification Emails [#notification-emails] | Prop | Type | Default | Description | | ---------------- | -------- | ---------------- | ----------------------------------------- | | `logoUrl` | `string` | - | URL of the product logo | | `actorName` | `string` | `"Someone"` | Name of the user who performed the action | | `actorAvatarUrl` | `string` | - | URL of the user's avatar | | `_action` | `string` | `"notified you"` | Action description | | `_targetName` | `string` | `"your update"` | Name of the notification target | | `ctaLabel` | `string` | `"View"` | CTA button label | | `ctaHref` | `string` | `"#"` | CTA button link | | `_productName` | `string` | `"Acme"` | Product name | # Onboarding Emails ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/react-email/block-onboarding-default ``` **Install the following dependencies:** ```bash npm install react-email tailwindcss ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { OnboardingDefault } from "@/components/email/onboarding-default"; ``` ```tsx ``` ## API Reference [#api-reference] ### Onboarding Emails [#onboarding-emails] | Prop | Type | Default | Description | | -------------- | ----------------------------------- | --------------- | ----------------------- | | `logoUrl` | `string` | - | URL of the product logo | | `userName` | `string` | `"User"` | User's name | | `_productName` | `string` | `"Acme"` | Product name | | `features` | `Array<{icon, title, description}>` | - | Feature list | | `ctaLabel` | `string` | `"Get Started"` | CTA button label | | `ctaHref` | `string` | `"#"` | CTA button link | # Receipt Emails ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/react-email/block-receipt-default ``` **Install the following dependencies:** ```bash npm install react-email tailwindcss ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { ReceiptDefault } from "@/components/email/receipt-default"; ``` ```tsx ``` ## API Reference [#api-reference] ### Receipt Emails [#receipt-emails] | Prop | Type | Default | Description | | -------------- | ---------------------------------------- | -------- | ----------------------- | | `logoUrl` | `string` | - | URL of the product logo | | `logoAlt` | `string` | `"Logo"` | Alt text for logo | | `items` | `Array<{description, amount, quantity}>` | - | Line items | | `subtotal` | `string` | - | Subtotal amount | | `tax` | `string` | - | Tax amount | | `total` | `string` | - | Total amount | | `currency` | `string` | `"USD"` | Currency code | | `_productName` | `string` | `"Acme"` | Product name | # React Email ## Marketing [#marketing] ### Bento Grids [#bento-grids] ### Blog [#blog] ### Coupons [#coupons] ### Cta [#cta] ### Feature [#feature] ### Footers [#footers] ### Headers [#headers] ### Heroes [#heroes] ### Images [#images] ### Pricing [#pricing] ### Stats [#stats] ### Timelines [#timelines] ## Ecommerce [#ecommerce] ### Order Summary [#order-summary] ### Product Detail [#product-detail] ## UI Elements [#ui-elements] ### Avatars [#avatars] ### Spacing [#spacing] # React Email ## Marketing [#marketing] ### Bento Grids [#bento-grids] ### Blog [#blog] ### Coupons [#coupons] ### Cta [#cta] ### Feature [#feature] ### Footers [#footers] ### Headers [#headers] ### Heroes [#heroes] ### Images [#images] ### Pricing [#pricing] ### Stats [#stats] ### Timelines [#timelines] ## Ecommerce [#ecommerce] ### Order Summary [#order-summary] ### Product Detail [#product-detail] ## UI Elements [#ui-elements] ### Avatars [#avatars] ### Spacing [#spacing] # React Email ## Marketing [#marketing] ### Bento Grids [#bento-grids] ### Blog [#blog] ### Coupons [#coupons] ### Cta [#cta] ### Feature [#feature] ### Footers [#footers] ### Headers [#headers] ### Heroes [#heroes] ### Images [#images] ### Pricing [#pricing] ### Stats [#stats] ### Timelines [#timelines] ## Ecommerce [#ecommerce] ### Order Summary [#order-summary] ### Product Detail [#product-detail] ## UI Elements [#ui-elements] ### Avatars [#avatars] ### Spacing [#spacing] # Collage Fonts ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/react-email/collage-fonts ``` **Install the following dependencies:** ```bash npm install react-email ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { CollageFonts } from "@/components/email/font-collage"; export default function Email() { return ( {/* email content */} ); } ``` ## Font Details [#font-details] | Property | Value | | ------------ | ----------------- | | Primary Font | Inter | | Fallback | Arial, sans-serif | | Weights | 300, 400, 500 | # Default Fonts ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/react-email/default-fonts ``` **Install the following dependencies:** ```bash npm install react-email ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { DefaultFonts } from "@/components/email/font-default"; export default function Email() { return ( {/* email content */} ); } ``` ## Font Details [#font-details] | Property | Value | | ------------ | ----------------- | | Primary Font | Inter | | Fallback | Arial, sans-serif | | Weights | 400, 500, 600 | # Dither Fonts ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/react-email/dither-fonts ``` **Install the following dependencies:** ```bash npm install react-email ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { DitherFonts } from "@/components/email/font-dither"; export default function Email() { return ( {/* email content */} ); } ``` ## Font Details [#font-details] | Property | Value | | -------------- | ----------------------------------------------------- | | Primary Font | IBM Plex Sans Condensed | | Secondary Font | Inter | | Fallback | Arial, sans-serif | | Weights | 300, 400, 500 (Inter) / 500 (IBM Plex Sans Condensed) | # Skin Fonts ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/react-email/skin-fonts ``` **Install the following dependencies:** ```bash npm install react-email ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { SkinFonts } from "@/components/email/font-skin"; export default function Email() { return ( {/* email content */} ); } ``` ## Font Details [#font-details] | Property | Value | | -------------- | ------------------------------------------------------------------------------ | | Primary Font | Instrument Serif | | Secondary Font | Inter | | Fallback | Georgia, Times New Roman, serif (Instrument Serif) / Arial, sans-serif (Inter) | | Weights | 400, 500, 600 | # Tech Fonts ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/react-email/tech-fonts ``` **Install the following dependencies:** ```bash npm install react-email ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { TechFonts } from "@/components/email/font-tech"; export default function Email() { return ( {/* email content */} ); } ``` ## Font Details [#font-details] | Property | Value | | -------------- | ----------------------- | | Primary Font | Geist | | Secondary Font | Inter | | Fallback | Arial, sans-serif | | Weights | 400, 450, 500, 600, 700 | # Airbnb Theme ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/react-email/theme-airbnb ``` **Install the following dependencies:** ```bash npm install react-email tailwindcss ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { Tailwind } from "react-email"; import { createEmailTailwindConfig } from "@/components/email/email-theme"; import { airbnbTheme } from "@/components/email/theme-airbnb"; {/* Your email content */} ; ``` # Default Theme ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/react-email/theme-default ``` **Install the following dependencies:** ```bash npm install react-email tailwindcss ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { Tailwind } from "react-email"; import { createEmailTailwindConfig } from "@/components/email/email-theme"; import { defaultTheme } from "@/components/email/theme-default"; {/* Your email content */} ; ``` ## Theme Tokens [#theme-tokens] | Token | Value | | ----------------- | ------------------------------------------------------------------- | | `colorPrimary` | `#111827` | | `colorBackground` | `#ffffff` | | `colorText` | `#111827` | | `colorTextMuted` | `#6b7280` | | `colorBorder` | `#e5e7eb` | | `fontFamily` | `-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif` | | `borderRadius` | `6px` | | `containerWidth` | `600px` | ## Button Styles [#button-styles] ### Primary Button [#primary-button] | Property | Value | | ------------- | --------------- | | Background | `#111827` | | Text | `#ffffff` | | Border Radius | `6px` | | Padding | `24px` x `12px` | | Font Size | `14px` | | Font Weight | `500` | ### Secondary Button [#secondary-button] | Property | Value | | ------------- | ------------------- | | Background | `transparent` | | Text | `#111827` | | Border | `1px solid #e5e7eb` | | Border Radius | `6px` | | Padding | `24px` x `12px` | | Font Size | `14px` | | Font Weight | `500` | # GitHub Theme ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/react-email/theme-github ``` **Install the following dependencies:** ```bash npm install react-email tailwindcss ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { Tailwind } from "react-email"; import { createEmailTailwindConfig } from "@/components/email/email-theme"; import { githubTheme } from "@/components/email/theme-github"; {/* Your email content */} ; ``` # Linear Theme ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/react-email/theme-linear ``` **Install the following dependencies:** ```bash npm install react-email tailwindcss ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { Tailwind } from "react-email"; import { createEmailTailwindConfig } from "@/components/email/email-theme"; import { linearTheme } from "@/components/email/theme-linear"; {/* Your email content */} ; ``` ## Theme Tokens [#theme-tokens] | Token | Value | | ----------------- | ------------------------------------ | | `colorPrimary` | `#5e6ad2` | | `colorBackground` | `#ffffff` | | `colorText` | `#111827` | | `colorTextMuted` | `#6b7280` | | `colorBorder` | `#e5e7eb` | | `fontFamily` | `"Inter", -apple-system, sans-serif` | | `borderRadius` | `6px` | | `containerWidth` | `600px` | ## Button Styles [#button-styles] ### Primary Button [#primary-button] | Property | Value | | ------------- | --------------- | | Background | `#5e6ad2` | | Text | `#ffffff` | | Border Radius | `6px` | | Padding | `24px` x `12px` | | Font Size | `14px` | | Font Weight | `500` | ### Secondary Button [#secondary-button] | Property | Value | | ------------- | ------------------- | | Background | `transparent` | | Text | `#5e6ad2` | | Border | `1px solid #5e6ad2` | | Border Radius | `6px` | | Padding | `24px` x `12px` | | Font Size | `14px` | | Font Weight | `500` | # Notion Theme ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/react-email/theme-notion ``` **Install the following dependencies:** ```bash npm install react-email tailwindcss ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { Tailwind } from "react-email"; import { createEmailTailwindConfig } from "@/components/email/email-theme"; import { notionTheme } from "@/components/email/theme-notion"; {/* Your email content */} ; ``` # Raycast Theme ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/react-email/theme-raycast ``` **Install the following dependencies:** ```bash npm install react-email tailwindcss ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { Tailwind } from "react-email"; import { createEmailTailwindConfig } from "@/components/email/email-theme"; import { raycastTheme } from "@/components/email/theme-raycast"; {/* Your email content */} ; ``` # Slack Theme ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/react-email/theme-slack ``` **Install the following dependencies:** ```bash npm install react-email tailwindcss ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { Tailwind } from "react-email"; import { createEmailTailwindConfig } from "@/components/email/email-theme"; import { slackTheme } from "@/components/email/theme-slack"; {/* Your email content */} ; ``` # Stripe Theme ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/react-email/theme-stripe ``` **Install the following dependencies:** ```bash npm install react-email tailwindcss ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { Tailwind } from "react-email"; import { createEmailTailwindConfig } from "@/components/email/email-theme"; import { stripeTheme } from "@/components/email/theme-stripe"; {/* Your email content */} ; ``` # Twitch Theme ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/react-email/theme-twitch ``` **Install the following dependencies:** ```bash npm install react-email tailwindcss ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { Tailwind } from "react-email"; import { createEmailTailwindConfig } from "@/components/email/email-theme"; import { twitchTheme } from "@/components/email/theme-twitch"; {/* Your email content */} ; ``` # Vercel Theme ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/react-email/theme-vercel ``` **Install the following dependencies:** ```bash npm install react-email tailwindcss ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { Tailwind } from "react-email"; import { createEmailTailwindConfig } from "@/components/email/email-theme"; import { vercelTheme } from "@/components/email/theme-vercel"; {/* Your email content */} ; ``` ## Theme Tokens [#theme-tokens] | Token | Value | | ----------------- | --------------------------------------------- | | `colorPrimary` | `#ffffff` | | `colorBackground` | `#000000` | | `colorText` | `#ffffff` | | `colorTextMuted` | `#a1a1a1` | | `colorBorder` | `#333333` | | `fontFamily` | `"Geist", "Inter", -apple-system, sans-serif` | | `borderRadius` | `6px` | | `containerWidth` | `600px` | ## Button Styles [#button-styles] ### Primary Button [#primary-button] | Property | Value | | ------------- | --------------- | | Background | `#ffffff` | | Text | `#000000` | | Border Radius | `6px` | | Padding | `24px` x `12px` | | Font Size | `14px` | | Font Weight | `500` | ### Secondary Button [#secondary-button] | Property | Value | | ------------- | ------------------- | | Background | `transparent` | | Text | `#ffffff` | | Border | `1px solid #333333` | | Border Radius | `6px` | | Padding | `24px` x `12px` | | Font Size | `14px` | | Font Weight | `500` | # Category Preview ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/jsx-email/category-preview ``` **Install the following dependencies:** ```bash npm install jsx-email ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { CategoryPreview } from "@/components/email/category-preview"; ``` ```tsx ``` ## Examples [#examples] ### Category preview with cards [#category-preview-with-cards] #### basic [#basic] #### with header [#with-header] #### with description [#with-description] #### with details [#with-details] #### full details [#full-details] #### header description [#header-description] #### header details [#header-details] #### header full details [#header-full-details] ### Category preview with rows [#category-preview-with-rows] #### basic [#basic-1] #### with header [#with-header-1] #### with description [#with-description-1] #### with details [#with-details-1] #### full details [#full-details-1] #### header description [#header-description-1] #### header details [#header-details-1] #### header full details [#header-full-details-1] ## API Reference [#api-reference] | Prop | Type | Default | Description | | ------------- | ----------------------------------------------------------------------------------------------------- | -------------- | --------------------------------------- | | `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. | | `layout` | `"cards" \| "rows"` | `"cards"` | Configures the component's layout. | | `detailLevel` | `"name" \| "description" \| "price" \| "full"` | `"name"` | Configures the component's detaillevel. | | `header` | `{ heading: string; description?: string }` | - | Configures the component's header. | | `items` | `Array<{ image: { src: string; alt?: string }; name: string; price?: string; description?: string }>` | - | Configures the component's items. | | `actionLabel` | `string` | - | Configures the component's actionlabel. | # Ecommerce ## Order Summary [#order-summary] ## Product Detail [#product-detail] # Product List ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/jsx-email/product-list ``` **Install the following dependencies:** ```bash npm install jsx-email ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { ProductList } from "@/components/email/product-list"; ``` ```tsx ``` ## Examples [#examples] ### Product list with rows [#product-list-with-rows] #### Basic [#basic] The default demo above covers this original component variant. #### With descriptions [#with-descriptions] #### Full details [#full-details] #### Reviews at the top [#reviews-at-the-top] #### With intro [#with-intro] #### With details [#with-details] #### Details with reviews at the top [#details-with-reviews-at-the-top] #### Full details with reviews at the top [#full-details-with-reviews-at-the-top] ## API Reference [#api-reference] | Prop | Type | Default | Description | | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | ----------------------------------------- | | `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. | | `products` | `Array<{ imageUrl?: string; name: string; price: string; quantity?: number; description?: string; details?: string; reviewCount?: number; href?: string }>` | Built-in products | Supplies the products displayed in rows. | | `variant` | `"basic" \| "reviews-top" \| "with-description" \| "with-intro" \| "with-details" \| "details-reviews-top" \| "full-details" \| "full-reviews-top"` | `"basic"` | Selects the product-row detail treatment. | # Reviews ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/jsx-email/reviews ``` **Install the following dependencies:** ```bash npm install jsx-email ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { Reviews } from "@/components/email/reviews"; ``` ```tsx ``` ## Examples [#examples] ### Full-width reviews [#full-width-reviews] #### with divider [#with-divider] #### simple [#simple] #### divider top [#divider-top] #### with logo [#with-logo] #### logo split [#logo-split] #### logo bottom [#logo-bottom] #### avatar inline [#avatar-inline] #### avatar inline split [#avatar-inline-split] #### avatar inline bottom [#avatar-inline-bottom] #### centered with avatar [#centered-with-avatar] #### centered avatar split [#centered-avatar-split] #### centered avatar bottom [#centered-avatar-bottom] #### avatar logo [#avatar-logo] #### avatar logo split [#avatar-logo-split] #### avatar logo bottom [#avatar-logo-bottom] #### avatar aside [#avatar-aside] #### avatar aside split [#avatar-aside-split] #### avatar aside reverse [#avatar-aside-reverse] ### Masonry grid reviews [#masonry-grid-reviews] #### with divider [#with-divider-1] #### simple [#simple-1] #### divider top [#divider-top-1] #### with logo [#with-logo-1] #### logo split [#logo-split-1] #### logo bottom [#logo-bottom-1] #### avatar inline [#avatar-inline-1] #### avatar inline split [#avatar-inline-split-1] #### avatar inline bottom [#avatar-inline-bottom-1] #### centered with avatar [#centered-with-avatar-1] #### centered avatar split [#centered-avatar-split-1] #### centered avatar bottom [#centered-avatar-bottom-1] #### avatar logo [#avatar-logo-1] #### avatar logo split [#avatar-logo-split-1] #### avatar logo bottom [#avatar-logo-bottom-1] ### Two-column reviews [#two-column-reviews] #### with divider [#with-divider-2] #### simple [#simple-2] #### divider top [#divider-top-2] #### with logo [#with-logo-2] #### logo split [#logo-split-2] #### logo bottom [#logo-bottom-2] #### avatar inline [#avatar-inline-2] #### avatar inline split [#avatar-inline-split-2] #### avatar inline bottom [#avatar-inline-bottom-2] #### centered with avatar [#centered-with-avatar-2] #### centered avatar split [#centered-avatar-split-2] #### centered avatar bottom [#centered-avatar-bottom-2] #### avatar logo [#avatar-logo-2] #### avatar logo split [#avatar-logo-split-2] #### avatar logo bottom [#avatar-logo-bottom-2] ## API Reference [#api-reference] | Prop | Type | Default | Description | | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------ | | `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. | | `items` | `Array<{ avatarUrl?: string; company?: string; date: string; logoAlt?: string; logoUrl?: string; logoWidth?: number; name: string; rating: number; text: string }>` | - | Configures the component's items. | | `layout` | `"full-width" \| "two-columns" \| "masonry"` | `"full-width"` | Configures the component's layout. | | `identity` | `"text" \| "logo" \| "avatar-inline" \| "avatar-centered" \| "avatar-logo" \| "avatar-aside"` | `"text"` | Configures the component's identity. | | `divider` | `"none" \| "top" \| "between" \| "bottom"` | `"none"` | Configures the component's divider. | | `reverse` | `boolean` | `false` | Configures the component's reverse. | # Shopping Cart ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/jsx-email/shopping-cart ``` **Install the following dependencies:** ```bash npm install jsx-email ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { ShoppingCart } from "@/components/email/shopping-cart"; ``` ```tsx ``` ## Examples [#examples] ### Shopping cart with row items [#shopping-cart-with-row-items] #### Basic [#basic] The default demo above covers this original component variant. #### With details [#with-details] #### Full details [#full-details] #### Alternate [#alternate] #### Details alternate [#details-alternate] #### Full details standard [#full-details-standard] #### With call to action [#with-call-to-action] ## API Reference [#api-reference] | Prop | Type | Default | Description | | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- | -------------------------------------- | | `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. | | `items` | `Array<{ colors?: string[]; description?: string; editHref?: string; imageUrl?: string; name: string; price: string; quantity: number; size?: string }>` | Built-in cart items | Supplies the cart items. | | `variant` | `"basic" \| "basic-alt" \| "with-details" \| "details-alt" \| "full-details" \| "full-details-alt" \| "example-with-cta"` | `"basic"` | Selects the cart-row detail treatment. | # Content ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/jsx-email/content ``` **Install the following dependencies:** ```bash npm install jsx-email ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { Content } from "@/components/email/content"; ``` ```tsx ``` ## Examples [#examples] ### Title with regular padding [#title-with-regular-padding] #### Left small [#left-small] #### Left large [#left-large] #### Centered small [#centered-small] #### Centered large [#centered-large] #### Right small [#right-small] #### Right large [#right-large] ### Title with large padding [#title-with-large-padding] #### Left small [#left-small-1] #### Left large [#left-large-1] #### Centered small [#centered-small-1] #### Centered large [#centered-large-1] #### Right small [#right-small-1] #### Right large [#right-large-1] ### Paragraph with regular padding [#paragraph-with-regular-padding] #### Lead left [#lead-left] #### Body left [#body-left] #### Lead centered [#lead-centered] #### Body centered [#body-centered] #### Lead right [#lead-right] #### Body right [#body-right] ### Paragraph with large padding [#paragraph-with-large-padding] #### Lead left [#lead-left-1] #### Body left [#body-left-1] #### Lead centered [#lead-centered-1] #### Body centered [#body-centered-1] #### Lead right [#lead-right-1] #### Body right [#body-right-1] ### Paragraph 2 columns with regular padding [#paragraph-2-columns-with-regular-padding] #### Lead left [#lead-left-2] #### Body left [#body-left-2] #### Lead centered [#lead-centered-2] #### Body centered [#body-centered-2] #### Lead right [#lead-right-2] #### Body right [#body-right-2] ### Paragraph 2 columns with large padding [#paragraph-2-columns-with-large-padding] #### Lead left [#lead-left-3] #### Body left [#body-left-3] #### Lead centered [#lead-centered-3] #### Body centered [#body-centered-3] #### Lead right [#lead-right-3] #### Body right [#body-right-3] ### Paragraph 2 columns with icons and regular padding [#paragraph-2-columns-with-icons-and-regular-padding] #### Lead left [#lead-left-4] #### Body left [#body-left-4] #### Lead centered [#lead-centered-4] #### Body centered [#body-centered-4] #### Lead right [#lead-right-4] #### Body right [#body-right-4] ### Paragraph 2 columns with icons and large padding [#paragraph-2-columns-with-icons-and-large-padding] #### Lead left [#lead-left-5] #### Body left [#body-left-5] #### Lead centered [#lead-centered-5] #### Body centered [#body-centered-5] #### Lead right [#lead-right-5] #### Body right [#body-right-5] ## API Reference [#api-reference] | Prop | Type | Default | Description | | ----------- | --------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------- | | `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. | | `layout` | `"title" \| "paragraph" \| "two-columns" \| "two-columns-with-icons"` | `"paragraph"` | Selects one of the four structural content layouts. | | `padding` | `"regular" \| "large"` | `"regular"` | Uses 24px or 64px horizontal padding. | | `alignment` | `"left" \| "center" \| "right"` | `"center"` | Aligns the title, paragraph, columns, and optional icons. | | `variant` | `"small" \| "large" \| "lead" \| "body"` | `"lead"` for paragraph layouts; `"small"` for title | Selects the valid typography treatment for the chosen layout. | | `title` | `string` | `"Stay in the loop by following us across our social channels."` | Title-layout text. | | `text` | `string` | `"Lead text introduces the reader to the key message of an email..."` | Single-paragraph text. | | `column1` | `string` | `"A brief introduction that highlights the key idea in a clear, engaging way."` | First column text. | | `column2` | `string` | `"A brief introduction that highlights the key idea in a clear, engaging way."` | Second column text. | | `iconSrc1` | `string` | `"https://cdn.simpleicons.org/github/111827"` | First icon source for the icon layout. | | `iconAlt1` | `string` | `"GitHub"` | First icon alternative text. | | `iconSrc2` | `string` | `"https://cdn.simpleicons.org/slack/4A154B"` | Second icon source for the icon layout. | | `iconAlt2` | `string` | `"Slack"` | Second icon alternative text. | # FAQ ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/jsx-email/faq ``` **Install the following dependencies:** ```bash npm install jsx-email ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { Faq } from "@/components/email/faq"; ``` ```tsx ``` ## Examples [#examples] ### Boxed FAQ with numbered questions [#boxed-faq-with-numbered-questions] #### default [#default] ### Boxed FAQ with numbers and alternating background colors [#boxed-faq-with-numbers-and-alternating-background-colors] #### default [#default-1] ### Collapsed FAQ with expanded section and icons [#collapsed-faq-with-expanded-section-and-icons] #### default [#default-2] ### Collapsed FAQ with inline CTA [#collapsed-faq-with-inline-cta] #### default [#default-3] ### Collapsed FAQ with numbers [#collapsed-faq-with-numbers] #### default [#default-4] ### Expanded FAQ with numbers [#expanded-faq-with-numbers] #### default [#default-5] ### Expanded FAQ with offset answers [#expanded-faq-with-offset-answers] #### default [#default-6] ## API Reference [#api-reference] | Prop | Type | Default | Description | | ---------------- | ------------------------------------------------------------------------------------ | ------------------------------ | ------------------------------------------ | | `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. | | `heading` | `string` | `"Frequently asked questions"` | Configures the component's heading. | | `items` | `Array<{ question: string; answer?: string; icon?: { alt?: string; src: string } }>` | - | Configures the component's items. | | `layout` | `"boxed" \| "collapsed" \| "expanded"` | `"boxed"` | Configures the component's layout. | | `marker` | `"number" \| "none" \| "icon"` | `"number"` | Configures the component's marker. | | `alternating` | `boolean` | `false` | Configures the component's alternating. | | `answerPosition` | `"stacked" \| "offset"` | `"stacked"` | Configures the component's answerposition. | | `action` | `{ href: string; label: string; text?: string }` | - | Configures the component's action. | # Marketing ## Bento Grids [#bento-grids] ## Blog [#blog] ## Coupons [#coupons] ## Cta [#cta] ## Feature [#feature] ## Footers [#footers] ## Headers [#headers] ## Heroes [#heroes] ## Images [#images] ## Pricing [#pricing] ## Stats [#stats] ## Timelines [#timelines] # Logo Cloud ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/jsx-email/logo-cloud ``` **Install the following dependencies:** ```bash npm install jsx-email ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { LogoCloud } from "@/components/email/logo-cloud"; ``` ```tsx ``` ## Examples [#examples] ### Basic logo cloud [#basic-logo-cloud] #### full [#full] #### minimal [#minimal] #### with-description [#with-description] #### with-title [#with-title] ### Logo cloud [#logo-cloud] #### Boxed full [#boxed-full] #### Boxed minimal [#boxed-minimal] #### Boxed with description [#boxed-with-description] #### Boxed with title [#boxed-with-title] #### Boxed flush [#boxed-flush] #### Outlined full [#outlined-full] #### Outlined minimal [#outlined-minimal] #### Outlined with description [#outlined-with-description] #### Outlined with title [#outlined-with-title] #### Outlined flush [#outlined-flush] ### Logo cloud with borders [#logo-cloud-with-borders] #### full [#full-1] #### minimal [#minimal-1] #### with-description [#with-description-1] #### with-title [#with-title-1] #### flush [#flush] ### Featured brands logo grid [#featured-brands-logo-grid] #### boxed left [#boxed-left] #### boxed center [#boxed-center] #### boxed right [#boxed-right] #### outlined left [#outlined-left] #### outlined center [#outlined-center] #### outlined right [#outlined-right] ### Logos grid [#logos-grid] #### boxed [#boxed] #### outlined [#outlined] #### bordered [#bordered] ## API Reference [#api-reference] | Prop | Type | Default | Description | | --------------- | ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | | `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. | | `title` | `string` | - | Configures the component's title. | | `description` | `string` | `"We created a personal account for you. Please confirm your e-mail address and use our service to the maximum"` | Configures the component's description. | | `logos` | `Array<{ alt: string; src: string; width: number }>` | Built-in logos | Configures the component's logos. | | `layout` | `"cloud" \| "grid" \| "featured"` | `"cloud"` | Configures the component's layout. | | `appearance` | `"plain" \| "boxed" \| "outlined" \| "bordered"` | `"plain"` | Configures the component's appearance. | | `alignment` | `"left" \| "center" \| "right"` | `"center"` | Configures the component's alignment. | | `featuredIndex` | `number` | `0` | Configures the component's featuredindex. | | `flush` | `boolean` | `false` | Removes the outer spacing where supported. | # Social Links ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/jsx-email/social-links ``` **Install the following dependencies:** ```bash npm install jsx-email ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { SocialLinks } from "@/components/email/social-links"; ``` ```tsx ``` ## Examples [#examples] ### Simple social logos row [#simple-social-logos-row] #### Full [#full] #### With lead [#with-lead] #### With title [#with-title] #### Minimal [#minimal] ### Square tiles social logos [#square-tiles-social-logos] #### Full [#full-1] #### With lead [#with-lead-1] #### With title [#with-title-1] #### Minimal [#minimal-1] ### Circle tiles social logos [#circle-tiles-social-logos] #### Full [#full-2] #### With lead [#with-lead-2] #### With title [#with-title-2] #### Minimal [#minimal-2] ### Outlined square tiles social logos [#outlined-square-tiles-social-logos] #### Full [#full-3] #### With lead [#with-lead-3] #### With title [#with-title-3] #### Minimal [#minimal-3] ### Outlined circle tiles social logos [#outlined-circle-tiles-social-logos] #### Full [#full-4] #### With lead [#with-lead-4] #### With title [#with-title-4] #### Minimal [#minimal-4] ### Squared box social logos [#squared-box-social-logos] #### Full [#full-5] #### With lead [#with-lead-5] #### With title [#with-title-5] #### Minimal [#minimal-5] ### Outlined box social logos [#outlined-box-social-logos] #### Full [#full-6] #### With lead [#with-lead-6] #### With title [#with-title-6] #### Minimal [#minimal-6] ### Pill box social logos [#pill-box-social-logos] #### Full [#full-7] #### With lead [#with-lead-7] #### With title [#with-title-7] #### Minimal [#minimal-7] ### Outlined pill box social logos [#outlined-pill-box-social-logos] #### Full [#full-8] #### With lead [#with-lead-8] #### With title [#with-title-8] #### Minimal [#minimal-8] ### Socials with inline labels [#socials-with-inline-labels] #### Full [#full-9] #### With lead [#with-lead-9] #### With title [#with-title-9] #### Minimal [#minimal-9] ### Socials with stacked labels [#socials-with-stacked-labels] #### Full [#full-10] #### With lead [#with-lead-10] #### With title [#with-title-10] #### Minimal [#minimal-10] ### Socials with inline tile labels [#socials-with-inline-tile-labels] #### Full [#full-11] #### With lead [#with-lead-11] #### With title [#with-title-11] #### Minimal [#minimal-11] ### Socials with stacked tile labels [#socials-with-stacked-tile-labels] #### Full [#full-12] #### With lead [#with-lead-12] #### With title [#with-title-12] #### Minimal [#minimal-12] ## API Reference [#api-reference] | Prop | Type | Default | Description | | -------------- | ------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | | `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. | | `content` | `"full" \| "lead" \| "title" \| "minimal"` | `"full"` | Controls whether the title and lead copy are displayed. | | `title` | `string` | `"Connect with us"` | Configures the component's title. | | `description` | `string` | `"Stay in the loop by following us across our social channels for updates, news, and behind-the-scenes moments."` | Configures the component's description. | | `items` | `Array<{ label?: string; href: string; icon: { alt?: string; src: string } }>` | Built-in items | Configures the component's items. | | `presentation` | `"icons" \| "labels"` | `"icons"` | Configures the component's presentation. | | `container` | `"none" \| "tile" \| "box" \| "pill"` | `"none"` | Configures the component's container. | | `shape` | `"square" \| "circle"` | `"square"` | Configures the component's shape. | | `outlined` | `boolean` | `false` | Configures the component's outlined. | | `direction` | `"inline" \| "stacked"` | `"inline"` | Configures the component's direction. | # Team ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/jsx-email/team ``` **Install the following dependencies:** ```bash npm install jsx-email ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { Team } from "@/components/email/team"; ``` ```tsx ``` ## Examples [#examples] ### 2-column team cards [#2-column-team-cards] #### default [#default] #### boxed [#boxed] #### boxed-alt [#boxed-alt] #### accent [#accent] #### accent-alt [#accent-alt] #### rounded [#rounded] #### rounded-accent [#rounded-accent] ### 2-column team cards with details [#2-column-team-cards-with-details] #### default [#default-1] #### boxed [#boxed-1] #### accent [#accent-1] ### 2-column compact [#2-column-compact] #### default [#default-2] #### border-top [#border-top] #### bordered [#bordered] #### accent [#accent-2] ### 3-column team grid [#3-column-team-grid] #### default [#default-3] #### bordered [#bordered-1] #### with-accent [#with-accent] #### with-hero [#with-hero] ### Horizontal team member bios [#horizontal-team-member-bios] #### image-left [#image-left] #### image-right [#image-right] #### image-left-accent [#image-left-accent] #### image-right-accent [#image-right-accent] ## API Reference [#api-reference] | Prop | Type | Default | Description | | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------- | ------------------------------------------------------- | | `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. | | `members` | `Array<{ name: string; role: string; avatar: { alt?: string; src: string }; bio?: string; email?: string }>` | - | Configures the component's members. | | `layout` | `"cards" \| "compact" \| "grid" \| "bios"` | `"cards"` | Configures the component's layout. | | `columns` | `2 \| 3` | `2` | Configures the component's columns. | | `appearance` | `"plain" \| "boxed" \| "bordered" \| "accent" \| "rounded"` | `"plain"` | Configures the component's appearance. | | `imagePosition` | `"left" \| "right"` | `"left"` | Configures the component's imageposition. | | `heroImage` | `{ src: string; alt?: string }` | - | Configures the component's heroimage. | | `details` | `boolean` | `false` | Includes biographies and email details in card layouts. | | `variant` | `"default" \| "boxed" \| "accent" \| "boxed-alt" \| "accent-alt" \| "rounded" \| "rounded-accent" \| "border-top" \| "bordered" \| "with-accent" \| "with-hero" \| "image-left" \| "image-right" \| "image-left-accent" \| "image-right-accent"` | Derived from the other props | Selects an exact legacy composition when needed. | # Testimonial ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/jsx-email/testimonial ``` **Install the following dependencies:** ```bash npm install jsx-email ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { Testimonial } from "@/components/email/testimonial"; ``` ```tsx ``` ## Examples [#examples] ### Centered testimonial with CTA [#centered-testimonial-with-cta] #### With quote [#with-quote] #### Text top [#text-top] #### Text bottom [#text-bottom] ### Split testimonial with CTA [#split-testimonial-with-cta] #### Image left [#image-left] #### Image right [#image-right] ### Full width testimonial [#full-width-testimonial] #### Left aligned [#left-aligned] #### Centered [#centered] #### Boxed left [#boxed-left] #### Boxed centered [#boxed-centered] #### Accent left [#accent-left] #### Accent centered [#accent-centered] ### Full width testimonial with overlapping avatar [#full-width-testimonial-with-overlapping-avatar] #### Bottom left [#bottom-left] #### Centered [#centered-1] #### Top left [#top-left] #### Top centered [#top-centered] ## API Reference [#api-reference] | Prop | Type | Default | Description | | ----------------- | ---------------------------------------- | --------------------------------- | ---------------------------------------------------------------- | | `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. | | `quote` | `string` | Layout-specific built-in copy | Sets the testimonial quote. | | `author` | `string` | Layout-specific built-in author | Sets the quoted person's name. | | `role` | `string` | Layout-specific built-in role | Sets the quoted person's role. | | `company` | `string` | `"Monarch"` | Sets the company used by CTA layouts. | | `avatar` | `{ src: string; alt?: string }` | Built-in avatar | Overrides the testimonial avatar. | | `logo` | `{ src: string; alt?: string }` | Appearance-specific built-in logo | Overrides the customer logo. | | `layout` | `"full-width" \| "centered" \| "split"` | `"full-width"` | Selects the testimonial's structural layout. | | `alignment` | `"left" \| "center"` | `"left"` | Aligns full-width testimonial content. | | `appearance` | `"plain" \| "boxed" \| "accent"` | `"plain"` | Styles an inline full-width testimonial. | | `avatarTreatment` | `"inline" \| "overlapping"` | `"inline"` | Places the full-width avatar inline or across the card boundary. | | `placement` | `"left" \| "right" \| "top" \| "bottom"` | Layout-specific | Positions the split image or overlapping avatar. | | `variant` | `"quote" \| "text-top" \| "text-bottom"` | `"quote"` | Selects the centered CTA content treatment. | | `action` | `{ href: string; label: string }` | Built-in case-study link | Overrides the action shown by centered and split CTA layouts. | # Button ## Installation [#installation] Command Manual ```bash npx shadcn@latest add @emailcn/jsx-email/button ``` **Install the following dependencies:** ```bash npm install jsx-email ``` **Copy and paste the following code into your project.** **Update the import paths to match your project setup.** ## Usage [#usage] ```tsx import { Button } from "@/components/email/button"; ``` ```tsx