Three-Tier Pricing
The canonical Starter / Pro / Enterprise grid, with the middle tier promoted.
6 frameworksBeginner
One centred plan with no card chrome, sized for a simple product.
<!-- One centred plan, no card chrome; type scales stay fluid so nothing clips at
320px. -->
<section class="mx-auto w-full max-w-md px-4 text-center" aria-labelledby="minimal-heading">
<h2 class="text-sm font-semibold uppercase tracking-wide text-blue-700 dark:text-blue-400" id="minimal-heading">Pro</h2>
<p class="mt-3 flex items-baseline justify-center gap-1">
<span class="text-5xl font-bold tracking-tight text-gray-900 dark:text-gray-100">$16</span>
<span class="text-sm text-gray-600 dark:text-gray-400">/month</span>
</p>
<p class="mt-2 text-sm text-gray-600 dark:text-gray-400">One plan. Everything included.</p>
<ul class="mx-auto mt-6 grid max-w-xs gap-2.5 text-left">
<li class="flex items-start gap-2 text-sm text-gray-700 dark:text-gray-300"><svg class="mt-0.5 h-4 w-4 flex-none text-blue-600 dark:text-blue-400" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path d="M16.7 5.3a1 1 0 0 1 0 1.4l-7.5 7.5a1 1 0 0 1-1.4 0L3.3 9.7a1 1 0 1 1 1.4-1.4l3.8 3.8 6.8-6.8a1 1 0 0 1 1.4 0Z" /></svg>Unlimited projects</li>
<li class="flex items-start gap-2 text-sm text-gray-700 dark:text-gray-300"><svg class="mt-0.5 h-4 w-4 flex-none text-blue-600 dark:text-blue-400" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path d="M16.7 5.3a1 1 0 0 1 0 1.4l-7.5 7.5a1 1 0 0 1-1.4 0L3.3 9.7a1 1 0 1 1 1.4-1.4l3.8 3.8 6.8-6.8a1 1 0 0 1 1.4 0Z" /></svg>All integrations</li>
<li class="flex items-start gap-2 text-sm text-gray-700 dark:text-gray-300"><svg class="mt-0.5 h-4 w-4 flex-none text-blue-600 dark:text-blue-400" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path d="M16.7 5.3a1 1 0 0 1 0 1.4l-7.5 7.5a1 1 0 0 1-1.4 0L3.3 9.7a1 1 0 1 1 1.4-1.4l3.8 3.8 6.8-6.8a1 1 0 0 1 1.4 0Z" /></svg>No usage caps</li>
<li class="flex items-start gap-2 text-sm text-gray-700 dark:text-gray-300"><svg class="mt-0.5 h-4 w-4 flex-none text-blue-600 dark:text-blue-400" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path d="M16.7 5.3a1 1 0 0 1 0 1.4l-7.5 7.5a1 1 0 0 1-1.4 0L3.3 9.7a1 1 0 1 1 1.4-1.4l3.8 3.8 6.8-6.8a1 1 0 0 1 1.4 0Z" /></svg>Cancel anytime</li>
</ul>
<a href="#" class="mt-7 inline-flex w-full items-center justify-center rounded-lg bg-gray-900 px-5 py-2.5 text-sm font-semibold text-white transition-colors hover:bg-gray-700 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-900 focus-visible:ring-offset-2 focus-visible:ring-offset-white motion-reduce:transition-none dark:bg-white dark:text-gray-900 dark:hover:bg-gray-200 dark:focus-visible:ring-white dark:focus-visible:ring-offset-gray-900">Start free trial</a>
</section>| Prop | Type | Default | Description |
|---|---|---|---|
price | string | '$16' | Amount to display. |
features | string[] | FEATURES | List of feature strings. |
ctaLabel | string | 'Start free trial' | Call-to-action button text. |
className | string | - | Additional classes merged onto the root element. |
Pass `price`, `features` and `ctaLabel`; there is deliberately no card border, so the price carries the layout. Type scales stay fluid and the block is capped at `max-w-md`, so nothing clips at 320px.