import { Head, usePage } from '@inertiajs/react';
import AppLayout from '@/layouts/app-layout';
import { TrendingUp, TrendingDown, Database, Sparkles } from 'lucide-react';

// Phase 2.5 Home. Figures shown are illustrative placeholders until the metric
// layer (Phase 4) feeds real values; the layout is the real shell.
export default function Dashboard() {
    const page = usePage().props as unknown as {
        auth?: { user?: { name?: string } };
        organization?: { current?: { name?: string } };
    };
    const name = page.auth?.user?.name ?? 'there';
    const org = page.organization?.current?.name;

    const hour = new Date().getHours();
    const greeting = hour < 12 ? 'Good morning' : hour < 18 ? 'Good afternoon' : 'Good evening';

    return (
        <AppLayout>
            <Head title="Home" />
            <div className="mx-auto w-full max-w-6xl px-6 py-8">
                <header className="mb-6">
                    <h1 className="text-2xl font-semibold tracking-tight text-foreground">
                        {greeting}, {name}
                    </h1>
                    <p className="mt-1 text-sm text-muted-foreground">
                        {org ? `Here's what's happening across ${org}.` : "Here's your overview."}
                    </p>
                </header>

                <div className="mb-6 flex items-center gap-2 rounded-xl border border-border bg-accent/40 px-4 py-3 text-sm">
                    <Database className="size-4 text-primary" />
                    <span className="text-foreground">Connect a data source to start seeing live metrics.</span>
                    <a href="/data-manager" className="ml-auto font-medium text-primary hover:underline">
                        Open Data Manager
                    </a>
                </div>

                <div className="grid gap-4 sm:grid-cols-2 lg:grid-cols-4">
                    <Kpi label="Ad spend (30d)" value="—" trend={null} />
                    <Kpi label="Leads (30d)" value="—" trend={null} />
                    <Kpi label="Occupancy" value="—" trend={null} />
                    <Kpi label="Rent collected" value="—" trend={null} />
                </div>

                <div className="mt-6 rounded-xl border border-border bg-card p-6 shadow-sm">
                    <div className="flex items-center gap-2">
                        <Sparkles className="size-4 text-primary" />
                        <h2 className="font-medium text-foreground">AI Analyst</h2>
                    </div>
                    <p className="mt-2 text-sm text-muted-foreground">
                        Once your data is connected, ask questions in plain language and get answers
                        with figures, date ranges, and sources.
                    </p>
                    <a
                        href="/ai"
                        className="mt-4 inline-flex rounded-md bg-primary px-3.5 py-1.5 text-sm font-medium text-primary-foreground transition hover:opacity-90"
                    >
                        Open AI Analyst
                    </a>
                </div>
            </div>
        </AppLayout>
    );
}

function Kpi({ label, value, trend }: { label: string; value: string; trend: number | null }) {
    return (
        <div className="rounded-xl border border-border bg-card p-5 shadow-sm">
            <p className="text-xs font-medium text-muted-foreground">{label}</p>
            <div className="mt-2 flex items-baseline gap-2">
                <span className="text-2xl font-semibold text-foreground">{value}</span>
                {trend !== null && (
                    <span className={`inline-flex items-center gap-0.5 text-xs font-medium ${trend >= 0 ? 'text-emerald-600' : 'text-destructive'}`}>
                        {trend >= 0 ? <TrendingUp className="size-3" /> : <TrendingDown className="size-3" />}
                        {Math.abs(trend)}%
                    </span>
                )}
            </div>
        </div>
    );
}
