/** * TicketCard.tsx * Card de ticket para uso na lista do dashboard. */ import { useNavigate } from 'react-router-dom'; import type { Ticket } from '@/lib/api'; import { StatusBadge } from './StatusBadge'; import { PriorityBadge } from './PriorityBadge'; import styles from './TicketCard.module.css'; interface TicketCardProps { ticket: Ticket; } function formatDate(iso: string): string { return new Intl.DateTimeFormat('pt-BR', { day: '2-digit', month: 'short', hour: '2-digit', minute: '2-digit', }).format(new Date(iso)); } export function TicketCard({ ticket }: TicketCardProps) { const navigate = useNavigate(); return (
navigate(`/tickets/${ticket.id}`)} role="button" tabIndex={0} onKeyDown={(e) => e.key === 'Enter' && navigate(`/tickets/${ticket.id}`)} aria-label={`Ticket #${ticket.id}: ${ticket.title}`} >
#{ticket.id}

{ticket.title}

{ticket.description}

Aberto em {formatDate(ticket.createdAt)} {ticket.assigneeId ? ( Agente #{ticket.assigneeId} ) : ( Sem agente )}
); }