Linked appointments

A React block (a whole screen) in Beamline's Events & bookings app.

A drop-off and a pickup kept as one linked pair on the week's calendar (the shared event calendar, day view on a phone), with the car's stay drawn between them as an all-day band. Moving either one asks whether the other follows by the same amount (Move both, Only this one, Put it back); a pickup before its drop-off, or a drop-off after its pickup, is refused with the time it would cross; the system's refusals undo the move and are said. The chosen pair's drop-off, pickup and nights in the shop, and where the customer goes meanwhile: a bay, a loaner or the lounge, a loaner already out with someone else on those days said with who and until when; bookings needing attention counted and drawn on warning.

Use it for

  • Two appointments that belong together (drop-off and pickup, check-in and check-out) moved as a pair.
  • Bookings that hold a resource (a loaner, a bay) for the time between them.

Not for

Anatomy

  • header: the tool's mark, title, bookings needing attention, what saved or was refused
  • calendar: stays as all-day bands, drop-offs and pickups as events, flagged ones on warning
  • side: vehicle, customer and order, drop-off, pickup, nights; the move question; where the customer goes; a loaner taken

States

  • pair same day or over nights; loaner, bay, lounge or not decided; loaner taken
  • moved and asked, both moved, only one, put back, refused (crossing or by the system)
  • nothing chosen
  • phone: day view, details below
  • right to left: mirrored, arrow keys follow
  • reduced motion: through the shared calendar

Keyboard

  • Space picks up an event, arrows move it by a step or a day, Space drops; Enter opens its pair; Tab through the question and the place

Motion

Events move through the shared calendar; nothing runs at rest.

Props

PropTypeDefaultDescription
pairsLinkedPair[]—
defaultPairsLinkedPair[]—
onPairsChange((pairs: LinkedPair[]) => void)—
bays (required)string[]—
loaners (required)string[]—
onSave (required)(pair: LinkedPair) => Promise<{ ok: true; } | { refused: string; }>—
week (required)string—The week shown; "now" for the calendar.
now (required)string—
defaultSelectedstring—
productstring—
classNamestring—Classes on the documented visual root; no override by default.
styleCSSProperties—Inline styles on the documented visual root; no overrides by default.
refRef<HTMLDivElement>—Receives the documented native target or imperative handle; omitted by default.

Built from

Dependencies

lucide-react

Import

import { LinkedAppointments } from "@beamline/linked-appointments";

Get it

Linked appointments is part of Beamline UI. Install the parts you need in your React app as compiled packages or editable source. Get Beamline · Connect your agent

More in Events & bookings

  • Team calendar: A team's schedule: the people and shared calendars to show (each its colour), a month to jump by, who is out this week, and the week, day or month of…
  • Day agenda: One person's days with notes, tasks and calendar events side by side, each kept as what it is. A task's scheduled day, deadline, reminder and repeat are…
  • Crew booking: Booking crew for a project: each person with a strip of the project's days, days in the same state joined into one run said once (booked solid, available…
  • Resource booking: Booking something shared (a room, a van, a camera kit). Choose what, then either a free hour on a day: a grid of starts the app says are free (a taken…
  • Resource rules: Each person's scheduling rules beside their day, the day board leading: role, available (an unavailable day filled in the danger tint and said, a job…
  • Desk booking: Desks in an office for the people who book them and the admin who sets how far ahead. Your days over the next weeks: booked with a desk, free to book…
  • Waitlist desk: A front desk's waitlist beside the day's book: who is waiting (filters as chips, the queue's count apart from the day's), the day's bookings and the…
  • Visitor desk: An office front desk's visitors. Invite a meeting's guests from the calendar: colleagues are shown but never invited, guests without an email are said…
  • Issued ticket: One issued event ticket at the door, led by the ticket itself: what it admits to (event and venue), when, the section, seat and who it admits, and its…
  • Itinerary: A trip's days where every event says who sees it, in words: everyone, only Ana and Ben, or hidden from Leo. The same rules give each traveller their own…
  • Trip budget: A trip's money against its plan, in the trip's own currency. The budget (set or changed in place; a refused save keeps what was typed), what's spent and…
  • Proposal payments: A travel proposal's money from the agent's side to the client's. Pricing: the price rule (markup on supplier cost, a fixed price, or net), what the…
  • Project periods: A project's time periods (build, show, teardown) on one time scale, the thing being planned: each period a bar across its days with the crew and gear…

Part of Beamline UI: polished, editable React components and complete screens for custom applications. Build your own style from any look; tokens, fonts, radii, motion; not only colours.