shadcn.io is not affiliated with official shadcn/ui
Split Panel Pricing Card Visual CTA Block for React
A reverse split call to action for a team workspace: a membership card that tilts toward the pointer on a tinted panel flush to the rails, beside the Team plan's pitch and a Shine Button.
Installation
Overview
Show a plan as an object with this reverse split pricing card section. At the start, a tinted panel runs flush to the page's solid rails and holds a credit-card-shaped membership card: the plan's name pressed into its face with Emboss Text, a chip, a member number and the per-seat price printed on it, on a raised card that follows the theme. Moving the pointer over the card tilts it toward that side in perspective, with a soft highlight that follows, and it settles flat when the pointer leaves. The tilt is CSS only, with no script. Past a solid divider that meets the top rule sit a Badge, a headline, a short paragraph, four ticked team features, the Shine Button (the only primary control) and a line that works out the price for five seats. The copy comes first in the DOM and on phones, so the button lands on the first screen; the panel follows under a ruled line. Built with Badge, Emboss Text, Shine Button, Guides, Lucide icons and Tailwind CSS. For team and membership plans, per-seat pricing pages and upgrade prompts.
FAQ
How do I change the plan, the price and the seats?
Edit the constants at the top of the file. PRICE_PER_SEAT and SEATS set the price printed on the card and the total in the sentence under the features, which is computed, and DISCOUNT_SEATS and DISCOUNT feed the discount it mentions. FEATURES is the list of four. The card's name is the text of its Emboss Text, and the member number is plain text in the card: change both to your own.
How does the card tilt without JavaScript?
Nine invisible zones lie over the card in a three by three grid. Each zone says which row and which column it is in, and the wrapper reads whichever one the pointer is over with CSS :has(): it sets one lean for the row and one for the column, from minus one to one. The card turns by those leans in perspective, with a transition, and the highlight on its face moves with them. When the pointer leaves, both leans fall back to zero and the card settles. There is no event handler, so it works the same on the server and on every framework.
What changes with reduced motion?
The card doesn't tilt: its transform is switched off and the highlight stays put, so it reads as a flat card. The block's entrance is skipped too.
What happens on a touch screen or with a keyboard?
The tilt is decoration, so nothing depends on it. On a touch screen the card tilts toward the last place tapped, as hover does, and a keyboard can't reach it because the card is hidden from assistive technology and has nothing to focus. Everything a visitor needs, the plan, the price per seat and the call to action, is in the text beside the card.
Does the card follow my light and dark theme?
Yes. The card has no dark scope: it is a bg-card card with a ring and a shadow on a bg-muted/40 panel, so it is light on a light page and dark on a dark one, in whichever preset is active. The chip and the rings are drawn in foreground tones, so the Shine Button stays the only primary element.
Related
- Pro
Split Panel Pill Toggle Plan Card CTA
Prices and offersA split call to action for a product analytics tool: the pitch, a payment-method pill and the Shine Button at the start, one plan card in a hairline frame at the end, between solid rails.
- Pro
Split Panel Tier Benefits CTA
Pickers and togglesA reverse split call to action for a partner program: a referral dial in a hairline frame at the start, beside the tiers as ruled rows and a Shine Button that names your tier.
- Pro
Centered Light Tier Selector CTA
Pickers and togglesA centred sponsorship call to action for an open-source project: a band of five amount cells on shared hairlines, a Shine Button that names the chosen monthly amount, a Custom cell that opens a number field in the same space, and a closing band that counts the sponsors.
- Pro
Compact Segmented Tab Control CTA
Slim bandsA slim upgrade band between solid rails, split by a divider: the headline with a rolling price at the start, a billing segment and a Shine Button on the end.
- Pro
Per-Seat Pricing by Seat Type
Seats and teamsSeat-type pricing with a stepper for each type: Full, Collaborator and Viewer seats at different prices, a stacked bar of the seat mix, a live monthly total and, on a phone, a sticky total bar.
- 123123Pro
Split Layout Pricing
Single planA 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.