Service Bento With Figure
Service mosaic whose lead tile floats a photo-strip media piece over a dotted field between its eyebrow and statement, beside a photographic tile captioned on its scrim, an inverted figure tile, and three soft icon tiles.
Docs
Installation
A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its media-slot dependencies and any missing npm packages, and installs them straight into your project.
npx shadcn add https://staaarter.com/r/service-bento-with-figure.jsonPrefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/bento/bento4.tsx instead.
Usage
The file also exports bento4Demo, 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 { Bento4, bento4Demo } from "@/components/blocks/bento/bento4"; export default function Page() { return <Bento4 {...bento4Demo} />; }
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| lead | LeadTile | none | Dotted-field tile spanning four columns and two rows, with an eyebrow, a statement, and a floating strip of up to three media thumbnails. |
| photo | PhotoTile | none | Photographic tile with an eyebrow and caption overlaid on a bottom scrim. |
| figure | FigureTile | none | Inverted (dark) tile with a big figure and a caption. |
| services | ServiceItem[] | none | Exactly three soft tiles, each with an icon, a label, and a short description. The icon is picked from a fixed local array by array position, not passed in the data. |
| className | string | none | Extra classes for the outer section element. |
Types
interface LeadTile { eyebrow: string; statement: ReactNode; photos: { src: string; alt: string }[]; } interface PhotoTile { photo: { src: string; alt: string }; eyebrow: string; caption: string; } interface FigureTile { figure: string; caption: string; } interface ServiceItem { label: string; description: string; }
Behavior notes
- Purely presentational: no local state, no navigation.
- Service icons are not part of the `services` data: the component hardcodes a fixed `[Sparkles, Layers, Zap]` array and indexes into it by each service's position, since a component reference can't safely be passed as a prop on blocks whose demo props may later be split across the client boundary.
- The photo strip in the lead tile is a fixed three-thumbnail row with alternating rotation; it isn't a real carousel or drag-and-drop board.
- Designed for exactly three `services` items to fill the six-column bottom row evenly; a different count will still render but won't tile as cleanly.
More Bento Blocks
View all →studio-bento-grid
Studio Bento Grid
A hand-tiled monochrome bento grid mixing a statement, a stat, an image, a quote, and a CTA into one composition.
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.
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.