Pricing 3
uifoundry/pricing-3FreeBlock
Pricing table with card-based design, configurable popular tier, and dynamic pricing periods
Live preview
live · rendered by the registry
Rendered by uifoundry on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://uifoundry.dev/r/pricing-3.jsonSource
1/**2 * Pricing 3 Component3 *4 * Source: https://tailark.com/preview/dusk/pricing/three5 * License: Free Tier6 * Adapted from: Tailark7 *8 * Modifications:9 * - Integrated with PayloadCMS block system10 * - Replaced hardcoded content with dynamic props11 */121314import { Check } from "lucide-react";15import Link from "next/link";1617import type { Pricing_3_Block } from "~/payload-types";1819import { cn } from "@/registry/default/utils";20import { Button } from "@/registry/ui/button";21import {22 Card,23 CardContent,24 CardDescription,25 CardHeader,26 CardTitle,27} from "@/registry/ui/card";2829export * from "./config";3031export default function Pricing3(props: NonNullable<Pricing_3_Block>) {32 const popularIndex = props?.config?.popularIndex ?? -1;33 const popularLabel = props?.config?.popularLabel ?? "Popular";3435 return (36 <section className="py-16 md:py-32">37 <div className="mx-auto max-w-7xl px-6">38 {/* Header Section */}39 <div className="mx-auto max-w-3xl space-y-4 text-center">40 {props?.header && (41 <h2 className="text-4xl font-semibold lg:text-5xl">42 {props.header}43 </h2>44 )}45 {props?.subheader && (46 <p className="text-muted-foreground text-lg">47 {props.subheader}48 </p>49 )}50 </div>5152 {/* Pricing Cards Grid */}53 <div className="mt-12 grid gap-6 md:mt-16 md:grid-cols-3">54 {(props?.tiers ?? []).map((tier, index) => {55 const isPopular = popularIndex === index;5657 return (58 <PricingCard59 key={`pricing-3-tier-${index}`}60 tier={tier}61 isPopular={isPopular}62 popularLabel={popularLabel}63 />64 );65 })}66 </div>67 </div>68 </section>69 );70}7172interface PricingCardProps {73 tier: NonNullable<Pricing_3_Block["tiers"]>[number];74 isPopular: boolean;75 popularLabel: string;76}7778function PricingCard({ tier, isPopular, popularLabel }: PricingCardProps) {79 if (!tier) return null;8081 const periodLabel =82 tier.period === "month" ? "/mo" : tier.period === "year" ? "/yr" : "";8384 return (85 <Card className="relative flex flex-col">86 {/* Popular Badge */}87 {isPopular && (88 <span className="absolute inset-x-0 -top-3 mx-auto flex h-6 w-fit items-center rounded-full bg-linear-to-br/increasing from-purple-400 to-amber-300 px-3 py-1 text-xs font-medium text-amber-950 ring-1 ring-white/20 ring-offset-1 ring-offset-gray-950/5 ring-inset">89 {popularLabel}90 </span>91 )}9293 <CardHeader>94 {/* Plan Name */}95// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from uifoundry
All 54 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Color Fieldcolor-field | uifoundry | Blocks | Free | 4 deps · 2 files | |
| Coming Soon 1coming-soon-1 | uifoundry | Blocks | Free | 3 deps · 2 files | |
| CTA 1cta-1 | uifoundry | Blocks | Free | 3 deps · 2 files | |
| CTA 2cta-2 | uifoundry | Blocks | Free | 3 deps · 2 files | |
| CTA 3cta-3 | uifoundry | Blocks | Free | 3 deps · 2 files | |
| Custom Headercustom-header | uifoundry | Blocks | Free | 4 deps · 3 files | |
| Features 1features-1 | uifoundry | Blocks | Free | 3 deps · 2 files | |
| Features 2features-2 | uifoundry | Blocks | Free | 4 deps · 2 files |
