A clean pricing comparison with a highlighted popular plan.
Start for free, upgrade when you need. No hidden fees, cancel anytime.
Perfect for side projects and learning.
Best for growing teams and businesses.
For large organizations with custom needs.
import { Check } from 'lucide-react'
const plans = [
{
name: "Starter",
price: "$0",
description: "Perfect for side projects.",
features: ["5 projects", "Basic analytics", "Community support"],
popular: false,
},
{
name: "Pro",
price: "$29",
description: "Best for growing teams.",
features: ["Unlimited projects", "Advanced analytics", "Priority support", "Custom domains"],
popular: true,
},
{
name: "Enterprise",
price: "Custom",
description: "For large organizations.",
features: ["Everything in Pro", "SSO & SAML", "Dedicated support", "SLA guarantee"],
popular: false,
},
]
export function PricingSection() {
return (
<section className="w-full bg-zinc-950 px-4 py-24">
<div className="mx-auto max-w-6xl">
<div className="text-center">
<h2 className="text-3xl font-bold text-white">Simple, transparent pricing</h2>
</div>
<div className="mt-16 grid gap-8 md:grid-cols-3">
{plans.map((plan) => (
<div
key={plan.name}
className={`rounded-2xl border p-8 ${
plan.popular ? "border-indigo-500 bg-indigo-500/10" : "border-white/10 bg-white/5"
}`}
>
{plan.popular && (
<span className="absolute -top-3 left-1/2 -translate-x-1/2 rounded-full bg-indigo-500 px-4 py-1 text-xs font-semibold text-white">
Most Popular
</span>
)}
<h3 className="text-lg font-semibold text-white">{plan.name}</h3>
<div className="mt-4 flex items-baseline">
<span className="text-4xl font-bold text-white">{plan.price}</span>
</div>
<ul className="mt-8 space-y-4">
{plan.features.map((feature) => (
<li key={feature} className="flex items-center gap-3 text-zinc-300">
<Check className="h-5 w-5 text-emerald-400" />
{feature}
</li>
))}
</ul>
</div>
))}
</div>
</div>
</section>
)
}