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") => void—Callback fired when a CTA button is clicked.
classNamestring—Custom 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').
sectionBackgroundImagestring—URL to background image.
sectionBackgroundOverlaystring—Tailwind 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
namestring—Tier name displayed on the card.
price{ monthly: string, annual?: string }—Price object with monthly and optional annual pricing.
descriptionstring—Optional 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).
cardColorstring—Color name (e.g., 'blue', 'purple', 'green') - automatically generates borderColor, buttonColor, buttonTextColor. Available colors: blue, purple, green, red, orange, yellow, indigo, pink, teal, cyan.
borderColorstring—Tailwind color class for border (e.g., 'border-purple-200', 'border-blue-300') - overrides cardColor.
buttonColorstring—Tailwind color classes for button (e.g., 'bg-purple-600 hover:bg-purple-700') - overrides cardColor.
buttonTextColorstring—Tailwind color class for button text (e.g., 'text-white', 'text-purple-700') - overrides cardColor.
badgeColorstring—Tailwind color classes for badge (e.g., 'bg-purple-600 text-white').
cardBackgroundColorstring—Tailwind color class or CSS color (e.g., 'bg-white', 'bg-gray-50', '#ffffff').
cardBackgroundImagestring—URL to background image.
cardBackgroundOverlaystring—Tailwind class for overlay (e.g., 'bg-black/10', 'bg-white/80').

PricingFeature​

PropTypeDefaultDescription
labelstring—Feature 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).