Quote Carousel CTA
A conversion section built around a rotating testimonial quote, complete with author avatar and role, prev/next controls and dot indicators, and a pair of call-to-action buttons that stay fixed below the carousel. Perfect for social proof that stays fresh.
Docs
Installation
A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its button, avatar, avatar-initials dependencies and any missing npm packages, and installs them straight into your project.
npx shadcn add https://staaarter.com/r/quote-carousel-cta.jsonPrefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/cta/cta42.tsx instead.
Usage
The file also exports cta42Demo, 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 { Cta42, cta42Demo } from "@/components/blocks/cta/cta42"; export default function Page() { return <Cta42 {...cta42Demo} />; }
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| heading | string | "Trusted by teams everywhere" | Heading above the carousel. |
| quotes | Quote[] | none | List of testimonial quotes to rotate through. Required. |
| primaryLabel | string | "Start free trial" | Primary call-to-action button label. |
| primaryHref | string | "#" | Link target for the primary button. |
| secondaryLabel | string | "Talk to sales" | Secondary button label. |
| secondaryHref | string | "#" | Link target for the secondary button. |
| autoAdvanceMs | number | 4500 | Milliseconds between automatic quote rotations. |
| className | string | none | Extra classes for the outer section element. |
Types
interface Quote { quote: string; name: string; role: string; avatar?: { src: string; alt: string }; }
Behavior notes
- The quote rotation is real client-side state: a useState<number> tracks the active quote index, and a useEffect starts a setInterval that advances it automatically every autoAdvanceMs (default 4.5s), cleaning up on unmount.
- The prev/next arrow buttons and the dot indicators are also real: each calls setActiveIndex directly on click to jump to a specific quote, independent of the auto-advance timer.
- The two call-to-action buttons below the carousel are persistent (not part of the rotation) and render as real Next.js Links via the button's render prop, but default to "#" and don't perform a real signup or navigate anywhere on their own.
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.