Skip to content

pastetaste

Slot Booking Sheet

FormsInteractionSections

A three-step booking form in a row: service chips with a running estimate, a week strip and time slots with taken ones struck out, then details with validation and a receipt on confirm.

Paste it into Claude Code: it installs the component, asks for your brand and content, and places it on the page you name.

Install

Or by hand, in a Next.js project with shadcn set up. It writes components/pastetaste/slot-booking-sheet.tsx.

npx shadcn@latest add https://pastetaste.com/r/slot-booking-sheet.json

Prompt

Install the pastetaste component "Slot Booking Sheet" (slot-booking-sheet) into this Next.js project and use it.

What it is: A three-step booking form in a row: service chips with a running estimate, a week strip and time slots with taken ones struck out, then details with validation and a receipt on confirm.

Before you place it, ask me (one short message, in my language; "skip" = sensible default): which page and section it goes in, my brand colour (hex), the text, labels or images it should show, and whether I want my logo or my own copy in the demo content. Then:

Steps:
1. If the project has no components.json, run: npx shadcn@latest init -y -d. Then run: npx shadcn@latest add https://pastetaste.com/r/slot-booking-sheet.json
   (it writes components/pastetaste/slot-booking-sheet.tsx; install any npm packages it reports).
2. Import it: import { SlotBookingSheet } from "@/components/pastetaste/slot-booking-sheet" (check the file for the exact named export).
3. Put it where it fits on the page I name, keep the rest of the page untouched, and pass props for my colours instead of editing the installed file.
4. It does not depend on Tailwind; colours come from CSS variables (--pt-*) or props.
5. It supports prefers-reduced-motion with a still state; do not remove it.

Props (all optional unless the type has no default):
- services: { id; name; price; from? }[] = 6 workshop services — Services offered as toggle chips; price feeds the estimate.
- defaultPicked: string[] = ['s1'] — Service ids selected at start.
- slotTimes: string[] = 6 times from 08:00 to 16:00 — Time slots offered each day.
- startDate / leadDays: string / number = '2026-10-30' / 3 — Reference date (ISO) and how many days after it the week strip begins; Sundays are skipped.
- currency / refPrefix: string = '$' / 'KD' — Currency symbol and the prefix of the booking reference.
- onBook: (booking) => void = - — Called with services, ISO day, time, name, phone, car and reference when the form is confirmed.
- accent: string = #d83a30 — Colour of validation messages.

Live preview: https://pastetaste.com/c/slot-booking-sheet
Then run the dev server, check it in the browser at desktop and mobile width, and tell me the page URL.

Props 7

PropTypeDefaultDescription
services{ id; name; price; from? }[]6 workshop servicesServices offered as toggle chips; price feeds the estimate.
defaultPickedstring[]['s1']Service ids selected at start.
slotTimesstring[]6 times from 08:00 to 16:00Time slots offered each day.
startDate / leadDaysstring / number'2026-10-30' / 3Reference date (ISO) and how many days after it the week strip begins; Sundays are skipped.
currency / refPrefixstring'$' / 'KD'Currency symbol and the prefix of the booking reference.
onBook(booking) => void-Called with services, ISO day, time, name, phone, car and reference when the form is confirmed.
accentstring#d83a30Colour of validation messages.
View all →