"use client"; import { JSXElementConstructor, ReactElement, ReactNode, ReactPortal, useState, } from "react"; import { useQuery } from "@tanstack/react-query"; import { useReactTable, getCoreRowModel, getSortedRowModel, getPaginationRowModel, flexRender, SortingState, PaginationState, } from "@tanstack/react-table"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { Pagination, PaginationContent, PaginationItem, } from "@/components/ui/pagination"; import { Badge } from "@/components/ui/badge"; import { fetchInventoryItems } from "@/api/inventory"; import { AddInventoryItem } from "./add-inventory-item"; import { EditInventoryItem } from "./edit-inventory-item"; import { DeleteInventoryItem } from "./delete-inventory-item"; export default function InventoryPage() { const [date, setDate] = useState(); const [inventoryType, setInventoryType] = useState("all"); const [sorting, setSorting] = useState([]); const [pagination, setPagination] = useState({ pageIndex: 0, pageSize: 10, }); const { data: inventoryItems = [], isLoading, isError, } = useQuery({ queryKey: ["inventoryItems"], queryFn: fetchInventoryItems, staleTime: 60 * 1000, }); const filteredItems = inventoryType === "all" ? inventoryItems : inventoryItems.filter( (item) => item.type.toLowerCase() === inventoryType ); const columns = [ { accessorKey: "name", header: "Name" }, { accessorKey: "category", header: "Category" }, { accessorKey: "type", header: "Type" }, { accessorKey: "quantity", header: "Quantity" }, { accessorKey: "lastUpdated", header: "Last Updated" }, { accessorKey: "status", header: "Status", cell: (info: { getValue: () => | string | number | bigint | boolean | ReactElement> | Iterable | ReactPortal | Promise< | string | number | bigint | boolean | ReactPortal | ReactElement> | Iterable | null | undefined > | null | undefined; }) => {info.getValue()}, }, { accessorKey: "edit", header: "Edit", cell: () => }, { accessorKey: "delete", header: "Delete", cell: () => , }, ]; const table = useReactTable({ data: filteredItems, columns, state: { sorting, pagination }, getCoreRowModel: getCoreRowModel(), getSortedRowModel: getSortedRowModel(), getPaginationRowModel: getPaginationRowModel(), onSortingChange: setSorting, onPaginationChange: setPagination, }); if (isLoading) return (
Loading...
); if (isError) return (
Error loading inventory data.
); return (

Inventory

{table.getHeaderGroups().map((headerGroup) => ( {headerGroup.headers.map((header) => ( {flexRender( header.column.columnDef.header, header.getContext() )} ))} ))} {table.getRowModel().rows.map((row) => ( {row.getVisibleCells().map((cell) => ( {flexRender( cell.column.columnDef.cell, cell.getContext() )} ))} ))}
); }