"use client" import Link from "next/link" import { formatDistanceToNowStrict } from "date-fns" import { ptBR } from "date-fns/locale" import { LayoutGrid } from "lucide-react" import type { Ticket, TicketPriority, TicketStatus } from "@/lib/schemas/ticket" import { Badge } from "@/components/ui/badge" import { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyTitle } from "@/components/ui/empty" import { cn } from "@/lib/utils" type TicketsBoardProps = { tickets: Ticket[] } const statusLabel: Record = { PENDING: "Pendente", AWAITING_ATTENDANCE: "Em andamento", PAUSED: "Pausado", RESOLVED: "Resolvido", } const statusChipClass: Record = { PENDING: "bg-amber-100 text-amber-800 ring-1 ring-amber-200", AWAITING_ATTENDANCE: "bg-sky-100 text-sky-700 ring-1 ring-sky-200", PAUSED: "bg-violet-100 text-violet-700 ring-1 ring-violet-200", RESOLVED: "bg-emerald-100 text-emerald-700 ring-1 ring-emerald-200", } const priorityLabel: Record = { LOW: "Baixa", MEDIUM: "Média", HIGH: "Alta", URGENT: "Urgente", } const priorityChipClass: Record = { LOW: "bg-slate-100 text-slate-700", MEDIUM: "bg-sky-100 text-sky-700", HIGH: "bg-amber-100 text-amber-800", URGENT: "bg-rose-100 text-rose-700", } function formatUpdated(date: Date) { return formatDistanceToNowStrict(date, { addSuffix: true, locale: ptBR }) } export function TicketsBoard({ tickets }: TicketsBoardProps) { if (!tickets.length) { return (
Nenhum ticket encontrado Ajuste os filtros ou crie um novo ticket para visualizar aqui na visão em quadro.
) } return (
{tickets.map((ticket) => (
#{ticket.reference} {statusLabel[ticket.status]}
{formatUpdated(ticket.updatedAt)}

{ticket.subject || "Sem assunto"}

Fila: {ticket.queue ?? "Sem fila"} Prioridade: {priorityLabel[ticket.priority]}
Empresa
{ticket.company?.name ?? "Sem empresa"}
Responsável
{ticket.assignee?.name ?? "Sem responsável"}
Solicitante
{ticket.requester?.name ?? ticket.requester?.email ?? "—"}
{ticket.tags.length > 0 ? (
{ticket.tags.slice(0, 3).map((tag) => ( {tag} ))} {ticket.tags.length > 3 ? ( +{ticket.tags.length - 3} ) : null}
) : null} ))}
) }