Staaarter

Two-Tier CTA

Stacked two-tier call-to-action with a prominent primary offer on top and a smaller, quieter secondary alternative below, separated by a horizontal divider labeled 'or'. Perfect for presenting a main conversion path alongside a lower-commitment fallback.

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 dependencies and any missing npm packages, and installs them straight into your project.

npx shadcn add https://staaarter.com/r/two-tier-cta.json

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

Usage

The file also exports cta23Demo, 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 { Cta23, cta23Demo } from "@/components/blocks/cta/cta23";

export default function Page() {
  return <Cta23 {...cta23Demo} />;
}

Props

PropTypeDefaultDescription
primaryHeadingstring"Start your free trial"Heading for the top, primary offer.
primaryDescriptionstring"Get full access to every feature for 14 days, no credit card required."Short supporting copy for the primary offer.
primaryButtonLabelstring"Start free trial"Label for the primary offer's button.
primaryButtonHrefstring"#"Link target for the primary offer's button.
dividerLabelstring"or"Text shown in the middle of the horizontal divider.
secondaryHeadingstring"Not ready yet?"Heading for the bottom, secondary offer.
secondaryDescriptionstring"See how it works with a short, guided product tour instead."Short supporting copy for the secondary offer.
secondaryButtonLabelstring"Watch the tour"Label for the secondary offer's button.
secondaryButtonHrefstring"#"Link target for the secondary offer's button.
classNamestringnoneExtra classes for the outer section element.

Behavior notes

  • Layout only: the primary offer sits in a bordered, muted panel with a large heading and solid button; the divider is a plain two-line rule with a centered label (`role="separator"`); the secondary offer below uses smaller type and a ghost button to read as lower priority.
  • Both buttons are inert links (`render={<Link/>}`) pointing at `#` by default; there is no real trial-start or tour playback wired up.