Landing Banner
Hero banner for landing sections.
Landing Banner Examples
Copy-ready examples with live previews.
Basic usage
Title + description + CTA buttons + media slot.
Live preview
Build faster
Reusable components with a consistent visual language.

Basic landing banner
import Landing_banner from "@/packages/ui/src/_components/landing_banner/Landing_banner";
import { Button } from "@/packages/ui/src/_components/buttons_variants/buttons/Button";
import Image from "@/packages/ui/src/_components/img/Image";
export default function Example() {
return (
<Landing_banner
variant="grad-06"
align="start"
title="Build faster"
description="Reusable components with a consistent visual language."
ctaButtons={[
<Button key="primary" variant="primary">Get started</Button>,
<Button key="secondary" variant="secondary">Docs</Button>,
]}
media={
<Image
src="/images/image_placeholder.png"
alt="Preview"
width="420px"
height="280px"
/>
}
/>
);
}Content alignment
Switch between start and center alignment.
Live preview
New
Start aligned
Content is aligned to the start.

Update
Center aligned
Content is centered.

align
import Landing_banner from "@/_components/landing_banner/Landing_banner";
export default function Example() {
return (
<>
<Landing_banner align="start" title="Start aligned" />
<Landing_banner align="center" title="Center aligned" />
</>
);
}Background variants
Solid, tonal, and gradient variants.
Live preview
Landing Banner
Background variant preview.

Landing Banner
Background variant preview.

Landing Banner
Background variant preview.

Landing Banner
Background variant preview.

Landing Banner
Background variant preview.

Landing Banner
Background variant preview.

Landing Banner
Background variant preview.

Landing Banner
Background variant preview.

variant
import Landing_banner from "@/_components/landing_banner/Landing_banner";
export default function Example() {
return (
<>
<Landing_banner variant="primary" title="Solid" />
<Landing_banner variant="primary-tonal" title="Tonal" />
<Landing_banner variant="grad-06" title="Gradient" />
</>
);
}Reverse layout
Swap the content/media order.
Live preview
Default order
Text first, media second.

Reversed order
Media first, text second.

reverse
import Landing_banner from "@/_components/landing_banner/Landing_banner";
export default function Example() {
return (
<Landing_banner
variant="info-tonal"
title="Reversed"
reverse
/>
);
}No media slot
Banner can be used without the media area.
Live preview
Docs
Text-only banner
This layout is useful for smaller sections or simple announcements.
Without media
import Landing_banner from "@/_components/landing_banner/Landing_banner";
export default function Example() {
return (
<Landing_banner
variant="secondary-tonal"
kicker="Docs"
title="Text-only banner"
description="Useful for small sections."
/>
);
}Animated background
Toggles the animated helper class (SCSS dependent).
Live preview
Animated background
Enable background motion only when your SCSS supports it.

animated
import Landing_banner from "@/_components/landing_banner/Landing_banner";
export default function Example() {
return (
<Landing_banner
variant="grad-12"
title="Animated"
animated
/>
);
}Long content + many CTAs
Stress-test layout and wrapping.
Live preview
Announcement
A longer headline to validate wrapping and spacing
This is a longer description to test line breaks, spacing between blocks, and how the CTA row behaves when it needs to wrap on smaller widths.

Long content
import Landing_banner from "@/packages/ui/src/_components/landing_banner/Landing_banner";
import { Button } from "@/packages/ui/src/_components/buttons_variants/buttons/Button";
export default function Example() {
return (
<Landing_banner
variant="primary-tonal"
kicker="Announcement"
title="A longer headline to validate wrapping and spacing"
description="This is a longer description to test line breaks and CTA wrapping."
ctaButtons={[
<Button key="1" variant="primary">Primary</Button>,
<Button key="2" variant="secondary">Secondary</Button>,
<Button key="3" variant="transparent">Tertiary</Button>,
]}
/>
);
}Interactive playground
Quick way to validate combinations in docs.
Live preview
Playground
Landing Banner
Use the controls above to validate layout and background variants.

Playground
import { useState } from "react";
import Landing_banner from "@/packages/ui/src/_components/landing_banner/Landing_banner";
export default function Example() {
const [reverse, setReverse] = useState(false);
return (
<Landing_banner
variant="grad-06"
align="start"
title="Landing Banner"
description="Docs playground"
reverse={reverse}
/>
);
}On this page
Landing Banner Props
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
| className | string | No | undefined | Extra classes for the root. |
| customStyles | React.CSSProperties | No | undefined | Extra inline styles for the root. |
| variant | "white" | "black" | "primary" | "secondary" | "tertiary" | "success" | "warning" | "danger" | "info" | "primary-tonal" | "secondary-tonal" | "tertiary-tonal" | "success-tonal" | "warning-tonal" | "danger-tonal" | "info-tonal" | "grad-01" | "grad-02" | "grad-03" | "grad-04" | "grad-05" | "grad-06" | "grad-07" | "grad-08" | "grad-09" | "grad-10" | "grad-11" | "grad-12" | "grad-13" | "grad-14" | "grad-15" | No | undefined | Background style variant (solid, tonal, or gradient). |
| align | "start" | "center" | No | undefined | Aligns content within the banner. |
| width | string | No | undefined | Inline width for the root (e.g. "100%"). |
| height | string | No | undefined | Inline height for the root (e.g. "340px"). |
| maxWidth | string | No | undefined | Sets CSS variable `--_mw` used by the internal layout (SCSS dependent) (e.g. "980px"). |
| kicker | string | No | undefined | Small text displayed above the text. |
| title | string | No | undefined | Main headline text. |
| description | string | No | undefined | Supporting text below the text. |
| titleColor | "black" | "white" | No | "black" | Color passed to the Title component. |
| descriptionColor | "black" | "white" | No | "black" | Color passed to the Paragraph component. |
| kickerColor | "black" | "white" | No | "black" | Color passed to the kicker Paragraph. |
| ctaButtons | React.ReactNode[] | No | [] | Optional CTAs rendered in a row/stack container. |
| media | React.ReactNode | No | undefined | Optional media slot (image, illustration, video, etc.). |
| reverse | boolean | No | false | Adds `cssnt-landingbanner--reverse` to swap the layout (SCSS dependent). |
| animated | boolean | No | false | Adds `is-animated` for background animations (SCSS dependent). |