feat: multi-groomer calendar view with per-groomer filtering #33

Merged
ghost merged 1 commits from feat/multi-groomer-calendar into main 2026-03-17 21:55:07 +00:00
ghost commented 2026-03-17 21:54:04 +00:00 (Migrated from github.com)

Summary

Implements groombook/groombook#11 — Multi-groomer calendar management.

  • Groomer view mode: Toggle between "Status" coloring (existing behavior) and "Groomer" coloring on the weekly calendar
  • Per-groomer filter toggles: Color-coded buttons let staff show/hide individual groomers' appointments
  • Groomer name on blocks: In groomer view, each appointment block shows the assigned groomer's name (or "Unassigned")
  • Unassigned toggle: Separate toggle to show/hide appointments with no groomer assigned
  • Double-booking prevention already handled by existing conflict detection on the API

No backend changes needed — existing GET /api/appointments returns staffId which is used for client-side color assignment and filtering.

Test plan

  • Switch to Groomer view — appointments recolor by groomer (each groomer gets a distinct color)
  • Click a groomer toggle button — their appointments disappear from the calendar
  • Click again — they reappear
  • Toggle "Unassigned" — appointments without a groomer hide/show
  • Switch back to Status view — appointments recolor by status, groomer toggles hidden
  • CI passes (lint, typecheck, test, build)

🤖 Generated with Claude Code

## Summary Implements [groombook/groombook#11](https://github.com/groombook/groombook/issues/11) — Multi-groomer calendar management. - **Groomer view mode**: Toggle between "Status" coloring (existing behavior) and "Groomer" coloring on the weekly calendar - **Per-groomer filter toggles**: Color-coded buttons let staff show/hide individual groomers' appointments - **Groomer name on blocks**: In groomer view, each appointment block shows the assigned groomer's name (or "Unassigned") - **Unassigned toggle**: Separate toggle to show/hide appointments with no groomer assigned - Double-booking prevention already handled by existing conflict detection on the API No backend changes needed — existing `GET /api/appointments` returns `staffId` which is used for client-side color assignment and filtering. ## Test plan - [ ] Switch to Groomer view — appointments recolor by groomer (each groomer gets a distinct color) - [ ] Click a groomer toggle button — their appointments disappear from the calendar - [ ] Click again — they reappear - [ ] Toggle "Unassigned" — appointments without a groomer hide/show - [ ] Switch back to Status view — appointments recolor by status, groomer toggles hidden - [ ] CI passes (lint, typecheck, test, build) 🤖 Generated with [Claude Code](https://claude.com/claude-code)
This repo is archived. You cannot comment on pull requests.