Skip to content

[FE-07] Admin booking calendar board — day/week grid across all workspaces #1357

Description

@yusuftomilola

Overview

/admin/bookings is a flat table. Space managers think spatially: "what's happening in every room today?" A resource-scheduler board (rows = workspaces, columns = time) is the operational heart of OfficeRnD/Skedda admin UIs.

Tasks

  • New page frontend/app/admin/calendar/page.tsx (admin conventions as in frontend/app/admin/bookings/page.tsx).
  • Day view: workspaces as rows, hours as columns; bookings as colored blocks (status colors consistent with [FE-06]) showing member name + time. Week view: workspaces × days.
  • Filters: workspace type, status; date navigation with URL state.
  • Click a booking → detail drawer/modal with the key facts and quick actions wired to existing endpoints: confirm (PATCH /bookings/:id/confirm), cancel, complete, and approve/reject once [BE-21] lands (render conditionally on the status).
  • Occupancy summary strip per day (X of Y seat-hours booked) if cheap to compute client-side; otherwise skip (BE-40 covers analytics later).
  • Needs all bookings for a date range: extend the admin bookings query hook with range params if the API supports it, or request the addition in the PR (small, acceptable in scope).

Acceptance Criteria

  • An admin sees every booking across all workspaces for the selected day, and can confirm/cancel from the drawer without leaving the page.
  • The board stays usable at 20+ workspaces (row virtualization or scroll).
  • Non-admins cannot access the page.

Dependencies

Benefits from [BE-17] and [BE-21]; do not block on them.

Notes for Contributors

Add the page to the admin sidebar. Comment below to be assigned.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions