Maintenance plans
A React block (a whole screen) in Beamline's Construction app.
An operations team's maintenance plans. The queue lists every asset-plan pair (one machine can appear under two plans) with its last service, next due point, the current reading and how far into its interval it is, worst first: overdue, data missing, due soon, scheduled, each said with its reason and unit ("Overdue by 20 h", "Data missing: no last service") on its tone, a stale reading marked with its age. A pair opens beside the list: the plan's rule in a sentence, the reading with its source and date, the last service recorded (refused said) and a linked action opened apart from it. Plans are built per program: counted by time, distance or engine hours, every so many units with a due-soon end drawn on the interval and moved by its grip, each machine marked where it stands; recipients; each machine's last service and reading, giving its due point or saying what is missing; draft, ready, save refused.
Use it for
- Service intervals by calendar, distance or runtime across a fleet or plant: vehicles, machines, generators, lifts, HVAC units.
- A due queue where missing data must be said instead of guessed, and one asset can sit under several plans.
Not for
- Running the work itself (work-orders).
- One asset's whole record (asset-workspace).
Anatomy
- header: the product's mark, Maintenance due or Maintenance plans, Queue or Plans
- queue: All, Overdue, Due soon, Data missing, Scheduled with counts; rows with a stripe in the state's tone: asset (id, serial, site), plan, last service, next due with how much of the interval is used, the reading now (stale marked), the state with its reason and unit, an open action
- detail: asset and site, the rule, the state and due point, last service, the reading with its source and date; record the last service (date, reading in the plan's unit); open an action, said to be apart from the service
- plans: programs on a rail with their plans, Add a plan; the plan's name and state (draft, ready, saved with machines missing data), counts by, every, due soon for the last; the interval drawn (fine, due soon, past due) with the grip at the due-soon edge and each machine marked by name; the rule; who to tell; the machines with last service and reading and the due point or what is missing; add a machine; Save
States
- queue: scheduled, due soon, overdue, data missing (no last service, no reading at last service, no current reading), stale reading, action open, service recorded, service refused
- plans: empty program, new plan, time, distance, runtime, baseline missing, ready, saving, save refused
- loading: shaped skeletons
- phone: the queue in two columns, a pair opens in place with Back; the plan's sections stacked
- right to left: mirrored, the interval runs from the right
- reduced motion: through the tokens
Keyboard
- On the interval's grip: Left/Right one unit, Shift ten (a hundred and a thousand km for distance), Home/End the limits; Escape while dragging puts the edge back
- Tab through the filters, the rows (Enter opens), the detail's fields and actions, the rail and the plan's fields
Motion
The interval's zones follow the grip while held and settle in the fast duration otherwise. Nothing runs at rest.
Props
| Prop | Type | Default | Description |
|---|---|---|---|
programs (required) | MaintProgram[] | — | |
plans (required) | MaintPlan[] | — | |
assets (required) | MaintAsset[] | — | |
baselines (required) | Baseline[] | — | |
onUpdateService | ((u: ServiceUpdate) => Promise<unknown>) | — | Record an asset's last service under a plan. Reject with an Error: nothing changed, the reason said. |
onCreateAction | ((q: { assetId: string; planId: string; }) => Promise<{ id: string; }>) | — | Open a linked action (work order) for an asset and plan; the service itself is recorded apart. |
onSavePlan | ((plan: MaintPlan, baselines: Baseline[]) => Promise<unknown>) | — | Save a plan with its assets' last services. Reject with an Error: kept as a draft, the reason said. |
defaultView | "plans" | "queue" | — | |
defaultOpen | string | null | — | The asset-plan pair open in the queue (`assetId:planId`). |
defaultProgram | string | — | |
defaultPlan | string | — | |
today | string | — | |
loading | boolean | — | |
product | string | — | |
className | string | — | Classes on the documented visual root; no override by default. |
ref | Ref<HTMLDivElement> | — | Receives the documented native target or imperative handle; omitted by default. |
Built from
- Alert
- Avatar
- Button
- Calendar
- Date picker
- Input
- Label
- Number field
- Segmented control
- Select
- Skeleton
- Spinner
- Tag input
- Text morph
- Tooltip
- Value grip
Dependencies
lucide-react
Import
import { MaintenancePlans, TONE } from "@beamline/maintenance-plans";
Get it
Maintenance plans 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 Construction
- Submittal register: The documents a trade owes a project before its material is bought, on the clocks that matter: a log whose rows each draw their way to site on one shared…
- Change orders: Change orders against a contract, with the money drawn where it stands: one bar of the original contract, each approved change, a line at the current…
- Inspection review: A unit's inspection, reviewed in three views. Findings: rooms and features with their condition, answers, notes and photos, and each feature's…
- Work orders: A maintenance work order that coordinates subtasks: the children's progress drawn by status with cancelled ones counted apart, the parent completed on…
- Action center: Everything waiting on a person across projects: a strip of every open item on the days ahead, one lane per kind of owing (You submit, You answer, Tasks…
- Company access: A project's companies as one board: No company first (office access waits for a company, and says so), then each company with its code and its people…
- Condition checklist: An inspection by area. Each item marked good (success), soon (warning) or needs work now (danger), or not checked yet and kept apart below; what was…
- Corrective actions: A corrective action raised from a failed inspection answer, for food safety, facilities or quality teams. The answer, its photo and note are pinned above…
- Quality checks: Quality checks by picture and the control points that make them. A check asks for one photo: an upload that fails keeps its file with Try again, and…
- Maintenance plan: Maintenance of shared equipment. The instruments, most urgent first, each with its most pressing kind and how due it is (overdue, due soon, fine, never…
- Equipment register: A business's machines and vehicles: a register filtered by status (in use, in repair, sold, each counted) with each machine's photo or type icon…
- Asset workspace: One physical asset: a machine, vehicle or piece of plant. Its header keeps the system id apart from the name and serial, with type, site, status and the…
- Asset packs: Packs of assets (sounds, presets, fonts), the providers they come from and the storage they take. Download and install are two phases with their own…
- Instrument use: Shared instruments. The slot search reads as one sentence (how long, which instrument type, the dates and the working hours with the lab's time zone)…
- Job booking: A customer books a home or field-service job on the company's own site, phone first. Services with how many units, each unit adding its time and price…
- Job booking setup: Online booking for a field-service company, set up from three sides that feed one booking form. Services: each priced and timed per unit with whether it…
- Rental availability: A rental shop's availability: a product's month for the quantity a customer wants (each day available, some left with the count, booked out or not known…
- Rooms & equipment: A salon's or clinic's rooms and equipment and what its services need of them: resources by group at each location, how many appointments each holds at…
- System pages: The four pages a product shows when the normal one cannot: page not found (search and the likely places), something broke (try again, an error id to…