'use client'; import { useState } from "react"; import Link from "next/link"; import type { OrderWithDetails, OrderStatus } from "@/lib/types"; import { StatusBadge } from "./StatusBadge"; export function OrderTable({ orders }: { orders: OrderWithDetails[] }) { const [search, setSearch] = useState(""); const [statusFilter, setStatusFilter] = useState(""); const filtered = orders.filter((order) => { const matchesSearch = !search || order.title.toLowerCase().includes(search.toLowerCase()) || order.customers.some((oc) => oc.customer.name.toLowerCase().includes(search.toLowerCase()) ); const matchesStatus = !statusFilter || order.status === statusFilter; return matchesSearch && matchesStatus; }); const getTotal = (order: OrderWithDetails) => order.items.reduce((sum, item) => sum + item.finalPrice, 0); return (
{/* Filters */}
setSearch(e.target.value)} className="flex-1 border-2 border-border rounded-xl px-4 py-2.5 text-sm bg-white focus:border-accent focus:ring-2 focus:ring-accent/20 outline-none" />
{/* Mobile cards */}
{filtered.length === 0 ? (
No orders found
) : ( filtered.map((order) => (

{order.title}

{order.items.length} item{order.items.length !== 1 ? "s" : ""} ${getTotal(order).toFixed(2)}
{order.customers.length > 0 && (

{order.customers.map((oc) => oc.customer.name).join(", ")}

)} )) )}
{/* Desktop table */}
{filtered.length === 0 ? ( ) : ( filtered.map((order) => ( )) )}
Title Status Customers Items Total Updated
No orders found
{order.title} {order.customers.map((oc) => oc.customer.name).join(", ") || "\u2014"} {order.items.length} ${getTotal(order).toFixed(2)} {new Date(order.updatedAt).toLocaleDateString()}
); }