"use client"; import { Button } from "@/components/ui/button"; import { Card, CardContent } from "@/components/ui/card"; import { Checkbox } from "@/components/ui/checkbox"; import { Badge } from "@/components/ui/badge"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, DropdownMenuSeparator, } from "@/components/ui/dropdown-menu"; import { CategoryIcon } from "@/components/ui/category-icon"; import { CheckCircle2, Circle, MoreVertical, ArrowUpDown, Check, } from "lucide-react"; import { cn } from "@/lib/utils"; import type { Transaction, Account, Category } from "@/lib/types"; type SortField = "date" | "amount" | "description"; type SortOrder = "asc" | "desc"; interface TransactionTableProps { transactions: Transaction[]; accounts: Account[]; categories: Category[]; selectedTransactions: Set; sortField: SortField; sortOrder: SortOrder; onSortChange: (field: SortField) => void; onToggleSelectAll: () => void; onToggleSelectTransaction: (id: string) => void; onToggleReconciled: (id: string) => void; onSetCategory: (transactionId: string, categoryId: string | null) => void; formatCurrency: (amount: number) => string; formatDate: (dateStr: string) => string; } export function TransactionTable({ transactions, accounts, categories, selectedTransactions, sortField, sortOrder, onSortChange, onToggleSelectAll, onToggleSelectTransaction, onToggleReconciled, onSetCategory, formatCurrency, formatDate, }: TransactionTableProps) { const getCategory = (categoryId: string | null) => { if (!categoryId) return null; return categories.find((c) => c.id === categoryId); }; const getAccount = (accountId: string) => { return accounts.find((a) => a.id === accountId); }; return ( {transactions.length === 0 ? (

Aucune transaction trouvée

) : (
{transactions.map((transaction) => { const category = getCategory(transaction.categoryId); const account = getAccount(transaction.accountId); return ( ); })}
0 } onCheckedChange={onToggleSelectAll} /> Compte Catégorie Pointé
onToggleSelectTransaction(transaction.id) } /> {formatDate(transaction.date)}

{transaction.description}

{transaction.memo && (

{transaction.memo}

)}
{account?.name || "-"} onSetCategory(transaction.id, null)} > Aucune catégorie {categories.map((cat) => ( onSetCategory(transaction.id, cat.id) } > {cat.name} {transaction.categoryId === cat.id && ( )} ))} = 0 ? "text-emerald-600" : "text-red-600" )} > {transaction.amount >= 0 ? "+" : ""} {formatCurrency(transaction.amount)} onToggleReconciled(transaction.id)} > {transaction.isReconciled ? "Dépointer" : "Pointer"}
)}
); }