Data display
ITimeline
A vertical run of events in order — an audit trail, a delivery's progress, a document's history.
- Invoice created
- Sent to client
Delivered to the billing contact.
- Viewed
- 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.
- Invoice created
- Sent to client
- Payment failed
Insufficient funds. Retried automatically.
- 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.
const paid = {
title: 'Paid',
time: '14:03', // what the reader sees
datetime: '2026-08-22T14:03:00Z', // what a machine reads
}Sizes
- Invoice created
- Sent to client
Delivered to the billing contact.
- Viewed
- Invoice created
- Sent to client
Delivered to the billing contact.
- Viewed
Props
| Prop | Type | Default | Description |
|---|---|---|---|
items | TimelineItem[] | [] | |
size | 'sm' | 'md' | 'md' | |
variant | TimelineVariant | 'neutral' | Applied to any item without its own |
unstyled | boolean | — | Skip built-in classes |
ui | { root?, item?, rail?, marker?, line?, content?, header?, title?, time?, description? } | — | Per-slot class overrides |
TimelineItem
| Field | Type | Description |
|---|---|---|
title | string | What happened |
description | string | |
time | string | Shown as given |
datetime | string | Machine-readable, for the <time> element |
icon | IconLike | |
variant | TimelineVariant |
Slots
| Slot | Props | Description |
|---|---|---|
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.