{"$schema":"https://ui.shadcn.com/schema/registry-item.json","name":"badge","title":"Badge","description":"A small inline label for surfacing statuses, categories, and metadata next to other content.","dependencies":["cn","@base-ui/react","class-variance-authority"],"files":[{"path":"components/ui/badge.tsx","content":"import { 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 \"cn\"\n\nconst badgeVariants = cva(\n  \"group/badge inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full py-0.5 text-2xs font-medium whitespace-nowrap outline-1 -outline-offset-1 outline-transparent transition-all outline-solid focus-visible:ring-3 focus-visible:ring-ring/30 focus-visible:outline-ring aria-invalid:ring-destructive/20 aria-invalid:outline-destructive dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n        secondary: \"bg-fill-2 text-foreground\",\n        destructive:\n          \"bg-destructive/10 text-destructive-foreground focus-visible:ring-destructive/20 focus-visible:outline-destructive/50 [a]:hover:bg-destructive/15\",\n        outline:\n          \"bg-control text-foreground outline-1 -outline-offset-1 outline-border [a]:hover:bg-fill-2\",\n        ghost: \"text-foreground hover:bg-fill-2\",\n        link: \"text-primary underline underline-offset-4\",\n      },\n      size: {\n        default:\n          \"h-5 min-w-5 px-2 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5\",\n        lg: \"h-6 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&>svg]:size-4!\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Badge({\n  className,\n  variant = \"default\",\n  size = \"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, size }), className),\n      },\n      props\n    ),\n    render,\n    state: {\n      slot: \"badge\",\n      variant,\n      size,\n    },\n  })\n}\n\nexport { Badge, badgeVariants }\n","type":"registry:ui"}],"cssVars":{"theme":{"color-destructive-foreground":"var(--destructive-foreground)","color-fill-2":"var(--fill-2)","color-control":"var(--control)","text-2xs--letter-spacing":"-0.005em","text-2xs":"0.75rem","text-2xs--line-height":"calc(1 / 0.75)"},"light":{"destructive-foreground":"oklch(0.505 0.213 27.518)","fill-2":"oklch(0.556 0 0 / 8%)","control":"oklch(1 0 0)"},"dark":{"destructive-foreground":"oklch(0.704 0.191 22.216)","fill-2":"oklch(1 0 0 / 10%)","control":"oklch(0.237 0 0)"}},"categories":["content"],"type":"registry:ui"}