import { useWalletMovements } from "@/lib/queries"; import type { Wallet } from "@/lib/api"; import { ResponsiveDialog, ResponsiveDialogContent, ResponsiveDialogHeader, ResponsiveDialogTitle, } from "@/components/ui/responsive-dialog"; const amountFormatter = new Intl.NumberFormat("es-AR", { minimumFractionDigits: 2, maximumFractionDigits: 4, }); const dateFormatter = new Intl.DateTimeFormat("es-AR", { day: "2-digit", month: "2-digit", year: "numeric", hour: "2-digit", minute: "2-digit", }); const typeLabels: Record = { DEPOSIT: "Depósito", WITHDRAWAL: "Extracción", TRANSFER_IN: "Transferencia recibida", TRANSFER_OUT: "Transferencia enviada", ADJUSTMENT: "Ajuste", }; interface WalletMovementsDialogProps { wallet: Wallet; open: boolean; onOpenChange: (open: boolean) => void; } export function WalletMovementsDialog({ wallet, open, onOpenChange, }: WalletMovementsDialogProps) { const { data: movements, isLoading } = useWalletMovements( open ? wallet.id : 0, ); return ( Movimientos de {wallet.name} {isLoading ? (

Cargando...

) : movements && movements.length > 0 ? (
{movements.map((m) => (
{typeLabels[m.type] ?? m.type} {m.description && ( {m.description} )} {m.transferGroupId && ( ID: {m.transferGroupId.slice(0, 8)}... )} {dateFormatter.format(new Date(m.createdAt))}
= 0 ? "text-emerald-600 dark:text-emerald-400" : "text-red-600 dark:text-red-400" }`} > {m.amount >= 0 ? "+" : ""} {amountFormatter.format(m.amount)}
))}
) : (

Sin movimientos registrados.

)}
); }