diff --git a/src/app/statements/page.tsx b/src/app/statements/page.tsx index 50a222f..9d0cfae 100644 --- a/src/app/statements/page.tsx +++ b/src/app/statements/page.tsx @@ -4,7 +4,7 @@ import Link from "next/link"; import { useStatements } from "@/lib/hooks"; function formatDate(d: string | null) { - if (!d) return "-"; + if (!d) return "—"; return new Date(d).toLocaleDateString("en-AU", { day: "2-digit", month: "short", @@ -12,12 +12,22 @@ function formatDate(d: string | null) { }); } -function formatCurrency(amount: number | null, currency = "AUD") { - if (amount === null || amount === undefined) return "-"; +function formatPeriod(start: string | null, end: string | null) { + if (!start && !end) return "—"; + const fmt = (d: string) => + new Date(d).toLocaleDateString("en-AU", { day: "2-digit", month: "short", year: "2-digit" }); + if (!start) return `until ${fmt(end!)}`; + if (!end) return `from ${fmt(start)}`; + return `${fmt(start)} – ${fmt(end)}`; +} + +function formatAmount(n: number | null): string { + if (n === null || n === undefined) return "—"; return new Intl.NumberFormat("en-AU", { style: "currency", - currency, - }).format(amount); + currency: "AUD", + minimumFractionDigits: 2, + }).format(Number(n)); } export default function StatementsPage() { @@ -28,48 +38,80 @@ export default function StatementsPage() {
Loading...
+Loading...
) : !statements?.length ? ( -No statements found
+No statements found
) : ( -{s.card_name}
- )} -Account: {s.account_number}
-- Period: {formatDate(s.billing_start_date)} - {formatDate(s.billing_end_date)} -
-Due: {formatDate(s.payment_due_date)}
-- {formatCurrency(s.total_amount_due, s.currency)} -
-- {s.transaction_count} transactions -
-| Bank | +Account | +Period | +Due / Updated | +Ccy | +Amount | +Txns | ++ |
|---|---|---|---|---|---|---|---|
|
+
+ {s.bank_name}
+
+ {s.card_name && (
+ {s.card_name}
+ )}
+ |
+ + {s.account_number} + | ++ {formatPeriod(s.billing_start_date, s.billing_end_date)} + | ++ {isCreditCard + ? formatDate(s.payment_due_date) + : formatDate(s.billing_end_date)} + | ++ {s.currency} + | +
+ {displayAmount !== null && displayAmount !== undefined ? (
+
+ {formatAmount(displayAmount)}
+
+ ) : (
+ —
+ )}
+ {amountLabel}
+ |
+ + {s.transaction_count} + | ++ + View → + + | +