import type { FC } from "react"; import { Card, Group, SimpleGrid, Stack, Text } from "@mantine/core"; import { WalletIcon } from "@wealthledger/icons"; import { useTranslation } from "react-i18next"; import { Link } from "react-router"; import { formatDate, formatMoney, formatSnapshotTime } from "@/shared/lib"; import type { BrokerageAccountCard } from "../../model/display"; import { accountTypeKey } from "../../model/display"; import classes from "./BrokerageAccountList.module.css"; type BrokerageAccountListProps = { accounts: BrokerageAccountCard[] }; type BrokerageAccountSummaryProps = { summary: BrokerageAccountCard["summary"]; }; const BrokerageAccountSummary: FC = (props) => { const { summary } = props; const { t } = useTranslation(); if (summary.state === "unavailable") return ( {t("accounts.summaryUnavailable")} ); if (summary.state === "empty") return ( {t("accounts.summaryEmpty")} ); return ( {summary.totals.map(total => ( {formatMoney(total)} ))} {!!summary.remainingCurrencyCount && ( {t("accounts.remainingCurrencies", { count: summary.remainingCurrencyCount, })} )} ); }; const BrokerageAccountList: FC = (props) => { const { accounts } = props; const { t } = useTranslation(); return ( {accounts.map(({ account, positionCounts, source, summary }) => ( {t(accountTypeKey(account.type))} {account.name} {t("accounts.currentValue")} {!!source?.lastSuccessfulAt && ( {t("investment.sourceTime", { date: formatSnapshotTime(source.lastSuccessfulAt), })} )} {(source?.sync.state === "running" || source?.sync.state === "queued") && ( {t("accounts.refreshing")} )} {source?.sync.state === "failed" && ( {t("accounts.refreshError")} )} {source?.freshness === "stale" && ( {t("investment.stale")} )} {!!positionCounts && (
{t("accounts.stocks")}
{new Intl.NumberFormat("ru-RU").format(positionCounts.stocks)}
{t("accounts.bonds")}
{new Intl.NumberFormat("ru-RU").format(positionCounts.bonds)}
)} {!!account.openedOn && ( {t("accounts.openedOn", { date: formatDate(account.openedOn), })} )} {t("accounts.openAccount")}
))}
); }; export { BrokerageAccountList };