Skip to main content
Version: 1.0.3

Pricing Grid

Pricing Grid is a fully customizable and visually engaging component for presenting pricing tiers in modern applications.

PRICING

Plans that scale with your growth

Start free, upgrade when you're ready. No hidden fees, cancel anytime.

Starter

Perfect for getting started

$FREE /mo
  • Disk Space 128 GB
  • Bandwidth 15 GB
  • Databases 1
  • ×License
MOST POPULAR

Standard

For growing teams

$19.99 /mo
  • Storage 20GB
  • Databases 20
  • License
  • Email Accounts

Enterprise

For organizations

$29.99 /mo
  • Storage 50GB
  • Databases 50
  • License
  • Email Accounts

2-Tier Horizontal Layout

PRICING

Plans that scale with your growth

Start free, upgrade when you're ready. No hidden fees, cancel anytime.

Starter

Perfect for getting started

$FREE /mo
  • Disk Space 128 GB
  • Bandwidth 15 GB
  • Databases 1
MOST POPULAR

Standard

For growing teams

$19.99 /mo
  • Storage 20GB
  • Databases 20
  • License

With Card Images

PRICING

Plans that scale with your growth

Start free, upgrade when you're ready. No hidden fees, cancel anytime.

STARTER

Perfect for side projects and experiments.

$9 /mo
  • Up to 3 projects
  • 1 GB storage
  • Basic analytics
MOST POPULAR

PRO

For growing teams that need more power.

$29 /mo
  • Unlimited projects
  • 50 GB storage
  • Advanced analytics
  • Priority email support

Installation

ignix add component pricingGrid

Usage

Basic Pricing Grid

import { PricingGrid } from "@/components/ui/pricinggrid"
import type { PricingTier } from "@/components/ui/pricinggrid"

export default function PricingPage() {
const tiers: PricingTier[] = [
{
name: "Starter",
price: {
monthly: "$FREE /mo",
},
description: "Perfect for getting started",
features: [
{ label: "Disk Space 128 GB" },
{ label: "Bandwidth 15 GB" },
{ label: "Databases 1" },
{ label: "License", available: false },
{ label: "Email Accounts", available: false },
{ label: "24 Hours Support", available: false },
],
ctaLabel: "Sign Up",
recommended: false,
cardColor: "blue",
},
{
name: "Standard",
price: {
monthly: "$19.99 /mo",
annual: "$15.99 /mo",
},
description: "For growing teams",
features: [
{ label: "Storage 20GB" },
{ label: "Databases 20" },
{ label: "License" },
{ label: "Email Accounts" },
{ label: "24/7 Support" },
{ label: "Agent Support", available: false },
],
ctaLabel: "Subscribe",
recommended: true,
cardColor: "purple",
},
{
name: "Enterprise",
price: {
monthly: "$29.99 /mo",
annual: "$23.99 /mo",
},
description: "For organizations",
features: [
{ label: "Storage 50GB" },
{ label: "Databases 50" },
{ label: "License" },
{ label: "Email Accounts" },
{ label: "24/7 Support" },
{ label: "Agent Support" },
],
ctaLabel: "Check Now",
recommended: false,
cardColor: "green",
},
]

const handleCtaClick = (tier: PricingTier, billing: "monthly" | "annual") => {
// Handle CTA click
}

return (
<PricingGrid
title="Plans that scale"
titleHighlight="with your growth"
description="Start free, upgrade when you're ready. No hidden fees, cancel anytime."
tiers={tiers}
showToggle
defaultBilling="monthly"
animation="slide-up"
onCtaClick={handleCtaClick}
/>
)
}

Advanced Pricing Grid with Custom Colors

import { PricingGrid } from "@/components/ui/pricinggrid"
import type { PricingTier } from "@/components/ui/pricinggrid"

export default function PricingPage() {
const tiers: PricingTier[] = [
{
name: "Starter",
price: {
monthly: "$FREE /mo",
},
description: "Perfect for getting started",
features: [
{ label: "Disk Space 128 GB" },
{ label: "Bandwidth 15 GB" },
{ label: "Databases 1" },
{ label: "License", available: false },
{ label: "Email Accounts", available: false },
{ label: "24 Hours Support", available: false },
],
ctaLabel: "Sign Up",
recommended: false,
cardColor: "orange",
},
{
name: "Standard",
price: {
monthly: "$19.99 /mo",
annual: "$15.99 /mo",
},
description: "For growing teams",
features: [
{ label: "Storage 20GB" },
{ label: "Databases 20" },
{ label: "License" },
{ label: "Email Accounts" },
{ label: "24/7 Support" },
{ label: "Agent Support", available: false },
],
ctaLabel: "Subscribe",
recommended: true,
cardColor: "purple",
},
{
name: "Enterprise",
price: {
monthly: "$29.99 /mo",
annual: "$23.99 /mo",
},
description: "For organizations",
features: [
{ label: "Storage 50GB" },
{ label: "Databases 50" },
{ label: "License" },
{ label: "Email Accounts" },
{ label: "24/7 Support" },
{ label: "Agent Support" },
],
ctaLabel: "Check Now",
recommended: false,
cardColor: "green",
},
]

return (
<PricingGrid
title="Plans that scale"
titleHighlight="with your growth"
description="Start free, upgrade when you're ready. No hidden fees, cancel anytime."
tiers={tiers}
showToggle
defaultBilling="monthly"
scaleRecommended
animation="slide-up"
sectionBackgroundColor="bg-purple-100"
/>
)
}

Pricing Grid with Card Images

import { PricingGrid } from "@/components/ui/pricinggrid"
import type { PricingTier } from "@/components/ui/pricinggrid"

export default function PricingPage() {
const tiers: PricingTier[] = [
{
name: "Starter",
price: {
monthly: "$FREE /mo",
},
description: "Perfect for getting started",
features: [
{ label: "Disk Space 128 GB" },
{ label: "Bandwidth 15 GB" },
{ label: "Databases 1" },
{ label: "License", available: false },
{ label: "Email Accounts", available: false },
{ label: "24 Hours Support", available: false },
],
ctaLabel: "Sign Up",
recommended: false,
cardBackgroundImage: "https://images.unsplash.com/photo-1551434678-e076c223a692?w=800&q=80",
cardBackgroundOverlay: "bg-black/50",
},
{
name: "Standard",
price: {
monthly: "$19.99 /mo",
annual: "$15.99 /mo",
},
description: "For growing teams",
features: [
{ label: "Storage 20GB" },
{ label: "Databases 20" },
{ label: "License" },
{ label: "Email Accounts" },
{ label: "24/7 Support" },
{ label: "Agent Support", available: false },
],
ctaLabel: "Subscribe",
recommended: true,
cardBackgroundImage: "https://images.unsplash.com/photo-1552664730-d307ca884978?w=800&q=80",
cardBackgroundOverlay: "bg-black/50",
badgeColor: "bg-white text-gray-900",
},
{
name: "Enterprise",
price: {
monthly: "$29.99 /mo",
annual: "$23.99 /mo",
},
description: "For organizations",
features: [
{ label: "Storage 50GB" },
{ label: "Databases 50" },
{ label: "License" },
{ label: "Email Accounts" },
{ label: "24/7 Support" },
{ label: "Agent Support" },
],
ctaLabel: "Check Now",
recommended: false,
cardBackgroundImage: "https://images.unsplash.com/photo-1553877522-43269d4ea984?w=800&q=80",
cardBackgroundOverlay: "bg-black/50",
},
]

return (
<PricingGrid
title="Plans that scale"
titleHighlight="with your growth"
description="Start free, upgrade when you're ready. No hidden fees, cancel anytime."
tiers={tiers}
showToggle
defaultBilling="monthly"
scaleRecommended
sectionBackgroundColor="bg-purple-100"
/>
)
}

Props

PricingGrid

PropTypeDefaultDescription
titlestring"Plans that scale"Main heading for the pricing section.
titleHighlightstring"with your growth"Highlighted portion of the title (shown in accent color).
descriptionstring"Start free, upgrade when you're ready. No hidden fees, cancel anytime."Supporting description text below the title.
tiersPricingTier[]List of pricing tiers to render (2-3 tiers).
showTogglebooleantrueShow/hide the monthly/annual billing toggle.
defaultBilling"monthly" | "annual""monthly"Default billing period.
onCtaClick(tier: PricingTier, billing: "monthly" | "annual") => voidCallback fired when a CTA button is clicked.
classNamestringCustom class names for the outer section container.
accentColorstring"text-purple-600"Tailwind color class for title highlight and toggle (e.g., 'text-purple-600', 'text-blue-600').
toggleActiveColorstring"bg-purple-600"Tailwind color classes for active toggle button (e.g., 'bg-purple-600').
titleColorstring"text-gray-900"Tailwind color class for main title (e.g., 'text-gray-900', 'text-white').
descriptionColorstring"text-gray-600"Tailwind color class for description text (e.g., 'text-gray-600', 'text-gray-300').
labelColorstring"text-gray-500"Tailwind color class for "PRICING" label (e.g., 'text-gray-500', 'text-gray-400').
sectionBackgroundColorstring"bg-white"Tailwind color class or CSS color (e.g., 'bg-white', 'bg-gray-50', '#f5f5f5').
sectionBackgroundImagestringURL to background image.
sectionBackgroundOverlaystringTailwind class for overlay (e.g., 'bg-black/10', 'bg-white/80').
animationAnimationType | AnimationConfig | false"slide-up"Animation type string, full config object, or false to disable.
scaleRecommendedbooleantrueScale recommended card and place others behind it (carousel effect).
horizontalHeaderbooleanfalseDisplay title and description horizontally (for two-tier layouts).

PricingTier

PropTypeDefaultDescription
namestringTier name displayed on the card.
price{ monthly: string, annual?: string }Price object with monthly and optional annual pricing.
descriptionstringOptional description text shown below the tier name.
featuresPricingFeature[]List of features included in the tier.
ctaLabelstring"Get Started"Label text for the CTA button.
recommendedbooleanfalseVisually emphasizes the tier as recommended (shows "MOST POPULAR" badge).
cardColorstringColor name (e.g., 'blue', 'purple', 'green') - automatically generates borderColor, buttonColor, buttonTextColor. Available colors: blue, purple, green, red, orange, yellow, indigo, pink, teal, cyan.
borderColorstringTailwind color class for border (e.g., 'border-purple-200', 'border-blue-300') - overrides cardColor.
buttonColorstringTailwind color classes for button (e.g., 'bg-purple-600 hover:bg-purple-700') - overrides cardColor.
buttonTextColorstringTailwind color class for button text (e.g., 'text-white', 'text-purple-700') - overrides cardColor.
badgeColorstringTailwind color classes for badge (e.g., 'bg-purple-600 text-white').
cardBackgroundColorstringTailwind color class or CSS color (e.g., 'bg-white', 'bg-gray-50', '#ffffff').
cardBackgroundImagestringURL to background image.
cardBackgroundOverlaystringTailwind class for overlay (e.g., 'bg-black/10', 'bg-white/80').

PricingFeature

PropTypeDefaultDescription
labelstringFeature label text.
availablebooleantrueIndicates whether the feature is available (shows checkmark or cross).

AnimationConfig

PropTypeDefaultDescription
enabledbooleantrueEnable/disable all animations.
typeAnimationType"slide-up"Animation type for cards: "fade", "slide", "scale", "slide-up", "slide-down", "none".
durationnumber0.6Animation duration in seconds.
staggerDelaynumber0.1Delay between each card animation (in seconds).
headerDelaynumber0Delay before header animation starts (in seconds).
toggleDelaynumber0.2Delay before toggle animation starts (in seconds).
featuresDelaynumber0.2Base delay for feature list items (in seconds).
featuresStaggernumber0.05Stagger delay between feature items (in seconds).