docs / patterns / roadmap-timeline
RoadmapTimeline
shipped, in progress and next, as one row of cards under a connector track that fills up to where you are now.
intensity · structuresrsc · server
provenance
shaped from sisu-pluslayer
core / patternsintensity
structures · organizes a region, stays out of the contentcomposition
a landing page roadmap or a docs release boardany milestone count; node positions come from the countnot a changelog. a milestone holds a handful of items, not a logat most one current milestone. the fill stops at the first it findsa11y
milestones are an ordered list with real headings · the track isaria-hidden, the status pills say the same thing in wordsjest-axelive demo · try it out
- 0.1Shipped
Foundations
Tokens, themes, and the first five primitives.
- Semantic token roles
- kajo and sisu themes
- Registry pipeline
- 0.2In progress
Patterns
Composed blocks extracted from two live apps.
- Bento grid
- Page header
- Roadmap timeline
- 0.3Planned
Showcase
The motion layer.
- Fog sphere
- Page transitions
customize
currentwhich milestone is in progress; earlier ones ship, later ones wait
itemsthe checklist inside each card
hideTrackdrops the connector track above the cards
headingLevellevel of each milestone title
usage
import { RoadmapTimeline } from "@usva-ui/react/patterns/roadmap-timeline";
<RoadmapTimeline
milestones={[
{ version: "0.1", status: "Shipped", title: "Foundations", tone: "done", items: [{ label: "Semantic token roles" }, { label: "kajo and sisu themes" }, { label: "Registry pipeline" }] },
{ version: "0.2", status: "In progress", title: "Patterns", tone: "current", items: [{ label: "Bento grid" }, { label: "Page header", featured: true }, { label: "Roadmap timeline" }] },
{ version: "0.3", status: "Planned", title: "Showcase", tone: "planned", items: [{ label: "Fog sphere" }, { label: "Page transitions" }] },
]}
/>props
| prop | type | default | notes |
|---|---|---|---|
| milestones | RoadmapMilestone[] | — | each one is { version, status, title, body, items, tone }. |
| tone | "done" | "current" | "planned" | "planned" | per milestone. semantic, not decorative: it drives the connector fill, the card weight and the marker. |
| items | { label, featured? }[] | — | a featured item drops its marker and gets its own accent card. |
| markerIcon | ReactNode | — | replaces the tick drawn inside a shipped item's marker. |
| headingLevel | "h2" | "h3" | "h4" | "h3" | level of each milestone title. pick it to fit the page outline. |
| hideTrack | boolean | false | hides the connector track above the cards. |
get it
bun add @usva-ui/reactusage
import { RoadmapTimeline } from "@usva-ui/react/patterns/roadmap-timeline";
<RoadmapTimeline
milestones={[
{ version: "0.1", status: "Shipped", title: "Foundations", tone: "done" },
{ version: "0.2", status: "In progress", title: "Patterns", tone: "current" },
{ version: "0.3", status: "Planned", title: "Showcase", tone: "planned" },
]}
/>