Skip to content

UI Components Overview

The Booking Kit provides 31 React components and 2 hooks built on shadcn/ui, react-day-picker, react-big-calendar, and react-hook-form. Following the shadcn/ui convention, you copy the source code into your project and own it completely.

Terminal window
# Add a single component
npx thebookingkit add booking-calendar
# Add multiple components
npx thebookingkit add booking-calendar time-slot-picker booking-questions
# List all available components
npx thebookingkit list

The CLI copies the component source file into your project and installs any required npm dependencies.

Components live in registry/ui/src/components/. Copy the ones you need:

Terminal window
# Copy a component
cp registry/ui/src/components/booking-calendar.tsx src/components/thebookingkit/
# Copy the cn() utility (used by all components)
cp registry/ui/src/utils/cn.ts src/components/thebookingkit/utils/

Components depend on these npm packages:

PackageUsed by
react-day-pickerBookingCalendar
react-big-calendarAdminScheduleView, KioskCalendar
react-hook-formBookingQuestions, ManualBookingForm, WorkflowBuilder, ProviderAuth, RoutingForm
date-fnsDate formatting across multiple components
@thebookingkit/coreHooks (useAvailability, useProvider)

All components accept className and style props. They use the cn() utility for class merging (compatible with Tailwind CSS) and a tbk- CSS prefix to avoid collisions:

<BookingCalendar
className="rounded-lg shadow-md"
style={{ maxWidth: 400 }}
{...otherProps}
/>

ComponentDescription
BookingCalendarDate picker with available date highlighting
TimeSlotPickerTime slot grid for selected date
BookingQuestionsDynamic form from question config
BookingConfirmationSummary and confirm step
BookingStatusBadgeStatus pill component
BookingManagementViewCustomer booking list with cancel/reschedule
RecurringBookingPickerSeries frequency/count picker
SeatsPickerAttendee count selector for group events
RoutingFormPre-booking conditional routing questionnaire
ComponentDescription
AvailabilityEditorWeekly schedule builder with time ranges
OverrideManagerDate-specific availability override manager
AdminScheduleViewCalendar view (react-big-calendar)
BookingLifecycleActionsConfirm/reject/cancel/no-show buttons
ManualBookingFormAdmin booking creation form
ProviderAuthLogin/signup/password-reset form
TeamAssignmentEditorTeam config + scheduling strategy
WorkflowBuilderWorkflow automation editor
WebhookManagerWebhook CRUD with delivery history
ComponentDescription
PaymentGatePayment form wrapper for Stripe Elements
PaymentHistoryPayment ledger with filtering
ComponentDescription
EmbedConfiguratorEmbed snippet generator (inline/popup/float)
ComponentDescription
WalkInEntryFormForm for adding walk-in customers
WalkInToggleToggle switch for walk-in acceptance
WalkInAnalyticsAnalytics dashboard for queue metrics
QueueDisplayPublic-facing queue status display
QueueManagerAdmin queue management (start/skip/remove)
QueueTicketIndividual queue ticket with position
ComponentDescription
KioskCalendarMulti-provider day/week calendar view
KioskSettingsPanelKiosk display configuration
KioskShellFull-screen kiosk shell with provider tabs
BreakBlockFormBreak/block-off period form
HookDescription
useAvailabilityFetches and caches available slots from API
useProviderFetches provider profile and settings