import { StatusBadge } from "@/components/ui/badge";
import type { PushBroadcastStatusValue, PushDeliveryStatusValue } from "@/types/push";

type Variant =
  | "default"
  | "primary"
  | "secondary"
  | "outline"
  | "success"
  | "warning"
  | "destructive"
  | "accent"
  | "info";

const DELIVERY_STATUS_VARIANT: Record<PushDeliveryStatusValue, Variant> = {
  sent: "success",
  failed: "destructive",
  no_device: "secondary",
};

export function PushDeliveryStatusBadge({
  status,
  label,
}: {
  status: PushDeliveryStatusValue;
  label: string;
}) {
  return <StatusBadge variant={DELIVERY_STATUS_VARIANT[status]}>{label}</StatusBadge>;
}

const BROADCAST_STATUS_VARIANT: Record<PushBroadcastStatusValue, Variant> = {
  queued: "secondary",
  sending: "info",
  completed: "success",
};

export function PushBroadcastStatusBadge({
  status,
  label,
}: {
  status: PushBroadcastStatusValue;
  label: string;
}) {
  return <StatusBadge variant={BROADCAST_STATUS_VARIANT[status]}>{label}</StatusBadge>;
}