# Appointment Calendar block

> Salon Appointment Calendar with Day/Week Views and Double-Book Alerts

Full-page booking calendar for salon operators: month grid with category dots, Day/Week toggle, staff filter, double-book conflict alerts. ReUI Alert, Badge; shadcn Calendar, Card, Select, ToggleGroup. Schedule, staff roster, appointment booking.

- Type: Pro block
- Category: [Bookings](https://web.dev.reui.io/blocks/solutions/bookings.md)
- Page: https://web.dev.reui.io/blocks/solutions/bookings/solution-bookings-2
- MCP: `get_block("solution-bookings-2")`
- Built with: Alert, Avatar, Badge, Button, Calendar, Card, Empty, Icon Stack, Scroll Area, Select, Separator, Toggle Group
- Installs with a ReUI Pro or Ultimate license; setup: https://web.dev.reui.io/docs/license-setup

## Best for

A month picker with service color dots beside a day list or 7 column week, a staff filter and a dismissible double booking alert

## Agent notes

- Replace the Lumen Studio sample data in data.tsx: `ROWS` (builds `APPOINTMENTS`), `STAFF_ROWS`, `CLIENT_ROWS` and the `DEMO_REFERENCE_DATE` anchor
- `createAppointment` and `openAppointment` only show a `toast`; New appointment and every appointment card save and open nothing
- The Double-booked `Alert` reads a hand set `conflict` flag on 2 `ROWS` entries; overlaps are not computed from `start` and `end`

## When not to use

- A personal schedule with drag and drop editing across month, week, day and agenda views: use [Personal Calendar](https://web.dev.reui.io/blocks/application/event-calendar/event-calendar-1.md) (`get_block("event-calendar-1")`)
- A booking page where each picked date brings its own time slots for one session: use [Booking Page](https://web.dev.reui.io/blocks/application/schedule/schedule-4.md) (`get_block("schedule-4")`)

## Third-party libraries

- React DayPicker v9: [API reference](https://daypicker.dev/v9/api), [docs](https://daypicker.dev/v9/start)
- Sonner v2: [API reference](https://sonner.emilkowal.ski/toast), [docs](https://sonner.emilkowal.ski/getting-started)

## Install

```bash
npx shadcn@latest add @reui/solution-bookings-2
```

## About Bookings blocks

### When to use

- A front desk overview for an appointment business: booking KPIs, chair capacity and the day's queue
- An appointment calendar by day or week, filtered by staff and service, with a double booking alert
- One appointment's detail over the day's list: client, deposit balance, internal note and booking history

### When not to use

- An activity feed or change history on its own, with no appointments or clients: use the [Timeline blocks](https://web.dev.reui.io/blocks/application/timeline.md)
- A team overview of KPI tiles and a work queue for a business with no appointments: use the [Dashboard blocks](https://web.dev.reui.io/blocks/application/dashboard.md)
- A client facing card where someone picks a day and a time slot to book one session: use the [Schedule blocks](https://web.dev.reui.io/blocks/application/schedule.md)

### Agent notes

- Each block's data.tsx declares its own `AppointmentStatus` union, and the 3 differ in values and casing; map them to one set before combining
- Write actions save nothing: new appointments, check-ins, status changes and notes only call sonner `toast`, at most after a local state change
- Each root sets a max width, `max-w-7xl`, `max-w-6xl` or `max-w-md`, and page.tsx or the root adds padding; drop both inside an app shell

Every ReUI item has a twin like this one; the index is https://web.dev.reui.io/llms.txt. Agents with the ReUI MCP (https://web.dev.reui.io/docs/mcp) get the same guidance from the getters named above.
