Internal ticketing app with CTI routing, severity levels, and n8n integration. Stack: Express + TypeScript + Prisma + PostgreSQL / React + Vite + Tailwind - JWT auth for users, API key auth for service accounts (Goddard/n8n) - CTI hierarchy (Category > Type > Item) for ticket routing - Severity 1-5, auto-close resolved tickets after 14 days - Gitea Actions CI/CD building separate server/client images - Production docker-compose.yml with Traefik integration Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
18 lines
763 B
TypeScript
18 lines
763 B
TypeScript
import { TicketStatus } from '../types'
|
|
|
|
const config: Record<TicketStatus, { label: string; className: string }> = {
|
|
OPEN: { label: 'Open', className: 'bg-blue-100 text-blue-800 border-blue-200' },
|
|
IN_PROGRESS: { label: 'In Progress', className: 'bg-yellow-100 text-yellow-800 border-yellow-200' },
|
|
RESOLVED: { label: 'Resolved', className: 'bg-green-100 text-green-800 border-green-200' },
|
|
CLOSED: { label: 'Closed', className: 'bg-gray-100 text-gray-500 border-gray-200' },
|
|
}
|
|
|
|
export default function StatusBadge({ status }: { status: TicketStatus }) {
|
|
const { label, className } = config[status]
|
|
return (
|
|
<span className={`inline-flex items-center px-2 py-0.5 rounded text-xs font-medium border ${className}`}>
|
|
{label}
|
|
</span>
|
|
)
|
|
}
|