Staaarter

Service Selector

A service picker with tabs for Massage, Hair, Nails, and Skincare. Each tab shows a grid of service cards with an icon, name, short description, duration, and price, so customers can browse offerings by category before booking.

By Staaarter Team
Booking
Docs
Live preview

Docs

Installation

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

npx shadcn add https://staaarter.com/r/service-selector.json

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

Usage

The file also exports booking4Demo, 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 { Booking4, booking4Demo } from "@/components/blocks/booking/booking4";

export default function Page() {
  return <Booking4 {...booking4Demo} />;
}

Props

PropTypeDefaultDescription
headingstring"Choose a service"Section heading.
descriptionstring"Browse by category and pick the treatment you'd like to book."Short subheading under the heading.
categoriesBooking4Category[][]Service categories, each rendered as a tab.
defaultCategorystringnoneValue of the tab selected by default. Falls back to the first category.
classNamestringnoneExtra classes for the outer section element.

Types

interface Booking4Service {
  id: string;
  name: string;
  description: string;
  duration: string;
  price: string;
  selected?: boolean;
}

interface Booking4Category {
  value: string;
  label: string;
  services: Booking4Service[];
}

Behavior notes

  • Category tabs are real (powered by the Tabs primitive); the highlighted 'selected' service card is a static demo styling, not a click handler.