Staaarter

Vertical Marquee CTA

A gallery-wall call-to-action: a left column of photo tiles scrolls upward and a right column scrolls downward, framing a centered heading, description, and two buttons. The columns hide on small screens so the content stays the focus on mobile.

By Staaarter Team
CTA
Docs
Live preview

Docs

Installation

A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its button, media-slot dependencies and any missing npm packages, and installs them straight into your project.

npx shadcn add https://staaarter.com/r/vertical-marquee-cta.json

Prefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/cta/cta51.tsx instead.

Usage

The file also exports cta51Demo, the exact props behind the preview above. Spread it to get a working section in one line, then replace it with your own data.

import { Cta51, cta51Demo } from "@/components/blocks/cta/cta51";

export default function Page() {
  return <Cta51 {...cta51Demo} />;
}

Props

PropTypeDefaultDescription
headingstring"A gallery of what's possible"Centered heading.
descriptionstringnoneSupporting paragraph under the heading.
primaryLabelstring"Get started free"Label for the primary button.
primaryHrefstring"#"Href for the primary button.
secondaryLabelstring"Browse gallery"Label for the secondary button.
secondaryHrefstring"#"Href for the secondary button.
leftImagesMediaSlotImage[]nonePhoto tiles for the left column, scrolls upward.
rightImagesMediaSlotImage[]nonePhoto tiles for the right column, scrolls downward.
classNamestringnoneExtra classes for the outer section element.

Behavior notes

  • Both columns are a pure CSS @keyframes translateY loop on a doubled (duplicated) image list, no JavaScript animates the motion; the upward and downward columns use two distinct, uniquely-named keyframes (cta51-marquee-up/down) so their directions never collide, and both carry `motion-reduce:animate-none`.
  • The columns are `aria-hidden` (decorative) and hidden below the `sm` breakpoint so narrow viewports show only the centered content, not a cramped three-column layout.
  • Fully static Server Component: no event handlers, no client state.