import { Head } from '@inertiajs/react'
import { Card, CardContent } from '@ui/components/ui/card'
import { Activity, CheckCircle2, ClipboardList, FlaskConical } from 'lucide-react'
import { LimsAppLayout } from '@/layouts/lims-app-layout'
import { SampleMonthlyChart, type SampleChartDataItem } from './components/SampleMonthlyChart'

interface DashboardSummary {
    total_po_aktif: number
    total_sampel_proses: number
    total_sampel_selesai_bulan_ini: number
    tingkat_penyelesaian: number
}

interface DashboardProps {
    title?: string
    chartData: SampleChartDataItem[]
    summary: DashboardSummary
}

export default function Dashboard({ title, chartData, summary }: DashboardProps) {
    const persentase = summary.tingkat_penyelesaian ?? 0

    return (
        <LimsAppLayout>
            <Head title={title || 'Dashboard'} />

            <div className='flex h-full flex-1 flex-col gap-4 p-4'>
                {/* ── Stat Cards ──────────────────────────────────────────────── */}
                <div className='grid grid-cols-1 gap-4 sm:grid-cols-4'>
                    {/* Total PO Aktif */}
                    <Card className='rounded-2xl border shadow-sm'>
                        <CardContent className='p-6'>
                            <div className='flex items-start justify-between'>
                                <p className='text-xs font-semibold uppercase tracking-widest text-muted-foreground'>
                                    PO Aktif
                                </p>
                                <div className='flex h-9 w-9 items-center justify-center rounded-full bg-teal-50 dark:bg-teal-950/50'>
                                    <ClipboardList className='h-4 w-4 text-teal-600' />
                                </div>
                            </div>
                            <p className='mt-4 text-3xl font-black tracking-tight text-foreground'>
                                {summary.total_po_aktif}
                            </p>
                            <p className='mt-1 text-sm text-muted-foreground'>
                                Purchase order berjalan
                            </p>
                        </CardContent>
                    </Card>

                    {/* Sampel Dalam Proses */}
                    <Card className='rounded-2xl border shadow-sm'>
                        <CardContent className='p-6'>
                            <div className='flex items-start justify-between'>
                                <p className='text-xs font-semibold uppercase tracking-widest text-muted-foreground'>
                                    Dalam Proses
                                </p>
                                <div className='flex h-9 w-9 items-center justify-center rounded-full bg-orange-50 dark:bg-orange-950/50'>
                                    <FlaskConical className='h-4 w-4 text-orange-500' />
                                </div>
                            </div>
                            <p className='mt-4 text-3xl font-black tracking-tight text-foreground'>
                                {summary.total_sampel_proses}
                            </p>
                            <p className='mt-1 text-sm text-muted-foreground'>
                                Sampel sedang diuji
                            </p>
                        </CardContent>
                    </Card>

                    {/* Selesai Bulan Ini */}
                    <Card className='rounded-2xl border shadow-sm'>
                        <CardContent className='p-6'>
                            <div className='flex items-start justify-between'>
                                <p className='text-xs font-semibold uppercase tracking-widest text-muted-foreground'>
                                    Selesai Bulan Ini
                                </p>
                                <div className='flex h-9 w-9 items-center justify-center rounded-full bg-cyan-50 dark:bg-cyan-950/50'>
                                    <CheckCircle2 className='h-4 w-4 text-cyan-500' />
                                </div>
                            </div>
                            <p className='mt-4 text-3xl font-black tracking-tight text-foreground'>
                                {summary.total_sampel_selesai_bulan_ini}
                            </p>
                            <p className='mt-1 text-sm text-muted-foreground'>
                                Laporan hasil uji (LHU)
                            </p>
                        </CardContent>
                    </Card>

                    {/* Tingkat Penyelesaian — Gradient Card */}
                    <Card className='rounded-2xl border-0 bg-gradient-to-br from-teal-600 to-cyan-700 shadow-sm'>
                        <CardContent className='p-6'>
                            <div className='flex items-start justify-between'>
                                <p className='text-xs font-semibold uppercase tracking-widest text-teal-100'>
                                    Tingkat Selesai
                                </p>
                                <div className='flex h-9 w-9 items-center justify-center rounded-full bg-white/20'>
                                    <Activity className='h-4 w-4 text-white' />
                                </div>
                            </div>
                            <p className='mt-4 text-3xl font-black tracking-tight text-white'>
                                {persentase.toFixed(1)}%
                            </p>
                            {/* Progress bar */}
                            <div className='mt-3 h-1.5 w-full overflow-hidden rounded-full bg-white/30'>
                                <div
                                    className='h-full rounded-full bg-white transition-all duration-500'
                                    style={{ width: `${Math.min(persentase, 100)}%` }}
                                />
                            </div>
                            <p className='mt-2 text-xs text-teal-100'>
                                Sampel selesai vs masuk (bulan ini)
                            </p>
                        </CardContent>
                    </Card>
                </div>

                {/* ── Chart ───────────────────────────────────────────────────── */}
                <SampleMonthlyChart data={chartData} />
            </div>
        </LimsAppLayout>
    )
}
