Monorepo for wisp.place. A static site hosting service built on top of the AT Protocol. wisp.place
1import * as React from "react" 2import { Slot } from "@radix-ui/react-slot" 3import { cva, type VariantProps } from "class-variance-authority" 4 5import { cn } from "@public/lib/utils" 6 7const badgeVariants = cva( 8 "inline-flex items-center justify-center rounded-full border 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", 9 { 10 variants: { 11 variant: { 12 default: 13 "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90", 14 secondary: 15 "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90", 16 destructive: 17 "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60", 18 outline: 19 "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground", 20 }, 21 }, 22 defaultVariants: { 23 variant: "default", 24 }, 25 } 26) 27 28function Badge({ 29 className, 30 variant, 31 asChild = false, 32 ...props 33}: React.ComponentProps<"span"> & 34 VariantProps<typeof badgeVariants> & { asChild?: boolean }) { 35 const Comp = asChild ? Slot : "span" 36 37 return ( 38 <Comp 39 data-slot="badge" 40 className={cn(badgeVariants({ variant }), className)} 41 {...props} 42 /> 43 ) 44} 45 46export { Badge, badgeVariants }