Staaarter

Action Cards with CTA Buttons

A feature section with a centered heading above a two-column grid of bordered cards. Each card has a numbered index, a title, a description, and its own call-to-action button, good for a small set of quick actions or getting-started steps.

By Staaarter Team
Feature
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/action-cards-cta-buttons.json

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

Usage

The file also exports feature123Demo, 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 { Feature123, feature123Demo } from "@/components/blocks/feature/feature123";

export default function Page() {
  return <Feature123 {...feature123Demo} />;
}

Props

PropTypeDefaultDescription
eyebrowstringundefinedSmall label above the heading; omitted entirely when unset.
headingReactNodenoneSection heading.
descriptionstringundefinedSupporting copy under the heading.
cardsFeature123Card[]noneAction cards, each with its own CTA.
classNamestringundefinedExtra classes for the outer section element.

Types

interface Feature123Card {
  title: string;
  description: string;
  cta: { label: string; href: string };
}

Behavior notes

  • Plain Server Component, no client-side state or event handlers anywhere in this block.
  • The numbered index (01, 02, ...) is derived from each card's position in the array, not stored data.
  • Every CTA renders as a real `<Button render={<Link .../>}>`, i.e. an actual link, not a decorative button with no destination; demo hrefs are `#` placeholders exactly like this category's other CTA links.