Content & Data
Timeline
Timeline is a vertical, chronological event list built on Content/Timeline Item rows — Default outlined-ring or Highlighted solid-dot markers, connector suppression purely positional.
Composed from Timeline Item rows — no top-level variants of its own
- React last updated
- 2026-07-19
- Documentation last updated
- 2026-07-19
- Accessibility target
- WCAG 2.2 AA (target)
- Version
- 0.1.0-beta
Known open questions
- Exact marker/connector pixel sizing, using one shared marker color across both states, and the Timestamp/Description secondary-text token choice are this implementation's own decisions where the given facts didn't specify them.
- No truncation is applied anywhere (Title, Timestamp, or Description) — Alert and Card don't truncate their titles either, and Figma's own reference shows the Description wrapping, not truncating, at 220px. List Item does truncate, but its single-line row density isn't comparable to Timeline's larger content blocks.
- An empty data array renders nothing (null) — no other collection component in this codebase (Table, Tree View, Bar Chart, Line Chart) has an established empty-state convention to follow instead.
Order status history
Default items use an outlined ring; Highlighted items use a larger solid dot. The connector line is suppressed purely by list position (only the last event), independent of state — and its length adapts to the longer, wrapping description in the second event.
Order #48213
- Order placed
Order #48213 received.
- Payment confirmed
The customer's original order was flagged for manual review after the automated fraud detection system detected an unusual shipping address mismatch. A support representative confirmed the details directly with the customer before the charge was captured.
- Shipped
Left the fulfillment center.
- Delivered
Left at front door.
Purpose
Anatomy
Variants and states
When to use
When not to use
Accessibility
Keyboard behavior
Common mistakes
Properties
Why is connector visibility based on position, not state?
How does the connector reach the next item's marker when a description is long?
Why no truncation on Title, Timestamp, or Description?
What happens with an empty data array?
Tokens used
Component API
| Prop | Type | Default | Description |
|---|---|---|---|
| data | { title: string; timestamp: string; description: string; state?: "default" | "highlighted" }[] | — | Chronological list of events, in display order. state defaults to "default". |
React example
import { Timeline } from "@/components/ui";
const events = [
{ title: "Order placed", timestamp: "Jan 3, 9:14 AM", description: "Order #48213 received." },
{
title: "Payment confirmed",
timestamp: "Jan 3, 9:16 AM",
description: "Charge captured successfully.",
state: "highlighted",
},
{ title: "Delivered", timestamp: "Jan 6, 2:41 PM", description: "Left at front door." },
];
export function Example() {
return <Timeline data={events} />;
}