Staaarter

Appointment List

A two-section appointment list: Upcoming and Past, each grouped under date headings. Every row shows the service name, provider avatar, time, duration, and a status badge (confirmed, pending, or cancelled), plus Reschedule and Cancel buttons on upcoming appointments.

By Staaarter Team
Booking
Docs
Live preview

Docs

Installation

A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its avatar, avatar-initials, badge, button dependencies and any missing npm packages, and installs them straight into your project.

npx shadcn add https://staaarter.com/r/appointment-list.json

Prefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/booking/booking3.tsx instead.

Usage

The file also exports booking3Demo, the exact props behind the preview above. Spread it to get a working section in one line, then replace it with your own data.

import { Booking3, booking3Demo } from "@/components/blocks/booking/booking3";

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

Props

PropTypeDefaultDescription
headingstring"Your appointments"Section heading.
descriptionstring"Keep track of what's coming up and what you've already been to."Short subheading under the heading.
upcomingBooking3DateGroup[][]Upcoming appointments, grouped by date.
pastBooking3DateGroup[][]Past appointments, grouped by date.
classNamestringnoneExtra classes for the outer section element.

Types

type Booking3Status = "confirmed" | "pending" | "cancelled";

interface Booking3Appointment {
  id: string;
  service: string;
  providerName: string;
  providerAvatarUrl?: string;
  time: string;
  duration: string;
  status: Booking3Status;
}

interface Booking3DateGroup {
  date: string;
  appointments: Booking3Appointment[];
}

Behavior notes

  • This is a static server component: Reschedule and Cancel are plain buttons with no click handlers, nothing is actually rescheduled or cancelled.
  • Date headings and grouping are just how the demo data is shaped, not computed from real dates.