Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Split Layout Pricing Block for React

A product-led split: a mock of the app built from our own components with numbered callouts on it, matching a 'what you get' list, beside the one plan as a card in a card with a monthly and yearly switch.

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

Let the product make the case beside the price with this split pricing section. A compact header row carries a Segment Group monthly and yearly switch on its end. Below it, between the page's rails and a vertical divider, the start half shows a small mock of Tasklane (a window with a sidebar, a Today list with a ticked task, a recurring task, a shared project with two avatars and a quick-add field that has just parsed "friday 5pm") built from Badge and Kbd. Three numbered dots sit on the parts of it that Pro adds, and a numbered list under the mock says what each one is. The other half is the plan as a card in a card, with a price that rolls to its new amount with Sliding Number, a billing line, a full-width Shine Button, the section's only primary control, and a checklist of nine features. On a phone the plan comes first and the checklist folds behind "All 9 features". Built with Frame, Badge, Kbd, Button, Segment Group, Sliding Number, Shine Button, Guides and Lucide icons, with CSS transitions only. For apps whose value is visible in the interface, and where showing the product is more convincing than describing it.

FAQ

How do I change the plan, the features and the callouts?

Edit the constants at the top of the file. PLAN holds the name, the monthly price, the yearly price (the monthly amount when billed once a year) and the call to action's cta and href; the saving and the yearly total are worked out from the prices. FEATURES is the checklist and CALLOUTS the numbered list under the mock; its numbers match the dots in ProductMock, so keep the two in the same order.

How do I replace the mock with my own product?

ProductMock is a small component of plain markup and our Badge and Kbd, so swap its rows for your app's own. Keep the outer element aria-hidden and inert: it's decoration, and nothing inside it should take focus. Put a numbered dot (the MARKER class) inside each element you want to point at, and describe it in CALLOUTS. The sidebar only appears when the mock is wide enough, using a container query, so the mock shrinks cleanly on narrow screens.

How do I send the billing period to checkout?

The call to action is a real link to PLAN.href. Add the period to it, for example /checkout?plan=pro&billing=yearly, and let your server map it to your payment provider's price. The link is render={<a href="#" />} on ShineButton, with nativeButton={false}: change its href.

Is the mock accessible?

The mock is hidden from assistive technology on purpose, because a screen reader gets nothing from a drawing of an app. Everything it points at is written out in the numbered list under it, a real ordered list with a heading and a sentence for each point, and in the plan's checklist. The billing switch is a radio group named "Billing period": arrow keys move and select. The price keeps its amount in visually hidden text and isn't a live region.

How does it adapt to a phone?

Below lg the halves stack with the plan first, so the button is the first thing under the header; the mock and its callouts follow. The sidebar hides on a narrow mock, the callouts become two-line rows, and the checklist shows five features until "All 9 features" is pressed. From lg the mock sits on the start side of a vertical divider whose ends carry + marks where it meets the section's rules.

When should the product sit beside the price?

When the interface is the selling point and the plan is simple: seeing the feature in place does more than a bullet that names it. It suits single-plan apps and the Pro tier of a freemium product. For a product whose value is behind the screen (an API, an infrastructure service), use a table or a calculator instead.

  • Pro

    One 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

    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.

  • Pro

    One 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

    The 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

    Social Proof Pricing

    Proof and guarantees

    Pricing beside proof for a reviews widget: a 4.9 rating at display size, a customer quote, a stats grid and customer wordmarks on one pane, two horizontal plan cells under a monthly and yearly switch on the other.

  • Pro

    Feature Unlock Pricing

    Charts and figures

    A field of feature chips for a podcast host: pick Hobby, Show or Network and the chips each plan includes light up, the ones it adds get a stronger outline, and the rest stay locked.