shadcn.io is not affiliated with official shadcn/ui
Storage Plans Pricing Block for React
Three archival storage plans as cells of one ruled band, each led by an oversized capacity figure with restore time and free restores under it, prices that roll on a monthly and annual switch.
Installation
Overview
Lead with a single dominant number per tier using this capacity-first pricing section, shown here for Coldvault Archive, an archival storage service. A compact header row holds the title on the left and a Segment Group for monthly or annual billing on the right, and the three plans sit as cells of one band between the page-column rails that Guides draws and that continue into the blocks above and below, divided by single hairlines rather than separate cards. Each cell puts its storage, 1, 5 or 20 TB, in an oversized figure above a two-column Data List of how soon a restore starts and how much restoring is free. Prices roll to their new amount with Sliding Number, and every cell ends with a Shine Button call to action and a checklist. The recommended plan's cell is shaded and carries a Most popular outline Badge and the only primary button. On a phone a second segment group picks one plan at a time, with the popular plan selected first, so the call to action is within the first screen and a half. Built with Guides, Badge, Data List, Segment Group, Sliding Number, Shine Button and Lucide icons, with CSS transitions only. For storage, bandwidth, seat or request-based products where buyers compare tiers by one number first.
FAQ
How do I change the capacity figures, metrics and prices?
Edit the PLANS array at the top of the file. Each plan has a capacity with its value and unit for the large figure, retrieval and freeRestores for the two metrics under it, a monthly price and an annual one (the monthly amount when billed yearly), the features as short strings, and the call to action's cta and href. Swap the unit for GB, seats or requests and rename the "Archive storage", "Restore starts" and "Free restores" labels in the markup to fit your product.
Why do the cells line up when their descriptions wrap differently?
From the lg breakpoint each cell spans four rows of the grid and shares them through CSS subgrid: the heading block, the capacity figure with its metrics, the price with its button, and the feature list. A longer description in one cell pushes the same row down in all three, so the capacity figures, prices and buttons stay level. The badge sits beside the plan's name, so it never changes a row's height. Below lg only one cell shows, in the same place.
How does it work on a phone?
Below lg a second switch named Plan, with one option per plan, shows a single plan at a time, and the popular plan is selected first. On a phone all three cells share one grid cell and the ones not shown are invisible, so switching plans never changes the block's height, and a screen reader and the Tab key only meet the plan on show. From lg the switch disappears and all three cells show side by side. The billing switch is always visible, and it changes the price in every cell, shown or not.
How do I send each plan to checkout?
Each call to action is a real link to its plan's href. It's a ShineButton with render set to an a element and nativeButton={false}. Point it at your checkout route with the plan and the billing period, for example /checkout?plan=vault&billing=annually, and bill restores beyond the free allowance as metered usage on your payment provider's side.
Is it accessible to keyboard and screen reader users?
The billing switch is a radio group named "Billing period": Tab reaches the selected option and the arrow keys change it. The phone plan switch works the same way and is named "Plan". Each plan is an h3, the restore pair is a description list, and the feature lists are real lists. Prices say "per month" in words to screen readers, only the billing line that applies is read, and each call to action adds its plan's name, as in "Start free trial, Vault plan".
When should I lead with a capacity figure instead of a feature list?
Lead with the figure when one number, such as storage, seats or monthly requests, is what separates the tiers and what buyers compare first. When the plans differ mostly in features, the figure only adds height: a three-column plan layout or a comparison table shows those differences better.
Related
- Pro
Column Chart Picker Pricing
Plan findersFour backup plans drawn as columns of a storage chart, to scale: choosing a column shows its plan's price, price per terabyte, features and call to action beside the chart.
- Pro
Metric Hero Rows Pricing
Plan rowsFour CDN plans as rows of one hairline table, each led by its monthly transfer: a bar to scale across the row with the allowance written big at its end, then the price and a call to action.
- Pro
Metric Toggle Tiles Pricing
Charts and figuresThree plan tiles for a push-notification service under a large four-way quota switch: pick pushes, devices, segments or seats and every tile's headline figure rolls to that plan's limit. A snap carousel on phones.
- ∞Pro
Three Columns Stat Chips Pricing
Charts and figuresThree agency plans in columns that share their hairlines, each headed by its client capacity as a huge numeral over a chip with its team seats, under a monthly and annual switch.
- Pro
Contrast Highlight Pricing
Plan cardsThree plans for a cloud IDE in one hairline band, with a contrast highlight that follows the theme: the recommended plan is one raised card among flat cells, with a free tier, prices that roll under a monthly and yearly switch, and a plan switch on phones.
- Pro
Billing Toggle Pricing
Billing switchesThree plan cards under a monthly and yearly switch that wears its saving in the header row, with prices that roll to their new amount and each plan a card in a card.