Skip to content

Data display

ITimeline

A vertical run of events in order — an audit trail, a delivery's progress, a document's history.

  1. Invoice created
  2. Sent to client

    Delivered to the billing contact.

  3. Viewed
  4. Paid

    Card ending 4021.

Not a stepper

A timeline is a record of what already happened. For a process the reader is moving through, with a current position and steps still to come, use IStepper.

Icons

An icon turns the dot into a larger ringed circle, tinted to match the variant.

  1. Invoice created
  2. Sent to client
  3. Payment failed

    Insufficient funds. Retried automatically.

  4. Paid

Variants

neutral, primary, success, warning, danger and info. Set one on the timeline for the default and override it per item. Keep the meaning in the title as well, so it survives without the colour.

Time

time is rendered exactly as given, so format it where you know the reader's locale. Add datetime — an ISO string — and it becomes a machine-readable <time> element.

ts
const paid = {
  title: 'Paid',
  time: '14:03', //                      what the reader sees
  datetime: '2026-08-22T14:03:00Z', //   what a machine reads
}

Sizes

  1. Invoice created
  2. Sent to client

    Delivered to the billing contact.

  3. Viewed
  1. Invoice created
  2. Sent to client

    Delivered to the billing contact.

  3. Viewed

Props

PropTypeDefaultDescription
itemsTimelineItem[][]
size'sm' | 'md''md'
variantTimelineVariant'neutral'Applied to any item without its own
unstyledbooleanSkip built-in classes
ui{ root?, item?, rail?, marker?, line?, content?, header?, title?, time?, description? }Per-slot class overrides

TimelineItem

FieldTypeDescription
titlestringWhat happened
descriptionstring
timestringShown as given
datetimestringMachine-readable, for the <time> element
iconIconLike
variantTimelineVariant

Slots

SlotPropsDescription
item{ item, index }Replaces an item's content
marker{ item, index }Replaces the dot or icon

Accessibility

The events render as an ordered list, so a screen reader announces how many there are and where it is in them. The connecting spine is drawn per item, and the last item omits it.