import type { FC } from "react"; import { Anchor, Card, Group, Stack, Text } from "@mantine/core"; import { useTranslation } from "react-i18next"; import { Link } from "react-router"; import { formatMoney } from "@/shared/lib"; import type { AccountPagePositionGroup, AccountPagePositionSection, } from "../../../model/positions"; import classes from "../AccountPage.module.css"; import { PositionLogo } from "./PositionLogo.view"; type PositionGroupCardProps = { group: AccountPagePositionGroup; kind: AccountPagePositionSection["kind"]; }; const PositionGroupCard: FC = (props) => { const { group, kind } = props; const { t } = useTranslation(); const identity = group.positions[0]; const instrumentTo = identity.instrumentTo; return ( {kind !== "other" && ( )} {instrumentTo ? ( {identity.displayName} ) : {identity.displayName}} {identity.ticker ?? identity.isin ?? identity.figi} {group.positions.map((position) => { const appearanceClass = position.returnTone ? classes[position.returnTone] : undefined; const returnPercent = position.returnPercentText ? ` ยท ${position.returnPercentText}` : ""; const returnValue = `${position.returnText ?? ""}${returnPercent}`; const returnText = kind === "other" ? t("portfolio.return", { value: returnValue }) : returnValue; return ( {!!position.account && ( {position.account.name} )} {t("portfolio.quantity", { value: position.quantity })} {!!position.currentValue && {formatMoney(position.currentValue)}} {!!position.returnText && ( {returnText} )} {!!position.averagePurchasePrice && ( {t("portfolio.avgPrice", { value: formatMoney(position.averagePurchasePrice), })} )} {!!position.shareText && ( {t("portfolio.share", { value: position.shareText })} )} ); })} ); }; export { PositionGroupCard };