Timeline

data-display

Vertical chronological feed of events (commits, deploys, approvals, publishes, pipeline runs) with type filtering and status badges. Pipeline-generated via design-to-code automation.

Import

typescript
import { Timeline } from "packages/ui/src";

Props

TimelineProps

PropTypeRequired
eventsTimelineEvent[]Yes
filtersEventType[]No
classNamestringNo

Examples

Pipeline

Design-to-Code Pipeline Started

Timeline component — Research → Stitch → Penpot → Tokens → Code

Success
Deploy

Production Deploy — cms.chem.dev

Next.js build + PM2 restart, all 10 routes returning 200

Success
Commit

test(ui): add 33 component unit tests

vitest + @testing-library/react for all 10 shared components + registry

Approval

Design Drift Score: 100/100

All 10 components pass token completeness, usage, and metadata checks

Success
Commit

feat(tokens): add 17 Timeline tokens (196 total)

Component-specific tokens for line, event, badges, filters extracted from Stitch design

Publish

Architecture Documentation Published

606-line architecture doc + 6 ADRs covering brain integration, deployment, tokens

Pipeline

Stitch Screen Generated

Timeline Dashboard screen via Gemini 3.1 Pro — Synthetica Enterprise design system

Success
Deploy

CI/CD Pipeline Configured

5 GitHub Actions jobs: build-web, build-cms-theme, unit-tests, design-drift, smoke-tests

Pending
Commit

feat(web): interactive component playground

ButtonPlayground, AlertPlayground, MetricsPlayground with live prop controls

Approval

E2E Test Plan — 5/5 Passed

Full tool chain validated: token pipeline, component generation, MCP integration

Success

Metadata

Component Metadata
Familydata-display
FrameworksNext.js, Astro/EmDash
DescriptionVertical chronological feed of events (commits, deploys, approvals, publishes, pipeline runs) with type filtering and status badges. Pipeline-generated via design-to-code automation.
PropsTimelineProps (events: TimelineEvent[], filters?: EventType[], className?: string)
Statesdefault, filtered, empty
A11y
  • role=feed on container
  • aria-posinset/aria-setsize on events
  • aria-pressed on filter buttons
  • Keyboard navigable filters
Responsive
  • Full-width on all breakpoints
  • Stacked layout
Motion
  • Filter transition 150ms ease
Token Dependencies
  • components.timeline.lineColor
  • components.timeline.eventBackground
  • components.timeline.eventBorder
  • components.timeline.eventBorderRadius
  • components.timeline.eventPadding
  • components.timeline.iconBackground
  • components.timeline.iconColor
  • components.timeline.titleColor
  • components.timeline.descriptionColor
  • components.timeline.timestampColor
  • components.timeline.badgeSuccessBg
  • components.timeline.badgeErrorBg
  • components.timeline.badgeWarningBg
  • components.timeline.badgePendingBg
  • components.timeline.badgeText
  • components.timeline.filterActiveBg
  • components.timeline.filterActiveText
Content Slotsevents (TimelineEvent[])
CMS Bindings
  • Event data from CMS collection
  • Filter types from CMS config
Test Cases
  • Renders all events
  • Filters by event type
  • Shows status badges
  • Empty state message