Currency Region Toggle
Pricing cards paired with a segmented-control toggle above them for switching the displayed currency. Each tier carries a static price per currency in its data (matching how real localized pricing pages work), and the toggle genuinely swaps which value is shown, it does not perform a live conversion.
Docs
Installation
A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its button dependencies and any missing npm packages, and installs them straight into your project.
npx shadcn add https://staaarter.com/r/currency-region-toggle.jsonPrefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/pricing/pricing14.tsx instead.
Usage
The file also exports pricing14Demo, the exact props behind the preview above. Spread it to get a working section in one line, then replace it with your own data.
import { Pricing14, pricing14Demo } from "@/components/blocks/pricing/pricing14"; export default function Page() { return <Pricing14 {...pricing14Demo} />; }
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| heading | ReactNode | none | Main section headline. |
| description | string | undefined | Supporting subtext below the heading. |
| currencies | Pricing14Currency[] | none | Currency options shown in the toggle, in display order. |
| tiers | Pricing14Tier[] | none | The pricing cards to render, each with a price per currency code. |
| defaultCurrency | string | currencies[0]?.code | Currency code selected on mount. |
| className | string | none | Extra classes for the outer section element. |
Types
type Pricing14Currency = { code: string; symbol: string; label: string }; type Pricing14Tier = { name: string; description?: string; prices: Record<string, string>; // keyed by currency code period?: string; features: string[]; cta: { label: string; href?: string }; highlighted?: boolean; };
Behavior notes
- The currency toggle is real local state (useState): clicking a currency option genuinely swaps every tier's displayed price and symbol, it is not decorative.
- Prices are not converted live, each currency's value comes from a fixed lookup already present in the tier's `prices` object, matching how real pricing pages store per-region prices rather than computing an exchange rate on the fly.
- The toggle is a real radiogroup (role="radiogroup" with role="radio"/aria-checked on each option) for screen reader support, not a set of plain unlabeled buttons.
- All CTA buttons are inert placeholders (href defaults to "#" in the demo) with no real navigation or checkout wired up.
More Pricing Blocks
View all →Three Tier Cards
Classic three-column pricing cards with one plan visually highlighted as the recommended choice.
Monthly/Yearly Toggle
Three-tier pricing cards with a real billing-period toggle that switches every displayed price.
Single Plan Highlight
One centered, larger card for a single plan with a big price, full feature list, and a primary CTA.
Comparison Table
A full feature-matrix table comparing 3-4 plan tiers row by row, with a horizontal scroll fallback on mobile.
Enterprise Contact Card
A standard self-serve plan card next to a distinctly-styled Enterprise card with custom-quote messaging.
Pricing With Testimonial
Pricing cards paired with a single customer quote block for social proof, side by side on large screens.