ShadCN-Inspired Tailwind Badge Component
DSy lets you build badges in real time — adjust background colors, padding, and add icons per variant. Copy ShadCN-inspired React/Next.js code instantly
Badge
import * as React from 'react';
import { cva, type VariantProps } from 'class-variance-authority';
import { cn } from '@/lib/utils';
import { Slot } from '@radix-ui/react-slot';
const badgeVariants = cva(
"inline-flex items-center justify-center gap-1 whitespace-nowrap font-medium transition-colors px-2.5 py-0.5 text-xs rounded-full [&_svg]:size-3.5",
{
variants: {
variant: {
"default": "bg-gray-500 text-white border-transparent",
"primary": "bg-blue-500 text-white border-transparent",
"info": "bg-sky-200 text-sky-900 border-transparent",
"destructive": "bg-red-500 text-white border-transparent",
"success": "bg-green-500 text-white border-transparent",
"warning": "bg-yellow-500 text-white border-transparent"
},
},
defaultVariants: {
variant: 'default',
}
}
);
interface BadgeProps
extends React.HTMLAttributes<HTMLDivElement>,
VariantProps<typeof badgeVariants> {
asChild?: boolean;
}
const Badge = React.forwardRef<HTMLDivElement, BadgeProps>(
({ className, variant, asChild = false, ...props }, ref) => {
const Comp = asChild ? Slot : "div";
return (
<Comp
className={cn(badgeVariants({ variant }), className)}
ref={ref}
{...props}
/>
);
}
);
Badge.displayName = 'Badge';
export { Badge, badgeVariants };Badge Variant
Primary
Each variant can have unique styles, while base styles are shared globally.
Padding
Adjust spacingpx
10px
py
2px