import {
  CheckCircle2Icon,
  ClockAlertIcon,
  RotateCcwIcon,
  CircleXIcon,
  ClockIcon,
  BanIcon,
  type LucideIcon
} from 'lucide-react'

// This type is used to define the shape of our data.
// You can use a Zod schema here if you want.
export type Order = {
  id: string
  total: number
  status: 'PENDING' | 'PAID' | 'DECLINED' | 'EXPIRED' | 'REFUNDED' | 'CANCELED'
  payment_method: 'PIX' | 'CREDIT_CARD' | 'BANK_SLIP' | 'MANUAL'
  name: string
  email: string
}

export const statuses: Record<
  string,
  { icon: LucideIcon; color?: string; label: string }
> = {
  PENDING: {
    icon: ClockIcon,
    label: 'Pendente',
    color: 'text-blue-400 [&_svg]:text-blue-500'
  },
  PAID: {
    icon: CheckCircle2Icon,
    color: 'text-green-400 [&_svg]:text-green-500',
    label: 'Pago'
  },
  DECLINED: {
    icon: BanIcon,
    color: 'text-red-400 [&_svg]:text-red-500',
    label: 'Negado'
  },
  EXPIRED: {
    icon: ClockAlertIcon,
    color: 'text-orange-400 [&_svg]:text-orange-500',
    label: 'Expirado'
  },
  REFUNDED: {
    icon: RotateCcwIcon,
    color: 'text-orange-400 [&_svg]:text-orange-500',
    label: 'Estornado'
  },
  CANCELED: {
    icon: CircleXIcon,
    color: 'text-red-400 [&_svg]:text-red-500',
    label: 'Cancelado'
  }
}

export const labels: Record<string, string> = {
  PENDING: 'Pendente',
  PAID: 'Pago',
  DECLINED: 'Negado',
  EXPIRED: 'Expirado',
  REFUNDED: 'Estornado',
  CANCELED: 'Cancelado'
}

export const methods: Record<string, string> = {
  PIX: 'Pix',
  CREDIT_CARD: 'Cartão de crédito',
  BANK_SLIP: 'Boleto bancário',
  MANUAL: 'Depósito bancário'
}
