38 lines
861 B
TypeScript
38 lines
861 B
TypeScript
import { Badge } from '@pikku/mantine/core'
|
|
import { asI18n } from '@pikku/react'
|
|
|
|
const STATUS_COLORS: Record<string, string> = {
|
|
submitted: 'yellow',
|
|
pending: 'yellow',
|
|
under_review: 'orange',
|
|
approved: 'blue',
|
|
confirmed: 'blue',
|
|
checked_in: 'green',
|
|
active: 'green',
|
|
open: 'green',
|
|
planned: 'blue',
|
|
checked_out: 'gray',
|
|
completed: 'gray',
|
|
full: 'orange',
|
|
closed: 'gray',
|
|
rejected: 'red',
|
|
declined: 'red',
|
|
cancelled: 'red',
|
|
blocked: 'pink',
|
|
waitlisted: 'orange',
|
|
}
|
|
|
|
function formatStatus(status: string): string {
|
|
return status.replace(/_/g, ' ').replace(/\b\w/g, (c) => c.toUpperCase())
|
|
}
|
|
|
|
export function StatusBadge({ status }: { status: string }) {
|
|
const color = STATUS_COLORS[status] ?? 'gray'
|
|
|
|
return (
|
|
<Badge color={color} variant="light" size="sm">
|
|
{asI18n(formatStatus(status))}
|
|
</Badge>
|
|
)
|
|
}
|