{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "badge",
  "type": "registry:ui",
  "title": "Badge",
  "description": "Shadcn style badge in seven variants: default, accent, secondary, destructive, outline, ghost and link. Renders as a span or any element, with icon support.",
  "dependencies": [
    "@base-ui/react",
    "class-variance-authority"
  ],
  "registryDependencies": [
    "utils"
  ],
  "files": [
    {
      "path": "registry/ui/badge.tsx",
      "type": "registry:ui",
      "target": "components/ui/badge.tsx",
      "content": "\"use client\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n  [\n    \"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border px-2 text-[11px] font-medium whitespace-nowrap\",\n    \"transition-[background-color,border-color,color] duration-[70ms] ease-hairline\",\n    \"focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-bg outline-none\",\n    \"has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-danger\",\n    \"[&>svg]:pointer-events-none [&>svg]:size-3!\",\n  ].join(\" \"),\n  {\n    variants: {\n      variant: {\n        default: \"border-transparent bg-ink text-on-ink [a]:hover:bg-ink-hover\",\n        accent: \"border-accent-line bg-accent-soft text-accent-fg [a]:hover:bg-accent/15\",\n        secondary: \"border-transparent bg-sunken text-fg-muted [a]:hover:text-fg\",\n        destructive: \"border-danger/20 bg-danger/10 text-danger [a]:hover:bg-danger/15\",\n        outline: \"border-border bg-surface text-fg-muted shadow-xs [a]:hover:text-fg\",\n        ghost: \"border-transparent text-fg-muted hover:bg-sunken\",\n        link: \"border-transparent text-accent-fg underline-offset-4 hover:underline\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction Badge({\n  className,\n  variant = \"default\",\n  render,\n  ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps<typeof badgeVariants>) {\n  return useRender({\n    defaultTagName: \"span\",\n    props: mergeProps<\"span\">(\n      {\n        className: cn(badgeVariants({ variant }), className),\n        ...({ \"data-slot\": \"badge\" } as object),\n      },\n      props\n    ),\n    render,\n  })\n}\n\nexport { Badge, badgeVariants }\n"
    }
  ]
}
