import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
import { PlaceholderPattern } from '@/components/ui/placeholder-pattern';
import AppLayout from '@/layouts/app-layout';
import { dashboard } from '@/routes';
import admin from '@/routes/admin';
import { type BreadcrumbItem } from '@/types';
import { Head, Link } from '@inertiajs/react';
import { ArrowRight } from 'lucide-react';

type SearchSummary = {
    total: number;
    today: number;
    last_7_days: number;
    avg_duration_ms: number | null;
};

type Props = {
    searchSummary: SearchSummary;
    webFormSummary: SearchSummary;
};

const breadcrumbs: BreadcrumbItem[] = [
    {
        title: 'Dashboard',
        href: dashboard().url,
    },
];

export default function Dashboard({ searchSummary, webFormSummary }: Props) {
    return (
        <AppLayout breadcrumbs={breadcrumbs}>
            <Head title="Dashboard" />
            <div className="flex h-full flex-1 flex-col gap-4 overflow-x-auto rounded-xl p-4">
                <div className="grid auto-rows-min gap-4 md:grid-cols-3">
                    <Card>
                        <CardHeader>
                            <CardTitle className="flex items-center justify-between">
                                <span>Search traffic</span>
                                <Link
                                    href={admin.analytics.index().url}
                                    className="inline-flex items-center gap-1 text-xs font-normal text-muted-foreground hover:text-foreground"
                                >
                                    View analytics
                                    <ArrowRight className="size-3" />
                                </Link>
                            </CardTitle>
                        </CardHeader>
                        <CardContent>
                            <dl className="grid grid-cols-2 gap-4">
                                <div>
                                    <dt className="text-xs text-muted-foreground">Total searches</dt>
                                    <dd className="text-xl font-semibold">
                                        {searchSummary.total.toLocaleString()}
                                    </dd>
                                </div>
                                <div>
                                    <dt className="text-xs text-muted-foreground">Today</dt>
                                    <dd className="text-xl font-semibold">
                                        {searchSummary.today.toLocaleString()}
                                    </dd>
                                </div>
                                <div>
                                    <dt className="text-xs text-muted-foreground">Last 7 days</dt>
                                    <dd className="text-xl font-semibold">
                                        {searchSummary.last_7_days.toLocaleString()}
                                    </dd>
                                </div>
                                <div>
                                    <dt className="text-xs text-muted-foreground">Avg. response</dt>
                                    <dd className="text-xl font-semibold">
                                        {searchSummary.avg_duration_ms !== null
                                            ? `${Math.round(searchSummary.avg_duration_ms)} ms`
                                            : '—'}
                                    </dd>
                                </div>
                            </dl>
                        </CardContent>
                    </Card>
                    <Card>
                        <CardHeader>
                            <CardTitle className="flex items-center justify-between">
                                <span>Enrollment starts</span>
                                <Link
                                    href={admin.analytics.index().url}
                                    className="inline-flex items-center gap-1 text-xs font-normal text-muted-foreground hover:text-foreground"
                                >
                                    View analytics
                                    <ArrowRight className="size-3" />
                                </Link>
                            </CardTitle>
                        </CardHeader>
                        <CardContent>
                            <dl className="grid grid-cols-2 gap-4">
                                <div>
                                    <dt className="text-xs text-muted-foreground">Total starts</dt>
                                    <dd className="text-xl font-semibold">
                                        {webFormSummary.total.toLocaleString()}
                                    </dd>
                                </div>
                                <div>
                                    <dt className="text-xs text-muted-foreground">Today</dt>
                                    <dd className="text-xl font-semibold">
                                        {webFormSummary.today.toLocaleString()}
                                    </dd>
                                </div>
                                <div>
                                    <dt className="text-xs text-muted-foreground">Last 7 days</dt>
                                    <dd className="text-xl font-semibold">
                                        {webFormSummary.last_7_days.toLocaleString()}
                                    </dd>
                                </div>
                                <div>
                                    <dt className="text-xs text-muted-foreground">Avg. response</dt>
                                    <dd className="text-xl font-semibold">
                                        {webFormSummary.avg_duration_ms !== null
                                            ? `${Math.round(webFormSummary.avg_duration_ms)} ms`
                                            : '—'}
                                    </dd>
                                </div>
                            </dl>
                        </CardContent>
                    </Card>
                    <div className="relative aspect-video overflow-hidden rounded-xl border border-sidebar-border/70 dark:border-sidebar-border">
                        <PlaceholderPattern className="absolute inset-0 size-full stroke-neutral-900/20 dark:stroke-neutral-100/20" />
                    </div>
                </div>
                <div className="relative min-h-[100vh] flex-1 overflow-hidden rounded-xl border border-sidebar-border/70 md:min-h-min dark:border-sidebar-border">
                    <PlaceholderPattern className="absolute inset-0 size-full stroke-neutral-900/20 dark:stroke-neutral-100/20" />
                </div>
            </div>
        </AppLayout>
    );
}
