Openstatus www.openstatus.dev
at main 36 lines 1.1 kB view raw
1import { cva } from "class-variance-authority"; 2import type { VariantProps } from "class-variance-authority"; 3 4import { cn } from "../lib/utils"; 5 6const badgeVariants = cva( 7 "inline-flex items-center border rounded-full px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2", 8 { 9 variants: { 10 variant: { 11 default: 12 "bg-primary hover:bg-primary/80 border-transparent text-primary-foreground", 13 secondary: 14 "bg-secondary hover:bg-secondary/80 border-transparent text-secondary-foreground", 15 destructive: 16 "bg-destructive hover:bg-destructive/80 border-transparent text-destructive-foreground", 17 outline: "text-foreground", 18 }, 19 }, 20 defaultVariants: { 21 variant: "default", 22 }, 23 } 24); 25 26export interface BadgeProps 27 extends React.HTMLAttributes<HTMLDivElement>, 28 VariantProps<typeof badgeVariants> {} 29 30function Badge({ className, variant, ...props }: BadgeProps) { 31 return ( 32 <div className={cn(badgeVariants({ variant }), className)} {...props} /> 33 ); 34} 35 36export { Badge, badgeVariants };