"use client"; import { useTableControls } from "@/components/ui/use-table-controls"; import { TableControls, SortableTh } from "@/components/ui/table-controls"; import { AddVesselButton, EditVesselButton } from "./vessel-form"; import { ConfirmDeleteButton } from "@/components/ui/confirm-delete-button"; import { deleteVessel } from "./actions"; export type VesselRow = { id: string; code: string; name: string; siteName: string | null; isActive: boolean; }; const CHIPS = ["Active", "Inactive"]; export function VesselsTable({ vessels }: { vessels: VesselRow[] }) { const { search, setSearch, sortKey, sortDir, toggleSort, activeFilters, toggleFilter, filtered } = useTableControls({ rows: vessels, defaultSortKey: "code", searchText: (v) => [v.code, v.name, v.siteName ?? "", v.isActive ? "active" : "inactive"].join(" "), chipMatch: (v, chip) => { if (chip.toLowerCase() === "active") return v.isActive; if (chip.toLowerCase() === "inactive") return !v.isActive; return false; }, sortValue: (v, key) => { if (key === "isActive") return v.isActive ? "Active" : "Inactive"; if (key === "siteName") return v.siteName ?? ""; const val = v[key as keyof VesselRow]; if (val === null || val === undefined) return ""; return typeof val === "string" || typeof val === "number" || typeof val === "boolean" ? val : String(val); }, }); return (

Cost Centre Management

toggleSort(k as keyof VesselRow)}>Code toggleSort(k as keyof VesselRow)}>Name toggleSort(k as keyof VesselRow)}>Site toggleSort(k as keyof VesselRow)}>Status {filtered.length === 0 && ( )} {filtered.map((vessel) => ( ))}
No cost centres match your search.
{vessel.code} {vessel.name} {vessel.siteName ?? —} {vessel.isActive ? "Active" : "Inactive"}
); }