Files
ai-agent/web/app/dashboard/tickets/_components/ticket-priority-badge.tsx
T
2026-04-24 12:01:30 +08:00

44 lines
1.2 KiB
TypeScript

"use client"
import { useEffect, useState } from "react"
import { Badge } from "@/components/ui/badge"
import { getTicketPriorityMap } from "@/lib/ticket-priority"
const priorityClassNameMap: Record<number, string> = {
0: "bg-slate-500/10 text-slate-700 border-slate-500/20",
1: "bg-blue-500/10 text-blue-700 border-blue-500/20",
2: "bg-amber-500/10 text-amber-700 border-amber-500/20",
3: "bg-red-500/10 text-red-700 border-red-500/20",
4: "bg-fuchsia-500/10 text-fuchsia-700 border-fuchsia-500/20",
}
export function ticketPriorityLabel(priority: number, priorityName?: string) {
return priorityName?.trim() || `P${priority}`
}
export function TicketPriorityBadge({
priority,
priorityName,
}: {
priority: number
priorityName?: string
}) {
const [priorityMap, setPriorityMap] = useState<Record<number, string>>({})
useEffect(() => {
void (async () => {
setPriorityMap(await getTicketPriorityMap())
})()
}, [])
return (
<Badge
variant="outline"
className={priorityClassNameMap[priority] ?? priorityClassNameMap[0]}
>
{ticketPriorityLabel(priority, priorityName || priorityMap[priority])}
</Badge>
)
}