import { cva, type VariantProps } from 'class-variance-authority';
import { cn } from '@/lib/utils';

const badgeVariants = cva(
  'inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-semibold tracking-wide',
  {
    variants: {
      tone: {
        neutral: 'bg-muted text-muted-foreground',
        primary: 'bg-primary-soft text-primary',
        teal: 'bg-teal-soft text-teal',
        success: 'bg-success-soft text-success',
        warning: 'bg-warning-soft text-warning',
        danger: 'bg-danger-soft text-danger',
      },
    },
    defaultVariants: { tone: 'neutral' },
  },
);

export type BadgeTone = NonNullable<VariantProps<typeof badgeVariants>['tone']>;

export function Badge({ className, tone, ...props }: React.ComponentProps<'span'> & VariantProps<typeof badgeVariants>) {
  return <span className={cn(badgeVariants({ tone }), className)} {...props} />;
}

/** Order-status mapping used across list + detail UIs. */
export const orderStatusTone: Record<string, BadgeTone> = {
  Pending: 'warning',
  Confirmed: 'teal',
  Processing: 'primary',
  Completed: 'success',
  Cancelled: 'danger',
  PENDING: 'warning',
  CONFIRMED: 'teal',
  PROCESSING: 'primary',
  COMPLETED: 'success',
  CANCELLED: 'danger',
};
