20% offProwith

Buy now

Marketing sectionPro

Metered pricing

shadcn add @detent-pro/pricing
detentui.com/pricing

Wire it up

All optional. With none, it plays exactly as it does here and hands over to whoever touches it.

Usage
<Pricing
  plans={plans}
  promises={promises}
  compare={compare}
  onSelect={(plan, choice, yearly, conversations) => {}}
  onContact={() => {}}
/>

Your data

plans

Cheapest first. Each has a name, blurb, price a month, included conversations, a price for each one after (or null to stop at the limit), what it adds to the plan before, and its button.

Plan[]
Default—
promises

Short promises under the plans. Pass an empty list to leave them out.

string[]
Default—
compare

Rows of the full comparison, with one value per plan: true, false or a short value. Pass an empty list to leave it out.

CompareRow[]
Default—
answers

The questions people ask before they buy. Pass an empty list to leave them out.

Answer[]
Default—
unit

What you charge for, like seats, credits or API calls.

string
Default'conversations'
period

How often.

string
Default'a month'
range

The lowest and highest the number can go.

[number, number]
Default[100, 100000]
conversations

Where the number starts.

number
Default6200
discount

Taken off the base price when billed yearly. The toggle shows it as a percentage.

number
Default0.2
hint

Helps a person find their number.

string
Default—
title

The line above the sentence: the model, then what it isn’t, set in two tones.

[string, string]
Default—
words

The sentence, around its number, plan and price. Built from unit and period if left out.

[string, string, string, string]
Default—
tone

Follow the page’s theme, or stay black whatever it is.

'auto' | 'black'
Default'auto'

What it tells you

onSelect

Called when a person picks a plan, with the billing and volume they set.

(plan: string, choice: { yearly: boolean; conversations: number }) => void
Default—
onContact

Called when a person presses Talk to us.

() => void
Default—

Every block also takes accent, the one colour everything in it derives from; autoplay, which plays the demo until someone touches it; and className.

More in Marketing sections

All blocks