Staaarter

Bento CTA

Showcases multiple value props in a visually dynamic grid: an asymmetric bento layout puts a larger, bordered call-to-action tile (heading, description, button) at the center-left, surrounded by smaller icon-and-text value-prop tiles filling the remaining cells.

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/bento-cta.json

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

Usage

The file also exports cta40Demo, 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 { Cta40, cta40Demo } from "@/components/blocks/cta/cta40";

export default function Page() {
  return <Cta40 {...cta40Demo} />;
}

Props

PropTypeDefaultDescription
headingstringnoneHeading inside the central call-to-action tile.
descriptionstringnoneSupporting text inside the central call-to-action tile.
buttonLabelstring"Get started free"Label for the central tile's button.
buttonHrefstring"/signup"Link for the central tile's button.
tilesBentoTile[]noneSmaller value-prop tiles surrounding the central call-to-action.
classNamestringnoneExtra classes for the outer section element.

Types

interface BentoTile {
  title: string;
  description: string;
}

Behavior notes

  • Fully static: the grid layout is a fixed `grid-cols-4 grid-rows-2`-style bento (central tile spans 2 columns and 2 rows), icons are drawn from a fixed, hardcoded array assigned by array position.
  • The button inside the central tile is a real link to a placeholder route; the surrounding tiles are purely decorative value props.