Back to Component Explorer
SaaS 4-Tier Enterprise Pricing
pricingHeader 4-tier SaaS pricing grid with USD/INR currency toggle, Monthly/Yearly discount pill, and popular tier indicator.
#pricing#saas#tiers#currency-toggle#billing-toggle
Live Interactive Preview
TRANSPARENT PRICING
Predictable pricing for projects of any size
Choose the plan that fits your growth. Upgrade or cancel anytime with zero lock-in contracts.
Starter
Essential toolkit for solo builders & indie developers.
$15/mo
Up to 3 team members
10GB Storage & CDN
Standard analytics dashboard
Community Discord support
MOST POPULAR
Pro Developer
Ideal for scaling startups and fast-growing teams.
$39/mo
Up to 15 team members
100GB Storage & CDN
Advanced AI analytics
24/7 priority support
Custom domain mapping
Team Scale
High capacity infrastructure for mature tech products.
$79/mo
Up to 50 team members
500GB Storage & CDN
Real-time telemetry alerts
Dedicated Discord channel
SAML SSO integration
Enterprise
Custom SLA, dedicated cloud infrastructure & 1-on-1 support.
$199/mo
Unlimited storage & bandwidth
Dedicated VPC deployment
Full security audit logs
Dedicated account manager
99.99% uptime SLA
Component Source Code
Select language in the dropdownSaaSTierPricing.tsx
1'use client';23import React, { useState } from 'react';4import { Check } from 'lucide-react';56export default function SaaSTierPricing() {7 const [currency, setCurrency] = useState<'USD' | 'INR'>('USD');8 const [billing, setBilling] = useState<'monthly' | 'yearly'>('monthly');910 const symbol = currency === 'USD' ? '$' : '₹';11 const multiplier = currency === 'USD' ? 1 : 80;12 const discount = billing === 'yearly' ? 0.8 : 1;1314 const plans = [15 {16 name: 'Starter',17 price: Math.round(15 * multiplier * discount),18 description: 'Essential toolkit for solo builders & indie developers.',19 features: ['Up to 3 team members', '10GB Storage & CDN', 'Standard analytics dashboard', 'Community Discord support']20 },21 {22 name: 'Pro Developer',23 price: Math.round(39 * multiplier * discount),24 popular: true,25 description: 'Ideal for scaling startups and fast-growing teams.',26 features: ['Up to 15 team members', '100GB Storage & CDN', 'Advanced AI analytics', '24/7 priority support', 'Custom domain mapping']27 },28 {29 name: 'Team Scale',30 price: Math.round(79 * multiplier * discount),31 description: 'High capacity infrastructure for mature tech products.',32 features: ['Up to 50 team members', '500GB Storage & CDN', 'Real-time telemetry alerts', 'Dedicated Discord channel', 'SAML SSO integration']33 },34 {35 name: 'Enterprise',36 price: Math.round(199 * multiplier * discount),37 description: 'Custom SLA, dedicated cloud infrastructure & 1-on-1 support.',38 features: ['Unlimited storage & bandwidth', 'Dedicated VPC deployment', 'Full security audit logs', 'Dedicated account manager', '99.99% uptime SLA']39 }40 ];4142 return (43 <div className="w-full max-w-7xl mx-auto p-4 sm:p-6 transition-colors select-none">44 {/* Section Header */}45 <div className="flex flex-col items-center text-center mb-8">46 <span className="rounded-full bg-blue-50 dark:bg-blue-950/60 border border-blue-200 dark:border-blue-800 px-3.5 py-1 text-[11px] font-bold text-blue-600 dark:text-blue-400 uppercase tracking-widest">47 TRANSPARENT PRICING48 </span>49 <h2 className="text-2xl sm:text-3xl font-extrabold text-slate-900 dark:text-slate-100 mt-3 tracking-tight">50 Predictable pricing for projects of any size51 </h2>52 <p className="text-xs sm:text-sm text-slate-500 dark:text-slate-400 mt-2 max-w-md font-medium">53 Choose the plan that fits your growth. Upgrade or cancel anytime with zero lock-in contracts.54 </p>55 </div>5657 {/* Currency & Billing Controls */}58 <div className="flex flex-col items-center gap-4 mb-10 text-center">59 <div className="inline-flex items-center rounded-2xl border border-slate-200 dark:border-slate-800 bg-slate-100 dark:bg-slate-900 p-1.5 shadow-md">60 <div className="flex items-center rounded-xl bg-white dark:bg-slate-800 p-1 shadow-xs">61 <button62 onClick={() => setCurrency('USD')}63 className={`flex items-center gap-1 px-3.5 py-1.5 text-xs font-bold rounded-lg transition ${64 currency === 'USD'65 ? 'bg-blue-600 text-white shadow-xs'66 : 'text-slate-600 dark:text-slate-400 hover:text-slate-900 dark:hover:text-slate-100'67 }`}68 >69 {currency === 'USD' && <Check className="h-3.5 w-3.5" />}70 <span>USD ($)</span>71 </button>72 <button73 onClick={() => setCurrency('INR')}74 className={`flex items-center gap-1 px-3.5 py-1.5 text-xs font-bold rounded-lg transition ${75 currency === 'INR'76 ? 'bg-blue-600 text-white shadow-xs'77 : 'text-slate-600 dark:text-slate-400 hover:text-slate-900 dark:hover:text-slate-100'78 }`}79 >80 {currency === 'INR' && <Check className="h-3.5 w-3.5" />}81 <span>INR (₹)</span>82 </button>83 </div>8485 <div className="h-5 w-px bg-slate-300 dark:bg-slate-800 mx-2" />8687 <div className="flex items-center gap-1 px-1">88 <button89 onClick={() => setBilling('monthly')}90 className={`flex items-center gap-1 px-3.5 py-1.5 text-xs font-bold rounded-lg transition ${91 billing === 'monthly'92 ? 'bg-slate-900 dark:bg-slate-100 text-white dark:text-slate-900'93 : 'text-slate-600 dark:text-slate-400'94 }`}95 >96 {billing === 'monthly' && <Check className="h-3.5 w-3.5" />}97 <span>Monthly</span>98 </button>99 <button100 onClick={() => setBilling('yearly')}101 className={`flex items-center gap-1.5 px-3.5 py-1.5 text-xs font-bold rounded-lg transition ${102 billing === 'yearly'103 ? 'bg-slate-900 dark:bg-slate-100 text-white dark:text-slate-900'104 : 'text-slate-600 dark:text-slate-400'105 }`}106 >107 {billing === 'yearly' && <Check className="h-3.5 w-3.5" />}108 <span>Yearly</span>109 <span className="rounded-full bg-emerald-500/20 px-2 py-0.5 text-[10px] font-black text-emerald-600 dark:text-emerald-400">110 SAVE 20%111 </span>112 </button>113 </div>114 </div>115 </div>116117 {/* Grid */}118 <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6">119 {plans.map((plan, idx) => (120 <div121 key={idx}122 className={`relative rounded-3xl p-6 min-h-[480px] transition-all flex flex-col justify-between ${123 plan.popular124 ? 'border-2 border-blue-600 bg-white dark:bg-slate-900 shadow-2xl scale-[1.02]'125 : 'border border-slate-200 dark:border-slate-800 bg-slate-50/50 dark:bg-slate-900/50 shadow-lg'126 }`}127 >128 {plan.popular && (129 <span className="absolute -top-3.5 left-1/2 -translate-x-1/2 rounded-full bg-blue-600 px-3.5 py-1 text-[10px] font-black tracking-widest text-white uppercase shadow-md">130 MOST POPULAR131 </span>132 )}133 <div>134 <h3 className="text-lg font-extrabold text-slate-900 dark:text-slate-100">{plan.name}</h3>135 <p className="text-xs text-slate-500 dark:text-slate-400 mt-2 min-h-[36px] leading-relaxed">{plan.description}</p>136 <div className="mt-6 flex items-baseline gap-1">137 <span className="text-3xl sm:text-4xl font-black text-slate-900 dark:text-slate-100">{symbol}{plan.price.toLocaleString()}</span>138 <span className="text-xs font-semibold text-slate-400">/{billing === 'monthly' ? 'mo' : 'yr'}</span>139 </div>140141 <div className="mt-6 space-y-3 border-t border-slate-200/60 dark:border-slate-800/60 pt-5">142 {plan.features.map((feat, fIdx) => (143 <div key={fIdx} className="flex items-center gap-2 text-xs text-slate-700 dark:text-slate-300">144 <span className="flex h-4 w-4 shrink-0 items-center justify-center rounded-full bg-blue-100 dark:bg-blue-950/80 text-blue-600 dark:text-blue-400">145 <Check className="h-2.5 w-2.5" />146 </span>147 <span>{feat}</span>148 </div>149 ))}150 </div>151 </div>152153 <button154 className={`mt-8 w-full rounded-2xl py-3 text-xs font-bold transition shadow-md ${155 plan.popular156 ? 'bg-blue-600 hover:bg-blue-700 text-white'157 : 'bg-slate-900 dark:bg-slate-100 text-white dark:text-slate-900 hover:bg-slate-800 dark:hover:bg-slate-200'158 }`}159 >160 Choose {plan.name}161 </button>162 </div>163 ))}164 </div>165 </div>166 );167}Installation & Integration Guide
Step 1: Tailwind CSS v4 Setup
Tailwind DocsIf you do not have Tailwind installed yet, run this installation command:
Terminal
npm install tailwindcss @tailwindcss/postcss postcss
Then add the Tailwind directive to your main stylesheet (globals.css):
@import "tailwindcss";
Step 2: Install Icon Dependencies
npm install lucide-react react-icons
Step 3: Add Component File
Create a new file in your project at src/components/pricing/SaaSTierPricing.tsx and paste the copied code from the source viewer above.
Step 4: Usage Example
ExamplePage.tsx
1import SaaS4TierEnterprisePricing from '@/components/pricing/SaaSTierPricing';23export default function ExamplePage() {4 return (5 <main className="p-8 flex items-center justify-center min-h-screen">6 <SaaS4TierEnterprisePricing />7 </main>8 );9}