Skip to content

Semantic widget catalogue #

Reference inventory of the facets, supporting widgets, and page archetypes used when a Product Application presents records in the Customer Portal. You author these through semantic composition; the portal maps them onto fixed page types (board, timeline, capacity, ledger) rather than a free-form widget designer.

To preview fixtures locally, run the portal frontend and open /dev/semantic-widgets. Each entry below has a stable #docs-slug you can deep-link or screenshot. Recapture gallery stages with:

bash
SEMANTIC_WIDGET_GALLERY_URL=http://localhost:5175/dev/semantic-widgets \
  npm run capture:semantic-widget-gallery

In a workplace #

Facets rarely appear alone. A capacity page stacks them per record; a board or timeline arranges the same widgets for a different job. These gallery fixtures show the four page archetypes and a multi-facet record stack in context.

Capacity page with North and South silo cards, each showing current fill, healthy status, and volume history
Capacity: grid of records with facet stacks (here: current fill + asset status + volume history).
Record composition stack showing needs-attention threshold and Circuit 3 resource meter with healthy status
Record composition stack: ordered facets for one record, sharing overlay events with child hosts.
Board page archetype showing lane columns for work-in-progress records
Board: lane board for work-in-progress records.
Timeline page archetype showing chronological events and setpoints
Timeline: chronological event, setpoint, and playback timeline.
Ledger page archetype showing append-oriented tabular history
Ledger: append-oriented tabular history.

Semantic facets #

First-class composition components (semantic_composition.facets[].component). Required binding slots stay empty in composition v1 so older kits remain publishable. Treat the slots below as the authoring checklist for new facets.

NamecomponentDocs slugRecommended binding slotsTypical archetypes
Asset statusasset_status#asset-statusstate, reason, since, device_online, level, threshold, player/display/content signalsboard, timeline, capacity, ledger
Compliance seriescompliance_series#compliance-seriesvalue / reading, threshold_low, threshold_high, unit, device_onlinetimeline, capacity, board
Credential entitlementcredential_entitlement#credential-entitlementidentity / identifier, entitlement, balance, expires_at, statusledger, board
Current filllevel_capacity#level-capacityquantity, capacity, threshold_low / _low_low / _high / _high_high, unit, device_online, namecapacity, board, ledger
Volume history charttimeseries#timeseries-bandsvalue, unit, band_ll, band_l, band_h, band_hh, device_onlinecapacity, timeline, board
Maintenance assetmaintenance_asset#maintenance-assetruntime, service_due, last_service, status, device_online, nameboard, timeline, ledger
Media display statemedia_display_state#media-display-stateexpected/applied labels and generations, screenshot fields, player_state, display_state, sync_state, device_onlineboard, ledger
Resource meterresource_meter#resource-meterinstantaneous / value / reading, unit, cumulative, device_onlinecapacity, board, timeline, ledger
Setpoint schedulesetpoint_schedule#setpoint-schedulesetpoint / desired, actual, schedule, override, zone, device_onlineboard, timeline, ledger
State machinestate_machine#state-machinestate, mode, job, fault, interlock, phase, device_onlineboard, timeline, ledger
Transactiontransaction#transactionphase, identity, quantity, amount, status, settled_at, credentialtimeline, ledger, board

Asset status #

asset_status · #asset-status

Asset status facet showing health tone and reason for a monitored record
Health tone plus reason and signals for any monitored record.

Compliance series #

compliance_series · #compliance-series

Compliance series facet showing a reading against threshold window
Reading vs threshold window for compliance and excursion monitoring.

Credential entitlement #

credential_entitlement · #credential-entitlement

Credential entitlement facet showing identifier, balance, and expiry
Identifier, balance, expiry, and entitlement state for vouchers and tags.

Current fill #

level_capacity · #level-capacity

Live snapshot of fill vs capacity. Not a history chart. Pair with volume history when operators need trend.

Current fill facet for North silo showing 38 of 120 with vertical level gauge
Quantity vs capacity with threshold attention.

Volume history chart #

timeseries · #timeseries-bands

Volume history chart with HH H L LL band guides and alarm markers on a shared time axis
Zoomable series with HH/H/L/LL band guides and overlay markers. Pair with composition [event streams](semantic-composition#event-streams-and-shared-overlays).

Maintenance asset #

maintenance_asset · #maintenance-asset

Maintenance asset facet showing runtime and next service due
Runtime and next-service due state for maintainable equipment.

Media display state #

media_display_state · #media-display-state

Media display state facet with expected vs applied content and screenshot preview
Player and display sync plus screenshot freshness for screens.

Resource meter #

resource_meter · #resource-meter

Resource meter facet showing instantaneous reading with supporting electrical facts
Instantaneous meter reading with voltage, current, and power-factor facts.

Setpoint schedule #

setpoint_schedule · #setpoint-schedule

Setpoint schedule facet showing desired setpoint and schedule window
Desired setpoint and schedule window for HVAC zones.

State machine #

state_machine · #state-machine

State machine facet showing discrete machine state with fault and interlock signals
Discrete machine state with fault and interlock signals.

Transaction #

transaction · #transaction

Transaction facet row showing phase, quantity, and amount
Phase, quantity, and amount row for tickets and access sessions.

Supporting widgets #

Shared display pieces used inside facets and capacity stacks. They are not authored as facets[].component values.

NameKeyDocs slugRole
Asset status signalsAssetStatusSignals#asset-status-signalsCompact status chip row
Expected vs appliedExpectedVsApplied#expected-vs-appliedSignage content match summary
Media preview frameMediaPreviewFrame#media-preview-frameScreenshot with live/stale/offline caption
Watch camera + scrubberMediaWatchHost#media-marker-railCamera player, scrubber, and shared event marker rail
Event overlays on chartchart overlays#event-laneAlarm and threshold markers on the volume history chart
Offline sync statusOfflineSyncStatusPanel#offline-sync-statusOffline dataset sync health
Stream freshness chipStreamFieldFreshnessChip#stream-freshness-chipSmall live/stale/offline chip

Event overlays and the media marker rail share the same normalized event points for a record. Bind the camera on the record (camera_device), not by inferring a camera from the network alone.

Asset status signals #

AssetStatusSignals · #asset-status-signals

Compact asset status signals chip row
Compact status chip row used inside panels and overview cards.

Expected vs applied #

ExpectedVsApplied · #expected-vs-applied

Expected versus applied signage content match summary
Signage content match summary (expected generation vs playing).

Media preview frame #

MediaPreviewFrame · #media-preview-frame

Media preview frame with screenshot and freshness caption
Screenshot frame with live, stale, or offline caption.

Watch camera + scrubber #

MediaWatchHost · #media-marker-rail

Watch camera player with scrubber and shared event marker rail
Portal camera player with scrubber and shared event marker rail linked to volume history.

Event overlays on chart #

#event-lane

Volume history chart with alarm and threshold event overlays plus legend
Alarm and threshold crossings drawn on the history chart (same stream as the media rail).

Offline sync status #

OfflineSyncStatusPanel · #offline-sync-status

Offline sync status panel showing dataset sync health
Dataset sync health for offline-capable products.

Stream freshness chip #

StreamFieldFreshnessChip · #stream-freshness-chip

Stream freshness chips in live, stale, offline, and unknown states
Small live, stale, offline, and unknown chips for stream-backed fields.

Composition stacks #

NameKeyDocs slugRole
Record composition stackRecordCompositionStack#record-composition-stackOrdered multi-facet stack for one record; provides shared overlay events to child hosts

See the stack figure under In a workplace.

Page archetypes #

Namepage_typeDocs slugRole
Boardboard#page-boardLane board for work-in-progress records
Capacitycapacity#page-capacityGrid of records with facet stacks and optional timeseries overlays
Ledgerledger#page-ledgerAppend-oriented tabular history
Timelinetimeline#page-timelineChronological event / setpoint / playback timeline

Capacity pages select facets with config.facet_keys and overlays with config.overlay_event_keys. See Semantic composition.

Freshness contract #

Every semantic surface must distinguish:

StateMeaning
liveValue is current within the facet freshness window
staleLast-known value shown with captured-at context
offlineBound device unreachable; do not imply current physical state
unknownNo trustworthy value yet

Configure freshness.telemetry_stale_after_seconds (and screenshot policy where relevant) on each facet.