JourneyTimeline
A retrospective chronicle (focus + context): an ordered record of what happened and where things stand — shipment tracking, audit trails, billing runs, travel logs. One node is in focus and shows rich detail inline or in a stable readout panel; the rest stay quiet context rows along a first-class time axis. Reach for Stepper for prospective wizards and Tab for peer views.
- 3 Jun2 days · validation
- 5 Junmanual review
- 6 Jun
Full record for “Statements” renders here while the node is in focus.
-
02 Examples
Vertical chronicle with inline detail
- 3 Jun 3 Jun2 days · validation
- 5 Jun 6 Junmanual review
- 6 Jun
Full record for Statements — assignments, anomalies and the audit trail live here.
dispatch queue
Stable readout with detail="panel"
- Mon
- Tue
- Wedcustoms clearance
-
-
In transit
Scans, carrier and location history for this stage.
customs clearanceHorizontal lifecycle
- 1 Mar
- 5 Mar
- 19 Mar
Invoice events during “Open” — issued, reminders, payments.
Cockpit rows: glyph markers, attention + trailing
No help requested yet.
-
- must · blocks close
- Consumption Waits for heating Pending
-
Why “Expenses & distribution” matters, its consequences and the next action live here.
- optional
03 Statuses
Each node's status maps to a semantic dot: complete (success,
filled), active (primary, ringed), pending (hollow), attention (hollow on the warning token — worth a look, does not block), blocked (danger — the title turns danger too, so colour is never the only
cue) and skipped (muted). The connector leaving a completed node reads as
“travelled”. Set focusable: false for pure waypoints — they render a marker and label
but never take focus and are skipped by keyboard navigation.
All statuses
-
-
This node is
active— its detail renders only while focused. - Automatic hold System step Pending
-
-
-
-
04 JourneyTimeline vs. Stepper vs. Tab
Three components, three different jobs — the overlap is smaller than it looks:
JourneyTimeline
Retrospective observation. An ordered record of what happened / where
things stand: shipment tracking, audit trails, billing runs, travel logs. Time (meta) is the first axis; connectors and segment labels describe the stretches between events.
Focus reveals detail — it never advances a process.
Stepper
Prospective process. A wizard the user walks through: checkout, onboarding, multi-step forms. Steps are tasks to complete (often with embedded inputs), progress moves forward, and the component may gate navigation. No time axis — the user is the timeline.
Tab
Peer views. Unordered, equivalent surfaces of one thing — Account / Billing / Team. No sequence, no status, no chronology. If reordering the items would change their meaning, they are not tabs.
Rule of thumb: does each item carry a status and does their order tell a story? JourneyTimeline. Does the user complete the items one by one? Stepper. Are the items just alternative views? Tab.
05 Customization
Every family member supports unstyled, slotClasses and preset. Slots: base, rail, node, metaColumn, meta, markerColumn, marker, connector, content, card, header, trigger, trailing, labelGroup, title, subtitle, segment, detail, detailInner, detailContent and panel.
Restyle markers and the docked panel
06 Accessibility
The rail is an ordered list. Each node carries aria-current="step" while its
status is active; the focusable trigger exposes aria-expanded and aria-controls for its detail region (a per-node inline region, or the shared
panel in panel/horizontal mode). The status is announced through a visually-hidden label, so
the dot markers stay decorative — including any glyphs rendered through the marker snippet.
trailing content renders outside the trigger button, as a sibling in the header
row: buttons and links inside it are valid HTML, become regular tab stops after the header, and
activating them never changes the focused node. Arrow-key roving stays on the node headers only.
Keyboard
- ↑ / ↓ (vertical) or ← / → (horizontal) move the roving focus between node headers without changing the focused node.
- Home / End jump to the first / last focusable node.
- Enter / Space put the header's node in focus.
Motion: expand/collapse runs on the motion-duration tokens, which collapse to 1 ms under prefers-reduced-motion: reduce. When activating a node makes another card
collapse above it, the component counter-scrolls so the activated header stays visually
stationary — real user scrolling cancels this immediately.
07 API Reference
No matching properties |