{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "section-heading",
  "type": "registry:ui",
  "dependencies": [
    "clsx",
    "tailwind-merge"
  ],
  "registryDependencies": [],
  "files": [
    {
      "path": "section-heading.tsx",
      "target": "components/ui/section-heading.tsx",
      "type": "registry:ui",
      "content": "import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport type SectionHeadingTone = \"accent\" | \"accent-alt\";\nexport type SectionHeadingLevel = \"h1\" | \"h2\" | \"h3\";\n\nconst eyebrowTone: Record<SectionHeadingTone, string> = {\n  accent: \"text-accent\",\n  \"accent-alt\": \"text-accent-alt\",\n};\n\nexport interface SectionHeadingProps\n  extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n  eyebrow?: React.ReactNode;\n  title: React.ReactNode;\n  as?: SectionHeadingLevel;\n  tone?: SectionHeadingTone;\n}\n\n/**\n * A display heading: mono uppercase eyebrow over a large fluid title.\n *\n * Not SectionLabel. That one is built around a numbered mono index with an\n * optional lede and stays at body scale. This is the section opener that\n * carries the page, and the two do not collapse into one component without\n * making both worse.\n */\nexport const SectionHeading = React.forwardRef<\n  HTMLDivElement,\n  SectionHeadingProps\n>(\n  (\n    {\n      className,\n      eyebrow,\n      title,\n      as: Tag = \"h2\",\n      tone = \"accent-alt\",\n      ...props\n    },\n    ref,\n  ) => (\n    <div ref={ref} className={cn(\"mb-10\", className)} {...props}>\n      {eyebrow != null && (\n        <p\n          className={cn(\n            \"mb-3 font-mono text-xs uppercase tracking-[0.18em]\",\n            eyebrowTone[tone],\n          )}\n        >\n          {eyebrow}\n        </p>\n      )}\n      <Tag className=\"max-w-3xl text-balance text-[clamp(1.75rem,4vw,3rem)] font-bold leading-[1.15] tracking-[-0.02em] text-ink\">\n        {title}\n      </Tag>\n    </div>\n  ),\n);\nSectionHeading.displayName = \"SectionHeading\";\n"
    }
  ]
}