Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Timeline Hero Block for React

A start-aligned hero with a headline, a Shine Button and an outline action over a closing band of four milestone rows on a vertical hairline, shipped, current and planned.

Framework
UI library

Preview

Preview width

Installation

Part of Pro
Pro unlocks the code and one-line install of every Pro button and text effect, plus the MCP for your AI editor.
Have Pro already? Sign in to open it.Opens here as soon as you're Pro.

Overview

Tell your product story with a timeline hero. An announcement pill links to your roadmap above a headline, a sentence, a Shine Button and an outline action. Under them a closing band between the page's solid rails, with its own rule and + marks, holds the timeline: four rows split by hairlines, a vertical hairline running down the band with a dot on it for each row. Shipped milestones have a filled dot with a check, the current one a ringed dot, a tinted row and a Current badge, and the planned one a dashed dot and a Planned badge. The time label sits on one side of the line and the title and description on the other; on a phone the line moves to the start edge and the label sits above the title. It's built from Announcement, Status, Badge, Shine Button, Button and Guides, with Lucide icons and a staggered CSS entrance that stays still under reduced motion. The copy speaks for Cairn, a developer platform. Made for company history pages, product roadmaps, about sections and changelog overviews, where showing progress and momentum builds trust.

FAQ

How do I put my own milestones on the timeline?

Edit the MILESTONES array at the top of the file. Each milestone has a when label, a title, a description and a stage: "shipped", "current" or "planned". The stage picks the dot from the DOT table, the badge beside the label and the tint of the current row, so there's nothing else to change. The list takes any number of milestones; the line runs the full height of the band, and each row fades in 90 ms after the one before.

Why do the milestones say “Month 4” and “This quarter” instead of dates?

Fixed dates go stale: a "current" milestone dated last year makes the whole page look abandoned. Labels relative to your launch ("Month 4") or to today ("This quarter", "Next quarter") stay true until you change the stages. If you'd rather show real dates, put them in when and update the stages when you ship, or render the list from your roadmap data so it moves on by itself.

How do screen readers read the timeline?

The milestones are an ordered list, so a screen reader announces four items in order. Each title is an h2 under the page's h1, so the milestones can be reached by heading. The stage is text, not only a mark: the Current and Planned badges are read as they're shown, shipped milestones carry a visually hidden "Shipped", and the current item is marked aria-current="step". The line and the dots are decorative and hidden from assistive technology.

Why isn't the planned milestone faded out?

Fading a whole row to 60% opacity, as many timelines do, drops its description below the 4.5:1 contrast that body text needs. Here the planned row keeps full-strength text and says it's ahead in other ways: a dashed dot and an outline Planned badge. If you want it quieter, dim its dot, not its text.

How does the timeline fit on a phone?

It's one column at every width: below the md breakpoint the line and the dots sit at the start edge, with the time label above each title and the text taking the rest of the row; from md the label has its own column before the line. The headline drops from text-6xl to text-4xl and the buttons wrap at the narrowest widths. In right-to-left languages the line, the dots and the padding move to the other edge, since they use logical properties (start, ps).

When should I use a timeline hero instead of a changelog or steps hero?

Use a timeline when milestones span months or years and you want to show where the product has been and where it's going. Use a changelog for versioned releases with their details, and a steps hero for a process the visitor follows, such as sign up, connect and deploy.

  • Pro

    Changelog Hero

    Updates and timelines

    A compact centred hero for a build platform that ships weekly, over three release cells with hairlines that overshoot their corners.

  • Pro

    A compact centred how-it-works hero for an invoicing app: a headline, a Shine Button with an outline action and trust copy over a closing band of three step cells, each with a small drawing of its screen.

  • Pro

    Changelog Preview Hero

    Updates and timelines

    A split hero for a code editor that releases on a schedule: the headline on one side, a ruled ledger of the four latest releases across a divider.

  • Pro

    Centered Progress Bar Hero

    Updates and timelines

    A compact centered launch hero with a full-width progress bar that fills on load, four milestone cells divided at the quarter marks, the Shine Button and a second action.

  • Pro

    Counter Stats Hero

    Stats and live data

    A compact, start-aligned hero for an email API on solid rails: a headline, a Shine Button and an outline button, then four counters in separate cells whose hairlines overshoot their corners.

  • Pro

    Reverse Split News List Hero

    Updates and timelines

    A reverse split hero on drafting lines for a team docs workspace: a greyscale product illustration beside an announcement pill, the headline, a ruled list of the latest updates as links, a Shine Button and a second action.