import { Badge } from '@/components/ui/badge';

type StatusBadgeProps = {
    status: string;
    className?: string;
};

type BadgeVariant =
    | 'default'
    | 'secondary'
    | 'destructive'
    | 'outline'
    | 'blue'
    | 'green'
    | 'sky'
    | 'teal'
    | 'purple'
    | 'indigo'
    | 'red'
    | 'orange'
    | 'yellow'
    | 'lime'
    | 'pink'
    | 'gray'
    | 'ghost'
    | 'link';

function statusVariant(status: string): BadgeVariant {
    switch (status.toLowerCase()) {
        // ── Success / done ──────────────────────────────────────────────
        case 'completed':
        case 'paid':
        case 'active':
        case 'enabled':
        case 'confirmed':
            return 'green';

        // ── Scheduled / upcoming ────────────────────────────────────────
        case 'scheduled':
            return 'blue';

        // ── Moving / en route ───────────────────────────────────────────
        // ── Arrived / ready ─────────────────────────────────────────────
        case 'arrived':
            return 'teal';

        // ── Active work ──────────────────────────────────────────────────
        case 'in_progress':
        case 'processing':
        case 'overdue':
            return 'orange';

        // ── Waiting / unpaid ────────────────────────────────────────────
        case 'pending':
            return 'yellow';

        // ── Refunded / reversed ─────────────────────────────────────────
        case 'refunded':
            return 'purple';

        // ── Cancelled / error ───────────────────────────────────────────
        case 'cancelled':
        case 'failed':
            return 'red';

        // ── Inactive / absent ───────────────────────────────────────────
        case 'no_show':
        case 'disabled':
            return 'gray';

        default:
            return 'outline';
    }
}

export function StatusBadge({ status, className }: StatusBadgeProps) {
    return (
        <Badge variant={statusVariant(status)} className={className}>
            {status.replaceAll('_', ' ')}
        </Badge>
    );
}
