Skip to main content
Clever Ops

Membership Tiers

Gym pricing in the coach's voice, bold uppercase tier names like FOUNDATION and SURGE, per-week prices in big tabular figures, commitment notes, and a ruled ledger with zero glow.

Preview & code

Loading Membership Tiers preview

Installation

pnpm dlx shadcn@latest add @cleverui/membership-tiers

Requires the @cleverui registry in your components.json, a one-off, two-line setup.

Usage

tsx
import { MembershipTiers } from '@/components/blocks/membership-tiers'
Exampletsx
'use client'

import { MembershipTiers } from '@/components/blocks/membership-tiers'

export default function MembershipTiersDemo() {
  return (
    <MembershipTiers
      eyebrow="No shortcuts"
      heading="Pick your lane"
      note="No lock-ins. Cancel with 14 days notice."
      onSelect={() => {}}
      tiers={[
        {
          name: 'Foundation',
          pricePerWeek: '$28',
          commitment: '4-week minimum. Build the base.',
          features: [
            'Open floor access',
            '3 group classes / week',
            'Program templates',
            'Locker + shower',
          ],
          ctaLabel: 'Start foundation',
        },
        {
          name: 'Surge',
          pricePerWeek: '$42',
          commitment: '12-week minimum. Earn it.',
          badge: 'Most taken',
          features: [
            'Unlimited classes',
            '1 coach check-in / month',
            'Strength + engine tracks',
            'Guest pass monthly',
            'Priority class booking',
          ],
          ctaLabel: 'Join surge',
        },
        {
          name: 'Relentless',
          pricePerWeek: '$68',
          commitment: '16-week block. Full program ownership.',
          features: [
            'Everything in Surge',
            'Weekly 1:1 coaching',
            'Custom programming',
            'Nutrition check-ins',
            'Competition prep lane',
          ],
          ctaLabel: 'Go relentless',
        },
      ]}
    />
  )
}

API reference

MembershipTiers accepts the following props.

PropTypeDefaultDescription
headingstring'Pick your lane'
eyebrowstringcoach-voice kicker, e.g. NO SHORTCUTS
tiers*MembershipTier[]
notestring'No lock-ins. Cancel with 14 days notice.'
onSelect(tier: { name: string }) => void

…plus everything from Omit<React.HTMLAttributes<HTMLElement>, 'onSelect'>: className, event handlers, aria attributes and the rest pass straight through.

Referenced types

Typestsx
export interface MembershipTier {
  name: string
  /** preformatted, e.g. $42 */
  pricePerWeek: string
  commitment: string
  features: string[]
  /** marks at most one tier, e.g. MOST TAKEN */
  badge?: string
  ctaLabel?: string
  href?: string
}

Frequently asked questions

How do I install the Membership Tiers component?

Register the @cleverui registry in your components.json ("@cleverui": "https://cleverops.com.au/r/{name}.json"), then run `npx shadcn@latest add @cleverui/membership-tiers`. The shadcn CLI copies the source into your project, you own the code from that point. You can also copy the source directly from this page.

What dependencies does Membership Tiers require?

Membership Tiers uses motion on top of React and Tailwind CSS. You don't need to install it manually, the shadcn CLI resolves and installs npm dependencies automatically when you add the component.

Can I theme Membership Tiers to match my brand?

Yes. The component is styled entirely with Tailwind utilities over standard design tokens (primary, background, muted, border), so it inherits your existing shadcn/ui theme automatically. Change your CSS variables and the component follows, no source edits needed for palette, radius, or fonts.

Want this built for you?

CleverUI is built by the Clever Ops web team. If you'd rather ship a hand-coded, fast, custom website than assemble one, we build them for Australian businesses every week.

Explore web development services