Relay design system

Patterns

The compositions the screens are assembled from: the queue and the hero, the undo sequence as a filmstrip, the detail panel, the command palette, the explainer, the truck clock, the all-clear, and the states in between. Each is the shipped component.

The queue and the hero

One person's queue at the frozen demo instant, 10:40. Mark done runs the real signature moment: the check draws, the next item becomes the hero, the rows close the gap. Replay resets this pattern only.

components/relay/hero.tsx · queue.tsx · all-clear.tsx

Act now· Blocking fulfillment · 24 orders heldLate 2 h

Order #4821 — payment mismatch

A failed payment re-authorization is holding 24 orders at pack, and this one is already 2 hours late.

Act now2
Up next2
When you can1

Mark done, and undo

Four frames of the sequence, each a live component held still. Undo is one move, not the first move played backwards: the item flies from the toast back to its rank while the hero crossfades. Input is never blocked, and the toast is bottom-left, 360 by 56, for eight seconds.

components/relay/hero.tsx · toast-bridge.tsx · undo-toast.tsx · check-draw.tsx

  1. 1 · Before

    The hero is the one thing to do.

  2. 2 · Mark done · 0 to 200 ms

    The check draws on the card that is leaving. Nothing else waits on it.

  3. 3 · Done · about 700 ms

    The next item is the hero. The toast holds Undo for eight seconds.

  4. 4 · Undo · about 420 ms

    The item returns to its rank in one move. The hero was never gone, only covered.

The detail panel

A panel beside the queue from 1024, a sheet below it. The same component in both, so the first thing in it is always why the item is where it is.

components/relay/item-detail.tsx · item-detail-sheet.tsx · app/(app)/items/[id]

Act now

Order #4821 — payment mismatch

Blocking fulfillment · 24 orders held

Why is this first?

Time40 of 40

It is late by 2 h.

Orders blocked14 of 30

24 orders are waiting on it.

Impact10 of 87

Customers will feel it.

Time 40 + Orders 14 + Impact 10 = 64

64, 60 or higher, means Act now.

Ranks above Label printer offline at Pack 7 because it scores higher (64 to 62).

Next step: Clear the payment hold

Source & history

SourceOrder
StatusIn progress
DueLate by 2 h
TruckUPS Ground leaves Door 14 at 11:30
Orders waiting24
Units affected31
  • Opened 05:50 from an order issue
  • Started by Priya at 10:18

People

Priya RamanOutbound Exception Coordinator

The command palette

⌘K anywhere. Actions first, people and items once there is a query. Shown inline here at its real width, with the same body the dialog opens.

components/relay/command-palette.tsx

No results.

↑↓ Navigate · ↵ Select · Esc Close

Why is this first?

A plain question, four factor bars with the item's own numbers, a total, and a line comparing it with the next item. The popover and the inline placement are the same component.

components/relay/why-popover.tsx · why-factors.tsx

As a popover

Inline, in the detail panel

Time40 of 40

It is late by 2 h.

Orders blocked14 of 30

24 orders are waiting on it.

Impact10 of 87

Customers will feel it.

Time 40 + Orders 14 + Impact 10 = 64

64, 60 or higher, means Act now.

Ranks above Label printer offline at Pack 7 because it scores higher (64 to 62).

The truck clock

Carrier cutoffs as capsules: a filling track, a rolling countdown, and the orders at risk. Reference material in a rail that holds nothing loud and nothing clickable. The rail and the strip are one component.

components/relay/truck-clock.tsx

Stacked, in the rail

UPS GroundDoor 14

Leaves in 50 min

236 orders at risk

Amazon Logistics linehaulDoor 9

Leaves in 1 h 35 min

38 orders at risk

FedEx ExpressDoor 3

Leaves in 3 h 20 min

34 orders at risk

USPSDoor 6

Leaves at 15:30

All orders on track

Strip, below 1280

UPS GroundDoor 14

Leaves in 50 min

236 orders at risk

Amazon Logistics linehaulDoor 9

Leaves in 1 h 35 min

38 orders at risk

FedEx ExpressDoor 3

Leaves in 3 h 20 min

34 orders at risk

USPSDoor 6

Leaves at 15:30

All orders on track

The all-clear

The one screen that is allowed a gradient, because it is rare, it is a finish line, and it never competes with a ranking. One sentence, and what got done today.

components/relay/all-clear.tsx

You're all caught up.

4 done today.

  • Answered Luis about bin P2 B00909:41
  • Confirmed FedEx pickup window08:15
  • Cleared night shift hold on order #471907:30
  • Relabeled 3 damaged cartons06:52

Empty and error states

Every list, the rail and the sheet has a designed state. An error is the empty state's shape with a neutral icon, because red is not on the colour whitelist. A rail state never carries an action; a list or a sheet can.

components/ui/empty-state.tsx · error-state.tsx

List, empty

Needs you0

Nothing needs you right now.

This list fills when someone is stuck, unassigned, or asks for help.

Rail, empty, no action

No trucks left today

Sheet, empty

Select an update to read it here.

Sheet, error

This item isn't in the queue anymore.

It may have been completed, reassigned, or the link is wrong.