"use client"; import type { LedgerEntry } from "@/payload-types"; import { formatDate } from "@/lib/banking/format"; const typeMeta: Record = { deposit: { label: "Deposit", cls: "text-emerald-400" }, withdrawal: { label: "Withdrawal", cls: "text-red-400" }, transfer: { label: "Transfer", cls: "text-blue-400" }, payment: { label: "Payment", cls: "text-red-400" }, fee: { label: "Fee", cls: "text-muted-foreground" }, salary: { label: "Salary", cls: "text-green-400" }, adjustment: { label: "Adjustment", cls: "text-amber-400" }, }; export function LedgerTable({ entries }: { entries: LedgerEntry[] }) { if (entries.length === 0) { return (

No ledger entries yet.

); } return (
{entries.map((entry) => { const meta = typeMeta[entry.type] ?? { label: entry.type, cls: "text-muted-foreground", }; const amount = entry.amount ?? 0; return ( ); })}
Date Type Memo Amount Balance
{formatDate(entry.timestamp)} {meta.label} {entry.memo} = 0 ? "text-emerald-400" : "text-red-400"}`} > {amount >= 0 ? "+" : ""} {amount.toLocaleString()} {(entry.balanceAfter ?? 0).toLocaleString()}
); }