import { IconUser, IconUsers } from '@tabler/icons-react'; import { cn } from '@/lib/utils'; import { PricingColumn, type PricingColumnProps } from '../ui/pricing-column'; import { Section } from '../ui/section'; /* * Pricing section. Adapted from Launch UI (MIT) for Vite: siteConfig removed, * lucide -> Tabler icons, and reframed from Launch UI's one-time purchase into * monthly subscription tiers (Starter / Pro / Team). Retint is automatic. */ interface PricingProps { title?: string | false; description?: string | false; plans?: PricingColumnProps[] | false; className?: string; } const DEFAULT_PRICING_PLANS: PricingColumnProps[] = [ { name: 'Starter', description: 'For side projects and early prototypes.', price: 0, priceNote: 'No card required, and no time limit.', cta: { variant: 'glow', label: 'Get started', href: '/signup', }, features: ['1 project', 'Up to 1,000 users', 'Community support'], variant: 'default', }, { name: 'Pro', icon: , description: 'For products with paying customers.', price: 29, priceNote: 'Everything in Starter, with higher limits.', cta: { variant: 'default', label: 'Choose Pro', href: '/signup', }, features: [ 'Unlimited projects', 'Up to 50,000 users', 'Advanced analytics', 'Priority support', ], variant: 'glow-brand', }, { name: 'Team', icon: , description: 'For teams shipping together.', price: 99, priceNote: 'Everything in Pro, with SSO and audit logs.', cta: { variant: 'default', label: 'Choose Team', href: '/signup', }, features: ['Everything in Pro', 'Roles & permissions', 'SSO & audit logs', 'Dedicated support'], variant: 'glow', }, ]; export default function Pricing({ title = 'Every price is on this page.', description = 'Start free. Upgrade when you outgrow it. Change or cancel your plan yourself, without talking to anyone.', plans = DEFAULT_PRICING_PLANS, className = '', }: PricingProps) { return (
{(title || description) && (
{title && (

{title}

)} {description && (

{description}

)}
)} {plans !== false && plans.length > 0 && (
{plans.map((plan) => ( ))}
)}
); }