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.
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.jsonPrefer 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
| Prop | Type | Default | Description |
|---|---|---|---|
| statement | StatementTile | none | Wide bordered tile with a heading and short paragraph, spans two columns. |
| stat | StatTile | none | Soft tile showing a big number and its label. |
| photo | PhotoTile | none | Photographic tile with an eyebrow and caption overlaid on a bottom scrim; the image is rendered desaturated for the monochrome look. |
| quote | QuoteTile | none | Soft tile with an italic quote and an attribution line. |
| cta | CtaTile | none | Bordered tile with a heading and a link-styled button. |
| className | string | none | Extra 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.
More Bento Blocks
View all →studio-summary-bento
Studio Summary Bento
Studio mosaic whose lead tile floats a mood-board media piece over a dotted field, beside a photo tile, an inverted figure tile, a quote tile, and a CTA tile.
selected-work-bento
Selected Work Bento
Work mosaic on a six-column track mixing captioned photo tiles with a soft statement tile and an inverted figure tile, the lead project spanning four columns and two rows.
service-bento-with-figure
Service Bento With Figure
Service mosaic whose lead tile floats a photo strip over a dotted field, beside a captioned photo tile, an inverted figure tile, and three soft icon tiles.
phase-bento-with-photographs
Phase Bento With Photographs
Process mosaic where the opening phase fills a two-row photographic tile with its eyebrow, explanation and duration on the scrim, beside an inverted summary tile and three smaller phase tiles.
object-study-bento
Object Study Bento
Product mosaic pairing a tall hero photo, a spec sheet, two macro detail tiles, and a closing price banner.
studio-people-bento
Studio People Bento
Team mosaic of portrait tiles captioned with name and role, interleaved with a quote tile and a closing tenure stat.