Marketing
- Content
- Footer with Legal Text
- Company Locations Footer
- App Store Buttons Footer
- Background Image Footer
- Overlapped CTA Footer
- Large Title and Buttons Footer
- Full Menu Footer
- Centered with Menu and Socials
- 2-Column Menu
- 2-Column Menu and Divider
- Menu and Full-Width CTA
- 3-Column Menu
- Content and CTA
- Social Icons and Address
- Text, Menu and Socials
- Simple Footer with Social Icons
Ecommerce
import { FooterWithBackgroundImage } from "@/components/email/footer-with-background-image";
import type { FooterWithBackgroundImageVariant } from "@/components/email/footer-with-background-image";
export function FooterWithBackgroundImageDemo({
variant = "bottom-image-content",
}: {
variant?: string;
}) {
const logoPosition = variant.endsWith("-right-logo") ? "right" : "left";
const componentVariant = variant.replace(
/-(left|right)-logo$/,
""
) as FooterWithBackgroundImageVariant;
return (
<FooterWithBackgroundImage
{...FooterWithBackgroundImage.PreviewProps}
logoPosition={logoPosition}
variant={componentVariant}
/>
);
}Installation
$ pnpm dlx shadcn@latest add @emailcn/footer-with-background-image
Usage
import { FooterWithBackgroundImage } from "@/components/email/footer-with-background-image";<FooterWithBackgroundImage
{...FooterWithBackgroundImage.PreviewProps}
variant="top-image-content"
logoPosition="left"
/>Examples
Content Top, Image Bottom — Right Logo
import { FooterWithBackgroundImage } from "@/components/email/footer-with-background-image";
import type { FooterWithBackgroundImageVariant } from "@/components/email/footer-with-background-image";
export function FooterWithBackgroundImageDemo({
variant = "bottom-image-content",
}: {
variant?: string;
}) {
const logoPosition = variant.endsWith("-right-logo") ? "right" : "left";
const componentVariant = variant.replace(
/-(left|right)-logo$/,
""
) as FooterWithBackgroundImageVariant;
return (
<FooterWithBackgroundImage
{...FooterWithBackgroundImage.PreviewProps}
logoPosition={logoPosition}
variant={componentVariant}
/>
);
}2-Column Menu, Image Bottom — Left Logo
import { FooterWithBackgroundImage } from "@/components/email/footer-with-background-image";
import type { FooterWithBackgroundImageVariant } from "@/components/email/footer-with-background-image";
export function FooterWithBackgroundImageDemo({
variant = "bottom-image-content",
}: {
variant?: string;
}) {
const logoPosition = variant.endsWith("-right-logo") ? "right" : "left";
const componentVariant = variant.replace(
/-(left|right)-logo$/,
""
) as FooterWithBackgroundImageVariant;
return (
<FooterWithBackgroundImage
{...FooterWithBackgroundImage.PreviewProps}
logoPosition={logoPosition}
variant={componentVariant}
/>
);
}2-Column Menu, Image Bottom — Right Logo
import { FooterWithBackgroundImage } from "@/components/email/footer-with-background-image";
import type { FooterWithBackgroundImageVariant } from "@/components/email/footer-with-background-image";
export function FooterWithBackgroundImageDemo({
variant = "bottom-image-content",
}: {
variant?: string;
}) {
const logoPosition = variant.endsWith("-right-logo") ? "right" : "left";
const componentVariant = variant.replace(
/-(left|right)-logo$/,
""
) as FooterWithBackgroundImageVariant;
return (
<FooterWithBackgroundImage
{...FooterWithBackgroundImage.PreviewProps}
logoPosition={logoPosition}
variant={componentVariant}
/>
);
}3-Column Menu, Image Bottom — Left Logo
import { FooterWithBackgroundImage } from "@/components/email/footer-with-background-image";
import type { FooterWithBackgroundImageVariant } from "@/components/email/footer-with-background-image";
export function FooterWithBackgroundImageDemo({
variant = "bottom-image-content",
}: {
variant?: string;
}) {
const logoPosition = variant.endsWith("-right-logo") ? "right" : "left";
const componentVariant = variant.replace(
/-(left|right)-logo$/,
""
) as FooterWithBackgroundImageVariant;
return (
<FooterWithBackgroundImage
{...FooterWithBackgroundImage.PreviewProps}
logoPosition={logoPosition}
variant={componentVariant}
/>
);
}3-Column Menu, Image Bottom — Right Logo
import { FooterWithBackgroundImage } from "@/components/email/footer-with-background-image";
import type { FooterWithBackgroundImageVariant } from "@/components/email/footer-with-background-image";
export function FooterWithBackgroundImageDemo({
variant = "bottom-image-content",
}: {
variant?: string;
}) {
const logoPosition = variant.endsWith("-right-logo") ? "right" : "left";
const componentVariant = variant.replace(
/-(left|right)-logo$/,
""
) as FooterWithBackgroundImageVariant;
return (
<FooterWithBackgroundImage
{...FooterWithBackgroundImage.PreviewProps}
logoPosition={logoPosition}
variant={componentVariant}
/>
);
}Centered Content, Image Bottom
import { FooterWithBackgroundImage } from "@/components/email/footer-with-background-image";
import type { FooterWithBackgroundImageVariant } from "@/components/email/footer-with-background-image";
export function FooterWithBackgroundImageDemo({
variant = "bottom-image-content",
}: {
variant?: string;
}) {
const logoPosition = variant.endsWith("-right-logo") ? "right" : "left";
const componentVariant = variant.replace(
/-(left|right)-logo$/,
""
) as FooterWithBackgroundImageVariant;
return (
<FooterWithBackgroundImage
{...FooterWithBackgroundImage.PreviewProps}
logoPosition={logoPosition}
variant={componentVariant}
/>
);
}Image Top, Content Bottom — Left Logo
import { FooterWithBackgroundImage } from "@/components/email/footer-with-background-image";
import type { FooterWithBackgroundImageVariant } from "@/components/email/footer-with-background-image";
export function FooterWithBackgroundImageDemo({
variant = "bottom-image-content",
}: {
variant?: string;
}) {
const logoPosition = variant.endsWith("-right-logo") ? "right" : "left";
const componentVariant = variant.replace(
/-(left|right)-logo$/,
""
) as FooterWithBackgroundImageVariant;
return (
<FooterWithBackgroundImage
{...FooterWithBackgroundImage.PreviewProps}
logoPosition={logoPosition}
variant={componentVariant}
/>
);
}Image Top, Content Bottom — Right Logo
import { FooterWithBackgroundImage } from "@/components/email/footer-with-background-image";
import type { FooterWithBackgroundImageVariant } from "@/components/email/footer-with-background-image";
export function FooterWithBackgroundImageDemo({
variant = "bottom-image-content",
}: {
variant?: string;
}) {
const logoPosition = variant.endsWith("-right-logo") ? "right" : "left";
const componentVariant = variant.replace(
/-(left|right)-logo$/,
""
) as FooterWithBackgroundImageVariant;
return (
<FooterWithBackgroundImage
{...FooterWithBackgroundImage.PreviewProps}
logoPosition={logoPosition}
variant={componentVariant}
/>
);
}Image Top, 3-Column Menu — Left Logo
import { FooterWithBackgroundImage } from "@/components/email/footer-with-background-image";
import type { FooterWithBackgroundImageVariant } from "@/components/email/footer-with-background-image";
export function FooterWithBackgroundImageDemo({
variant = "bottom-image-content",
}: {
variant?: string;
}) {
const logoPosition = variant.endsWith("-right-logo") ? "right" : "left";
const componentVariant = variant.replace(
/-(left|right)-logo$/,
""
) as FooterWithBackgroundImageVariant;
return (
<FooterWithBackgroundImage
{...FooterWithBackgroundImage.PreviewProps}
logoPosition={logoPosition}
variant={componentVariant}
/>
);
}Image Top, 3-Column Menu — Right Logo
import { FooterWithBackgroundImage } from "@/components/email/footer-with-background-image";
import type { FooterWithBackgroundImageVariant } from "@/components/email/footer-with-background-image";
export function FooterWithBackgroundImageDemo({
variant = "bottom-image-content",
}: {
variant?: string;
}) {
const logoPosition = variant.endsWith("-right-logo") ? "right" : "left";
const componentVariant = variant.replace(
/-(left|right)-logo$/,
""
) as FooterWithBackgroundImageVariant;
return (
<FooterWithBackgroundImage
{...FooterWithBackgroundImage.PreviewProps}
logoPosition={logoPosition}
variant={componentVariant}
/>
);
}Image Top, Address — Left Logo
import { FooterWithBackgroundImage } from "@/components/email/footer-with-background-image";
import type { FooterWithBackgroundImageVariant } from "@/components/email/footer-with-background-image";
export function FooterWithBackgroundImageDemo({
variant = "bottom-image-content",
}: {
variant?: string;
}) {
const logoPosition = variant.endsWith("-right-logo") ? "right" : "left";
const componentVariant = variant.replace(
/-(left|right)-logo$/,
""
) as FooterWithBackgroundImageVariant;
return (
<FooterWithBackgroundImage
{...FooterWithBackgroundImage.PreviewProps}
logoPosition={logoPosition}
variant={componentVariant}
/>
);
}Image Top, Address — Right Logo
import { FooterWithBackgroundImage } from "@/components/email/footer-with-background-image";
import type { FooterWithBackgroundImageVariant } from "@/components/email/footer-with-background-image";
export function FooterWithBackgroundImageDemo({
variant = "bottom-image-content",
}: {
variant?: string;
}) {
const logoPosition = variant.endsWith("-right-logo") ? "right" : "left";
const componentVariant = variant.replace(
/-(left|right)-logo$/,
""
) as FooterWithBackgroundImageVariant;
return (
<FooterWithBackgroundImage
{...FooterWithBackgroundImage.PreviewProps}
logoPosition={logoPosition}
variant={componentVariant}
/>
);
}Image Top, Centered Content
import { FooterWithBackgroundImage } from "@/components/email/footer-with-background-image";
import type { FooterWithBackgroundImageVariant } from "@/components/email/footer-with-background-image";
export function FooterWithBackgroundImageDemo({
variant = "bottom-image-content",
}: {
variant?: string;
}) {
const logoPosition = variant.endsWith("-right-logo") ? "right" : "left";
const componentVariant = variant.replace(
/-(left|right)-logo$/,
""
) as FooterWithBackgroundImageVariant;
return (
<FooterWithBackgroundImage
{...FooterWithBackgroundImage.PreviewProps}
logoPosition={logoPosition}
variant={componentVariant}
/>
);
}Image Top, Logo Bottom
import { FooterWithBackgroundImage } from "@/components/email/footer-with-background-image";
import type { FooterWithBackgroundImageVariant } from "@/components/email/footer-with-background-image";
export function FooterWithBackgroundImageDemo({
variant = "bottom-image-content",
}: {
variant?: string;
}) {
const logoPosition = variant.endsWith("-right-logo") ? "right" : "left";
const componentVariant = variant.replace(
/-(left|right)-logo$/,
""
) as FooterWithBackgroundImageVariant;
return (
<FooterWithBackgroundImage
{...FooterWithBackgroundImage.PreviewProps}
logoPosition={logoPosition}
variant={componentVariant}
/>
);
}API Reference
| Prop | Type | Default | Description |
|---|---|---|---|
variant | FooterWithBackgroundImageVariant | "bottom-image-content" | Selects the content shell |
logoPosition | "left" | "right" | "left" | Mirrors supported layouts |
theme | EmailTheme | default theme | Email theme styling |
On This Page
InstallationUsageExamplesContent Top, Image Bottom — Right Logo2-Column Menu, Image Bottom — Left Logo2-Column Menu, Image Bottom — Right Logo3-Column Menu, Image Bottom — Left Logo3-Column Menu, Image Bottom — Right LogoCentered Content, Image BottomImage Top, Content Bottom — Left LogoImage Top, Content Bottom — Right LogoImage Top, 3-Column Menu — Left LogoImage Top, 3-Column Menu — Right LogoImage Top, Address — Left LogoImage Top, Address — Right LogoImage Top, Centered ContentImage Top, Logo BottomAPI Reference