Loading component…
Components /Pricing Section
Three-tier pricing with a sliding billing switch, rolling prices, and accent-lit cards
Run the following command
npx shadcn@latest add https://raw.githubusercontent.com/Ashutoshx7/VengeanceUI/main/public/r/pricing-section.json| Prop Name | Type | Default | Description |
|---|---|---|---|
| plans | PricingPlan[] | DEFAULT_PRICING_PLANS | Plans to render. Each has id, name, description, price, cta, features, and optional accent, featured, and badge. |
| badge | string | 'Pricing' | Small label above the title. Pass an empty string to hide it. |
| title | ReactNode | 'Plans and Pricing' | Section heading. |
| description | ReactNode | - | Supporting copy under the heading. |
| billing | 'monthly' | 'annually' | - | Controlled billing cycle. |
| defaultBilling | 'monthly' | 'annually' | 'monthly' | Initial billing cycle when uncontrolled. |
| onBillingChange | (billing) => void | - | Called when the billing switch changes. |
| billingLabels | Record<BillingCycle, string> | { monthly: 'Bill Monthly', annually: 'Bill Annually' } | Labels for the billing switch. |
| annualDiscountLabel | string | null | null | Optional chip next to the annual option, e.g. '-20%'. |
| currency | string | '$' | Symbol shown before numeric prices. |
| periodLabel | string | '/month' | Suffix shown after numeric prices. |
| featuresLabel | string | 'Stand out features' | Divider label above each feature list. |
| footnote | ReactNode | 'Start your journey risk free - No credit card needed' | Small note under the cards. Pass null to hide it. |
| className | string | - | Additional classes for the section element. |
| Prop Name | Type | Default | Description |
|---|---|---|---|
| price | { monthly: number; annually: number } | string | - | Monthly-equivalent price per cycle, or a label like 'Custom'. |
| accent | string | '#a1a1aa' | Any CSS color for the gradient border, glow, and icon. |
| glow | number | 0.72 | Strength of the accent wash, 0–1. Darker accents like blue look best around 1. |
| featured | boolean | false | Brighter border and the primary button style. |
| badge | string | - | Pill in the card's top-right corner. |
| cta | { label: string; href?: string; onClick?: () => void } | - | Renders a link when href is set, otherwise a button. |
| features | { label: string; icon?: ReactNode }[] | - | Feature rows; icons are sized to 16px. |