import { createFileRoute, useNavigate } from '@tanstack/react-router' import { useQuery } from '@tanstack/react-query' import { enrollmentListOptions } from '@/api/lessons' import { DataTable, type Column } from '@/components/shared/data-table' import { Button } from '@/components/ui/button' import { Badge } from '@/components/ui/badge' import { Plus } from 'lucide-react' import { useAuthStore } from '@/stores/auth.store' import type { Enrollment } from '@/types/lesson' export const Route = createFileRoute('/_authenticated/accounts/$accountId/enrollments')({ component: AccountEnrollmentsTab, }) function statusBadge(status: string) { const variants: Record = { active: 'default', paused: 'secondary', cancelled: 'destructive', completed: 'outline', } return {status} } const columns: Column[] = [ { key: 'member_name', header: 'Member', sortable: true, render: (e) => {e.memberName ?? e.memberId} }, { key: 'status', header: 'Status', sortable: true, render: (e) => statusBadge(e.status) }, { key: 'start_date', header: 'Start', sortable: true, render: (e) => <>{new Date(e.startDate + 'T00:00:00').toLocaleDateString()} }, { key: 'rate', header: 'Rate', render: (e) => <>{e.rate ? `$${e.rate}${e.billingInterval ? ` / ${e.billingInterval} ${e.billingUnit}` : ''}` : } }, ] function AccountEnrollmentsTab() { const { accountId } = Route.useParams() const navigate = useNavigate() const hasPermission = useAuthStore((s) => s.hasPermission) const { data, isLoading } = useQuery({ ...enrollmentListOptions({ accountId, page: 1, limit: 100 }), enabled: !!accountId, }) return (

{data?.pagination.total ?? 0} enrollment(s)

{hasPermission('lessons.edit') && ( )}
{}} onSort={() => {}} onRowClick={(e) => navigate({ to: '/lessons/enrollments/$enrollmentId', params: { enrollmentId: e.id }, search: {} as Record })} />
) }