Catalyst / admin/Synapse-Cortex 14.8 GB / 57.8 GB 40.0 GB free
Help Sign in

admin / Synapse-Cortex

public

Self Hosted ITSM Tool with RBAC/Tenanting and MFA

Code Issues Pull requests Pipelines Packages Security Insights Wiki Settings
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>
  )
}