WebberUI

CTA + Footer Set

A call-to-action section that reveals in sequence as it enters the viewport, paired with a multi-column and a minimal animated footer.

This is a WebberUI Pro component

Free during the launch campaign: sign up or sign in, then hit “Copy install command” in the preview above and it installs straight away — no payment, no credit card. The command below returns 401 while you are signed out.

How to install Pro components →See the plans →

Loading preview…
npx shadcn@latest add "https://webberui.com/r/cta-footer-set.json?t=<install token>"

Playground

Tune the props live — the code snippet updates as you go, so you can dial in the look you want before copying it.

0.12
0
<CtaFooterSet />

Installation

npx shadcn@latest add "https://webberui.com/r/cta-footer-set.json?t=<install token>"

Or, once registries are configured in components.json, install it as @webberui/cta-footer-set.

Usage

CtaSection and SiteFooter are two independent page sections that can be used together. Both reveal their children in sequence when they enter the viewport.

import { CtaSection, SiteFooter } from "@/components/ui/cta-footer-set";

<CtaSection
  eyebrow="Start now"
  title="Bring every section to life with motion"
  description="React components you install by copying and pasting."
  actions={
    <>
      <a href="/docs">Get started</a>
      <a href="/components">Browse components</a>
    </>
  }
/>

<SiteFooter
  variant="columns"
  brand="WebberUI"
  tagline="An animation-first React component library."
  columns={[
    { heading: "Product", links: [{ label: "Components", href: "#" }] },
    { heading: "Resources", links: [{ label: "Docs", href: "#" }] },
  ]}
  copyright="© 2026 WebberUI"
/>

SiteFooter offers two layouts: columns (brand + multi-column links + a social row along the bottom) and minimal (a centered brand with inline navigation and social links). Just switch variant.

<SiteFooter
  variant="minimal"
  brand="WebberUI"
  navLinks={[
    { label: "Docs", href: "#" },
    { label: "Components", href: "#" },
  ]}
  social={[{ label: "GitHub", href: "#", icon: <Github className="size-4" /> }]}
  copyright="© 2026 WebberUI"
/>

CtaSection Props

PropTypeDefaultDescription
titleReact.ReactNodeThe main heading (required)
eyebrowReact.ReactNodeA small label above the title
descriptionReact.ReactNodeExplanatory text below the title
actionsReact.ReactNodeThe action button area, usually holding 1–2 buttons
align"center" | "left""center"Content alignment
glowbooleantrueWhether to show the flowing background glow
delaynumber0Delay before the reveal starts (seconds)
staggernumber0.12Stagger interval between children (seconds)
oncebooleantruePlay only the first time the element enters the viewport
PropTypeDefaultDescription
variant"columns" | "minimal""columns"Footer layout
brandReact.ReactNodeBrand name or logo node
taglineReact.ReactNodeTagline below the brand (the columns layout)
columnsFooterColumn[][]Link columns (the columns layout)
navLinksFooterLink[][]Inline navigation links (the minimal layout)
socialFooterLink[][]Social links, best paired with an icon
copyrightReact.ReactNodeCopyright text
delaynumber0Delay before the reveal starts (seconds)
staggernumber0.1Stagger interval between children (seconds)
oncebooleantruePlay only the first time the element enters the viewport
interface FooterLink {
  label: string;      // Link text; serves as the accessible name when icon-only
  href: string;       // Link target
  icon?: React.ReactNode; // Optional icon
}

interface FooterColumn {
  heading: string;    // Column heading
  links: FooterLink[];
}

How it works

  • Both sections are triggered with whileInView and use staggerChildren to reveal their children in sequence; the columns layout uses a nested stagger so that the brand area, each link column, and the bottom row form one continuous ripple of rhythm.
  • The background glow in CtaSection is made of two neutral-colored blurred blobs drifting slowly in a loop; it is purely decorative.
  • Everything uses neutral colors (neutral-*) plus dark: variants, which makes it easy to carry over your own theme; the hover transition duration can be overridden through --wb-duration-fast.

Accessibility

  • When the user has "reduce motion" enabled at the system level, both sections render their static version directly and the glow stops drifting.
  • CtaSection uses <section aria-labelledby> pointing at the title, which makes it a named landmark.
  • SiteFooter uses the native <footer> tag (with its implicit contentinfo landmark), all links are real <a> elements, and icon-only social links get their aria-label from label.
  • Every link has a focus-visible outline and can be operated with the keyboard.

On this page