5d3323617c
Replaces the old ad-hoc ReviewQueue page with a full governance-compliant workflow: filterable task list, detail panel with confidence/risk context, role-aware approve/reject/escalate/more-data actions, and persistent notes. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
import { Chip } from '@mui/material'
|
|
import type { ReviewTaskStatus } from '../../domain/review'
|
|
|
|
interface ReviewStatusBadgeProps {
|
|
status: ReviewTaskStatus
|
|
size?: 'small' | 'medium'
|
|
}
|
|
|
|
const CONFIG: Record<ReviewTaskStatus, { label: string; color: string }> = {
|
|
PENDING: { label: 'Ausstehend', color: '#d97706' },
|
|
IN_REVIEW: { label: 'In Prüfung', color: '#2563eb' },
|
|
APPROVED: { label: 'Genehmigt', color: '#1a7a4a' },
|
|
REJECTED: { label: 'Abgelehnt', color: '#c0392b' },
|
|
NEEDS_MORE_DATA: { label: 'Mehr Daten nötig', color: '#7c3aed' },
|
|
ESCALATED: { label: 'Eskaliert', color: '#ea580c' },
|
|
}
|
|
|
|
export function ReviewStatusBadge({ status, size = 'small' }: ReviewStatusBadgeProps) {
|
|
const { label, color } = CONFIG[status] ?? CONFIG.PENDING
|
|
return (
|
|
<Chip
|
|
size={size}
|
|
label={label}
|
|
sx={{
|
|
bgcolor: `${color}18`,
|
|
color,
|
|
fontWeight: 600,
|
|
fontSize: size === 'small' ? '0.7rem' : '0.8125rem',
|
|
border: `1px solid ${color}40`,
|
|
}}
|
|
/>
|
|
)
|
|
}
|