Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Plan Upgrade Success Block for React

An upgrade confirmation page: Free and Pro side by side in one card with the limits that changed and how much each grew, the start and renewal dates, and a quiet fall of confetti that stops with reduced motion.

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

Show what an upgrade bought with this confirmation page for React with Base UI. It's the page Inkpetal, an illustration app, shows after a customer moves from Free to Pro: the page's side rails and one band frame it, a thin fall of Confetti in foreground tones drifts behind the content, a success mark and a headline say the plan changed, and one sentence gives the price and the renewal date. One framed card is split by a divider into Free (marked Before) and Pro (marked Now), each listing the three limits that changed; on the Pro side an outline Badge beside each label says how much it grew, worked out from the two plans. A list under the card gives the start and renewal dates, and the Shine Button starts using the new limits, the only colored control. It's built from Confetti, Badge, Shine Button and Guides, with a CSS entrance only. For upgrades, plan changes and any paid tier.

FAQ

What stays in the page, and how do I wire it for real?

Nothing was upgraded or charged: the page describes a change that already happened. The limits are typed in LIMITS (the Free and Pro figure of each), the price in cents and the two dates in PLAN. To wire it, read the customer's old and new plan from your billing system, build LIMITS from them (list only what changed), and set the dates from the subscription. Point the button at the product.

What happens to the confetti with reduced motion?

It's hidden: the layer carries motion-reduce:hidden, so a visitor who asked for less motion sees no pieces at all, not a still scatter. Otherwise it's a low count of pieces in the foreground, muted and primary colors, falling slowly behind the content and fading out toward the bottom of the page. It's decoration only: it's hidden from assistive technology and takes no clicks.

Where do the plus figures come from?

They're worked out as the Pro figure minus the Free figure for each limit and formatted with its unit ("+49 GB"), so changing a limit in the data changes its badge. Assistive technology reads each Pro figure with "up from" and the old one, so the comparison is in the words, not only in the layout.

How does it look on a phone?

Free stacks over Pro, each a short list of three rows with the label at the start and the figure at the end, and the Shine Button is pinned to the bottom of the screen while the page scrolls under it, so it is on the first screen. From the small breakpoint up it sits in the flow, and the two plans sit side by side from the medium breakpoint with a divider between them.

Why are the dates fixed?

They are ISO dates written into the data and shown as real time elements with a month name, never read from the clock, so the page is the same on the server and in every visitor's time zone. In your product they come from the subscription.

  • Pro

    Upgrade Proration Billing

    Upgrade and downgrade

    Changing plan inside app settings with the bill worked out first: pick a higher plan and the credit for unused days, the new plan's cost for those days, what's due today and the next invoice roll live, then an alert dialog confirms the charge.

  • Pro

    Current Plan Billing

    Plan and usage

    The account's current plan in app settings: plan, price, renewal date and card, a change-plan action, every quota's usage this period on shared hairlines, and the next invoice.

  • Pro

    Trial Timeline Success

    Plans and limits

    A trial confirmation page: fourteen day cells on shared hairlines with today filled and the reminder day marked, the first charge named, a switch for the reminder email, and the three features the trial unlocks.

  • Pro

    A confirmation page for moving from Pro to Free: what was scheduled, two cards with the workspace's three limits as bars (solid up to a cut mark, hatched beyond it) and an optional row of reason chips.

  • Pro

    Payment Receipt Success

    Payments and refunds

    A full-height payment confirmation split in two: what happened and what comes next on one side, an itemised receipt table with the tax worked out in cents, a copyable receipt number and a text download on the other.

  • Pro

    Seat Allocator Success

    Plans and limits

    A full-height confirmation for seats bought in bulk: four teams with steppers that can never take more than were bought, a bar and an unassigned count that follow them, a Save allocation button with a local result, and the order beside it.