import { ActionIcon, Badge, Stack, Table, Text, Tooltip } from '@mantine/core'; import { Eye } from 'lucide-react'; import type { InventoryInquiryResult } from '@/types/warehouse'; import { InventoryStatusBadge } from './badges'; import { formatDate, formatNumber } from './options'; interface WarehouseInquiryTableProps { results: InventoryInquiryResult[]; onView?: (result: InventoryInquiryResult) => void; } const dash = '-'; const itemDescriptor = (result: InventoryInquiryResult) => { if (result.containerNumber) return `Container ${result.containerNumber}`; if (result.cargoType) return `Cargo - ${result.cargoType}`; if (result.cargoDescription) return `Cargo - ${result.cargoDescription}`; if (result.goodsId) return 'Goods'; return dash; }; export function WarehouseInquiryTable({ results, onView }: WarehouseInquiryTableProps) { if (results.length === 0) { return ( No matching items. Adjust your search to locate cargo, containers or goods. ); } return ( Booking Customer Item Warehouse Yard Zone Location Status Qty Weight Arrived Ready {onView ? Actions : null} {results.map((result) => ( {result.bookingReference ?? result.bookingNumber ?? result.bookingId?.slice(0, 8) ?? dash} {result.customerName ?? dash} {itemDescriptor(result)} {result.warehouse?.name ?? dash} {result.warehouse?.code ? ( {result.warehouse.code} ) : null} {result.yard?.name ?? dash} {result.zone?.name ?? dash} {result.locationSummary ?? dash} {result.trainNumber ? ( {result.trainNumber} {result.route ? ` - ${result.route}` : ''} ) : null} {result.status ? ( ) : ( {result.trainStatus ?? result.bookingStatus ?? 'Not in warehouse'} )} {formatNumber(result.quantity)} {formatNumber(result.weight)} {formatDate(result.arrivedAt)} {formatDate(result.readyForLoadingAt)} {onView ? ( onView(result)} ml="auto"> ) : null} ))}
); }