FreePricing
Pricing Sections
Use this component for SaaS pricing, agency packages, template bundles, and service landing pages where users need to compare plans quickly.
ReactTailwind CSSMotionPricing
Simple pricing for advanced people
Transparent plans with clean comparison cards.
Hobby
$99
For quick prototypes
Starter
Popular$299
For serious product pages
Pro
$1490
For full launch systems
Overview
A three-column pricing section with a highlighted recommended plan and animated entry.
Framework
React
Styling
Tailwind CSS
Animation
Motion
Create a Vite React project
bashnpm create vite@latest my-ui-app -- --template react-ts
cd my-ui-app
npm installCreate a Next.js project
bashnpx create-next-app@latest my-ui-app --typescript --tailwind --eslint
cd my-ui-appAdd Tailwind CSS to Vite
bashnpm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -pInstall dependencies
bashnpm install framer-motionUsage
tsx<PricingSections />Pricing Sections.tsx
tsx"use client";
import { motion } from "framer-motion";
const plans = [
["Hobby", "$99", "For quick prototypes"],
["Starter", "$299", "For serious product pages"],
["Pro", "$1490", "For full launch systems"],
];
export function PricingSections() {
return (
<section className="rounded-xl border border-white/10 bg-black p-5 text-white">
<div className="mb-5 text-center">
<h3 className="text-2xl font-black">Simple pricing for advanced people</h3>
<p className="mt-1 text-xs text-zinc-400">
Transparent plans with clean comparison cards.
</p>
</div>
<div className="grid gap-3 md:grid-cols-3">
{plans.map(([name, price, desc], index) => (
<motion.div
key={name}
initial={{ opacity: 0, y: 12 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{ delay: index * 0.08 }}
className={"rounded-lg border p-4 " + (index === 1 ? "border-lime-300 bg-lime-300/10" : "border-white/10 bg-white/[0.04]")}
>
<div className="flex items-center justify-between">
<p className="text-xs font-semibold">{name}</p>
{index === 1 && (
<span className="rounded-full bg-lime-300 px-2 py-0.5 text-[10px] font-bold text-zinc-950">
Popular
</span>
)}
</div>
<p className="mt-4 text-3xl font-black">{price}</p>
<p className="mt-2 text-xs text-zinc-400">{desc}</p>
<button className="mt-4 w-full rounded-md bg-sky-500 px-3 py-2 text-xs font-bold text-white">
Get started
</button>
</motion.div>
))}
</div>
</section>
);
}