shadcn.io is not affiliated with official shadcn/ui
Three Columns Pricing Block for React
The canonical three-column pricing section for a team knowledge base: Personal, Team and Company cells under a monthly and yearly switch, each outlined by hairlines that overshoot its corners, the recommended plan raised, one plan at a time on phones.
Installation
Overview
Present the standard pricing layout with this three-column pricing section, shown for Wikiwell, a team knowledge base priced per user. A one-line header sits left of a Segment Group billing switch, over three cells of equal height, each drawn with hairlines that run a little past its corners: a free Personal plan, a Team plan raised on a card background with a soft shadow and an outline Best value badge, and a Company plan. Paid prices roll to their new amount with Sliding Number when the period changes, every cell has a Shine Button call to action, with Team's holding the one primary button, and the feature lists build on each other, with a few info buttons that open a Toggle Tooltip for the details. Below lg one plan shows at a time, picked from a second Segment Group with Team first, and its feature list is cut after five behind an "All 7 features" button. Built with Guides, Badge, Button, Segment Group, Sliding Number, Toggle Tooltip, Shine Button and Lucide icons, with CSS transitions only. For SaaS pricing pages, subscription products and any three-tier offer that should scan at a glance.
FAQ
How do I change the plans, prices and feature lists?
Edit the PLANS array at the top of the file. Each plan has its name, description, monthly price, yearly price (the monthly amount per user when billed yearly), a featureHeading such as "Everything in Personal, plus", features with an optional tooltip, the call to action's cta and href, an optional badge and popular. A plan whose prices are 0 shows Free and "Free forever" instead of a price. CURRENCY is the symbol written before every price. The billing state starts on "yearly"; start it at "monthly" to open on the higher prices.
What does the popular flag change?
Only the emphasis: popular: true gives the cell a card background and a soft shadow and its button the default variant, while the others use the outline variant. The Best value pill comes from badge, set separately, so a plan can have a badge without the emphasis, or the other way round. The popular plan is also the one selected first on a phone.
How do I connect the plan buttons to checkout or sales?
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 the paid plans at your checkout route with the billing period in the URL, for example /checkout?plan=team&billing=yearly, and Company's Contact sales at your sales form.
Are the info tooltips usable on touch screens and with a keyboard?
Yes. Each info icon is a real button named "More about" and the feature, and it opens a ToggleTooltip on click, tap, Enter or Space rather than on hover only, so it works on phones too. Escape or a click outside closes it. Keep the tooltip text supplementary: the feature itself is already written in the list.
How does it work on a phone?
Below lg a Plan switch (a radio group named "Plan", Team selected first) chooses which cell shows. The others are made invisible but keep their room, so nothing in them takes focus and switching plans moves nothing below. A feature list longer than five items is cut there, with a button ("All 7 features") that has aria-expanded and opens the rest. The call to action sits above the list, so it lands within the first screen and a half of an iPhone.
How does it read with a screen reader?
The billing switch and the Plan switch are radio groups: Tab reaches the selected option and the arrow keys change it. Plans are h3 headings under the section's h2, features are lists with decorative check icons, and each price says "per user per month" in visually hidden text. Every call to action names its plan, as in "Start 14-day trial, Team plan". Prices aren't a live region, so switching the period doesn't interrupt what's being read.
When should I use three columns instead of a comparison table?
Use three columns for two or three tiers whose features build on each other: each cell answers "what do I get" at a glance and the raised cell guides the eye to the recommended plan. Switch to a comparison table, such as Comparison Table Pricing, when you have four or more plans or long feature lists that buyers compare row by row.
Related
- 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.
- Pro
Annual Savings Pricing
Billing switchesThree 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
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
Comparison Table Pricing
Comparison tablesFour plans compared feature by feature in one table whose hairlines meet the page rails, with a billing switch, a tinted popular column and, on a phone, a plan switch that keeps the feature column beside one plan.
- Pro
Two Plans Pricing
Plan cardsA free Personal plan beside the recommended Team plan as two cards in cards, with the monthly and annual switch in the header row and Team's price rolling to its annual amount.
- Pro
Accordion Plans Pricing
Plan rowsThree plan rows for an email API, each its own band with its price and call to action in view, opening in place to list its features, with a monthly and annual switch in the header row.