Controlsradix-uiclass-variance-authority
Badge
Small capsule labels: solid, tinted, glass, secondary, outline, destructive.
Installation
pnpm dlx shadcn@latest add https://glasscn.app/r/badge.jsonOr with the namespace set up: shadcn add @glasscn/badge
Props
| Prop | Type | Default |
|---|---|---|
| variant | "default" | "tinted" | "glass" | "secondary" | "outline" | "destructive" | "default" |
Source
components/glass/badge.tsx
import * as React from "react"
import { cva, type VariantProps } from "class-variance-authority"
import { cn } from "cn"
import { Slot } from "radix-ui"
const badgeVariants = cva(
"inline-flex h-[calc(1.5rem*var(--glass-density))] w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-badge px-2.5 text-xs font-semibold whitespace-nowrap transition-colors focus-visible:ring-(length:--glass-ring-width) focus-visible:ring-ring/50 [&>svg]:pointer-events-none [&>svg]:size-3",
{
variants: {
variant: {
default: "bg-primary text-primary-foreground",
tinted: "bg-primary/16 text-primary dark:bg-primary/22",
glass: "glass [--glass-elevation:0_0_#0000] text-foreground",
secondary: "bg-fill text-foreground",
outline: "border border-glass-border text-foreground",
destructive: "bg-destructive/14 text-destructive",
},
},
defaultVariants: { variant: "default" },
}
)
function Badge({
className,
variant = "default",
asChild = false,
...props
}: React.ComponentProps<"span"> & VariantProps<typeof badgeVariants> & { asChild?: boolean }) {
const Comp = asChild ? Slot.Root : "span"
return <Comp data-slot="badge" data-variant={variant} className={cn(badgeVariants({ variant }), className)} {...props} />
}
export { Badge, badgeVariants }