admin / Synapse-Cortex
publicSelf Hosted ITSM Tool with RBAC/Tenanting and MFA
Synapse-Cortex / Synapse-Cortexv2 / frontend / src / layout / Badges.tsx
2060 B · main
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | import type { ApprovalLevel, AssetSource, AssetStatus, TicketPriority, TicketSource, TicketStatus } from '../api/types' const pillBase = 'text-[10px] px-2 py-0.5 rounded uppercase border' export function PriorityPill({ priority }: { priority: TicketPriority }) { const cls = priority === 'critical' ? 'bg-accent-red/15 text-accent-red border-accent-red/30' : priority === 'high' ? 'bg-accent-orange/15 text-accent-orange border-accent-orange/30' : priority === 'medium' ? 'bg-accent-blue/15 text-accent-blue border-accent-blue/30' : 'bg-cortex-panel2 text-cortex-muted border-cortex-border' return <span className={`${pillBase} ${cls}`}>{priority}</span> } export function TicketStatusLabel({ status }: { status: TicketStatus }) { return <span className="text-xs uppercase text-chrome">{status.replace('_', ' ')}</span> } export function AssetStatusPill({ status }: { status: AssetStatus }) { const cls = status === 'in_service' ? 'bg-accent-green/15 text-accent-green border-accent-green/30' : status === 'in_repair' ? 'bg-accent-orange/15 text-accent-orange border-accent-orange/30' : status === 'retired' ? 'bg-accent-red/15 text-accent-red border-accent-red/30' : 'bg-cortex-panel2 text-cortex-muted border-cortex-border' return <span className={`${pillBase} ${cls}`}>{status.replace('_', ' ')}</span> } export function ApprovalLevelPill({ level }: { level: ApprovalLevel }) { const cls = level === 'auto_approve' ? 'bg-accent-orange/15 text-accent-orange border-accent-orange/30' : 'bg-accent-blue/15 text-accent-blue border-accent-blue/30' return <span className={`${pillBase} ${cls}`}>{level === 'auto_approve' ? 'auto-approve' : 'human-in-the-loop'}</span> } export function SourceBadge({ source }: { source: TicketSource | AssetSource }) { return ( <span className={`text-[10px] uppercase ${source === 'netscanxi' ? 'text-accent-blue' : 'text-cortex-muted'}`} > {source} </span> ) } |