import { Head, Link } from '@inertiajs/react';
import { Calendar, Clock, Plus, Radio } from 'lucide-react';
import { Button } from '@/components/ui/button';
import AppLayout from '@/layouts/app-layout';
import type { BreadcrumbItem } from '@/types';

type LiveClass = {
    id: number;
    title: string;
    scheduled_at: string;
    duration_minutes: number;
    is_published: boolean;
    course: { id: number; title: string; slug: string } | null;
};

type Props = { liveClasses: LiveClass[] };

const breadcrumbs: BreadcrumbItem[] = [{ title: 'Live Class Saya', href: '/instructor/live-classes' }];

function formatSchedule(dateStr: string) {
    const d = new Date(dateStr);
    return d.toLocaleDateString('id-ID', { day: 'numeric', month: 'short', year: 'numeric' }) + ' · ' +
        d.toLocaleTimeString('id-ID', { hour: '2-digit', minute: '2-digit' });
}

export default function InstructorLiveClassesIndex({ liveClasses }: Props) {
    return (
        <>
            <Head title="Live Class Saya" />

            <div className="flex flex-col gap-6 p-4 md:p-6">
                <div className="flex items-center justify-between">
                    <div>
                        <h1 className="text-xl font-bold">Live Class Saya</h1>
                        <p className="mt-0.5 text-sm text-muted-foreground">Jadwalkan dan kelola sesi live</p>
                    </div>
                    <Button asChild size="sm">
                        <Link href="/instructor/live-classes/create">
                            <Plus className="mr-1.5 h-4 w-4" />
                            Buat Live Class
                        </Link>
                    </Button>
                </div>

                {liveClasses.length === 0 ? (
                    <div className="rounded-xl border border-dashed p-12 text-center">
                        <Radio className="mx-auto mb-3 h-10 w-10 text-muted-foreground/40" />
                        <p className="text-muted-foreground">Belum ada live class. Buat sesi pertamamu!</p>
                        <Button asChild size="sm" className="mt-4">
                            <Link href="/instructor/live-classes/create">Buat Live Class</Link>
                        </Button>
                    </div>
                ) : (
                    <div className="flex flex-col gap-3">
                        {liveClasses.map((lc) => {
                            const isPast = new Date(lc.scheduled_at) < new Date();
                            return (
                                <Link
                                    key={lc.id}
                                    href={`/instructor/live-classes/${lc.id}`}
                                    className="flex items-center gap-4 rounded-xl border bg-card p-4 transition-shadow hover:shadow-sm"
                                >
                                    <div className={`flex h-10 w-10 shrink-0 items-center justify-center rounded-lg ${isPast ? 'bg-muted' : 'bg-red-500/10'}`}>
                                        <Radio className={`h-5 w-5 ${isPast ? 'text-muted-foreground' : 'text-red-500'}`} />
                                    </div>

                                    <div className="flex-1 min-w-0">
                                        <div className="flex items-center gap-2 flex-wrap">
                                            <p className="font-medium">{lc.title}</p>
                                            {!lc.is_published && (
                                                <span className="rounded-full bg-muted px-2 py-0.5 text-xs text-muted-foreground">Draft</span>
                                            )}
                                            {isPast && (
                                                <span className="rounded-full bg-muted px-2 py-0.5 text-xs text-muted-foreground">Selesai</span>
                                            )}
                                        </div>
                                        <div className="mt-0.5 flex gap-3 text-xs text-muted-foreground">
                                            <span className="flex items-center gap-1">
                                                <Calendar className="h-3.5 w-3.5" />
                                                {formatSchedule(lc.scheduled_at)}
                                            </span>
                                            <span className="flex items-center gap-1">
                                                <Clock className="h-3.5 w-3.5" />
                                                {lc.duration_minutes} menit
                                            </span>
                                        </div>
                                        {lc.course && (
                                            <p className="mt-0.5 text-xs text-muted-foreground">{lc.course.title}</p>
                                        )}
                                    </div>
                                </Link>
                            );
                        })}
                    </div>
                )}
            </div>
        </>
    );
}

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