component :: Pricing

The .pricingCard component is one tier of a pricing table: name, price, feature list, and a CTA pinned to the bottom so a row of tiers lines up. A pricing table is a row of these on the grid, with highlighted marking the recommended tier.

Starter

$0 /month

For side projects.

  • 1 site
  • Community support

Pro

Popular

$29 /month

For professionals.

  • 10 sites
  • Email support
  • Custom themes

Team

$99 /month

For agencies.

  • Unlimited sites
  • Priority support
  • Custom themes
  • SSO
FileDescriptionSource
component.pricing.cssTier layout + highlight stylesGithub
component.card.css, atom.badge.css, atom.button.cssBase visuals (dependencies)Github
PricingCard.astroThe Astro componentGithub
icons/check.svgFeature list check iconGithub
--pricingCard-* block in default themeTheme tokens (see table below)Github

It extends the card and uses the badge and button atoms.

HTML

<article class="card pricingCard pricingCard-highlighted">
<header class="pricingCard_header">
<h3 class="pricingCard_name">Pro</h3>
<span class="badge badge-primary">Popular</span>
</header>
<p class="pricingCard_price">
<span class="pricingCard_amount">$29</span>
<span class="pricingCard_period">/month</span>
</p>
<p class="pricingCard_description">For professionals.</p>
<ul class="pricingCard_features">
<li><span class="pricingCard_check" aria-hidden="true"><svg>[…]</svg></span>10 sites</li>
<li><span class="pricingCard_check" aria-hidden="true"><svg>[…]</svg></span>Email support</li>
</ul>
<div class="pricingCard_cta">
<a class="bt bt-primary" href="/signup">Get started</a>
</div>
</article>

The highlight is a border-color swap plus a same-color ring (box-shadow), so the highlighted tier doesn’t shift the row’s layout.

Custom properties

PropertyDescription
--pricingCard-highlight-border-colorBorder/ring color of the highlight.
--pricingCard-check-colorFeature list check icon color.

Everything else comes from the card tokens.

Astro component

PropTypeDefaultDescription
namestringTier name. Required.
pricestringPrice as text ("$29", "Free"…). Required.
periodstringundefinedSuffix after the price ("/month").
descriptionstringundefinedOne-liner under the price.
featuresstring[][]Feature list, one check per entry.
ctaLabelstring"Get started"CTA button text.
ctaHrefstringundefinedCTA link; no CTA renders without it (or the cta slot).
highlightedbooleanfalseRecommended tier: primary ring + primary CTA.
badgestringundefinedBadge text next to the name ("Popular").
classstringundefinedAdditional CSS classes.
SlotDescription
ctaReplace the default CTA button with your own markup.