Pricing Table Eight
A pricing table component with hover-to-reveal pricing and features.
Preview
Simple Pricing
Choose Your Perfect Plan
Transform your project with our comprehensive pricing options designed for every need.
Starter
Do you just want to start testing?
- Presence
- Comments
- Notifications
- Text Editor
- Sync Datastore
Pro
Do you want to unlock full production features?
- Presence
- Comments
- Notifications
- Text Editor
- Sync Datastore
Enterprise
Do you want dedicated security and scale?
- Presence
- Comments
- Notifications
- Text Editor
- Sync Datastore
"use client";
import { PricingTableEight } from "@/components/billingsdk/pricing-table-eight";
import { plans as basePlans } from "@/lib/billingsdk-config";
const plans = basePlans.map((plan) => {
if (plan.id === "starter") {
return { ...plan, description: "Do you just want to start testing?" };
}
if (plan.id === "pro") {
return {
...plan,
description: "Do you want to unlock full production features?",
};
}
if (plan.id === "enterprise") {
return {
...plan,
description: "Do you want dedicated security and scale?",
};
}
return plan;
});
export function PricingTableEightDemo() {
return (
<PricingTableEight
plans={plans}
title="Choose Your Perfect Plan"
theme="classic"
description="Transform your project with our comprehensive pricing options designed for every need."
subtitle="Simple Pricing"
onPlanSelect={(planId: string) => console.log("Selected plan:", planId)}
size="medium"
className="w-full"
showBillingToggle={true}
billingToggleLabels={{
monthly: "Monthly",
yearly: "Yearly",
}}
/>
);
}Installation
npx shadcn@latest add @billingsdk/pricing-table-eightpnpm dlx shadcn@latest add @billingsdk/pricing-table-eightyarn dlx shadcn@latest add @billingsdk/pricing-table-eightbunx shadcn@latest add @billingsdk/pricing-table-eightnpx @billingsdk/cli add pricing-table-eightpnpm dlx @billingsdk/cli add pricing-table-eightyarn dlx @billingsdk/cli add pricing-table-eightbunx @billingsdk/cli add pricing-table-eightUsage
import { PricingTableEight } from "@/components/billingsdk/pricing-table-eight"
import { plans as basePlans} from "@/lib/billingsdk-config"
const plans = basePlans.map(plan => {
if (plan.id === 'starter') {
return { ...plan, description: 'Do you just want to start testing?' };
}
if (plan.id === 'pro') {
return { ...plan, description: 'Do you want to unlock full production features?' };
}
if (plan.id === 'enterprise') {
return { ...plan, description: 'Do you want dedicated security and scale?' };
}
return plan;
});
export function PricingTableEightDemo() {
return (
<PricingTableEight
plans={plans}
title="Choose Your Perfect Plan"
theme="classic"
description="Transform your project with our comprehensive pricing options designed for every need."
subtitle="Simple Pricing"
onPlanSelect={(planId: string) => console.log('Selected plan:', planId)}
size="medium"
className="w-full"
showBillingToggle={true}
billingToggleLabels={{
monthly: "Monthly",
yearly: "Yearly",
}}
/>
)
}Props
| Prop | Type | Description |
|---|---|---|
plans | Plan[] | Array of pricing plans (see Plan interface) |
title | string | Main title for the pricing section |
description | string | Subtitle description |
subtitle | string | Optional small subtitle above title |
onPlanSelect | (planId: string) => void | Callback when a plan is selected |
showBillingToggle | boolean | Show monthly/yearly billing toggle (default: true) |
billingToggleLabels | { monthly: string; yearly: string } | Custom labels for billing toggle |
size | "small" | "medium" | "large" | Component size variant |
theme | "minimal" | "classic" | Theme variant of the pricing table |
className | string | Additional CSS classes |
Features
- Hover-to-Reveal Design: Prices and features elegantly reveal on hover for a clean, minimal initial state
- Mobile-Optimized: Shows full content by default on mobile, hover-reveal only on desktop
- Dual Theme Support: Choose between minimal and classic themes with distinct visual styles
- Billing Toggle: Monthly/yearly pricing with automatic discount calculation
- Plan Highlights: Mark popular plans with badges and special styling
- Smooth Animations: Framer Motion animations for price transitions and feature list reveals
- Responsive Layout: Adapts seamlessly from mobile to large screens
- Accessibility: Comprehensive ARIA labels for screen readers
- Plan Icons: Automatic or custom icons for different plan types
Theming
The pricing table component is styled using the shadcn/ui library. You can customize the colors and fonts by overriding the CSS variables. You can also get the theme from the Theming page.
Example
"use client";
import { PricingTableEight } from "@/components/billingsdk/pricing-table-eight";
import { plans as basePlans } from "@/lib/billingsdk-config";
const plans = basePlans.map((plan) => {
if (plan.id === "starter") {
return { ...plan, description: "Do you just want to start testing?" };
}
if (plan.id === "pro") {
return {
...plan,
description: "Do you want to unlock full production features?",
};
}
if (plan.id === "enterprise") {
return {
...plan,
description: "Do you want dedicated security and scale?",
};
}
return plan;
});
export function PricingTableEightDemo() {
return (
<PricingTableEight
plans={plans}
title="Choose Your Perfect Plan"
theme="classic"
description="Transform your project with our comprehensive pricing options designed for every need."
subtitle="Simple Pricing"
onPlanSelect={(planId: string) => console.log("Selected plan:", planId)}
size="medium"
className="w-full"
showBillingToggle={true}
billingToggleLabels={{
monthly: "Monthly",
yearly: "Yearly",
}}
/>
);
}Pricing Table Seven
The Pricing Table Seven component provides a feature-comparison pricing table with aligned cards and user slider for comprehensive plan comparison.
Manage Subscription
The Manage Subscription component provides a comprehensive interface for users to view and manage their current subscription details, including plan information, billing details, and actions to update or cancel their subscription.