Timeline
Chronological activity grouped by day, with typed events and connectors.
Playground
Activity on a deal, grouped by day with relative times for today. Filter by event type, or load older pages; they arrive after a short skeleton.
Today
Deploy pipeline shipped release 4.2.1 to production
a3f9c2eReady in 1m 42sPriya Raman moved Acme Corporation renewal
ReviewApprovedMarcus Chen commented on Acme Corporation renewal
Legal signed off on the SSO clause. We can send the order form today.
Lena Fischer emailed Northwind
Subject: Renewal pricing for 40 seats
Yesterday
Priya Raman attached a file to Acme Corporation renewal
Lena Fischer moved Acme Corporation renewal
NegotiationReviewDeploy pipeline failed to deploy to staging
9be41d0Type check failed in billing/invoice.ts
Friday, Sep 25
Lena Fischer commented on Acme Corporation renewal
Sent the revised quote. Waiting on procurement.
Lena Fischer created the deal Acme Corporation renewal
Props
1import { Timeline } from "@/components/ui/timeline"23<Timeline4 events={events}5 filters={["comment", "status", "file", "deploy", "email", "created"]}6 onLoadOlder={loadOlder}7 hasMore={cursor !== null}8/>States
One event row in each state. Rows highlight on hover; attachments and links inside a row take focus.
Marcus Chen commented on Acme Corporation renewal
Legal signed off on the SSO clause. We can send the order form today.
DefaultrestPriya Raman moved Acme Corporation renewal
ReviewApproved
Hover:hoverPriya Raman attached a file to Acme Corporation renewal
Focusattachment :focus-visible- Loading
aria-busy This comment was deleted by its author.
DisableddeletedDeploy pipeline failed to deploy to staging
9be41d0Type check failed in billing/invoice.ts
Errorfailed deployDeploy pipeline shipped release 4.2.1 to production
a3f9c2eReady in 1m 42s
Successdeploy ready
Examples
The compact variant for side panels, and project phases as a horizontal milestone timeline that scrolls inside its frame on phones.
Northwind customer portal
Recent activity
Deploy pipeline shipped release 4.2.1 to production
Priya Raman moved Acme Corporation renewal to Approved
Marcus Chen commented on Acme Corporation renewal
Lena Fischer emailed Northwind
Priya Raman attached a file to Acme Corporation renewal
Keyboard
- Move through filters, attachments and Load older
- Tab
- Toggle a filter or load older events
- EnterorSpace
- Scroll the milestone timeline once focused
- ←or→
Semantics and ARIA
- Each day is a
<section>labelled by its heading, with events in an ordered list, so screen readers can jump by day and hear the count. - Times are
<time datetime>with the full date in a tooltip; relative labels are computed from a fixed date, so server and client agree. - Filter chips are toggle buttons with
aria-pressed. Icons are decorative; the sentence carries the event type. - Load older sets
aria-busyon the list and a polite status announces how many events arrived. - The milestone row is a focusable, labelled region that scrolls on its own, and the current phase has
aria-current="step".