2025-10-21 10:14:40 +02:00
|
|
|
import { ReactNode } from 'react';
|
|
|
|
|
|
|
|
|
|
interface BadgeProps {
|
|
|
|
|
children: ReactNode;
|
2025-10-23 21:33:32 +02:00
|
|
|
variant?: 'gray' | 'green' | 'yellow' | 'red' | 'blue' | 'glass';
|
|
|
|
|
border?: boolean;
|
2025-10-21 10:14:40 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default function Badge({
|
|
|
|
|
children,
|
2025-10-23 21:33:32 +02:00
|
|
|
variant = 'gray',
|
|
|
|
|
border = false,
|
2025-10-21 10:14:40 +02:00
|
|
|
}: BadgeProps) {
|
2025-10-23 21:33:32 +02:00
|
|
|
const baseClasses = "rounded-full px-2 py-0.5 text-sm";
|
2025-10-21 10:14:40 +02:00
|
|
|
|
|
|
|
|
const variantClasses = {
|
2025-10-23 21:33:32 +02:00
|
|
|
gray: "bg-gray-700/50 text-gray-300 border-gray-600/50",
|
|
|
|
|
green: "bg-green-500/20 text-green-400 border-green-500/30",
|
|
|
|
|
yellow: "bg-yellow-500/20 text-yellow-400 border-yellow-500/30",
|
|
|
|
|
red: "bg-red-500/20 text-red-400 border-red-500/30",
|
|
|
|
|
blue: "bg-blue-500/20 text-blue-400 border-blue-500/30",
|
|
|
|
|
glass: "bg-white/10 text-white border-white/20 backdrop-blur-sm"
|
2025-10-21 10:14:40 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<span
|
2025-10-28 15:23:18 +01:00
|
|
|
className={` ${border?"border":""} ${baseClasses} ${variantClasses[variant]}`}
|
2025-10-21 10:14:40 +02:00
|
|
|
>
|
|
|
|
|
{children}
|
|
|
|
|
</span>
|
|
|
|
|
);
|
|
|
|
|
}
|