Skip to content
Data & ChartsPro

Timeline Chart

Timeline chart: a Gantt chart with milestones and a Today line, and an event timeline.

Usage

Launch plan

Launch plan: 7 tasks from W40 to W56, today W49.
Launch plan, data table
labelStartEnd
DiscoveryW40W43
DesignW42W46
APIW44W50
Web appW46W52
Mobile appW48W53
QAW51W54
LaunchW54W54

Installation

Timeline Chart comes with WunderUI Core and Pro, in the package from your plan. See the plans.

Then import what you need:

tsx
import {
  TimelineChart,
  TimelineChartProps,
  TimelineChartVariant,
} from "@wunderui/react"

Examples

Gantt

Launch plan

Launch plan: 7 tasks from W40 to W56, today W49.
Launch plan, data table
labelStartEnd
DiscoveryW40W43
DesignW42W46
APIW44W50
Web appW46W52
Mobile appW48W53
QAW51W54
LaunchW54W54

Event Timeline

Company timeline

Company timeline 2026: Jan 12 v4.0 release; Feb 20 Pricing update; Apr 02 SOC 2 Type II; May 18 Mobile app; Jul 07 EU region; Aug 25 AI assistant; Dec 01 v5.0 (planned).
Company timeline 2026, data table
labelDate
v4.0 releaseJan 12
Pricing updateFeb 20
SOC 2 Type IIApr 2
Mobile appMay 18
EU regionJul 7
AI assistantAug 25
v5.0 (planned)Dec 1

State – Loading

Launch plan

Launch plan: 7 tasks from W40 to W56, today W49.

In context

How the component is used inside real screens — the same compositions as the Usage section of the Figma page.

Launch Plan

Weeks of the launch with today's position.

Launch plan

Weeks 40 to 54, today in week 49

Launch plan: 7 tasks from W40 to W56, today W49.
Launch plan, data table
labelStartEnd
DiscoveryW40W43
DesignW42W46
APIW44W50
Web appW46W52
Mobile appW48W53
QAW51W54
LaunchW54W54

API Reference

PropTypeDefault
variant"gantt" | "event-timeline""gantt"
items{ label, start?, end?, at?, caption?, group? }[]—
groups · today · todayLabel · domaingroups · number · string · [from, to]—
timeFormatter(v: number) => string—
state"ready" | "loading" | "empty" | "error""ready"
hiddenSeries · animate · animationKeystring[] · boolean · string | number—
activeIndexnumber | null—
animateboolean—
animationKeystring | number—
classNamestring—
defaultActiveIndexnumber | null—
descriptionstring—
domainreadonly [number, number]—
groupsreadonly { key: string; label?: string; color?: ChartColor }[]—
heightnumber—
hiddenSeriesreadonly string[]—
labelstring—
onActiveIndexChange(index: number | null) => void—
onRetry() => void—
todaynumber—
todayLabelstring"Today"
widthnumber—

Theming

The CSS variables this component reads. Set one on any wrapper to restyle everything inside it. More in Theming.

VariableUsed forDefault
Color
Stroke#F1F5F7dark #323438
Stroke#D9E1E7dark #323438
Value#FFFFFFdark #1C1D20
Value#D42A2D
Fill#000000dark #FFFFFF
Fill#D42A2Ddark #F8ADBC
Fill#454648dark #D1D1D1
Fill#6E6E70dark #A2A3A3
Motion
Duration250ms
Easingcubic-bezier(0.22, 1, 0.36, 1)