import { Head } from '@inertiajs/react';
import { Megaphone } from 'lucide-react';
import AppLayout from '@/layouts/app-layout';
import type { BreadcrumbItem } from '@/types';

type Announcement = {
    id: number;
    title: string;
    content: string;
    published_at: string;
    author: { name: string };
};

type Paginator<T> = {
    data: T[];
    current_page: number;
    last_page: number;
    total: number;
    links: { url: string | null; label: string; active: boolean }[];
};

type Props = { announcements: Paginator<Announcement> };

const breadcrumbs: BreadcrumbItem[] = [{ title: 'Pengumuman', href: '/announcements' }];

function formatDate(date: string) {
    return new Intl.DateTimeFormat('id-ID', { day: 'numeric', month: 'long', year: 'numeric' }).format(new Date(date));
}

export default function AnnouncementsIndex({ announcements }: Props) {
    return (
        <>
            <Head title="Pengumuman" />

            <div className="mx-auto max-w-6xl flex flex-col gap-6 px-5 py-8">
                <div>
                    <h1 className="text-2xl font-bold">Pengumuman</h1>
                    <p className="text-sm text-muted-foreground">Informasi terbaru dari platform</p>
                </div>

                {announcements.data.length === 0 ? (
                    <div className="rounded-xl border border-dashed p-12 text-center">
                        <Megaphone className="mx-auto mb-3 h-10 w-10 text-muted-foreground/30" />
                        <p className="font-medium">Belum ada pengumuman</p>
                    </div>
                ) : (
                    <div className="flex flex-col gap-4">
                        {announcements.data.map((a) => (
                            <article key={a.id} className="rounded-xl border bg-card p-5 shadow-sm">
                                <div className="mb-3 flex items-start justify-between gap-3">
                                    <h2 className="text-lg font-semibold">{a.title}</h2>
                                    <time className="shrink-0 text-xs text-muted-foreground">{formatDate(a.published_at)}</time>
                                </div>
                                <p className="text-sm leading-relaxed text-muted-foreground whitespace-pre-wrap">{a.content}</p>
                                <p className="mt-3 text-xs text-muted-foreground">— {a.author.name}</p>
                            </article>
                        ))}
                    </div>
                )}
            </div>
        </>
    );
}

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