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

Booking3: Appointment List

A tabbed appointment manager rendering a bordered card whose tabs (e.g. Upcoming/Past) each hold date-grouped rows, every row showing a provider avatar, service name, provider name, a colored status badge, a time-and-duration line with optional location, and reschedule/cancel buttons, closed by a sticky footer "Book New Appointment" button.

Upgrade to Pro

Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.

Installation

Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/booking3?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/booking3?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the block to components/beste/block/booking3.tsx, plus the avatar, badge, button, and tabs shadcn/ui primitives it uses for the provider images, status badges, action buttons, and tab switcher.

Quick start

The installed file exports booking3Demo alongside the block: the exact props behind the preview above. Spread it to get a working appointment list in one line.

tsx
import { Booking3, booking3Demo } from "@/components/beste/block/booking3";

export default function AppointmentsPage() {
  return <Booking3 {...booking3Demo} />;
}

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

tsx
import { Booking3 } from "@/components/beste/block/booking3";

export default function AppointmentsPage() {
  return (
    <Booking3
      badge={{ label: "My schedule", variant: "secondary" }}
      heading="Your <strong>appointments</strong>"
      description="Manage your upcoming and past bookings in one place."
      tabs={[
        {
          label: "Upcoming",
          groups: [
            {
              label: "Today",
              appointments: [
                {
                  service: "Deep Tissue Massage",
                  provider: { name: "Dr. Emily Carter", avatar: "/emily.jpg" },
                  time: "14:00",
                  duration: "60 min",
                  location: "Serenity Spa",
                  status: "confirmed",
                },
              ],
            },
          ],
        },
      ]}
      labels={{
        statusConfirmed: "Confirmed",
        rescheduleButton: "Reschedule",
        cancelButton: "Cancel",
        footerButton: "Book New Appointment",
      }}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string; variant?: "default" | "secondary" | "outline" }Optional eyebrow badge above the heading
headingstringSection heading, supports inline <strong>
descriptionstringOptional supporting line under the heading
tabsBooking3Tab[][]Tab entries, each holding date-grouped appointments
labelsBooking3Labels{}Status label and button text overrides
classNamestringExtra classes for the outer <section>
ts
type AppointmentStatus = "confirmed" | "pending" | "cancelled";

type Appointment = {
  service: string;
  provider: { name: string; avatar?: string };
  time: string;
  duration: string;
  location?: string;
  status: AppointmentStatus;
};

type DateGroup = {
  label: string;
  appointments: Appointment[];
};

type Booking3Tab = {
  label: string;
  groups: DateGroup[];
};

type Booking3Labels = {
  statusConfirmed?: string;
  statusPending?: string;
  statusCancelled?: string;
  rescheduleButton?: string;
  cancelButton?: string;
  footerButton?: 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.

FREE

booking4

Service Selector

Service selection grid with category filter tabs, service cards showing icon, name, description, duration, price, and selected state. Ideal for spa, salon, clinic, and fitness booking flows.

FREE

booking5

Provider Picker

Staff/provider selection cards with avatar, name, specialty, star rating, review count, availability badge, experience years, and selected state. Grid layout with "Any Provider" option.

FREE

booking15

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.

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.

PRO

booking21

Weekly Class Schedule

Gym or studio weekly schedule with day tabs, class list per day (instructor avatar, duration, spots remaining, difficulty), and quick reserve action. Tap a day to see its classes, tap a class to book a spot.