campaign

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.

Banner preview

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

align controls the text alignment area inside the banner.
align="start"

New

Start aligned

Content is aligned to the start.

Banner preview
align="center"

Update

Center aligned

Content is centered.

Banner preview

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

variant="white"

Landing Banner

Background variant preview.

Banner preview
variant="black"

Landing Banner

Background variant preview.

Banner preview
variant="primary"

Landing Banner

Background variant preview.

Banner preview
variant="primary-tonal"

Landing Banner

Background variant preview.

Banner preview
variant="success-tonal"

Landing Banner

Background variant preview.

Banner preview
variant="grad-06"

Landing Banner

Background variant preview.

Banner preview
variant="grad-12"

Landing Banner

Background variant preview.

Banner preview
variant="grad-15"

Landing Banner

Background variant preview.

Banner 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

reverse swaps the layout (media/text order) based on your SCSS.
reverse=false

Default order

Text first, media second.

Banner preview
reverse=true

Reversed order

Media first, text second.

Banner preview

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

If media is not provided, the banner renders only the content block.

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

Uses the `is-animated` helper class (SCSS dependent).

Animated background

Enable background motion only when your SCSS supports it.

Banner preview

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

Use this to validate long copy and many CTAs inside the live container.

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.

Banner preview

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

variant
align
layout

Playground

Landing Banner

Use the controls above to validate layout and background variants.

Banner preview

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

Landing Banner — Props
PropTypeRequiredDefaultDescription
classNamestringNoundefinedExtra classes for the root.
customStylesReact.CSSPropertiesNoundefinedExtra 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"NoundefinedBackground style variant (solid, tonal, or gradient).
align"start" | "center"NoundefinedAligns content within the banner.
widthstringNoundefinedInline width for the root (e.g. "100%").
heightstringNoundefinedInline height for the root (e.g. "340px").
maxWidthstringNoundefinedSets CSS variable `--_mw` used by the internal layout (SCSS dependent) (e.g. "980px").
kickerstringNoundefinedSmall text displayed above the text.
titlestringNoundefinedMain headline text.
descriptionstringNoundefinedSupporting 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.
ctaButtonsReact.ReactNode[]No[]Optional CTAs rendered in a row/stack container.
mediaReact.ReactNodeNoundefinedOptional media slot (image, illustration, video, etc.).
reversebooleanNofalseAdds `cssnt-landingbanner--reverse` to swap the layout (SCSS dependent).
animatedbooleanNofalseAdds `is-animated` for background animations (SCSS dependent).