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 (
{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}
)
}