> ## Documentation Index
> Fetch the complete documentation index at: https://docs.1club.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Calendar

> The unified day/week calendar that drives bookings, classes, instructor time off, and check-in.

The calendar is the hub of the **Schedule** section. It pulls classes, bookings, and instructor time off for the visible date range and renders them as colored blocks across resource columns. The front desk runs the day from it, managers plan the week on it, and instructors see a streamlined view of their own teaching schedule.

## When to use it

Most reservations and check-ins start here. Click an empty slot and the right dialog opens pre-filled for that court, instructor, or class type, and right-click a block to check someone in, take a payment, or cancel without leaving the grid.

Typical uses:

* **Build tomorrow's class grid fast** - drop a class into each start time, then copy a popular class like your 18:00 vinyasa to the other days that run it.
* **Reschedule a padel court booking** - a member asks to move their Tuesday court an hour later, and you drag the block to the new slot.
* **Front-desk check-in during class** - as members arrive for the 09:00 class, check them in straight from the class block.
* **Declutter a multi-court venue** - a racket center with a dozen courts and several coaches shows only the courts the desk is working.

See [Worked examples](#worked-examples) for the steps behind each of these.

## Layout

Open **Schedule** in the left rail; the calendar is the page it lands on.

The calendar has two view types saved per browser: **Day** and **Week**.

**Day view** is a vertical time grid with one column per resource, grouped left-to-right by type: class-type columns first, then a fallback "Classes" column, then instructor columns A-Z, then area columns grouped by area type. The time axis is built from your organization's operating hours, in 30-minute increments.

**Week view** is a horizontal grid with days as columns. Resources are merged - you see all activities for the week, not one column per resource - because the day-column layout would be unreadably wide.

The mini calendar on the left navigates dates; the **Today** button returns to today. The selected date is pushed to the URL as `?date=YYYY-MM-DD` so you can share a link to a specific day.

## Resources and what shows up where

The schedule reads three live data sources for the visible range:

* **Classes** - shown as blocks on their class-type column (or the fallback "Classes" column for classes without a type). Each class with assigned instructors also produces a mirror "teaching" block on each instructor's column in day view, so the instructor reads as busy.
* **Bookings** - shown on the area column if they have an area, on the instructor column if they have an instructor (both, if they have both), or on the relevant class-type column if they're class-bound. Class-bound bookings are suppressed in week view because the class itself already represents them.
* **Instructor time off** - shown as grey blocks on the instructor's column.

An hour that a [season pass](/schedule/season-passes) paid for carries a small season icon labelled with the season's name, so a contracted week reads as an hour of a prepaid contract rather than a casual booking. Makeup hours replayed on another date carry the same marker.

Live [events](/events/events) also render on the calendar as read-only cards: single-day events at a gym appear in their areas' lanes (or under their instructors when no areas are assigned), while multi-day and organization-wide events appear as chips in a banner above the grid. Event cards link to the event detail page and don't reserve the area they're shown in.

Active areas (`status=active`) and bookable instructors (`isBookable=true`) are the only ones included. Inactive or non-bookable resources don't get a column.

## Filtering what you see

The **Resource filter panel** in the calendar header lets you toggle individual resources on or off. Your overrides are saved per view (day vs week) in browser storage.

The organization-level defaults for what's hidden come from **Settings** > **Bookings** > **Schedule Display** (the **Default visibility** card), which lets you hide entire class types, instructor types, or area types, plus a flag for uncategorized instructors and areas. The toggle in the filter panel layers on top of these defaults: if you flip a resource to a state that matches the default, the override drops so future settings changes still take effect.

## Coloring

Two coloring modes can be toggled on the same **Settings** > **Bookings** > **Schedule Display** page:

* **Staff coloring** - when on, a booking takes the color of the instructor assigned to it. When off, blocks use the resource's configured color (or a hash of the resource name as a fallback). The same section sets the color of **Any instructor** bookings - court bookings still waiting for a coach - so they stand out from ordinary court bookings. The card also says **Any instructor** in words, so it reads the same with staff coloring off.
* **Source coloring** - when on, a second border color is added that encodes the booking **source** (admin, portal, website, kiosk, etc.). Source colors are configurable on the same settings page.

## Creating activities

Click an empty time slot to open the create dialog. The dialog is pre-filled based on which column you clicked:

* Click a class-type column to open the class dialog with the class type and time range pre-set.
* Click an area column to open the booking dialog with the area and time range pre-set.
* Click an instructor column to open the booking dialog with the instructor and time range pre-set.

You can drag-select multiple consecutive slots to extend the duration before the dialog opens.

In **week view**, clicking a slot opens a small menu instead of a dialog so you can pick between **Add booking**, **Add class**, or **Add time off** (the last option is shown only on instructor columns).

The same slot menu offers **Add Season Pass** when the date you clicked falls inside a season that is on sale at that gym, and you hold the permission to create memberships. It opens the season sale drawer with that hour pre-filled, so the whole run of weeks is sold from the slot the member asked for. See [Season passes](/schedule/season-passes).

The header has an **Add** button that opens a menu with **Booking**, **Class**, **Event**, **Checkin**, **Time off**, and **Block** (each shown only when you hold the permission for it). Next to it, the **More actions** menu links to the [Bookings](/schedule/bookings) list, [Classes](/schedule/classes) list, [Attendance](/schedule/attendance), [Areas](/settings/areas) (under **Settings** > **Clubs**), and **Configure**, which opens the Schedule Display settings. **Event** creates a draft [event](/events/events); the events list itself lives in the **Events** section.

## Acting on existing blocks

Click a block to open the matching dialog: bookings open the booking dialog, classes default to the add-booking flow for that class (so the most common case - someone wants to book into the class - is one click), time-off entries open the time-off dialog.

Right-click a block (or use the mobile tap menu) for the full set of actions: **View** (open the detail page), **Edit**, **Cancel**, **Delete**, **Add check-in**, **Add payment**, **Add booking** (for classes), and **Notify participants**.

**Add payment** is smart about split balances: if the booking has one outstanding transaction, you get a single-transaction payment dialog with an editable amount. If it has multiple, the amount is locked to the full sum and the server settles them atomically. See [Bookings](/schedule/bookings) for the full story.

## Duplicating a class

To copy a class to another time without reopening the class dialog, hold **Option** (Mac) or **Alt** (Windows) and drag the class block to a new slot, then release.

While you drag with the key held, the calendar shows that you are copying rather than moving: the cursor becomes a copy cursor, the source block gets a green outline and a small copy badge, and the target slots highlight in green. Let go of the key mid-drag to fall back to a normal move.

The result is a single one-off class at the drop time. It keeps the original's name, description, instructors, area, capacity, price, visibility, color, and class type, but never its recurrence, and it starts with no bookings or check-ins. The copy appears the instant you drop it, and a **Class duplicated** toast offers an **Undo** action that removes it again.

The gesture works with a mouse and keyboard and applies to classes only - bookings and time-off blocks keep their normal drag-to-reschedule behavior. A dismissible hint in the calendar header points it out until you close it.

## Bookings created with a member pre-selected

If you arrive at the schedule from a member profile with **Book a slot**, the URL carries `?contactId=X`. A toast prompts you to pick a slot, and every booking dialog you open from a slot click is pre-filled with that contact.

## Instructor-only and mixed-role views

Instructor-only accounts see a streamlined **My teaching schedule** view that hides resources they don't own. Mixed-role accounts (instructor + manager or admin) can open either the full **Schedule** page (described above) or their personal **My teaching schedule** through the instructor menu in the sidebar.

## Worked examples

### Build tomorrow's class grid fast

Open Day view on tomorrow, click the class-type column at each start time to drop in a class, then **Option/Alt-drag** a popular class (say your 18:00 vinyasa) to the other days that run it. Each drop is a fresh one-off class with the same name, instructor, area, and capacity but no bookings yet.

### Reschedule a padel court booking

A member asks to move their Tuesday court an hour later. Find the block on the court's column, drag it to the new slot, and confirm the old and new time in the prompt. The resource and duration stay the same; only the time shifts.

### Front-desk check-in during class

As members arrive for the 09:00 class, right-click the class block and choose **Add check-in** (or click the block, which defaults to the add-booking flow for walk-ins). No need to open the class detail page.

### Declutter a multi-court venue

A racket center with a dozen courts and several coaches can be noisy in Day view. Use the **Resource filter panel** to show only the courts you're working, saved per view so the desk keeps its layout.

## Tips & best practices

* **Day view for the desk, Week view for planning.** Day view gives you per-resource columns for live operations; Week view is better for seeing the whole week at a glance.
* **Option/Alt-drag to clone, plain drag to move.** Release the modifier mid-drag to fall back to a move; the copy cursor and green highlight tell you which mode you're in.
* **Share a day with a link.** The selected date is in the URL (`?date=YYYY-MM-DD`), so you can send a colleague a specific day.
* **Let settings own the defaults.** Set org-wide visibility under **Settings** > **Bookings** > **Schedule Display**; use the filter panel only for per-session tweaks, since matching the default drops your override.

## Troubleshooting

**Issue**: A court or coach is missing from the calendar.

**Solution**: Only **active** areas and **bookable** instructors get a column. Check the area status and the instructor's **Bookable** toggle. Also confirm the resource's type isn't hidden under **Settings** > **Bookings** > **Schedule Display**, or re-enable it in the resource filter panel.

**Issue**: A class booking doesn't appear in Week view.

**Solution**: This is by design. Class-bound bookings are suppressed in Week view because the class block already represents them. Switch to Day view to see individual bookings.

**Issue**: Block colors aren't what I expect.

**Solution**: Coloring depends on the modes under **Settings** > **Bookings** > **Schedule Display**. With **staff coloring** on, blocks use the assigned instructor's color, not the resource color, and **Any instructor** bookings use the color set for them. Turn it off to color by resource.

**Issue**: My duplicate-drag just moved the class instead of copying it.

**Solution**: Hold **Option** (Mac) or **Alt** (Windows) for the whole drag. If you release the key before dropping, it falls back to a move.

## Related

* [Bookings](/schedule/bookings) - The list view and detail page for reservations.
* [Classes](/schedule/classes) - Class creation, capacity, and attendance.
* [Events](/events/events) - One-off ticketed events that render as read-only cards.
* [Season passes](/schedule/season-passes) - Sell a whole season of a weekly court hour from a slot.
* [Booking policies](/settings/booking-policies) - Rules that govern payment timing and cancellation.
* [Check-in models](/reference/check-in-models) - Entrance flow your front desk should follow.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.