{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "call-to-action-split",
  "title": "Call To Action Split",
  "description": "Split Payload call-to-action block: heading and copy on one side, CTA links and assurance on the other.",
  "registryDependencies": [],
  "files": [
    {
      "path": "payload-components/source/blocks/shared/callToActionFields.ts",
      "content": "import type { Field } from 'payload'\n\n/**\n * Shared field core for the Call To Action component family.\n *\n * Every call-to-action variant (call-to-action-centered, call-to-action-boxed,\n * call-to-action-signup, …) spreads these heading fields first and then appends\n * its own variant-specific shape — the CTA link group for the centered and boxed\n * layouts, or the email-capture fields for the signup layout. Editing the shared\n * title/description here updates every installed call-to-action block at once, so\n * the family never drifts field-by-field across a repo.\n *\n * Installed once per repo at `src/blocks/shared/callToActionFields.ts`; re-running\n * `payload-components add call-to-action-*` never overwrites a copy you have already edited.\n */\nexport const callToActionFields: Field[] = [\n  {\n    name: 'title',\n    type: 'text',\n    required: true,\n  },\n  {\n    name: 'description',\n    type: 'textarea',\n  },\n]\n",
      "type": "registry:file",
      "target": "~/src/blocks/shared/callToActionFields.ts"
    },
    {
      "path": "payload-components/source/blocks/CallToActionSplit/config.ts",
      "content": "import type { Block } from 'payload'\n\nimport { callToActionFields } from '@/blocks/shared/callToActionFields'\nimport { linkGroup } from '@/fields/linkGroup'\n\nexport const CallToActionSplit: Block = {\n  slug: 'callToActionSplit',\n  // Existing apps must migrate stored data before adopting this identifier:\n  // https://www.payload-components.xyz/docs/registry#installed-source-and-migrations\n  dbName: 'pc_cal_to_act_spl',\n  interfaceName: 'CallToActionSplitBlock',\n  fields: [\n    // Shared call-to-action core (title, description). Variant-specific fields\n    // follow; edit the shared shape in @/blocks/shared/callToActionFields.\n    ...callToActionFields,\n    {\n      name: 'assurance',\n      type: 'text',\n      admin: {\n        description: 'Optional reassurance line under the actions — pricing, timing, or terms.',\n      },\n    },\n    linkGroup({\n      overrides: {\n        admin: {\n          initCollapsed: true,\n        },\n        maxRows: 2,\n        minRows: 1,\n      },\n    }),\n  ],\n  labels: {\n    plural: 'Call To Action Split Blocks',\n    singular: 'Call To Action Split',\n  },\n}\n",
      "type": "registry:file",
      "target": "~/src/blocks/CallToActionSplit/config.ts"
    },
    {
      "path": "payload-components/source/blocks/CallToActionSplit/Component.tsx",
      "content": "import React from 'react'\n\nimport type { CallToActionSplitBlock as CallToActionSplitBlockData } from '@/payload-types'\n\nimport { CMSLink } from '@/components/Link'\nimport { cn } from '@/utilities/ui'\n\ntype Props = CallToActionSplitBlockData & {\n  id?: string\n  className?: string\n  disableInnerContainer?: boolean\n}\n\nexport const CallToActionSplitBlock: React.FC<Props> = ({\n  assurance,\n  className,\n  description,\n  disableInnerContainer,\n  id,\n  links,\n  title,\n}) => {\n  return (\n    <section className={cn('container', className)} id={id ? `block-${id}` : undefined}>\n      <div className=\"overflow-hidden rounded-frame border border-border/70 bg-card/35 px-6 py-10 sm:px-8 lg:px-12 lg:py-14\">\n        <div\n          className={cn(\n            'flex flex-col gap-8 lg:flex-row lg:items-center lg:justify-between lg:gap-16',\n            {\n              'mx-auto max-w-6xl': !disableInnerContainer,\n            },\n          )}\n        >\n          <div className=\"flex max-w-2xl flex-col gap-4\">\n            <h2 className=\"text-4xl font-medium tracking-display text-balance sm:text-5xl\">\n              {title}\n            </h2>\n\n            {description ? (\n              <p className=\"text-base leading-7 text-muted-foreground sm:text-lg\">{description}</p>\n            ) : null}\n          </div>\n\n          {links && links.length > 0 ? (\n            <div className=\"flex shrink-0 flex-col gap-3\">\n              <div className=\"flex flex-col gap-3 sm:flex-row lg:justify-end\">\n                {links.map(({ link }, index) => (\n                  <CMSLink\n                    key={index}\n                    appearance={link.appearance === 'outline' ? 'outline' : 'default'}\n                    {...link}\n                  />\n                ))}\n              </div>\n              {assurance ? (\n                <p className=\"text-sm leading-6 text-muted-foreground lg:text-end\">{assurance}</p>\n              ) : null}\n            </div>\n          ) : null}\n        </div>\n      </div>\n    </section>\n  )\n}\n",
      "type": "registry:file",
      "target": "~/src/blocks/CallToActionSplit/Component.tsx"
    }
  ],
  "meta": {
    "payloadComponent": {
      "installCommand": "payload-components add call-to-action-split",
      "postInstall": [
        "generate:types",
        "generate:importmap"
      ],
      "requiresPayloadComponentWrapper": true,
      "supportedTargets": [
        "payload-website-starter",
        "payload-blocks-app"
      ]
    }
  },
  "docs": "Payload Components installs this as a Payload CMS block for the Payload website starter shape.\n\nRecommended install:\n\n```bash\npnpm payload-components add call-to-action-split\n```\n\nDirect shadcn install URL:\n\n```bash\npnpm dlx shadcn@latest add https://www.payload-components.xyz/r/call-to-action-split.json\n```\n\nDirect shadcn installs only copy the block source files and shadcn UI dependencies. Use `payload-components add call-to-action-split` when you also want Payload layout registration, `RenderBlocks` wiring, `generate:types`, and `generate:importmap` handled for you.",
  "type": "registry:block"
}