SECO Tools · internal · EPMS

Component gallery

Every component in the shared inventory, in every state it ships with: default, loading, empty, error and disabled. Presentational only — each one takes props and raises events.

Gate rail

The signature element. A hairline dimension line, a datum tick per stage, stage names only. Advancing a stage animates the tick over 240ms, and that is the only animation in the application. Below 900px it collapses to the current stage plus a count — narrow this window to see it.

Current stage, interactive

First stage

Closure

Record header

Eyebrow, title, identifier, actions and the rail. Sticky, so the rail never scrolls away.

Project

Sømme Marine — turbine hub roughing cell

PRJ-00184
ActiveSynced2026-03-04 06:20Dynamics 3652026-03-04 02:00
Customer
Sømme Marine AS
Route
Solution led
Predicted value
EUR 412,000
Cost to date
EUR 96,480
Hours booked
612.75
Next gate
2026-03-24

Summary strip

Loading

Data table

Sticky header, sticky first column, resizable columns, multi-sort with shift-click, saved views, a density toggle and a visible row count. Below 100 rows it scrolls rather than paginates.

Default, with toolbar and filters

4 actions
4 actions
Status
PRJ-00184-012Confirm insert grade with the application engineerMarit Solheim2026-03-06Overdue6.50
PRJ-00184-013Issue the revised statement of workJonas Bergqvist2026-03-11Due3.00
PRJ-00184-014Book the trial cell for the second runPriya Raghunathan2026-03-18On plan12.25
PRJ-00184-015Record the customer's feedback score at closureMarit Solheim2026-04-02Not started1.00
4 actions

Loading

0 rows
ReferenceActionOwnerDueStatusHours
Loading rows…
0 rows

Empty

0 actions
ReferenceActionOwnerDueStatusHours

No actions yet.

Add the first action to start the log.

0 actions

Error

0 rows
ReferenceActionOwnerDueStatusHours

The action log did not load. Check your connection, then load the rows again.

0 rows

View switcher and density toggle

Default

Disabled

Filter bar

Disabled

Form controls

Label above the control, help text below, error below that. Errors explain and instruct without apologising.

Pick the account the work is for.

Sets the route options and the approval chain.

The same calendar day everywhere — this is a date, not a moment.

EUR 48,250.00 at the rate held on the record.

Plain text. Keep it to what the delivery team needs.

Lookup — searching, empty result, and failed search

Type in each field to open its list. Nothing is fetched — the caller owns the search.

Badges and provenance

Colour never carries meaning alone: every state ships a glyph and a label.

Status

ApprovedDueOverdueNot startedAwaiting technical approval

Status, compact

On planAt limitDeclinedInactive

Sync state

Not applicablePendingSynced2026-03-04 06:20FailedSuperseded

Provenance

Dynamics 365M3 via the data platform2026-03-04 02:00

Empty states

Instructions, not moods. No illustration and no apology.

No actions yet.

Add the first action to start the log.

No projects match these filters.

Widen the filters, or clear them to see every project you own.

Toasts

A toast repeats the words of the control that caused it: Approve produces Approved.

Approved

The technical approver has been notified.

Request submitted

Sent to the CRM. The sync state is Pending until it lands.

Sync failed

The request did not reach the CRM. Open the integration log to see why, then send it again.

Confirm dialog

Destructive actions say what will happen and how many records it affects.