Staaarter

Bento Icon Grid

A bento-style feature section: a header row pairs an eyebrow and big heading on the left with an outline call-to-action on the right, above a five-card grid where the first card spans a tall lead cell and the remaining four fill in around it, each with a lucide icon, title and description.

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

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

Usage

The file also exports feature48Demo, 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 { Feature48, feature48Demo } from "@/components/blocks/feature/feature48";

export default function Page() {
  return <Feature48 {...feature48Demo} />;
}

Props

PropTypeDefaultDescription
eyebrowstringnoneSmall label above the heading.
headingReactNodenoneSection heading.
ctaCtanoneOptional outline call-to-action shown at the top right.
itemsItem[]noneFive bento cards; the first item renders as the tall lead cell.
classNamestringnoneExtra classes for the outer section element.

Types

type Cta = { label: string; href: string };

type Item = {
  icon: LucideIcon;
  title: string;
  description: string;
};

Behavior notes

  • Static server component, no client-side state.
  • The tall lead-cell span is a fixed CSS class applied to the first array item by position, not a per-item prop; the demo data supplies exactly five items to fill the grid cleanly.
  • Each item accepts a real icon component reference, which is safe here since this is a server component (never crosses a client boundary as a prop).