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.
Installation
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.
Related
- Pro
Changelog Hero
Updates and timelinesA compact centred hero for a build platform that ships weekly, over three release cells with hairlines that overshoot their corners.
- 123Pro
Centered Three-Step Process Hero
Updates and timelinesA 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 timelinesA 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 timelinesA 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 dataA 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 timelinesA 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.