import type { FC } from "react"; import { Button, Skeleton, Stack, Text } from "@mantine/core"; import { LoadingSkeleton } from "@wealthledger/ui"; import { useTranslation } from "react-i18next"; import { Link } from "react-router"; import { groupItems } from "@/shared/lib"; import type { BrokerageEvent } from "../../api/useBrokerageEvents"; import { brokerageEventGroupKey, brokerageEventKey } from "../../model/event-key"; import { BrokerageEventCard } from "../BrokerageEventCard"; import { BrokerageEventGroup } from "../BrokerageEventGroup"; type BrokerageEventsPreviewProps = { allAccounts?: boolean; events: BrokerageEventsPreviewState; moreLabel?: string; }; type BrokerageEventsPreviewState = | { items: BrokerageEvent[]; state: "loaded" | "partial"; to: string; totalVisible?: boolean; } | { state: "empty" | "error" | "loading"; to: string; }; const BrokerageEventsPreview: FC = (props) => { const { events } = props; const { t } = useTranslation(); return ( {events.state === "loading" && ( {["first", "second", "third"].map(placeholder => )} )} {events.state === "error" && {t("states.unavailableText")}} {events.state === "empty" && {t("events.recentEmpty")}} {events.state === "partial" && {t("investment.partial")}} {(events.state === "loaded" || events.state === "partial") && ( {groupItems( events.items, props.allAccounts ? brokerageEventGroupKey : () => null, ).map(entry => entry.type === "group" ? ( ) : (
  • ))}
    )}
    ); }; export { BrokerageEventsPreview, type BrokerageEventsPreviewState };