"use client"; import { ChevronDown, ChevronRight, Plus, Tag } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { cn } from "@/lib/utils"; import type { Transaction, Category } from "@/lib/types"; interface TransactionGroup { key: string; displayName: string; transactions: Transaction[]; totalAmount: number; suggestedKeyword: string; } interface RuleGroupCardProps { group: TransactionGroup; isExpanded: boolean; onToggleExpand: () => void; onCreateRule: () => void; categories: Category[]; formatCurrency: (amount: number) => string; formatDate: (date: string) => string; } export function RuleGroupCard({ group, isExpanded, onToggleExpand, onCreateRule, formatCurrency, formatDate, }: RuleGroupCardProps) { const avgAmount = group.transactions.reduce((sum, t) => sum + t.amount, 0) / group.transactions.length; const isDebit = avgAmount < 0; return (
{/* Header */}
{group.displayName} {group.transactions.length} transaction {group.transactions.length > 1 ? "s" : ""}
{group.suggestedKeyword}
{formatCurrency(group.totalAmount)}
Moy: {formatCurrency(avgAmount)}
{/* Expanded transactions list */} {isExpanded && (
{group.transactions.map((transaction) => ( ))}
Date Description Montant
{formatDate(transaction.date)} {transaction.description} {transaction.memo && ( ({transaction.memo}) )} {formatCurrency(transaction.amount)}
)}
); }