import { type ClassValue, clsx } from 'clsx';
import { twMerge } from 'tailwind-merge';

export function cn(...inputs: ClassValue[]) {
  return twMerge(clsx(inputs));
}

export function formatCurrency(amount: number): string {
  return new Intl.NumberFormat('es-GT', {
    style: 'currency',
    currency: 'GTQ',
  }).format(amount);
}

export function formatDate(date: string | Date): string {
  return new Intl.DateTimeFormat('es-GT', {
    year: 'numeric',
    month: '2-digit',
    day: '2-digit',
  }).format(new Date(date));
}

export function formatDateTime(date: string | Date): string {
  return new Intl.DateTimeFormat('es-GT', {
    year: 'numeric',
    month: '2-digit',
    day: '2-digit',
    hour: '2-digit',
    minute: '2-digit',
  }).format(new Date(date));
}

export function getEstadoLabel(estado: string): string {
  const labels: Record<string, string> = {
    borrador: 'Borrador',
    en_proceso: 'En Proceso',
    cotizada: 'Cotizada',
    aprobada: 'Aprobada',
    terminada: 'Terminada',
    entregada: 'Entregada',
  };
  return labels[estado] || estado;
}

export function getEstadoColor(estado: string): string {
  const colors: Record<string, string> = {
    borrador: 'bg-gray-500',
    en_proceso: 'bg-amber-500',
    cotizada: 'bg-violet-500',
    aprobada: 'bg-emerald-500',
    terminada: 'bg-cyan-500',
    entregada: 'bg-green-500',
  };
  return colors[estado] || 'bg-gray-500';
}
