import { Head, Link } from '@inertiajs/react';
import { ClipboardList, BookOpen, Users, CheckCircle, ArrowRight } from 'lucide-react';
import AppLayout from '@/layouts/app-layout';
import type { BreadcrumbItem } from '@/types';

type Assignment = {
    id: number;
    title: string;
    max_score: number;
    deadline: number | null;
    course: {
        title: string;
        slug: string;
    };
    total_submissions: number;
    pending_submissions: number;
};

type Props = {
    assignments: Assignment[];
};

const breadcrumbs: BreadcrumbItem[] = [
    { title: 'Instruktur', href: '/instructor/dashboard' },
    { title: 'Tugas Masuk', href: '/instructor/assignments' },
];

export default function InstructorAssignmentsIndex({ assignments }: Props) {
    return (
        <>
            <Head title="Tugas Masuk — Instruktur" />

            <div className="flex flex-col gap-6 p-4 md:p-6 w-full max-w-7xl">
                {/* Header Banner */}
                <div className="relative overflow-hidden rounded-2xl border border-blue-100 bg-gradient-to-br from-blue-50 via-white to-indigo-50 p-6 shadow-xs dark:border-blue-800/30 dark:from-blue-950/40 dark:via-card dark:to-indigo-950/30">
                    <div className="relative z-10 flex items-center justify-between">
                        <div className="flex items-center gap-3">
                            <div className="flex h-11 w-11 items-center justify-center rounded-xl bg-blue-100 dark:bg-blue-800/60">
                                <ClipboardList className="h-5 w-5 text-blue-600 dark:text-blue-300" />
                            </div>
                            <div>
                                <h1 className="text-xl font-bold text-blue-900 dark:text-blue-100">Tugas Masuk</h1>
                                <p className="text-sm text-blue-600 dark:text-blue-400">
                                    Kelola dan periksa seluruh tugas yang dikirimkan oleh siswa Anda
                                </p>
                            </div>
                        </div>
                    </div>
                    <div className="absolute -right-4 -top-4 h-20 w-20 rounded-full bg-blue-100/40 dark:bg-blue-700/10" />
                    <div className="absolute right-10 -bottom-6 h-28 w-28 rounded-full bg-indigo-100/30 dark:bg-indigo-700/10" />
                </div>

                {assignments.length === 0 ? (
                    <div className="flex flex-col items-center justify-center rounded-2xl border border-dashed border-zinc-200 bg-white py-16 text-center shadow-sm dark:border-zinc-800 dark:bg-card">
                        <div className="mb-4 flex h-14 w-14 items-center justify-center rounded-2xl bg-blue-50 dark:bg-blue-900/20">
                            <CheckCircle className="h-7 w-7 text-blue-500 dark:text-blue-400" />
                        </div>
                        <p className="font-bold text-zinc-800 dark:text-zinc-100">Belum ada tugas dibuat</p>
                        <p className="mt-1 text-xs text-muted-foreground">Tugas dapat ditambahkan saat menyusun bab/materi di kelas Anda.</p>
                    </div>
                ) : (
                    <div className="grid gap-5 md:grid-cols-2 lg:grid-cols-3">
                        {assignments.map((assignment) => (
                            <div key={assignment.id} className="flex flex-col overflow-hidden rounded-2xl bg-white shadow-md transition-all duration-200 hover:shadow-lg dark:bg-card">
                                {/* Card Body */}
                                <div className="flex-1 p-5">
                                    <div className="flex items-start justify-between gap-2 mb-3">
                                        <div className="flex items-center gap-1.5 text-xs text-blue-600 dark:text-blue-400 font-semibold truncate">
                                            <BookOpen className="h-3.5 w-3.5 shrink-0" />
                                            <span className="truncate">{assignment.course.title}</span>
                                        </div>
                                        {assignment.pending_submissions > 0 ? (
                                            <span className="shrink-0 rounded-full bg-amber-50 border border-amber-100 px-2 py-0.5 text-[10px] font-bold text-amber-600 animate-pulse">
                                                {assignment.pending_submissions} Perlu Dinilai
                                            </span>
                                        ) : (
                                            <span className="shrink-0 rounded-full bg-zinc-50 border border-zinc-100 px-2 py-0.5 text-[10px] font-semibold text-zinc-500">
                                                Selesai Diperiksa
                                            </span>
                                        )}
                                    </div>

                                    <h3 className="font-bold text-base text-zinc-800 dark:text-zinc-100 line-clamp-2 mb-4 min-h-[3rem]">
                                        {assignment.title}
                                    </h3>

                                    <div className="grid grid-cols-2 gap-4 border-t border-zinc-50 pt-4 dark:border-zinc-800/50 text-xs">
                                        <div className="flex flex-col gap-1">
                                            <span className="text-muted-foreground">Total Pengumpulan</span>
                                            <div className="flex items-center gap-1 font-bold text-zinc-800 dark:text-zinc-200">
                                                <Users className="h-3.5 w-3.5 text-zinc-400" />
                                                {assignment.total_submissions} siswa
                                            </div>
                                        </div>
                                        <div className="flex flex-col gap-1">
                                            <span className="text-muted-foreground">Nilai Maksimal</span>
                                            <span className="font-bold text-zinc-800 dark:text-zinc-200">
                                                {assignment.max_score} poin
                                            </span>
                                        </div>
                                    </div>
                                </div>

                                {/* Card Footer */}
                                <div className="border-t bg-white px-5 py-3.5 dark:bg-card">
                                    <Link
                                        href={`/instructor/courses/${assignment.course.slug}/assignments/${assignment.id}/submissions`}
                                        className="flex items-center justify-center gap-1.5 w-full rounded-xl bg-blue-50 border border-blue-100 py-2 text-xs font-bold text-blue-600 hover:bg-blue-100 hover:text-blue-700 transition-all cursor-pointer"
                                    >
                                        Periksa Tugas
                                        <ArrowRight className="h-3.5 w-3.5" />
                                    </Link>
                                </div>
                            </div>
                        ))}
                    </div>
                )}
            </div>
        </>
    );
}

InstructorAssignmentsIndex.layout = (page: React.ReactNode) => (
    <AppLayout breadcrumbs={breadcrumbs}>{page}</AppLayout>
);
