Home Cleaning Service Booking
A home cleaning booking widget where every input feeds a live price calculation: a controlled Standard/Deep Clean/Move-out tabs group sets the base price, bedroom and bathroom steppers add per-room pricing, a recurring frequency picker applies a discount percentage, and an add-ons checklist adds flat fees. The footer shows the running subtotal and final discounted total.
Docs
Installation
A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its tabs, button dependencies and any missing npm packages, and installs them straight into your project.
npx shadcn add https://staaarter.com/r/home-cleaning-service-booking.jsonPrefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/booking/booking16.tsx instead.
Usage
The file also exports booking16Demo, 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 { Booking16, booking16Demo } from "@/components/blocks/booking/booking16"; export default function Page() { return <Booking16 {...booking16Demo} />; }
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| heading | string | "Book your home cleaning" | Section heading. |
| subheading | string | "Pick a service, tell us about your place, and see your price update instantly." | Supporting copy under the heading. |
| className | string | none | Extra classes for the outer section element. |
Behavior notes
- The Standard/Deep Clean/Move-out tabs are a real controlled Tabs component (value/onValueChange) because the active tab drives the base price in the calculation, not just which panel is shown.
- Bedroom and bathroom counts are real useState numbers changed by the +/- stepper buttons, each adding a per-unit price to the subtotal.
- The recurring frequency pills (One-time/Weekly/Bi-weekly/Monthly) are real single-select state; choosing a recurring option applies a real discount percentage to the subtotal.
- The add-ons checklist is real native checkboxes backed by a Set of checked ids; each checked add-on adds its flat price to the subtotal.
- The date input is a real native `input[type=date]` with local state, but nothing is submitted anywhere.
- The price breakdown (subtotal, discount line, total) is computed live on every render from the state above.
- The 'Book cleaning' button is decorative only, no submission handler is wired since that would require a real backend.
More Booking Blocks
View all →date-time-picker
Date & Time Picker
Split-panel scheduler: a real monthly calendar on the left, morning/afternoon time slots on the right, and a live booking summary footer.
reservation-summary
Reservation Summary
A static booking confirmation card with service, date/time, provider avatar, price breakdown, promo code field, and cancellation policy.
appointment-list
Appointment List
Upcoming and past appointments grouped by date, with provider avatar, status badge, and reschedule/cancel actions.
service-selector
Service Selector
Category-tabbed grid of bookable services with icon, description, duration, and price.
provider-picker
Provider Picker
A selectable grid of staff/provider cards with rating, reviews, availability, and an Any Provider fallback.
restaurant-reservation
Restaurant Reservation
Table reservation form with a guest stepper, date/time inputs, seating pills, and a live summary panel.