Milestones

Horizontal Roadmap Milestones

Roadmap section with four milestones on a horizontal rule, each with a marker, date, title and line of text. The current milestone carries a Now label.

Free, MIT licenseOpen in Browse
import { Heading } from "@/components/editorial/heading"
import {
  Milestone,
  MilestoneContent,
  MilestoneDate,
  MilestoneDescription,
  MilestoneLabel,
  MilestoneMarker,
  MilestoneMeta,
  Milestones,
  MilestoneTitle,
} from "@/components/editorial/milestones"
import {
  Section,
  SectionContent,
  SectionHeader,
  SectionTitleGroup,
} from "@/components/editorial/section"

// The copy: change text here, not in the markup.
const COPY = {
  title: "Roadmap",
  label: "Now",
} as const

const MILESTONES = [
  {
    datetime: "2026-06-17",
    date: "June 2026",
    name: "One registry",
    description: "Every block from a single install.",
  },
  {
    datetime: "2026-09-01",
    date: "September 2026",
    name: "Parts",
    description: "Sections, pricing and stats you can rearrange.",
    current: true,
  },
  {
    datetime: "2026-11-01",
    date: "November 2026",
    name: "Registers",
    description: "Palettes as short lists of overrides.",
  },
  {
    datetime: "2027-01-01",
    date: "January 2027",
    name: "Pages",
    description: "Whole pages as single installs.",
  },
] as const

export default function RoadmapMilestones01() {
  return (
    <Section aria-labelledby="milestones-title">
      <SectionHeader>
        <SectionTitleGroup>
          <Heading id="milestones-title">{COPY.title}</Heading>
        </SectionTitleGroup>
      </SectionHeader>
      <SectionContent>
        <Milestones cols={4} rule="horizon">
          {MILESTONES.map((m) => (
            <Milestone key={m.name} current={"current" in m}>
              <MilestoneMarker />
              <MilestoneContent>
                <MilestoneMeta>
                  <MilestoneDate dateTime={m.datetime}>{m.date}</MilestoneDate>
                  {"current" in m ? (
                    <MilestoneLabel>{COPY.label}</MilestoneLabel>
                  ) : null}
                </MilestoneMeta>
                <MilestoneTitle>{m.name}</MilestoneTitle>
                <MilestoneDescription className="text-sm/7">
                  {m.description}
                </MilestoneDescription>
              </MilestoneContent>
            </Milestone>
          ))}
        </Milestones>
      </SectionContent>
    </Section>
  )
}

Installation

pnpm dlx shadcn add @01orbital/roadmap-milestones-01
npx shadcn add @01orbital/roadmap-milestones-01
yarn shadcn add @01orbital/roadmap-milestones-01
bunx --bun shadcn add @01orbital/roadmap-milestones-01

Free under the MIT license. Add the @01orbital registry to components.json once (install guide), then run the command.

It lands at components/blocks/milestones/roadmap-milestones-01/index.tsx, as source you own and edit.

Usage

import RoadmapMilestones01 from "@/components/blocks/milestones/roadmap-milestones-01"

export default function Example() {
  return <RoadmapMilestones01 />
}

Dependencies

Registry pieces it installs with it: