import { BanIcon, CheckCircle2Icon, CircleDashedIcon, ClockIcon, HelpCircleIcon, type LucideIcon } from 'lucide-react' import { Abbr } from '@repo/ui/components/abbr' import { DateTime } from '@repo/ui/components/datetime' import { Avatar, AvatarFallback } from '@repo/ui/components/ui/avatar' import { Badge } from '@repo/ui/components/ui/badge' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@repo/ui/components/ui/card' import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@repo/ui/components/ui/table' import { cn, initials } from '@repo/ui/lib/utils' import type { Enrollment, Seat } from './route' const dtOptions: Intl.DateTimeFormatOptions = { hour: '2-digit', minute: '2-digit', second: '2-digit' } export function Enrollments({ enrollments, seats }: { enrollments: Enrollment[] seats: Seat[] }) { return ( MatrĂ­culas relacionadas Acompanhe o status e os detalhes de todas as matrĂ­culas relacionadas a esta compra. Colaborador Curso Status Executada em Agendada em Revogada em {enrollments.map( ( { user, course, status, executed_at, scheduled_at, rollback_at }, idx ) => { return (
{initials(user.name)}
  • {user.name}
  • {user.email}
{course.name} {executed_at ? ( {executed_at} ) : null} {scheduled_at ? ( {scheduled_at} ) : null} {rollback_at ? ( {rollback_at} ) : null}
) } )}
) } const statuses: Record = { PENDING: { icon: CircleDashedIcon, color: 'text-blue-400 [&_svg]:text-blue-500' }, SCHEDULED: { icon: ClockIcon, color: 'text-blue-400 [&_svg]:text-blue-500' }, EXECUTED: { icon: CheckCircle2Icon, color: 'text-green-400 [&_svg]:text-green-500' }, ROLLBACK: { icon: BanIcon, color: 'text-orange-400 [&_svg]:text-orange-500' } } const labels: Record = { PENDING: 'Pendente', EXECUTED: 'Executado', SCHEDULED: 'Agendado', ROLLBACK: 'Revogado' } function Status({ status: s }: { status: string }) { const status = labels[s] ?? s const { icon: Icon, color } = statuses?.[s] ?? { icon: HelpCircleIcon } return ( {status} ) }