Image Marquee CTA
A dynamic film-strip call-to-action: a top row of photo tiles scrolls left while a bottom row scrolls right, with a heading, description, and two buttons overlaid in a blurred, semi-transparent card centered on top so the content stays readable over the moving rows.
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/image-marquee-cta.jsonPrefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/cta/cta44.tsx instead.
Usage
The file also exports cta44Demo, 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 { Cta44, cta44Demo } from "@/components/blocks/cta/cta44"; export default function Page() { return <Cta44 {...cta44Demo} />; }
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| heading | string | "Bring your ideas to life" | Heading inside the centered overlay card. |
| description | string | none | Supporting paragraph inside the overlay card. |
| primaryLabel | string | "Get started" | Label for the primary button. |
| primaryHref | string | "#" | Href for the primary button. |
| secondaryLabel | string | "See examples" | Label for the secondary button. |
| secondaryHref | string | "#" | Href for the secondary button. |
| topImages | MediaSlotImage[] | none | Photo tiles for the top row, scrolls leftward. |
| bottomImages | MediaSlotImage[] | none | Photo tiles for the bottom row, scrolls rightward. |
| className | string | none | Extra classes for the outer section element. |
Behavior notes
- Both rows are a pure CSS @keyframes translateX loop on a doubled (duplicated) image list, no JavaScript animates the motion; the leftward and rightward rows use two distinct, uniquely-named keyframes (cta44-marquee-left/right) so their directions never collide.
- Both marquee tracks carry `motion-reduce:animate-none` so the scrolling stops for users who prefer reduced motion; the tiles themselves are `aria-hidden` since they're decorative.
- The overlay card uses `bg-background/90 backdrop-blur` so the heading and buttons stay legible regardless of what photos are passed in; the card sits in a `pointer-events-none` wrapper with `pointer-events-auto` re-enabled on the card itself so the buttons stay clickable without blocking interaction with anything behind the marquee rows.
- Fully static Server Component: no event handlers, no client state.
More CTA Blocks
View all →centered-newsletter-cta
Centered Newsletter CTA
Minimal centered call-to-action with heading, description, and action buttons.
split-layout-newsletter-cta
Split Layout Newsletter CTA
Two-column call-to-action with a decorative image on one side and a feature list plus subscribe form on the other.
newsletter-social-proof-cta
Newsletter CTA with Social Proof
Newsletter call-to-action with an avatar stack, subscriber count, and a testimonial quote.
banner-cta
Banner CTA
Horizontal banner call-to-action with heading and action buttons side by side.
stats-cta
Stats CTA
Call-to-action section with impressive statistics and trust indicators above action buttons.
multi-card-cta
Multi-Card CTA
Three action cards side by side, each offering a different path to conversion.