import { createFileRoute } from "@tanstack/react-router"; import { createColumnHelper, flexRender, getCoreRowModel, useReactTable, } from "@tanstack/react-table"; import { useState } from "react"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { Button } from "@/components/ui/button"; import { GripVertical } from "lucide-react"; type Person = { firstName: string; lastName: string; age: number; visits: number; status: string; progress: number; }; const defaultData: Person[] = [ { firstName: "tanner", lastName: "linsley", age: 24, visits: 100, status: "In Relationship", progress: 50, }, { firstName: "tandy", lastName: "miller", age: 40, visits: 40, status: "Single", progress: 80, }, { firstName: "joe", lastName: "dirte", age: 45, visits: 20, status: "Complicated", progress: 10, }, ]; const columnHelper = createColumnHelper(); const columns = [ columnHelper.accessor("firstName", { cell: (info) => info.getValue(), footer: (info) => info.column.id, }), columnHelper.accessor((row) => row.lastName, { id: "lastName", cell: (info) => {info.getValue()}, header: () => Last Name, footer: (info) => info.column.id, }), columnHelper.accessor("age", { header: () => "Age", cell: (info) => info.renderValue(), footer: (info) => info.column.id, }), columnHelper.accessor("visits", { header: () => Visits, footer: (info) => info.column.id, }), columnHelper.accessor("status", { header: "Status", footer: (info) => info.column.id, }), columnHelper.accessor("progress", { header: "Profile Progress", footer: (info) => info.column.id, }), ]; function DataTable() { const [data, _setData] = useState(() => [...defaultData]); const table = useReactTable({ data, columns, getCoreRowModel: getCoreRowModel(), columnResizeMode: "onChange", }); return (
{table.getHeaderGroups().map((headerGroup) => ( {headerGroup.headers.map((header) => (

{flexRender( header.column.columnDef.header, header.getContext() )}

{header.column.getCanResize() && ( )}
))}
))}
{table.getRowModel().rows?.length ? ( table.getRowModel().rows.map((row) => ( {row.getVisibleCells().map((cell) => ( {flexRender( cell.column.columnDef.cell, cell.getContext() )} ))} )) ) : ( No results. )}
); } export const Route = createFileRoute("/table")({ component: DataTable, });