import type { FC } from "react"; import { Accordion, Alert, Stack, Text } from "@mantine/core"; import { useTranslation } from "react-i18next"; import type { StockDividends as Dividends } from "@/entities/stock"; import { InstrumentSection, type SectionState } from "@/features/instrument-details"; import { formatDate, formatSnapshotTime, instrumentLogoUrl } from "@/shared/lib"; import { PayoutCard } from "@/shared/ui"; type Dividend = Dividends["dividends"][number]; type DividendCardProps = { event: Dividend; logoName?: null | string; ticker?: null | string; }; type StockDividendsProps = { dividends?: Dividends; logoName?: null | string; pastDividends: Dividends["dividends"]; state: SectionState; ticker?: null | string; upcoming: Dividends["dividends"]; }; const DividendCard: FC = (props) => { const { event } = props; const { t } = useTranslation(); const title = `${t("events.type.dividend")} · ${props.ticker || t("stock.share")}`; const metadata = [ event.recordDate ? `${t("stock.record")}: ${formatDate(event.recordDate)}` : t("stock.dateUnknown"), event.paymentDate ? `${t("stock.payment")}: ${formatDate(event.paymentDate)}` : null, ].filter(Boolean).join(" · "); const conditions = event.lastBuyDate ? {t("stock.lastBuy")}: {formatDate(event.lastBuyDate)} : undefined; return ( ); }; const StockDividends: FC = (props) => { const { dividends, pastDividends, state, upcoming } = props; const { t } = useTranslation(); return ( {!!dividends && ( {(dividends.estimateUnavailable || dividends.positionIsStale) && ( {t("stock.estimateUnavailable")} )} {upcoming.length > 0 ? upcoming.map(event => ( )) : {t("stock.noUpcoming", { to: formatDate(dividends.to) })}} {t("stock.dividendNote")} {!!dividends.positionAt && ( {t("stock.snapshotAt", { date: formatSnapshotTime(dividends.positionAt) })} )} {t("stock.dividendHistory")} {t("stock.dividendWindow", { from: formatDate(dividends.from), to: formatDate(dividends.to), })} {pastDividends.length > 0 ? ( {pastDividends.map(event => ( ))} ) : {t("stock.noDividends")}} )} ); }; export { StockDividends };