import { Head, Link, router } from '@inertiajs/react';

type Order = { id: number; order_number: string; status: string; total: string; items: unknown[] };
type Address = { id: number; type: string; city: string; address_line_1: string };
type Vehicle = { id: number; make: string; model: string; year: number | null; engine_code: string | null };

export default function CustomerDashboard({ orders, addresses, vehicles }: { orders: Order[]; addresses: Address[]; vehicles: Vehicle[] }) {
    return (
        <>
            <Head title="Account" />
            <main className="min-h-screen bg-slate-50 px-4 py-6 text-slate-900 sm:px-6 lg:px-8">
                <div className="mx-auto max-w-6xl">
                    <div className="flex items-end justify-between gap-3 border-b border-slate-200 pb-5"><div><p className="text-sm font-medium text-cyan-700">Customer account</p><h1 className="text-2xl font-semibold">Dashboard</h1></div><button onClick={() => router.post('/logout')} className="rounded-md border border-slate-300 bg-white px-4 py-2 text-sm font-semibold">Logout</button></div>
                    <div className="mt-6 grid gap-5 md:grid-cols-3">
                        <Tile title="Orders" value={orders.length} href="/account" />
                        <Tile title="Addresses" value={addresses.length} href="/account/addresses" />
                        <Tile title="Vehicles" value={vehicles.length} href="/account/vehicles" />
                    </div>
                    <section className="mt-6 rounded-lg border border-slate-200 bg-white p-5">
                        <div className="flex items-center justify-between gap-3"><h2 className="font-semibold">Recent orders</h2><Link href="/orders/track" className="text-sm font-semibold text-cyan-700">Track guest order</Link></div>
                        <div className="mt-3 grid gap-2">
                            {orders.map((order) => <div key={order.id} className="flex justify-between gap-4 rounded-md border border-slate-200 p-3 text-sm"><div><p className="font-medium">{order.order_number}</p><p className="text-slate-500 capitalize">{order.status.replace('_', ' ')}</p></div><p className="font-semibold">{order.total}</p></div>)}
                            {orders.length === 0 ? <p className="text-sm text-slate-500">No orders yet.</p> : null}
                        </div>
                    </section>
                </div>
            </main>
        </>
    );
}

function Tile({ title, value, href }: { title: string; value: number; href: string }) {
    return <Link href={href} className="rounded-lg border border-slate-200 bg-white p-5"><p className="text-sm text-slate-500">{title}</p><p className="mt-2 text-3xl font-semibold">{value}</p></Link>;
}
