"use client"; import { ChevronRight, Package, RefreshCcw, Search, ShoppingBag, Truck, } from "lucide-react"; import { useState } from "react"; import { AspectRatio } from "@/components/ui/aspect-ratio"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Card, CardContent } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { cn } from "@/lib/utils"; type OrderStatus = | "processing" | "shipped" | "delivered" | "cancelled" | "returned"; interface OrderHistoryItem { id: string; orderNumber: string; /** ISO 8601 date (YYYY-MM-DD) */ orderDate: string; status: OrderStatus; total: number; itemCount: number; thumbnails: string[]; trackingNumber?: string; } const DEFAULT_ORDERS: OrderHistoryItem[] = [ { id: "1", orderNumber: "ORD-2024-78432", orderDate: "2024-12-14", status: "processing", total: 289000.0, itemCount: 2, thumbnails: [ "/block-media/shadcnblocks/block/ecommerce/clothes/stylish-maroon-sneaker.png", "/block-media/shadcnblocks/block/ecommerce/clothes/black-hoodie-against-light-background.png", ], }, { id: "2", orderNumber: "ORD-2024-78401", orderDate: "2024-12-10", status: "shipped", total: 549990.0, itemCount: 3, thumbnails: [ "/block-media/shadcnblocks/block/ecommerce/electronics/smart-watch-1.png", "/block-media/shadcnblocks/block/ecommerce/electronics/Sleek-Modern-Laptop-1.png", "/block-media/shadcnblocks/block/ecommerce/electronics/Sleek-Smartphone-Close-Up-1.png", ], trackingNumber: "1Z999AA10123456784", }, { id: "3", orderNumber: "ORD-2024-78355", orderDate: "2024-11-28", status: "delivered", total: 1249000.0, itemCount: 2, thumbnails: [ "/block-media/shadcnblocks/block/ecommerce/furniture/Modern-Leather-Sofa-1.png", "/block-media/shadcnblocks/block/ecommerce/furniture/Modern-Artistic-Lamp-1.png", ], }, { id: "4", orderNumber: "ORD-2024-78290", orderDate: "2024-11-15", status: "cancelled", total: 185000.0, itemCount: 3, thumbnails: [ "/block-media/shadcnblocks/block/ecommerce/accessories/Stylish-Round-Sunglasses-1.png", "/block-media/shadcnblocks/block/ecommerce/accessories/Sunflower-Pendant-Necklace-1.png", "/block-media/shadcnblocks/block/ecommerce/accessories/Stylish-Pink-Eyeglasses-1.png", ], }, ]; const formatCurrency = (value: number) => `${value.toLocaleString("fa-IR")} ریال`; const dateFormatter = new Intl.DateTimeFormat("fa-IR", { year: "numeric", month: "long", day: "numeric", }); const formatOrderDate = (isoDate: string) => dateFormatter.format(new Date(isoDate + "T12:00:00")); const formatItemCount = (count: number) => `${count.toLocaleString("fa-IR")} قلم`; const statusConfig: Record< OrderStatus, { label: string; className: string; icon: typeof Package } > = { processing: { label: "در حال پردازش", className: "bg-amber-500/10 text-amber-600 hover:bg-amber-500/10", icon: Package, }, shipped: { label: "ارسال‌شده", className: "bg-blue-500/10 text-blue-600 hover:bg-blue-500/10", icon: Truck, }, delivered: { label: "تحویل‌شده", className: "bg-emerald-500/10 text-emerald-600 hover:bg-emerald-500/10", icon: Package, }, cancelled: { label: "لغوشده", className: "bg-red-500/10 text-red-600 hover:bg-red-500/10", icon: Package, }, returned: { label: "مرجوع‌شده", className: "bg-slate-500/10 text-slate-600 hover:bg-slate-500/10", icon: RefreshCcw, }, }; const tabLabels: Record = { all: "همه", active: "فعال", delivered: "تحویل‌شده", cancelled: "لغوشده", }; interface OrderHistory1Props { orders?: OrderHistoryItem[]; className?: string; } const OrderHistory1 = ({ orders = DEFAULT_ORDERS, className, }: OrderHistory1Props) => { const [activeTab, setActiveTab] = useState("all"); const [searchQuery, setSearchQuery] = useState(""); const filteredOrders = orders.filter((order) => { const matchesTab = activeTab === "all" || (activeTab === "active" && (order.status === "processing" || order.status === "shipped")) || order.status === activeTab; const matchesSearch = searchQuery === "" || order.orderNumber.toLowerCase().includes(searchQuery.toLowerCase()); return matchesTab && matchesSearch; }); return (

تاریخچه سفارش‌ها

مشاهده و مدیریت سفارش‌های گذشته خود

{tabLabels.all} {tabLabels.active} {tabLabels.delivered} {tabLabels.cancelled}
{filteredOrders.length > 0 ? (
{filteredOrders.map((order) => { const status = statusConfig[order.status]; return (
{order.thumbnails.slice(0, 3).map((thumb, index) => (
0 && "-ms-4", )} style={{ zIndex: 3 - index }} >
))} {order.itemCount > 3 && (
+ {(order.itemCount - 3).toLocaleString("fa-IR")}
)}

{order.orderNumber}

{status.label}

{formatOrderDate(order.orderDate)} ·{" "} {formatItemCount(order.itemCount)}

{order.trackingNumber && (

رهگیری:{" "} {order.trackingNumber}

)}

{formatCurrency(order.total)}

{order.status === "shipped" && ( )} {order.status === "delivered" && ( )}
); })}
) : (

سفارشی یافت نشد

{searchQuery ? `سفارشی با عبارت «${searchQuery}» یافت نشد.` : "هنوز سفارشی ثبت نکرده‌اید. با شروع خرید، تاریخچه سفارش‌ها اینجا نمایش داده می‌شود."}

)} {filteredOrders.length > 0 && (

نمایش {filteredOrders.length.toLocaleString("fa-IR")} از{" "} {orders.length.toLocaleString("fa-IR")} سفارش

)}
); }; export { OrderHistory1 };