/* tdd-guard:skip — UI primitive */
import * as React from "react"
import { cva, type VariantProps } from "class-variance-authority"

import { cn } from "@/lib/utils"

/**
 * Badge — Status-Pill fuer Tabellen, Cards, Charts (KAR-521 Stage 6)
 *
 * Variants:
 *   default       Primary-Tint Petrol-Akzent (PROD-Badge-Style)
 *   primary       Vollgefuellt Petrol
 *   status-red    DCT Risiko-rot
 *   status-yellow DCT Risiko-gelb
 *   status-grey   DCT Neutral
 *   status-green  DCT OK
 *   destructive   Kadi-v2-Error
 *   outline       Subtle Border
 *
 * Sizes: sm (10px) / md (11px Default) / lg (12px)
 *
 * Verwandt: DCT-Risikomatrix-Color-System (Brain DCT-CI 2026-05-22)
 */
const badgeVariants = cva(
  "inline-flex items-center rounded-sm font-semibold tracking-wider uppercase whitespace-nowrap",
  {
    variants: {
      variant: {
        default: "bg-primary-tint text-primary-dark",
        primary: "bg-primary text-primary-foreground",
        "status-red": "bg-status-red-strong text-foreground",
        "status-yellow": "bg-status-yellow text-foreground",
        "status-grey": "bg-status-grey text-foreground",
        "status-green": "bg-status-green text-foreground",
        destructive: "bg-destructive text-white",
        outline: "bg-card border border-border text-foreground",
      },
      size: {
        sm: "px-1.5 py-0.5 text-[10px]",
        md: "px-2 py-0.5 text-[11px]",
        lg: "px-2.5 py-1 text-xs",
      },
    },
    defaultVariants: {
      variant: "default",
      size: "md",
    },
  }
)

interface BadgeProps
  extends React.HTMLAttributes<HTMLSpanElement>,
    VariantProps<typeof badgeVariants> {}

function Badge({ className, variant, size, ...props }: BadgeProps) {
  return (
    <span
      data-slot="badge"
      data-variant={variant}
      className={cn(badgeVariants({ variant, size }), className)}
      {...props}
    />
  )
}

export { Badge, badgeVariants }
