import React, { useState } from 'react'; import { useMockStore } from '../../data/mockStore'; import { useAuth } from '../../context/AuthContext'; import { SpotlightCard } from '../../components/SpotlightCard'; import { Package, FileText, Filter, Search, ChevronRight, CheckCircle, Clock, Truck } from 'lucide-react'; import OrderDetailsModal from '../../components/vendor/OrderDetailsModal'; const VendorOrders = () => { const { user } = useAuth(); const { projects, orders } = useMockStore(); const [filter, setFilter] = useState('all'); const [selectedOrder, setSelectedOrder] = useState(null); const [isOrderModalOpen, setIsOrderModalOpen] = useState(false); // Mock ID logic const vendorId = user.id === 'ven_001' ? 'v3' : 'v1'; // Get vendor orders from MOCK_ORDERS const vendorOrders = orders.filter(o => o.vendorId === vendorId); const filteredOrders = filter === 'all' ? vendorOrders : vendorOrders.filter(o => o.status === filter); const handleOrderClick = (order) => { setSelectedOrder(order); setIsOrderModalOpen(true); }; const getStatusColor = (status) => { switch (status) { case 'delivered': return 'bg-emerald-100 text-emerald-700 dark:bg-emerald-500/20 dark:text-emerald-400'; case 'shipped': return 'bg-blue-100 text-blue-700 dark:bg-blue-500/20 dark:text-blue-400'; default: return 'bg-zinc-100 text-zinc-700 dark:bg-white/10 dark:text-zinc-400'; } }; return (

My Orders

Manage purchase orders and deliveries.

{/* Status Tabs */}
{['all', 'pending', 'confirmed', 'shipped', 'delivered'].map(tab => ( ))}
{/* Mobile Card View */}
{filteredOrders.length > 0 ? filteredOrders.map(order => (
handleOrderClick(order)} className="p-4 active:bg-zinc-50 dark:active:bg-white/5 transition-colors cursor-pointer" >

{order.projectAddress || order.project}

{order.id}

{order.status === 'delivered' && } {order.status === 'shipped' && } {(order.status === 'pending' || order.status === 'confirmed') && } {order.status} {order.items ? `${order.items.length} items` : order.item}
Due: {order.dueDate || 'N/A'} ${(order.total || order.amount).toLocaleString()}
)) : (

No orders found matching this filter.

)}
{/* Desktop Table View */}
{filteredOrders.map(order => ( handleOrderClick(order)} className="hover:bg-zinc-50 dark:hover:bg-white/5 transition-colors group cursor-pointer" > ))}
Order ID Project / Location Items / Service Due Date Amount Status Actions
{order.id} {order.projectAddress || order.project}
{order.items ? `${order.items.length} items` : order.item}
{order.dueDate} ${(order.total || order.amount).toLocaleString()} {order.status === 'delivered' && } {order.status === 'shipped' && } {(order.status === 'pending' || order.status === 'confirmed') && } {order.status}
{filteredOrders.length === 0 && (

No orders found matching this filter.

)}
{/* Order Details Modal */} setIsOrderModalOpen(false)} order={selectedOrder} /> igotsar.matyas | LynkedUpPro - Turns out roofing CRMs don't build themselves. Who knew?
); }; export default VendorOrders;