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· Blocks 140 orders for UPS 11:3050 min

Label printer offline at Pack 7

140 orders need labels before the UPS truck leaves at 11:30.

Act now1
Up next3
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

Label printer offline at Pack 7

Blocks 140 orders for UPS 11:30

Why is this first?

Time30 of 40

It must be ready for the UPS Ground truck at 11:30.

Orders blocked22 of 30

140 orders are waiting on it.

Impact10 of 87

Customers will feel it.

Time 30 + Orders 22 + Impact 10 = 62

62, 60 or higher, means Act now.

Ranks above Lithium battery orders missing hazmat labels because it scores higher (62 to 61).

Next step: Reroute orders to Pack 9

Source & history

SourceSystem
StatusIn progress
DueDue in 50 min
TruckUPS Ground leaves Door 14 at 11:30
Orders waiting140
Units affected212
  • Opened 10:22 from a system alert
  • Started by Priya at 10:24

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

Time30 of 40

It must be ready for the UPS Ground truck at 11:30.

Orders blocked22 of 30

140 orders are waiting on it.

Impact10 of 87

Customers will feel it.

Time 30 + Orders 22 + Impact 10 = 62

62, 60 or higher, means Act now.

Ranks above Lithium battery orders missing hazmat labels because it scores higher (62 to 61).

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.