Inspection review

A React block (a whole screen) in Beamline's Construction app.

A unit's inspection, reviewed in three views. Findings: rooms and features with their condition, answers, notes and photos, and each feature's maintenance flags, a resident's flag waiting for a manager's review (never sent to work by itself), internal notes kept off the report, cost unknown until known, and a flag saved apart from the inspection's answers (offline says it can't be). Compare: two inspections of the unit side by side, features paired by exact name, a changed answer named in words, a question asked in one only or whose type changed said and not compared, unmatched features kept in view; differences only narrows it and the report's scope is chosen before export, never as a charge. Service issues: the flags mapped trade to category, grouped one issue per category with entry and priority, each created on its own with a key, so a failed one is retried alone and nothing is created twice. The sync settings open beside them.

Use it for

  • Reviewing an inspection of a place or a thing (a rental unit, a vehicle, a site, a hotel room) and sending what needs fixing to a maintenance system.
  • Comparing two walk-throughs of the same place (move-in and move-out, before and after) where unmatched items and unanswered questions must stay honest.

Not for

Anatomy

  • header: the product's mark, the inspection's kind, unit, date, inspector and status; Findings, Compare and Service issues; Sync settings
  • findings: rooms with their features down the side (condition, flag count); the feature's sheet with its answers (unanswered said), photos count, notes with author and role, and its maintenance flags; Flag for maintenance opens the flag form (what needs fixing, internal notes, trade, who pays, cost left empty when not known) with Save flag
  • a flag: description, status (resident flag to review, flagged, in a service issue with its number), reporter and role, trade, who pays, cost or Cost not known, internal notes marked Not on the report; Accept for work on a resident's flag
  • compare: Earlier and Later pickers (by kind and date, with inspector and status), the count of features that differ, Differences only, Export report; rows by room, each feature with its verdict in words (Same, Changed, Only in earlier, Only in later) and its condition on both sides; a row opens to its questions, each side's answer and photos
  • export dialog: all rooms or differences only (with counts), a line that the report charges nobody, Export, done or failed with Try again
  • service issues, as a flow: on one side the flags under their trade, each trade pointing at its category (a menu; an unmapped trade in the warning tone), each flag pressed in or out (a resident's waiting for review, one without a trade, one already in an issue: each said and not choosable); on the other one card per category with its flags (each can be left out), entry and priority as words opening their choices, a trade still waiting for its category said; created with its number, or failed with Try this one again; Create N service issues
  • sync sheet: the switch (off until a default category and status are chosen), resident flags waiting for acceptance, the defaults, the field map with internal notes not sent, the destination unreachable with how many flags wait, the rule version, Save

States

  • feature observed; flag draft; resident flag pending review; manager flag; internal notes; offline flag unavailable (answers kept); saving; flag saved; flag refused (the text kept); work not yet created
  • pair selection; matched features; unmatched feature; different answer; different question type; question in one only; not answered; filtered differences; export review; exported; export failed
  • flags selected; unmapped trade; category mapping; grouped review; flag excluded; creating; one issue failed, others created; retry pending; created
  • sync disabled; missing default; configured; enabled; resident review excluded; destination unavailable; saved; save failed
  • loading: shaped skeletons; no flags
  • phone: the rooms list then the feature with Back; a pair stacks as Earlier and Later, each named
  • right to left: lists, arrows and the field map mirror
  • reduced motion: through the tokens

Keyboard

  • Tab through the views, the rooms list, the feature's flags and their actions, the pairs and their questions
  • Enter or Space opens a pair's questions; Escape closes the export dialog and the sync sheet

Motion

A pair's chevron turns as its questions open; dialogs and the sheet use their own parts' motion. Nothing runs at rest.

Props

PropTypeDefaultDescription
inspections (required)Inspection[]—The unit's inspections, any order (shown oldest to newest).
inspectionId (required)string—The inspection the findings and the service issues are for.
unit (required)string—The unit, in your words ("Unit 2B, Linden Court").
flagsMaintenanceFlag[]—
defaultFlagsMaintenanceFlag[]—
onFlagsChange((flags: MaintenanceFlag[]) => void)—
trades (required){ id: string; name: string; }[]—The trades a flag can need.
categories (required){ id: string; name: string; }[]—The maintenance system's service-issue categories and statuses.
statuses{ id: string; name: string; }[]—
defaultMappingRecord<string, string>—Trade → category, as last saved; a trade missing here asks for a category before issues are created.
viewInspectionView—
defaultViewInspectionView—
onViewChange((view: InspectionView) => void)—
onSaveFlag((flag: MaintenanceFlag) => Promise<unknown>)—Save one flag (new, edited, or accepted after review). Reject with an Error: it stays unsaved, said so.
onCreateIssue((issue: IssueDraft) => Promise<{ number: string; }>)—Create one service issue; resolve with its number in the maintenance system.
onExport((q: { earlierId: string; laterId: string; scope: "all" | "filtered"; featureIds: strin…—Export the comparison report.
syncSyncPolicy—
onSyncChange((policy: SyncPolicy) => Promise<unknown>)—
destinationReachableboolean—false: the maintenance system can't be reached; flags wait to sync.
destinationstring—The maintenance system's name ("Wrenchline").
onlineboolean—false: the device is offline; flags can't be saved, the answers stay.
currencystring—ISO currency for costs. Default USD.
bystring—Who is working, written on the flags made here.
loadingboolean—
productstring—
classNamestring—Classes on the documented visual root; no override by default.
refRef<HTMLDivElement>—Receives the documented native target or imperative handle; omitted by default.

Built from

Dependencies

lucide-react

Import

import { InspectionReview } from "@beamline/inspection-review";

Get it

Inspection review 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…
  • 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…
  • Maintenance plans: 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…
  • 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…

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.