Files
frontend/src/pages/account-income/ui/AccountIncomePage/components/IncomePayments.view.tsx
T
codex-bot 71126c91f0
Frontend verify / commits (push) Skipped
Frontend verify / security (push) Successful in 9s
Frontend verify / verify (push) Failing after 6m1s
feat: group all-account rows by instrument and day (WealthLedger/main#47) (#126)
2026-10-30 07:28:19 +03:00

55 lines
1.3 KiB
TypeScript

import type { FC } from "react";
import { Stack, Title } from "@mantine/core";
import { useTranslation } from "react-i18next";
import {
brokerageOperationGroupKey,
LedgerEntryRow,
OperationGroup,
} from "@/entities/broker-operation";
import { groupItems } from "@/shared/lib";
import type { IncomeDisplayModel } from "../../../model/display";
import classes from "../AccountIncomePage.module.css";
type IncomePaymentsProps = {
allAccounts?: boolean;
entries: IncomeDisplayModel["entries"];
totalVisible?: boolean;
};
const IncomePayments: FC<IncomePaymentsProps> = (props) => {
const { t } = useTranslation();
return (
<Stack aria-label={t("income.payments")} component="section">
<Title order={2}>{t("income.payments")}</Title>
<Stack className={classes.entries} component="ul" gap="sm">
{groupItems(
props.entries,
entry => props.allAccounts
? brokerageOperationGroupKey(entry.operation)
: null,
).map(entry => entry.type === "group"
? (
<OperationGroup
entries={entry.items}
key={entry.key}
totalVisible={props.totalVisible === true}
/>
)
: (
<li key={entry.item.key}>
<LedgerEntryRow operation={entry.item.operation} wrap />
</li>
))}
</Stack>
</Stack>
);
};
export { IncomePayments };