{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "error34",
  "title": "Editorial Not Found Split",
  "description": "A calm not-found page with an error eyebrow, an oversized light heading and recovery actions on the left, beside a hairline list of the destinations people usually need instead.",
  "dependencies": [
    "clsx",
    "tailwind-merge",
    "lucide-react"
  ],
  "registryDependencies": [
    "button"
  ],
  "files": [
    {
      "path": "registry/error34/error34.tsx",
      "content": "\"use client\";\n\nimport { ArrowUpRight } from \"lucide-react\";\nimport Link from \"next/link\";\nimport { Badge23 } from \"@/components/beste/component/badge23\";\nimport { Button21 } from \"@/components/beste/component/button21\";\nimport { cn } from \"@/lib/utils\";\n\ninterface Badge {\n  label: string;\n}\n\ninterface ActionLink {\n  label: string;\n  href: string;\n  tone?: \"primary\" | \"neutral\" | \"outline\";\n}\n\ninterface HelpLink {\n  title: string;\n  description: string;\n  href: string;\n}\n\ninterface Error34Props {\n  badge?: Badge;\n  heading?: string;\n  description?: string;\n  buttons?: ActionLink[];\n  linksLabel?: string;\n  links?: HelpLink[];\n  className?: string;\n}\n\nexport const error34Demo: Error34Props = {\n  badge: { label: \"Error 404\" },\n  heading: \"This page moved, or never existed\",\n  description:\n    \"The link you followed does not lead anywhere on Sirius. Nothing is broken on your side, and your workspace is untouched.\",\n  buttons: [\n    { label: \"Back to home\", href: \"https://beste.co\" },\n    { label: \"Search the docs\", href: \"https://beste.co\", tone: \"outline\" },\n  ],\n  linksLabel: \"Where people usually go from here\",\n  links: [\n    {\n      title: \"Product tour\",\n      description: \"See how intake, scheduling, records, and billing sit on one surface.\",\n      href: \"https://beste.co\",\n    },\n    {\n      title: \"Help centre\",\n      description: \"Setup guides, imports, and answers written by the team that ships.\",\n      href: \"https://beste.co\",\n    },\n    {\n      title: \"Release notes\",\n      description: \"Everything that shipped this quarter, and what it changed for staff.\",\n      href: \"https://beste.co\",\n    },\n    {\n      title: \"Talk to us\",\n      description: \"A real person, usually the same working day.\",\n      href: \"https://beste.co\",\n    },\n  ],\n};\n\nexport function Error34({\n  badge,\n  heading,\n  description,\n  buttons = [],\n  linksLabel,\n  links = [],\n  className,\n}: Error34Props) {\n  return (\n    <section className={cn(\"bg-background py-16 md:py-24 w-full\", className)}>\n      <div className=\"mx-auto max-w-7xl px-4 md:px-6\">\n        <div className=\"grid gap-12 md:grid-cols-2 md:gap-16\">\n          <div>\n            {badge && <Badge23 label={badge.label} />}\n            {heading && (\n              <h1 className=\"mt-6 text-4xl font-light leading-[1.05] tracking-tight text-foreground sm:text-5xl md:text-6xl\">\n                {heading}\n              </h1>\n            )}\n            {description && (\n              <p className=\"mt-6 max-w-md text-base leading-relaxed text-muted-foreground md:text-lg\">\n                {description}\n              </p>\n            )}\n            {buttons.length > 0 && (\n              <div className=\"mt-8 flex flex-wrap gap-3\">\n                {buttons.map((button, index) => (\n                  <Button21 key={index} asChild label={button.label} tone={button.tone}>\n                    <Link href={button.href} />\n                  </Button21>\n                ))}\n              </div>\n            )}\n          </div>\n\n          <div className=\"md:pt-2\">\n            {linksLabel && <p className=\"text-base text-muted-foreground\">{linksLabel}</p>}\n            <div className=\"mt-4 border-t border-border\">\n              {links.map((link, index) => (\n                <Link\n                  key={index}\n                  href={link.href}\n                  className=\"group/error34 flex items-start justify-between gap-6 border-b border-border py-5\"\n                >\n                  <span className=\"flex flex-col gap-1\">\n                    <span className=\"text-lg font-medium text-foreground transition-colors group-hover/error34:text-primary\">\n                      {link.title}\n                    </span>\n                    <span className=\"text-base leading-relaxed text-muted-foreground\">\n                      {link.description}\n                    </span>\n                  </span>\n                  <ArrowUpRight\n                    className=\"mt-1 size-5 shrink-0 text-muted-foreground transition-transform motion-safe:group-hover/error34:translate-x-0.5 motion-safe:group-hover/error34:-translate-y-0.5\"\n                    aria-hidden=\"true\"\n                  />\n                </Link>\n              ))}\n            </div>\n          </div>\n        </div>\n      </div>\n    </section>\n  );\n}\n",
      "type": "registry:component",
      "target": "components/beste/block/error34.tsx"
    },
    {
      "path": "registry-components/badge23/badge23.tsx",
      "content": "\"use client\";\n\nimport { cn } from \"@/lib/utils\";\n\ntype Tone = \"muted\" | \"foreground\" | \"primary\";\n\ninterface Badge23Props {\n  /** Eyebrow label (rendered uppercase) */\n  label: string;\n  /** Text/border tone */\n  tone?: Tone;\n  /** Additional classes merged onto the root */\n  className?: string;\n}\n\nconst toneStyles: Record<Tone, string> = {\n  muted: \"border-border text-muted-foreground\",\n  foreground: \"border-foreground/30 text-foreground\",\n  primary: \"border-primary/40 text-primary\",\n};\n\nexport const badge23Demo: Badge23Props = {\n  label: \"Product\",\n};\n\nexport function Badge23({ label, tone = \"muted\", className }: Badge23Props) {\n  return (\n    <span\n      className={cn(\n        \"inline-flex items-center rounded-md border bg-transparent px-2.5 py-1 font-mono text-sm uppercase leading-none tracking-widest\",\n        toneStyles[tone],\n        className\n      )}\n    >\n      {label}\n    </span>\n  );\n}\n",
      "type": "registry:component",
      "target": "components/beste/component/badge23.tsx"
    },
    {
      "path": "registry-components/button21/button21.tsx",
      "content": "\"use client\";\n\nimport type { LucideIcon } from \"lucide-react\";\nimport * as React from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\n\ntype Tone = \"primary\" | \"neutral\" | \"outline\";\n\ninterface Button21Props {\n  /** Button label */\n  label: string;\n  /**\n   * Compose the rendered element shadcn-style (radix asChild): your element\n   * (e.g. a router Link) becomes the root and the button content is injected\n   * as its children. Pass the element without children of its own.\n   */\n  asChild?: boolean;\n  /** The element to render when `asChild` is set (e.g. your framework's Link) */\n  children?: React.ReactElement;\n  /**\n   * Fallback link: renders a plain `<a>`. Prefer `asChild` with your\n   * framework's Link component for client-side navigation.\n   */\n  href?: string;\n  /** Optional trailing icon */\n  icon?: LucideIcon;\n  /** Surface tone: solid accent (default), soft neutral pill, or hairline outline */\n  tone?: Tone;\n  /** Click handler (used when there is no href and no asChild) */\n  onClick?: React.MouseEventHandler<HTMLButtonElement>;\n  /** Additional classes merged onto the button */\n  className?: string;\n}\n\nconst toneStyles: Record<Tone, string> = {\n  primary: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n  neutral: \"bg-muted text-foreground hover:bg-muted/70\",\n  outline: \"border border-border bg-transparent text-foreground hover:bg-muted\",\n};\n\nexport const button21Demo: Button21Props = {\n  label: \"Book a demo\",\n};\n\nexport function Button21({\n  label,\n  asChild = false,\n  children,\n  href,\n  icon: Icon,\n  tone = \"primary\",\n  onClick,\n  className,\n}: Button21Props) {\n  const classes = cn(\n    \"group/button21 h-auto w-fit gap-2 rounded-md px-5 py-2.5 text-sm font-medium tracking-tight transition-colors\",\n    toneStyles[tone],\n    className\n  );\n\n  const inner = (\n    <>\n      {label}\n      {Icon && (\n        <Icon className=\"size-4 transition-transform motion-safe:group-hover/button21:translate-x-0.5\" />\n      )}\n    </>\n  );\n\n  if (asChild && React.isValidElement(children)) {\n    return (\n      <Button asChild className={classes}>\n        {React.cloneElement(children, undefined, inner)}\n      </Button>\n    );\n  }\n\n  if (href) {\n    return (\n      <Button asChild className={classes}>\n        <a href={href}>{inner}</a>\n      </Button>\n    );\n  }\n\n  return (\n    <Button type=\"button\" className={classes} onClick={onClick}>\n      {inner}\n    </Button>\n  );\n}\n",
      "type": "registry:component",
      "target": "components/beste/component/button21.tsx"
    }
  ],
  "type": "registry:block"
}