{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "cta-banner",
  "type": "registry:ui",
  "dependencies": [
    "clsx",
    "tailwind-merge"
  ],
  "registryDependencies": [],
  "files": [
    {
      "path": "cta-banner.tsx",
      "target": "components/ui/cta-banner.tsx",
      "type": "registry:ui",
      "content": "import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport type CtaBannerHeadingLevel = \"h2\" | \"h3\" | \"h4\";\n\nexport interface CtaBannerProps\n  extends Omit<React.HTMLAttributes<HTMLElement>, \"title\"> {\n  title: React.ReactNode;\n  body?: React.ReactNode;\n  headingLevel?: CtaBannerHeadingLevel;\n  /** The call to action itself. Pass a Button. */\n  action?: React.ReactNode;\n  /** Mono kicker beside the footer content. */\n  footerLabel?: React.ReactNode;\n  /** Trailing proof row, e.g. a set of Chips. Draws a rule above itself. */\n  footer?: React.ReactNode;\n}\n\n/**\n * The closing panel of a marketing page. The accent wash is an inline gradient rather\n * than an arbitrary Tailwind value so it survives the registry copy without depending\n * on the consumer's Tailwind config seeing the class.\n */\nexport const CtaBanner = React.forwardRef<HTMLElement, CtaBannerProps>(\n  (\n    {\n      className,\n      title,\n      body,\n      headingLevel: Heading = \"h2\",\n      action,\n      footerLabel,\n      footer,\n      ...props\n    },\n    ref,\n  ) => (\n    <section\n      ref={ref}\n      style={{\n        backgroundImage:\n          \"linear-gradient(135deg, color-mix(in oklab, var(--color-accent-alt) 7%, transparent), color-mix(in oklab, var(--color-accent-alt) 2%, transparent) 50%, transparent 100%)\",\n      }}\n      className={cn(\n        \"relative isolate overflow-hidden rounded-2xl border border-accent-alt/15 px-8 py-7 max-md:px-5\",\n        className,\n      )}\n      {...props}\n    >\n      <div className=\"flex flex-wrap items-start justify-between gap-8\">\n        <div className=\"min-w-0\">\n          <Heading className=\"mb-2 text-[1.1rem] font-bold leading-tight text-ink\">\n            {title}\n          </Heading>\n          {body != null && (\n            <p className=\"max-w-2xl text-sm leading-6 text-muted\">{body}</p>\n          )}\n        </div>\n        {action}\n      </div>\n\n      {footer != null && (\n        <>\n          <div\n            data-cta-rule=\"\"\n            aria-hidden=\"true\"\n            className=\"my-5 h-px bg-border\"\n          />\n          <div className=\"flex flex-wrap items-center gap-3\">\n            {footerLabel != null && (\n              <span className=\"whitespace-nowrap font-mono text-[0.68rem] font-bold uppercase tracking-widest text-muted\">\n                {footerLabel}\n              </span>\n            )}\n            <div className=\"flex flex-wrap gap-1.5\">{footer}</div>\n          </div>\n        </>\n      )}\n    </section>\n  ),\n);\nCtaBanner.displayName = \"CtaBanner\";\n"
    }
  ]
}