diff --git a/src/App.tsx b/src/App.tsx index 97e63ad..620bf30 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,3 +1,79 @@ +import { useState } from "react"; +import { Table, Checkbox, Container, Badge } from "@mantine/core"; + +interface BankAccount { + Selection: number; + Number: string; + Order: number; + Debit: number; + Credit: number; +} + +const BankAccounts: BankAccount[] = [ + { Selection: 0, Number: "1001", Order: 0, Debit: 0, Credit: 750000.0 }, + { Selection: 0, Number: "1002", Order: 0, Debit: 0, Credit: 1500000.0 }, + { Selection: 0, Number: "1003", Order: 0, Debit: 0, Credit: 140000.0 }, + { Selection: 0, Number: "1004", Order: 0, Debit: 0, Credit: 170000.0 }, +]; + export default function App() { - return <>; + const [selectedNumbers, setSelectedNumbers] = useState([]); + + const toggleRow = (number: string) => { + setSelectedNumbers((prev) => + prev.includes(number) + ? prev.filter((x) => x !== number) + : [...prev, number], + ); + }; + + const rows = BankAccounts.map((account) => { + const index = selectedNumbers.indexOf(account.Number); + const isSelected = index !== -1; + const order = isSelected ? index + 1 : 0; + + return ( + + + toggleRow(account.Number)} + aria-label={`Select account ${account.Number}`} + /> + + {account.Number} + + {isSelected ? ( + + {order} + + ) : ( + — + )} + + {account.Debit} + {account.Credit} + + ); + }); + + return ( + + + + + Selection + Number + Order + Debit + Credit + + + {rows} +
+
+ ); }