shadcn.io is not affiliated with official shadcn/ui
Flat Rate Pricing Block for React
One flat price for the whole company, set as a typographic band: the price at display size, the meters it never charges for struck through beside it, one call to action, and four cells of what's included.
Installation
Overview
Sell simplicity by showing what it replaces with this flat rate pricing section. Under a one-line header, a ruled band lays out the whole offer as type: the price, $29 a month for the whole company, at display size, then the meters other tools charge by (per seat, per client, per invoice, per currency, per bank feed) struck through in large type, then the section's one primary Shine Button. Below it four cells (invoicing, clients, getting paid, and books and tax) share their hairlines and list what's included with neutral checkmarks, meeting the page's rails with + marks. On a phone the cells show their first five features behind an "All 16 features" button. Built with Button, Guides, Shine Button and Lucide icons, with CSS transitions only. For accounting, invoicing and back-office tools, and any product whose pitch is that the bill never changes.
FAQ
How do I change the price, the struck meters and the features?
Edit the constants at the top of the file. PRICE is the monthly amount for the company and CURRENCY the symbol before it. METERS lists what you never charge by, written as "per ..." phrases; each is struck through with <s> and followed by hidden text "(not charged)", so a screen reader doesn't read a list of prices you don't have. GROUPS holds the four cells, each with a name and its features; the "All 16 features" label is counted from them.
How do I connect the call to action to checkout?
The call to action is a real link in the band's last cell. Point it at your sign-up or checkout; a flat rate has nothing to choose, so there is nothing to pass along.
The link is render={<a href="#" />} on ShineButton, with nativeButton={false}: change its href.
Is the struck-through text accessible?
Yes. The meters are a real list under a visible label, "What you'll never pay", and each item carries a visually hidden "(not charged)", so the meaning doesn't depend on the line through the text. The strike uses decoration-foreground at two pixels so it stays visible on the muted text in every theme.
How does the band adapt to different widths?
From lg the band is three cells in a row (price, meters, call to action) divided by single hairlines; below it they stack, and the price drops from text-9xl to text-7xl at the narrowest. The meters wrap onto as many lines as they need. In a right-to-left layout the cells run in the opposite order, and the price is isolated with dir="ltr" so the $ stays before the number.
How does it fit on a phone?
The price, the meters and the call to action stack and take about one screen, with the button visible before the first fold ends. The feature cells show only their first five features, counted across the cells, until the "All 16 features" button (aria-expanded) is pressed; cells with nothing visible hide their heading. From md all sixteen are shown.
When is a flat rate the right model?
When your customers' usage varies a lot but your costs don't scale with it, or when predictability is the product. A flat rate removes the reason to ration, which is a selling point for invoicing, team tools and anything used in bursts. If heavy users cost you much more than light ones, a metered or tiered plan protects your margin better.
Related
- Pro
Featured Plan Pricing
Single planOne plan in the spotlight: an oversized card under a monochrome cone of light with the price as the largest type on the page, a monthly and yearly switch, and a short pitch beside it.
- Pro
All Inclusive Pricing
Single planOne price over a wall of everything it includes: 36 features as ticked chips in six ruled groups, with the price and one call to action in the header row and nothing gated or extra to buy.
- ∞Pro
Unlimited Plan Pricing
Single planOne flat-rate plan under an oversized Unlimited wordmark: a price cell with the call to action beside eight feature cells that share hairlines, each with a line of detail.
- Pro
Per-User Pricing as One Sentence
Seats and teamsThe simplest per-user price, said as one giant sentence, '$8 per user, per month.', with a small stepper for the team's users and a monthly total beside it.
- Pro
Minimal Single Plan Pricing
Single planThe quietest single plan: one card in a card with a launch price beside the struck-out regular price, one call to action and six included features, under a short centred header.
- Pro
Pay As You Go Pricing
Usage and creditsUsage pricing for a serverless platform as rate rows: each billable resource with its free allowance, its starting rate at display size and the two volume steps that lower it, with one call to action in the header.