import { cva, type VariantProps } from "class-variance-authority" import { cn } from "cn" const badgeVariants = cva( "cn-badge group/badge inline-flex w-fit shrink-0 items-center justify-center overflow-hidden whitespace-nowrap focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none", { variants: { variant: { default: "cn-badge-variant-default", secondary: "cn-badge-variant-secondary", destructive: "cn-badge-variant-destructive", outline: "cn-badge-variant-outline", ghost: "cn-badge-variant-ghost", link: "cn-badge-variant-link", }, }, defaultVariants: { variant: "default", }, } ) function Badge({ className, variant = "default", render, ...props }: React.ComponentProps<"span"> & VariantProps & { render?: (props: React.HTMLAttributes) => React.ReactNode }) { if (render) { const renderProps = { "data-slot": "badge", "data-variant": variant, className: cn(badgeVariants({ variant }), className), ...props, } return render(renderProps) } return ( ) } export { Badge, badgeVariants }