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}
))}
);
}