Asset workspace

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

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 last inspection said in words (a meter reading never stands in for one); limited access, an offline summary and a retired asset are said; an inspection or action opens as a draft with the asset and site filled in. The overview gathers the last known location (place, coordinates and accuracy, when captured and received, from an inspection or a device, drawn on a map base when one is given (the fixes on real streets, the trail between them, the newest with its accuracy ring and place) or against earlier fixes, never a pin at 0,0; stale, unknown and restricted said), the meters with source and age, the maintenance plans by state and recent activity. Activity lists events by day, each with its type (an issue on the danger tone), who, when, the source and a link (no access said), filters by type and range, takes notes beside the events and holds new arrivals until asked. Usage draws use per day by engine hours or distance, a day without readings as a gap and a meter reset marked on its day, with the period's coverage said, a day-by-day table and an export.

Use it for

  • The page for one physical thing a team looks after: a machine, vehicle, generator, lift or instrument, with where it is, what happened to it and how much it worked.
  • Anywhere readings and locations must carry their source and time, and missing data must show as missing.

Not for

  • The due queue and plan setup across many assets (maintenance-plans).
  • A street map of a whole fleet (geo-map is not a street map).

Anatomy

  • header: the product's mark, an asset switch, Overview, Activity or Usage
  • identity: a type tile, name, id · serial · type · site, the status and last inspection on their tones; Start inspection and Open action (a draft with the asset and site filled in, said before it opens)
  • notices: limited access, offline since, retired
  • overview: location (with a map base the larger half, down the left: the fixes on the map with the trail, accuracy ring and place, then place, coordinates and accuracy, source, captured and received, stale; without one a locator drawn from the fixes), readings (value, source and age, stale), maintenance (plan and state in words), recent activity
  • activity: event types as colour toggles, range; new events waiting above the list; events by day with type, title, detail, who, time, source and a link or no access; a note box beside
  • usage: measure, last 14 or 30 days, Export; the period's total and coverage; a bar per day with gaps hatched and resets marked; legend; day by day

States

  • asset: in service, in the workshop, retired; full or limited access; offline summary; never inspected
  • location: from an inspection, from a device, stale, unknown, restricted, asking for a fix
  • readings: current, stale, none; maintenance unknown or none
  • activity: filtered, new events waiting, link restricted, no history, note saving, note not saved
  • usage: no readings, engine hours, distance, partial coverage, meter reset, export preparing and ready
  • drafts: opening, opened with its ids, refused
  • loading: shaped skeletons
  • phone: one column, the identity kept above
  • right to left: mirrored
  • reduced motion: through the tokens

Keyboard

  • Tab through the asset switch, the sections, the identity's actions, the cards' actions, the type toggles (Enter or Space toggles), the note and the usage controls

Motion

Type toggles tint in the fast duration; the day-by-day fold's chevron turns. Nothing runs at rest.

Props

PropTypeDefaultDescription
assets (required)AssetRecord[]—
defaultAssetstring—
defaultTab"activity" | "overview" | "usage"—
onStart((q: { kind: "action" | "inspection"; assetId: string; siteId: string; }) => Promise<{ …—Open a draft inspection or action with the asset and site filled in. Resolve with its id.
onRefreshLocation((assetId: string) => Promise<LocationFix | null>)—
mapMapBase—A map base the location is drawn on (`@/components/_shared/map-base`); without one the fixes are drawn against each other.
onAddNote((assetId: string, text: string) => Promise<AssetEvent>)—Add a note beside the events (never replacing one). Resolve with the stored event.
onOpenLinked((ref: string) => void)—
onExport((assetId: string, measure: UsageMeasure) => Promise<{ file: string; }>)—
nowstring—
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 { AssetWorkspace, EVENT_TYPES } from "@beamline/asset-workspace";

Get it

Asset workspace 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…
  • 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 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.