1. Documentation
  2. Data display
  3. Timeline
ReadmenpmGitHub
  • Introduction
  • Installation
  • Theming
  • Icons
  • Accordion
  • Card
  • Scroll Area
  • Separator
  • Sidebar
  • Field
  • Label
  • Input
  • Textarea
  • Number Field
  • OTP Field
  • Select
  • Combobox
  • Checkbox
  • Radio
  • Switch
  • Slider
  • Toggle
  • Calendar
  • Date Picker
  • File Upload
  • Button
  • Copy Button
  • Dropdown
  • Command
  • Tabs
  • Breadcrumb
  • Pagination
  • Tree
  • Table
  • Data Table
  • Stat
  • Timeline
  • Avatar
  • Status Bar
  • Badge
  • Meter
  • Empty
  • Skeleton
  • Spinner
  • Toast
  • Dialog
  • Sheet
  • Popover
  • Tooltip
  • Text
  • Kbd
  • Code Block
  • Utilities
  • Design rules

Timeline

A vertical sequence of events on one continuous rail — deploys, audit entries, an incident.

Loading documentation…

Stat< PreviousAvatarNext >

Powered by heyo

On this page

UsageDensityDay separatorsPropertiesTimelineTimeline.ItemTimeline.Separator
  1. Deploying to productionnow

    Rolling out to fra1, waw1 and iad1.

  2. Build passed2m ago

    412 modules, 184 kB gzip.

  3. Pushed main@8f21c3d3m ago
<Timeline><Timeline.Item  active  tone="brand"  icon={IconRocket}  title="Deploying to production"  time="now">  Rolling out to fra1, waw1 and iad1.</Timeline.Item><Timeline.Item tone="success" icon={IconCircleCheck} title="Build passed" time="2m ago">  412 modules, 184 kB gzip.</Timeline.Item><Timeline.Item icon={IconGitBranch} title="Pushed main@8f21c3d" time="3m ago" /></Timeline>

The rail is one continuous line drawn by the list and masked at both ends, not a stack of per-item segments: segments leave hairline seams between entries that you can see the moment two markers have different tones.

It fades out at the bottom, because an event feed almost never ends — it just stops being loaded, and a line that stops dead implies otherwise.

Usage

tsx
import { Timeline } from "@heyo-sh/heyo-ui";<Timeline>  <Timeline.Item title="Build passed" time="2m ago" tone="success" /></Timeline>;

Density

full gives every entry an icon-sized marker. compact uses a dot on a hairline rail, which is what an audit log with fifty rows wants. Set it on the list; the items inherit it.

  1. deploy succeeded12:04
  2. cold start 1.2s12:03
  3. origin returned 50012:01
<Timeline density="compact"><Timeline.Item density="compact" tone="success" title="deploy succeeded" time="12:04" /><Timeline.Item density="compact" tone="warning" title="cold start 1.2s" time="12:03" /><Timeline.Item density="compact" tone="danger" title="origin returned 500" time="12:01" /></Timeline>

Day separators

Timeline.Separator is a heading between entries, and it is sticky — scrolling a month of deploys never leaves you wondering which day you are looking at.

  1. Today
  2. Deployed acme-api12:04
  3. Yesterday
  4. Rotated signing key18:20
<Timeline density="compact"><Timeline.Separator>Today</Timeline.Separator><Timeline.Item density="compact" title="Deployed acme-api" time="12:04" /><Timeline.Separator>Yesterday</Timeline.Separator><Timeline.Item density="compact" title="Rotated signing key" time="18:20" /></Timeline>

Properties

Timeline

density"full" | "compact"optional

full gives every entry an icon-sized marker; compact uses a dot on a hairline rail. It defaults to full.

Timeline.Item

titleReactNoderequired

The headline of the entry.

timeReactNodeoptional

Right-aligned and muted — a timestamp, a duration, an actor.

iconIconLikeoptional

Rendered inside the marker. It falls back to a dot.

tone"neutral" | "brand" | "info" | "success" | "warning" | "danger"optional

The marker's colour. It defaults to neutral.

activebooleanoptional

Draws attention to the entry that is still happening: the marker gets a slow halo and the row a faint tint.

density"full" | "compact"optional

Match the density set on the list.

childrenReactNodeoptional

The body under the title.

Timeline.Separator

childrenReactNodeoptional

A sticky heading between entries — usually a date.