Staaarter

Choose Your Plan

Full-height plan-selection step with a monthly/annual billing toggle, selectable plan cards whose displayed price updates live based on the toggle, and a continue button.

By Staaarter Team
Auth
Docs
Live preview

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/choose-your-plan.json

Prefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/auth/auth26.tsx instead.

Usage

The file also exports auth26Demo, 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 { Auth26, auth26Demo } from "@/components/blocks/auth/auth26";

export default function Page() {
  return <Auth26 {...auth26Demo} />;
}

Props

PropTypeDefaultDescription
headingstringnoneScreen heading.
descriptionstringundefinedShort explanation shown under the heading.
plansPlanItem[]nonePlan cards to render, in display order.
continueLabelstringnoneLabel for the continue button.
classNamestringnoneExtra classes for the outer section element.

Types

type PlanItem = {
  id: string;
  name: string;
  monthlyPrice: number;
  features: string[];
  highlighted?: boolean;
};

Behavior notes

  • The billing toggle is real client state (a two-option segmented control built from two Button toggle-group elements); switching it recomputes every visible price from each plan's stored monthlyPrice, it does not swap in a second hardcoded price string.
  • Annual pricing is computed as monthlyPrice * 10 (a 'two months free' style discount) rather than being authored separately, so the monthly and annual figures can never drift out of sync.
  • Plan cards are selectable buttons with real client state (aria-pressed reflects the selection); the first plan is selected by default via useState's initial value, not derived through an effect.
  • Continue does not submit anywhere; choosing a plan requires a real backend to act on.