import { useState } from "react"; import { HStack, Stack, Table } from "@chakra-ui/react"; import { PaginationItems, PaginationNextTrigger, PaginationPrevTrigger, PaginationRoot } from "./ui/pagination"; // import { // PaginationItems, // PaginationNextTrigger, // PaginationPrevTrigger, // PaginationRoot, // } from "./ui/pagination"; interface TableProps { tableHeadRow: string[]; data: Record[]; sortableColumns?: string[]; // Specify which columns are sortable } const DataTable: React.FC = ({ tableHeadRow, data, sortableColumns = [], }) => { const [sortedData, setSortedData] = useState(data); const [sortConfig, setSortConfig] = useState<{ key: string; direction: "asc" | "desc"; } | null>(null); const handleSort = (column: string) => { if (!sortableColumns.includes(column)) return; let direction: "asc" | "desc" = "asc"; if ( sortConfig && sortConfig.key === column && sortConfig.direction === "asc" ) { direction = "desc"; } const sortedArray = [...sortedData].sort((a, b) => { if (a[column] < b[column]) return direction === "asc" ? -1 : 1; if (a[column] > b[column]) return direction === "asc" ? 1 : -1; return 0; }); setSortedData(sortedArray); setSortConfig({ key: column, direction }); }; return ( {tableHeadRow.map((item, index) => ( handleSort(item)} cursor={ sortableColumns.includes(item) ? "pointer" : "default" } _hover={ sortableColumns.includes(item) ? { textDecoration: "underline" } : {} } > {item} {sortableColumns.includes(item) && sortConfig?.key === item && ( {sortConfig.direction === "asc" ? "\u25B2" : "\u25BC"} )} ))} {sortedData.map((item: any, index) => ( {tableHeadRow.map((heading, colIndex) => ( {item[heading]} ))} ))} ); }; export default DataTable;