'use client'; import { useState } from 'react'; import { useQuery } from '@tanstack/react-query'; import { Card, CardContent } from '@/components/ui/card'; import { Skeleton } from '@/components/ui/skeleton'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from '@/components/ui/table'; import { api } from '@/lib/api'; import { format } from 'date-fns'; interface Remittance { id: string; totalAmount: number; status: string; notes?: string; createdAt: string; collectedBy?: { firstName: string; lastName: string }; confirmedBy?: { firstName: string; lastName: string }; } const STATUS_COLORS: Record = { PENDING: 'bg-yellow-100 text-yellow-700', CONFIRMED: 'bg-emerald-100 text-emerald-700', REJECTED: 'bg-red-100 text-red-700', }; export default function RemittancesPage() { const [page, setPage] = useState(1); const limit = 20; const { data, isLoading } = useQuery({ queryKey: ['remittances', page], queryFn: async () => { const res = await api.get(`/api/v1/remittances?page=${page}&limit=${limit}`); return res.data; }, }); const items: Remittance[] = Array.isArray(data) ? data : (data?.data ?? data?.items ?? []); const total = (data as any)?.meta?.total ?? (data as any)?.total ?? items.length; return (

Remittances

Collector cash remittance records

Date Collector Status Total Amount Confirmed By Notes {isLoading ? ( Array.from({ length: 6 }).map((_, i) => ( {Array.from({ length: 6 }).map((_, j) => ( ))} )) ) : items.length === 0 ? ( No remittances yet ) : ( items.map((r) => ( {format(new Date(r.createdAt), 'MMM d, yyyy')} {r.collectedBy ? `${r.collectedBy.firstName} ${r.collectedBy.lastName}` : '—'} {r.status} ₱{Number(r.totalAmount).toLocaleString()} {r.confirmedBy ? `${r.confirmedBy.firstName} ${r.confirmedBy.lastName}` : '—'} {r.notes ?? '—'} )) )}
); }