53 lines
1.8 KiB
TypeScript
53 lines
1.8 KiB
TypeScript
import { Badge } from '@/components/ui/badge';
|
|
import { cn } from '@/lib/utils';
|
|
|
|
const statuses: Record<string, { label: string; className: string }> = {
|
|
draft: { label: 'Rascunho', className: 'bg-slate-100 text-slate-700' },
|
|
pending_approval: {
|
|
label: 'Aguarda aprovação',
|
|
className: 'bg-amber-100 text-amber-800',
|
|
},
|
|
awaiting_information: {
|
|
label: 'Aguarda informação',
|
|
className: 'bg-orange-100 text-orange-800',
|
|
},
|
|
approved: {
|
|
label: 'Aprovada',
|
|
className: 'bg-emerald-100 text-emerald-800',
|
|
},
|
|
ready: {
|
|
label: 'Pronta para entrega',
|
|
className: 'bg-sky-100 text-sky-800',
|
|
},
|
|
delivered: { label: 'Entregue', className: 'bg-blue-100 text-blue-800' },
|
|
in_use: {
|
|
label: 'Em utilização',
|
|
className: 'bg-indigo-100 text-indigo-800',
|
|
},
|
|
returned: { label: 'Devolvida', className: 'bg-teal-100 text-teal-800' },
|
|
completed: { label: 'Concluída', className: 'bg-slate-100 text-slate-700' },
|
|
rejected: { label: 'Rejeitada', className: 'bg-rose-100 text-rose-800' },
|
|
cancelled: { label: 'Cancelada', className: 'bg-slate-100 text-slate-600' },
|
|
expired: { label: 'Expirada', className: 'bg-slate-100 text-slate-600' },
|
|
overdue: {
|
|
label: 'Devolução atrasada',
|
|
className: 'bg-red-100 text-red-800',
|
|
},
|
|
no_show: {
|
|
label: 'Não compareceu',
|
|
className: 'bg-slate-100 text-slate-700',
|
|
},
|
|
incident: { label: 'Incidente', className: 'bg-red-100 text-red-800' },
|
|
};
|
|
|
|
export function ReservationStatus({ status }: { status: string }) {
|
|
const item = statuses[status] ?? {
|
|
label: status,
|
|
className: 'bg-slate-100 text-slate-700',
|
|
};
|
|
|
|
return (
|
|
<Badge className={cn('border-0', item.className)}>{item.label}</Badge>
|
|
);
|
|
}
|