import type { FC } from "react"; import { Alert, Button, Skeleton, Stack, Text } from "@mantine/core"; import { LoadingSkeleton } from "@wealthledger/ui"; import { useTranslation } from "react-i18next"; import { Link } from "react-router"; import { formatSnapshotTime } from "@/shared/lib"; import type { BrokerageEvent } from "../../api/useBrokerageEvents"; import { BrokerageEventCard } from "../BrokerageEventCard"; type BrokerageEventsPreviewProps = { events: BrokerageEventsPreviewState; }; type BrokerageEventsPreviewState = | { items: BrokerageEvent[]; lastSuccessfulAt?: null | string; refreshError?: boolean; stale?: boolean; state: "loaded" | "partial"; to: string; } | { state: "empty" | "error" | "loading"; to: string }; const BrokerageEventsPreview: FC = (props) => { const { events } = props; const { t } = useTranslation(); return ( {(events.state === "loaded") && (( <> {!!(events.lastSuccessfulAt) && (( {t("investment.sourceTime", { date: formatSnapshotTime(events.lastSuccessfulAt), })} ))} {!!(events.stale) && ({t("investment.stale")})} {!!(events.refreshError) && (( {t("accounts.refreshError")} ))} ))} {(events.state === "loading") && (( {["first", "second", "third"].map(placeholder => ( ))} ))} {(events.state === "error") && (( {t("events.recentError")} ))} {(events.state === "empty") && (( {t("events.recentEmpty")} ))} {(events.state === "partial") && (( {t("investment.partial")} ))} {(events.state === "loaded" || events.state === "partial") && (events.items.map(event => ( )))} ); }; export { BrokerageEventsPreview, type BrokerageEventsPreviewState };