# 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
```
## Examples [#examples]
### Buttons [#buttons]
#### primary [#primary]
#### primary leading icon [#primary-leading-icon]
#### primary trailing icon [#primary-trailing-icon]
#### secondary [#secondary]
#### secondary leading icon [#secondary-leading-icon]
#### secondary trailing icon [#secondary-trailing-icon]
#### text [#text]
#### text leading icon [#text-leading-icon]
#### text trailing icon [#text-trailing-icon]
### Button sizes [#button-sizes]
#### xs [#xs]
#### sm [#sm]
#### md [#md]
#### lg [#lg]
#### xl [#xl]
#### all [#all]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| -------------- | ----------------------------------------------- | ------------------------------- | ---------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `label` | `string` | Variant-specific label | Configures the component's label. |
| `href` | `string` | `"https://example.com"` | Configures the component's href. |
| `variant` | `"primary" \| "secondary" \| "text"` | `"primary"` | Configures the component's variant. |
| `size` | `"xs" \| "sm" \| "md" \| "lg" \| "xl" \| "all"` | `"all"` | Configures the component's size. |
| `icon` | `ReactNode` | Built-in icon for icon variants | Configures the component's icon. |
| `iconPosition` | `"leading" \| "trailing"` | `"leading"` | Configures the component's iconposition. |
| `align` | `"left" \| "center" \| "right"` | `"center"` | Configures the component's align. |
# Container
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/container
```
**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 { Container } from "@/components/email/container";
```
```tsx
```
## Examples [#examples]
### Container [#container]
#### mobile gutters [#mobile-gutters]
#### flush on mobile [#flush-on-mobile]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ---------- | ------------------------------- | -------------- | ------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `children` | `ReactNode` | - | Configures the component's children. |
| `maxWidth` | `string` | `"600px"` | Configures the component's maxwidth. |
| `align` | `"left" \| "center" \| "right"` | `"center"` | Configures the component's align. |
| `mobile` | `"flush" \| "gutters"` | `"gutters"` | Configures the component's mobile. |
# Data Table
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/data-table
```
**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 { DataTable } from "@/components/email/data-table";
```
```tsx
```
## Examples [#examples]
### Basic data table [#basic-data-table]
#### default [#default]
### Data table with 4 columns [#data-table-with-4-columns]
#### default [#default-1]
### Data table with change indicator pills [#data-table-with-change-indicator-pills]
#### default [#default-2]
### Data table with edit button [#data-table-with-edit-button]
#### default [#default-3]
### Data table with logos and action links [#data-table-with-logos-and-action-links]
#### default [#default-4]
### Data table with pills [#data-table-with-pills]
#### default [#default-5]
### Data table with progress bar [#data-table-with-progress-bar]
#### default [#default-6]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | -------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `variant` | `"basic" \| "four-columns" \| "change-indicators" \| "edit-actions" \| "logo-actions" \| "status-pills" \| "progress"` | `"basic"` | Selects one of the original data-table treatments. |
| `columns` | `Array<{ header: string; key?: keyof Row; align?: "left" \| "center" \| "right"; width?: string; cell?: (row: Row, index: number) => ReactNode }>` | Required when `variant="basic"` | Defines generic table columns and custom cells. |
| `headers` | `string[]` | Built-in headers for specialized variants | Overrides the specialized variant's header labels. |
| `rows` | `Row[] \| string[][] \| Array<{ change: string; direction: "down" \| "up"; name: string; value: string }> \| Array<{ editHref?: string; name: string; role: string }> \| Array<{ actionHref?: string; actionLabel?: string; logoUrl?: string; name: string }> \| Array<{ name: string; status: string; statusVariant: "active" \| "cancelled" \| "draft" \| "pending" }> \| Array<{ label: string; progress: number; value: string }>` | Built-in rows for specialized variants | Supplies rows using the selected variant's shape. |
`DataTableProps` is a discriminated union, so TypeScript narrows `rows` and the
other available props from the selected `variant`.
# Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/grid
```
**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 { Grid } from "@/components/email/grid";
```
```tsx
```
## Examples [#examples]
### One column grid [#one-column-grid]
#### Default [#default]
#### Flush [#flush]
### 2 columns grid [#2-columns-grid]
#### With gap [#with-gap]
#### No gap [#no-gap]
#### Flush [#flush-1]
#### Flush no gap [#flush-no-gap]
#### Gap reverse [#gap-reverse]
#### No gap reverse [#no-gap-reverse]
#### Flush no gap reverse [#flush-no-gap-reverse]
#### Flush reverse [#flush-reverse]
### 1/3 split grid [#13-split-grid]
#### With gap [#with-gap-1]
#### No gap [#no-gap-1]
#### Flush [#flush-2]
#### Flush no gap [#flush-no-gap-1]
#### Gap reverse [#gap-reverse-1]
#### No gap reverse [#no-gap-reverse-1]
#### Flush no gap reverse [#flush-no-gap-reverse-1]
#### Flush reverse [#flush-reverse-1]
### 3/1 split grid [#31-split-grid]
#### With gap [#with-gap-2]
#### No gap [#no-gap-2]
#### Flush [#flush-3]
#### Flush no gap [#flush-no-gap-2]
#### Gap reverse [#gap-reverse-2]
#### No gap reverse [#no-gap-reverse-2]
#### Flush no gap reverse [#flush-no-gap-reverse-2]
#### Flush reverse [#flush-reverse-2]
### 3 columns grid [#3-columns-grid]
#### With gap [#with-gap-3]
#### No gap [#no-gap-3]
#### Flush [#flush-4]
#### Flush no gap [#flush-no-gap-3]
#### Gap reverse [#gap-reverse-3]
#### No gap reverse [#no-gap-reverse-3]
#### Flush no gap reverse [#flush-no-gap-reverse-3]
#### Flush reverse [#flush-reverse-3]
### 4 columns grid [#4-columns-grid]
#### With gap [#with-gap-4]
#### No gap [#no-gap-4]
#### Flush [#flush-5]
#### Flush no gap [#flush-no-gap-4]
#### Gap reverse [#gap-reverse-4]
#### No gap reverse [#no-gap-reverse-4]
#### Flush no gap reverse [#flush-no-gap-reverse-4]
#### Flush reverse [#flush-reverse-4]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------- | -------------------------------------------------------------------------------------------------------------- | --------------- | ----------------------------------------------------------- |
| `align` | `"center" \| "left" \| "right"` | `"center"` | Aligns the text inside each cell. |
| `cells` | `string[]` | Built-in labels | Sets the cell content in visual order. |
| `flush` | `boolean` | `false` | Removes the 24px horizontal container gutters. |
| `gap` | `boolean` | `true` | Adds a 24px gap between columns. |
| `reverse` | `boolean` | `false` | Reverses the column order when the grid stacks on mobile. |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `variant` | `"one-column" \| "two-columns" \| "one-three-split" \| "three-one-split" \| "three-columns" \| "four-columns"` | `"two-columns"` | Selects the number and relative widths of the grid columns. |
# UI Elements
## Avatars [#avatars]
## Spacing [#spacing]
# Pills
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/pills
```
**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 { Pills } from "@/components/email/pills";
```
```tsx
```
## Examples [#examples]
### Mixed statuses [#mixed-statuses]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------- | -------------------------------------------------------------------------------------------------------------------- | -------------- | --------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `pills` | `Array<{ label: string; status?: "brand" \| "danger" \| "default" \| "error" \| "info" \| "success" \| "warning" }>` | Built-in pills | Configures the component's pills. |
# Progress
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/progress
```
**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 { Progress } from "@/components/email/progress";
```
```tsx
```
## Examples [#examples]
### Full-width progress bar [#full-width-progress-bar]
#### minimal [#minimal]
#### title [#title]
#### description [#description]
#### text-top [#text-top]
### Progress bar group [#progress-bar-group]
#### minimal [#minimal-1]
#### minimal padded [#minimal-padded]
#### title [#title-1]
#### title padded [#title-padded]
#### description [#description-1]
#### description padded [#description-padded]
#### text-top [#text-top-1]
#### text-top padded [#text-top-padded]
### Progress bar columns [#progress-bar-columns]
#### title [#title-2]
#### title padded [#title-padded-1]
#### description [#description-2]
#### description padded [#description-padded-1]
#### text-top [#text-top-2]
#### text-top padded [#text-top-padded-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------- | -------------------------------------------------------------------------------- | -------------- | ----------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `items` | `Array<{ title?: string; description?: string; value: number; color?: string }>` | Built-in items | Configures the component's items. |
| `layout` | `"single" \| "group" \| "columns"` | `"single"` | Configures the component's layout. |
| `padding` | `"none" \| "padded"` | `"none"` | Configures the component's padding. |
| `content` | `"minimal" \| "title" \| "description" \| "text-top"` | `"minimal"` | Configures the component's content. |
# Category Preview
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/category-preview
```
**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 { 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/mjml-react/product-list
```
**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 { 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/mjml-react/reviews
```
**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 { 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/mjml-react/shopping-cart
```
**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 { 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/mjml-react/content
```
**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 { 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/mjml-react/faq
```
**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 { 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/mjml-react/logo-cloud
```
**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 { 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/mjml-react/social-links
```
**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 { 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/mjml-react/team
```
**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 { 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/mjml-react/testimonial
```
**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 { 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/mjml-react/button
```
**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 { Button } from "@/components/email/button";
```
```tsx
```
## Examples [#examples]
### Buttons [#buttons]
#### primary [#primary]
#### primary leading icon [#primary-leading-icon]
#### primary trailing icon [#primary-trailing-icon]
#### secondary [#secondary]
#### secondary leading icon [#secondary-leading-icon]
#### secondary trailing icon [#secondary-trailing-icon]
#### text [#text]
#### text leading icon [#text-leading-icon]
#### text trailing icon [#text-trailing-icon]
### Button sizes [#button-sizes]
#### xs [#xs]
#### sm [#sm]
#### md [#md]
#### lg [#lg]
#### xl [#xl]
#### all [#all]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| -------------- | ----------------------------------------------- | ------------------------------- | ---------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `label` | `string` | Variant-specific label | Configures the component's label. |
| `href` | `string` | `"https://example.com"` | Configures the component's href. |
| `variant` | `"primary" \| "secondary" \| "text"` | `"primary"` | Configures the component's variant. |
| `size` | `"xs" \| "sm" \| "md" \| "lg" \| "xl" \| "all"` | `"all"` | Configures the component's size. |
| `icon` | `ReactNode` | Built-in icon for icon variants | Configures the component's icon. |
| `iconPosition` | `"leading" \| "trailing"` | `"leading"` | Configures the component's iconposition. |
| `align` | `"left" \| "center" \| "right"` | `"center"` | Configures the component's align. |
# Container
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/container
```
**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 { Container } from "@/components/email/container";
```
```tsx
```
## Examples [#examples]
### Container [#container]
#### mobile gutters [#mobile-gutters]
#### flush on mobile [#flush-on-mobile]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ---------- | ------------------------------- | -------------- | ------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `children` | `ReactNode` | - | Configures the component's children. |
| `maxWidth` | `string` | `"600px"` | Configures the component's maxwidth. |
| `align` | `"left" \| "center" \| "right"` | `"center"` | Configures the component's align. |
| `mobile` | `"flush" \| "gutters"` | `"gutters"` | Configures the component's mobile. |
# Data Table
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/data-table
```
**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 { DataTable } from "@/components/email/data-table";
```
```tsx
```
## Examples [#examples]
### Basic data table [#basic-data-table]
#### default [#default]
### Data table with 4 columns [#data-table-with-4-columns]
#### default [#default-1]
### Data table with change indicator pills [#data-table-with-change-indicator-pills]
#### default [#default-2]
### Data table with edit button [#data-table-with-edit-button]
#### default [#default-3]
### Data table with logos and action links [#data-table-with-logos-and-action-links]
#### default [#default-4]
### Data table with pills [#data-table-with-pills]
#### default [#default-5]
### Data table with progress bar [#data-table-with-progress-bar]
#### default [#default-6]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | -------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `variant` | `"basic" \| "four-columns" \| "change-indicators" \| "edit-actions" \| "logo-actions" \| "status-pills" \| "progress"` | `"basic"` | Selects one of the original data-table treatments. |
| `columns` | `Array<{ header: string; key?: keyof Row; align?: "left" \| "center" \| "right"; width?: string; cell?: (row: Row, index: number) => ReactNode }>` | Required when `variant="basic"` | Defines generic table columns and custom cells. |
| `headers` | `string[]` | Built-in headers for specialized variants | Overrides the specialized variant's header labels. |
| `rows` | `Row[] \| string[][] \| Array<{ change: string; direction: "down" \| "up"; name: string; value: string }> \| Array<{ editHref?: string; name: string; role: string }> \| Array<{ actionHref?: string; actionLabel?: string; logoUrl?: string; name: string }> \| Array<{ name: string; status: string; statusVariant: "active" \| "cancelled" \| "draft" \| "pending" }> \| Array<{ label: string; progress: number; value: string }>` | Built-in rows for specialized variants | Supplies rows using the selected variant's shape. |
`DataTableProps` is a discriminated union, so TypeScript narrows `rows` and the
other available props from the selected `variant`.
# Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/grid
```
**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 { Grid } from "@/components/email/grid";
```
```tsx
```
## Examples [#examples]
### One column grid [#one-column-grid]
#### Default [#default]
#### Flush [#flush]
### 2 columns grid [#2-columns-grid]
#### With gap [#with-gap]
#### No gap [#no-gap]
#### Flush [#flush-1]
#### Flush no gap [#flush-no-gap]
#### Gap reverse [#gap-reverse]
#### No gap reverse [#no-gap-reverse]
#### Flush no gap reverse [#flush-no-gap-reverse]
#### Flush reverse [#flush-reverse]
### 1/3 split grid [#13-split-grid]
#### With gap [#with-gap-1]
#### No gap [#no-gap-1]
#### Flush [#flush-2]
#### Flush no gap [#flush-no-gap-1]
#### Gap reverse [#gap-reverse-1]
#### No gap reverse [#no-gap-reverse-1]
#### Flush no gap reverse [#flush-no-gap-reverse-1]
#### Flush reverse [#flush-reverse-1]
### 3/1 split grid [#31-split-grid]
#### With gap [#with-gap-2]
#### No gap [#no-gap-2]
#### Flush [#flush-3]
#### Flush no gap [#flush-no-gap-2]
#### Gap reverse [#gap-reverse-2]
#### No gap reverse [#no-gap-reverse-2]
#### Flush no gap reverse [#flush-no-gap-reverse-2]
#### Flush reverse [#flush-reverse-2]
### 3 columns grid [#3-columns-grid]
#### With gap [#with-gap-3]
#### No gap [#no-gap-3]
#### Flush [#flush-4]
#### Flush no gap [#flush-no-gap-3]
#### Gap reverse [#gap-reverse-3]
#### No gap reverse [#no-gap-reverse-3]
#### Flush no gap reverse [#flush-no-gap-reverse-3]
#### Flush reverse [#flush-reverse-3]
### 4 columns grid [#4-columns-grid]
#### With gap [#with-gap-4]
#### No gap [#no-gap-4]
#### Flush [#flush-5]
#### Flush no gap [#flush-no-gap-4]
#### Gap reverse [#gap-reverse-4]
#### No gap reverse [#no-gap-reverse-4]
#### Flush no gap reverse [#flush-no-gap-reverse-4]
#### Flush reverse [#flush-reverse-4]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------- | -------------------------------------------------------------------------------------------------------------- | --------------- | ----------------------------------------------------------- |
| `align` | `"center" \| "left" \| "right"` | `"center"` | Aligns the text inside each cell. |
| `cells` | `string[]` | Built-in labels | Sets the cell content in visual order. |
| `flush` | `boolean` | `false` | Removes the 24px horizontal container gutters. |
| `gap` | `boolean` | `true` | Adds a 24px gap between columns. |
| `reverse` | `boolean` | `false` | Reverses the column order when the grid stacks on mobile. |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `variant` | `"one-column" \| "two-columns" \| "one-three-split" \| "three-one-split" \| "three-columns" \| "four-columns"` | `"two-columns"` | Selects the number and relative widths of the grid columns. |
# UI Elements
## Avatars [#avatars]
## Spacing [#spacing]
# Pills
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/pills
```
**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 { Pills } from "@/components/email/pills";
```
```tsx
```
## Examples [#examples]
### Mixed statuses [#mixed-statuses]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------- | -------------------------------------------------------------------------------------------------------------------- | -------------- | --------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `pills` | `Array<{ label: string; status?: "brand" \| "danger" \| "default" \| "error" \| "info" \| "success" \| "warning" }>` | Built-in pills | Configures the component's pills. |
# Progress
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/progress
```
**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 { Progress } from "@/components/email/progress";
```
```tsx
```
## Examples [#examples]
### Full-width progress bar [#full-width-progress-bar]
#### minimal [#minimal]
#### title [#title]
#### description [#description]
#### text-top [#text-top]
### Progress bar group [#progress-bar-group]
#### minimal [#minimal-1]
#### minimal padded [#minimal-padded]
#### title [#title-1]
#### title padded [#title-padded]
#### description [#description-1]
#### description padded [#description-padded]
#### text-top [#text-top-1]
#### text-top padded [#text-top-padded]
### Progress bar columns [#progress-bar-columns]
#### title [#title-2]
#### title padded [#title-padded-1]
#### description [#description-2]
#### description padded [#description-padded-1]
#### text-top [#text-top-2]
#### text-top padded [#text-top-padded-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------- | -------------------------------------------------------------------------------- | -------------- | ----------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `items` | `Array<{ title?: string; description?: string; value: number; color?: string }>` | Built-in items | Configures the component's items. |
| `layout` | `"single" \| "group" \| "columns"` | `"single"` | Configures the component's layout. |
| `padding` | `"none" \| "padded"` | `"none"` | Configures the component's padding. |
| `content` | `"minimal" \| "title" \| "description" \| "text-top"` | `"minimal"` | Configures the component's content. |
# Category Preview
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/category-preview
```
**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 { 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/react-email/product-list
```
**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 { 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/react-email/reviews
```
**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 { 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/react-email/shopping-cart
```
**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 { 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/react-email/content
```
**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 { 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/react-email/faq
```
**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 { 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/react-email/logo-cloud
```
**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 { 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/react-email/social-links
```
**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 { 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/react-email/team
```
**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 { 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/react-email/testimonial
```
**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 { 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/react-email/button
```
**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 { Button } from "@/components/email/button";
```
```tsx
```
## Examples [#examples]
### Buttons [#buttons]
#### primary [#primary]
#### primary leading icon [#primary-leading-icon]
#### primary trailing icon [#primary-trailing-icon]
#### secondary [#secondary]
#### secondary leading icon [#secondary-leading-icon]
#### secondary trailing icon [#secondary-trailing-icon]
#### text [#text]
#### text leading icon [#text-leading-icon]
#### text trailing icon [#text-trailing-icon]
### Button sizes [#button-sizes]
#### xs [#xs]
#### sm [#sm]
#### md [#md]
#### lg [#lg]
#### xl [#xl]
#### all [#all]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| -------------- | ----------------------------------------------- | ------------------------------- | ---------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `label` | `string` | Variant-specific label | Configures the component's label. |
| `href` | `string` | `"https://example.com"` | Configures the component's href. |
| `variant` | `"primary" \| "secondary" \| "text"` | `"primary"` | Configures the component's variant. |
| `size` | `"xs" \| "sm" \| "md" \| "lg" \| "xl" \| "all"` | `"all"` | Configures the component's size. |
| `icon` | `ReactNode` | Built-in icon for icon variants | Configures the component's icon. |
| `iconPosition` | `"leading" \| "trailing"` | `"leading"` | Configures the component's iconposition. |
| `align` | `"left" \| "center" \| "right"` | `"center"` | Configures the component's align. |
# Container
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/container
```
**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 { Container } from "@/components/email/container";
```
```tsx
```
## Examples [#examples]
### Container [#container]
#### mobile gutters [#mobile-gutters]
#### flush on mobile [#flush-on-mobile]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ---------- | ------------------------------- | -------------- | ------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `children` | `ReactNode` | - | Configures the component's children. |
| `maxWidth` | `string` | `"600px"` | Configures the component's maxwidth. |
| `align` | `"left" \| "center" \| "right"` | `"center"` | Configures the component's align. |
| `mobile` | `"flush" \| "gutters"` | `"gutters"` | Configures the component's mobile. |
# Data Table
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/data-table
```
**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 { DataTable } from "@/components/email/data-table";
```
```tsx
```
## Examples [#examples]
### Basic data table [#basic-data-table]
#### default [#default]
### Data table with 4 columns [#data-table-with-4-columns]
#### default [#default-1]
### Data table with change indicator pills [#data-table-with-change-indicator-pills]
#### default [#default-2]
### Data table with edit button [#data-table-with-edit-button]
#### default [#default-3]
### Data table with logos and action links [#data-table-with-logos-and-action-links]
#### default [#default-4]
### Data table with pills [#data-table-with-pills]
#### default [#default-5]
### Data table with progress bar [#data-table-with-progress-bar]
#### default [#default-6]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | -------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `variant` | `"basic" \| "four-columns" \| "change-indicators" \| "edit-actions" \| "logo-actions" \| "status-pills" \| "progress"` | `"basic"` | Selects one of the original data-table treatments. |
| `columns` | `Array<{ header: string; key?: keyof Row; align?: "left" \| "center" \| "right"; width?: string; cell?: (row: Row, index: number) => ReactNode }>` | Required when `variant="basic"` | Defines generic table columns and custom cells. |
| `headers` | `string[]` | Built-in headers for specialized variants | Overrides the specialized variant's header labels. |
| `rows` | `Row[] \| string[][] \| Array<{ change: string; direction: "down" \| "up"; name: string; value: string }> \| Array<{ editHref?: string; name: string; role: string }> \| Array<{ actionHref?: string; actionLabel?: string; logoUrl?: string; name: string }> \| Array<{ name: string; status: string; statusVariant: "active" \| "cancelled" \| "draft" \| "pending" }> \| Array<{ label: string; progress: number; value: string }>` | Built-in rows for specialized variants | Supplies rows using the selected variant's shape. |
`DataTableProps` is a discriminated union, so TypeScript narrows `rows` and the
other available props from the selected `variant`.
# Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/grid
```
**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 { Grid } from "@/components/email/grid";
```
```tsx
```
## Examples [#examples]
### One column grid [#one-column-grid]
#### Default [#default]
#### Flush [#flush]
### 2 columns grid [#2-columns-grid]
#### With gap [#with-gap]
#### No gap [#no-gap]
#### Flush [#flush-1]
#### Flush no gap [#flush-no-gap]
#### Gap reverse [#gap-reverse]
#### No gap reverse [#no-gap-reverse]
#### Flush no gap reverse [#flush-no-gap-reverse]
#### Flush reverse [#flush-reverse]
### 1/3 split grid [#13-split-grid]
#### With gap [#with-gap-1]
#### No gap [#no-gap-1]
#### Flush [#flush-2]
#### Flush no gap [#flush-no-gap-1]
#### Gap reverse [#gap-reverse-1]
#### No gap reverse [#no-gap-reverse-1]
#### Flush no gap reverse [#flush-no-gap-reverse-1]
#### Flush reverse [#flush-reverse-1]
### 3/1 split grid [#31-split-grid]
#### With gap [#with-gap-2]
#### No gap [#no-gap-2]
#### Flush [#flush-3]
#### Flush no gap [#flush-no-gap-2]
#### Gap reverse [#gap-reverse-2]
#### No gap reverse [#no-gap-reverse-2]
#### Flush no gap reverse [#flush-no-gap-reverse-2]
#### Flush reverse [#flush-reverse-2]
### 3 columns grid [#3-columns-grid]
#### With gap [#with-gap-3]
#### No gap [#no-gap-3]
#### Flush [#flush-4]
#### Flush no gap [#flush-no-gap-3]
#### Gap reverse [#gap-reverse-3]
#### No gap reverse [#no-gap-reverse-3]
#### Flush no gap reverse [#flush-no-gap-reverse-3]
#### Flush reverse [#flush-reverse-3]
### 4 columns grid [#4-columns-grid]
#### With gap [#with-gap-4]
#### No gap [#no-gap-4]
#### Flush [#flush-5]
#### Flush no gap [#flush-no-gap-4]
#### Gap reverse [#gap-reverse-4]
#### No gap reverse [#no-gap-reverse-4]
#### Flush no gap reverse [#flush-no-gap-reverse-4]
#### Flush reverse [#flush-reverse-4]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------- | -------------------------------------------------------------------------------------------------------------- | --------------- | ----------------------------------------------------------- |
| `align` | `"center" \| "left" \| "right"` | `"center"` | Aligns the text inside each cell. |
| `cells` | `string[]` | Built-in labels | Sets the cell content in visual order. |
| `flush` | `boolean` | `false` | Removes the 24px horizontal container gutters. |
| `gap` | `boolean` | `true` | Adds a 24px gap between columns. |
| `reverse` | `boolean` | `false` | Reverses the column order when the grid stacks on mobile. |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `variant` | `"one-column" \| "two-columns" \| "one-three-split" \| "three-one-split" \| "three-columns" \| "four-columns"` | `"two-columns"` | Selects the number and relative widths of the grid columns. |
# UI Elements
## Avatars [#avatars]
## Spacing [#spacing]
# Pills
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/pills
```
**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 { Pills } from "@/components/email/pills";
```
```tsx
```
## Examples [#examples]
### Mixed statuses [#mixed-statuses]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------- | -------------------------------------------------------------------------------------------------------------------- | -------------- | --------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `pills` | `Array<{ label: string; status?: "brand" \| "danger" \| "default" \| "error" \| "info" \| "success" \| "warning" }>` | Built-in pills | Configures the component's pills. |
# Progress
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/progress
```
**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 { Progress } from "@/components/email/progress";
```
```tsx
```
## Examples [#examples]
### Full-width progress bar [#full-width-progress-bar]
#### minimal [#minimal]
#### title [#title]
#### description [#description]
#### text-top [#text-top]
### Progress bar group [#progress-bar-group]
#### minimal [#minimal-1]
#### minimal padded [#minimal-padded]
#### title [#title-1]
#### title padded [#title-padded]
#### description [#description-1]
#### description padded [#description-padded]
#### text-top [#text-top-1]
#### text-top padded [#text-top-padded]
### Progress bar columns [#progress-bar-columns]
#### title [#title-2]
#### title padded [#title-padded-1]
#### description [#description-2]
#### description padded [#description-padded-1]
#### text-top [#text-top-2]
#### text-top padded [#text-top-padded-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------- | -------------------------------------------------------------------------------- | -------------- | ----------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `items` | `Array<{ title?: string; description?: string; value: number; color?: string }>` | Built-in items | Configures the component's items. |
| `layout` | `"single" \| "group" \| "columns"` | `"single"` | Configures the component's layout. |
| `padding` | `"none" \| "padded"` | `"none"` | Configures the component's padding. |
| `content` | `"minimal" \| "title" \| "description" \| "text-top"` | `"minimal"` | Configures the component's content. |
# Billing Details
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/billing-order-summary
```
**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 { BillingOrderSummary } from "@/components/email/billing-order-summary";
```
```tsx
```
## Examples [#examples]
### Order summary with billing details and payment method at the top [#order-summary-with-billing-details-and-payment-method-at-the-top]
#### basic [#basic]
#### basic with payment [#basic-with-payment]
#### basic with notes [#basic-with-notes]
#### basic full details [#basic-full-details]
#### bordered [#bordered]
#### bordered with payment [#bordered-with-payment]
#### bordered with notes [#bordered-with-notes]
#### bordered full details [#bordered-full-details]
### Order summary with billing details and payment method inline [#order-summary-with-billing-details-and-payment-method-inline]
#### basic [#basic-1]
#### basic with notes [#basic-with-notes-1]
#### bordered [#bordered-1]
#### bordered with notes [#bordered-with-notes-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | ----------------------- | -------------- | ------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `payment` | `boolean` | - | Shows the payment-method treatment. |
| `notes` | `boolean` | - | Shows the notes treatment. |
| `billingPosition` | `"top" \| "inline"` | `"top"` | Positions billing details above or inline. |
| `appearance` | `"plain" \| "bordered"` | `"plain"` | Selects the plain or bordered presentation. |
# Order Summary
# Table
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/order-summary-table
```
**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 { OrderSummaryTable } from "@/components/email/order-summary-table";
```
```tsx
```
## Examples [#examples]
### Bordered order summary with total at the bottom [#bordered-order-summary-with-total-at-the-bottom]
#### left [#left]
#### centered [#centered]
#### right [#right]
#### justified [#justified]
### Bordered order summary with total at the top [#bordered-order-summary-with-total-at-the-top]
#### left [#left-1]
#### centered [#centered-1]
#### right [#right-1]
#### justified [#justified-1]
### Bordered order summary with card details [#bordered-order-summary-with-card-details]
#### bottom left [#bottom-left]
#### bottom centered [#bottom-centered]
#### bottom right [#bottom-right]
#### bottom justified [#bottom-justified]
#### top left [#top-left]
#### top centered [#top-centered]
#### top right [#top-right]
#### top justified [#top-justified]
### Boxed order summary with total at the bottom [#boxed-order-summary-with-total-at-the-bottom]
#### left aligned [#left-aligned]
#### left filled [#left-filled]
#### centered [#centered-2]
#### centered filled [#centered-filled]
#### right aligned [#right-aligned]
#### right filled [#right-filled]
#### justified [#justified-2]
#### justified filled [#justified-filled]
### Boxed order summary with total at the top [#boxed-order-summary-with-total-at-the-top]
#### left aligned [#left-aligned-1]
#### left filled [#left-filled-1]
#### centered [#centered-3]
#### centered filled [#centered-filled-1]
#### right aligned [#right-aligned-1]
#### right filled [#right-filled-1]
#### justified [#justified-3]
#### justified filled [#justified-filled-1]
### Boxed order summary with card details and total at the bottom [#boxed-order-summary-with-card-details-and-total-at-the-bottom]
#### left aligned [#left-aligned-2]
#### left filled [#left-filled-2]
#### centered [#centered-4]
#### centered filled [#centered-filled-2]
#### right aligned [#right-aligned-2]
#### right filled [#right-filled-2]
#### justified [#justified-4]
#### justified filled [#justified-filled-2]
### Boxed order summary with card details and total at the top [#boxed-order-summary-with-card-details-and-total-at-the-top]
#### left aligned [#left-aligned-3]
#### left filled [#left-filled-3]
#### centered [#centered-5]
#### centered filled [#centered-filled-3]
#### right aligned [#right-aligned-3]
#### right filled [#right-filled-3]
#### justified [#justified-5]
#### justified filled [#justified-filled-3]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------- | ---------------------------------------------- | -------------- | ----------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `alignment` | `"left" \| "center" \| "right" \| "justified"` | `"left"` | Aligns the order-summary values. |
| `appearance` | `"bordered" \| "boxed"` | `"bordered"` | Selects the bordered or boxed presentation. |
| `filled` | `boolean` | `false` | Uses the filled table treatment when supported. |
| `totalPosition` | `"top" \| "bottom"` | `"bottom"` | Places the order total above or below rows. |
| `cardDetails` | `boolean` | `false` | Shows the card-details treatment. |
# Product Detail
# Masonry Images
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/masonry-product-detail
```
**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 { MasonryProductDetail } from "@/components/email/masonry-product-detail";
```
```tsx
```
## Examples [#examples]
### Product detail with masonry image grid and details [#product-detail-with-masonry-image-grid-and-details]
#### rating at the bottom [#rating-at-the-bottom]
#### rating at the top [#rating-at-the-top]
#### rating aside [#rating-aside]
#### rating aside with header at the top [#rating-aside-with-header-at-the-top]
#### header at the top [#header-at-the-top]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `product` | `{ name?: string; price?: string; description?: string; features?: string[]; colors?: string[]; sizes?: string[]; ctaLabel?: string; ctaHref?: string }` | - | Configures the component's product. |
| `images` | `Array<{ src: string; alt?: string }>` | - | Configures the component's images. |
| `ratingPosition` | `"top" \| "bottom" \| "aside"` | `"bottom"` | Configures the component's ratingposition. |
| `headerPosition` | `"top" \| "default"` | `"default"` | Configures the component's headerposition. |
# Single Image
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/single-image-product-detail
```
**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 { SingleImageProductDetail } from "@/components/email/single-image-product-detail";
```
```tsx
```
## Examples [#examples]
### Single-image product detail with details [#single-image-product-detail-with-details]
#### rating at the bottom [#rating-at-the-bottom]
#### rating at the top [#rating-at-the-top]
#### rating aside [#rating-aside]
#### rating aside with header at the top [#rating-aside-with-header-at-the-top]
#### header at the top [#header-at-the-top]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `product` | `{ name?: string; price?: string; description?: string; features?: string[]; colors?: string[]; sizes?: string[]; ctaLabel?: string; ctaHref?: string }` | - | Configures the component's product. |
| `image` | `{ src: string; alt?: string }` | - | Configures the component's image. |
| `ratingPosition` | `"top" \| "bottom" \| "aside"` | `"bottom"` | Configures the component's ratingposition. |
| `headerPosition` | `"top" \| "default"` | `"default"` | Configures the component's headerposition. |
# Split
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/split-product-detail
```
**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 { SplitProductDetail } from "@/components/email/split-product-detail";
```
```tsx
```
## Examples [#examples]
### Split product detail [#split-product-detail]
#### stacked left [#stacked-left]
#### stacked right [#stacked-right]
#### side left [#side-left]
#### side right [#side-right]
#### rating left [#rating-left]
#### rating right [#rating-right]
#### bleed left [#bleed-left]
#### bleed right [#bleed-right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `product` | `{ name?: string; price?: string; description?: string; features?: string[]; colors?: string[]; sizes?: string[]; ctaLabel?: string; ctaHref?: string }` | - | Configures the component's product. |
| `images` | `Array<{ src: string; alt?: string }>` | - | Configures the component's images. |
| `treatment` | `"stacked" \| "side" \| "rating" \| "bleed"` | `"stacked"` | Configures the component's treatment. |
| `placement` | `"left" \| "right"` | `"left"` | Configures the component's placement. |
# Three Images
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/three-image-product-detail
```
**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 { ThreeImageProductDetail } from "@/components/email/three-image-product-detail";
```
```tsx
```
## Examples [#examples]
### Product detail with three images and details [#product-detail-with-three-images-and-details]
#### rating at the bottom [#rating-at-the-bottom]
#### rating at the top [#rating-at-the-top]
#### rating aside [#rating-aside]
#### rating aside with header at the top [#rating-aside-with-header-at-the-top]
#### header at the top [#header-at-the-top]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `product` | `{ name?: string; price?: string; description?: string; features?: string[]; colors?: string[]; sizes?: string[]; ctaLabel?: string; ctaHref?: string }` | - | Configures the component's product. |
| `images` | `[{ src: string; alt?: string }, { src: string; alt?: string }, { src: string; alt?: string }]` | - | Configures the component's images. |
| `ratingPosition` | `"top" \| "bottom" \| "aside"` | `"bottom"` | Configures the component's ratingposition. |
| `headerPosition` | `"top" \| "default"` | `"default"` | Configures the component's headerposition. |
# Two Images
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/two-image-product-detail
```
**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 { TwoImageProductDetail } from "@/components/email/two-image-product-detail";
```
```tsx
```
## Examples [#examples]
### Product detail with two images and details [#product-detail-with-two-images-and-details]
#### rating at the bottom [#rating-at-the-bottom]
#### rating at the top [#rating-at-the-top]
#### rating aside [#rating-aside]
#### rating aside with header at the top [#rating-aside-with-header-at-the-top]
#### header at the top [#header-at-the-top]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `product` | `{ name?: string; price?: string; description?: string; features?: string[]; colors?: string[]; sizes?: string[]; ctaLabel?: string; ctaHref?: string }` | - | Configures the component's product. |
| `images` | `[{ src: string; alt?: string }, { src: string; alt?: string }]` | - | Configures the component's images. |
| `ratingPosition` | `"top" \| "bottom" \| "aside"` | `"bottom"` | Configures the component's ratingposition. |
| `headerPosition` | `"top" \| "default"` | `"default"` | Configures the component's headerposition. |
# Image Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/bento-image-grid
```
**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 { BentoImageGrid } from "@/components/email/bento-image-grid";
```
```tsx
```
## Examples [#examples]
### Bento grid with images and captions [#bento-grid-with-images-and-captions]
#### captions-top [#captions-top]
#### captions-top-reverse [#captions-top-reverse]
#### captions-bottom [#captions-bottom]
#### captions-bottom-reverse [#captions-bottom-reverse]
### Bento grid with images and details [#bento-grid-with-images-and-details]
#### captions-top [#captions-top-1]
#### captions-top-reverse [#captions-top-reverse-1]
#### captions-top-alt [#captions-top-alt]
#### captions-top-alt-reverse [#captions-top-alt-reverse]
#### captions-bottom [#captions-bottom-1]
#### captions-bottom-reverse [#captions-bottom-reverse-1]
#### captions-bottom-alt [#captions-bottom-alt]
#### captions-bottom-alt-reverse [#captions-bottom-alt-reverse]
### Bento grid with 3 columns and flush images [#bento-grid-with-3-columns-and-flush-images]
#### captions-top [#captions-top-2]
#### captions-top-alt [#captions-top-alt-1]
#### captions-bottom [#captions-bottom-2]
#### captions-bottom-alt [#captions-bottom-alt-1]
### Bento grid with 3 columns and padded images [#bento-grid-with-3-columns-and-padded-images]
#### captions-top [#captions-top-3]
#### captions-top-alt [#captions-top-alt-2]
#### captions-bottom [#captions-bottom-3]
#### captions-bottom-alt [#captions-bottom-alt-2]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------- | -------------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `variant` | `"alternating" \| "three-column"` | `"alternating"` | Selects the alternating or three-column layout. |
| `style` | `"captions" \| "details" \| "flush" \| "padded"` | `"captions"` | Selects the card treatment supported by the layout. |
| `placement` | `"captions-top" \| "captions-top-reverse" \| "captions-bottom" \| "captions-bottom-reverse" \| "captions-top-alt" \| "captions-top-alt-reverse" \| "captions-bottom-alt" \| "captions-bottom-alt-reverse"` | `"captions-top"` | Controls caption placement and reversal. |
| `data` | `[{ description?: string; imageAlt: string; imageSrc: string; title: string }, { description?: string; imageAlt: string; imageSrc: string; title: string }, { description?: string; imageAlt: string; imageSrc: string; title: string }, { description?: string; imageAlt: string; imageSrc: string; title: string }] \| { left: { description?: string; imageAlt: string; imageSrc: string; title: string }; middleImages: [{ description?: string; imageAlt: string; imageSrc: string; title: string }] \| [{ description?: string; imageAlt: string; imageSrc: string; title: string }, { description?: string; imageAlt: string; imageSrc: string; title: string }]; promo?: { dark?: boolean; description: string; title: string }; right: { description?: string; imageAlt: string; imageSrc: string; title: string } }` | Built-in data for the selected layout | Replaces the image data for the selected layout variant. |
`BentoImageGridProps` is a discriminated union. The selected `variant` narrows
the supported `style`, `placement`, and `data` shape.
# Product Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/bento-product-grid
```
**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 { BentoProductGrid } from "@/components/email/bento-product-grid";
```
```tsx
```
## Examples [#examples]
### Bento grid with two rows and 3-column second row [#bento-grid-with-two-rows-and-3-column-second-row]
#### full [#full]
#### full reverse [#full-reverse]
#### left [#left]
#### left reverse [#left-reverse]
#### right [#right]
#### right reverse [#right-reverse]
#### sides [#sides]
#### sides reverse [#sides-reverse]
### Bento grid with even split and two-thirds [#bento-grid-with-even-split-and-two-thirds]
#### full [#full-1]
#### full reverse [#full-reverse-1]
#### left [#left-1]
#### left reverse [#left-reverse-1]
#### right [#right-1]
#### right reverse [#right-reverse-1]
#### sides [#sides-1]
#### sides reverse [#sides-reverse-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- | ---------------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `variant` | `"two-row-three-column" \| "even-split-two-thirds"` | `"two-row-three-column"` | Selects the product-grid layout. |
| `style` | `"full" \| "left" \| "right" \| "sides"` | `"full"` | Controls which product cards use padded treatment. |
| `placement` | `"normal" \| "reverse"` | `"normal"` | Keeps or reverses the row treatment. |
| `data` | `{ bottom: [{ price: string; description?: string; imageAlt: string; imageSrc: string; title: string }, { price: string; description?: string; imageAlt: string; imageSrc: string; title: string }, { price: string; description?: string; imageAlt: string; imageSrc: string; title: string }]; top: [{ price: string; description?: string; imageAlt: string; imageSrc: string; title: string }, { price: string; description?: string; imageAlt: string; imageSrc: string; title: string }] } \| { bottom: [{ price: string; description?: string; imageAlt: string; imageSrc: string; title: string }, { price: string; description?: string; imageAlt: string; imageSrc: string; title: string }]; top: [{ price: string; description?: string; imageAlt: string; imageSrc: string; title: string }, { price: string; description?: string; imageAlt: string; imageSrc: string; title: string }] }` | Built-in data for the selected layout | Replaces the product data for the selected layout variant. |
`BentoProductGridProps` is a discriminated union. The selected `variant`
narrows the accepted `data` shape.
# Stats Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/bento-stats-grid
```
**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 { BentoStatsGrid } from "@/components/email/bento-stats-grid";
```
```tsx
```
## Examples [#examples]
### Two-thirds bento grid with stats [#two-thirds-bento-grid-with-stats]
#### image-top-right [#image-top-right]
#### image-top-left [#image-top-left]
#### image-bottom-right [#image-bottom-right]
#### image-bottom-left [#image-bottom-left]
### Bento grid with even split and image stats [#bento-grid-with-even-split-and-image-stats]
#### image-top-right [#image-top-right-1]
#### image-top-left [#image-top-left-1]
#### image-bottom-right [#image-bottom-right-1]
#### image-bottom-left [#image-bottom-left-1]
### Bento grid with even split and text stats [#bento-grid-with-even-split-and-text-stats]
#### image-top-right [#image-top-right-2]
#### image-top-left [#image-top-left-2]
#### image-bottom-right [#image-bottom-right-2]
#### image-bottom-left [#image-bottom-left-2]
### Bento grid with 3 columns and even split image stats [#bento-grid-with-3-columns-and-even-split-image-stats]
#### image-top-right [#image-top-right-3]
#### image-top-left [#image-top-left-3]
#### image-bottom-right [#image-bottom-right-3]
#### image-bottom-left [#image-bottom-left-3]
### Bento grid with 3 columns and even split text stats [#bento-grid-with-3-columns-and-even-split-text-stats]
#### image-top-right [#image-top-right-4]
#### image-top-left [#image-top-left-4]
#### image-bottom-right [#image-bottom-right-4]
#### image-bottom-left [#image-bottom-left-4]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- | -------------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `variant` | `"two-thirds" \| "even-split" \| "three-column"` | `"two-thirds"` | Selects the stats-grid layout. |
| `style` | `"compact" \| "chart" \| "text"` | `"compact"` | Selects the metric-card treatment supported by layout. |
| `placement` | `"image-top-right" \| "image-top-left" \| "image-bottom-right" \| "image-bottom-left"` | `"image-top-right"` | Positions the image card in the selected layout. |
| `data` | `{ feature: { description: string; title: string }; imageAlt: string; imageSrc: string; metric: { change: string; period: string; title: string; value: string }; stat: { label: string; suffix: string; value: string } } \| { feature: { description: string; title: string }; imageAlt: string; imageSrc: string; metric: { change: string; comparison?: string; reportHref: string; reportLabel: string; title: string; value: string }; stat: { label: string; suffix: string; value: string } } \| { imageAlt: string; imageSrc: string; metric: { change: string; comparison?: string; reportHref: string; reportLabel: string; title: string; value: string }; stats: [{ label: string; suffix: string; value: string }, { label: string; suffix: string; value: string }, { label: string; suffix: string; value: string }] }` | Built-in data for the selected layout | Replaces the stats data for the selected layout variant. |
`BentoStatsGridProps` is a discriminated union. The selected `variant` narrows
the supported `style` and `data` shape.
# Bento Grids
# Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/blog-grid
```
**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 { BlogGrid } from "@/components/email/blog-grid";
```
```tsx
```
## Examples [#examples]
### 2-column blog with images [#2-column-blog-with-images]
#### default [#default]
### 2-column blog with images and text [#2-column-blog-with-images-and-text]
#### default [#default-1]
### 2-column blog with images and boxed content [#2-column-blog-with-images-and-boxed-content]
#### default [#default-2]
### Blog with images and 2-column masonry [#blog-with-images-and-2-column-masonry]
#### default [#default-3]
### 2-column masonry blog with boxed content [#2-column-masonry-blog-with-boxed-content]
#### default [#default-4]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- | ----------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | - | Configures the component's heading. |
| `posts` | `Array<{ title: string; excerpt?: string; image?: { alt?: string; src: string }; author?: string; badge?: string; date?: string; month?: string; episode?: string; host?: string }>` | - | Configures the component's posts. |
| `masonry` | `boolean` | `false` | Uses the masonry layout. |
| `content` | `"image" \| "image-text" \| "boxed"` | `"image"` | Selects the post-card treatment. |
# Featured Post
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/featured-blog-post
```
**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 { FeaturedBlogPost } from "@/components/email/featured-blog-post";
```
```tsx
```
## Examples [#examples]
### Featured blog post [#featured-blog-post]
#### default [#default]
### Featured post with large date [#featured-post-with-large-date]
#### default [#default-1]
### Full-width featured post with large date [#full-width-featured-post-with-large-date]
#### default [#default-2]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `post` | `{ title: string; excerpt?: string; image?: { alt?: string; src: string }; author?: string; badge?: string; date?: string; month?: string; episode?: string; host?: string }` | - | Configures the component's post. |
| `width` | `"contained" \| "full"` | `"contained"` | Configures the component's width. |
| `dateStyle` | `"none" \| "large"` | `"none"` | Configures the component's datestyle. |
# Horizontal Post
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/horizontal-blog-post
```
**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 { HorizontalBlogPost } from "@/components/email/horizontal-blog-post";
```
```tsx
```
## Examples [#examples]
### Single post horizontal [#single-post-horizontal]
#### default [#default]
### Blog post horizontal boxed [#blog-post-horizontal-boxed]
#### default [#default-1]
### Blog post horizontal boxed with split images [#blog-post-horizontal-boxed-with-split-images]
#### default [#default-2]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ----------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `post` | `{ title: string; excerpt?: string; image?: { alt?: string; src: string }; author?: string; badge?: string; date?: string; month?: string; episode?: string; host?: string }` | - | Configures the component's post. |
| `surface` | `"plain" \| "boxed"` | `"plain"` | Configures the component's surface. |
| `media` | `"single" \| "split"` | `"single"` | Configures the component's media. |
# Blog
# Podcast
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/podcast-blog
```
**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 { PodcastBlog } from "@/components/email/podcast-blog";
```
```tsx
```
## Examples [#examples]
### Podcast blog split [#podcast-blog-split]
#### default [#default]
### Podcast full width [#podcast-full-width]
#### default [#default-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | --------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `post` | `{ title: string; excerpt?: string; image?: { alt?: string; src: string }; author?: string; badge?: string; date?: string; month?: string; episode?: string; host?: string }` | - | Configures the component's post. |
| `width` | `"split" \| "full"` | `"split"` | Configures the component's width. |
# Card
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/card-coupons
```
**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 { CardCoupons } from "@/components/email/card-coupons";
```
```tsx
```
## Examples [#examples]
### Pattern [#pattern]
### Background image [#background-image]
### Overlay [#overlay]
### Background image header [#background-image-header]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------------- | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | - | Configures the component's heading. |
| `recipient` | `string` | `"Jenna Adams"` | Configures the component's recipient. |
| `code` | `string` | `"WINTER20OFF"` | Configures the component's code. |
| `description` | `string` | `"Use code: WINTER20OFF at checkout, or click the link below to automatically apply the discount to your order."` | Configures the component's description. |
| `logoSrc` | `string` | - | Configures the component's logosrc. |
| `logoAlt` | `string` | `"Maizzle"` | Configures the component's logoalt. |
| `backgroundImageSrc` | `string` | - | Configures the component's backgroundimagesrc. |
| `buttonLabel` | `string` | `"Shop now"` | Configures the component's buttonlabel. |
| `buttonHref` | `string` | `"https://example.com"` | Configures the component's buttonhref. |
| `arrowIconSrc` | `string` | `"https://placehold.co/64x64/C2410C/FFFFFF.png?text=Arrow%20Right"` | Configures the component's arrowiconsrc. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
| `cardBackgroundColor` | `string` | `"#1f2937"` | Configures the component's cardbackgroundcolor. |
| `codeBackgroundColor` | `string` | `"#f3f4f6"` | Configures the component's codebackgroundcolor. |
| `headingColor` | `string` | `"#fffffe"` | Configures the component's headingcolor. |
| `textColor` | `string` | `"#4b5563"` | Configures the component's textcolor. |
| `mutedTextColor` | `string` | `"#9ca3af"` | Configures the component's mutedtextcolor. |
| `buttonBackgroundColor` | `string` | `"#4f46e5"` | Configures the component's buttonbackgroundcolor. |
| `buttonColor` | `string` | `"#fffffe"` | Configures the component's buttoncolor. |
| `variant` | `"with-name" \| "with-pattern" \| "with-overlay" \| "with-background-image" \| "background-image-header"` | `"with-overlay"` | Configures the component's variant. |
# Centered Text
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/coupons-with-centered-text
```
**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 { CouponsWithCenteredText } from "@/components/email/coupons-with-centered-text";
```
```tsx
```
## Examples [#examples]
### Inline [#inline]
### Background [#background]
### Alternate [#alternate]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------------- | ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `overline` | `string` | `"Our biggest sale of the year"` | Configures the component's overline. |
| `discount` | `string` | `"20% OFF"` | Configures the component's discount. |
| `code` | `string` | `"WINTER20OFF"` | Configures the component's code. |
| `expiry` | `string` | `"until 31/10/2025"` | Configures the component's expiry. |
| `description` | `string` | `"Use code: WINTER20OFF at checkout, or click the link below to automatically apply the discount to your order."` | Configures the component's description. |
| `backgroundImageSrc` | `string` | `"https://picsum.photos/seed/emailcn-coupons-pattern/800/600.jpg"` | Configures the component's backgroundimagesrc. |
| `buttonLabel` | `string` | `"Shop now"` | Configures the component's buttonlabel. |
| `buttonHref` | `string` | `"https://example.com"` | Configures the component's buttonhref. |
| `arrowIconSrc` | `string` | `"https://placehold.co/64x64/C2410C/FFFFFF.png?text=Arrow%20Right"` | Configures the component's arrowiconsrc. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
| `codeBackgroundColor` | `string` | `"#f3f4f6"` | Configures the component's codebackgroundcolor. |
| `headingColor` | `string` | `"#030712"` | Configures the component's headingcolor. |
| `textColor` | `string` | `"#4b5563"` | Configures the component's textcolor. |
| `buttonBackgroundColor` | `string` | `"#4f46e5"` | Configures the component's buttonbackgroundcolor. |
| `buttonColor` | `string` | `"#fffffe"` | Configures the component's buttoncolor. |
| `variant` | `"impact" \| "inline" \| "impact-alt" \| "impact-background"` | `"impact"` | Configures the component's variant. |
# Content Overlay
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/coupons-with-content-overlayed
```
**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 { CouponsWithContentOverlayed } from "@/components/email/coupons-with-content-overlayed";
```
```tsx
```
## Examples [#examples]
### Centered [#centered]
### Code at bottom [#code-at-bottom]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------------- | ---------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `overline` | `string` | `"Our biggest sale of the year"` | Configures the component's overline. |
| `discount` | `string` | `"20% OFF"` | Configures the component's discount. |
| `code` | `string` | `"WINTER20OFF"` | Configures the component's code. |
| `expiry` | `string` | `"until 31/10/2025"` | Configures the component's expiry. |
| `backgroundImageSrc` | `string` | - | Configures the component's backgroundimagesrc. |
| `buttonLabel` | `string` | `"Shop now"` | Configures the component's buttonlabel. |
| `buttonHref` | `string` | `"https://example.com"` | Configures the component's buttonhref. |
| `arrowIconSrc` | `string` | `"https://placehold.co/64x64/C2410C/FFFFFF.png?text=Arrow%20Right"` | Configures the component's arrowiconsrc. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `headingColor` | `string` | `"#fffffe"` | Configures the component's headingcolor. |
| `codeBackgroundColor` | `string` | `"#fffffe"` | Configures the component's codebackgroundcolor. |
| `codeColor` | `string` | `"#030712"` | Configures the component's codecolor. |
| `buttonBackgroundColor` | `string` | `"#030712"` | Configures the component's buttonbackgroundcolor. |
| `buttonColor` | `string` | `"#fffffe"` | Configures the component's buttoncolor. |
| `variant` | `"split" \| "centered" \| "code-bottom"` | `"code-bottom"` | Configures the component's variant. |
# Coupons
# Avatars
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/avatar-call-to-action
```
**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 { AvatarCallToAction } from "@/components/email/avatar-call-to-action";
```
```tsx
```
## Examples [#examples]
### CTA with team avatars [#cta-with-team-avatars]
#### default [#default]
#### avatars top [#avatars-top]
#### single avatar [#single-avatar]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------------- | ---------------------------------------- | -------------- | --------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | - | Configures the component's heading. |
| `description` | `string` | - | Configures the component's description. |
| `actions` | `Array<{ href: string; label: string }>` | - | Configures the component's actions. |
| `avatars` | `Array<{ src: string; alt?: string }>` | - | Configures the component's avatars. |
| `placement` | `"top" \| "inline"` | `"inline"` | Configures the component's placement. |
# Background
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/background-call-to-action
```
**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 { BackgroundCallToAction } from "@/components/email/background-call-to-action";
```
```tsx
```
## Examples [#examples]
### CTA with background image [#cta-with-background-image]
#### flush [#flush]
#### boxed [#boxed]
#### padded [#padded]
### Boxed CTA with background image [#boxed-cta-with-background-image]
#### flush light [#flush-light]
#### flush dark [#flush-dark]
#### padded light [#padded-light]
#### padded dark [#padded-dark]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | ---------------------------------------- | ----------------------------- | ------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | `"Welcome to Your Workspace"` | Configures the component's heading. |
| `description` | `string` | - | Configures the component's description. |
| `emphasis` | `string` | - | Configures the component's emphasis. |
| `actions` | `Array<{ href: string; label: string }>` | - | Configures the component's actions. |
| `backgroundImage` | `{ src: string; alt?: string }` | - | Configures the component's backgroundimage. |
| `width` | `"flush" \| "boxed" \| "padded"` | `"flush"` | Configures the component's width. |
| `contentCard` | `boolean` | `false` | Configures the component's contentcard. |
| `appearance` | `"light" \| "dark"` | `"light"` | Configures the component's appearance. |
# Basic
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/call-to-action
```
**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 { CallToAction } from "@/components/email/call-to-action";
```
```tsx
```
## Examples [#examples]
### CTA with title and action lead [#cta-with-title-and-action-lead]
#### minimal [#minimal]
#### title and lead [#title-and-lead]
#### secondary button [#secondary-button]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------------- | ---------------------------------------- | ------------------------------- | --------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | `"Confirm your email"` | Configures the component's heading. |
| `description` | `string` | - | Configures the component's description. |
| `signoff` | `string` | `"Thank you, the emailcn Team"` | Shows the title-and-lead treatment. |
| `actions` | `Array<{ href: string; label: string }>` | - | Configures up to two actions. |
# Collage
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/collage-call-to-action
```
**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 { CollageCallToAction } from "@/components/email/collage-call-to-action";
```
```tsx
```
## Examples [#examples]
### CTA with shifted images [#cta-with-shifted-images]
#### side [#side]
#### offset [#offset]
#### shifted [#shifted]
#### collage [#collage]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------------- | ---------------------------------------------- | -------------- | --------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | - | Configures the component's heading. |
| `description` | `string` | - | Configures the component's description. |
| `action` | `{ href: string; label: string }` | - | Configures the component's action. |
| `images` | `Array<{ src: string; alt?: string }>` | - | Configures the component's images. |
| `treatment` | `"offset" \| "shifted" \| "side" \| "collage"` | `"side"` | Configures the component's treatment. |
# Image Strip
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/image-strip-call-to-action
```
**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 { ImageStripCallToAction } from "@/components/email/image-strip-call-to-action";
```
```tsx
```
## Examples [#examples]
### CTA with image strip [#cta-with-image-strip]
#### boxed left [#boxed-left]
#### boxed right [#boxed-right]
#### full left [#full-left]
#### full right [#full-right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------------- | -------------------------------------- | ---------------------- | --------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | `"Join the Adventure"` | Configures the component's heading. |
| `description` | `string` | - | Configures the component's description. |
| `action` | `{ href: string; label: string }` | - | Configures the component's action. |
| `images` | `Array<{ src: string; alt?: string }>` | - | Configures the component's images. |
| `placement` | `"left" \| "right"` | `"right"` | Configures the component's placement. |
| `width` | `"boxed" \| "full"` | `"boxed"` | Configures the component's width. |
# Cta
# Top Image
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/top-image-call-to-action
```
**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 { TopImageCallToAction } from "@/components/email/top-image-call-to-action";
```
```tsx
```
## Examples [#examples]
### CTA with top large image [#cta-with-top-large-image]
#### default [#default]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------------- | --------------------------------- | -------------------------------- | --------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | `"Built for the journey ahead."` | Configures the component's heading. |
| `description` | `string` | - | Configures the component's description. |
| `action` | `{ href: string; label: string }` | - | Configures the component's action. |
| `image` | `{ src: string; alt?: string }` | - | Configures the component's image. |
# Image
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/image-feature
```
**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 { ImageFeature } from "@/components/email/image-feature";
```
```tsx
```
## Examples [#examples]
### Feature with product image [#feature-with-product-image]
#### image left [#image-left]
#### image right [#image-right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------- | --------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | `"Powering every payment."` | Configures the component's heading. |
| `body` | `string` | `"Discover tools that make accepting payments faster, easier, and more reliable, wherever you serve customers."` | Configures the component's body. |
| `image` | `{ src: string; alt?: string }` | - | Configures the component's image. |
| `action` | `{ href: string; label: string; iconSrc?: string }` | - | Configures the component's action. |
| `placement` | `"left" \| "right"` | `"right"` | Configures the component's placement. |
# Feature
# Portrait
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/portrait-feature
```
**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 { PortraitFeature } from "@/components/email/portrait-feature";
```
```tsx
```
## Examples [#examples]
### Feature with large portrait image [#feature-with-large-portrait-image]
#### content top left [#content-top-left]
#### content top right [#content-top-right]
#### content bottom left [#content-bottom-left]
#### content bottom right [#content-bottom-right]
#### logo top-left [#logo-top-left]
#### logo top-right [#logo-top-right]
#### logo bottom-left [#logo-bottom-left]
#### logo bottom-right [#logo-bottom-right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | -------------------------------------------------------------- | ------------------------ | ----------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | - | Configures the component's heading. |
| `body` | `string` | - | Configures the component's body. |
| `primaryImage` | `{ src: string; alt?: string }` | - | Configures the component's primaryimage. |
| `secondaryImage` | `{ src: string; alt?: string }` | - | Configures the component's secondaryimage. |
| `logo` | `{ src: string; alt?: string }` | - | Configures the component's logo. |
| `action` | `{ href: string; label: string; iconSrc?: string }` | - | Configures the component's action. |
| `placement` | `"left" \| "right"` | `"right"` | Configures the component's placement. |
| `contentPosition` | `"top" \| "bottom"` | - | Configures the component's contentposition. |
| `logoPosition` | `"top-left" \| "top-right" \| "bottom-left" \| "bottom-right"` | Derived from `placement` | Positions the logo when `contentPosition` is not set. |
# Product Images
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/product-images-feature
```
**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 { ProductImagesFeature } from "@/components/email/product-images-feature";
```
```tsx
```
## Examples [#examples]
### Feature with multiple product images [#feature-with-multiple-product-images]
#### logo left [#logo-left]
#### logo right [#logo-right]
#### images left [#images-left]
#### images right [#images-right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| -------------- | --------------------------------------------------- | -------------- | ---------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | - | Configures the component's heading. |
| `body` | `string` | - | Configures the component's body. |
| `images` | `Array<{ src: string; alt?: string }>` | - | Configures the component's images. |
| `logo` | `{ src: string; alt?: string }` | - | Configures the component's logo. |
| `action` | `{ href: string; label: string; iconSrc?: string }` | - | Configures the component's action. |
| `placement` | `"left" \| "right"` | `"right"` | Configures the component's placement. |
| `presentation` | `"images" \| "logo"` | `"images"` | Selects the image collage or logo composition. |
# Tall Background Images
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/tall-background-images-feature
```
**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 { TallBackgroundImagesFeature } from "@/components/email/tall-background-images-feature";
```
```tsx
```
## Examples [#examples]
### Feature with double tall background images [#feature-with-double-tall-background-images]
#### logo top-left [#logo-top-left]
#### logo top-right [#logo-top-right]
#### logo bottom-left [#logo-bottom-left]
#### logo bottom-right [#logo-bottom-right]
### Feature with full title and tall background images [#feature-with-full-title-and-tall-background-images]
#### logo top-left [#logo-top-left-1]
#### logo top-right [#logo-top-right-1]
#### logo bottom-left [#logo-bottom-left-1]
#### logo bottom-right [#logo-bottom-right-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| -------------- | ---------------------------------------------------------------- | -------------- | ---------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | - | Configures the component's heading. |
| `body` | `string` | - | Configures the component's body. |
| `images` | `[{ src: string; alt?: string }, { src: string; alt?: string }]` | - | Configures the component's images. |
| `logo` | `{ src: string; alt?: string }` | - | Configures the component's logo. |
| `action` | `{ href: string; label: string; iconSrc?: string }` | - | Configures the component's action. |
| `logoPosition` | `"top-left" \| "top-right" \| "bottom-left" \| "bottom-right"` | `"top-left"` | Configures the component's logoposition. |
| `titleWidth` | `"split" \| "full"` | `"split"` | Configures the component's titlewidth. |
# Footers
# Navigation
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/navigation-footer
```
**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 { NavigationFooter } from "@/components/email/navigation-footer";
```
```tsx
```
## Examples [#examples]
### Footer centered with menu and socials [#footer-centered-with-menu-and-socials]
#### default [#default]
### Footer with 2-column menu [#footer-with-2-column-menu]
#### left logo [#left-logo]
#### right logo [#right-logo]
### Footer with 2-column menu and divider [#footer-with-2-column-menu-and-divider]
#### left logo [#left-logo-1]
#### right logo [#right-logo-1]
### Footer with 3-column menu [#footer-with-3-column-menu]
#### left logo [#left-logo-2]
#### right logo [#right-logo-2]
### Footer with full menu [#footer-with-full-menu]
#### oversized logo [#oversized-logo]
#### bordered [#bordered]
### Footer with text menu and socials [#footer-with-text-menu-and-socials]
#### left logo [#left-logo-3]
#### right logo [#right-logo-3]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------- | ------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `brand` | `{ logo: { src: string; alt?: string }; href?: string }` | - | Configures the component's brand. |
| `description` | `string` | `"Lorem ipsum dolor sit amet consectetur. Eget aenean sed sit sed in sapien. Vel auctor arcu nulla consectetur sed."` | Configures the component's description. |
| `menus` | `Array<{ heading?: string; links: Array<{ label: string; href: string }> }>` | - | Configures the component's menus. |
| `socials` | `Array<{ iconSrc: string; label: string; href: string }>` | - | Configures the component's socials. |
| `legal` | `{ copyright?: string; text?: string; unsubscribeHref?: string; preferencesHref?: string }` | - | Configures the component's legal. |
| `columns` | `1 \| 2 \| 3` | `2` | Configures the component's columns. |
| `alignment` | `"left" \| "center" \| "right"` | `"left"` | Configures the component's alignment. |
| `logoPosition` | `"left" \| "right" \| "top" \| "bottom"` | `"left"` | Configures the component's logoposition. |
| `divider` | `boolean` | `false` | Configures the component's divider. |
| `oversizedLogo` | `boolean` | `false` | Configures the component's oversizedlogo. |
| `variant` | `"left-logo" \| "right-logo" \| "oversized-logo" \| "bordered"` | Derived from the other props | Selects an exact legacy composition when needed. |
# Promotion
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/promotion-footer
```
**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 { PromotionFooter } from "@/components/email/promotion-footer";
```
```tsx
```
## Examples [#examples]
### Footer with content and CTA [#footer-with-content-and-cta]
#### left [#left]
#### center [#center]
#### right [#right]
### Footer with large title and buttons [#footer-with-large-title-and-buttons]
#### default [#default]
### Footer with menu and full-width CTA [#footer-with-menu-and-full-width-cta]
#### default [#default-1]
### Footer with overlapped CTA [#footer-with-overlapped-cta]
#### content left logo [#content-left-logo]
#### content right logo [#content-right-logo]
#### 2-column menu left logo [#2-column-menu-left-logo]
#### 2-column menu right logo [#2-column-menu-right-logo]
#### 3-column menu left logo [#3-column-menu-left-logo]
#### 3-column menu right logo [#3-column-menu-right-logo]
#### address left logo [#address-left-logo]
#### address right logo [#address-right-logo]
#### centered content [#centered-content]
#### centered menu [#centered-menu]
#### centered socials [#centered-socials]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `brand` | `{ logo: { src: string; alt?: string }; href?: string }` | - | Configures the component's brand. |
| `heading` | `string` | `"Start sending professionally\ndesigned emails today"` | Configures the component's heading. |
| `description` | `string` | - | Configures the component's description. |
| `actions` | `Array<{ href: string; label: string }>` | - | Configures the component's actions. |
| `legal` | `{ copyright?: string; text?: string; unsubscribeHref?: string; preferencesHref?: string }` | - | Configures the component's legal. |
| `placement` | `"inline" \| "full-width" \| "overlap" \| "large-title"` | `"inline"` | Configures the component's placement. |
| `menuColumns` | `0 \| 2 \| 3` | `0` | Configures the component's menucolumns. |
| `alignment` | `"left" \| "center" \| "right"` | `"center"` | Configures the component's alignment. |
| `logoPosition` | `"left" \| "right"` | `"left"` | Positions the logo in overlapping layouts. |
| `backgroundImage` | `{ src: string; alt?: string }` | - | Configures the component's backgroundimage. |
| `variant` | `"centered" \| "left-aligned" \| "right-aligned" \| "content" \| "2-column-menu" \| "3-column-menu" \| "centered-content" \| "centered-menu" \| "address" \| "centered-socials"` | Derived from the other props | Selects an exact legacy composition when needed. |
# Utility
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/utility-footer
```
**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 { UtilityFooter } from "@/components/email/utility-footer";
```
```tsx
```
## Examples [#examples]
### Footer with app store buttons [#footer-with-app-store-buttons]
#### centered [#centered]
#### two columns [#two-columns]
#### with title [#with-title]
### Footer with background image [#footer-with-background-image]
#### bottom image content left logo [#bottom-image-content-left-logo]
#### bottom image 2-column menu left logo [#bottom-image-2-column-menu-left-logo]
#### bottom image 2-column menu right logo [#bottom-image-2-column-menu-right-logo]
#### bottom image 3-column menu left logo [#bottom-image-3-column-menu-left-logo]
#### bottom image 3-column menu right logo [#bottom-image-3-column-menu-right-logo]
#### bottom image centered [#bottom-image-centered]
#### bottom image content right logo [#bottom-image-content-right-logo]
#### top image 3-column menu left logo [#top-image-3-column-menu-left-logo]
#### top image 3-column menu right logo [#top-image-3-column-menu-right-logo]
#### top image address left logo [#top-image-address-left-logo]
#### top image address right logo [#top-image-address-right-logo]
#### top image centered [#top-image-centered]
#### top image content left logo [#top-image-content-left-logo]
#### top image content right logo [#top-image-content-right-logo]
#### top image logo bottom [#top-image-logo-bottom]
### Footer with company locations [#footer-with-company-locations]
#### stacked [#stacked]
#### grid [#grid]
### Footer with legal text [#footer-with-legal-text]
#### default [#default]
### Footer with social icons and address [#footer-with-social-icons-and-address]
#### left [#left]
#### center [#center]
#### right [#right]
### Simple footer with social icons [#simple-footer-with-social-icons]
#### left [#left-1]
#### center [#center-1]
#### right [#right-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `brand` | `{ logo: { src: string; alt?: string }; href?: string }` | - | Configures the component's brand. |
| `socials` | `Array<{ iconSrc: string; label: string; href: string }>` | - | Configures the component's socials. |
| `legal` | `{ copyright?: string; text?: string; unsubscribeHref?: string; preferencesHref?: string }` | - | Configures the component's legal. |
| `content` | `"socials" \| "address" \| "legal" \| "locations" \| "app-stores"` | `"socials"` | Configures the component's content. |
| `locations` | `Array<{ name: string; address: string }>` | - | Configures the component's locations. |
| `address` | `string` | `"© 2026 emailcn\nemailcn \| 155 Bdv Saint Germain \| 75505 Paris"` | Configures the component's address. |
| `title` | `string` | `"Follow us"` | Configures the component's title. |
| `alignment` | `"left" \| "center" \| "right"` | `"center"` | Configures the component's alignment. |
| `columns` | `1 \| 2` | `1` | Configures the component's columns. |
| `logoPosition` | `"left" \| "right"` | `"left"` | Positions the logo in supported layouts. |
| `backgroundImage` | `{ src: string; alt?: string; position?: "top" \| "bottom" }` | - | Configures the component's backgroundimage. |
| `variant` | `"centered" \| "two-columns" \| "with-title" \| "bottom-image-content" \| "bottom-image-2-column-menu" \| "bottom-image-3-column-menu" \| "bottom-image-centered" \| "top-image-content" \| "top-image-3-column-menu" \| "top-image-address" \| "top-image-centered" \| "top-image-logo-bottom" \| "stacked" \| "grid" \| "left-logo" \| "right-logo" \| "left-aligned" \| "right-aligned"` | Derived from the other props | Selects an exact legacy composition when needed. |
# Badge
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/header-with-logo-and-badge
```
**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 { HeaderWithLogoAndBadge } from "@/components/email/header-with-logo-and-badge";
```
```tsx
```
## Examples [#examples]
### Centered [#centered]
### Right logo [#right-logo]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ---------------------- | ------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `logoSrc` | `string` | `"https://placehold.co/320x96/0F766E/FFFFFF.png?text=Maizzle%20Insignia"` | Configures the component's logosrc. |
| `logoAlt` | `string` | `"Maizzle"` | Configures the component's logoalt. |
| `logoHref` | `string` | `"https://example.com"` | Configures the component's logohref. |
| `badgeLabel` | `string` | `"FREE SHIPPING"` | Configures the component's badgelabel. |
| `message` | `string` | `"On orders over $65"` | Configures the component's message. |
| `alignment` | `"left" \| "center" \| "right"` | `"left"` | Configures the component's alignment. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
| `badgeBackgroundColor` | `string` | `"#eff6ff"` | Configures the component's badgebackgroundcolor. |
| `badgeBorderColor` | `string` | `"#dbeafe"` | Configures the component's badgebordercolor. |
| `badgeColor` | `string` | `"#2563eb"` | Configures the component's badgecolor. |
| `badgeTextColor` | `string` | `"#4b5563"` | Configures the component's badgetextcolor. |
# Finance Stats
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/header-with-logo-and-finance-stats
```
**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 { HeaderWithLogoAndFinanceStats } from "@/components/email/header-with-logo-and-finance-stats";
```
```tsx
```
## Examples [#examples]
### Centered [#centered]
### Stats first [#stats-first]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------------- | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ----------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `logoSrc` | `string` | `"https://placehold.co/320x96/0F766E/FFFFFF.png?text=Maizzle%20Insignia"` | Configures the component's logosrc. |
| `logoAlt` | `string` | `"Maizzle"` | Configures the component's logoalt. |
| `logoHref` | `string` | `"https://example.com"` | Configures the component's logohref. |
| `stats` | `Array<{ alt: string; change: string; label: string; positive: boolean; src: string }>` | Built-in stats | Configures the component's stats. |
| `alignment` | `"left" \| "center" \| "right"` | `"left"` | Configures the component's alignment. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
# Menu
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/header-with-logo-and-menu
```
**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 { HeaderWithLogoAndMenu } from "@/components/email/header-with-logo-and-menu";
```
```tsx
```
## Examples [#examples]
### Stacked [#stacked]
### Menu on the left [#menu-on-the-left]
### Menu around the logo [#menu-around-the-logo]
### Stacked left [#stacked-left]
### Stacked right [#stacked-right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ----------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `logoSrc` | `string` | `"https://placehold.co/320x96/0F766E/FFFFFF.png?text=Maizzle%20Insignia"` | Configures the component's logosrc. |
| `logoAlt` | `string` | `"Maizzle"` | Configures the component's logoalt. |
| `logoHref` | `string` | `"https://example.com"` | Configures the component's logohref. |
| `links` | `Array<{ href: string; label: string }>` | Built-in links | Configures the component's links. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
| `textColor` | `string` | `"#6b7280"` | Configures the component's textcolor. |
| `variant` | `"menu-right" \| "menu-left" \| "menu-around" \| "stacked-left" \| "stacked-center" \| "stacked-right"` | `"menu-right"` | Configures the component's variant. |
# Social Icons
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/header-with-logo-and-social-icons
```
**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 { HeaderWithLogoAndSocialIcons } from "@/components/email/header-with-logo-and-social-icons";
```
```tsx
```
## Examples [#examples]
### Centered [#centered]
### Right logo [#right-logo]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------------- | --------------------------------------------------- | ------------------------------------------------------------------------- | ----------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `logoSrc` | `string` | `"https://placehold.co/320x96/0F766E/FFFFFF.png?text=Maizzle%20Insignia"` | Configures the component's logosrc. |
| `logoAlt` | `string` | `"Maizzle"` | Configures the component's logoalt. |
| `logoHref` | `string` | `"https://example.com"` | Configures the component's logohref. |
| `socials` | `Array<{ alt: string; href: string; src: string }>` | Built-in socials | Configures the component's socials. |
| `alignment` | `"left" \| "center" \| "right"` | `"left"` | Configures the component's alignment. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
# Logo
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/header-with-logo
```
**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 { HeaderWithLogo } from "@/components/email/header-with-logo";
```
```tsx
```
## Examples [#examples]
### Logo [#logo]
#### left [#left]
#### center [#center]
#### right [#right]
### Logo with text [#logo-with-text]
#### left [#left-1]
#### center [#center-1]
#### right [#right-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------------- | ------------------------------- | ------------------------------------------------------------------------- | ----------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `logoSrc` | `string` | `"https://placehold.co/320x96/0F766E/FFFFFF.png?text=Maizzle%20Insignia"` | Configures the component's logosrc. |
| `logoAlt` | `string` | `"Maizzle"` | Configures the component's logoalt. |
| `logoHref` | `string` | `"https://example.com"` | Configures the component's logohref. |
| `text` | `string` | `"Medium, rare, but mostly well-done\nHTML email components."` | Configures the component's text. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
| `textColor` | `string` | `"#030712"` | Configures the component's textcolor. |
| `variant` | `"minimal" \| "with-text"` | `"minimal"` | Configures the component's variant. |
| `alignment` | `"left" \| "center" \| "right"` | `"center"` | Configures the component's alignment. |
# User Details
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/header-with-user-details
```
**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 { HeaderWithUserDetails } from "@/components/email/header-with-user-details";
```
```tsx
```
## Examples [#examples]
### Image avatar [#image-avatar]
### Initials with right logo [#initials-with-right-logo]
### Image avatar with right logo [#image-avatar-with-right-logo]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------------- | ----------------------- | ------------------------------------------------------------------------- | ------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `logoSrc` | `string` | `"https://placehold.co/320x96/0F766E/FFFFFF.png?text=Maizzle%20Insignia"` | Configures the component's logosrc. |
| `logoAlt` | `string` | `"Maizzle"` | Configures the component's logoalt. |
| `logoHref` | `string` | `"https://example.com"` | Configures the component's logohref. |
| `userName` | `string` | - | Configures the component's username. |
| `userEmail` | `string` | - | Configures the component's useremail. |
| `initials` | `string` | `"JD"` | Configures the component's initials. |
| `avatarSrc` | `string` | - | Configures the component's avatarsrc. |
| `avatarAlt` | `string` | `""` | Configures the component's avataralt. |
| `avatar` | `"initials" \| "image"` | `"initials"` | Configures the component's avatar. |
| `alignment` | `"left" \| "right"` | `"left"` | Configures the component's alignment. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
| `avatarBackgroundColor` | `string` | `"#f3f4f6"` | Configures the component's avatarbackgroundcolor. |
| `headingColor` | `string` | `"#030712"` | Configures the component's headingcolor. |
| `textColor` | `string` | `"#4b5563"` | Configures the component's textcolor. |
| `mutedTextColor` | `string` | `"#6b7280"` | Configures the component's mutedtextcolor. |
# Headers
# Image Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/image-grid-hero
```
**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 { ImageGridHero } from "@/components/email/image-grid-hero";
```
```tsx
```
## Examples [#examples]
### Hero with image grid [#hero-with-image-grid]
#### images bottom [#images-bottom]
#### images top [#images-top]
#### offset images bottom [#offset-images-bottom]
#### offset images top [#offset-images-top]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- | ----------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `content` | `{ eyebrow?: string; heading?: string; emphasis?: string; subheading?: string; description?: string; price?: string; actions?: Array<{ href: string; label: string }> }` | - | Configures the component's content. |
| `images` | `Array<{ src: string; alt?: string }>` | - | Configures the component's images. |
| `brand` | `{ logo: { src: string; alt?: string }; href?: string }` | - | Configures the component's brand. |
| `imagePosition` | `"top" \| "bottom"` | `"bottom"` | Configures the component's imageposition. |
| `offset` | `boolean` | `false` | Configures the component's offset. |
# Heroes
# Overlap
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/overlap-hero
```
**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 { OverlapHero } from "@/components/email/overlap-hero";
```
```tsx
```
## Examples [#examples]
### Hero with overlapped content [#hero-with-overlapped-content]
#### basic [#basic]
#### basic-with-gradient [#basic-with-gradient]
#### reversed [#reversed]
#### reversed-with-gradient [#reversed-with-gradient]
### Hero with overlapped image [#hero-with-overlapped-image]
#### default [#default]
#### slanted-left [#slanted-left]
#### slanted-right [#slanted-right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------- | ------------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `content` | `{ eyebrow?: string; heading?: string; emphasis?: string; subheading?: string; description?: string; price?: string; actions?: Array<{ href: string; label: string }> }` | - | Configures the component's content. |
| `images` | `Array<{ src: string; alt?: string }>` | - | Configures the component's images. |
| `backgroundImage` | `{ src: string; alt?: string }` | - | Configures the component's backgroundimage. |
| `brand` | `{ logo: { src: string; alt?: string }; href?: string }` | - | Configures the component's brand. |
| `target` | `"content" \| "image"` | `"content"` | Configures the component's target. |
| `direction` | `"left" \| "right"` | `"left"` | Configures the component's direction. |
| `gradient` | `boolean` | `false` | Configures the component's gradient. |
| `slanted` | `boolean` | `false` | Configures the component's slanted. |
| `variant` | `"basic" \| "reversed" \| "basic-with-gradient" \| "reversed-with-gradient" \| "default" \| "slanted-left" \| "slanted-right"` | Derived from the other props | Selects an exact legacy composition when needed. |
# Overlay
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/overlay-hero
```
**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 { OverlayHero } from "@/components/email/overlay-hero";
```
```tsx
```
## Examples [#examples]
### Hero aligned overlay [#hero-aligned-overlay]
#### content-left [#content-left]
#### content-left-reversed [#content-left-reversed]
#### content-right [#content-right]
#### content-right-reversed [#content-right-reversed]
### Hero block overlay [#hero-block-overlay]
#### left-centered [#left-centered]
#### left-top [#left-top]
#### left-bottom [#left-bottom]
#### left-flush-vertical [#left-flush-vertical]
#### right-centered [#right-centered]
#### right-top [#right-top]
#### right-bottom [#right-bottom]
#### right-flush-vertical [#right-flush-vertical]
### Hero block with bleed [#hero-block-with-bleed]
#### left-centered [#left-centered-1]
#### left-top [#left-top-1]
#### left-bottom [#left-bottom-1]
#### left-flush-vertical [#left-flush-vertical-1]
#### right-centered [#right-centered-1]
#### right-top [#right-top-1]
#### right-bottom [#right-bottom-1]
#### right-flush-vertical [#right-flush-vertical-1]
### Hero with overlay gradient [#hero-with-overlay-gradient]
#### split-no-logo [#split-no-logo]
#### split-with-logo [#split-with-logo]
#### unified-no-logo [#unified-no-logo]
#### unified-with-logo [#unified-with-logo]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ------------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `content` | `{ eyebrow?: string; heading?: string; emphasis?: string; subheading?: string; description?: string; price?: string; actions?: Array<{ href: string; label: string }> }` | - | Configures the component's content. |
| `backgroundImage` | `{ src: string; alt?: string }` | - | Configures the component's backgroundimage. |
| `brand` | `{ logo: { src: string; alt?: string }; href?: string }` | - | Configures the component's brand. |
| `treatment` | `"aligned" \| "block" \| "gradient" \| "content-card"` | `"block"` | Configures the component's treatment. |
| `position` | `"top-left" \| "center-left" \| "bottom-left" \| "top-right" \| "center-right" \| "bottom-right"` | `"center-left"` | Configures the component's position. |
| `bleed` | `boolean` | `false` | Configures the component's bleed. |
| `reverse` | `boolean` | `false` | Configures the component's reverse. |
| `variant` | `"content-left" \| "content-left-reversed" \| "content-right" \| "content-right-reversed" \| "left-centered" \| "left-top" \| "left-bottom" \| "left-flush-vertical" \| "right-centered" \| "right-top" \| "right-bottom" \| "right-flush-vertical" \| "split-with-logo" \| "split-no-logo" \| "unified-with-logo" \| "unified-no-logo"` | Derived from the other props | Selects an exact legacy composition when needed. |
# Split
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/split-hero
```
**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 { SplitHero } from "@/components/email/split-hero";
```
```tsx
```
## Examples [#examples]
### Hero overlayed split [#hero-overlayed-split]
#### overlay-left [#overlay-left]
#### overlay-right [#overlay-right]
### Hero split contained [#hero-split-contained]
#### single-image-left [#single-image-left]
#### single-image-right [#single-image-right]
#### square-images-left [#square-images-left]
#### square-images-right [#square-images-right]
#### portrait-top-left [#portrait-top-left]
#### portrait-top-right [#portrait-top-right]
#### portrait-bottom-left [#portrait-bottom-left]
#### portrait-bottom-right [#portrait-bottom-right]
### Hero split full bleed [#hero-split-full-bleed]
#### image-left [#image-left]
#### image-right [#image-right]
### Hero with overlayed content [#hero-with-overlayed-content]
#### default [#default]
#### slanted-left [#slanted-left]
#### slanted-right [#slanted-right]
### Hero with slanted split [#hero-with-slanted-split]
#### left-slanted-up [#left-slanted-up]
#### left-slanted-down [#left-slanted-down]
#### right-slanted-up [#right-slanted-up]
#### right-slanted-down [#right-slanted-down]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ------------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `content` | `{ eyebrow?: string; heading?: string; emphasis?: string; subheading?: string; description?: string; price?: string; actions?: Array<{ href: string; label: string }> }` | - | Configures the component's content. |
| `images` | `Array<{ src: string; alt?: string }>` | - | Configures the component's images. |
| `brand` | `{ logo: { src: string; alt?: string }; href?: string }` | - | Configures the component's brand. |
| `treatment` | `"contained" \| "full-bleed" \| "overlay" \| "slanted"` | `"contained"` | Configures the component's treatment. |
| `imagePosition` | `"left" \| "right"` | `"right"` | Configures the component's imageposition. |
| `slant` | `"up" \| "down"` | `"down"` | Configures the component's slant. |
| `overlayContent` | `boolean` | `false` | Configures the component's overlaycontent. |
| `variant` | `"overlay-left" \| "overlay-right" \| "single-image-left" \| "single-image-right" \| "square-images-left" \| "square-images-right" \| "portrait-top-left" \| "portrait-top-right" \| "portrait-bottom-left" \| "portrait-bottom-right" \| "image-left" \| "image-right" \| "default" \| "slanted-left" \| "slanted-right" \| "left-slanted-down" \| "left-slanted-up" \| "right-slanted-down" \| "right-slanted-up"` | Derived from the other props | Selects an exact legacy composition when needed. |
# Featured Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/featured-image-grid
```
**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 { FeaturedImageGrid } from "@/components/email/featured-image-grid";
```
```tsx
```
## Examples [#examples]
### 2-column image grid with full-width feature [#2-column-image-grid-with-full-width-feature]
#### feature top [#feature-top]
#### feature top overlay [#feature-top-overlay]
#### feature bottom [#feature-bottom]
#### feature bottom overlay [#feature-bottom-overlay]
### 3-column image grid with full-width feature [#3-column-image-grid-with-full-width-feature]
#### feature top [#feature-top-1]
#### feature top overlay [#feature-top-overlay-1]
#### feature bottom [#feature-bottom-1]
#### feature bottom overlay [#feature-bottom-overlay-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | ----------------------------------------------------------------------------------------- | -------------- | ------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `images` | `Array<{ src: string; alt?: string; href?: string; heading?: string; subtext?: string }>` | - | Configures the component's images. |
| `feature` | `{ src: string; alt?: string; href?: string; heading?: string; subtext?: string }` | - | Configures the component's feature. |
| `columns` | `2 \| 3` | `2` | Configures the component's columns. |
| `featurePosition` | `"top" \| "bottom"` | `"top"` | Configures the component's featureposition. |
| `overlay` | `boolean` | `false` | Configures the component's overlay. |
# Full Width
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/full-width-image
```
**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 { FullWidthImage } from "@/components/email/full-width-image";
```
```tsx
```
## Examples [#examples]
### Full-width image [#full-width-image]
#### Default [#default]
#### Top padding [#top-padding]
#### Top right [#top-right]
#### Top left [#top-left]
#### Top + sides [#top--sides]
#### Right padding [#right-padding]
#### Right alt [#right-alt]
#### Bottom padding [#bottom-padding]
#### Bottom right [#bottom-right]
#### Bottom left [#bottom-left]
#### Bottom + sides [#bottom--sides]
#### Left padding [#left-padding]
#### Left alt [#left-alt]
#### Sides padding [#sides-padding]
#### Sides alt [#sides-alt]
### Full-width image with overlay [#full-width-image-with-overlay]
#### Default [#default-1]
#### Top padding [#top-padding-1]
#### Top right [#top-right-1]
#### Top left [#top-left-1]
#### Top + sides [#top--sides-1]
#### Right padding [#right-padding-1]
#### Right alt [#right-alt-1]
#### Bottom padding [#bottom-padding-1]
#### Bottom right [#bottom-right-1]
#### Bottom left [#bottom-left-1]
#### Bottom + sides [#bottom--sides-1]
#### Left padding [#left-padding-1]
#### Left alt [#left-alt-1]
#### Sides padding [#sides-padding-1]
#### Sides alt [#sides-alt-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------------ | ---------------------------------------------------------------------------------- | -------------- | -------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `image` | `{ src: string; alt?: string; href?: string; heading?: string; subtext?: string }` | - | Configures the component's image. |
| `overlay` | `boolean` | `false` | Configures the component's overlay. |
| `frame` | `"none" \| "top" \| "right" \| "bottom" \| "left" \| "sides"` | `"none"` | Configures the component's frame. |
| `frameStyle` | `"padding" \| "split" \| "alternate" \| "sides"` | `"padding"` | Configures the component's framestyle. |
# Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/image-grid
```
**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 { ImageGrid } from "@/components/email/image-grid";
```
```tsx
```
## Examples [#examples]
### 2-column image grid [#2-column-image-grid]
#### square [#square]
#### square overlay [#square-overlay]
#### portrait [#portrait]
#### portrait overlay [#portrait-overlay]
### 3-column image grid [#3-column-image-grid]
#### square [#square-1]
#### square overlay [#square-overlay-1]
#### portrait [#portrait-1]
#### portrait overlay [#portrait-overlay-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------- | ----------------------------------------------------------------------------------------- | -------------- | ----------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `images` | `Array<{ src: string; alt?: string; href?: string; heading?: string; subtext?: string }>` | - | Configures the component's images. |
| `columns` | `2 \| 3` | `2` | Configures the component's columns. |
| `aspect` | `"square" \| "portrait"` | `"square"` | Configures the component's aspect. |
| `overlay` | `boolean` | `false` | Configures the component's overlay. |
# Images
# Masonry Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/masonry-image-grid
```
**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 { MasonryImageGrid } from "@/components/email/masonry-image-grid";
```
```tsx
```
## Examples [#examples]
### 2-column masonry image grid with 3 images [#2-column-masonry-image-grid-with-3-images]
#### left [#left]
#### left overlay [#left-overlay]
#### right [#right]
#### right overlay [#right-overlay]
### 2-column masonry image grid with 4 images [#2-column-masonry-image-grid-with-4-images]
#### left [#left-1]
#### left reverse [#left-reverse]
#### left overlay [#left-overlay-1]
#### left overlay reverse [#left-overlay-reverse]
#### right [#right-1]
#### right reverse [#right-reverse]
#### right overlay [#right-overlay-1]
#### right overlay reverse [#right-overlay-reverse]
### 3-column masonry image grid [#3-column-masonry-image-grid]
#### left [#left-2]
#### left overlay [#left-overlay-2]
#### right [#right-2]
#### right overlay [#right-overlay-2]
### 3-column masonry image grid with full-width feature [#3-column-masonry-image-grid-with-full-width-feature]
#### left [#left-3]
#### left reverse [#left-reverse-1]
#### left overlay [#left-overlay-3]
#### left overlay reverse [#left-overlay-reverse-1]
#### right [#right-3]
#### right reverse [#right-reverse-1]
#### right overlay [#right-overlay-3]
#### right overlay reverse [#right-overlay-reverse-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------- | ----------------------------------------------------------------------------------------- | -------------- | ----------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `images` | `Array<{ src: string; alt?: string; href?: string; heading?: string; subtext?: string }>` | - | Configures the component's images. |
| `feature` | `{ src: string; alt?: string; href?: string; heading?: string; subtext?: string }` | - | Configures the component's feature. |
| `columns` | `2 \| 3` | `2` | Configures the component's columns. |
| `stackPosition` | `"left" \| "right"` | `"left"` | Configures the component's stackposition. |
| `reverse` | `boolean` | `false` | Configures the component's reverse. |
| `overlay` | `boolean` | `false` | Configures the component's overlay. |
# Pricing
# Purchase
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/purchase-pricing
```
**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 { PurchasePricing } from "@/components/email/purchase-pricing";
```
```tsx
```
## Examples [#examples]
### 2-column pricing table with gaps [#2-column-pricing-table-with-gaps]
The default demo above covers this original component.
#### Custom plans [#custom-plans]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------- | -------------------------------------------------------------------------------------------------------------- | -------------- | --------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `plans` | `Array<{ name: string; leasePrice?: string; purchasePrice: string; action: { href: string; label: string } }>` | Built-in plans | Configures the component's plans. |
# Subscription
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/subscription-pricing
```
**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 { SubscriptionPricing } from "@/components/email/subscription-pricing";
```
```tsx
```
## Examples [#examples]
### 2-column pricing table [#2-column-pricing-table]
The default demo above covers this original component.
### Full-width single pricing [#full-width-single-pricing]
#### Single plan [#single-plan]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ----------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `plans` | `Array<{ name: string; description?: string; price: string; currency?: string; period?: string; features?: Array<{ label: string; muted?: boolean }>; action: { href: string; label: string } }>` | Built-in plans | Configures the component's plans. |
| `columns` | `1 \| 2` | `2` | Configures the component's columns. |
# Collection
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/collection-stats
```
**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 { CollectionStats } from "@/components/email/collection-stats";
```
```tsx
```
## Examples [#examples]
### Simple stats [#simple-stats]
#### simple [#simple]
#### outlined [#outlined]
#### bordered [#bordered]
#### boxed [#boxed]
### Grid stats [#grid-stats]
#### simple three columns [#simple-three-columns]
#### boxed three columns [#boxed-three-columns]
#### boxed bento [#boxed-bento]
#### boxed bento reversed [#boxed-bento-reversed]
#### accent column three columns [#accent-column-three-columns]
#### accent column bento [#accent-column-bento]
#### accent column bento reversed [#accent-column-bento-reversed]
#### bordered three columns [#bordered-three-columns]
#### bordered bento [#bordered-bento]
#### bordered bento reversed [#bordered-bento-reversed]
#### outlined three columns [#outlined-three-columns]
#### outlined bento [#outlined-bento]
#### outlined bento reversed [#outlined-bento-reversed]
### Overlay stats [#overlay-stats]
#### default [#default]
#### three columns [#three-columns]
#### bento [#bento]
#### bento reversed [#bento-reversed]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | --------------------------------------------------------------- | -------------- | ------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `items` | `Array<{ label: string; value: string; description?: string }>` | - | Configures the component's items. |
| `featured` | `{ label: string; value: string; description?: string }` | - | Configures the component's featured. |
| `layout` | `"row" \| "three-columns" \| "bento"` | `"row"` | Configures the component's layout. |
| `reverse` | `boolean` | `false` | Configures the component's reverse. |
| `appearance` | `"simple" \| "outlined" \| "bordered" \| "boxed" \| "accent"` | `"simple"` | Configures the component's appearance. |
| `backgroundImage` | `{ src: string; alt?: string }` | - | Configures the component's backgroundimage. |
# Stats
# Milestone
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/milestone-stats
```
**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 { MilestoneStats } from "@/components/email/milestone-stats";
```
```tsx
```
## Examples [#examples]
### Boxed [#boxed]
### Accent [#accent]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------------- | ---------------------------------- | ------------------ | ----------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `variant` | `"default" \| "boxed" \| "accent"` | `"default"` | Configures the component's variant. |
| `heading` | `string` | `"Miles traveled"` | Configures the component's heading. |
| `value` | `string` | `"5,685"` | Configures the component's value. |
| `unit` | `string` | `"miles"` | Configures the component's unit. |
| `currentLevel` | `string` | `"SILVER"` | Configures the component's currentlevel. |
| `nextLevel` | `string` | `"GOLD"` | Configures the component's nextlevel. |
| `remaining` | `string` | `"1,315 miles"` | Configures the component's remaining. |
| `progress` | `number` | `90` | Configures the component's progress. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
| `cardBackgroundColor` | `string` | `"#f9fafb"` | Configures the component's cardbackgroundcolor. |
| `headingColor` | `string` | `"#030712"` | Configures the component's headingcolor. |
| `textColor` | `string` | `"#4b5563"` | Configures the component's textcolor. |
| `mutedTextColor` | `string` | `"#9ca3af"` | Configures the component's mutedtextcolor. |
| `progressTrackColor` | `string` | `"#e5e7eb"` | Configures the component's progresstrackcolor. |
| `progressColor` | `string` | `"#030712"` | Configures the component's progresscolor. |
# Spotlight
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/spotlight-stats
```
**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 { SpotlightStats } from "@/components/email/spotlight-stats";
```
```tsx
```
## Examples [#examples]
### Rolling stats [#rolling-stats]
#### center [#center]
#### top-left [#top-left]
#### top-right [#top-right]
#### bottom-left [#bottom-left]
#### bottom-right [#bottom-right]
### Single stat with background image [#single-stat-with-background-image]
#### center [#center-1]
#### top-left [#top-left-1]
#### top-right [#top-right-1]
#### bottom-left [#bottom-left-1]
#### bottom-right [#bottom-right-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | -------------------------------------------------------------------------- | --------------------------- | ------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `eyebrow` | `string` | `"Mapped trails"` | Configures the component's eyebrow. |
| `label` | `string` | `"Tracked by active users"` | Configures the component's label. |
| `values` | `string[]` | - | Configures the component's values. |
| `position` | `"center" \| "top-left" \| "top-right" \| "bottom-left" \| "bottom-right"` | `"center"` | Configures the component's position. |
| `backgroundImage` | `{ src: string; alt?: string }` | - | Configures the component's backgroundimage. |
# Stacked
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/stacked-stats
```
**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 { StackedStats } from "@/components/email/stacked-stats";
```
```tsx
```
## Examples [#examples]
### Centered [#centered]
### Right aligned [#right-aligned]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------------- | ---------------------------------------------------------------- | -------------- | ----------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `variant` | `"left" \| "center" \| "right"` | `"left"` | Configures the component's variant. |
| `stats` | `Array<{ heading: string; value: string; description: string }>` | - | Configures the component's stats. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
| `accentColor` | `string` | `"#f97316"` | Configures the component's accentcolor. |
| `headingColor` | `string` | `"#030712"` | Configures the component's headingcolor. |
| `textColor` | `string` | `"#4b5563"` | Configures the component's textcolor. |
| `dividerColor` | `string` | `"#cbd5e1"` | Configures the component's dividercolor. |
# Timelines
# Payment
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/payment-timeline
```
**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 { PaymentTimeline } from "@/components/email/payment-timeline";
```
```tsx
```
## Examples [#examples]
### Four steps [#four-steps]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------------ | ------------------------ | --------------- | -------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `variant` | `"3-steps" \| "4-steps"` | `"3-steps"` | Configures the component's variant. |
| `amount` | `string` | `"$9.99"` | Configures the component's amount. |
| `firstDate` | `string` | `"Paid: 17/11"` | Configures the component's firstdate. |
| `secondDate` | `string` | `"17/12"` | Configures the component's seconddate. |
| `thirdDate` | `string` | `"17/01"` | Configures the component's thirddate. |
| `fourthDate` | `string` | `"17/02"` | Configures the component's fourthdate. |
# General
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/timeline
```
**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 { Timeline } from "@/components/email/timeline";
```
```tsx
```
## Examples [#examples]
### Cards timeline [#cards-timeline]
#### default [#default]
#### with-accent [#with-accent]
#### with-badge [#with-badge]
#### image-top [#image-top]
#### image-bottom [#image-bottom]
### Changelog [#changelog]
#### muted-left [#muted-left]
#### muted-right [#muted-right]
#### basic-left [#basic-left]
#### basic-right [#basic-right]
#### accent-left [#accent-left]
#### accent-right [#accent-right]
### Changelog boxed [#changelog-boxed]
#### muted-left [#muted-left-1]
#### muted-right [#muted-right-1]
#### basic-left [#basic-left-1]
#### basic-right [#basic-right-1]
#### accent-left [#accent-left-1]
#### accent-right [#accent-right-1]
### Split cards [#split-cards]
#### muted [#muted]
#### muted-reverse [#muted-reverse]
#### boxed [#boxed]
#### boxed-reverse [#boxed-reverse]
#### accent [#accent]
#### accent-reverse [#accent-reverse]
#### image-top [#image-top-1]
#### image-top-reverse [#image-top-reverse]
#### image-bottom [#image-bottom-1]
#### image-bottom-reverse [#image-bottom-reverse]
### Stacked timeline [#stacked-timeline]
#### line muted-left [#line-muted-left]
#### line muted-right [#line-muted-right]
#### line basic-left [#line-basic-left]
#### line basic-right [#line-basic-right]
#### line completed-left [#line-completed-left]
#### line completed-right [#line-completed-right]
#### boxed muted-left [#boxed-muted-left]
#### boxed muted-right [#boxed-muted-right]
#### boxed basic-left [#boxed-basic-left]
#### boxed basic-right [#boxed-basic-right]
#### boxed accent-left [#boxed-accent-left]
#### boxed accent-right [#boxed-accent-right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------- | ------------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `items` | `Array<{ index?: string; label?: string; date?: string; version?: string; category?: string; badge?: string; title: string; description?: string; image?: { src: string; alt?: string }; completed?: boolean }>` | - | Configures the component's items. |
| `layout` | `"line" \| "boxed" \| "cards" \| "split"` | `"line"` | Configures the component's layout. |
| `alignment` | `"left" \| "right"` | `"left"` | Configures the component's alignment. |
| `appearance` | `"muted" \| "basic" \| "accent"` | `"basic"` | Configures the component's appearance. |
| `reverse` | `boolean` | `false` | Configures the component's reverse. |
| `variant` | `"default" \| "with-badge" \| "with-accent" \| "image-top" \| "image-bottom" \| "muted-left" \| "muted-right" \| "basic-left" \| "basic-right" \| "accent-left" \| "accent-right" \| "muted" \| "muted-reverse" \| "boxed" \| "boxed-reverse" \| "accent" \| "accent-reverse" \| "image-top-reverse" \| "image-bottom-reverse" \| "completed-left" \| "completed-right"` | Derived from the other props | Selects an exact legacy composition when needed. |
# Details
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/avatar-details
```
**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 { AvatarDetails } from "@/components/email/avatar-details";
```
```tsx
```
## Examples [#examples]
### Avatar with details [#avatar-with-details]
#### left [#left]
#### center [#center]
#### right [#right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| -------- | -------------------------------- | -------------- | ---------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `avatar` | `{ name: string; url?: string }` | - | Configures the component's avatar. |
| `name` | `string` | - | Configures the component's name. |
| `email` | `string` | - | Configures the component's email. |
| `align` | `"left" \| "center" \| "right"` | `"left"` | Configures the component's align. |
# Group
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/avatar-group
```
**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 { AvatarGroup } from "@/components/email/avatar-group";
```
```tsx
```
## Examples [#examples]
### Grouped overlapped avatars [#grouped-overlapped-avatars]
#### xs [#xs]
#### sm [#sm]
#### md [#md]
#### lg [#lg]
#### xl [#xl]
#### 2xl [#2xl]
### Grouped overlapped avatars with plus count [#grouped-overlapped-avatars-with-plus-count]
#### xs [#xs-1]
#### sm [#sm-1]
#### md [#md-1]
#### lg [#lg-1]
#### xl [#xl-1]
#### 2xl [#2xl-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------- | ----------------------------------------------- | ---------------- | ------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `avatars` | `Array<{ name: string; url?: string }>` | Built-in avatars | Configures the component's avatars. |
| `plusCount` | `number` | - | Configures the component's pluscount. |
| `size` | `"xs" \| "sm" \| "md" \| "lg" \| "xl" \| "2xl"` | `"md"` | Configures the component's size. |
| `align` | `"left" \| "center" \| "right"` | `"left"` | Configures the component's align. |
# Avatars
# Divider
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/divider
```
**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 { Divider } from "@/components/email/divider";
```
```tsx
```
## Examples [#examples]
### Line divider [#line-divider]
#### default [#default]
### Divider with title [#divider-with-title]
#### left [#left]
#### center [#center]
#### right [#right]
### Divider with file type [#divider-with-file-type]
#### left [#left-1]
#### center [#center-1]
#### right [#right-1]
### Divider with icon [#divider-with-icon]
#### left [#left-2]
#### center [#center-2]
#### right [#right-2]
### Divider with logo [#divider-with-logo]
#### left [#left-3]
#### center [#center-3]
#### right [#right-3]
### Divider with social icons [#divider-with-social-icons]
#### left [#left-4]
#### center [#center-4]
#### right [#right-4]
### Divider with icon and button [#divider-with-icon-and-button]
#### left [#left-5]
#### center [#center-5]
#### right [#right-5]
### Divider with button [#divider-with-button]
#### left [#left-6]
#### center [#center-6]
#### right [#right-6]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ----------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `align` | `"left" \| "center" \| "right"` | `"center"` | Configures the component's align. |
| `content` | `{ type: "title"; title: string } \| { type: "file"; fileType: string } \| { type: "icon"; src: string } \| { type: "logo"; image: { src: string; alt?: string } } \| { type: "socials" } \| { type: "button"; action: { href: string; label: string } } \| { type: "icon-button"; iconSrc: string; action: { href: string; label: string } }` | - | Configures the component's content. |
# Spacing
# Spacer
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/jsx-email/spacer
```
**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 { Spacer } from "@/components/email/spacer";
```
```tsx
```
## Examples [#examples]
### Vertical spacer [#vertical-spacer]
#### 24px [#24px]
#### 48px [#48px]
#### 64px [#64px]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| -------- | ------------ | -------------- | ---------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `height` | `number` | `24` | Configures the component's height. |
# Billing Details
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/billing-order-summary
```
**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 { BillingOrderSummary } from "@/components/email/billing-order-summary";
```
```tsx
```
## Examples [#examples]
### Order summary with billing details and payment method at the top [#order-summary-with-billing-details-and-payment-method-at-the-top]
#### basic [#basic]
#### basic with payment [#basic-with-payment]
#### basic with notes [#basic-with-notes]
#### basic full details [#basic-full-details]
#### bordered [#bordered]
#### bordered with payment [#bordered-with-payment]
#### bordered with notes [#bordered-with-notes]
#### bordered full details [#bordered-full-details]
### Order summary with billing details and payment method inline [#order-summary-with-billing-details-and-payment-method-inline]
#### basic [#basic-1]
#### basic with notes [#basic-with-notes-1]
#### bordered [#bordered-1]
#### bordered with notes [#bordered-with-notes-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | ----------------------- | -------------- | ------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `payment` | `boolean` | - | Shows the payment-method treatment. |
| `notes` | `boolean` | - | Shows the notes treatment. |
| `billingPosition` | `"top" \| "inline"` | `"top"` | Positions billing details above or inline. |
| `appearance` | `"plain" \| "bordered"` | `"plain"` | Selects the plain or bordered presentation. |
# Order Summary
# Table
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/order-summary-table
```
**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 { OrderSummaryTable } from "@/components/email/order-summary-table";
```
```tsx
```
## Examples [#examples]
### Bordered order summary with total at the bottom [#bordered-order-summary-with-total-at-the-bottom]
#### left [#left]
#### centered [#centered]
#### right [#right]
#### justified [#justified]
### Bordered order summary with total at the top [#bordered-order-summary-with-total-at-the-top]
#### left [#left-1]
#### centered [#centered-1]
#### right [#right-1]
#### justified [#justified-1]
### Bordered order summary with card details [#bordered-order-summary-with-card-details]
#### bottom left [#bottom-left]
#### bottom centered [#bottom-centered]
#### bottom right [#bottom-right]
#### bottom justified [#bottom-justified]
#### top left [#top-left]
#### top centered [#top-centered]
#### top right [#top-right]
#### top justified [#top-justified]
### Boxed order summary with total at the bottom [#boxed-order-summary-with-total-at-the-bottom]
#### left aligned [#left-aligned]
#### left filled [#left-filled]
#### centered [#centered-2]
#### centered filled [#centered-filled]
#### right aligned [#right-aligned]
#### right filled [#right-filled]
#### justified [#justified-2]
#### justified filled [#justified-filled]
### Boxed order summary with total at the top [#boxed-order-summary-with-total-at-the-top]
#### left aligned [#left-aligned-1]
#### left filled [#left-filled-1]
#### centered [#centered-3]
#### centered filled [#centered-filled-1]
#### right aligned [#right-aligned-1]
#### right filled [#right-filled-1]
#### justified [#justified-3]
#### justified filled [#justified-filled-1]
### Boxed order summary with card details and total at the bottom [#boxed-order-summary-with-card-details-and-total-at-the-bottom]
#### left aligned [#left-aligned-2]
#### left filled [#left-filled-2]
#### centered [#centered-4]
#### centered filled [#centered-filled-2]
#### right aligned [#right-aligned-2]
#### right filled [#right-filled-2]
#### justified [#justified-4]
#### justified filled [#justified-filled-2]
### Boxed order summary with card details and total at the top [#boxed-order-summary-with-card-details-and-total-at-the-top]
#### left aligned [#left-aligned-3]
#### left filled [#left-filled-3]
#### centered [#centered-5]
#### centered filled [#centered-filled-3]
#### right aligned [#right-aligned-3]
#### right filled [#right-filled-3]
#### justified [#justified-5]
#### justified filled [#justified-filled-3]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------- | ---------------------------------------------- | -------------- | ----------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `alignment` | `"left" \| "center" \| "right" \| "justified"` | `"left"` | Aligns the order-summary values. |
| `appearance` | `"bordered" \| "boxed"` | `"bordered"` | Selects the bordered or boxed presentation. |
| `filled` | `boolean` | `false` | Uses the filled table treatment when supported. |
| `totalPosition` | `"top" \| "bottom"` | `"bottom"` | Places the order total above or below rows. |
| `cardDetails` | `boolean` | `false` | Shows the card-details treatment. |
# Product Detail
# Masonry Images
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/masonry-product-detail
```
**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 { MasonryProductDetail } from "@/components/email/masonry-product-detail";
```
```tsx
```
## Examples [#examples]
### Product detail with masonry image grid and details [#product-detail-with-masonry-image-grid-and-details]
#### rating at the bottom [#rating-at-the-bottom]
#### rating at the top [#rating-at-the-top]
#### rating aside [#rating-aside]
#### rating aside with header at the top [#rating-aside-with-header-at-the-top]
#### header at the top [#header-at-the-top]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `product` | `{ name?: string; price?: string; description?: string; features?: string[]; colors?: string[]; sizes?: string[]; ctaLabel?: string; ctaHref?: string }` | - | Configures the component's product. |
| `images` | `Array<{ src: string; alt?: string }>` | - | Configures the component's images. |
| `ratingPosition` | `"top" \| "bottom" \| "aside"` | `"bottom"` | Configures the component's ratingposition. |
| `headerPosition` | `"top" \| "default"` | `"default"` | Configures the component's headerposition. |
# Single Image
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/single-image-product-detail
```
**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 { SingleImageProductDetail } from "@/components/email/single-image-product-detail";
```
```tsx
```
## Examples [#examples]
### Single-image product detail with details [#single-image-product-detail-with-details]
#### rating at the bottom [#rating-at-the-bottom]
#### rating at the top [#rating-at-the-top]
#### rating aside [#rating-aside]
#### rating aside with header at the top [#rating-aside-with-header-at-the-top]
#### header at the top [#header-at-the-top]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `product` | `{ name?: string; price?: string; description?: string; features?: string[]; colors?: string[]; sizes?: string[]; ctaLabel?: string; ctaHref?: string }` | - | Configures the component's product. |
| `image` | `{ src: string; alt?: string }` | - | Configures the component's image. |
| `ratingPosition` | `"top" \| "bottom" \| "aside"` | `"bottom"` | Configures the component's ratingposition. |
| `headerPosition` | `"top" \| "default"` | `"default"` | Configures the component's headerposition. |
# Split
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/split-product-detail
```
**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 { SplitProductDetail } from "@/components/email/split-product-detail";
```
```tsx
```
## Examples [#examples]
### Split product detail [#split-product-detail]
#### stacked left [#stacked-left]
#### stacked right [#stacked-right]
#### side left [#side-left]
#### side right [#side-right]
#### rating left [#rating-left]
#### rating right [#rating-right]
#### bleed left [#bleed-left]
#### bleed right [#bleed-right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `product` | `{ name?: string; price?: string; description?: string; features?: string[]; colors?: string[]; sizes?: string[]; ctaLabel?: string; ctaHref?: string }` | - | Configures the component's product. |
| `images` | `Array<{ src: string; alt?: string }>` | - | Configures the component's images. |
| `treatment` | `"stacked" \| "side" \| "rating" \| "bleed"` | `"stacked"` | Configures the component's treatment. |
| `placement` | `"left" \| "right"` | `"left"` | Configures the component's placement. |
# Three Images
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/three-image-product-detail
```
**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 { ThreeImageProductDetail } from "@/components/email/three-image-product-detail";
```
```tsx
```
## Examples [#examples]
### Product detail with three images and details [#product-detail-with-three-images-and-details]
#### rating at the bottom [#rating-at-the-bottom]
#### rating at the top [#rating-at-the-top]
#### rating aside [#rating-aside]
#### rating aside with header at the top [#rating-aside-with-header-at-the-top]
#### header at the top [#header-at-the-top]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `product` | `{ name?: string; price?: string; description?: string; features?: string[]; colors?: string[]; sizes?: string[]; ctaLabel?: string; ctaHref?: string }` | - | Configures the component's product. |
| `images` | `[{ src: string; alt?: string }, { src: string; alt?: string }, { src: string; alt?: string }]` | - | Configures the component's images. |
| `ratingPosition` | `"top" \| "bottom" \| "aside"` | `"bottom"` | Configures the component's ratingposition. |
| `headerPosition` | `"top" \| "default"` | `"default"` | Configures the component's headerposition. |
# Two Images
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/two-image-product-detail
```
**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 { TwoImageProductDetail } from "@/components/email/two-image-product-detail";
```
```tsx
```
## Examples [#examples]
### Product detail with two images and details [#product-detail-with-two-images-and-details]
#### rating at the bottom [#rating-at-the-bottom]
#### rating at the top [#rating-at-the-top]
#### rating aside [#rating-aside]
#### rating aside with header at the top [#rating-aside-with-header-at-the-top]
#### header at the top [#header-at-the-top]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `product` | `{ name?: string; price?: string; description?: string; features?: string[]; colors?: string[]; sizes?: string[]; ctaLabel?: string; ctaHref?: string }` | - | Configures the component's product. |
| `images` | `[{ src: string; alt?: string }, { src: string; alt?: string }]` | - | Configures the component's images. |
| `ratingPosition` | `"top" \| "bottom" \| "aside"` | `"bottom"` | Configures the component's ratingposition. |
| `headerPosition` | `"top" \| "default"` | `"default"` | Configures the component's headerposition. |
# Image Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/bento-image-grid
```
**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 { BentoImageGrid } from "@/components/email/bento-image-grid";
```
```tsx
```
## Examples [#examples]
### Bento grid with images and captions [#bento-grid-with-images-and-captions]
#### captions-top [#captions-top]
#### captions-top-reverse [#captions-top-reverse]
#### captions-bottom [#captions-bottom]
#### captions-bottom-reverse [#captions-bottom-reverse]
### Bento grid with images and details [#bento-grid-with-images-and-details]
#### captions-top [#captions-top-1]
#### captions-top-reverse [#captions-top-reverse-1]
#### captions-top-alt [#captions-top-alt]
#### captions-top-alt-reverse [#captions-top-alt-reverse]
#### captions-bottom [#captions-bottom-1]
#### captions-bottom-reverse [#captions-bottom-reverse-1]
#### captions-bottom-alt [#captions-bottom-alt]
#### captions-bottom-alt-reverse [#captions-bottom-alt-reverse]
### Bento grid with 3 columns and flush images [#bento-grid-with-3-columns-and-flush-images]
#### captions-top [#captions-top-2]
#### captions-top-alt [#captions-top-alt-1]
#### captions-bottom [#captions-bottom-2]
#### captions-bottom-alt [#captions-bottom-alt-1]
### Bento grid with 3 columns and padded images [#bento-grid-with-3-columns-and-padded-images]
#### captions-top [#captions-top-3]
#### captions-top-alt [#captions-top-alt-2]
#### captions-bottom [#captions-bottom-3]
#### captions-bottom-alt [#captions-bottom-alt-2]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------- | -------------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `variant` | `"alternating" \| "three-column"` | `"alternating"` | Selects the alternating or three-column layout. |
| `style` | `"captions" \| "details" \| "flush" \| "padded"` | `"captions"` | Selects the card treatment supported by the layout. |
| `placement` | `"captions-top" \| "captions-top-reverse" \| "captions-bottom" \| "captions-bottom-reverse" \| "captions-top-alt" \| "captions-top-alt-reverse" \| "captions-bottom-alt" \| "captions-bottom-alt-reverse"` | `"captions-top"` | Controls caption placement and reversal. |
| `data` | `[{ description?: string; imageAlt: string; imageSrc: string; title: string }, { description?: string; imageAlt: string; imageSrc: string; title: string }, { description?: string; imageAlt: string; imageSrc: string; title: string }, { description?: string; imageAlt: string; imageSrc: string; title: string }] \| { left: { description?: string; imageAlt: string; imageSrc: string; title: string }; middleImages: [{ description?: string; imageAlt: string; imageSrc: string; title: string }] \| [{ description?: string; imageAlt: string; imageSrc: string; title: string }, { description?: string; imageAlt: string; imageSrc: string; title: string }]; promo?: { dark?: boolean; description: string; title: string }; right: { description?: string; imageAlt: string; imageSrc: string; title: string } }` | Built-in data for the selected layout | Replaces the image data for the selected layout variant. |
`BentoImageGridProps` is a discriminated union. The selected `variant` narrows
the supported `style`, `placement`, and `data` shape.
# Product Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/bento-product-grid
```
**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 { BentoProductGrid } from "@/components/email/bento-product-grid";
```
```tsx
```
## Examples [#examples]
### Bento grid with two rows and 3-column second row [#bento-grid-with-two-rows-and-3-column-second-row]
#### full [#full]
#### full reverse [#full-reverse]
#### left [#left]
#### left reverse [#left-reverse]
#### right [#right]
#### right reverse [#right-reverse]
#### sides [#sides]
#### sides reverse [#sides-reverse]
### Bento grid with even split and two-thirds [#bento-grid-with-even-split-and-two-thirds]
#### full [#full-1]
#### full reverse [#full-reverse-1]
#### left [#left-1]
#### left reverse [#left-reverse-1]
#### right [#right-1]
#### right reverse [#right-reverse-1]
#### sides [#sides-1]
#### sides reverse [#sides-reverse-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- | ---------------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `variant` | `"two-row-three-column" \| "even-split-two-thirds"` | `"two-row-three-column"` | Selects the product-grid layout. |
| `style` | `"full" \| "left" \| "right" \| "sides"` | `"full"` | Controls which product cards use padded treatment. |
| `placement` | `"normal" \| "reverse"` | `"normal"` | Keeps or reverses the row treatment. |
| `data` | `{ bottom: [{ price: string; description?: string; imageAlt: string; imageSrc: string; title: string }, { price: string; description?: string; imageAlt: string; imageSrc: string; title: string }, { price: string; description?: string; imageAlt: string; imageSrc: string; title: string }]; top: [{ price: string; description?: string; imageAlt: string; imageSrc: string; title: string }, { price: string; description?: string; imageAlt: string; imageSrc: string; title: string }] } \| { bottom: [{ price: string; description?: string; imageAlt: string; imageSrc: string; title: string }, { price: string; description?: string; imageAlt: string; imageSrc: string; title: string }]; top: [{ price: string; description?: string; imageAlt: string; imageSrc: string; title: string }, { price: string; description?: string; imageAlt: string; imageSrc: string; title: string }] }` | Built-in data for the selected layout | Replaces the product data for the selected layout variant. |
`BentoProductGridProps` is a discriminated union. The selected `variant`
narrows the accepted `data` shape.
# Stats Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/bento-stats-grid
```
**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 { BentoStatsGrid } from "@/components/email/bento-stats-grid";
```
```tsx
```
## Examples [#examples]
### Two-thirds bento grid with stats [#two-thirds-bento-grid-with-stats]
#### image-top-right [#image-top-right]
#### image-top-left [#image-top-left]
#### image-bottom-right [#image-bottom-right]
#### image-bottom-left [#image-bottom-left]
### Bento grid with even split and image stats [#bento-grid-with-even-split-and-image-stats]
#### image-top-right [#image-top-right-1]
#### image-top-left [#image-top-left-1]
#### image-bottom-right [#image-bottom-right-1]
#### image-bottom-left [#image-bottom-left-1]
### Bento grid with even split and text stats [#bento-grid-with-even-split-and-text-stats]
#### image-top-right [#image-top-right-2]
#### image-top-left [#image-top-left-2]
#### image-bottom-right [#image-bottom-right-2]
#### image-bottom-left [#image-bottom-left-2]
### Bento grid with 3 columns and even split image stats [#bento-grid-with-3-columns-and-even-split-image-stats]
#### image-top-right [#image-top-right-3]
#### image-top-left [#image-top-left-3]
#### image-bottom-right [#image-bottom-right-3]
#### image-bottom-left [#image-bottom-left-3]
### Bento grid with 3 columns and even split text stats [#bento-grid-with-3-columns-and-even-split-text-stats]
#### image-top-right [#image-top-right-4]
#### image-top-left [#image-top-left-4]
#### image-bottom-right [#image-bottom-right-4]
#### image-bottom-left [#image-bottom-left-4]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- | -------------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `variant` | `"two-thirds" \| "even-split" \| "three-column"` | `"two-thirds"` | Selects the stats-grid layout. |
| `style` | `"compact" \| "chart" \| "text"` | `"compact"` | Selects the metric-card treatment supported by layout. |
| `placement` | `"image-top-right" \| "image-top-left" \| "image-bottom-right" \| "image-bottom-left"` | `"image-top-right"` | Positions the image card in the selected layout. |
| `data` | `{ feature: { description: string; title: string }; imageAlt: string; imageSrc: string; metric: { change: string; period: string; title: string; value: string }; stat: { label: string; suffix: string; value: string } } \| { feature: { description: string; title: string }; imageAlt: string; imageSrc: string; metric: { change: string; comparison?: string; reportHref: string; reportLabel: string; title: string; value: string }; stat: { label: string; suffix: string; value: string } } \| { imageAlt: string; imageSrc: string; metric: { change: string; comparison?: string; reportHref: string; reportLabel: string; title: string; value: string }; stats: [{ label: string; suffix: string; value: string }, { label: string; suffix: string; value: string }, { label: string; suffix: string; value: string }] }` | Built-in data for the selected layout | Replaces the stats data for the selected layout variant. |
`BentoStatsGridProps` is a discriminated union. The selected `variant` narrows
the supported `style` and `data` shape.
# Bento Grids
# Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/blog-grid
```
**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 { BlogGrid } from "@/components/email/blog-grid";
```
```tsx
```
## Examples [#examples]
### 2-column blog with images [#2-column-blog-with-images]
#### default [#default]
### 2-column blog with images and text [#2-column-blog-with-images-and-text]
#### default [#default-1]
### 2-column blog with images and boxed content [#2-column-blog-with-images-and-boxed-content]
#### default [#default-2]
### Blog with images and 2-column masonry [#blog-with-images-and-2-column-masonry]
#### default [#default-3]
### 2-column masonry blog with boxed content [#2-column-masonry-blog-with-boxed-content]
#### default [#default-4]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- | ----------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | - | Configures the component's heading. |
| `posts` | `Array<{ title: string; excerpt?: string; image?: { alt?: string; src: string }; author?: string; badge?: string; date?: string; month?: string; episode?: string; host?: string }>` | - | Configures the component's posts. |
| `masonry` | `boolean` | `false` | Uses the masonry layout. |
| `content` | `"image" \| "image-text" \| "boxed"` | `"image"` | Selects the post-card treatment. |
# Featured Post
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/featured-blog-post
```
**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 { FeaturedBlogPost } from "@/components/email/featured-blog-post";
```
```tsx
```
## Examples [#examples]
### Featured blog post [#featured-blog-post]
#### default [#default]
### Featured post with large date [#featured-post-with-large-date]
#### default [#default-1]
### Full-width featured post with large date [#full-width-featured-post-with-large-date]
#### default [#default-2]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `post` | `{ title: string; excerpt?: string; image?: { alt?: string; src: string }; author?: string; badge?: string; date?: string; month?: string; episode?: string; host?: string }` | - | Configures the component's post. |
| `width` | `"contained" \| "full"` | `"contained"` | Configures the component's width. |
| `dateStyle` | `"none" \| "large"` | `"none"` | Configures the component's datestyle. |
# Horizontal Post
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/horizontal-blog-post
```
**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 { HorizontalBlogPost } from "@/components/email/horizontal-blog-post";
```
```tsx
```
## Examples [#examples]
### Single post horizontal [#single-post-horizontal]
#### default [#default]
### Blog post horizontal boxed [#blog-post-horizontal-boxed]
#### default [#default-1]
### Blog post horizontal boxed with split images [#blog-post-horizontal-boxed-with-split-images]
#### default [#default-2]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ----------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `post` | `{ title: string; excerpt?: string; image?: { alt?: string; src: string }; author?: string; badge?: string; date?: string; month?: string; episode?: string; host?: string }` | - | Configures the component's post. |
| `surface` | `"plain" \| "boxed"` | `"plain"` | Configures the component's surface. |
| `media` | `"single" \| "split"` | `"single"` | Configures the component's media. |
# Blog
# Podcast
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/podcast-blog
```
**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 { PodcastBlog } from "@/components/email/podcast-blog";
```
```tsx
```
## Examples [#examples]
### Podcast blog split [#podcast-blog-split]
#### default [#default]
### Podcast full width [#podcast-full-width]
#### default [#default-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | --------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `post` | `{ title: string; excerpt?: string; image?: { alt?: string; src: string }; author?: string; badge?: string; date?: string; month?: string; episode?: string; host?: string }` | - | Configures the component's post. |
| `width` | `"split" \| "full"` | `"split"` | Configures the component's width. |
# Card
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/card-coupons
```
**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 { CardCoupons } from "@/components/email/card-coupons";
```
```tsx
```
## Examples [#examples]
### Pattern [#pattern]
### Background image [#background-image]
### Overlay [#overlay]
### Background image header [#background-image-header]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------------- | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | - | Configures the component's heading. |
| `recipient` | `string` | `"Jenna Adams"` | Configures the component's recipient. |
| `code` | `string` | `"WINTER20OFF"` | Configures the component's code. |
| `description` | `string` | `"Use code: WINTER20OFF at checkout, or click the link below to automatically apply the discount to your order."` | Configures the component's description. |
| `logoSrc` | `string` | - | Configures the component's logosrc. |
| `logoAlt` | `string` | `"Maizzle"` | Configures the component's logoalt. |
| `backgroundImageSrc` | `string` | - | Configures the component's backgroundimagesrc. |
| `buttonLabel` | `string` | `"Shop now"` | Configures the component's buttonlabel. |
| `buttonHref` | `string` | `"https://example.com"` | Configures the component's buttonhref. |
| `arrowIconSrc` | `string` | `"https://placehold.co/64x64/C2410C/FFFFFF.png?text=Arrow%20Right"` | Configures the component's arrowiconsrc. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
| `cardBackgroundColor` | `string` | `"#1f2937"` | Configures the component's cardbackgroundcolor. |
| `codeBackgroundColor` | `string` | `"#f3f4f6"` | Configures the component's codebackgroundcolor. |
| `headingColor` | `string` | `"#fffffe"` | Configures the component's headingcolor. |
| `textColor` | `string` | `"#4b5563"` | Configures the component's textcolor. |
| `mutedTextColor` | `string` | `"#9ca3af"` | Configures the component's mutedtextcolor. |
| `buttonBackgroundColor` | `string` | `"#4f46e5"` | Configures the component's buttonbackgroundcolor. |
| `buttonColor` | `string` | `"#fffffe"` | Configures the component's buttoncolor. |
| `variant` | `"with-name" \| "with-pattern" \| "with-overlay" \| "with-background-image" \| "background-image-header"` | `"with-overlay"` | Configures the component's variant. |
# Centered Text
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/coupons-with-centered-text
```
**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 { CouponsWithCenteredText } from "@/components/email/coupons-with-centered-text";
```
```tsx
```
## Examples [#examples]
### Inline [#inline]
### Background [#background]
### Alternate [#alternate]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------------- | ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `overline` | `string` | `"Our biggest sale of the year"` | Configures the component's overline. |
| `discount` | `string` | `"20% OFF"` | Configures the component's discount. |
| `code` | `string` | `"WINTER20OFF"` | Configures the component's code. |
| `expiry` | `string` | `"until 31/10/2025"` | Configures the component's expiry. |
| `description` | `string` | `"Use code: WINTER20OFF at checkout, or click the link below to automatically apply the discount to your order."` | Configures the component's description. |
| `backgroundImageSrc` | `string` | `"https://picsum.photos/seed/emailcn-coupons-pattern/800/600.jpg"` | Configures the component's backgroundimagesrc. |
| `buttonLabel` | `string` | `"Shop now"` | Configures the component's buttonlabel. |
| `buttonHref` | `string` | `"https://example.com"` | Configures the component's buttonhref. |
| `arrowIconSrc` | `string` | `"https://placehold.co/64x64/C2410C/FFFFFF.png?text=Arrow%20Right"` | Configures the component's arrowiconsrc. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
| `codeBackgroundColor` | `string` | `"#f3f4f6"` | Configures the component's codebackgroundcolor. |
| `headingColor` | `string` | `"#030712"` | Configures the component's headingcolor. |
| `textColor` | `string` | `"#4b5563"` | Configures the component's textcolor. |
| `buttonBackgroundColor` | `string` | `"#4f46e5"` | Configures the component's buttonbackgroundcolor. |
| `buttonColor` | `string` | `"#fffffe"` | Configures the component's buttoncolor. |
| `variant` | `"impact" \| "inline" \| "impact-alt" \| "impact-background"` | `"impact"` | Configures the component's variant. |
# Content Overlay
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/coupons-with-content-overlayed
```
**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 { CouponsWithContentOverlayed } from "@/components/email/coupons-with-content-overlayed";
```
```tsx
```
## Examples [#examples]
### Centered [#centered]
### Code at bottom [#code-at-bottom]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------------- | ---------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `overline` | `string` | `"Our biggest sale of the year"` | Configures the component's overline. |
| `discount` | `string` | `"20% OFF"` | Configures the component's discount. |
| `code` | `string` | `"WINTER20OFF"` | Configures the component's code. |
| `expiry` | `string` | `"until 31/10/2025"` | Configures the component's expiry. |
| `backgroundImageSrc` | `string` | - | Configures the component's backgroundimagesrc. |
| `buttonLabel` | `string` | `"Shop now"` | Configures the component's buttonlabel. |
| `buttonHref` | `string` | `"https://example.com"` | Configures the component's buttonhref. |
| `arrowIconSrc` | `string` | `"https://placehold.co/64x64/C2410C/FFFFFF.png?text=Arrow%20Right"` | Configures the component's arrowiconsrc. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `headingColor` | `string` | `"#fffffe"` | Configures the component's headingcolor. |
| `codeBackgroundColor` | `string` | `"#fffffe"` | Configures the component's codebackgroundcolor. |
| `codeColor` | `string` | `"#030712"` | Configures the component's codecolor. |
| `buttonBackgroundColor` | `string` | `"#030712"` | Configures the component's buttonbackgroundcolor. |
| `buttonColor` | `string` | `"#fffffe"` | Configures the component's buttoncolor. |
| `variant` | `"split" \| "centered" \| "code-bottom"` | `"code-bottom"` | Configures the component's variant. |
# Coupons
# Avatars
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/avatar-call-to-action
```
**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 { AvatarCallToAction } from "@/components/email/avatar-call-to-action";
```
```tsx
```
## Examples [#examples]
### CTA with team avatars [#cta-with-team-avatars]
#### default [#default]
#### avatars top [#avatars-top]
#### single avatar [#single-avatar]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------------- | ---------------------------------------- | -------------- | --------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | - | Configures the component's heading. |
| `description` | `string` | - | Configures the component's description. |
| `actions` | `Array<{ href: string; label: string }>` | - | Configures the component's actions. |
| `avatars` | `Array<{ src: string; alt?: string }>` | - | Configures the component's avatars. |
| `placement` | `"top" \| "inline"` | `"inline"` | Configures the component's placement. |
# Background
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/background-call-to-action
```
**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 { BackgroundCallToAction } from "@/components/email/background-call-to-action";
```
```tsx
```
## Examples [#examples]
### CTA with background image [#cta-with-background-image]
#### flush [#flush]
#### boxed [#boxed]
#### padded [#padded]
### Boxed CTA with background image [#boxed-cta-with-background-image]
#### flush light [#flush-light]
#### flush dark [#flush-dark]
#### padded light [#padded-light]
#### padded dark [#padded-dark]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | ---------------------------------------- | ----------------------------- | ------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | `"Welcome to Your Workspace"` | Configures the component's heading. |
| `description` | `string` | - | Configures the component's description. |
| `emphasis` | `string` | - | Configures the component's emphasis. |
| `actions` | `Array<{ href: string; label: string }>` | - | Configures the component's actions. |
| `backgroundImage` | `{ src: string; alt?: string }` | - | Configures the component's backgroundimage. |
| `width` | `"flush" \| "boxed" \| "padded"` | `"flush"` | Configures the component's width. |
| `contentCard` | `boolean` | `false` | Configures the component's contentcard. |
| `appearance` | `"light" \| "dark"` | `"light"` | Configures the component's appearance. |
# Basic
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/call-to-action
```
**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 { CallToAction } from "@/components/email/call-to-action";
```
```tsx
```
## Examples [#examples]
### CTA with title and action lead [#cta-with-title-and-action-lead]
#### minimal [#minimal]
#### title and lead [#title-and-lead]
#### secondary button [#secondary-button]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------------- | ---------------------------------------- | ------------------------------- | --------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | `"Confirm your email"` | Configures the component's heading. |
| `description` | `string` | - | Configures the component's description. |
| `signoff` | `string` | `"Thank you, the emailcn Team"` | Shows the title-and-lead treatment. |
| `actions` | `Array<{ href: string; label: string }>` | - | Configures up to two actions. |
# Collage
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/collage-call-to-action
```
**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 { CollageCallToAction } from "@/components/email/collage-call-to-action";
```
```tsx
```
## Examples [#examples]
### CTA with shifted images [#cta-with-shifted-images]
#### side [#side]
#### offset [#offset]
#### shifted [#shifted]
#### collage [#collage]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------------- | ---------------------------------------------- | -------------- | --------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | - | Configures the component's heading. |
| `description` | `string` | - | Configures the component's description. |
| `action` | `{ href: string; label: string }` | - | Configures the component's action. |
| `images` | `Array<{ src: string; alt?: string }>` | - | Configures the component's images. |
| `treatment` | `"offset" \| "shifted" \| "side" \| "collage"` | `"side"` | Configures the component's treatment. |
# Image Strip
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/image-strip-call-to-action
```
**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 { ImageStripCallToAction } from "@/components/email/image-strip-call-to-action";
```
```tsx
```
## Examples [#examples]
### CTA with image strip [#cta-with-image-strip]
#### boxed left [#boxed-left]
#### boxed right [#boxed-right]
#### full left [#full-left]
#### full right [#full-right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------------- | -------------------------------------- | ---------------------- | --------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | `"Join the Adventure"` | Configures the component's heading. |
| `description` | `string` | - | Configures the component's description. |
| `action` | `{ href: string; label: string }` | - | Configures the component's action. |
| `images` | `Array<{ src: string; alt?: string }>` | - | Configures the component's images. |
| `placement` | `"left" \| "right"` | `"right"` | Configures the component's placement. |
| `width` | `"boxed" \| "full"` | `"boxed"` | Configures the component's width. |
# Cta
# Top Image
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/top-image-call-to-action
```
**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 { TopImageCallToAction } from "@/components/email/top-image-call-to-action";
```
```tsx
```
## Examples [#examples]
### CTA with top large image [#cta-with-top-large-image]
#### default [#default]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------------- | --------------------------------- | -------------------------------- | --------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | `"Built for the journey ahead."` | Configures the component's heading. |
| `description` | `string` | - | Configures the component's description. |
| `action` | `{ href: string; label: string }` | - | Configures the component's action. |
| `image` | `{ src: string; alt?: string }` | - | Configures the component's image. |
# Image
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/image-feature
```
**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 { ImageFeature } from "@/components/email/image-feature";
```
```tsx
```
## Examples [#examples]
### Feature with product image [#feature-with-product-image]
#### image left [#image-left]
#### image right [#image-right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------- | --------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | `"Powering every payment."` | Configures the component's heading. |
| `body` | `string` | `"Discover tools that make accepting payments faster, easier, and more reliable, wherever you serve customers."` | Configures the component's body. |
| `image` | `{ src: string; alt?: string }` | - | Configures the component's image. |
| `action` | `{ href: string; label: string; iconSrc?: string }` | - | Configures the component's action. |
| `placement` | `"left" \| "right"` | `"right"` | Configures the component's placement. |
# Feature
# Portrait
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/portrait-feature
```
**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 { PortraitFeature } from "@/components/email/portrait-feature";
```
```tsx
```
## Examples [#examples]
### Feature with large portrait image [#feature-with-large-portrait-image]
#### content top left [#content-top-left]
#### content top right [#content-top-right]
#### content bottom left [#content-bottom-left]
#### content bottom right [#content-bottom-right]
#### logo top-left [#logo-top-left]
#### logo top-right [#logo-top-right]
#### logo bottom-left [#logo-bottom-left]
#### logo bottom-right [#logo-bottom-right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | -------------------------------------------------------------- | ------------------------ | ----------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | - | Configures the component's heading. |
| `body` | `string` | - | Configures the component's body. |
| `primaryImage` | `{ src: string; alt?: string }` | - | Configures the component's primaryimage. |
| `secondaryImage` | `{ src: string; alt?: string }` | - | Configures the component's secondaryimage. |
| `logo` | `{ src: string; alt?: string }` | - | Configures the component's logo. |
| `action` | `{ href: string; label: string; iconSrc?: string }` | - | Configures the component's action. |
| `placement` | `"left" \| "right"` | `"right"` | Configures the component's placement. |
| `contentPosition` | `"top" \| "bottom"` | - | Configures the component's contentposition. |
| `logoPosition` | `"top-left" \| "top-right" \| "bottom-left" \| "bottom-right"` | Derived from `placement` | Positions the logo when `contentPosition` is not set. |
# Product Images
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/product-images-feature
```
**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 { ProductImagesFeature } from "@/components/email/product-images-feature";
```
```tsx
```
## Examples [#examples]
### Feature with multiple product images [#feature-with-multiple-product-images]
#### logo left [#logo-left]
#### logo right [#logo-right]
#### images left [#images-left]
#### images right [#images-right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| -------------- | --------------------------------------------------- | -------------- | ---------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | - | Configures the component's heading. |
| `body` | `string` | - | Configures the component's body. |
| `images` | `Array<{ src: string; alt?: string }>` | - | Configures the component's images. |
| `logo` | `{ src: string; alt?: string }` | - | Configures the component's logo. |
| `action` | `{ href: string; label: string; iconSrc?: string }` | - | Configures the component's action. |
| `placement` | `"left" \| "right"` | `"right"` | Configures the component's placement. |
| `presentation` | `"images" \| "logo"` | `"images"` | Selects the image collage or logo composition. |
# Tall Background Images
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/tall-background-images-feature
```
**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 { TallBackgroundImagesFeature } from "@/components/email/tall-background-images-feature";
```
```tsx
```
## Examples [#examples]
### Feature with double tall background images [#feature-with-double-tall-background-images]
#### logo top-left [#logo-top-left]
#### logo top-right [#logo-top-right]
#### logo bottom-left [#logo-bottom-left]
#### logo bottom-right [#logo-bottom-right]
### Feature with full title and tall background images [#feature-with-full-title-and-tall-background-images]
#### logo top-left [#logo-top-left-1]
#### logo top-right [#logo-top-right-1]
#### logo bottom-left [#logo-bottom-left-1]
#### logo bottom-right [#logo-bottom-right-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| -------------- | ---------------------------------------------------------------- | -------------- | ---------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | - | Configures the component's heading. |
| `body` | `string` | - | Configures the component's body. |
| `images` | `[{ src: string; alt?: string }, { src: string; alt?: string }]` | - | Configures the component's images. |
| `logo` | `{ src: string; alt?: string }` | - | Configures the component's logo. |
| `action` | `{ href: string; label: string; iconSrc?: string }` | - | Configures the component's action. |
| `logoPosition` | `"top-left" \| "top-right" \| "bottom-left" \| "bottom-right"` | `"top-left"` | Configures the component's logoposition. |
| `titleWidth` | `"split" \| "full"` | `"split"` | Configures the component's titlewidth. |
# Footers
# Navigation
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/navigation-footer
```
**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 { NavigationFooter } from "@/components/email/navigation-footer";
```
```tsx
```
## Examples [#examples]
### Footer centered with menu and socials [#footer-centered-with-menu-and-socials]
#### default [#default]
### Footer with 2-column menu [#footer-with-2-column-menu]
#### left logo [#left-logo]
#### right logo [#right-logo]
### Footer with 2-column menu and divider [#footer-with-2-column-menu-and-divider]
#### left logo [#left-logo-1]
#### right logo [#right-logo-1]
### Footer with 3-column menu [#footer-with-3-column-menu]
#### left logo [#left-logo-2]
#### right logo [#right-logo-2]
### Footer with full menu [#footer-with-full-menu]
#### oversized logo [#oversized-logo]
#### bordered [#bordered]
### Footer with text menu and socials [#footer-with-text-menu-and-socials]
#### left logo [#left-logo-3]
#### right logo [#right-logo-3]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------- | ------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `brand` | `{ logo: { src: string; alt?: string }; href?: string }` | - | Configures the component's brand. |
| `description` | `string` | `"Lorem ipsum dolor sit amet consectetur. Eget aenean sed sit sed in sapien. Vel auctor arcu nulla consectetur sed."` | Configures the component's description. |
| `menus` | `Array<{ heading?: string; links: Array<{ label: string; href: string }> }>` | - | Configures the component's menus. |
| `socials` | `Array<{ iconSrc: string; label: string; href: string }>` | - | Configures the component's socials. |
| `legal` | `{ copyright?: string; text?: string; unsubscribeHref?: string; preferencesHref?: string }` | - | Configures the component's legal. |
| `columns` | `1 \| 2 \| 3` | `2` | Configures the component's columns. |
| `alignment` | `"left" \| "center" \| "right"` | `"left"` | Configures the component's alignment. |
| `logoPosition` | `"left" \| "right" \| "top" \| "bottom"` | `"left"` | Configures the component's logoposition. |
| `divider` | `boolean` | `false` | Configures the component's divider. |
| `oversizedLogo` | `boolean` | `false` | Configures the component's oversizedlogo. |
| `variant` | `"left-logo" \| "right-logo" \| "oversized-logo" \| "bordered"` | Derived from the other props | Selects an exact legacy composition when needed. |
# Promotion
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/promotion-footer
```
**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 { PromotionFooter } from "@/components/email/promotion-footer";
```
```tsx
```
## Examples [#examples]
### Footer with content and CTA [#footer-with-content-and-cta]
#### left [#left]
#### center [#center]
#### right [#right]
### Footer with large title and buttons [#footer-with-large-title-and-buttons]
#### default [#default]
### Footer with menu and full-width CTA [#footer-with-menu-and-full-width-cta]
#### default [#default-1]
### Footer with overlapped CTA [#footer-with-overlapped-cta]
#### content left logo [#content-left-logo]
#### content right logo [#content-right-logo]
#### 2-column menu left logo [#2-column-menu-left-logo]
#### 2-column menu right logo [#2-column-menu-right-logo]
#### 3-column menu left logo [#3-column-menu-left-logo]
#### 3-column menu right logo [#3-column-menu-right-logo]
#### address left logo [#address-left-logo]
#### address right logo [#address-right-logo]
#### centered content [#centered-content]
#### centered menu [#centered-menu]
#### centered socials [#centered-socials]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `brand` | `{ logo: { src: string; alt?: string }; href?: string }` | - | Configures the component's brand. |
| `heading` | `string` | `"Start sending professionally\ndesigned emails today"` | Configures the component's heading. |
| `description` | `string` | - | Configures the component's description. |
| `actions` | `Array<{ href: string; label: string }>` | - | Configures the component's actions. |
| `legal` | `{ copyright?: string; text?: string; unsubscribeHref?: string; preferencesHref?: string }` | - | Configures the component's legal. |
| `placement` | `"inline" \| "full-width" \| "overlap" \| "large-title"` | `"inline"` | Configures the component's placement. |
| `menuColumns` | `0 \| 2 \| 3` | `0` | Configures the component's menucolumns. |
| `alignment` | `"left" \| "center" \| "right"` | `"center"` | Configures the component's alignment. |
| `logoPosition` | `"left" \| "right"` | `"left"` | Positions the logo in overlapping layouts. |
| `backgroundImage` | `{ src: string; alt?: string }` | - | Configures the component's backgroundimage. |
| `variant` | `"centered" \| "left-aligned" \| "right-aligned" \| "content" \| "2-column-menu" \| "3-column-menu" \| "centered-content" \| "centered-menu" \| "address" \| "centered-socials"` | Derived from the other props | Selects an exact legacy composition when needed. |
# Utility
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/utility-footer
```
**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 { UtilityFooter } from "@/components/email/utility-footer";
```
```tsx
```
## Examples [#examples]
### Footer with app store buttons [#footer-with-app-store-buttons]
#### centered [#centered]
#### two columns [#two-columns]
#### with title [#with-title]
### Footer with background image [#footer-with-background-image]
#### bottom image content left logo [#bottom-image-content-left-logo]
#### bottom image 2-column menu left logo [#bottom-image-2-column-menu-left-logo]
#### bottom image 2-column menu right logo [#bottom-image-2-column-menu-right-logo]
#### bottom image 3-column menu left logo [#bottom-image-3-column-menu-left-logo]
#### bottom image 3-column menu right logo [#bottom-image-3-column-menu-right-logo]
#### bottom image centered [#bottom-image-centered]
#### bottom image content right logo [#bottom-image-content-right-logo]
#### top image 3-column menu left logo [#top-image-3-column-menu-left-logo]
#### top image 3-column menu right logo [#top-image-3-column-menu-right-logo]
#### top image address left logo [#top-image-address-left-logo]
#### top image address right logo [#top-image-address-right-logo]
#### top image centered [#top-image-centered]
#### top image content left logo [#top-image-content-left-logo]
#### top image content right logo [#top-image-content-right-logo]
#### top image logo bottom [#top-image-logo-bottom]
### Footer with company locations [#footer-with-company-locations]
#### stacked [#stacked]
#### grid [#grid]
### Footer with legal text [#footer-with-legal-text]
#### default [#default]
### Footer with social icons and address [#footer-with-social-icons-and-address]
#### left [#left]
#### center [#center]
#### right [#right]
### Simple footer with social icons [#simple-footer-with-social-icons]
#### left [#left-1]
#### center [#center-1]
#### right [#right-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `brand` | `{ logo: { src: string; alt?: string }; href?: string }` | - | Configures the component's brand. |
| `socials` | `Array<{ iconSrc: string; label: string; href: string }>` | - | Configures the component's socials. |
| `legal` | `{ copyright?: string; text?: string; unsubscribeHref?: string; preferencesHref?: string }` | - | Configures the component's legal. |
| `content` | `"socials" \| "address" \| "legal" \| "locations" \| "app-stores"` | `"socials"` | Configures the component's content. |
| `locations` | `Array<{ name: string; address: string }>` | - | Configures the component's locations. |
| `address` | `string` | `"© 2026 emailcn\nemailcn \| 155 Bdv Saint Germain \| 75505 Paris"` | Configures the component's address. |
| `title` | `string` | `"Follow us"` | Configures the component's title. |
| `alignment` | `"left" \| "center" \| "right"` | `"center"` | Configures the component's alignment. |
| `columns` | `1 \| 2` | `1` | Configures the component's columns. |
| `logoPosition` | `"left" \| "right"` | `"left"` | Positions the logo in supported layouts. |
| `backgroundImage` | `{ src: string; alt?: string; position?: "top" \| "bottom" }` | - | Configures the component's backgroundimage. |
| `variant` | `"centered" \| "two-columns" \| "with-title" \| "bottom-image-content" \| "bottom-image-2-column-menu" \| "bottom-image-3-column-menu" \| "bottom-image-centered" \| "top-image-content" \| "top-image-3-column-menu" \| "top-image-address" \| "top-image-centered" \| "top-image-logo-bottom" \| "stacked" \| "grid" \| "left-logo" \| "right-logo" \| "left-aligned" \| "right-aligned"` | Derived from the other props | Selects an exact legacy composition when needed. |
# Badge
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/header-with-logo-and-badge
```
**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 { HeaderWithLogoAndBadge } from "@/components/email/header-with-logo-and-badge";
```
```tsx
```
## Examples [#examples]
### Centered [#centered]
### Right logo [#right-logo]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ---------------------- | ------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `logoSrc` | `string` | `"https://placehold.co/320x96/0F766E/FFFFFF.png?text=Maizzle%20Insignia"` | Configures the component's logosrc. |
| `logoAlt` | `string` | `"Maizzle"` | Configures the component's logoalt. |
| `logoHref` | `string` | `"https://example.com"` | Configures the component's logohref. |
| `badgeLabel` | `string` | `"FREE SHIPPING"` | Configures the component's badgelabel. |
| `message` | `string` | `"On orders over $65"` | Configures the component's message. |
| `alignment` | `"left" \| "center" \| "right"` | `"left"` | Configures the component's alignment. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
| `badgeBackgroundColor` | `string` | `"#eff6ff"` | Configures the component's badgebackgroundcolor. |
| `badgeBorderColor` | `string` | `"#dbeafe"` | Configures the component's badgebordercolor. |
| `badgeColor` | `string` | `"#2563eb"` | Configures the component's badgecolor. |
| `badgeTextColor` | `string` | `"#4b5563"` | Configures the component's badgetextcolor. |
# Finance Stats
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/header-with-logo-and-finance-stats
```
**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 { HeaderWithLogoAndFinanceStats } from "@/components/email/header-with-logo-and-finance-stats";
```
```tsx
```
## Examples [#examples]
### Centered [#centered]
### Stats first [#stats-first]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------------- | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ----------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `logoSrc` | `string` | `"https://placehold.co/320x96/0F766E/FFFFFF.png?text=Maizzle%20Insignia"` | Configures the component's logosrc. |
| `logoAlt` | `string` | `"Maizzle"` | Configures the component's logoalt. |
| `logoHref` | `string` | `"https://example.com"` | Configures the component's logohref. |
| `stats` | `Array<{ alt: string; change: string; label: string; positive: boolean; src: string }>` | Built-in stats | Configures the component's stats. |
| `alignment` | `"left" \| "center" \| "right"` | `"left"` | Configures the component's alignment. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
# Menu
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/header-with-logo-and-menu
```
**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 { HeaderWithLogoAndMenu } from "@/components/email/header-with-logo-and-menu";
```
```tsx
```
## Examples [#examples]
### Stacked [#stacked]
### Menu on the left [#menu-on-the-left]
### Menu around the logo [#menu-around-the-logo]
### Stacked left [#stacked-left]
### Stacked right [#stacked-right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ----------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `logoSrc` | `string` | `"https://placehold.co/320x96/0F766E/FFFFFF.png?text=Maizzle%20Insignia"` | Configures the component's logosrc. |
| `logoAlt` | `string` | `"Maizzle"` | Configures the component's logoalt. |
| `logoHref` | `string` | `"https://example.com"` | Configures the component's logohref. |
| `links` | `Array<{ href: string; label: string }>` | Built-in links | Configures the component's links. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
| `textColor` | `string` | `"#6b7280"` | Configures the component's textcolor. |
| `variant` | `"menu-right" \| "menu-left" \| "menu-around" \| "stacked-left" \| "stacked-center" \| "stacked-right"` | `"menu-right"` | Configures the component's variant. |
# Social Icons
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/header-with-logo-and-social-icons
```
**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 { HeaderWithLogoAndSocialIcons } from "@/components/email/header-with-logo-and-social-icons";
```
```tsx
```
## Examples [#examples]
### Centered [#centered]
### Right logo [#right-logo]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------------- | --------------------------------------------------- | ------------------------------------------------------------------------- | ----------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `logoSrc` | `string` | `"https://placehold.co/320x96/0F766E/FFFFFF.png?text=Maizzle%20Insignia"` | Configures the component's logosrc. |
| `logoAlt` | `string` | `"Maizzle"` | Configures the component's logoalt. |
| `logoHref` | `string` | `"https://example.com"` | Configures the component's logohref. |
| `socials` | `Array<{ alt: string; href: string; src: string }>` | Built-in socials | Configures the component's socials. |
| `alignment` | `"left" \| "center" \| "right"` | `"left"` | Configures the component's alignment. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
# Logo
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/header-with-logo
```
**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 { HeaderWithLogo } from "@/components/email/header-with-logo";
```
```tsx
```
## Examples [#examples]
### Logo [#logo]
#### left [#left]
#### center [#center]
#### right [#right]
### Logo with text [#logo-with-text]
#### left [#left-1]
#### center [#center-1]
#### right [#right-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------------- | ------------------------------- | ------------------------------------------------------------------------- | ----------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `logoSrc` | `string` | `"https://placehold.co/320x96/0F766E/FFFFFF.png?text=Maizzle%20Insignia"` | Configures the component's logosrc. |
| `logoAlt` | `string` | `"Maizzle"` | Configures the component's logoalt. |
| `logoHref` | `string` | `"https://example.com"` | Configures the component's logohref. |
| `text` | `string` | `"Medium, rare, but mostly well-done\nHTML email components."` | Configures the component's text. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
| `textColor` | `string` | `"#030712"` | Configures the component's textcolor. |
| `variant` | `"minimal" \| "with-text"` | `"minimal"` | Configures the component's variant. |
| `alignment` | `"left" \| "center" \| "right"` | `"center"` | Configures the component's alignment. |
# User Details
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/header-with-user-details
```
**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 { HeaderWithUserDetails } from "@/components/email/header-with-user-details";
```
```tsx
```
## Examples [#examples]
### Image avatar [#image-avatar]
### Initials with right logo [#initials-with-right-logo]
### Image avatar with right logo [#image-avatar-with-right-logo]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------------- | ----------------------- | ------------------------------------------------------------------------- | ------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `logoSrc` | `string` | `"https://placehold.co/320x96/0F766E/FFFFFF.png?text=Maizzle%20Insignia"` | Configures the component's logosrc. |
| `logoAlt` | `string` | `"Maizzle"` | Configures the component's logoalt. |
| `logoHref` | `string` | `"https://example.com"` | Configures the component's logohref. |
| `userName` | `string` | - | Configures the component's username. |
| `userEmail` | `string` | - | Configures the component's useremail. |
| `initials` | `string` | `"JD"` | Configures the component's initials. |
| `avatarSrc` | `string` | - | Configures the component's avatarsrc. |
| `avatarAlt` | `string` | `""` | Configures the component's avataralt. |
| `avatar` | `"initials" \| "image"` | `"initials"` | Configures the component's avatar. |
| `alignment` | `"left" \| "right"` | `"left"` | Configures the component's alignment. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
| `avatarBackgroundColor` | `string` | `"#f3f4f6"` | Configures the component's avatarbackgroundcolor. |
| `headingColor` | `string` | `"#030712"` | Configures the component's headingcolor. |
| `textColor` | `string` | `"#4b5563"` | Configures the component's textcolor. |
| `mutedTextColor` | `string` | `"#6b7280"` | Configures the component's mutedtextcolor. |
# Headers
# Image Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/image-grid-hero
```
**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 { ImageGridHero } from "@/components/email/image-grid-hero";
```
```tsx
```
## Examples [#examples]
### Hero with image grid [#hero-with-image-grid]
#### images bottom [#images-bottom]
#### images top [#images-top]
#### offset images bottom [#offset-images-bottom]
#### offset images top [#offset-images-top]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- | ----------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `content` | `{ eyebrow?: string; heading?: string; emphasis?: string; subheading?: string; description?: string; price?: string; actions?: Array<{ href: string; label: string }> }` | - | Configures the component's content. |
| `images` | `Array<{ src: string; alt?: string }>` | - | Configures the component's images. |
| `brand` | `{ logo: { src: string; alt?: string }; href?: string }` | - | Configures the component's brand. |
| `imagePosition` | `"top" \| "bottom"` | `"bottom"` | Configures the component's imageposition. |
| `offset` | `boolean` | `false` | Configures the component's offset. |
# Heroes
# Overlap
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/overlap-hero
```
**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 { OverlapHero } from "@/components/email/overlap-hero";
```
```tsx
```
## Examples [#examples]
### Hero with overlapped content [#hero-with-overlapped-content]
#### basic [#basic]
#### basic-with-gradient [#basic-with-gradient]
#### reversed [#reversed]
#### reversed-with-gradient [#reversed-with-gradient]
### Hero with overlapped image [#hero-with-overlapped-image]
#### default [#default]
#### slanted-left [#slanted-left]
#### slanted-right [#slanted-right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------- | ------------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `content` | `{ eyebrow?: string; heading?: string; emphasis?: string; subheading?: string; description?: string; price?: string; actions?: Array<{ href: string; label: string }> }` | - | Configures the component's content. |
| `images` | `Array<{ src: string; alt?: string }>` | - | Configures the component's images. |
| `backgroundImage` | `{ src: string; alt?: string }` | - | Configures the component's backgroundimage. |
| `brand` | `{ logo: { src: string; alt?: string }; href?: string }` | - | Configures the component's brand. |
| `target` | `"content" \| "image"` | `"content"` | Configures the component's target. |
| `direction` | `"left" \| "right"` | `"left"` | Configures the component's direction. |
| `gradient` | `boolean` | `false` | Configures the component's gradient. |
| `slanted` | `boolean` | `false` | Configures the component's slanted. |
| `variant` | `"basic" \| "reversed" \| "basic-with-gradient" \| "reversed-with-gradient" \| "default" \| "slanted-left" \| "slanted-right"` | Derived from the other props | Selects an exact legacy composition when needed. |
# Overlay
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/overlay-hero
```
**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 { OverlayHero } from "@/components/email/overlay-hero";
```
```tsx
```
## Examples [#examples]
### Hero aligned overlay [#hero-aligned-overlay]
#### content-left [#content-left]
#### content-left-reversed [#content-left-reversed]
#### content-right [#content-right]
#### content-right-reversed [#content-right-reversed]
### Hero block overlay [#hero-block-overlay]
#### left-centered [#left-centered]
#### left-top [#left-top]
#### left-bottom [#left-bottom]
#### left-flush-vertical [#left-flush-vertical]
#### right-centered [#right-centered]
#### right-top [#right-top]
#### right-bottom [#right-bottom]
#### right-flush-vertical [#right-flush-vertical]
### Hero block with bleed [#hero-block-with-bleed]
#### left-centered [#left-centered-1]
#### left-top [#left-top-1]
#### left-bottom [#left-bottom-1]
#### left-flush-vertical [#left-flush-vertical-1]
#### right-centered [#right-centered-1]
#### right-top [#right-top-1]
#### right-bottom [#right-bottom-1]
#### right-flush-vertical [#right-flush-vertical-1]
### Hero with overlay gradient [#hero-with-overlay-gradient]
#### split-no-logo [#split-no-logo]
#### split-with-logo [#split-with-logo]
#### unified-no-logo [#unified-no-logo]
#### unified-with-logo [#unified-with-logo]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ------------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `content` | `{ eyebrow?: string; heading?: string; emphasis?: string; subheading?: string; description?: string; price?: string; actions?: Array<{ href: string; label: string }> }` | - | Configures the component's content. |
| `backgroundImage` | `{ src: string; alt?: string }` | - | Configures the component's backgroundimage. |
| `brand` | `{ logo: { src: string; alt?: string }; href?: string }` | - | Configures the component's brand. |
| `treatment` | `"aligned" \| "block" \| "gradient" \| "content-card"` | `"block"` | Configures the component's treatment. |
| `position` | `"top-left" \| "center-left" \| "bottom-left" \| "top-right" \| "center-right" \| "bottom-right"` | `"center-left"` | Configures the component's position. |
| `bleed` | `boolean` | `false` | Configures the component's bleed. |
| `reverse` | `boolean` | `false` | Configures the component's reverse. |
| `variant` | `"content-left" \| "content-left-reversed" \| "content-right" \| "content-right-reversed" \| "left-centered" \| "left-top" \| "left-bottom" \| "left-flush-vertical" \| "right-centered" \| "right-top" \| "right-bottom" \| "right-flush-vertical" \| "split-with-logo" \| "split-no-logo" \| "unified-with-logo" \| "unified-no-logo"` | Derived from the other props | Selects an exact legacy composition when needed. |
# Split
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/split-hero
```
**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 { SplitHero } from "@/components/email/split-hero";
```
```tsx
```
## Examples [#examples]
### Hero overlayed split [#hero-overlayed-split]
#### overlay-left [#overlay-left]
#### overlay-right [#overlay-right]
### Hero split contained [#hero-split-contained]
#### single-image-left [#single-image-left]
#### single-image-right [#single-image-right]
#### square-images-left [#square-images-left]
#### square-images-right [#square-images-right]
#### portrait-top-left [#portrait-top-left]
#### portrait-top-right [#portrait-top-right]
#### portrait-bottom-left [#portrait-bottom-left]
#### portrait-bottom-right [#portrait-bottom-right]
### Hero split full bleed [#hero-split-full-bleed]
#### image-left [#image-left]
#### image-right [#image-right]
### Hero with overlayed content [#hero-with-overlayed-content]
#### default [#default]
#### slanted-left [#slanted-left]
#### slanted-right [#slanted-right]
### Hero with slanted split [#hero-with-slanted-split]
#### left-slanted-up [#left-slanted-up]
#### left-slanted-down [#left-slanted-down]
#### right-slanted-up [#right-slanted-up]
#### right-slanted-down [#right-slanted-down]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ------------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `content` | `{ eyebrow?: string; heading?: string; emphasis?: string; subheading?: string; description?: string; price?: string; actions?: Array<{ href: string; label: string }> }` | - | Configures the component's content. |
| `images` | `Array<{ src: string; alt?: string }>` | - | Configures the component's images. |
| `brand` | `{ logo: { src: string; alt?: string }; href?: string }` | - | Configures the component's brand. |
| `treatment` | `"contained" \| "full-bleed" \| "overlay" \| "slanted"` | `"contained"` | Configures the component's treatment. |
| `imagePosition` | `"left" \| "right"` | `"right"` | Configures the component's imageposition. |
| `slant` | `"up" \| "down"` | `"down"` | Configures the component's slant. |
| `overlayContent` | `boolean` | `false` | Configures the component's overlaycontent. |
| `variant` | `"overlay-left" \| "overlay-right" \| "single-image-left" \| "single-image-right" \| "square-images-left" \| "square-images-right" \| "portrait-top-left" \| "portrait-top-right" \| "portrait-bottom-left" \| "portrait-bottom-right" \| "image-left" \| "image-right" \| "default" \| "slanted-left" \| "slanted-right" \| "left-slanted-down" \| "left-slanted-up" \| "right-slanted-down" \| "right-slanted-up"` | Derived from the other props | Selects an exact legacy composition when needed. |
# Featured Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/featured-image-grid
```
**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 { FeaturedImageGrid } from "@/components/email/featured-image-grid";
```
```tsx
```
## Examples [#examples]
### 2-column image grid with full-width feature [#2-column-image-grid-with-full-width-feature]
#### feature top [#feature-top]
#### feature top overlay [#feature-top-overlay]
#### feature bottom [#feature-bottom]
#### feature bottom overlay [#feature-bottom-overlay]
### 3-column image grid with full-width feature [#3-column-image-grid-with-full-width-feature]
#### feature top [#feature-top-1]
#### feature top overlay [#feature-top-overlay-1]
#### feature bottom [#feature-bottom-1]
#### feature bottom overlay [#feature-bottom-overlay-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | ----------------------------------------------------------------------------------------- | -------------- | ------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `images` | `Array<{ src: string; alt?: string; href?: string; heading?: string; subtext?: string }>` | - | Configures the component's images. |
| `feature` | `{ src: string; alt?: string; href?: string; heading?: string; subtext?: string }` | - | Configures the component's feature. |
| `columns` | `2 \| 3` | `2` | Configures the component's columns. |
| `featurePosition` | `"top" \| "bottom"` | `"top"` | Configures the component's featureposition. |
| `overlay` | `boolean` | `false` | Configures the component's overlay. |
# Full Width
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/full-width-image
```
**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 { FullWidthImage } from "@/components/email/full-width-image";
```
```tsx
```
## Examples [#examples]
### Full-width image [#full-width-image]
#### Default [#default]
#### Top padding [#top-padding]
#### Top right [#top-right]
#### Top left [#top-left]
#### Top + sides [#top--sides]
#### Right padding [#right-padding]
#### Right alt [#right-alt]
#### Bottom padding [#bottom-padding]
#### Bottom right [#bottom-right]
#### Bottom left [#bottom-left]
#### Bottom + sides [#bottom--sides]
#### Left padding [#left-padding]
#### Left alt [#left-alt]
#### Sides padding [#sides-padding]
#### Sides alt [#sides-alt]
### Full-width image with overlay [#full-width-image-with-overlay]
#### Default [#default-1]
#### Top padding [#top-padding-1]
#### Top right [#top-right-1]
#### Top left [#top-left-1]
#### Top + sides [#top--sides-1]
#### Right padding [#right-padding-1]
#### Right alt [#right-alt-1]
#### Bottom padding [#bottom-padding-1]
#### Bottom right [#bottom-right-1]
#### Bottom left [#bottom-left-1]
#### Bottom + sides [#bottom--sides-1]
#### Left padding [#left-padding-1]
#### Left alt [#left-alt-1]
#### Sides padding [#sides-padding-1]
#### Sides alt [#sides-alt-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------------ | ---------------------------------------------------------------------------------- | -------------- | -------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `image` | `{ src: string; alt?: string; href?: string; heading?: string; subtext?: string }` | - | Configures the component's image. |
| `overlay` | `boolean` | `false` | Configures the component's overlay. |
| `frame` | `"none" \| "top" \| "right" \| "bottom" \| "left" \| "sides"` | `"none"` | Configures the component's frame. |
| `frameStyle` | `"padding" \| "split" \| "alternate" \| "sides"` | `"padding"` | Configures the component's framestyle. |
# Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/image-grid
```
**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 { ImageGrid } from "@/components/email/image-grid";
```
```tsx
```
## Examples [#examples]
### 2-column image grid [#2-column-image-grid]
#### square [#square]
#### square overlay [#square-overlay]
#### portrait [#portrait]
#### portrait overlay [#portrait-overlay]
### 3-column image grid [#3-column-image-grid]
#### square [#square-1]
#### square overlay [#square-overlay-1]
#### portrait [#portrait-1]
#### portrait overlay [#portrait-overlay-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------- | ----------------------------------------------------------------------------------------- | -------------- | ----------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `images` | `Array<{ src: string; alt?: string; href?: string; heading?: string; subtext?: string }>` | - | Configures the component's images. |
| `columns` | `2 \| 3` | `2` | Configures the component's columns. |
| `aspect` | `"square" \| "portrait"` | `"square"` | Configures the component's aspect. |
| `overlay` | `boolean` | `false` | Configures the component's overlay. |
# Images
# Masonry Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/masonry-image-grid
```
**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 { MasonryImageGrid } from "@/components/email/masonry-image-grid";
```
```tsx
```
## Examples [#examples]
### 2-column masonry image grid with 3 images [#2-column-masonry-image-grid-with-3-images]
#### left [#left]
#### left overlay [#left-overlay]
#### right [#right]
#### right overlay [#right-overlay]
### 2-column masonry image grid with 4 images [#2-column-masonry-image-grid-with-4-images]
#### left [#left-1]
#### left reverse [#left-reverse]
#### left overlay [#left-overlay-1]
#### left overlay reverse [#left-overlay-reverse]
#### right [#right-1]
#### right reverse [#right-reverse]
#### right overlay [#right-overlay-1]
#### right overlay reverse [#right-overlay-reverse]
### 3-column masonry image grid [#3-column-masonry-image-grid]
#### left [#left-2]
#### left overlay [#left-overlay-2]
#### right [#right-2]
#### right overlay [#right-overlay-2]
### 3-column masonry image grid with full-width feature [#3-column-masonry-image-grid-with-full-width-feature]
#### left [#left-3]
#### left reverse [#left-reverse-1]
#### left overlay [#left-overlay-3]
#### left overlay reverse [#left-overlay-reverse-1]
#### right [#right-3]
#### right reverse [#right-reverse-1]
#### right overlay [#right-overlay-3]
#### right overlay reverse [#right-overlay-reverse-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------- | ----------------------------------------------------------------------------------------- | -------------- | ----------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `images` | `Array<{ src: string; alt?: string; href?: string; heading?: string; subtext?: string }>` | - | Configures the component's images. |
| `feature` | `{ src: string; alt?: string; href?: string; heading?: string; subtext?: string }` | - | Configures the component's feature. |
| `columns` | `2 \| 3` | `2` | Configures the component's columns. |
| `stackPosition` | `"left" \| "right"` | `"left"` | Configures the component's stackposition. |
| `reverse` | `boolean` | `false` | Configures the component's reverse. |
| `overlay` | `boolean` | `false` | Configures the component's overlay. |
# Pricing
# Purchase
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/purchase-pricing
```
**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 { PurchasePricing } from "@/components/email/purchase-pricing";
```
```tsx
```
## Examples [#examples]
### 2-column pricing table with gaps [#2-column-pricing-table-with-gaps]
The default demo above covers this original component.
#### Custom plans [#custom-plans]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------- | -------------------------------------------------------------------------------------------------------------- | -------------- | --------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `plans` | `Array<{ name: string; leasePrice?: string; purchasePrice: string; action: { href: string; label: string } }>` | Built-in plans | Configures the component's plans. |
# Subscription
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/subscription-pricing
```
**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 { SubscriptionPricing } from "@/components/email/subscription-pricing";
```
```tsx
```
## Examples [#examples]
### 2-column pricing table [#2-column-pricing-table]
The default demo above covers this original component.
### Full-width single pricing [#full-width-single-pricing]
#### Single plan [#single-plan]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ----------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `plans` | `Array<{ name: string; description?: string; price: string; currency?: string; period?: string; features?: Array<{ label: string; muted?: boolean }>; action: { href: string; label: string } }>` | Built-in plans | Configures the component's plans. |
| `columns` | `1 \| 2` | `2` | Configures the component's columns. |
# Collection
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/collection-stats
```
**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 { CollectionStats } from "@/components/email/collection-stats";
```
```tsx
```
## Examples [#examples]
### Simple stats [#simple-stats]
#### simple [#simple]
#### outlined [#outlined]
#### bordered [#bordered]
#### boxed [#boxed]
### Grid stats [#grid-stats]
#### simple three columns [#simple-three-columns]
#### boxed three columns [#boxed-three-columns]
#### boxed bento [#boxed-bento]
#### boxed bento reversed [#boxed-bento-reversed]
#### accent column three columns [#accent-column-three-columns]
#### accent column bento [#accent-column-bento]
#### accent column bento reversed [#accent-column-bento-reversed]
#### bordered three columns [#bordered-three-columns]
#### bordered bento [#bordered-bento]
#### bordered bento reversed [#bordered-bento-reversed]
#### outlined three columns [#outlined-three-columns]
#### outlined bento [#outlined-bento]
#### outlined bento reversed [#outlined-bento-reversed]
### Overlay stats [#overlay-stats]
#### default [#default]
#### three columns [#three-columns]
#### bento [#bento]
#### bento reversed [#bento-reversed]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | --------------------------------------------------------------- | -------------- | ------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `items` | `Array<{ label: string; value: string; description?: string }>` | - | Configures the component's items. |
| `featured` | `{ label: string; value: string; description?: string }` | - | Configures the component's featured. |
| `layout` | `"row" \| "three-columns" \| "bento"` | `"row"` | Configures the component's layout. |
| `reverse` | `boolean` | `false` | Configures the component's reverse. |
| `appearance` | `"simple" \| "outlined" \| "bordered" \| "boxed" \| "accent"` | `"simple"` | Configures the component's appearance. |
| `backgroundImage` | `{ src: string; alt?: string }` | - | Configures the component's backgroundimage. |
# Stats
# Milestone
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/milestone-stats
```
**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 { MilestoneStats } from "@/components/email/milestone-stats";
```
```tsx
```
## Examples [#examples]
### Boxed [#boxed]
### Accent [#accent]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------------- | ---------------------------------- | ------------------ | ----------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `variant` | `"default" \| "boxed" \| "accent"` | `"default"` | Configures the component's variant. |
| `heading` | `string` | `"Miles traveled"` | Configures the component's heading. |
| `value` | `string` | `"5,685"` | Configures the component's value. |
| `unit` | `string` | `"miles"` | Configures the component's unit. |
| `currentLevel` | `string` | `"SILVER"` | Configures the component's currentlevel. |
| `nextLevel` | `string` | `"GOLD"` | Configures the component's nextlevel. |
| `remaining` | `string` | `"1,315 miles"` | Configures the component's remaining. |
| `progress` | `number` | `90` | Configures the component's progress. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
| `cardBackgroundColor` | `string` | `"#f9fafb"` | Configures the component's cardbackgroundcolor. |
| `headingColor` | `string` | `"#030712"` | Configures the component's headingcolor. |
| `textColor` | `string` | `"#4b5563"` | Configures the component's textcolor. |
| `mutedTextColor` | `string` | `"#9ca3af"` | Configures the component's mutedtextcolor. |
| `progressTrackColor` | `string` | `"#e5e7eb"` | Configures the component's progresstrackcolor. |
| `progressColor` | `string` | `"#030712"` | Configures the component's progresscolor. |
# Spotlight
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/spotlight-stats
```
**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 { SpotlightStats } from "@/components/email/spotlight-stats";
```
```tsx
```
## Examples [#examples]
### Rolling stats [#rolling-stats]
#### center [#center]
#### top-left [#top-left]
#### top-right [#top-right]
#### bottom-left [#bottom-left]
#### bottom-right [#bottom-right]
### Single stat with background image [#single-stat-with-background-image]
#### center [#center-1]
#### top-left [#top-left-1]
#### top-right [#top-right-1]
#### bottom-left [#bottom-left-1]
#### bottom-right [#bottom-right-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | -------------------------------------------------------------------------- | --------------------------- | ------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `eyebrow` | `string` | `"Mapped trails"` | Configures the component's eyebrow. |
| `label` | `string` | `"Tracked by active users"` | Configures the component's label. |
| `values` | `string[]` | - | Configures the component's values. |
| `position` | `"center" \| "top-left" \| "top-right" \| "bottom-left" \| "bottom-right"` | `"center"` | Configures the component's position. |
| `backgroundImage` | `{ src: string; alt?: string }` | - | Configures the component's backgroundimage. |
# Stacked
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/stacked-stats
```
**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 { StackedStats } from "@/components/email/stacked-stats";
```
```tsx
```
## Examples [#examples]
### Centered [#centered]
### Right aligned [#right-aligned]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------------- | ---------------------------------------------------------------- | -------------- | ----------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `variant` | `"left" \| "center" \| "right"` | `"left"` | Configures the component's variant. |
| `stats` | `Array<{ heading: string; value: string; description: string }>` | - | Configures the component's stats. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
| `accentColor` | `string` | `"#f97316"` | Configures the component's accentcolor. |
| `headingColor` | `string` | `"#030712"` | Configures the component's headingcolor. |
| `textColor` | `string` | `"#4b5563"` | Configures the component's textcolor. |
| `dividerColor` | `string` | `"#cbd5e1"` | Configures the component's dividercolor. |
# Timelines
# Payment
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/payment-timeline
```
**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 { PaymentTimeline } from "@/components/email/payment-timeline";
```
```tsx
```
## Examples [#examples]
### Four steps [#four-steps]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------------ | ------------------------ | --------------- | -------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `variant` | `"3-steps" \| "4-steps"` | `"3-steps"` | Configures the component's variant. |
| `amount` | `string` | `"$9.99"` | Configures the component's amount. |
| `firstDate` | `string` | `"Paid: 17/11"` | Configures the component's firstdate. |
| `secondDate` | `string` | `"17/12"` | Configures the component's seconddate. |
| `thirdDate` | `string` | `"17/01"` | Configures the component's thirddate. |
| `fourthDate` | `string` | `"17/02"` | Configures the component's fourthdate. |
# General
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/timeline
```
**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 { Timeline } from "@/components/email/timeline";
```
```tsx
```
## Examples [#examples]
### Cards timeline [#cards-timeline]
#### default [#default]
#### with-accent [#with-accent]
#### with-badge [#with-badge]
#### image-top [#image-top]
#### image-bottom [#image-bottom]
### Changelog [#changelog]
#### muted-left [#muted-left]
#### muted-right [#muted-right]
#### basic-left [#basic-left]
#### basic-right [#basic-right]
#### accent-left [#accent-left]
#### accent-right [#accent-right]
### Changelog boxed [#changelog-boxed]
#### muted-left [#muted-left-1]
#### muted-right [#muted-right-1]
#### basic-left [#basic-left-1]
#### basic-right [#basic-right-1]
#### accent-left [#accent-left-1]
#### accent-right [#accent-right-1]
### Split cards [#split-cards]
#### muted [#muted]
#### muted-reverse [#muted-reverse]
#### boxed [#boxed]
#### boxed-reverse [#boxed-reverse]
#### accent [#accent]
#### accent-reverse [#accent-reverse]
#### image-top [#image-top-1]
#### image-top-reverse [#image-top-reverse]
#### image-bottom [#image-bottom-1]
#### image-bottom-reverse [#image-bottom-reverse]
### Stacked timeline [#stacked-timeline]
#### line muted-left [#line-muted-left]
#### line muted-right [#line-muted-right]
#### line basic-left [#line-basic-left]
#### line basic-right [#line-basic-right]
#### line completed-left [#line-completed-left]
#### line completed-right [#line-completed-right]
#### boxed muted-left [#boxed-muted-left]
#### boxed muted-right [#boxed-muted-right]
#### boxed basic-left [#boxed-basic-left]
#### boxed basic-right [#boxed-basic-right]
#### boxed accent-left [#boxed-accent-left]
#### boxed accent-right [#boxed-accent-right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------- | ------------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `items` | `Array<{ index?: string; label?: string; date?: string; version?: string; category?: string; badge?: string; title: string; description?: string; image?: { src: string; alt?: string }; completed?: boolean }>` | - | Configures the component's items. |
| `layout` | `"line" \| "boxed" \| "cards" \| "split"` | `"line"` | Configures the component's layout. |
| `alignment` | `"left" \| "right"` | `"left"` | Configures the component's alignment. |
| `appearance` | `"muted" \| "basic" \| "accent"` | `"basic"` | Configures the component's appearance. |
| `reverse` | `boolean` | `false` | Configures the component's reverse. |
| `variant` | `"default" \| "with-badge" \| "with-accent" \| "image-top" \| "image-bottom" \| "muted-left" \| "muted-right" \| "basic-left" \| "basic-right" \| "accent-left" \| "accent-right" \| "muted" \| "muted-reverse" \| "boxed" \| "boxed-reverse" \| "accent" \| "accent-reverse" \| "image-top-reverse" \| "image-bottom-reverse" \| "completed-left" \| "completed-right"` | Derived from the other props | Selects an exact legacy composition when needed. |
# Details
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/avatar-details
```
**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 { AvatarDetails } from "@/components/email/avatar-details";
```
```tsx
```
## Examples [#examples]
### Avatar with details [#avatar-with-details]
#### left [#left]
#### center [#center]
#### right [#right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| -------- | -------------------------------- | -------------- | ---------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `avatar` | `{ name: string; url?: string }` | - | Configures the component's avatar. |
| `name` | `string` | - | Configures the component's name. |
| `email` | `string` | - | Configures the component's email. |
| `align` | `"left" \| "center" \| "right"` | `"left"` | Configures the component's align. |
# Group
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/avatar-group
```
**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 { AvatarGroup } from "@/components/email/avatar-group";
```
```tsx
```
## Examples [#examples]
### Grouped overlapped avatars [#grouped-overlapped-avatars]
#### xs [#xs]
#### sm [#sm]
#### md [#md]
#### lg [#lg]
#### xl [#xl]
#### 2xl [#2xl]
### Grouped overlapped avatars with plus count [#grouped-overlapped-avatars-with-plus-count]
#### xs [#xs-1]
#### sm [#sm-1]
#### md [#md-1]
#### lg [#lg-1]
#### xl [#xl-1]
#### 2xl [#2xl-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------- | ----------------------------------------------- | ---------------- | ------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `avatars` | `Array<{ name: string; url?: string }>` | Built-in avatars | Configures the component's avatars. |
| `plusCount` | `number` | - | Configures the component's pluscount. |
| `size` | `"xs" \| "sm" \| "md" \| "lg" \| "xl" \| "2xl"` | `"md"` | Configures the component's size. |
| `align` | `"left" \| "center" \| "right"` | `"left"` | Configures the component's align. |
# Avatars
# Divider
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/divider
```
**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 { Divider } from "@/components/email/divider";
```
```tsx
```
## Examples [#examples]
### Line divider [#line-divider]
#### default [#default]
### Divider with title [#divider-with-title]
#### left [#left]
#### center [#center]
#### right [#right]
### Divider with file type [#divider-with-file-type]
#### left [#left-1]
#### center [#center-1]
#### right [#right-1]
### Divider with icon [#divider-with-icon]
#### left [#left-2]
#### center [#center-2]
#### right [#right-2]
### Divider with logo [#divider-with-logo]
#### left [#left-3]
#### center [#center-3]
#### right [#right-3]
### Divider with social icons [#divider-with-social-icons]
#### left [#left-4]
#### center [#center-4]
#### right [#right-4]
### Divider with icon and button [#divider-with-icon-and-button]
#### left [#left-5]
#### center [#center-5]
#### right [#right-5]
### Divider with button [#divider-with-button]
#### left [#left-6]
#### center [#center-6]
#### right [#right-6]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ----------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `align` | `"left" \| "center" \| "right"` | `"center"` | Configures the component's align. |
| `content` | `{ type: "title"; title: string } \| { type: "file"; fileType: string } \| { type: "icon"; src: string } \| { type: "logo"; image: { src: string; alt?: string } } \| { type: "socials" } \| { type: "button"; action: { href: string; label: string } } \| { type: "icon-button"; iconSrc: string; action: { href: string; label: string } }` | - | Configures the component's content. |
# Spacing
# Spacer
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/mjml-react/spacer
```
**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 { Spacer } from "@/components/email/spacer";
```
```tsx
```
## Examples [#examples]
### Vertical spacer [#vertical-spacer]
#### 24px [#24px]
#### 48px [#48px]
#### 64px [#64px]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| -------- | ------------ | -------------- | ---------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `height` | `number` | `24` | Configures the component's height. |
# Billing Details
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/billing-order-summary
```
**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 { BillingOrderSummary } from "@/components/email/billing-order-summary";
```
```tsx
```
## Examples [#examples]
### Order summary with billing details and payment method at the top [#order-summary-with-billing-details-and-payment-method-at-the-top]
#### basic [#basic]
#### basic with payment [#basic-with-payment]
#### basic with notes [#basic-with-notes]
#### basic full details [#basic-full-details]
#### bordered [#bordered]
#### bordered with payment [#bordered-with-payment]
#### bordered with notes [#bordered-with-notes]
#### bordered full details [#bordered-full-details]
### Order summary with billing details and payment method inline [#order-summary-with-billing-details-and-payment-method-inline]
#### basic [#basic-1]
#### basic with notes [#basic-with-notes-1]
#### bordered [#bordered-1]
#### bordered with notes [#bordered-with-notes-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | ----------------------- | -------------- | ------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `payment` | `boolean` | - | Shows the payment-method treatment. |
| `notes` | `boolean` | - | Shows the notes treatment. |
| `billingPosition` | `"top" \| "inline"` | `"top"` | Positions billing details above or inline. |
| `appearance` | `"plain" \| "bordered"` | `"plain"` | Selects the plain or bordered presentation. |
# Order Summary
# Table
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/order-summary-table
```
**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 { OrderSummaryTable } from "@/components/email/order-summary-table";
```
```tsx
```
## Examples [#examples]
### Bordered order summary with total at the bottom [#bordered-order-summary-with-total-at-the-bottom]
#### left [#left]
#### centered [#centered]
#### right [#right]
#### justified [#justified]
### Bordered order summary with total at the top [#bordered-order-summary-with-total-at-the-top]
#### left [#left-1]
#### centered [#centered-1]
#### right [#right-1]
#### justified [#justified-1]
### Bordered order summary with card details [#bordered-order-summary-with-card-details]
#### bottom left [#bottom-left]
#### bottom centered [#bottom-centered]
#### bottom right [#bottom-right]
#### bottom justified [#bottom-justified]
#### top left [#top-left]
#### top centered [#top-centered]
#### top right [#top-right]
#### top justified [#top-justified]
### Boxed order summary with total at the bottom [#boxed-order-summary-with-total-at-the-bottom]
#### left aligned [#left-aligned]
#### left filled [#left-filled]
#### centered [#centered-2]
#### centered filled [#centered-filled]
#### right aligned [#right-aligned]
#### right filled [#right-filled]
#### justified [#justified-2]
#### justified filled [#justified-filled]
### Boxed order summary with total at the top [#boxed-order-summary-with-total-at-the-top]
#### left aligned [#left-aligned-1]
#### left filled [#left-filled-1]
#### centered [#centered-3]
#### centered filled [#centered-filled-1]
#### right aligned [#right-aligned-1]
#### right filled [#right-filled-1]
#### justified [#justified-3]
#### justified filled [#justified-filled-1]
### Boxed order summary with card details and total at the bottom [#boxed-order-summary-with-card-details-and-total-at-the-bottom]
#### left aligned [#left-aligned-2]
#### left filled [#left-filled-2]
#### centered [#centered-4]
#### centered filled [#centered-filled-2]
#### right aligned [#right-aligned-2]
#### right filled [#right-filled-2]
#### justified [#justified-4]
#### justified filled [#justified-filled-2]
### Boxed order summary with card details and total at the top [#boxed-order-summary-with-card-details-and-total-at-the-top]
#### left aligned [#left-aligned-3]
#### left filled [#left-filled-3]
#### centered [#centered-5]
#### centered filled [#centered-filled-3]
#### right aligned [#right-aligned-3]
#### right filled [#right-filled-3]
#### justified [#justified-5]
#### justified filled [#justified-filled-3]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------- | ---------------------------------------------- | -------------- | ----------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `alignment` | `"left" \| "center" \| "right" \| "justified"` | `"left"` | Aligns the order-summary values. |
| `appearance` | `"bordered" \| "boxed"` | `"bordered"` | Selects the bordered or boxed presentation. |
| `filled` | `boolean` | `false` | Uses the filled table treatment when supported. |
| `totalPosition` | `"top" \| "bottom"` | `"bottom"` | Places the order total above or below rows. |
| `cardDetails` | `boolean` | `false` | Shows the card-details treatment. |
# Product Detail
# Masonry Images
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/masonry-product-detail
```
**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 { MasonryProductDetail } from "@/components/email/masonry-product-detail";
```
```tsx
```
## Examples [#examples]
### Product detail with masonry image grid and details [#product-detail-with-masonry-image-grid-and-details]
#### rating at the bottom [#rating-at-the-bottom]
#### rating at the top [#rating-at-the-top]
#### rating aside [#rating-aside]
#### rating aside with header at the top [#rating-aside-with-header-at-the-top]
#### header at the top [#header-at-the-top]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `product` | `{ name?: string; price?: string; description?: string; features?: string[]; colors?: string[]; sizes?: string[]; ctaLabel?: string; ctaHref?: string }` | - | Configures the component's product. |
| `images` | `Array<{ src: string; alt?: string }>` | - | Configures the component's images. |
| `ratingPosition` | `"top" \| "bottom" \| "aside"` | `"bottom"` | Configures the component's ratingposition. |
| `headerPosition` | `"top" \| "default"` | `"default"` | Configures the component's headerposition. |
# Single Image
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/single-image-product-detail
```
**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 { SingleImageProductDetail } from "@/components/email/single-image-product-detail";
```
```tsx
```
## Examples [#examples]
### Single-image product detail with details [#single-image-product-detail-with-details]
#### rating at the bottom [#rating-at-the-bottom]
#### rating at the top [#rating-at-the-top]
#### rating aside [#rating-aside]
#### rating aside with header at the top [#rating-aside-with-header-at-the-top]
#### header at the top [#header-at-the-top]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `product` | `{ name?: string; price?: string; description?: string; features?: string[]; colors?: string[]; sizes?: string[]; ctaLabel?: string; ctaHref?: string }` | - | Configures the component's product. |
| `image` | `{ src: string; alt?: string }` | - | Configures the component's image. |
| `ratingPosition` | `"top" \| "bottom" \| "aside"` | `"bottom"` | Configures the component's ratingposition. |
| `headerPosition` | `"top" \| "default"` | `"default"` | Configures the component's headerposition. |
# Split
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/split-product-detail
```
**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 { SplitProductDetail } from "@/components/email/split-product-detail";
```
```tsx
```
## Examples [#examples]
### Split product detail [#split-product-detail]
#### stacked left [#stacked-left]
#### stacked right [#stacked-right]
#### side left [#side-left]
#### side right [#side-right]
#### rating left [#rating-left]
#### rating right [#rating-right]
#### bleed left [#bleed-left]
#### bleed right [#bleed-right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `product` | `{ name?: string; price?: string; description?: string; features?: string[]; colors?: string[]; sizes?: string[]; ctaLabel?: string; ctaHref?: string }` | - | Configures the component's product. |
| `images` | `Array<{ src: string; alt?: string }>` | - | Configures the component's images. |
| `treatment` | `"stacked" \| "side" \| "rating" \| "bleed"` | `"stacked"` | Configures the component's treatment. |
| `placement` | `"left" \| "right"` | `"left"` | Configures the component's placement. |
# Three Images
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/three-image-product-detail
```
**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 { ThreeImageProductDetail } from "@/components/email/three-image-product-detail";
```
```tsx
```
## Examples [#examples]
### Product detail with three images and details [#product-detail-with-three-images-and-details]
#### rating at the bottom [#rating-at-the-bottom]
#### rating at the top [#rating-at-the-top]
#### rating aside [#rating-aside]
#### rating aside with header at the top [#rating-aside-with-header-at-the-top]
#### header at the top [#header-at-the-top]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `product` | `{ name?: string; price?: string; description?: string; features?: string[]; colors?: string[]; sizes?: string[]; ctaLabel?: string; ctaHref?: string }` | - | Configures the component's product. |
| `images` | `[{ src: string; alt?: string }, { src: string; alt?: string }, { src: string; alt?: string }]` | - | Configures the component's images. |
| `ratingPosition` | `"top" \| "bottom" \| "aside"` | `"bottom"` | Configures the component's ratingposition. |
| `headerPosition` | `"top" \| "default"` | `"default"` | Configures the component's headerposition. |
# Two Images
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/two-image-product-detail
```
**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 { TwoImageProductDetail } from "@/components/email/two-image-product-detail";
```
```tsx
```
## Examples [#examples]
### Product detail with two images and details [#product-detail-with-two-images-and-details]
#### rating at the bottom [#rating-at-the-bottom]
#### rating at the top [#rating-at-the-top]
#### rating aside [#rating-aside]
#### rating aside with header at the top [#rating-aside-with-header-at-the-top]
#### header at the top [#header-at-the-top]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `product` | `{ name?: string; price?: string; description?: string; features?: string[]; colors?: string[]; sizes?: string[]; ctaLabel?: string; ctaHref?: string }` | - | Configures the component's product. |
| `images` | `[{ src: string; alt?: string }, { src: string; alt?: string }]` | - | Configures the component's images. |
| `ratingPosition` | `"top" \| "bottom" \| "aside"` | `"bottom"` | Configures the component's ratingposition. |
| `headerPosition` | `"top" \| "default"` | `"default"` | Configures the component's headerposition. |
# Image Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/bento-image-grid
```
**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 { BentoImageGrid } from "@/components/email/bento-image-grid";
```
```tsx
```
## Examples [#examples]
### Bento grid with images and captions [#bento-grid-with-images-and-captions]
#### captions-top [#captions-top]
#### captions-top-reverse [#captions-top-reverse]
#### captions-bottom [#captions-bottom]
#### captions-bottom-reverse [#captions-bottom-reverse]
### Bento grid with images and details [#bento-grid-with-images-and-details]
#### captions-top [#captions-top-1]
#### captions-top-reverse [#captions-top-reverse-1]
#### captions-top-alt [#captions-top-alt]
#### captions-top-alt-reverse [#captions-top-alt-reverse]
#### captions-bottom [#captions-bottom-1]
#### captions-bottom-reverse [#captions-bottom-reverse-1]
#### captions-bottom-alt [#captions-bottom-alt]
#### captions-bottom-alt-reverse [#captions-bottom-alt-reverse]
### Bento grid with 3 columns and flush images [#bento-grid-with-3-columns-and-flush-images]
#### captions-top [#captions-top-2]
#### captions-top-alt [#captions-top-alt-1]
#### captions-bottom [#captions-bottom-2]
#### captions-bottom-alt [#captions-bottom-alt-1]
### Bento grid with 3 columns and padded images [#bento-grid-with-3-columns-and-padded-images]
#### captions-top [#captions-top-3]
#### captions-top-alt [#captions-top-alt-2]
#### captions-bottom [#captions-bottom-3]
#### captions-bottom-alt [#captions-bottom-alt-2]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------- | -------------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `variant` | `"alternating" \| "three-column"` | `"alternating"` | Selects the alternating or three-column layout. |
| `style` | `"captions" \| "details" \| "flush" \| "padded"` | `"captions"` | Selects the card treatment supported by the layout. |
| `placement` | `"captions-top" \| "captions-top-reverse" \| "captions-bottom" \| "captions-bottom-reverse" \| "captions-top-alt" \| "captions-top-alt-reverse" \| "captions-bottom-alt" \| "captions-bottom-alt-reverse"` | `"captions-top"` | Controls caption placement and reversal. |
| `data` | `[{ description?: string; imageAlt: string; imageSrc: string; title: string }, { description?: string; imageAlt: string; imageSrc: string; title: string }, { description?: string; imageAlt: string; imageSrc: string; title: string }, { description?: string; imageAlt: string; imageSrc: string; title: string }] \| { left: { description?: string; imageAlt: string; imageSrc: string; title: string }; middleImages: [{ description?: string; imageAlt: string; imageSrc: string; title: string }] \| [{ description?: string; imageAlt: string; imageSrc: string; title: string }, { description?: string; imageAlt: string; imageSrc: string; title: string }]; promo?: { dark?: boolean; description: string; title: string }; right: { description?: string; imageAlt: string; imageSrc: string; title: string } }` | Built-in data for the selected layout | Replaces the image data for the selected layout variant. |
`BentoImageGridProps` is a discriminated union. The selected `variant` narrows
the supported `style`, `placement`, and `data` shape.
# Product Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/bento-product-grid
```
**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 { BentoProductGrid } from "@/components/email/bento-product-grid";
```
```tsx
```
## Examples [#examples]
### Bento grid with two rows and 3-column second row [#bento-grid-with-two-rows-and-3-column-second-row]
#### full [#full]
#### full reverse [#full-reverse]
#### left [#left]
#### left reverse [#left-reverse]
#### right [#right]
#### right reverse [#right-reverse]
#### sides [#sides]
#### sides reverse [#sides-reverse]
### Bento grid with even split and two-thirds [#bento-grid-with-even-split-and-two-thirds]
#### full [#full-1]
#### full reverse [#full-reverse-1]
#### left [#left-1]
#### left reverse [#left-reverse-1]
#### right [#right-1]
#### right reverse [#right-reverse-1]
#### sides [#sides-1]
#### sides reverse [#sides-reverse-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- | ---------------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `variant` | `"two-row-three-column" \| "even-split-two-thirds"` | `"two-row-three-column"` | Selects the product-grid layout. |
| `style` | `"full" \| "left" \| "right" \| "sides"` | `"full"` | Controls which product cards use padded treatment. |
| `placement` | `"normal" \| "reverse"` | `"normal"` | Keeps or reverses the row treatment. |
| `data` | `{ bottom: [{ price: string; description?: string; imageAlt: string; imageSrc: string; title: string }, { price: string; description?: string; imageAlt: string; imageSrc: string; title: string }, { price: string; description?: string; imageAlt: string; imageSrc: string; title: string }]; top: [{ price: string; description?: string; imageAlt: string; imageSrc: string; title: string }, { price: string; description?: string; imageAlt: string; imageSrc: string; title: string }] } \| { bottom: [{ price: string; description?: string; imageAlt: string; imageSrc: string; title: string }, { price: string; description?: string; imageAlt: string; imageSrc: string; title: string }]; top: [{ price: string; description?: string; imageAlt: string; imageSrc: string; title: string }, { price: string; description?: string; imageAlt: string; imageSrc: string; title: string }] }` | Built-in data for the selected layout | Replaces the product data for the selected layout variant. |
`BentoProductGridProps` is a discriminated union. The selected `variant`
narrows the accepted `data` shape.
# Stats Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/bento-stats-grid
```
**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 { BentoStatsGrid } from "@/components/email/bento-stats-grid";
```
```tsx
```
## Examples [#examples]
### Two-thirds bento grid with stats [#two-thirds-bento-grid-with-stats]
#### image-top-right [#image-top-right]
#### image-top-left [#image-top-left]
#### image-bottom-right [#image-bottom-right]
#### image-bottom-left [#image-bottom-left]
### Bento grid with even split and image stats [#bento-grid-with-even-split-and-image-stats]
#### image-top-right [#image-top-right-1]
#### image-top-left [#image-top-left-1]
#### image-bottom-right [#image-bottom-right-1]
#### image-bottom-left [#image-bottom-left-1]
### Bento grid with even split and text stats [#bento-grid-with-even-split-and-text-stats]
#### image-top-right [#image-top-right-2]
#### image-top-left [#image-top-left-2]
#### image-bottom-right [#image-bottom-right-2]
#### image-bottom-left [#image-bottom-left-2]
### Bento grid with 3 columns and even split image stats [#bento-grid-with-3-columns-and-even-split-image-stats]
#### image-top-right [#image-top-right-3]
#### image-top-left [#image-top-left-3]
#### image-bottom-right [#image-bottom-right-3]
#### image-bottom-left [#image-bottom-left-3]
### Bento grid with 3 columns and even split text stats [#bento-grid-with-3-columns-and-even-split-text-stats]
#### image-top-right [#image-top-right-4]
#### image-top-left [#image-top-left-4]
#### image-bottom-right [#image-bottom-right-4]
#### image-bottom-left [#image-bottom-left-4]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- | -------------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `variant` | `"two-thirds" \| "even-split" \| "three-column"` | `"two-thirds"` | Selects the stats-grid layout. |
| `style` | `"compact" \| "chart" \| "text"` | `"compact"` | Selects the metric-card treatment supported by layout. |
| `placement` | `"image-top-right" \| "image-top-left" \| "image-bottom-right" \| "image-bottom-left"` | `"image-top-right"` | Positions the image card in the selected layout. |
| `data` | `{ feature: { description: string; title: string }; imageAlt: string; imageSrc: string; metric: { change: string; period: string; title: string; value: string }; stat: { label: string; suffix: string; value: string } } \| { feature: { description: string; title: string }; imageAlt: string; imageSrc: string; metric: { change: string; comparison?: string; reportHref: string; reportLabel: string; title: string; value: string }; stat: { label: string; suffix: string; value: string } } \| { imageAlt: string; imageSrc: string; metric: { change: string; comparison?: string; reportHref: string; reportLabel: string; title: string; value: string }; stats: [{ label: string; suffix: string; value: string }, { label: string; suffix: string; value: string }, { label: string; suffix: string; value: string }] }` | Built-in data for the selected layout | Replaces the stats data for the selected layout variant. |
`BentoStatsGridProps` is a discriminated union. The selected `variant` narrows
the supported `style` and `data` shape.
# Bento Grids
# Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/blog-grid
```
**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 { BlogGrid } from "@/components/email/blog-grid";
```
```tsx
```
## Examples [#examples]
### 2-column blog with images [#2-column-blog-with-images]
#### default [#default]
### 2-column blog with images and text [#2-column-blog-with-images-and-text]
#### default [#default-1]
### 2-column blog with images and boxed content [#2-column-blog-with-images-and-boxed-content]
#### default [#default-2]
### Blog with images and 2-column masonry [#blog-with-images-and-2-column-masonry]
#### default [#default-3]
### 2-column masonry blog with boxed content [#2-column-masonry-blog-with-boxed-content]
#### default [#default-4]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- | ----------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | - | Configures the component's heading. |
| `posts` | `Array<{ title: string; excerpt?: string; image?: { alt?: string; src: string }; author?: string; badge?: string; date?: string; month?: string; episode?: string; host?: string }>` | - | Configures the component's posts. |
| `masonry` | `boolean` | `false` | Uses the masonry layout. |
| `content` | `"image" \| "image-text" \| "boxed"` | `"image"` | Selects the post-card treatment. |
# Featured Post
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/featured-blog-post
```
**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 { FeaturedBlogPost } from "@/components/email/featured-blog-post";
```
```tsx
```
## Examples [#examples]
### Featured blog post [#featured-blog-post]
#### default [#default]
### Featured post with large date [#featured-post-with-large-date]
#### default [#default-1]
### Full-width featured post with large date [#full-width-featured-post-with-large-date]
#### default [#default-2]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `post` | `{ title: string; excerpt?: string; image?: { alt?: string; src: string }; author?: string; badge?: string; date?: string; month?: string; episode?: string; host?: string }` | - | Configures the component's post. |
| `width` | `"contained" \| "full"` | `"contained"` | Configures the component's width. |
| `dateStyle` | `"none" \| "large"` | `"none"` | Configures the component's datestyle. |
# Horizontal Post
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/horizontal-blog-post
```
**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 { HorizontalBlogPost } from "@/components/email/horizontal-blog-post";
```
```tsx
```
## Examples [#examples]
### Single post horizontal [#single-post-horizontal]
#### default [#default]
### Blog post horizontal boxed [#blog-post-horizontal-boxed]
#### default [#default-1]
### Blog post horizontal boxed with split images [#blog-post-horizontal-boxed-with-split-images]
#### default [#default-2]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ----------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `post` | `{ title: string; excerpt?: string; image?: { alt?: string; src: string }; author?: string; badge?: string; date?: string; month?: string; episode?: string; host?: string }` | - | Configures the component's post. |
| `surface` | `"plain" \| "boxed"` | `"plain"` | Configures the component's surface. |
| `media` | `"single" \| "split"` | `"single"` | Configures the component's media. |
# Blog
# Podcast
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/podcast-blog
```
**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 { PodcastBlog } from "@/components/email/podcast-blog";
```
```tsx
```
## Examples [#examples]
### Podcast blog split [#podcast-blog-split]
#### default [#default]
### Podcast full width [#podcast-full-width]
#### default [#default-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | --------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `post` | `{ title: string; excerpt?: string; image?: { alt?: string; src: string }; author?: string; badge?: string; date?: string; month?: string; episode?: string; host?: string }` | - | Configures the component's post. |
| `width` | `"split" \| "full"` | `"split"` | Configures the component's width. |
# Card
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/card-coupons
```
**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 { CardCoupons } from "@/components/email/card-coupons";
```
```tsx
```
## Examples [#examples]
### Pattern [#pattern]
### Background image [#background-image]
### Overlay [#overlay]
### Background image header [#background-image-header]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------------- | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | - | Configures the component's heading. |
| `recipient` | `string` | `"Jenna Adams"` | Configures the component's recipient. |
| `code` | `string` | `"WINTER20OFF"` | Configures the component's code. |
| `description` | `string` | `"Use code: WINTER20OFF at checkout, or click the link below to automatically apply the discount to your order."` | Configures the component's description. |
| `logoSrc` | `string` | - | Configures the component's logosrc. |
| `logoAlt` | `string` | `"Maizzle"` | Configures the component's logoalt. |
| `backgroundImageSrc` | `string` | - | Configures the component's backgroundimagesrc. |
| `buttonLabel` | `string` | `"Shop now"` | Configures the component's buttonlabel. |
| `buttonHref` | `string` | `"https://example.com"` | Configures the component's buttonhref. |
| `arrowIconSrc` | `string` | `"https://placehold.co/64x64/C2410C/FFFFFF.png?text=Arrow%20Right"` | Configures the component's arrowiconsrc. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
| `cardBackgroundColor` | `string` | `"#1f2937"` | Configures the component's cardbackgroundcolor. |
| `codeBackgroundColor` | `string` | `"#f3f4f6"` | Configures the component's codebackgroundcolor. |
| `headingColor` | `string` | `"#fffffe"` | Configures the component's headingcolor. |
| `textColor` | `string` | `"#4b5563"` | Configures the component's textcolor. |
| `mutedTextColor` | `string` | `"#9ca3af"` | Configures the component's mutedtextcolor. |
| `buttonBackgroundColor` | `string` | `"#4f46e5"` | Configures the component's buttonbackgroundcolor. |
| `buttonColor` | `string` | `"#fffffe"` | Configures the component's buttoncolor. |
| `variant` | `"with-name" \| "with-pattern" \| "with-overlay" \| "with-background-image" \| "background-image-header"` | `"with-overlay"` | Configures the component's variant. |
# Centered Text
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/coupons-with-centered-text
```
**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 { CouponsWithCenteredText } from "@/components/email/coupons-with-centered-text";
```
```tsx
```
## Examples [#examples]
### Inline [#inline]
### Background [#background]
### Alternate [#alternate]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------------- | ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `overline` | `string` | `"Our biggest sale of the year"` | Configures the component's overline. |
| `discount` | `string` | `"20% OFF"` | Configures the component's discount. |
| `code` | `string` | `"WINTER20OFF"` | Configures the component's code. |
| `expiry` | `string` | `"until 31/10/2025"` | Configures the component's expiry. |
| `description` | `string` | `"Use code: WINTER20OFF at checkout, or click the link below to automatically apply the discount to your order."` | Configures the component's description. |
| `backgroundImageSrc` | `string` | `"https://picsum.photos/seed/emailcn-coupons-pattern/800/600.jpg"` | Configures the component's backgroundimagesrc. |
| `buttonLabel` | `string` | `"Shop now"` | Configures the component's buttonlabel. |
| `buttonHref` | `string` | `"https://example.com"` | Configures the component's buttonhref. |
| `arrowIconSrc` | `string` | `"https://placehold.co/64x64/C2410C/FFFFFF.png?text=Arrow%20Right"` | Configures the component's arrowiconsrc. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
| `codeBackgroundColor` | `string` | `"#f3f4f6"` | Configures the component's codebackgroundcolor. |
| `headingColor` | `string` | `"#030712"` | Configures the component's headingcolor. |
| `textColor` | `string` | `"#4b5563"` | Configures the component's textcolor. |
| `buttonBackgroundColor` | `string` | `"#4f46e5"` | Configures the component's buttonbackgroundcolor. |
| `buttonColor` | `string` | `"#fffffe"` | Configures the component's buttoncolor. |
| `variant` | `"impact" \| "inline" \| "impact-alt" \| "impact-background"` | `"impact"` | Configures the component's variant. |
# Content Overlay
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/coupons-with-content-overlayed
```
**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 { CouponsWithContentOverlayed } from "@/components/email/coupons-with-content-overlayed";
```
```tsx
```
## Examples [#examples]
### Centered [#centered]
### Code at bottom [#code-at-bottom]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------------- | ---------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `overline` | `string` | `"Our biggest sale of the year"` | Configures the component's overline. |
| `discount` | `string` | `"20% OFF"` | Configures the component's discount. |
| `code` | `string` | `"WINTER20OFF"` | Configures the component's code. |
| `expiry` | `string` | `"until 31/10/2025"` | Configures the component's expiry. |
| `backgroundImageSrc` | `string` | - | Configures the component's backgroundimagesrc. |
| `buttonLabel` | `string` | `"Shop now"` | Configures the component's buttonlabel. |
| `buttonHref` | `string` | `"https://example.com"` | Configures the component's buttonhref. |
| `arrowIconSrc` | `string` | `"https://placehold.co/64x64/C2410C/FFFFFF.png?text=Arrow%20Right"` | Configures the component's arrowiconsrc. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `headingColor` | `string` | `"#fffffe"` | Configures the component's headingcolor. |
| `codeBackgroundColor` | `string` | `"#fffffe"` | Configures the component's codebackgroundcolor. |
| `codeColor` | `string` | `"#030712"` | Configures the component's codecolor. |
| `buttonBackgroundColor` | `string` | `"#030712"` | Configures the component's buttonbackgroundcolor. |
| `buttonColor` | `string` | `"#fffffe"` | Configures the component's buttoncolor. |
| `variant` | `"split" \| "centered" \| "code-bottom"` | `"code-bottom"` | Configures the component's variant. |
# Coupons
# Avatars
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/avatar-call-to-action
```
**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 { AvatarCallToAction } from "@/components/email/avatar-call-to-action";
```
```tsx
```
## Examples [#examples]
### CTA with team avatars [#cta-with-team-avatars]
#### default [#default]
#### avatars top [#avatars-top]
#### single avatar [#single-avatar]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------------- | ---------------------------------------- | -------------- | --------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | - | Configures the component's heading. |
| `description` | `string` | - | Configures the component's description. |
| `actions` | `Array<{ href: string; label: string }>` | - | Configures the component's actions. |
| `avatars` | `Array<{ src: string; alt?: string }>` | - | Configures the component's avatars. |
| `placement` | `"top" \| "inline"` | `"inline"` | Configures the component's placement. |
# Background
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/background-call-to-action
```
**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 { BackgroundCallToAction } from "@/components/email/background-call-to-action";
```
```tsx
```
## Examples [#examples]
### CTA with background image [#cta-with-background-image]
#### flush [#flush]
#### boxed [#boxed]
#### padded [#padded]
### Boxed CTA with background image [#boxed-cta-with-background-image]
#### flush light [#flush-light]
#### flush dark [#flush-dark]
#### padded light [#padded-light]
#### padded dark [#padded-dark]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | ---------------------------------------- | ----------------------------- | ------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | `"Welcome to Your Workspace"` | Configures the component's heading. |
| `description` | `string` | - | Configures the component's description. |
| `emphasis` | `string` | - | Configures the component's emphasis. |
| `actions` | `Array<{ href: string; label: string }>` | - | Configures the component's actions. |
| `backgroundImage` | `{ src: string; alt?: string }` | - | Configures the component's backgroundimage. |
| `width` | `"flush" \| "boxed" \| "padded"` | `"flush"` | Configures the component's width. |
| `contentCard` | `boolean` | `false` | Configures the component's contentcard. |
| `appearance` | `"light" \| "dark"` | `"light"` | Configures the component's appearance. |
# Basic
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/call-to-action
```
**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 { CallToAction } from "@/components/email/call-to-action";
```
```tsx
```
## Examples [#examples]
### CTA with title and action lead [#cta-with-title-and-action-lead]
#### minimal [#minimal]
#### title and lead [#title-and-lead]
#### secondary button [#secondary-button]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------------- | ---------------------------------------- | ------------------------------- | --------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | `"Confirm your email"` | Configures the component's heading. |
| `description` | `string` | - | Configures the component's description. |
| `signoff` | `string` | `"Thank you, the emailcn Team"` | Shows the title-and-lead treatment. |
| `actions` | `Array<{ href: string; label: string }>` | - | Configures up to two actions. |
# Collage
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/collage-call-to-action
```
**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 { CollageCallToAction } from "@/components/email/collage-call-to-action";
```
```tsx
```
## Examples [#examples]
### CTA with shifted images [#cta-with-shifted-images]
#### side [#side]
#### offset [#offset]
#### shifted [#shifted]
#### collage [#collage]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------------- | ---------------------------------------------- | -------------- | --------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | - | Configures the component's heading. |
| `description` | `string` | - | Configures the component's description. |
| `action` | `{ href: string; label: string }` | - | Configures the component's action. |
| `images` | `Array<{ src: string; alt?: string }>` | - | Configures the component's images. |
| `treatment` | `"offset" \| "shifted" \| "side" \| "collage"` | `"side"` | Configures the component's treatment. |
# Image Strip
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/image-strip-call-to-action
```
**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 { ImageStripCallToAction } from "@/components/email/image-strip-call-to-action";
```
```tsx
```
## Examples [#examples]
### CTA with image strip [#cta-with-image-strip]
#### boxed left [#boxed-left]
#### boxed right [#boxed-right]
#### full left [#full-left]
#### full right [#full-right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------------- | -------------------------------------- | ---------------------- | --------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | `"Join the Adventure"` | Configures the component's heading. |
| `description` | `string` | - | Configures the component's description. |
| `action` | `{ href: string; label: string }` | - | Configures the component's action. |
| `images` | `Array<{ src: string; alt?: string }>` | - | Configures the component's images. |
| `placement` | `"left" \| "right"` | `"right"` | Configures the component's placement. |
| `width` | `"boxed" \| "full"` | `"boxed"` | Configures the component's width. |
# Cta
# Top Image
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/top-image-call-to-action
```
**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 { TopImageCallToAction } from "@/components/email/top-image-call-to-action";
```
```tsx
```
## Examples [#examples]
### CTA with top large image [#cta-with-top-large-image]
#### default [#default]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------------- | --------------------------------- | -------------------------------- | --------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | `"Built for the journey ahead."` | Configures the component's heading. |
| `description` | `string` | - | Configures the component's description. |
| `action` | `{ href: string; label: string }` | - | Configures the component's action. |
| `image` | `{ src: string; alt?: string }` | - | Configures the component's image. |
# Image
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/image-feature
```
**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 { ImageFeature } from "@/components/email/image-feature";
```
```tsx
```
## Examples [#examples]
### Feature with product image [#feature-with-product-image]
#### image left [#image-left]
#### image right [#image-right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------- | --------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | `"Powering every payment."` | Configures the component's heading. |
| `body` | `string` | `"Discover tools that make accepting payments faster, easier, and more reliable, wherever you serve customers."` | Configures the component's body. |
| `image` | `{ src: string; alt?: string }` | - | Configures the component's image. |
| `action` | `{ href: string; label: string; iconSrc?: string }` | - | Configures the component's action. |
| `placement` | `"left" \| "right"` | `"right"` | Configures the component's placement. |
# Feature
# Portrait
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/portrait-feature
```
**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 { PortraitFeature } from "@/components/email/portrait-feature";
```
```tsx
```
## Examples [#examples]
### Feature with large portrait image [#feature-with-large-portrait-image]
#### content top left [#content-top-left]
#### content top right [#content-top-right]
#### content bottom left [#content-bottom-left]
#### content bottom right [#content-bottom-right]
#### logo top-left [#logo-top-left]
#### logo top-right [#logo-top-right]
#### logo bottom-left [#logo-bottom-left]
#### logo bottom-right [#logo-bottom-right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | -------------------------------------------------------------- | ------------------------ | ----------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | - | Configures the component's heading. |
| `body` | `string` | - | Configures the component's body. |
| `primaryImage` | `{ src: string; alt?: string }` | - | Configures the component's primaryimage. |
| `secondaryImage` | `{ src: string; alt?: string }` | - | Configures the component's secondaryimage. |
| `logo` | `{ src: string; alt?: string }` | - | Configures the component's logo. |
| `action` | `{ href: string; label: string; iconSrc?: string }` | - | Configures the component's action. |
| `placement` | `"left" \| "right"` | `"right"` | Configures the component's placement. |
| `contentPosition` | `"top" \| "bottom"` | - | Configures the component's contentposition. |
| `logoPosition` | `"top-left" \| "top-right" \| "bottom-left" \| "bottom-right"` | Derived from `placement` | Positions the logo when `contentPosition` is not set. |
# Product Images
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/product-images-feature
```
**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 { ProductImagesFeature } from "@/components/email/product-images-feature";
```
```tsx
```
## Examples [#examples]
### Feature with multiple product images [#feature-with-multiple-product-images]
#### logo left [#logo-left]
#### logo right [#logo-right]
#### images left [#images-left]
#### images right [#images-right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| -------------- | --------------------------------------------------- | -------------- | ---------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | - | Configures the component's heading. |
| `body` | `string` | - | Configures the component's body. |
| `images` | `Array<{ src: string; alt?: string }>` | - | Configures the component's images. |
| `logo` | `{ src: string; alt?: string }` | - | Configures the component's logo. |
| `action` | `{ href: string; label: string; iconSrc?: string }` | - | Configures the component's action. |
| `placement` | `"left" \| "right"` | `"right"` | Configures the component's placement. |
| `presentation` | `"images" \| "logo"` | `"images"` | Selects the image collage or logo composition. |
# Tall Background Images
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/tall-background-images-feature
```
**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 { TallBackgroundImagesFeature } from "@/components/email/tall-background-images-feature";
```
```tsx
```
## Examples [#examples]
### Feature with double tall background images [#feature-with-double-tall-background-images]
#### logo top-left [#logo-top-left]
#### logo top-right [#logo-top-right]
#### logo bottom-left [#logo-bottom-left]
#### logo bottom-right [#logo-bottom-right]
### Feature with full title and tall background images [#feature-with-full-title-and-tall-background-images]
#### logo top-left [#logo-top-left-1]
#### logo top-right [#logo-top-right-1]
#### logo bottom-left [#logo-bottom-left-1]
#### logo bottom-right [#logo-bottom-right-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| -------------- | ---------------------------------------------------------------- | -------------- | ---------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `heading` | `string` | - | Configures the component's heading. |
| `body` | `string` | - | Configures the component's body. |
| `images` | `[{ src: string; alt?: string }, { src: string; alt?: string }]` | - | Configures the component's images. |
| `logo` | `{ src: string; alt?: string }` | - | Configures the component's logo. |
| `action` | `{ href: string; label: string; iconSrc?: string }` | - | Configures the component's action. |
| `logoPosition` | `"top-left" \| "top-right" \| "bottom-left" \| "bottom-right"` | `"top-left"` | Configures the component's logoposition. |
| `titleWidth` | `"split" \| "full"` | `"split"` | Configures the component's titlewidth. |
# Footers
# Navigation
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/navigation-footer
```
**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 { NavigationFooter } from "@/components/email/navigation-footer";
```
```tsx
```
## Examples [#examples]
### Footer centered with menu and socials [#footer-centered-with-menu-and-socials]
#### default [#default]
### Footer with 2-column menu [#footer-with-2-column-menu]
#### left logo [#left-logo]
#### right logo [#right-logo]
### Footer with 2-column menu and divider [#footer-with-2-column-menu-and-divider]
#### left logo [#left-logo-1]
#### right logo [#right-logo-1]
### Footer with 3-column menu [#footer-with-3-column-menu]
#### left logo [#left-logo-2]
#### right logo [#right-logo-2]
### Footer with full menu [#footer-with-full-menu]
#### oversized logo [#oversized-logo]
#### bordered [#bordered]
### Footer with text menu and socials [#footer-with-text-menu-and-socials]
#### left logo [#left-logo-3]
#### right logo [#right-logo-3]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------- | ------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `brand` | `{ logo: { src: string; alt?: string }; href?: string }` | - | Configures the component's brand. |
| `description` | `string` | `"Lorem ipsum dolor sit amet consectetur. Eget aenean sed sit sed in sapien. Vel auctor arcu nulla consectetur sed."` | Configures the component's description. |
| `menus` | `Array<{ heading?: string; links: Array<{ label: string; href: string }> }>` | - | Configures the component's menus. |
| `socials` | `Array<{ iconSrc: string; label: string; href: string }>` | - | Configures the component's socials. |
| `legal` | `{ copyright?: string; text?: string; unsubscribeHref?: string; preferencesHref?: string }` | - | Configures the component's legal. |
| `columns` | `1 \| 2 \| 3` | `2` | Configures the component's columns. |
| `alignment` | `"left" \| "center" \| "right"` | `"left"` | Configures the component's alignment. |
| `logoPosition` | `"left" \| "right" \| "top" \| "bottom"` | `"left"` | Configures the component's logoposition. |
| `divider` | `boolean` | `false` | Configures the component's divider. |
| `oversizedLogo` | `boolean` | `false` | Configures the component's oversizedlogo. |
| `variant` | `"left-logo" \| "right-logo" \| "oversized-logo" \| "bordered"` | Derived from the other props | Selects an exact legacy composition when needed. |
# Promotion
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/promotion-footer
```
**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 { PromotionFooter } from "@/components/email/promotion-footer";
```
```tsx
```
## Examples [#examples]
### Footer with content and CTA [#footer-with-content-and-cta]
#### left [#left]
#### center [#center]
#### right [#right]
### Footer with large title and buttons [#footer-with-large-title-and-buttons]
#### default [#default]
### Footer with menu and full-width CTA [#footer-with-menu-and-full-width-cta]
#### default [#default-1]
### Footer with overlapped CTA [#footer-with-overlapped-cta]
#### content left logo [#content-left-logo]
#### content right logo [#content-right-logo]
#### 2-column menu left logo [#2-column-menu-left-logo]
#### 2-column menu right logo [#2-column-menu-right-logo]
#### 3-column menu left logo [#3-column-menu-left-logo]
#### 3-column menu right logo [#3-column-menu-right-logo]
#### address left logo [#address-left-logo]
#### address right logo [#address-right-logo]
#### centered content [#centered-content]
#### centered menu [#centered-menu]
#### centered socials [#centered-socials]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `brand` | `{ logo: { src: string; alt?: string }; href?: string }` | - | Configures the component's brand. |
| `heading` | `string` | `"Start sending professionally\ndesigned emails today"` | Configures the component's heading. |
| `description` | `string` | - | Configures the component's description. |
| `actions` | `Array<{ href: string; label: string }>` | - | Configures the component's actions. |
| `legal` | `{ copyright?: string; text?: string; unsubscribeHref?: string; preferencesHref?: string }` | - | Configures the component's legal. |
| `placement` | `"inline" \| "full-width" \| "overlap" \| "large-title"` | `"inline"` | Configures the component's placement. |
| `menuColumns` | `0 \| 2 \| 3` | `0` | Configures the component's menucolumns. |
| `alignment` | `"left" \| "center" \| "right"` | `"center"` | Configures the component's alignment. |
| `logoPosition` | `"left" \| "right"` | `"left"` | Positions the logo in overlapping layouts. |
| `backgroundImage` | `{ src: string; alt?: string }` | - | Configures the component's backgroundimage. |
| `variant` | `"centered" \| "left-aligned" \| "right-aligned" \| "content" \| "2-column-menu" \| "3-column-menu" \| "centered-content" \| "centered-menu" \| "address" \| "centered-socials"` | Derived from the other props | Selects an exact legacy composition when needed. |
# Utility
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/utility-footer
```
**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 { UtilityFooter } from "@/components/email/utility-footer";
```
```tsx
```
## Examples [#examples]
### Footer with app store buttons [#footer-with-app-store-buttons]
#### centered [#centered]
#### two columns [#two-columns]
#### with title [#with-title]
### Footer with background image [#footer-with-background-image]
#### bottom image content left logo [#bottom-image-content-left-logo]
#### bottom image 2-column menu left logo [#bottom-image-2-column-menu-left-logo]
#### bottom image 2-column menu right logo [#bottom-image-2-column-menu-right-logo]
#### bottom image 3-column menu left logo [#bottom-image-3-column-menu-left-logo]
#### bottom image 3-column menu right logo [#bottom-image-3-column-menu-right-logo]
#### bottom image centered [#bottom-image-centered]
#### bottom image content right logo [#bottom-image-content-right-logo]
#### top image 3-column menu left logo [#top-image-3-column-menu-left-logo]
#### top image 3-column menu right logo [#top-image-3-column-menu-right-logo]
#### top image address left logo [#top-image-address-left-logo]
#### top image address right logo [#top-image-address-right-logo]
#### top image centered [#top-image-centered]
#### top image content left logo [#top-image-content-left-logo]
#### top image content right logo [#top-image-content-right-logo]
#### top image logo bottom [#top-image-logo-bottom]
### Footer with company locations [#footer-with-company-locations]
#### stacked [#stacked]
#### grid [#grid]
### Footer with legal text [#footer-with-legal-text]
#### default [#default]
### Footer with social icons and address [#footer-with-social-icons-and-address]
#### left [#left]
#### center [#center]
#### right [#right]
### Simple footer with social icons [#simple-footer-with-social-icons]
#### left [#left-1]
#### center [#center-1]
#### right [#right-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `brand` | `{ logo: { src: string; alt?: string }; href?: string }` | - | Configures the component's brand. |
| `socials` | `Array<{ iconSrc: string; label: string; href: string }>` | - | Configures the component's socials. |
| `legal` | `{ copyright?: string; text?: string; unsubscribeHref?: string; preferencesHref?: string }` | - | Configures the component's legal. |
| `content` | `"socials" \| "address" \| "legal" \| "locations" \| "app-stores"` | `"socials"` | Configures the component's content. |
| `locations` | `Array<{ name: string; address: string }>` | - | Configures the component's locations. |
| `address` | `string` | `"© 2026 emailcn\nemailcn \| 155 Bdv Saint Germain \| 75505 Paris"` | Configures the component's address. |
| `title` | `string` | `"Follow us"` | Configures the component's title. |
| `alignment` | `"left" \| "center" \| "right"` | `"center"` | Configures the component's alignment. |
| `columns` | `1 \| 2` | `1` | Configures the component's columns. |
| `logoPosition` | `"left" \| "right"` | `"left"` | Positions the logo in supported layouts. |
| `backgroundImage` | `{ src: string; alt?: string; position?: "top" \| "bottom" }` | - | Configures the component's backgroundimage. |
| `variant` | `"centered" \| "two-columns" \| "with-title" \| "bottom-image-content" \| "bottom-image-2-column-menu" \| "bottom-image-3-column-menu" \| "bottom-image-centered" \| "top-image-content" \| "top-image-3-column-menu" \| "top-image-address" \| "top-image-centered" \| "top-image-logo-bottom" \| "stacked" \| "grid" \| "left-logo" \| "right-logo" \| "left-aligned" \| "right-aligned"` | Derived from the other props | Selects an exact legacy composition when needed. |
# Badge
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/header-with-logo-and-badge
```
**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 { HeaderWithLogoAndBadge } from "@/components/email/header-with-logo-and-badge";
```
```tsx
```
## Examples [#examples]
### Centered [#centered]
### Right logo [#right-logo]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ---------------------- | ------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `logoSrc` | `string` | `"https://placehold.co/320x96/0F766E/FFFFFF.png?text=Maizzle%20Insignia"` | Configures the component's logosrc. |
| `logoAlt` | `string` | `"Maizzle"` | Configures the component's logoalt. |
| `logoHref` | `string` | `"https://example.com"` | Configures the component's logohref. |
| `badgeLabel` | `string` | `"FREE SHIPPING"` | Configures the component's badgelabel. |
| `message` | `string` | `"On orders over $65"` | Configures the component's message. |
| `alignment` | `"left" \| "center" \| "right"` | `"left"` | Configures the component's alignment. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
| `badgeBackgroundColor` | `string` | `"#eff6ff"` | Configures the component's badgebackgroundcolor. |
| `badgeBorderColor` | `string` | `"#dbeafe"` | Configures the component's badgebordercolor. |
| `badgeColor` | `string` | `"#2563eb"` | Configures the component's badgecolor. |
| `badgeTextColor` | `string` | `"#4b5563"` | Configures the component's badgetextcolor. |
# Finance Stats
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/header-with-logo-and-finance-stats
```
**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 { HeaderWithLogoAndFinanceStats } from "@/components/email/header-with-logo-and-finance-stats";
```
```tsx
```
## Examples [#examples]
### Centered [#centered]
### Stats first [#stats-first]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------------- | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ----------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `logoSrc` | `string` | `"https://placehold.co/320x96/0F766E/FFFFFF.png?text=Maizzle%20Insignia"` | Configures the component's logosrc. |
| `logoAlt` | `string` | `"Maizzle"` | Configures the component's logoalt. |
| `logoHref` | `string` | `"https://example.com"` | Configures the component's logohref. |
| `stats` | `Array<{ alt: string; change: string; label: string; positive: boolean; src: string }>` | Built-in stats | Configures the component's stats. |
| `alignment` | `"left" \| "center" \| "right"` | `"left"` | Configures the component's alignment. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
# Menu
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/header-with-logo-and-menu
```
**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 { HeaderWithLogoAndMenu } from "@/components/email/header-with-logo-and-menu";
```
```tsx
```
## Examples [#examples]
### Stacked [#stacked]
### Menu on the left [#menu-on-the-left]
### Menu around the logo [#menu-around-the-logo]
### Stacked left [#stacked-left]
### Stacked right [#stacked-right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ----------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `logoSrc` | `string` | `"https://placehold.co/320x96/0F766E/FFFFFF.png?text=Maizzle%20Insignia"` | Configures the component's logosrc. |
| `logoAlt` | `string` | `"Maizzle"` | Configures the component's logoalt. |
| `logoHref` | `string` | `"https://example.com"` | Configures the component's logohref. |
| `links` | `Array<{ href: string; label: string }>` | Built-in links | Configures the component's links. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
| `textColor` | `string` | `"#6b7280"` | Configures the component's textcolor. |
| `variant` | `"menu-right" \| "menu-left" \| "menu-around" \| "stacked-left" \| "stacked-center" \| "stacked-right"` | `"menu-right"` | Configures the component's variant. |
# Social Icons
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/header-with-logo-and-social-icons
```
**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 { HeaderWithLogoAndSocialIcons } from "@/components/email/header-with-logo-and-social-icons";
```
```tsx
```
## Examples [#examples]
### Centered [#centered]
### Right logo [#right-logo]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------------- | --------------------------------------------------- | ------------------------------------------------------------------------- | ----------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `logoSrc` | `string` | `"https://placehold.co/320x96/0F766E/FFFFFF.png?text=Maizzle%20Insignia"` | Configures the component's logosrc. |
| `logoAlt` | `string` | `"Maizzle"` | Configures the component's logoalt. |
| `logoHref` | `string` | `"https://example.com"` | Configures the component's logohref. |
| `socials` | `Array<{ alt: string; href: string; src: string }>` | Built-in socials | Configures the component's socials. |
| `alignment` | `"left" \| "center" \| "right"` | `"left"` | Configures the component's alignment. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
# Logo
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/header-with-logo
```
**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 { HeaderWithLogo } from "@/components/email/header-with-logo";
```
```tsx
```
## Examples [#examples]
### Logo [#logo]
#### left [#left]
#### center [#center]
#### right [#right]
### Logo with text [#logo-with-text]
#### left [#left-1]
#### center [#center-1]
#### right [#right-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------------- | ------------------------------- | ------------------------------------------------------------------------- | ----------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `logoSrc` | `string` | `"https://placehold.co/320x96/0F766E/FFFFFF.png?text=Maizzle%20Insignia"` | Configures the component's logosrc. |
| `logoAlt` | `string` | `"Maizzle"` | Configures the component's logoalt. |
| `logoHref` | `string` | `"https://example.com"` | Configures the component's logohref. |
| `text` | `string` | `"Medium, rare, but mostly well-done\nHTML email components."` | Configures the component's text. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
| `textColor` | `string` | `"#030712"` | Configures the component's textcolor. |
| `variant` | `"minimal" \| "with-text"` | `"minimal"` | Configures the component's variant. |
| `alignment` | `"left" \| "center" \| "right"` | `"center"` | Configures the component's alignment. |
# User Details
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/header-with-user-details
```
**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 { HeaderWithUserDetails } from "@/components/email/header-with-user-details";
```
```tsx
```
## Examples [#examples]
### Image avatar [#image-avatar]
### Initials with right logo [#initials-with-right-logo]
### Image avatar with right logo [#image-avatar-with-right-logo]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------------- | ----------------------- | ------------------------------------------------------------------------- | ------------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `logoSrc` | `string` | `"https://placehold.co/320x96/0F766E/FFFFFF.png?text=Maizzle%20Insignia"` | Configures the component's logosrc. |
| `logoAlt` | `string` | `"Maizzle"` | Configures the component's logoalt. |
| `logoHref` | `string` | `"https://example.com"` | Configures the component's logohref. |
| `userName` | `string` | - | Configures the component's username. |
| `userEmail` | `string` | - | Configures the component's useremail. |
| `initials` | `string` | `"JD"` | Configures the component's initials. |
| `avatarSrc` | `string` | - | Configures the component's avatarsrc. |
| `avatarAlt` | `string` | `""` | Configures the component's avataralt. |
| `avatar` | `"initials" \| "image"` | `"initials"` | Configures the component's avatar. |
| `alignment` | `"left" \| "right"` | `"left"` | Configures the component's alignment. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
| `avatarBackgroundColor` | `string` | `"#f3f4f6"` | Configures the component's avatarbackgroundcolor. |
| `headingColor` | `string` | `"#030712"` | Configures the component's headingcolor. |
| `textColor` | `string` | `"#4b5563"` | Configures the component's textcolor. |
| `mutedTextColor` | `string` | `"#6b7280"` | Configures the component's mutedtextcolor. |
# Headers
# Image Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/image-grid-hero
```
**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 { ImageGridHero } from "@/components/email/image-grid-hero";
```
```tsx
```
## Examples [#examples]
### Hero with image grid [#hero-with-image-grid]
#### images bottom [#images-bottom]
#### images top [#images-top]
#### offset images bottom [#offset-images-bottom]
#### offset images top [#offset-images-top]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- | ----------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `content` | `{ eyebrow?: string; heading?: string; emphasis?: string; subheading?: string; description?: string; price?: string; actions?: Array<{ href: string; label: string }> }` | - | Configures the component's content. |
| `images` | `Array<{ src: string; alt?: string }>` | - | Configures the component's images. |
| `brand` | `{ logo: { src: string; alt?: string }; href?: string }` | - | Configures the component's brand. |
| `imagePosition` | `"top" \| "bottom"` | `"bottom"` | Configures the component's imageposition. |
| `offset` | `boolean` | `false` | Configures the component's offset. |
# Heroes
# Overlap
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/overlap-hero
```
**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 { OverlapHero } from "@/components/email/overlap-hero";
```
```tsx
```
## Examples [#examples]
### Hero with overlapped content [#hero-with-overlapped-content]
#### basic [#basic]
#### basic-with-gradient [#basic-with-gradient]
#### reversed [#reversed]
#### reversed-with-gradient [#reversed-with-gradient]
### Hero with overlapped image [#hero-with-overlapped-image]
#### default [#default]
#### slanted-left [#slanted-left]
#### slanted-right [#slanted-right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------- | ------------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `content` | `{ eyebrow?: string; heading?: string; emphasis?: string; subheading?: string; description?: string; price?: string; actions?: Array<{ href: string; label: string }> }` | - | Configures the component's content. |
| `images` | `Array<{ src: string; alt?: string }>` | - | Configures the component's images. |
| `backgroundImage` | `{ src: string; alt?: string }` | - | Configures the component's backgroundimage. |
| `brand` | `{ logo: { src: string; alt?: string }; href?: string }` | - | Configures the component's brand. |
| `target` | `"content" \| "image"` | `"content"` | Configures the component's target. |
| `direction` | `"left" \| "right"` | `"left"` | Configures the component's direction. |
| `gradient` | `boolean` | `false` | Configures the component's gradient. |
| `slanted` | `boolean` | `false` | Configures the component's slanted. |
| `variant` | `"basic" \| "reversed" \| "basic-with-gradient" \| "reversed-with-gradient" \| "default" \| "slanted-left" \| "slanted-right"` | Derived from the other props | Selects an exact legacy composition when needed. |
# Overlay
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/overlay-hero
```
**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 { OverlayHero } from "@/components/email/overlay-hero";
```
```tsx
```
## Examples [#examples]
### Hero aligned overlay [#hero-aligned-overlay]
#### content-left [#content-left]
#### content-left-reversed [#content-left-reversed]
#### content-right [#content-right]
#### content-right-reversed [#content-right-reversed]
### Hero block overlay [#hero-block-overlay]
#### left-centered [#left-centered]
#### left-top [#left-top]
#### left-bottom [#left-bottom]
#### left-flush-vertical [#left-flush-vertical]
#### right-centered [#right-centered]
#### right-top [#right-top]
#### right-bottom [#right-bottom]
#### right-flush-vertical [#right-flush-vertical]
### Hero block with bleed [#hero-block-with-bleed]
#### left-centered [#left-centered-1]
#### left-top [#left-top-1]
#### left-bottom [#left-bottom-1]
#### left-flush-vertical [#left-flush-vertical-1]
#### right-centered [#right-centered-1]
#### right-top [#right-top-1]
#### right-bottom [#right-bottom-1]
#### right-flush-vertical [#right-flush-vertical-1]
### Hero with overlay gradient [#hero-with-overlay-gradient]
#### split-no-logo [#split-no-logo]
#### split-with-logo [#split-with-logo]
#### unified-no-logo [#unified-no-logo]
#### unified-with-logo [#unified-with-logo]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ------------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `content` | `{ eyebrow?: string; heading?: string; emphasis?: string; subheading?: string; description?: string; price?: string; actions?: Array<{ href: string; label: string }> }` | - | Configures the component's content. |
| `backgroundImage` | `{ src: string; alt?: string }` | - | Configures the component's backgroundimage. |
| `brand` | `{ logo: { src: string; alt?: string }; href?: string }` | - | Configures the component's brand. |
| `treatment` | `"aligned" \| "block" \| "gradient" \| "content-card"` | `"block"` | Configures the component's treatment. |
| `position` | `"top-left" \| "center-left" \| "bottom-left" \| "top-right" \| "center-right" \| "bottom-right"` | `"center-left"` | Configures the component's position. |
| `bleed` | `boolean` | `false` | Configures the component's bleed. |
| `reverse` | `boolean` | `false` | Configures the component's reverse. |
| `variant` | `"content-left" \| "content-left-reversed" \| "content-right" \| "content-right-reversed" \| "left-centered" \| "left-top" \| "left-bottom" \| "left-flush-vertical" \| "right-centered" \| "right-top" \| "right-bottom" \| "right-flush-vertical" \| "split-with-logo" \| "split-no-logo" \| "unified-with-logo" \| "unified-no-logo"` | Derived from the other props | Selects an exact legacy composition when needed. |
# Split
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/split-hero
```
**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 { SplitHero } from "@/components/email/split-hero";
```
```tsx
```
## Examples [#examples]
### Hero overlayed split [#hero-overlayed-split]
#### overlay-left [#overlay-left]
#### overlay-right [#overlay-right]
### Hero split contained [#hero-split-contained]
#### single-image-left [#single-image-left]
#### single-image-right [#single-image-right]
#### square-images-left [#square-images-left]
#### square-images-right [#square-images-right]
#### portrait-top-left [#portrait-top-left]
#### portrait-top-right [#portrait-top-right]
#### portrait-bottom-left [#portrait-bottom-left]
#### portrait-bottom-right [#portrait-bottom-right]
### Hero split full bleed [#hero-split-full-bleed]
#### image-left [#image-left]
#### image-right [#image-right]
### Hero with overlayed content [#hero-with-overlayed-content]
#### default [#default]
#### slanted-left [#slanted-left]
#### slanted-right [#slanted-right]
### Hero with slanted split [#hero-with-slanted-split]
#### left-slanted-up [#left-slanted-up]
#### left-slanted-down [#left-slanted-down]
#### right-slanted-up [#right-slanted-up]
#### right-slanted-down [#right-slanted-down]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ------------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `content` | `{ eyebrow?: string; heading?: string; emphasis?: string; subheading?: string; description?: string; price?: string; actions?: Array<{ href: string; label: string }> }` | - | Configures the component's content. |
| `images` | `Array<{ src: string; alt?: string }>` | - | Configures the component's images. |
| `brand` | `{ logo: { src: string; alt?: string }; href?: string }` | - | Configures the component's brand. |
| `treatment` | `"contained" \| "full-bleed" \| "overlay" \| "slanted"` | `"contained"` | Configures the component's treatment. |
| `imagePosition` | `"left" \| "right"` | `"right"` | Configures the component's imageposition. |
| `slant` | `"up" \| "down"` | `"down"` | Configures the component's slant. |
| `overlayContent` | `boolean` | `false` | Configures the component's overlaycontent. |
| `variant` | `"overlay-left" \| "overlay-right" \| "single-image-left" \| "single-image-right" \| "square-images-left" \| "square-images-right" \| "portrait-top-left" \| "portrait-top-right" \| "portrait-bottom-left" \| "portrait-bottom-right" \| "image-left" \| "image-right" \| "default" \| "slanted-left" \| "slanted-right" \| "left-slanted-down" \| "left-slanted-up" \| "right-slanted-down" \| "right-slanted-up"` | Derived from the other props | Selects an exact legacy composition when needed. |
# Featured Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/featured-image-grid
```
**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 { FeaturedImageGrid } from "@/components/email/featured-image-grid";
```
```tsx
```
## Examples [#examples]
### 2-column image grid with full-width feature [#2-column-image-grid-with-full-width-feature]
#### feature top [#feature-top]
#### feature top overlay [#feature-top-overlay]
#### feature bottom [#feature-bottom]
#### feature bottom overlay [#feature-bottom-overlay]
### 3-column image grid with full-width feature [#3-column-image-grid-with-full-width-feature]
#### feature top [#feature-top-1]
#### feature top overlay [#feature-top-overlay-1]
#### feature bottom [#feature-bottom-1]
#### feature bottom overlay [#feature-bottom-overlay-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | ----------------------------------------------------------------------------------------- | -------------- | ------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `images` | `Array<{ src: string; alt?: string; href?: string; heading?: string; subtext?: string }>` | - | Configures the component's images. |
| `feature` | `{ src: string; alt?: string; href?: string; heading?: string; subtext?: string }` | - | Configures the component's feature. |
| `columns` | `2 \| 3` | `2` | Configures the component's columns. |
| `featurePosition` | `"top" \| "bottom"` | `"top"` | Configures the component's featureposition. |
| `overlay` | `boolean` | `false` | Configures the component's overlay. |
# Full Width
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/full-width-image
```
**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 { FullWidthImage } from "@/components/email/full-width-image";
```
```tsx
```
## Examples [#examples]
### Full-width image [#full-width-image]
#### Default [#default]
#### Top padding [#top-padding]
#### Top right [#top-right]
#### Top left [#top-left]
#### Top + sides [#top--sides]
#### Right padding [#right-padding]
#### Right alt [#right-alt]
#### Bottom padding [#bottom-padding]
#### Bottom right [#bottom-right]
#### Bottom left [#bottom-left]
#### Bottom + sides [#bottom--sides]
#### Left padding [#left-padding]
#### Left alt [#left-alt]
#### Sides padding [#sides-padding]
#### Sides alt [#sides-alt]
### Full-width image with overlay [#full-width-image-with-overlay]
#### Default [#default-1]
#### Top padding [#top-padding-1]
#### Top right [#top-right-1]
#### Top left [#top-left-1]
#### Top + sides [#top--sides-1]
#### Right padding [#right-padding-1]
#### Right alt [#right-alt-1]
#### Bottom padding [#bottom-padding-1]
#### Bottom right [#bottom-right-1]
#### Bottom left [#bottom-left-1]
#### Bottom + sides [#bottom--sides-1]
#### Left padding [#left-padding-1]
#### Left alt [#left-alt-1]
#### Sides padding [#sides-padding-1]
#### Sides alt [#sides-alt-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------------ | ---------------------------------------------------------------------------------- | -------------- | -------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `image` | `{ src: string; alt?: string; href?: string; heading?: string; subtext?: string }` | - | Configures the component's image. |
| `overlay` | `boolean` | `false` | Configures the component's overlay. |
| `frame` | `"none" \| "top" \| "right" \| "bottom" \| "left" \| "sides"` | `"none"` | Configures the component's frame. |
| `frameStyle` | `"padding" \| "split" \| "alternate" \| "sides"` | `"padding"` | Configures the component's framestyle. |
# Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/image-grid
```
**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 { ImageGrid } from "@/components/email/image-grid";
```
```tsx
```
## Examples [#examples]
### 2-column image grid [#2-column-image-grid]
#### square [#square]
#### square overlay [#square-overlay]
#### portrait [#portrait]
#### portrait overlay [#portrait-overlay]
### 3-column image grid [#3-column-image-grid]
#### square [#square-1]
#### square overlay [#square-overlay-1]
#### portrait [#portrait-1]
#### portrait overlay [#portrait-overlay-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------- | ----------------------------------------------------------------------------------------- | -------------- | ----------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `images` | `Array<{ src: string; alt?: string; href?: string; heading?: string; subtext?: string }>` | - | Configures the component's images. |
| `columns` | `2 \| 3` | `2` | Configures the component's columns. |
| `aspect` | `"square" \| "portrait"` | `"square"` | Configures the component's aspect. |
| `overlay` | `boolean` | `false` | Configures the component's overlay. |
# Images
# Masonry Grid
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/masonry-image-grid
```
**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 { MasonryImageGrid } from "@/components/email/masonry-image-grid";
```
```tsx
```
## Examples [#examples]
### 2-column masonry image grid with 3 images [#2-column-masonry-image-grid-with-3-images]
#### left [#left]
#### left overlay [#left-overlay]
#### right [#right]
#### right overlay [#right-overlay]
### 2-column masonry image grid with 4 images [#2-column-masonry-image-grid-with-4-images]
#### left [#left-1]
#### left reverse [#left-reverse]
#### left overlay [#left-overlay-1]
#### left overlay reverse [#left-overlay-reverse]
#### right [#right-1]
#### right reverse [#right-reverse]
#### right overlay [#right-overlay-1]
#### right overlay reverse [#right-overlay-reverse]
### 3-column masonry image grid [#3-column-masonry-image-grid]
#### left [#left-2]
#### left overlay [#left-overlay-2]
#### right [#right-2]
#### right overlay [#right-overlay-2]
### 3-column masonry image grid with full-width feature [#3-column-masonry-image-grid-with-full-width-feature]
#### left [#left-3]
#### left reverse [#left-reverse-1]
#### left overlay [#left-overlay-3]
#### left overlay reverse [#left-overlay-reverse-1]
#### right [#right-3]
#### right reverse [#right-reverse-1]
#### right overlay [#right-overlay-3]
#### right overlay reverse [#right-overlay-reverse-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------- | ----------------------------------------------------------------------------------------- | -------------- | ----------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `images` | `Array<{ src: string; alt?: string; href?: string; heading?: string; subtext?: string }>` | - | Configures the component's images. |
| `feature` | `{ src: string; alt?: string; href?: string; heading?: string; subtext?: string }` | - | Configures the component's feature. |
| `columns` | `2 \| 3` | `2` | Configures the component's columns. |
| `stackPosition` | `"left" \| "right"` | `"left"` | Configures the component's stackposition. |
| `reverse` | `boolean` | `false` | Configures the component's reverse. |
| `overlay` | `boolean` | `false` | Configures the component's overlay. |
# Pricing
# Purchase
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/purchase-pricing
```
**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 { PurchasePricing } from "@/components/email/purchase-pricing";
```
```tsx
```
## Examples [#examples]
### 2-column pricing table with gaps [#2-column-pricing-table-with-gaps]
The default demo above covers this original component.
#### Custom plans [#custom-plans]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------- | -------------------------------------------------------------------------------------------------------------- | -------------- | --------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `plans` | `Array<{ name: string; leasePrice?: string; purchasePrice: string; action: { href: string; label: string } }>` | Built-in plans | Configures the component's plans. |
# Subscription
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/subscription-pricing
```
**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 { SubscriptionPricing } from "@/components/email/subscription-pricing";
```
```tsx
```
## Examples [#examples]
### 2-column pricing table [#2-column-pricing-table]
The default demo above covers this original component.
### Full-width single pricing [#full-width-single-pricing]
#### Single plan [#single-plan]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ----------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `plans` | `Array<{ name: string; description?: string; price: string; currency?: string; period?: string; features?: Array<{ label: string; muted?: boolean }>; action: { href: string; label: string } }>` | Built-in plans | Configures the component's plans. |
| `columns` | `1 \| 2` | `2` | Configures the component's columns. |
# Collection
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/collection-stats
```
**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 { CollectionStats } from "@/components/email/collection-stats";
```
```tsx
```
## Examples [#examples]
### Simple stats [#simple-stats]
#### simple [#simple]
#### outlined [#outlined]
#### bordered [#bordered]
#### boxed [#boxed]
### Grid stats [#grid-stats]
#### simple three columns [#simple-three-columns]
#### boxed three columns [#boxed-three-columns]
#### boxed bento [#boxed-bento]
#### boxed bento reversed [#boxed-bento-reversed]
#### accent column three columns [#accent-column-three-columns]
#### accent column bento [#accent-column-bento]
#### accent column bento reversed [#accent-column-bento-reversed]
#### bordered three columns [#bordered-three-columns]
#### bordered bento [#bordered-bento]
#### bordered bento reversed [#bordered-bento-reversed]
#### outlined three columns [#outlined-three-columns]
#### outlined bento [#outlined-bento]
#### outlined bento reversed [#outlined-bento-reversed]
### Overlay stats [#overlay-stats]
#### default [#default]
#### three columns [#three-columns]
#### bento [#bento]
#### bento reversed [#bento-reversed]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | --------------------------------------------------------------- | -------------- | ------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `items` | `Array<{ label: string; value: string; description?: string }>` | - | Configures the component's items. |
| `featured` | `{ label: string; value: string; description?: string }` | - | Configures the component's featured. |
| `layout` | `"row" \| "three-columns" \| "bento"` | `"row"` | Configures the component's layout. |
| `reverse` | `boolean` | `false` | Configures the component's reverse. |
| `appearance` | `"simple" \| "outlined" \| "bordered" \| "boxed" \| "accent"` | `"simple"` | Configures the component's appearance. |
| `backgroundImage` | `{ src: string; alt?: string }` | - | Configures the component's backgroundimage. |
# Stats
# Milestone
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/milestone-stats
```
**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 { MilestoneStats } from "@/components/email/milestone-stats";
```
```tsx
```
## Examples [#examples]
### Boxed [#boxed]
### Accent [#accent]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------------- | ---------------------------------- | ------------------ | ----------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `variant` | `"default" \| "boxed" \| "accent"` | `"default"` | Configures the component's variant. |
| `heading` | `string` | `"Miles traveled"` | Configures the component's heading. |
| `value` | `string` | `"5,685"` | Configures the component's value. |
| `unit` | `string` | `"miles"` | Configures the component's unit. |
| `currentLevel` | `string` | `"SILVER"` | Configures the component's currentlevel. |
| `nextLevel` | `string` | `"GOLD"` | Configures the component's nextlevel. |
| `remaining` | `string` | `"1,315 miles"` | Configures the component's remaining. |
| `progress` | `number` | `90` | Configures the component's progress. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
| `cardBackgroundColor` | `string` | `"#f9fafb"` | Configures the component's cardbackgroundcolor. |
| `headingColor` | `string` | `"#030712"` | Configures the component's headingcolor. |
| `textColor` | `string` | `"#4b5563"` | Configures the component's textcolor. |
| `mutedTextColor` | `string` | `"#9ca3af"` | Configures the component's mutedtextcolor. |
| `progressTrackColor` | `string` | `"#e5e7eb"` | Configures the component's progresstrackcolor. |
| `progressColor` | `string` | `"#030712"` | Configures the component's progresscolor. |
# Spotlight
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/spotlight-stats
```
**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 { SpotlightStats } from "@/components/email/spotlight-stats";
```
```tsx
```
## Examples [#examples]
### Rolling stats [#rolling-stats]
#### center [#center]
#### top-left [#top-left]
#### top-right [#top-right]
#### bottom-left [#bottom-left]
#### bottom-right [#bottom-right]
### Single stat with background image [#single-stat-with-background-image]
#### center [#center-1]
#### top-left [#top-left-1]
#### top-right [#top-right-1]
#### bottom-left [#bottom-left-1]
#### bottom-right [#bottom-right-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------------- | -------------------------------------------------------------------------- | --------------------------- | ------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `eyebrow` | `string` | `"Mapped trails"` | Configures the component's eyebrow. |
| `label` | `string` | `"Tracked by active users"` | Configures the component's label. |
| `values` | `string[]` | - | Configures the component's values. |
| `position` | `"center" \| "top-left" \| "top-right" \| "bottom-left" \| "bottom-right"` | `"center"` | Configures the component's position. |
| `backgroundImage` | `{ src: string; alt?: string }` | - | Configures the component's backgroundimage. |
# Stacked
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/stacked-stats
```
**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 { StackedStats } from "@/components/email/stacked-stats";
```
```tsx
```
## Examples [#examples]
### Centered [#centered]
### Right aligned [#right-aligned]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------------------- | ---------------------------------------------------------------- | -------------- | ----------------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `variant` | `"left" \| "center" \| "right"` | `"left"` | Configures the component's variant. |
| `stats` | `Array<{ heading: string; value: string; description: string }>` | - | Configures the component's stats. |
| `pageBackgroundColor` | `string` | `"#f1f5f9"` | Configures the component's pagebackgroundcolor. |
| `backgroundColor` | `string` | `"#fffffe"` | Configures the component's backgroundcolor. |
| `accentColor` | `string` | `"#f97316"` | Configures the component's accentcolor. |
| `headingColor` | `string` | `"#030712"` | Configures the component's headingcolor. |
| `textColor` | `string` | `"#4b5563"` | Configures the component's textcolor. |
| `dividerColor` | `string` | `"#cbd5e1"` | Configures the component's dividercolor. |
# Timelines
# Payment
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/payment-timeline
```
**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 { PaymentTimeline } from "@/components/email/payment-timeline";
```
```tsx
```
## Examples [#examples]
### Four steps [#four-steps]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------------ | ------------------------ | --------------- | -------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `variant` | `"3-steps" \| "4-steps"` | `"3-steps"` | Configures the component's variant. |
| `amount` | `string` | `"$9.99"` | Configures the component's amount. |
| `firstDate` | `string` | `"Paid: 17/11"` | Configures the component's firstdate. |
| `secondDate` | `string` | `"17/12"` | Configures the component's seconddate. |
| `thirdDate` | `string` | `"17/01"` | Configures the component's thirddate. |
| `fourthDate` | `string` | `"17/02"` | Configures the component's fourthdate. |
# General
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/timeline
```
**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 { Timeline } from "@/components/email/timeline";
```
```tsx
```
## Examples [#examples]
### Cards timeline [#cards-timeline]
#### default [#default]
#### with-accent [#with-accent]
#### with-badge [#with-badge]
#### image-top [#image-top]
#### image-bottom [#image-bottom]
### Changelog [#changelog]
#### muted-left [#muted-left]
#### muted-right [#muted-right]
#### basic-left [#basic-left]
#### basic-right [#basic-right]
#### accent-left [#accent-left]
#### accent-right [#accent-right]
### Changelog boxed [#changelog-boxed]
#### muted-left [#muted-left-1]
#### muted-right [#muted-right-1]
#### basic-left [#basic-left-1]
#### basic-right [#basic-right-1]
#### accent-left [#accent-left-1]
#### accent-right [#accent-right-1]
### Split cards [#split-cards]
#### muted [#muted]
#### muted-reverse [#muted-reverse]
#### boxed [#boxed]
#### boxed-reverse [#boxed-reverse]
#### accent [#accent]
#### accent-reverse [#accent-reverse]
#### image-top [#image-top-1]
#### image-top-reverse [#image-top-reverse]
#### image-bottom [#image-bottom-1]
#### image-bottom-reverse [#image-bottom-reverse]
### Stacked timeline [#stacked-timeline]
#### line muted-left [#line-muted-left]
#### line muted-right [#line-muted-right]
#### line basic-left [#line-basic-left]
#### line basic-right [#line-basic-right]
#### line completed-left [#line-completed-left]
#### line completed-right [#line-completed-right]
#### boxed muted-left [#boxed-muted-left]
#### boxed muted-right [#boxed-muted-right]
#### boxed basic-left [#boxed-basic-left]
#### boxed basic-right [#boxed-basic-right]
#### boxed accent-left [#boxed-accent-left]
#### boxed accent-right [#boxed-accent-right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------- | ------------------------------------------------ |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `items` | `Array<{ index?: string; label?: string; date?: string; version?: string; category?: string; badge?: string; title: string; description?: string; image?: { src: string; alt?: string }; completed?: boolean }>` | - | Configures the component's items. |
| `layout` | `"line" \| "boxed" \| "cards" \| "split"` | `"line"` | Configures the component's layout. |
| `alignment` | `"left" \| "right"` | `"left"` | Configures the component's alignment. |
| `appearance` | `"muted" \| "basic" \| "accent"` | `"basic"` | Configures the component's appearance. |
| `reverse` | `boolean` | `false` | Configures the component's reverse. |
| `variant` | `"default" \| "with-badge" \| "with-accent" \| "image-top" \| "image-bottom" \| "muted-left" \| "muted-right" \| "basic-left" \| "basic-right" \| "accent-left" \| "accent-right" \| "muted" \| "muted-reverse" \| "boxed" \| "boxed-reverse" \| "accent" \| "accent-reverse" \| "image-top-reverse" \| "image-bottom-reverse" \| "completed-left" \| "completed-right"` | Derived from the other props | Selects an exact legacy composition when needed. |
# Details
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/avatar-details
```
**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 { AvatarDetails } from "@/components/email/avatar-details";
```
```tsx
```
## Examples [#examples]
### Avatar with details [#avatar-with-details]
#### left [#left]
#### center [#center]
#### right [#right]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| -------- | -------------------------------- | -------------- | ---------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `avatar` | `{ name: string; url?: string }` | - | Configures the component's avatar. |
| `name` | `string` | - | Configures the component's name. |
| `email` | `string` | - | Configures the component's email. |
| `align` | `"left" \| "center" \| "right"` | `"left"` | Configures the component's align. |
# Group
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/avatar-group
```
**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 { AvatarGroup } from "@/components/email/avatar-group";
```
```tsx
```
## Examples [#examples]
### Grouped overlapped avatars [#grouped-overlapped-avatars]
#### xs [#xs]
#### sm [#sm]
#### md [#md]
#### lg [#lg]
#### xl [#xl]
#### 2xl [#2xl]
### Grouped overlapped avatars with plus count [#grouped-overlapped-avatars-with-plus-count]
#### xs [#xs-1]
#### sm [#sm-1]
#### md [#md-1]
#### lg [#lg-1]
#### xl [#xl-1]
#### 2xl [#2xl-1]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| ----------- | ----------------------------------------------- | ---------------- | ------------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `avatars` | `Array<{ name: string; url?: string }>` | Built-in avatars | Configures the component's avatars. |
| `plusCount` | `number` | - | Configures the component's pluscount. |
| `size` | `"xs" \| "sm" \| "md" \| "lg" \| "xl" \| "2xl"` | `"md"` | Configures the component's size. |
| `align` | `"left" \| "center" \| "right"` | `"left"` | Configures the component's align. |
# Avatars
# Divider
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/divider
```
**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 { Divider } from "@/components/email/divider";
```
```tsx
```
## Examples [#examples]
### Line divider [#line-divider]
#### default [#default]
### Divider with title [#divider-with-title]
#### left [#left]
#### center [#center]
#### right [#right]
### Divider with file type [#divider-with-file-type]
#### left [#left-1]
#### center [#center-1]
#### right [#right-1]
### Divider with icon [#divider-with-icon]
#### left [#left-2]
#### center [#center-2]
#### right [#right-2]
### Divider with logo [#divider-with-logo]
#### left [#left-3]
#### center [#center-3]
#### right [#right-3]
### Divider with social icons [#divider-with-social-icons]
#### left [#left-4]
#### center [#center-4]
#### right [#right-4]
### Divider with icon and button [#divider-with-icon-and-button]
#### left [#left-5]
#### center [#center-5]
#### right [#right-5]
### Divider with button [#divider-with-button]
#### left [#left-6]
#### center [#center-6]
#### right [#right-6]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ----------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `align` | `"left" \| "center" \| "right"` | `"center"` | Configures the component's align. |
| `content` | `{ type: "title"; title: string } \| { type: "file"; fileType: string } \| { type: "icon"; src: string } \| { type: "logo"; image: { src: string; alt?: string } } \| { type: "socials" } \| { type: "button"; action: { href: string; label: string } } \| { type: "icon-button"; iconSrc: string; action: { href: string; label: string } }` | - | Configures the component's content. |
# Spacing
# Spacer
## Installation [#installation]
Command
Manual
```bash
npx shadcn@latest add @emailcn/react-email/spacer
```
**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 { Spacer } from "@/components/email/spacer";
```
```tsx
```
## Examples [#examples]
### Vertical spacer [#vertical-spacer]
#### 24px [#24px]
#### 48px [#48px]
#### 64px [#64px]
## API Reference [#api-reference]
| Prop | Type | Default | Description |
| -------- | ------------ | -------------- | ---------------------------------- |
| `theme` | `EmailTheme` | `defaultTheme` | Renderer theme configuration. |
| `height` | `number` | `24` | Configures the component's height. |