'use client' import { useState, useEffect } from 'react' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' import { Button } from '@/components/ui/button' import { Badge } from '@/components/ui/badge' import { Package, Eye, RefreshCw } from 'lucide-react' import { motion } from 'framer-motion' import { toast } from 'sonner' import Link from 'next/link' import Image from 'next/image' import { DashboardHeader } from '@/components/dashboard/DashboardHeader' interface Order { id: string total: number status: string createdAt: string orderItems: { id: string quantity: number price: number product: { name: string images: string[] } }[] } export default function OrdersPage() { const [orders, setOrders] = useState([]) const [loading, setLoading] = useState(true) useEffect(() => { fetchOrders() }, []) const fetchOrders = async () => { try { const response = await fetch('/api/orders') if (!response.ok) throw new Error('Failed to fetch orders') const data = await response.json() setOrders(data) } catch (error) { console.error('Error fetching orders:', error) toast.error('Failed to load orders') } finally { setLoading(false) } } const getStatusColor = (status: string) => { switch (status) { case 'PENDING': return 'bg-yellow-500' case 'PAID': return 'bg-blue-500' case 'SHIPPED': return 'bg-purple-500' case 'DELIVERED': return 'bg-green-500' case 'CANCELLED': return 'bg-red-500' default: return 'bg-gray-500' } } if (loading) { return (
) } return (
} /> {orders.length === 0 ? (

No orders found

You haven't placed any orders yet

) : (
{orders.map((order, index) => (
Order #{order.id.slice(-8)} {new Date(order.createdAt).toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' })}
{order.status}
{order.orderItems.length} {order.orderItems.length === 1 ? 'item' : 'items'} ₹{order.total.toFixed(2)}
{order.orderItems.slice(0, 3).map((item, itemIndex) => (
{item.product.name}

{item.product.name}

Qty: {item.quantity}

))} {order.orderItems.length > 3 && ( +{order.orderItems.length - 3} more )}
))}
)}
) }