import { useMemo } from 'react'; import { useQuery } from '@tanstack/react-query'; import { type ColumnDef } from '@tanstack/react-table'; import { Landmark, RefreshCw, Hash, CalendarDays, Banknote, Download } from 'lucide-react'; import { type Transaction, type SalariosSummary, getSalarios, getSalariosSummary } from '@/lib/api'; import { formatAmount, formatDate } from '@/lib/format'; import ErrorState from '@/components/ErrorState'; import { DataTable } from '@/components/ui/data-table'; import { DataTableColumnHeader } from '@/components/ui/data-table-column-header'; import { Card, CardContent } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; export default function Salarios() { const query = useQuery({ queryKey: ['salarios'], queryFn: async () => { const [depRes, sumRes] = await Promise.all([ getSalarios({ limit: 500 }), getSalariosSummary(), ]); return { deposits: depRes.data, summary: sumRes.data }; }, }); const deposits = query.data?.deposits ?? []; const summary = query.data?.summary ?? null; const loading = query.isFetching; const fetchData = () => query.refetch(); const columns = useMemo[]>( () => [ { accessorKey: 'date', header: ({ column }) => , cell: ({ row }) => { const d = new Date(row.original.date); return (
{formatDate(row.original.date)} {d.getFullYear()}
); }, }, { accessorKey: 'merchant', header: ({ column }) => , cell: ({ row }) => (
{row.original.merchant} {row.original.notes && (

{row.original.notes}

)}
), }, { accessorKey: 'amount', header: ({ column }) => , cell: ({ row }) => ( +{formatAmount(row.original.amount, row.original.currency)} ), meta: { className: 'text-right' }, }, { accessorKey: 'bank', header: ({ column }) => , cell: ({ row }) => ( {row.original.bank} ), }, { accessorKey: 'reference', header: ({ column }) => , cell: ({ row }) => ( {row.original.reference || '—'} ), }, ], [], ); return (
{/* Header */}

Salarios

Historial de depósitos salariales

{/* Summary cards */} {summary && (
Depósitos
{summary.count}
Total acumulado
{formatAmount(summary.total_amount, 'CRC')}
Último depósito
{summary.latest_date ? formatDate(summary.latest_date) : '—'}
)} {/* Data table */} {query.isError ? ( ) : ( )}
); }