Skip to content
Facade UI
Colour mode
GitHub (opens in a new tab)
blockmotion

Pricing tiers (motion)

Plans arrive in sequence as the section scrolls in.

Wraps the static Pricing tiers, which renders identically with JavaScript disabled.

Preview

Open full width (opens in a new tab)
Preview width

Installation

Package manager
pnpm dlx shadcn@latest add https://facadeui.dev/r/pricing-tiers-motion.json

Pulls in motion-primitives, pricing-tiers. The CLI installs them for you.

Usage

The exact source of the preview above.

demos/pricing-tiers-motion.tsx
"use client"

/**
 * The `pricing-tiers` demo, with the motion variant swapped in.
 *
 * Identical props: the motion variant only changes which slot components
 * the static section renders through.
 *
 * `"use client"` is required here, not incidental: the motion variant is a
 * client component, and icon components cannot cross a server-to-client
 * boundary as props. See the note on `IconComponent`.
 */

import { PricingTiersMotion } from "@registry/sections/pricing-tiers-motion"

import { PLANS } from "./content"

export function Demo() {
  return (
    <PricingTiersMotion
      eyebrow="Pricing"
      title="Simple, and actually free"
      description="Prices carry a spoken form, and a feature that is not included says so in words."
      items={PLANS}
      note="All prices exclude VAT."
    />
  )
}

Source

What the CLI copies into your project, byte for byte.

components/sections/pricing-tiers-motion.tsx
"use client"

/**
 * PricingTiersMotion — the plan cards with a staggered entrance.
 *
 * Plans arrive in sequence as the section scrolls in.
 *
 * A genuine wrapper: it renders the static `PricingTiers` and only swaps the list
 * slots, so no markup, styling or accessibility behaviour is duplicated. *
 * Dependencies: react, @/components/motion/slots,
 * @/components/sections/pricing-tiers.
 */

import { StaggerList, StaggerListItem } from "@/components/motion/slots"
import { PricingTiers, type PricingTiersProps } from "@/components/sections/pricing-tiers"

export type PricingTiersMotionProps = Omit<PricingTiersProps, "listAs" | "itemAs">

export function PricingTiersMotion(props: PricingTiersMotionProps) {
  return <PricingTiers {...props} listAs={StaggerList} itemAs={StaggerListItem} />
}

Props

PricingTiersMotionProps

Extends Omit<PricingTiersProps, "listAs" | "itemAs">.