import { Button, Card, Group, Stack, Text, Title } from "@mantine/core"; import { useTranslation } from "react-i18next"; import { useParams } from "react-router"; import { type BrokerageEvent, useBrokerageEvents, } from "@/entities/brokerage-event"; import { formatMoney } from "@/entities/portfolio"; import { StateView } from "@/shared/ui"; export function AccountEventsPage() { const { accountId } = useParams(); const events = useBrokerageEvents(accountId); if (events.isLoading) return ; if (events.isError) return events.refetch()} />; if (!events.data) return ; if (!events.data.events.length) return ; return ; } function AccountEventsPageLoading() { const { t } = useTranslation(); return ( ); } function AccountEventsPageError({ retry }: { retry: () => void }) { const { t } = useTranslation(); return ( {t("events.retry")}} /> ); } function AccountEventsPageEmpty() { const { t } = useTranslation(); return ( {t("events.title")} {t("events.hint")} ); } function AccountEventsPageLoaded({ events }: { events: BrokerageEvent[] }) { const { t } = useTranslation(); return ( {t("events.title")} {t("events.hint")} {events.map((event) => ( ))} ); } function AccountEventRow({ event }: { event: BrokerageEvent }) { const { t } = useTranslation(); return ( {event.displayName} {formatCalendarDate(event.date)} ยท{" "} {t(`events.dateKind.${event.dateKind}`)} {event.amount && event.currency ? formatMoney({ currency: event.currency, value: event.amount }) : t("events.noAmount")} {t(`events.type.${event.type}`)} ); } function formatCalendarDate(date: string) { return new Intl.DateTimeFormat("ru-RU", { dateStyle: "medium", timeZone: "UTC", }).format(new Date(`${date}T00:00:00Z`)); }