Staaarter

Wine List Menu

Elegant two-column wine menu with origin details, vintage years, and dotted price lines. Perfect for wine bars, sommeliers, and fine dining beverage menus.

By Staaarter Team
Food
Docs
Live preview

Docs

Installation

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

npx shadcn add https://staaarter.com/r/wine-list-menu.json

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

Usage

The file also exports food9Demo, 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 { Food9, food9Demo } from "@/components/blocks/food/food9";

export default function Page() {
  return <Food9 {...food9Demo} />;
}

Props

PropTypeDefaultDescription
eyebrowstringnoneSmall label above the heading, e.g. "The Cellar".
headingReactNodenoneSection heading.
descriptionstringundefinedShort intro line under the heading.
categoriesWineCategory[]noneWine categories, each rendered as its own list; flows into a 2-column grid on sm and up.
footnotestringundefinedSmall centered note below the list, e.g. a by-the-glass disclaimer.
classNamestringnoneExtra classes for the outer section element.

Types

interface WineItem {
  name: string;
  origin: string;
  vintage: string;
  price: string;
}

interface WineCategory {
  title: string;
  items: WineItem[];
}

Behavior notes

  • Purely presentational: no interactivity. The dotted line between a wine's name and its price is a flex-grow border element, not a text leader character, so it stays crisp at any name/price length.
  • categories renders into a CSS grid (sm:grid-cols-2) and simply flows in document order; there is no manual left/right column assignment, so an odd number of categories leaves the last one spanning a single column on its row.
  • vintage is a plain string so callers can pass "NV" (non-vintage) for wines like Champagne or Port alongside numeric years.