{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "badge",
  "type": "registry:ui",
  "title": "Badge",
  "description": "@interlace/ui — badge primitive (shadcn-compatible).",
  "dependencies": [
    "@base-ui/react",
    "class-variance-authority"
  ],
  "registryDependencies": [
    "theme"
  ],
  "files": [
    {
      "path": "registry/interlace-ui/badge.tsx",
      "target": "components/ui/badge.tsx",
      "type": "registry:ui",
      "content": "'use client';\n\nimport * as React from 'react';\nimport { useRender } from '@base-ui/react/use-render';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\nconst badgeVariants = cva(\n  'inline-flex items-center justify-center rounded-full border border-transparent px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden',\n  {\n    variants: {\n      variant: {\n        default: 'bg-primary text-primary-foreground [a&]:hover:bg-primary/90',\n        secondary:\n          'bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90',\n        destructive:\n          'bg-destructive text-destructive-foreground [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60',\n        outline:\n          'border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground',\n        ghost: '[a&]:hover:bg-accent [a&]:hover:text-accent-foreground',\n        link: 'text-primary underline-offset-4 [a&]:hover:underline',\n      },\n    },\n    defaultVariants: {\n      variant: 'default',\n    },\n  },\n);\n\ntype BadgeProps = React.ComponentProps<'span'> &\n  VariantProps<typeof badgeVariants> & {\n    render?: useRender.RenderProp;\n  };\n\nfunction Badge({\n  className,\n  variant = 'default',\n  render,\n  ...props\n}: BadgeProps) {\n  const element = useRender({\n    render: render ?? <span />,\n    props: {\n      'data-slot': 'badge',\n      'data-variant': variant ?? undefined,\n      className: cn(badgeVariants({ variant }), className),\n      ...props,\n    },\n  });\n\n  return element;\n}\n\nexport { Badge, badgeVariants };\nexport type { BadgeProps };\n"
    }
  ]
}
