Skip to content
GetUrUI

Booking cards

3 variantsNewPro
.md

Stay, flight and restaurant booking cards — live price breakdowns with a counting total, a plane that flies a drawn route and time slots that update with party size.

bookingtravelhotelflightrestaurantreservationsteppertime slots

Stay

stay.tsx

Drawn cover, check-in and checkout that follow a nights stepper, a breakdown that unlocks a weekly discount and a counting total.

$npx shadcn@latest add @geturui-pro/booking-cards-stay
PropTypeDefaultDescription
name / placestring—Listing title and subtitle.
rating / reviewsnumber—Badge on the cover.
checkInstring"2026-10-16"ISO date; checkout is derived from nights.
defaultNights / defaultGuests / maxGuestsnumber3 / 2 / 4Stepper values.
nightly / cleaningFee / serviceRate / weeklyDiscountnumber—Pricing inputs.
currencystring"EUR"ISO currency code.
onReserve({ nights, guests, total }) => void—Reserve handler.

Flight

flight.tsx

Flight option with an on-time status, a plane that flies the drawn route on mount and fare tabs that crossfade perks and count the price.

$npx shadcn@latest add @geturui-pro/booking-cards-flight
PropTypeDefaultDescription
airline / flight / datestring—Header details.
from / to{ code; city; time }—Route ends.
duration / stopsstring—Shown under the route.
fares{ id; label; price; perks }[]—Fare tabs.
defaultFarestring"premium"Initially selected fare.
onSelect(fareId: string) => void—Select handler.

Restaurant

restaurant.tsx

Party stepper, day chips and a time-slot grid whose availability updates live, ending in a confirmation with a booking code.

$npx shadcn@latest add @geturui-pro/booking-cards-restaurant
PropTypeDefaultDescription
name / meta / ratingstring / number—Restaurant header.
days{ id; weekday; date }[]—Selectable days.
slotsstring[]—24h times, e.g. "19:30".
isAvailable(day, slot, party) => boolean—Availability; defaults to a fixed pattern.
defaultParty / maxParty / defaultSlotnumber / string4 / 8 / "19:30"Initial state.
onReserve({ day, slot, party }) => void—Reserve handler.

Install the whole set

Installs every booking cards variant at once. Each section above has its own command for a single variant.

Pro installs use your private registry token. Add the @geturui-pro registry once — setup guide. The command works after you get Pro.

$npx shadcn@latest add @geturui-pro/booking-cards

Accessibility

  • Steppers are labelled button pairs with a polite live value; days, fares and slots are radiogroups.
  • Fully booked slots are disabled and say so in their accessible name, not only with a strike-through.
  • Totals keep a static screen-reader value while the visible number counts; reduced motion parks the plane mid-route.

Related