import React from 'react'; import { Material, PurchaseOrder, Unit } from '../types'; import { Plus, Search, Filter, ShoppingCart, Package, Truck, CheckCircle2, Clock, AlertTriangle, MoreVertical, ChevronRight } from 'lucide-react'; interface ProcurementProps { materials: Material[]; purchaseOrders: PurchaseOrder[]; } const Procurement: React.FC = ({ materials, purchaseOrders }) => { const [searchQuery, setSearchQuery] = React.useState(''); const [activeTab, setActiveTab] = React.useState<'INVENTORY' | 'ORDERS'>('INVENTORY'); const filteredMaterials = materials.filter(m => m.name.toLowerCase().includes(searchQuery.toLowerCase())); const filteredOrders = purchaseOrders.filter(o => o.vendorName.toLowerCase().includes(searchQuery.toLowerCase())); const getStatusColor = (status: string) => { switch(status) { case 'DELIVERED': return 'text-emerald-600 bg-emerald-50 border-emerald-100'; case 'SENT': return 'text-blue-600 bg-blue-50 border-blue-100'; case 'DRAFT': return 'text-slate-600 bg-slate-50 border-slate-100'; case 'CANCELLED': return 'text-red-600 bg-red-50 border-red-100'; default: return 'text-slate-600 bg-slate-50 border-slate-100'; } }; return (
{/* Header & Tabs */}
setSearchQuery(e.target.value)} className="w-full pl-10 pr-4 py-2 bg-slate-50 border border-slate-200 rounded-xl focus:ring-2 focus:ring-blue-500 outline-none text-sm transition-all" />
{activeTab === 'INVENTORY' ? (
{filteredMaterials.map(material => (
{material.currentStock < (material.totalReceived * 0.1) && (
LOW STOCK
)}

{material.name}

ID: {material.id}

Stock

{material.currentStock} {material.unit}

Consumed

{material.totalConsumed} {material.unit}

))}
) : (
{filteredOrders.map(order => ( ))}
Order ID Vendor Amount Status Delivery Date
{order.id}
{order.vendorName}
৳{order.totalAmount.toLocaleString()} {order.status} {order.expectedDeliveryDate || 'TBD'}
)}
); }; export default Procurement;