import type { FC } from "react"; import { Accordion, Alert, Badge, Group, Stack, Text } from "@mantine/core"; import { useTranslation } from "react-i18next"; import type { BondCoupons as Coupons } from "@/entities/bond"; import { InstrumentSection, type SectionState } from "@/features/instrument-details"; import { formatDate, formatSnapshotTime, instrumentLogoUrl } from "@/shared/lib"; import { PayoutCard } from "@/shared/ui"; type BondCouponsProps = { coupons?: Coupons; logoName?: null | string; pastCoupons: Coupons["coupons"]; state: SectionState; ticker?: null | string; upcoming: Coupons["coupons"]; }; const BondCoupons: FC = (props) => { const { coupons, pastCoupons, state, upcoming } = props; const { t } = useTranslation(); return ( {!!coupons && ( {!!(coupons.estimateUnavailable || coupons.positionIsStale) && ( {t("stock.estimateUnavailable")} )} {upcoming.length > 0 ? ( upcoming.map(coupon => ( )) ) : {t("bond.noCoupons")}} {t("bond.couponWindow", { from: formatDate(coupons.from), to: formatDate(coupons.to), })} {t("bond.couponNote")} {!!coupons.positionAt && ( {t("stock.snapshotAt", { date: formatSnapshotTime(coupons.positionAt), })} )} {t("bond.couponHistory")} {pastCoupons.length > 0 ? ( pastCoupons.map(coupon => ( )) ) : {t("bond.noCoupons")}} )} ); }; type CouponProps = { coupon: Coupons["coupons"][number]; logoName?: null | string; ticker?: null | string; }; const Coupon: FC = (props) => { const { coupon } = props; const { t } = useTranslation(); const title = `${t("events.type.coupon")} · ${props.ticker || t("bond.instrument")}`; const metadata = [ coupon.paymentDate ? formatDate(coupon.paymentDate) : t("stock.dateUnknown"), t("bond.couponNumber", { number: coupon.number ?? t("bond.unknown") }), ].join(" · "); const conditions = ( {t(`bond.couponTypes.${coupon.couponType}`, { defaultValue: t("bond.unknown") })} {coupon.periodDays != undefined && ( {t("bond.couponDays", { count: coupon.periodDays })} )} {coupon.recordDate && ( {t("stock.record")}: {formatDate(coupon.recordDate)} )} ); return ( ); }; export { BondCoupons };