Pricing sections
Plan cards in many styles, billing switches and full comparison tables with grouped features and tooltips.
Last updated
Each example is a block: a Section with a SectionHeader and plan cards built from Heading, Button, Badge and FeaturedIcon, or a comparison Table.
- Billing switch. Both prices are in the page. The switch is a
SegmentedControl (or a Switch),
and a CSS
:has()rule on the wrapper shows the annual prices while “annual” is checked. No JS. - Comparison tables show one table on wide screens and a stacked table per plan on phones. Each feature name has a Tooltip with a short explanation.
npx @ava-ui/apogee add pricing/simple-cards-01
Copy is props
Every block in this family takes the same content props (PricingContent in
sections/_shared/pricing.ts), with its sample copy as the defaults. A block
ignores the props it has no place for, so you can swap one block for another and
keep the copy. The Pricing section takes the same names for the props they share.
-
eyebrow: The small label above the heading. -
heading: The heading. -
description: The line under the heading. -
label: Landmark name when there is no heading. -
periodLabel: Name of the billing switch. -
periods: Labels for the billing switch. -
items: Plans. -
Pass
nullto hide an optional part, such asdescription={null}. -
Some blocks add props of their own; the top of each block’s file lists them.