Booking Confirmation Receipt

Post-booking success screen with animated check icon, confirmation number, booking summary (service, date/time, location, total), scannable QR code ticket, action buttons (calendar, receipt, directions), and email confirmation note.

FREE

Booking15: Booking Confirmation Receipt

Post-checkout confirmation screen: an animated success check, a confirmation number, a list of booking details keyed to a fixed icon set, a provider row, a purely decorative but visually authentic QR code generated from the confirmation number, action buttons, and an email and cancellation-policy footer.

Free block

This block is free. No license or account is required: install it with the CLI and use it in unlimited projects.

Installation

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/booking15"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/booking15"

This installs the block to components/beste/block/booking15.tsx, plus the badge and button shadcn/ui primitives it uses for the status badge and the action buttons.

Quick start

The installed file exports booking15Demo alongside the block: the exact props behind the preview above. Spread it to get a working confirmation receipt in one line.

tsx
import { Booking15, booking15Demo } from "@/components/beste/block/booking15";

export default function BookingConfirmedPage() {
  return <Booking15 {...booking15Demo} />;
}

Then replace the demo with your own props. Written out, a trimmed setup looks like this:

tsx
import { CalendarPlus, Navigation } from "lucide-react";
import { Booking15 } from "@/components/beste/block/booking15";

export default function BookingConfirmedPage() {
  return (
    <Booking15
      badge={{ label: "Confirmed", variant: "secondary" }}
      heading="You're all <strong>set</strong>"
      description="Your booking is confirmed."
      confirmationNumber="BK-2026-0482"
      details={[
        { key: "service", label: "Service", value: "Deep Tissue Massage", subValue: "60 min session" },
        { key: "date", label: "Date", value: "Thursday, March 5, 2026" },
        { key: "time", label: "Time", value: "14:00 — 15:00" },
        { key: "price", label: "Total paid", value: "$120.40", subValue: "Visa •••• 4242" },
      ]}
      actions={[
        { icon: CalendarPlus, label: "Add to calendar", href: "https://beste.co" },
        { icon: Navigation, label: "Get directions", href: "https://beste.co" },
      ]}
      email="alex@beste.co"
      policyNote="Free cancellation up to 24 hours before your appointment."
      labels={{
        confirmationPrefix: "Confirmation",
        scanLabel: "Scan at check-in",
        emailSentTemplate: "Confirmation emailed to {email}",
        policyLabel: "Cancellation policy",
      }}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string; variant?: "default" | "secondary" | "outline" }Status badge, always shown with a shield-check icon
headingstringSection heading, supports inline <strong>
descriptionstringSection intro text
confirmationNumberstringShown under the success icon and used to seed the QR pattern
detailsBookingDetail[][]Icon-labeled rows in the details list
provider{ name: string; title: string; avatar: string }Provider row shown between details and the QR code
actionsBooking15Action[][]Buttons in the actions grid
emailstringInterpolated into labels.emailSentTemplate for the footer note
policyNotestringCancellation policy text in the footer
labelsBooking15Labels{}UI copy: confirmation prefix, scan caption, email template, policy label
classNamestringExtra classes for the outer <section>
ts
type BookingDetail = {
  key: "service" | "date" | "time" | "location" | "guest" | "price";
  label: string;
  value: string;
  subValue?: string;
};

type Booking15Action = {
  icon: LucideIcon;
  label: string;
  href?: string;
};

type Booking15Labels = {
  confirmationPrefix?: string;
  scanLabel?: string;
  emailSentTemplate?: string;
  policyLabel?: string;
};

Behavior notes

More Booking blocks

View all Booking
PRO

booking2

Reservation Summary

Booking confirmation card with service details, date/time, provider info with avatar, price breakdown with subtotal/tax/discount/total, promo code input, cancellation policy, and confirm CTA.

PRO

booking23

Cancellation Flow

Booking cancellation screen with the original booking summary, cancellation reason picker (radio list with optional notes), live refund breakdown based on cancellation policy, confirmation checkbox, and destructive cancel action.

PRO

booking13

Live Social Proof Bar

Booking.com-style social proof ticker with rotating messages: live viewers, recent bookings, scarcity alerts, and location-based activity. Animated transitions, urgency indicators, and trust signals that boost conversion.

PRO

booking17

Ride Booking

Ride-share style booking with pickup/dropoff address inputs, schedule now/later toggle, ride class selector (economy/comfort/xl) with ETA and fare, payment method row, and confirm ride CTA. Perfect for taxi, transfer, and shuttle apps.

PRO

booking3

Appointment List

Upcoming and past appointments list grouped by date, with service name, provider avatar, time, duration, status badges (confirmed/pending/cancelled), and reschedule/cancel action buttons.

PRO

booking9

Event Ticket Booking

Event ticket selection with event banner, date/venue info, ticket tier cards (General/VIP/Backstage) with perks list, quantity selector, and order total. Concert and conference ticket flow.