5
Sponsor

Overlay

Overlay Hero rendered with email-safe, renderer-native components.

import { OverlayHero } from "@/components/email/overlay-hero";
import { defaultTheme } from "@/components/email/theme-default";

export function OverlayHeroDemo() {
  return (
    <OverlayHero
      treatment="block"
      position="center-left"
      theme={{ ...defaultTheme, containerWidth: "640px" }}
    />
  );
}

Installation

$ pnpm dlx shadcn@latest add @emailcn/jsx-email/overlay-hero

Usage

import { OverlayHero } from "@/components/email/overlay-hero";
<OverlayHero treatment="block" position="center-left" />

Examples

Hero aligned overlay

content-left

import { OverlayHero } from "@/components/email/overlay-hero";

export function OverlayHeroTreatmentAlignedVariantContentLeftExampleDemo() {
  return <OverlayHero treatment="aligned" variant="content-left" />;
}

content-left-reversed

import { OverlayHero } from "@/components/email/overlay-hero";

export function OverlayHeroTreatmentAlignedVariantContentLeftReversedExampleDemo() {
  return <OverlayHero treatment="aligned" variant="content-left-reversed" />;
}

content-right

import { OverlayHero } from "@/components/email/overlay-hero";

export function OverlayHeroTreatmentAlignedVariantContentRightExampleDemo() {
  return <OverlayHero treatment="aligned" variant="content-right" />;
}

content-right-reversed

import { OverlayHero } from "@/components/email/overlay-hero";

export function OverlayHeroTreatmentAlignedVariantContentRightReversedExampleDemo() {
  return <OverlayHero treatment="aligned" variant="content-right-reversed" />;
}

Hero block overlay

left-centered

import { OverlayHero } from "@/components/email/overlay-hero";

export function OverlayHeroTreatmentBlockPositionCenterLeftExampleDemo() {
  return <OverlayHero treatment="block" position="center-left" />;
}

left-top

import { OverlayHero } from "@/components/email/overlay-hero";

export function OverlayHeroTreatmentBlockBleedFalseVariantLeftTopExampleDemo() {
  return <OverlayHero treatment="block" bleed={false} variant="left-top" />;
}

left-bottom

import { OverlayHero } from "@/components/email/overlay-hero";

export function OverlayHeroTreatmentBlockBleedFalseVariantLeftBottomExampleDemo() {
  return <OverlayHero treatment="block" bleed={false} variant="left-bottom" />;
}

left-flush-vertical

import { OverlayHero } from "@/components/email/overlay-hero";

export function OverlayHeroTreatmentBlockBleedFalseVariantLeftFlushVerticalExampleDemo() {
  return (
    <OverlayHero
      treatment="block"
      bleed={false}
      variant="left-flush-vertical"
    />
  );
}

right-centered

import { OverlayHero } from "@/components/email/overlay-hero";

export function OverlayHeroTreatmentBlockBleedFalseVariantRightCenteredExampleDemo() {
  return (
    <OverlayHero treatment="block" bleed={false} variant="right-centered" />
  );
}

right-top

import { OverlayHero } from "@/components/email/overlay-hero";

export function OverlayHeroTreatmentBlockBleedFalseVariantRightTopExampleDemo() {
  return <OverlayHero treatment="block" bleed={false} variant="right-top" />;
}

right-bottom

import { OverlayHero } from "@/components/email/overlay-hero";

export function OverlayHeroTreatmentBlockBleedFalseVariantRightBottomExampleDemo() {
  return <OverlayHero treatment="block" bleed={false} variant="right-bottom" />;
}

right-flush-vertical

import { OverlayHero } from "@/components/email/overlay-hero";

export function OverlayHeroTreatmentBlockBleedFalseVariantRightFlushVerticalExampleDemo() {
  return (
    <OverlayHero
      treatment="block"
      bleed={false}
      variant="right-flush-vertical"
    />
  );
}

Hero block with bleed

left-centered

import { OverlayHero } from "@/components/email/overlay-hero";

export function OverlayHeroTreatmentBlockBleedVariantLeftCenteredExampleDemo() {
  return <OverlayHero treatment="block" bleed variant="left-centered" />;
}

left-top

import { OverlayHero } from "@/components/email/overlay-hero";

export function OverlayHeroTreatmentBlockBleedVariantLeftTopExampleDemo() {
  return <OverlayHero treatment="block" bleed variant="left-top" />;
}

left-bottom

import { OverlayHero } from "@/components/email/overlay-hero";

export function OverlayHeroTreatmentBlockBleedVariantLeftBottomExampleDemo() {
  return <OverlayHero treatment="block" bleed variant="left-bottom" />;
}

left-flush-vertical

import { OverlayHero } from "@/components/email/overlay-hero";

export function OverlayHeroTreatmentBlockBleedVariantLeftFlushVerticalExampleDemo() {
  return <OverlayHero treatment="block" bleed variant="left-flush-vertical" />;
}

right-centered

import { OverlayHero } from "@/components/email/overlay-hero";

export function OverlayHeroTreatmentBlockBleedVariantRightCenteredExampleDemo() {
  return <OverlayHero treatment="block" bleed variant="right-centered" />;
}

right-top

import { OverlayHero } from "@/components/email/overlay-hero";

export function OverlayHeroTreatmentBlockBleedVariantRightTopExampleDemo() {
  return <OverlayHero treatment="block" bleed variant="right-top" />;
}

right-bottom

import { OverlayHero } from "@/components/email/overlay-hero";

export function OverlayHeroTreatmentBlockBleedVariantRightBottomExampleDemo() {
  return <OverlayHero treatment="block" bleed variant="right-bottom" />;
}

right-flush-vertical

import { OverlayHero } from "@/components/email/overlay-hero";

export function OverlayHeroTreatmentBlockBleedVariantRightFlushVerticalExampleDemo() {
  return <OverlayHero treatment="block" bleed variant="right-flush-vertical" />;
}

Hero with overlay gradient

import { OverlayHero } from "@/components/email/overlay-hero";

export function OverlayHeroTreatmentGradientVariantSplitNoLogoExampleDemo() {
  return <OverlayHero treatment="gradient" variant="split-no-logo" />;
}
import { OverlayHero } from "@/components/email/overlay-hero";

export function OverlayHeroTreatmentGradientVariantSplitWithLogoExampleDemo() {
  return <OverlayHero treatment="gradient" variant="split-with-logo" />;
}
import { OverlayHero } from "@/components/email/overlay-hero";

export function OverlayHeroTreatmentGradientVariantUnifiedNoLogoExampleDemo() {
  return <OverlayHero treatment="gradient" variant="unified-no-logo" />;
}
import { OverlayHero } from "@/components/email/overlay-hero";

export function OverlayHeroTreatmentGradientVariantUnifiedWithLogoExampleDemo() {
  return <OverlayHero treatment="gradient" variant="unified-with-logo" />;
}

API Reference

PropTypeDefaultDescription
themeEmailThemedefaultThemeRenderer 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.
bleedbooleanfalseConfigures the component's bleed.
reversebooleanfalseConfigures 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 propsSelects an exact legacy composition when needed.