28 lines
783 B
TypeScript
28 lines
783 B
TypeScript
import { type HTMLAttributes } from 'react';
|
|
import { cn } from '../../lib/utils';
|
|
|
|
const variants = {
|
|
default: 'bg-slate-100 text-slate-700',
|
|
primary: 'bg-primary-100 text-primary-800',
|
|
success: 'bg-emerald-100 text-emerald-800',
|
|
warning: 'bg-amber-100 text-amber-800',
|
|
danger: 'bg-red-100 text-red-800',
|
|
outline: 'border border-slate-200 bg-white text-slate-700',
|
|
};
|
|
|
|
export interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
|
|
variant?: keyof typeof variants;
|
|
}
|
|
|
|
export function Badge({ className, variant = 'default', ...props }: BadgeProps) {
|
|
return (
|
|
<span
|
|
className={cn(
|
|
'inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium',
|
|
variants[variant],
|
|
className,
|
|
)}
|
|
{...props}
|
|
/>
|
|
);
|
|
}
|