interface

PricingCard

A single pricing tier on the Onda glass Surface — tier name, a large price, billing period, an accent-checkmark feature list, and a CTA button. Rises in on the house spring; set recommended to lift + scale it and add an accent badge + glow. One card; the consumer arranges three.

$ npx ondajs add pricing-card

PricingCard

A single pricing tier on the Onda glass Surface — tier name, a large price in the display font, a billing period, an accent-checkmark feature list, and a CTA button. The card rises in on the house spring. Set recommended to lift and scale the card slightly, swap the CTA to a filled accent button, add a pill badge, and float a soft accent glow behind it — the highlighted tier in a three-up row. This is one card; arrange three side by side for a pricing table.

Props

PropTypeDefaultNotes
tierstring"Pro"Tier name above the price.
pricestring"$29"Large headline price (free-form, e.g. "Free", "€19").
periodstring"/month"Billing period; empty hides it.
featuresstring[]sample listFeature checklist with accent checkmarks.
ctastring"Get started"CTA button label.
recommendedbooleanfalseLifts + scales the card, fills the CTA, shows a badge + glow.
accentstring#D96B82Earned accent — checkmarks, badge, CTA, glow.
delaynumber0Frames before entrance.
widthnumber380Card width.
sizesize roleSemantic size for the price; overrides the px default.
fontFamilystringClash DisplayPrice display font.
placementregion or {x,y,anchor}Canvas placement.

Usage

TSX
import { PricingCard } from './components/onda/pricing-card/PricingCard';

export const PricingScene = () => (
  <AbsoluteFill style={{ flexDirection: 'row', alignItems: 'center', justifyContent: 'center', gap: 32 }}>
    <PricingCard tier="Starter" price="$0" period="/month" cta="Start free" delay={0} />
    <PricingCard tier="Pro" price="$29" period="/month" recommended delay={4} />
    <PricingCard tier="Team" price="$99" period="/month" cta="Contact sales" delay={8} />
  </AbsoluteFill>
);