Booking Confirmation ReceiptFREE

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.

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

booking25

Booking Confirmed

A confirmation screen with an accent eyebrow, a two-column hairline table of the appointment details, a checked list of what to bring, and a sticky tile floating the live phone view the member also receives.

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

booking24

Service And Slot Picker

An interactive appointment picker: a hairline panel pairing a selectable service list with a scrollable day strip and a time slot grid that marks unavailable times, beside a full-height provider photo with a gradient name card, closing on a live summary bar and confirm 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

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.