import SearchOffOutlinedIcon from "@mui/icons-material/SearchOffOutlined"; import { CircularProgress, Paper, Stack, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, } from "@mui/material"; import { VendorTableRow } from "./vendor-table-row"; import { Text } from "@/components/ui/text"; import type { VendorListItem } from "@/domain/vendors/types/vendor"; const TABLE_COLUMNS = [ "Company", "Company Phone", "Company Email", "Street Address", "City", "State", "Service Area", "Trade", "Technician", "Technician Phone", "Total Jobs", ] as const; interface VendorsTableProps { rows: VendorListItem[]; isActive: boolean; isFiltered: boolean; isLoading: boolean; showError: boolean; onOpenDetail: (row: VendorListItem) => void; onOpenEdit: (row: VendorListItem) => void; } export function VendorsTable({ rows, isActive, isFiltered, isLoading, showError, onOpenDetail, onOpenEdit, }: VendorsTableProps) { const showEmptyRow = !isLoading && !showError && rows.length === 0; const columnCount = TABLE_COLUMNS.length + 2; return ( {[190, 160, 220, 220, 140, 100, 150, 190, 220, 170, 110, 120, 130].map((width, index) => ( ))} {TABLE_COLUMNS.map((column) => ( {column} ))} Status {isLoading ? ( ) : showEmptyRow ? ( {`No ${isActive ? "active" : "inactive"} companies found`} {isFiltered ? "Try a different search, or add a new vendor." : "Add a vendor to get started."} ) : ( rows.map((row) => ( )) )}
); }