diff --git a/src/Expense/ExpenseDetail.tsx b/src/Expense/ExpenseDetail.tsx
deleted file mode 100644
index 203994b..0000000
--- a/src/Expense/ExpenseDetail.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import React from "react";
-import { Box, Divider } from "@mui/material";
-import { DetailFieldRenderer } from "../../react-openapi";
-import type { ExpenseItem, ExpenseFieldConfigs } from "./types";
-
-interface ExpenseDetailProps {
- item: ExpenseItem;
- fields: ExpenseFieldConfigs;
-}
-
-export function ExpenseDetail({ item, fields }: ExpenseDetailProps) {
- return (
-
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/src/Expense/ExpenseList.tsx b/src/Expense/ExpenseList.tsx
index 801ca1f..baa3117 100644
--- a/src/Expense/ExpenseList.tsx
+++ b/src/Expense/ExpenseList.tsx
@@ -1,18 +1,10 @@
import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
-import {
- Box,
- Typography,
- Accordion,
- AccordionSummary,
- AccordionDetails,
-} from "@mui/material";
+import { Box, Typography } from "@mui/material";
import { alpha } from "@mui/material/styles";
-import ExpandMoreIcon from "@mui/icons-material/ExpandMore";
import KeyboardArrowUpIcon from "@mui/icons-material/KeyboardArrowUp";
import { ListCellRenderer, CurrencyField, applyDisplayFormat, formatCurrency } from "../../react-openapi";
import type { ExpenseItem, ExpenseFieldConfigs } from "./types";
import { isExpense, monthKey, monthLabel, parseOccurredAt } from "./types";
-import { ExpenseDetail } from "./ExpenseDetail";
interface GroupedMonth {
key: string;
@@ -43,86 +35,74 @@ function groupByMonth(items: ExpenseItem[]): GroupedMonth[] {
.sort((a, b) => b.key.localeCompare(a.key));
}
-interface ExpenseCardProps {
+interface ExpenseRowProps {
item: ExpenseItem;
- expanded: boolean;
currency: string;
fields: ExpenseFieldConfigs;
- onToggle: (id: string) => void;
}
-const ExpenseCard = React.memo(function ExpenseCard({ item, expanded, currency, fields, onToggle }: ExpenseCardProps) {
+const ExpenseRow = React.memo(function ExpenseRow({ item, currency, fields }: ExpenseRowProps) {
const itemCurrency = item.account?.currency ?? currency;
return (
- onToggle(isExpanded ? item.id : "")}
- TransitionProps={{ unmountOnExit: true }}
+
- }
+
-
+ ) : (
+
+ )}
+
+
+
- {item.entity?.logo ? (
-
- ) : (
-
+ {item.entity ? applyDisplayFormat(item.entity, fields.formats.entity) : "Unknown"}
+
+
+
+
+
+ {item.account?.name && (
+
)}
-
-
- {item.entity ? applyDisplayFormat(item.entity, fields.formats.entity) : "Unknown"}
-
-
-
- {item.account?.name && (
-
- )}
-
-
-
-
-
-
-
-
+
+
+
+
);
});
@@ -132,13 +112,9 @@ interface ExpenseListProps {
}
export function ExpenseList({ items, fields }: ExpenseListProps) {
- const [expandedId, setExpandedId] = useState(null);
const [activeMonth, setActiveMonth] = useState(null);
const groups = useMemo(() => groupByMonth(items), [items]);
const listRef = useRef(null);
- const handleToggle = useCallback((id: string) => {
- setExpandedId((prev) => (prev === id ? null : id));
- }, []);
const jumpToActiveMonth = useCallback(() => {
if (!activeMonth) return;
@@ -239,13 +215,11 @@ export function ExpenseList({ items, fields }: ExpenseListProps) {
{group.items.map((item) => (
-
))}