Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Timeline Tiers Pricing Block for React

Tenure discounts for a managed hosting plan on a vertical timeline beside a headline and a call to action that stay in view: each stop from day one to year five shows its discount, the price it brings and what it unlocks.

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

Reward long-term customers with this timeline tiers pricing section. On large screens the headline and the section's call to action sit in a column on the left and stay in view while the timeline scrolls past on the right, split by one hairline that meets the page's rails; on phones they stack above it, with the button first. A vertical line runs past four stops, Day 1, Year 1, Year 3 and Year 5+, each a round node beside a row divided from the next by a hairline. Every row shows the discount at that stop, the plan's price with the original struck through, and the benefits the stop unlocks. The visitor's current stop has a filled node, a tinted row and a You are here outline Badge, and the one filled button, a Shine Button, is the section's call to action. The section sits on the page's drafting lines, drawn by Guides: rails that continue into the blocks above and below, and a rule along its top edge with a plus on each crossing. Built with Badge, Guides, Shine Button and Lucide icons, with CSS transitions only. For loyalty programmes, tenure discounts, anniversary rewards and any pricing that improves the longer a customer stays.

FAQ

How do I change the stops, discounts and prices?

Edit STOPS at the top of the file: each stop has a name, the node's short abbr, a tagline, its discount in percent and the benefits it unlocks. BASE_PRICE is the plan's monthly price before any discount ($40, so the stops read $40, $36, $32 and $28), and each stop's price is worked out from it and rounded to whole units, so changing either keeps the struck and current prices right. PLAN names the plan and CTA is the button's label and link.

How do I mark where a signed-in customer is?

CURRENT holds the id of the stop to mark. Work it out from the customer's account age where the page renders, and pass it in instead of the fixed value: that stop gets the filled node, the tinted row and the You are here badge, and its list item carries aria-current="step", so screen readers announce it as the current step. For visitors who aren't signed in, point it at the first stop or at none.

How do I apply the discounts in billing?

The section only displays them. In your payment provider, create a coupon or price per stop and have a scheduled job (or your subscription webhook) move each customer to the next one on their anniversary. Keep STOPS and those prices in one place, such as a shared config, so the page never promises a discount the invoice doesn't give.

How does the timeline adapt to small screens?

The timeline is one column of rows at every width. Below the lg breakpoint the headline and button stack above it instead of sitting beside it, and the divider between them becomes a rule, so the call to action is on the first screen. Inside a row, the discount and the price sit side by side from sm up and stack below it, the discount figures step down from text-5xl to text-4xl, and the unlocks drop to one column. Nothing scrolls sideways, down to 320 px.

How does it read with a screen reader?

The stops are an ordered list, so they're announced in order with their count, and each row's name is an h3. The nodes and the line are decorative and hidden. Each discount is read as "10% off" rather than its minus sign, Day 1 reads "None yet" instead of the dash, and the struck price is read as "Regular price $40, now" before the new one.

When should I use a tenure timeline instead of tiered plans?

Use the timeline when the price changes over time for the same plan: loyalty discounts, anniversary rewards, price locks. Its line reads as a journey that parallel cards can't show. When customers choose between plans at one moment, use plan cards such as Three Columns Pricing, and for discounts tied to a commitment chosen up front, a commitment or contract-length layout.

  • Pro

    Milestone Discount Pricing

    Discounts and offers

    A slider-driven rate card for usage that gets cheaper at milestones: slide to a monthly volume and the label count rides the thumb, four rate zones show the current one, and the estimate and the next milestone update.

  • Pro

    Four big commitment chips, $500 to $50k a month, and in the same row the discount each earns at display size, over every unit's committed price against its on-demand price, with the call to action beside the result.

  • Pro

    Step Up Pricing

    Charts and figures

    An upgrade path drawn as a staircase: four tiers as steps rising along the line, each as tall as its price, with name, price and button on its tread and what it adds in its riser.

  • Pro

    Annual Savings Pricing

    Billing switches

    Three plans that show what yearly billing saves: each plan's head holds two bars, twelve monthly payments against one yearly payment, with the saving printed in the gap, under a monthly and yearly switch.

  • Pro

    Per-seat pricing that falls across four team-size brackets, drawn as a descending bar chart beside compact rows with the saving on each bracket and a call to action per row.

  • Pro

    Bundle Deal Pricing

    Discounts and offers

    Two products priced alone beside a bundle of both: the bundle leads on a raised card with the sum of the parts struck through, the bundle price at display size, and a list of features that collapses on phones.