"use client" import { useState } from "react" import Image from "next/image" import { Button } from "@/components/ui/button" import { Card } from "@/components/ui/card" import { Badge } from "@/components/ui/badge" import { Skeleton } from "@/components/ui/skeleton" import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog" import { useOrders, useCancelOrder } from "@/lib/hooks" import type { Order } from "@/lib/types/api" interface OrdersPageProps { locale?: string } export default function OrdersPageClient({ locale }: OrdersPageProps) { const [isCancelDialogOpen, setIsCancelDialogOpen] = useState(false) const [orderToCancel, setOrderToCancel] = useState(null) const { data: orders, isLoading, isError } = useOrders() const { mutate: cancelOrder, isPending: isCancellingOrder } = useCancelOrder() const handleCancelOrder = (order: Order) => { setOrderToCancel(order) setIsCancelDialogOpen(true) } const confirmCancelOrder = () => { if (orderToCancel) { cancelOrder(orderToCancel.id, { onSuccess: () => { setIsCancelDialogOpen(false) setOrderToCancel(null) }, }) } } const getStatusBadge = (status: Order["status"]) => { switch (status) { case "pending": return {status} case "processing": return {status} case "shipped": return {status} case "delivered": return {status} case "cancelled": return {status} default: return {status} } } const activeOrders = orders?.filter((o) => ["pending", "processing", "shipped"].includes(o.status)) || [] const completedOrders = orders?.filter((o) => ["delivered", "cancelled"].includes(o.status)) || [] return (

My Orders

{isLoading ? (
{Array.from({ length: 6 }).map((_, i) => ( ))}
) : isError ? (

Failed to load orders. Please try again later.

) : !orders || orders.length === 0 ? (

You have no orders yet.

) : ( Active Orders ({activeOrders.length}) Completed Orders ({completedOrders.length}) {activeOrders.length === 0 ? (

You have no active orders.

) : (
{activeOrders.map((order) => (

Order #{order.id}

{getStatusBadge(order.status)}

Ordered: {new Date(order.created_at).toLocaleDateString()}

{order.estimated_delivery && (

Est. Delivery: {order.estimated_delivery}

)}
{order.items?.map((item) => (
{item.product?.image && ( {item.product.name} )}

{item.product?.name}

Qty: {item.quantity}

))}
Total {order.total_formatted || `$${order.total}`}
))}
)}
{completedOrders.length === 0 ? (

You have no completed orders.

) : (
{completedOrders.map((order) => (

Order #{order.id}

{getStatusBadge(order.status)}

Ordered: {new Date(order.created_at).toLocaleDateString()}

{order.updated_at && (

Completed: {new Date(order.updated_at).toLocaleDateString()}

)}
{order.items?.map((item) => (
{item.product?.image && ( {item.product.name} )}

{item.product?.name}

Qty: {item.quantity}

))}
Total {order.total_formatted || `$${order.total}`}
))}
)}
)} Cancel Order #{orderToCancel?.id} Are you sure you want to cancel this order? This action cannot be undone.
) }