Skip to content

Timeline

A vertical timeline for displaying chronological events with status dots, titles, timestamps, and descriptions.

Preview

Account created
28 Mar 2026, 09:15
User registered with email verification.
Profile completed
28 Mar 2026, 10:30
Added avatar, bio, and team assignment.
First project created
29 Mar 2026, 14:00
Set up "Project Alpha" with three collaborators.
Invite team members
Pending

Item states

StateDot styleUse case
DefaultHollow, border onlyUpcoming / pending events
ActiveBrand colour fillCurrent event
CompletedGreen fillPast events

Props

Timeline

PropTypeDefaultDescription
childrenReact.ReactNode--Timeline items

Timeline.Item

PropTypeDefaultDescription
titlestring--Event title
timestring--Timestamp or date
status'default' | 'active' | 'completed''default'Item state
childrenReact.ReactNode--Event description

Code example

React

tsx
import { Timeline } from '@thepace/lexicon/components';

<Timeline>
  <Timeline.Item title="Account created" time="28 Mar 2026" status="completed">
    User registered with email verification.
  </Timeline.Item>
  <Timeline.Item title="Profile completed" time="28 Mar 2026" status="completed">
    Added avatar, bio, and team assignment.
  </Timeline.Item>
  <Timeline.Item title="First project" time="29 Mar 2026" status="active">
    Set up "Project Alpha" with three collaborators.
  </Timeline.Item>
  <Timeline.Item title="Invite team" time="Pending">
    Send invitations to remaining team members.
  </Timeline.Item>
</Timeline>

Vanilla HTML

html
<div class="lex-timeline">
  <div class="lex-timeline__item lex-timeline__item--completed">
    <div class="lex-timeline__dot"></div>
    <div class="lex-timeline__title">Account created</div>
    <div class="lex-timeline__time">28 Mar 2026, 09:15</div>
    <div class="lex-timeline__body">User registered with email verification.</div>
  </div>
  <div class="lex-timeline__item lex-timeline__item--active">
    <div class="lex-timeline__dot"></div>
    <div class="lex-timeline__title">First project</div>
    <div class="lex-timeline__time">29 Mar 2026</div>
  </div>
  <div class="lex-timeline__item">
    <div class="lex-timeline__dot"></div>
    <div class="lex-timeline__title">Invite team</div>
    <div class="lex-timeline__time">Pending</div>
  </div>
</div>

CSS class reference

ClassPurpose
.lex-timelineContainer with vertical line
.lex-timeline__itemIndividual event
.lex-timeline__item--activeCurrent event (brand dot)
.lex-timeline__item--completedPast event (green dot)
.lex-timeline__dotStatus circle
.lex-timeline__titleEvent title
.lex-timeline__timeTimestamp
.lex-timeline__bodyEvent description

Accessibility

  • Use <ol> with role="list" for ordered events.
  • Status is conveyed by dot colour and can be reinforced with aria-label (e.g. "completed").
  • Timestamps should use <time datetime="..."> for machine-readable dates.

Guidelines

Do

  • Use for activity logs, onboarding flows, and event histories.
  • Show the most recent or current event prominently with the active state.
  • Keep descriptions brief — one or two sentences.

Don't

  • Don't use a timeline for steps that must be completed in order — use a Stepper instead.
  • Don't show more than 10–15 items without pagination or lazy loading.

Released under the MIT License. A product by the pace.