componentes / formulário
Pricing Toggle
Alternador mensal/anual com selo opcional de economia.
885 B gzip client component
MonthlyYearlySave 20%
$24 / month
pricing-toggle-default.tsx
"use client";
import { useState } from "react";
import { PricingToggle } from "@/components/ui/pricing-toggle";
export default function PricingToggleDefault() {
const [yearly, setYearly] = useState(true);
return (
<div className="flex flex-col items-center gap-3">
<PricingToggle badge="Save 20%" onYearlyChange={setYearly} yearly={yearly} />
<p className="font-heading font-bold text-3xl">
${yearly ? 24 : 30}
<span className="font-normal text-muted-foreground text-sm"> / month</span>
</p>
</div>
);
}Instalação
$ npx shadcn@latest add https://cd-ui.vercel.app/r/pricing-toggle.jsonprimeira vez? configure o components.json e o tema antes: veja instalação.
Uso
import { PricingToggle } from "@/components/ui/pricing-toggle"
const [yearly, setYearly] = useState(true)
<PricingToggle yearly={yearly} onYearlyChange={setYearly} badge="Save 20%" />API
PricingToggle
Alterna entre dois períodos de cobrança, com um selo opcional. Controlado: você guarda yearly e calcula os preços.
| prop | tipo | padrão |
|---|---|---|
yearlySe a cobrança anual está selecionada. | boolean | - |
onYearlyChangeChamado quando o alternador muda. | (yearly: boolean) => void | - |
badgeConteúdo do selo, como "Save 20%". | ReactNode | - |
monthlyLabelTexto do lado mensal. | string | "Monthly" |
yearlyLabelTexto do lado anual. Também dá nome ao alternador. | string | "Yearly" |
Acessibilidade
- É um
role="switch"com o nome deyearlyLabel: ligado significa cobrança anual.