"use client"; import { useQuery } from "@tanstack/react-query"; import { flexRender } from "@tanstack/react-table"; import { legacyCreateColumnHelper as createColumnHelper, getCoreRowModel, useLegacyTable, type LegacyColumnDef, } from "@tanstack/react-table/legacy"; import { format } from "date-fns"; import type { Item } from "@/lib/items"; const columnHelper = createColumnHelper(); const columns = [ columnHelper.accessor("name", { header: "Name", }), columnHelper.accessor("quantity", { header: "Qty", }), columnHelper.accessor("createdAt", { header: "Created", cell: (info) => format(new Date(info.getValue()), "MMM d, HH:mm"), }), ] as LegacyColumnDef[]; export function ItemList() { const { data, isLoading, isError, error, refetch } = useQuery({ queryKey: ["items"], queryFn: async () => { const res = await fetch("/api/items"); if (!res.ok) throw new Error("Failed to load items"); const body = await res.json(); return body.items as Item[]; }, }); const table = useLegacyTable({ data: data ?? [], columns, getCoreRowModel: getCoreRowModel(), }); if (isLoading) { return

Loading items…

; } if (isError) { return (
{error.message}
); } return (
{table.getHeaderGroups().map((headerGroup) => ( {headerGroup.headers.map((header) => ( ))} ))} {table.getRowModel().rows.map((row) => ( {row.getVisibleCells().map((cell) => ( ))} ))}
{header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext())}
{flexRender(cell.column.columnDef.cell, cell.getContext())}
{data?.length === 0 ? (

No items yet.

) : null}
); }