Starter
For one team proving the workflow.
- Unlimited forms
- Weekly reports
- Email support
A pricing table builder solves the problem most pricing pages have: the section reads like placeholder SaaS furniture rather than a clear commercial argument. Teams know their plans, limits, and feature jumps, but turning that into a pricing block that feels persuasive is still design work. This component builder handles that translation in code. Add your tiers, pick the recommended plan, and tune the colour system so the preview reflects the same hierarchy you want on the live page. The pricing table creator workflow stays deterministic, editable, and fast to publish, which means the pricing page can keep up with the product instead of waiting behind a full redesign. Unlike a drag-and-drop pricing generator, every output is code you own.
Turn rough plan notes into a section that looks intentional on first publish.
For one team proving the workflow.
For teams that need approvals and handoffs.
For multi-workflow rollouts with governance.
import type { CSSProperties } from 'react'
export default function PricingTableSection() {
const tiers = [
{
name: `Starter`,
price: `$19`,
period: `/mo`,
description: `For one team proving the workflow.`,
featured: false,
features: [`Unlimited forms`, `Weekly reports`, `Email support`],
},
{
name: `Growth`,
price: `$79`,
period: `/mo`,
description: `For teams that need approvals and handoffs.`,
featured: true,
features: [`Everything in Starter`, `Role-based access`, `Slack alerts`],
},
{
name: `Scale`,
price: `Custom`,
period: ``,
description: `For multi-workflow rollouts with governance.`,
featured: false,
features: [`Custom SLAs`, `Dedicated onboarding`, `Advanced review flows`],
},
]
const theme = { '--component-accent': '#c8861a', '--component-panel': '#fff9ef', '--component-panel-alt': '#f5ebd7', '--component-text': '#1f1a13', '--component-text-muted': '#695f52', '--component-border': '#ddc8a1', '--component-button': '#c8861a', '--component-button-text': '#fff9ef' } as React.CSSProperties
return (
<section className="mx-auto max-w-6xl rounded-[28px] border border-stone-200 bg-white shadow-[0_30px_90px_rgba(17,24,39,0.12)]" style={theme}>
<div className="px-6 py-6 md:px-8">
<div className="inline-flex items-center gap-2 text-[11px] font-semibold uppercase tracking-[0.24em] text-[color:var(--component-accent)]">
Pricing table
</div>
<h2 className="mt-4 font-[family-name:var(--font-display)] text-4xl uppercase tracking-[0.04em] text-[color:var(--component-text)] md:text-6xl">
Pricing that explains the jump between tiers
</h2>
<p className="mt-3 max-w-3xl text-[15px] leading-7 text-[color:var(--component-text-muted)]">
Turn rough plan notes into a section that looks intentional on first publish.
</p>
</div>
<div className="grid gap-5 px-6 pb-6 md:grid-cols-3 md:px-8 md:pb-8">
{tiers.map((tier) => (
<article
key={tier.name}
className={`rounded-[24px] border px-5 py-6 ${tier.featured ? 'border-[color:var(--component-accent)] bg-[color:var(--component-panel-alt)]' : 'border-[color:var(--component-border)] bg-[color:var(--component-panel)]'}`}
>
{tier.featured && (
<div className="mb-4 inline-flex rounded-full bg-[color:var(--component-accent)] px-3 py-1 text-[11px] uppercase tracking-[0.18em] text-[color:var(--component-button-text)]">
Most popular
</div>
)}
<h3 className="text-2xl font-semibold text-[color:var(--component-text)]">{tier.name}</h3>
<div className="mt-4 flex items-end gap-2">
<span className="text-4xl font-semibold text-[color:var(--component-text)]">{tier.price}</span>
<span className="pb-1 text-sm text-[color:var(--component-text-muted)]">{tier.period}</span>
</div>
<p className="mt-4 text-sm leading-7 text-[color:var(--component-text-muted)]">{tier.description}</p>
<ul className="mt-6 space-y-3 text-sm leading-6 text-[color:var(--component-text)]">
{tier.features.map((feature) => (
<li key={feature} className="flex gap-3">
<span className="mt-1 inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-[color:var(--component-accent)]/15 text-[color:var(--component-accent)]">✓</span>
<span>{feature}</span>
</li>
))}
</ul>
</article>
))}
</div>
</section>
)
}
The recommended plan carries a stronger visual treatment so the page can guide the buyer without extra copy.
Descriptions, feature bullets, and tier cadence stay consistent even when pricing changes later.
Marketing and product can review the same preview before engineering copies the exact code the builder produces.
Edit each tier name, price, and feature list until the builder preview matches the real commercial offer.
Mark the recommended tier and tune the theme so the emphasis feels deliberate and measured.
Copy the output format that fits the stack and slot it into the pricing page.
Send a correction or note. We review submissions privately before changing the page.