import { useState } from 'react'; import { Title, Table, Group, Stack, Text, Card, Loader, Center, Divider, Badge, } from '@mantine/core'; import { DateInput } from '@mantine/dates'; import { useQuery } from '@tanstack/react-query'; import api from '../../services/api'; interface AccountLine { account_number: number; name: string; balance: string; fund_type: string; } interface BalanceSheetData { as_of: string; assets: AccountLine[]; liabilities: AccountLine[]; equity: AccountLine[]; total_assets: string; total_liabilities: string; total_equity: string; } export function BalanceSheetPage() { const [asOf, setAsOf] = useState(new Date()); const dateStr = asOf.toISOString().split('T')[0]; const { data, isLoading } = useQuery({ queryKey: ['balance-sheet', dateStr], queryFn: async () => { const { data } = await api.get(`/reports/balance-sheet?as_of=${dateStr}`); return data; }, }); const fmt = (v: string | number) => parseFloat(String(v || '0')).toLocaleString('en-US', { style: 'currency', currency: 'USD' }); if (isLoading) return
; return ( Balance Sheet v && setAsOf(v)} w={200} /> Assets {(data?.assets || []).map((a) => ( {a.account_number} {a.name} {a.fund_type} {fmt(a.balance)} ))} Total Assets {fmt(data?.total_assets || '0')}
Liabilities {(data?.liabilities || []).map((a) => ( {a.account_number} {a.name} {fmt(a.balance)} ))} Total Liabilities {fmt(data?.total_liabilities || '0')}
Equity {(data?.equity || []).map((a) => ( {a.account_number} {a.name} {fmt(a.balance)} ))} Total Equity {fmt(data?.total_equity || '0')}
Total Liabilities + Equity {fmt(String(parseFloat(data?.total_liabilities || '0') + parseFloat(data?.total_equity || '0')))}
); }