import * as React from "react" import { cva, type VariantProps } from "class-variance-authority" import { cn } from "../libs/utils" // Base badge variants const badgeVariants = cva( "inline-flex items-center rounded-md px-2 py-1 text-xs font-medium", { variants: { variant: { default: "text-foreground bg-muted", secondary: "bg-secondary text-primary", destructive: "bg-destructive text-destructive", attention: "bg-attention text-attention", success: "bg-success text-success", info: "bg-info text-info", done: "bg-done text-done", }, }, defaultVariants: { variant: "default", }, } ) // Base Badge props interface interface BaseBadgeProps extends React.HTMLAttributes, VariantProps { children: React.ReactNode; onClick?: () => void; } // Base Badge component export function Badge({ className, variant, children, onClick, ...props }: BaseBadgeProps) { return ( {children} ) } const dotBadgeVariants = cva( // Base styles "inline-flex items-center gap-x-1.5 rounded-md px-2 py-1 text-xs font-medium ring-1 ring-inset ring-border", { variants: { variant: { default: "", success: "", destructive: "", attention: "", done: "", info: "", } }, defaultVariants: { variant: "default" } } ); // Separate dot variants to allow className overrides const dotVariants = cva("h-1.5 w-1.5", { variants: { variant: { default: "fill-foreground", success: "fill-success", destructive: "fill-destructive", attention: "fill-attention", done: "fill-done", info: "fill-info", } }, defaultVariants: { variant: "default" } }); interface DotBadgeProps extends React.HTMLAttributes, VariantProps { children?: React.ReactNode; // Add specific dot className prop for backward compatibility dotClassName?: string; } export function DotBadge({ variant, className, dotClassName, // New prop for dot-specific classes children, ...props }: DotBadgeProps) { return (
{children}
); }