import { Input } from "@/components/ui/input"; import { TableRow, TableCell } from "@/components/ui/table"; import Link from "next/link"; import StatusBadge from "@/components/status-badge"; import DeleteDialog from "@/components/delete-dialog"; interface Budgetable { id: string; title: string; price: number; link: string; note?: string; status: "Paid" | "Unpaid"; } interface TRowProps { row: Budgetable; isEditing: boolean; setData: React.Dispatch>; recentlyUpdatedRowId: string | null; handleSave: ( updatedRow: Budgetable, originalRow: Budgetable, ) => Promise; handleDeleteRow: (id: string) => Promise; toggleStatus: (row: Budgetable) => Promise; } const TRow: React.FC = ({ row, isEditing, setData, recentlyUpdatedRowId, handleSave, handleDeleteRow, toggleStatus, }) => ( {isEditing ? ( setData((prev) => prev.map((item) => item.id === row.id ? { ...item, title: e.target.value } : item, ), ) } onBlur={() => handleSave(row, { ...row })} /> ) : ( {row.title} )} {isEditing ? ( setData((prev) => prev.map((item) => item.id === row.id ? { ...item, price: Number.parseFloat(e.target.value) || 0 } : item, ), ) } onBlur={() => handleSave(row, { ...row })} /> ) : ( {row.price.toLocaleString()} HUF )} {isEditing ? ( setData((prev) => prev.map((item) => item.id === row.id ? { ...item, link: e.target.value } : item, ), ) } onBlur={() => handleSave(row, { ...row })} /> ) : row.link ? ( Visit ) : ( No link )} {isEditing ? ( setData((prev) => prev.map((item) => item.id === row.id ? { ...item, note: e.target.value } : item, ), ) } onBlur={() => handleSave(row, { ...row })} /> ) : ( {row.note || "-"} )} toggleStatus(row)} /> {isEditing && ( handleDeleteRow(row.id)} /> )} ); export default TRow;