Staaarter

Studio Bento Grid

A hand-tiled monochrome bento grid mixing a statement tile, a stat tile, a desaturated photo tile with an in-tile caption, a quote tile, and a CTA tile into one asymmetric composition.

By Staaarter Team
Bento
Docs
Live preview

Docs

Installation

A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its button, media-slot dependencies and any missing npm packages, and installs them straight into your project.

npx shadcn add https://staaarter.com/r/studio-bento-grid.json

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

Usage

The file also exports bento1Demo, 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 { Bento1, bento1Demo } from "@/components/blocks/bento/bento1";

export default function Page() {
  return <Bento1 {...bento1Demo} />;
}

Props

PropTypeDefaultDescription
statementStatementTilenoneWide bordered tile with a heading and short paragraph, spans two columns.
statStatTilenoneSoft tile showing a big number and its label.
photoPhotoTilenonePhotographic tile with an eyebrow and caption overlaid on a bottom scrim; the image is rendered desaturated for the monochrome look.
quoteQuoteTilenoneSoft tile with an italic quote and an attribution line.
ctaCtaTilenoneBordered tile with a heading and a link-styled button.
classNamestringnoneExtra classes for the outer section element.

Types

interface StatementTile {
  heading: ReactNode;
  body: string;
}

interface StatTile {
  value: string;
  label: string;
}

interface PhotoTile {
  photo: { src: string; alt: string };
  eyebrow: string;
  caption: string;
}

interface QuoteTile {
  quote: string;
  attribution: string;
}

interface CtaTile {
  heading: string;
  ctaLabel: string;
  ctaHref: string;
}

Behavior notes

  • Purely presentational: no local state, no data fetching. The CTA button renders as a plain next/link anchor and doesn't submit or navigate to a working route in the demo.
  • The monochrome effect on the photo tile is a CSS `grayscale` class applied to the image, not an actual desaturated asset, so swapping in any color photo will still render desaturated.
  • The five-tile layout is a fixed 4-column by 2-row bento grid (statement 2x1, stat 1x1, photo 1x2, quote 2x1, cta 1x1); it isn't designed to reflow cleanly if tiles are added or removed.