Staaarter

Visit The Studio Bento

Location mosaic mixing exterior and interior photo tiles with an inverted address tile and an opening-hours tile. A compact alternative to a full map embed for a studio or storefront's location section.

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/visit-the-studio-bento.json

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

Usage

The file also exports bento10Demo, 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 { Bento10, bento10Demo } from "@/components/blocks/bento/bento10";

export default function Page() {
  return <Bento10 {...bento10Demo} />;
}

Props

PropTypeDefaultDescription
exteriorPhotoMediaSlotImagenoneTall photo tile of the building exterior, spanning two rows.
exteriorCaptionstringnoneHeadline in the exterior photo's scrim.
interiorPhotoMediaSlotImagenoneSmaller photo tile of the interior.
interiorCaptionstringnoneHeadline in the interior photo's scrim.
addressAddressInfononeInverted tile with the street address, city, and a "Get directions" link button.
hoursHoursRow[]noneRows in the opening-hours tile.
classNamestringnoneExtra classes for the outer section element.

Types

type AddressInfo = {
  street: string;
  city: string;
  directionsHref: string;
};

type HoursRow = { day: string; hours: string };

Behavior notes

  • "Get directions" is a real link (an outline Button rendering a next/link anchor via `render`) pointed at `address.directionsHref`; it navigates wherever that URL points, it does not compute directions itself.
  • The hours list is static demo copy with no notion of the current day or open/closed state, unlike a live store-hours widget.
  • The address tile spans two rows to match the exterior photo's height, so it stays readable even though it holds less content than the photo tile beside it.