"use client"; import { useState } from "react"; import { formatDate } from "@/lib/format-date"; type Order = { id: string; customer_name: string; customer_email: string | null; stop_id: string; status: string; subtotal: number; pickup_complete: boolean; created_at: string; }; export default function OrderTableBody({ orders }: { orders: Order[] }) { const [pickupToggles, setPickupToggles] = useState>( () => Object.fromEntries(orders.map((o) => [o.id, o.pickup_complete])) ); async function togglePickup(orderId: string, current: boolean) { setPickupToggles((prev) => ({ ...prev, [orderId]: !current })); await fetch( `${process.env.NEXT_PUBLIC_SUPABASE_URL}/rest/v1/orders?id=eq.${orderId}`, { method: "PATCH", headers: { apikey: process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!, "Content-Type": "application/json", Prefer: "return=representation", }, body: JSON.stringify({ pickup_complete: !current }), } ); } const statusColors: Record = { pending: "bg-yellow-100 text-yellow-700", confirmed: "bg-blue-900/40 text-blue-700", paid: "bg-green-900/40 text-green-400", cancelled: "bg-red-900/40 text-red-400", completed: "bg-zinc-950 text-zinc-400", }; return ( {orders.map((order) => ( {order.id.slice(0, 8)}
{order.customer_name}
{order.customer_email}
{order.status ?? "pending"} ${Number(order.subtotal).toFixed(2)} {formatDate(new Date(order.created_at))} ))} ); }