Skip to content
Protocore Design Systemv1.6.9

/// Data Display

Timeline

A vertical event history with square tone markers on a hairline connector — mono timestamp, sans body.

import { Timeline } from "@protocore/pds";
View as Markdown

Basics

Pass an events array. Each node gets a square tone marker on the connector, a sans title, an optional tone-coloured state word, and a right-aligned timestamp — pass a RelativeTime atom rather than a formatted string.

  1. Settlement batch closedsettled
  2. FX rates refreshed
  3. Retry scheduled for payout po_3390pending

Composed items

Compose Timeline.Item children when a node carries more than a headline — a detail line and a trailing meta row of actor chips, references, or deltas. Pass actors as RoleChip and ids as CodeRef so the history reads in the same atoms as the rest of the console.

  1. Transaction reversedreversed

    Chargeback received from the issuing bank.

    operator
  2. Payout approvedapproved

    Two-person review completed.

    admin
  3. Payout drafted
    service-account

Marker tones

The marker tone (and the optional state word) carry each node's meaning, drawn from the same five-tone palette as Badge and StatusDot — so a red node means the same thing here as it does in a status column.

  1. Deploy startedrunning12:00
  2. Health checks passedhealthy12:02
  3. Canary latency elevatedwatch12:05
  4. Rollback triggeredfailed12:07
  5. Deploy closed12:08

When to use it

Timeline is for an ordered history of discrete events on one entity — an audit trail, a deploy log, a payout's lifecycle. The vertical connector and per-node markers make sequence and status legible at a glance.

It is structure only: it lays out the markers, titles, and timestamps and expects you to fill the slots with value atoms (RelativeTime for the timestamp, RoleChip for the actor, CodeRef for references). Reach for a DefinitionList instead when you're showing an entity's *current* fields rather than its history, and for Steps when you're guiding a user forward through a process rather than recording what already happened.

Usage

Do

  • Use it for a chronological event history on a single entity (audit, deploy, lifecycle).
  • Pass timestamps as a RelativeTime atom and actors as a RoleChip.
  • Keep marker tones consistent with Badge/StatusDot so colour means the same everywhere.
  • Put supporting references and deltas in the meta row, not the title.

Don't

  • Don't use it for an entity's current fields — that's a DefinitionList.
  • Don't use it as a forward-looking wizard — that's Steps.
  • Don't bury the timestamp in the title; it has a dedicated right-aligned slot.
  • Don't invent marker tones outside the five semantic ones.

Accessibility

  • Timeline renders an ordered list (`<ol>` / `<li>`), so assistive tech announces the events as a numbered sequence in order.
  • The markers and connector are `aria-hidden` decoration — meaning is carried by the title, the state word, and the timestamp text, never by marker colour alone.
  • Because each node is static text, keyboard behaviour comes only from interactive atoms you place inside (e.g. a copyable CodeRef in the meta row).

Timeline props

PropTypeDefaultDescription
classNamestring
eventsTimelineEvent[]Events as data, an alternative to composing `Timeline.Item` children.
styleCSSProperties

Related

  • StatusDotA small sharp square that encodes a status tone, with an optional live pulse.
  • RelativeTimeAn auto-updating "3m ago" timestamp on a real <time> element, with an absolute UTC tooltip.
  • RoleChipA static operator-role label — neutral ghost-outlined mono, never borrowing a status hue.
  • DefinitionListA dt/dd record display — mono uppercase label beside (or above) a typed value atom.