{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "pricing-1",
  "type": "registry:block",
  "title": "Pricing 1",
  "description": "Pricing table with two-column card layout, featured plan badge, and pricing options",
  "dependencies": [
    "react",
    "next",
    "payload",
    "lucide-react"
  ],
  "registryDependencies": [
    "button",
    "card",
    "@uifoundry/header-field",
    "@uifoundry/subheader-field",
    "@uifoundry/description-field",
    "@uifoundry/style-utils",
    "@uifoundry/block-constants"
  ],
  "files": [
    {
      "path": "registry/payload/blocks/pricing/pricing-1/index.tsx",
      "content": "import type { ComponentPropsWithRef } from \"react\";\n\nimport { Check } from \"lucide-react\";\nimport Link from \"next/link\";\n\nimport type { Pricing_1_Block } from \"~/payload-types\";\n\nimport { cn } from \"@/registry/default/utils\";\nimport { Button } from \"@/registry/ui/button\";\nimport {\n\tCard,\n\tCardContent,\n\tCardDescription,\n\tCardHeader,\n\tCardTitle,\n} from \"@/registry/ui/card\";\n\nexport * from \"./config\";\n\nexport default function Pricing(props: NonNullable<Pricing_1_Block>) {\n\treturn (\n\t\t<section className=\"py-16 md:py-32\">\n\t\t\t<div className=\"mx-auto max-w-6xl px-6\">\n\t\t\t\t<div className=\"mx-auto max-w-2xl space-y-6 text-center\">\n\t\t\t\t\t<h1 className=\"text-center text-4xl font-semibold lg:text-5xl\">\n\t\t\t\t\t\t{props?.header ?? \"\"}\n\t\t\t\t\t</h1>\n\t\t\t\t\t<p>{props?.subheader ?? \"\"}</p>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"mt-8 justify-center gap-6 md:mt-20 md:flex\">\n\t\t\t\t\t{(props?.tiers ?? []).map((tier, index) => (\n\t\t\t\t\t\t<PricingTier\n\t\t\t\t\t\t\tfocusedTier={{\n\t\t\t\t\t\t\t\tindex: props?.config?.focusIndex ?? -1,\n\t\t\t\t\t\t\t\tlabel: props?.config?.focusLabel ?? \"Popular\",\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\t\tkey={`Pricing_1_Block-${index}`}\n\t\t\t\t\t\t\ttier={tier}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</section>\n\t);\n}\n\nfunction PricingTier({\n\tindex,\n\tfocusedTier = {\n\t\tindex: -1,\n\t\tlabel: \"Popular\",\n\t},\n\ttier,\n\t...divProps\n}: ComponentPropsWithRef<\"div\"> & {\n\tfocusedTier?: {\n\t\tindex: number;\n\t\tlabel: string;\n\t};\n\tindex: number;\n\ttier: NonNullable<Pricing_1_Block[\"tiers\"]>[number];\n}) {\n\tif (!tier) {return null;}\n\n\tconst annualPricing = tier.pricing.annual;\n\tconst monthlyPricing = tier.pricing.monthly;\n\tconst isFocused = focusedTier.index === index;\n\n\treturn (\n\t\t<Card className=\"relative my-8 basis-1/2 md:my-0\" {...divProps}>\n\t\t\t<span\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"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\",\n\t\t\t\t\t!isFocused && \"hidden\",\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{focusedTier.label}\n\t\t\t</span>\n\t\t\t<CardHeader>\n\t\t\t\t<CardTitle className=\"font-medium\">{tier.label}</CardTitle>\n\n\t\t\t\t<span className=\"my-3 block text-2xl font-semibold\">\n\t\t\t\t\t${tier.pricing.value}\n\t\t\t\t\t{annualPricing ? \" / yr\" : monthlyPricing ? \" / mo\" : \"\"}\n\t\t\t\t</span>\n\n\t\t\t\t{tier.description && (\n\t\t\t\t\t<CardDescription className=\"text-sm\">\n\t\t\t\t\t\t{tier.description}\n\t\t\t\t\t</CardDescription>\n\t\t\t\t)}\n\t\t\t\t<Button\n\t\t\t\t\tasChild\n\t\t\t\t\tclassName=\"mt-4 w-full\"\n\t\t\t\t\tvariant={!isFocused ? \"outline\" : undefined}\n\t\t\t\t>\n\t\t\t\t\t<Link href=\"\">{tier.callToAction ?? \"Get Started\"}</Link>\n\t\t\t\t</Button>\n\t\t\t</CardHeader>\n\n\t\t\t<CardContent className=\"space-y-4\">\n\t\t\t\t<hr className=\"border-dashed\" />\n\n\t\t\t\t<ul className=\"list-outside space-y-3 text-sm\">\n\t\t\t\t\t{(tier.features ?? []).map((feature, index) => (\n\t\t\t\t\t\t<li\n\t\t\t\t\t\t\tclassName=\"flex items-center gap-2\"\n\t\t\t\t\t\t\tkey={`Pricing_1_Block-tier-${tier.label}-feature-${index}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Check className=\"size-3\" />\n\t\t\t\t\t\t\t{feature.text}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t))}\n\t\t\t\t</ul>\n\t\t\t</CardContent>\n\t\t</Card>\n\t);\n}\n",
      "type": "registry:component",
      "target": "src/payload/blocks/Pricing/Pricing_1/index.tsx"
    },
    {
      "path": "registry/payload/blocks/pricing/pricing-1/config.ts",
      "content": "import type { Block } from \"payload\";\n\nimport {\n\tBLOCK_GROUP_PRICING,\n\tBLOCK_SLUG_PRICING_1,\n} from \"@/registry/default/lib/constants/blocks\";\nimport descriptionField from \"@/registry/default/lib/fields/description/config\";\nimport headerField from \"@/registry/default/lib/fields/header/config\";\nimport subHeaderField from \"@/registry/default/lib/fields/subheader/config\";\n\nexport const Pricing_1_Block: Block = {\n\tslug: BLOCK_SLUG_PRICING_1,\n\tadmin: {\n\t\tgroup: BLOCK_GROUP_PRICING,\n\t},\n\tfields: [\n\t\theaderField({\n\t\t\tdefaultValue: \"Choose Your Plan\",\n\t\t\trequired: false,\n\t\t}),\n\t\tsubHeaderField({\n\t\t\tdefaultValue:\n\t\t\t\t\"Choose the perfect plan for your needs. Get the template for self-hosting or let us handle everything with managed hosting.\",\n\t\t}),\n\t\t{\n\t\t\tname: \"config\",\n\t\t\ttype: \"group\",\n\t\t\tfields: [\n\t\t\t\t{\n\t\t\t\t\tname: \"focusIndex\",\n\t\t\t\t\ttype: \"number\",\n\t\t\t\t\tdefaultValue: -1,\n\t\t\t\t\tlabel: \"Featured Plan Index\",\n\t\t\t\t\trequired: false,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"focusLabel\",\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\tdefaultValue: \"Most Popular\",\n\t\t\t\t\tlabel: \"Featured Plan Label\",\n\t\t\t\t\trequired: true,\n\t\t\t\t},\n\t\t\t],\n\t\t\tlabel: \"Config\",\n\t\t},\n\t\t{\n\t\t\tname: \"tiers\",\n\t\t\ttype: \"array\",\n\t\t\tdefaultValue: [\n\t\t\t\t{\n\t\t\t\t\tcallToAction: \"Purchase Template\",\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"Perfect for agencies and freelancers who want to ship faster\",\n\t\t\t\t\tfeatures: [\n\t\t\t\t\t\t{ text: \"Complete PayloadCMS template\" },\n\t\t\t\t\t\t{ text: \"50+ premium components\" },\n\t\t\t\t\t\t{ text: \"Full TypeScript source code\" },\n\t\t\t\t\t\t{ text: \"AWS & Vercel deployment guides\" },\n\t\t\t\t\t\t{ text: \"Comprehensive documentation\" },\n\t\t\t\t\t\t{ text: \"Community support\" },\n\t\t\t\t\t\t{ text: \"Free updates for 1 year\" },\n\t\t\t\t\t\t{ text: \"Commercial license included\" },\n\t\t\t\t\t],\n\t\t\t\t\tlabel: \"Developer\",\n\t\t\t\t\tpricing: {\n\t\t\t\t\t\tannual: false,\n\t\t\t\t\t\tfixed: true,\n\t\t\t\t\t\tmonthly: false,\n\t\t\t\t\t\tvalue: 299,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcallToAction: \"Start Free Trial\",\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"Launch without hiring developers - managed hosting included\",\n\t\t\t\t\tfeatures: [\n\t\t\t\t\t\t{ text: \"No-code content editing\" },\n\t\t\t\t\t\t{ text: \"Managed AWS hosting\" },\n\t\t\t\t\t\t{ text: \"Custom domain included\" },\n\t\t\t\t\t\t{ text: \"SSL certificates & CDN\" },\n\t\t\t\t\t\t{ text: \"Automatic backups\" },\n\t\t\t\t\t\t{ text: \"Email support (24-48h)\" },\n\t\t\t\t\t\t{ text: \"99.9% uptime SLA\" },\n\t\t\t\t\t\t{ text: \"Export data anytime\" },\n\t\t\t\t\t],\n\t\t\t\t\tlabel: \"Founder\",\n\t\t\t\t\tpricing: {\n\t\t\t\t\t\tannual: false,\n\t\t\t\t\t\tfixed: false,\n\t\t\t\t\t\tmonthly: true,\n\t\t\t\t\t\tvalue: 49,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\tfields: [\n\t\t\t\t{\n\t\t\t\t\tname: \"label\",\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\trequired: true,\n\t\t\t\t},\n\t\t\t\tdescriptionField(),\n\t\t\t\t{\n\t\t\t\t\tname: \"callToAction\",\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\tdefaultValue: \"Get Started\",\n\t\t\t\t\trequired: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"pricing\",\n\t\t\t\t\ttype: \"group\",\n\t\t\t\t\tfields: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"value\",\n\t\t\t\t\t\t\ttype: \"number\",\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"annual\",\n\t\t\t\t\t\t\ttype: \"checkbox\",\n\t\t\t\t\t\t\tdefaultValue: false,\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"monthly\",\n\t\t\t\t\t\t\ttype: \"checkbox\",\n\t\t\t\t\t\t\tdefaultValue: false,\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"fixed\",\n\t\t\t\t\t\t\ttype: \"checkbox\",\n\t\t\t\t\t\t\tdefaultValue: true,\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"features\",\n\t\t\t\t\ttype: \"array\",\n\t\t\t\t\tfields: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"text\",\n\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t\tlabel: {\n\t\t\t\tplural: \"Payment Tiers\",\n\t\t\t\tsingular: \"Payment Tier\",\n\t\t\t},\n\t\t},\n\t],\n\tinterfaceName: \"Pricing_1_Block\",\n\tlabels: {\n\t\tplural: \"Pricing 1's\",\n\t\tsingular: \"Pricing 1\",\n\t},\n};\n",
      "type": "registry:component",
      "target": "src/payload/blocks/Pricing/Pricing_1/config.ts"
    }
  ]
}