import AuthenticatedLayout from '@/Layouts/AuthenticatedLayout';
import { Head, Link } from '@inertiajs/react';
import { StatCard } from '@/Components/ui/stat-card';
import { Badge } from '@/Components/ui/badge';
import { formatCurrency, formatDate } from '@/lib/utils';
import { BarChart, Bar, XAxis, YAxis, Tooltip, ResponsiveContainer } from 'recharts';

export default function Dashboard({ stats, recentActivity, overdueList, upcomingReminders, spendBySupplier, monthlySpend }: any) {
    return (
        <AuthenticatedLayout header="Dashboard">
            <Head title="Dashboard" />
            <div className="space-y-6">
                <div className="grid grid-cols-2 lg:grid-cols-3 xl:grid-cols-6 gap-4">
                    <StatCard label="Total POs" value={stats.totalPos} />
                    <StatCard label="Active POs" value={stats.activePos} color="text-blue-600" />
                    <StatCard label="Overdue" value={stats.overduePos} color={stats.overduePos > 0 ? 'text-red-600' : 'text-foreground'} />
                    <StatCard label="Suppliers" value={stats.totalSuppliers} />
                    <StatCard label="Total Spend" value={formatCurrency(stats.totalSpend)} />
                    <StatCard label="This Month" value={formatCurrency(stats.monthSpend)} />
                </div>

                <div className="grid grid-cols-1 lg:grid-cols-2 gap-6">
                    <div className="bg-white rounded-lg border border-border p-5 shadow-sm">
                        <h2 className="font-semibold mb-4">Spend by Supplier</h2>
                        <ResponsiveContainer width="100%" height={200}>
                            <BarChart data={spendBySupplier}><XAxis dataKey="name" tick={{fontSize:11}} /><YAxis tick={{fontSize:11}} /><Tooltip formatter={(v:any)=>formatCurrency(v)} /><Bar dataKey="total" fill="#0f172a" radius={[3,3,0,0]} /></BarChart>
                        </ResponsiveContainer>
                    </div>
                    <div className="bg-white rounded-lg border border-border p-5 shadow-sm">
                        <h2 className="font-semibold mb-4">Monthly Spend</h2>
                        <ResponsiveContainer width="100%" height={200}>
                            <BarChart data={monthlySpend}><XAxis dataKey="month" tick={{fontSize:11}} /><YAxis tick={{fontSize:11}} /><Tooltip formatter={(v:any)=>formatCurrency(v)} /><Bar dataKey="total" fill="#f97316" radius={[3,3,0,0]} /></BarChart>
                        </ResponsiveContainer>
                    </div>
                </div>

                <div className="grid grid-cols-1 lg:grid-cols-2 gap-6">
                    {overdueList.length > 0 && (
                        <div className="bg-white rounded-lg border border-red-200 p-5 shadow-sm">
                            <h2 className="font-semibold text-red-700 mb-3">⚠ Overdue POs</h2>
                            <div className="space-y-2">
                                {overdueList.map((po: any) => (
                                    <Link key={po.id} href={`/purchase-orders/${po.id}`} className="flex justify-between items-center py-2 border-b last:border-0 hover:text-primary">
                                        <div><p className="text-sm font-medium">{po.po_number}</p><p className="text-xs text-muted-foreground">{po.supplier?.name}</p></div>
                                        <Badge status="overdue" />
                                    </Link>
                                ))}
                            </div>
                        </div>
                    )}
                    <div className="bg-white rounded-lg border border-border p-5 shadow-sm">
                        <h2 className="font-semibold mb-3">Recent Activity</h2>
                        <div className="space-y-2">
                            {recentActivity.slice(0,8).map((a: any) => (
                                <div key={a.id} className="flex gap-3 py-1.5 border-b last:border-0">
                                    <div className="flex-1 min-w-0"><p className="text-sm truncate">{a.description}</p><p className="text-xs text-muted-foreground">{formatDate(a.created_at)}</p></div>
                                    {a.amount && <p className="text-sm font-medium text-right">{formatCurrency(a.amount)}</p>}
                                </div>
                            ))}
                        </div>
                    </div>
                </div>
            </div>
        </AuthenticatedLayout>
    );
}
