{"version":3,"sources":["../components/ui/badge.tsx"],"sourcesContent":["\"use client\";\nimport * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Slot } from 'radix-ui';\nimport { cn } from '../../utils/ui';\n\nconst badgeVariants = cva(\n  [\n    '[&>svg]:pointer-events-none [&>svg]:size-3',\n    'aria-invalid:border-destructive',\n    'aria-invalid:ring-destructive/20',\n    'border',\n    'border-transparent',\n    'dark:aria-invalid:ring-destructive/40',\n    'focus-visible:border-ring',\n    'focus-visible:ring-[3px]',\n    'focus-visible:ring-ring/50',\n    'font-medium',\n    'gap-1',\n    'inline-flex',\n    'items-center',\n    'justify-center',\n    'overflow-hidden',\n    'px-2',\n    'py-0.5',\n    'rounded-sm',\n    'shrink-0',\n    'text-xs',\n    'transition-[color,box-shadow]',\n    'w-fit',\n    'whitespace-nowrap',\n    'transition-colors',\n  ],\n  {\n    variants: {\n      variant: {\n        primary: 'bg-primary text-primary-foreground hover:bg-primary/90',\n        secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/90',\n        action: 'bg-action text-action-foreground hover:bg-action/90',\n        success: 'bg-success text-success-foreground hover:bg-success/90',\n        warning: 'bg-warning text-warning-foreground hover:bg-warning/90',\n        danger: 'bg-danger text-danger-foreground hover:bg-danger/90',\n        info: 'bg-info text-info-foreground hover:bg-info/90',\n        light: 'bg-light text-light-foreground hover:bg-light/90',\n        dark: 'bg-dark text-dark-foreground hover:bg-dark/90',\n        accent: 'bg-accent text-accent-foreground hover:bg-accent/90',\n        destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90',\n        muted: 'bg-muted text-muted-foreground hover:bg-muted/90',\n        link: 'text-primary underline-offset-4 hover:underline',\n        ghost: 'hover:bg-light hover:text-light-foreground',\n      },\n      size: {\n        sm: 'h-5 px-2 text-xs',\n        default: 'h-6 px-3 text-sm',\n        lg: 'h-7 px-4 text-base',\n      },\n      appearance: {\n        solid: '',\n        outline: 'bg-background border',\n        'outline-filled': 'bg-background border',\n      },\n    },\n    defaultVariants: {\n      variant: 'primary',\n      size: 'default',\n      appearance: 'solid',\n    },\n  },\n);\n\nexport type BadgeVariant = NonNullable<VariantProps<typeof badgeVariants>['variant']>;\nexport type BadgeSize = NonNullable<VariantProps<typeof badgeVariants>['size']>;\nexport type BadgeAppearance = NonNullable<VariantProps<typeof badgeVariants>['appearance']>;\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof badgeVariants> {\n  asChild?: boolean;\n}\n\nfunction getOutlineClasses(variant: BadgeVariant) {\n  const colors: Record<BadgeVariant, string> = {\n    primary: 'border-primary text-primary hover:bg-primary/10',\n    secondary: 'border-secondary text-secondary hover:bg-secondary/10',\n    action: 'border-action text-action hover:bg-action/10',\n    success: 'border-success text-success hover:bg-success/10',\n    warning: 'border-warning text-warning hover:bg-warning/10',\n    danger: 'border-danger text-danger hover:bg-danger/10',\n    info: 'border-info text-info hover:bg-info/10',\n    light: 'border-light text-light-foreground hover:bg-light/10',\n    dark: 'border-dark text-dark hover:bg-dark/10',\n    accent: 'border-accent text-accent hover:bg-accent/10',\n    destructive: 'border-destructive text-destructive hover:bg-destructive/10',\n    muted: 'border-muted text-muted-foreground hover:bg-muted/10',\n    link: 'text-primary',\n    ghost: 'text-light-foreground',\n  };\n  return colors[variant];\n}\n\nfunction getOutlineFilledClasses(variant: BadgeVariant) {\n  const colors: Record<BadgeVariant, string> = {\n    primary: 'hover:bg-primary hover:text-primary-foreground',\n    secondary: 'hover:bg-secondary hover:text-secondary-foreground',\n    action: 'hover:bg-action hover:text-action-foreground',\n    success: 'hover:bg-success hover:text-success-foreground',\n    warning: 'hover:bg-warning hover:text-warning-foreground',\n    danger: 'hover:bg-danger hover:text-danger-foreground',\n    info: 'hover:bg-info hover:text-info-foreground',\n    light: 'hover:bg-light hover:text-light-foreground',\n    dark: 'hover:bg-dark hover:text-dark-foreground',\n    accent: 'hover:bg-accent hover:text-accent-foreground',\n    destructive: 'hover:bg-destructive hover:text-destructive-foreground',\n    muted: 'hover:bg-muted hover:text-muted-foreground',\n    link: 'hover:underline',\n    ghost: 'hover:bg-light',\n  };\n  return colors[variant];\n}\n\nfunction Badge({\n  className,\n  variant,\n  size,\n  appearance,\n  asChild = false,\n  ...props\n}: React.ComponentProps<'span'> & VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n  const Comp = asChild ? Slot.Root : 'span';\n\n  const outlineClasses =\n    appearance === 'outline' || appearance === 'outline-filled' ? [getOutlineClasses(variant as BadgeVariant)] : [];\n  if (appearance === 'outline-filled') {\n    outlineClasses.push(getOutlineFilledClasses(variant as BadgeVariant));\n  }\n\n  return (\n    <Comp\n      data-slot=\"badge\"\n      data-variant={variant}\n      className={cn(badgeVariants({ variant, size, appearance }), className, outlineClasses)}\n      {...props}\n    />\n  );\n}\nexport { Badge, badgeVariants };\n"],"mappings":";;;;;;;;;AACA,YAAY,WAAW;AACvB,SAAS,WAA8B;AACvC,SAAS,YAAY;AAGrB,IAAM,gBAAgB;AAAA,EACpB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,QACP,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,aAAa;AAAA,QACb,OAAO;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,MACN;AAAA,MACA,YAAY;AAAA,QACV,OAAO;AAAA,QACP,SAAS;AAAA,QACT,kBAAkB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,MACN,YAAY;AAAA,IACd;AAAA,EACF;AACF;AAUA,SAAS,kBAAkB,SAAuB;AAChD,QAAM,SAAuC;AAAA,IAC3C,SAAS;AAAA,IACT,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AACA,SAAO,OAAO,OAAO;AACvB;AAEA,SAAS,wBAAwB,SAAuB;AACtD,QAAM,SAAuC;AAAA,IAC3C,SAAS;AAAA,IACT,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AACA,SAAO,OAAO,OAAO;AACvB;AAEA,SAAS,MAAM,IAO+E;AAP/E,eACb;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,EA3HZ,IAsHe,IAMV,kBANU,IAMV;AAAA,IALH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,OAAO,UAAU,KAAK,OAAO;AAEnC,QAAM,iBACJ,eAAe,aAAa,eAAe,mBAAmB,CAAC,kBAAkB,OAAuB,CAAC,IAAI,CAAC;AAChH,MAAI,eAAe,kBAAkB;AACnC,mBAAe,KAAK,wBAAwB,OAAuB,CAAC;AAAA,EACtE;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAc;AAAA,MACd,WAAW,GAAG,cAAc,EAAE,SAAS,MAAM,WAAW,CAAC,GAAG,WAAW,cAAc;AAAA,OACjF;AAAA,EACN;AAEJ;","names":[]}