import { Head, Link, router } from '@inertiajs/react';
import { useState } from 'react';
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
import { ArrowUpRight, Search } from 'lucide-react';
import PortalLayout from '@/layouts/portal-layout';
import '../../../css/alumni-home.css';

type Story = { id: number; kind: 'news' | 'activity'; title: string; slug: string | null; excerpt: string | null; thumbnail: string | null; category: string; date: string | null };
type Props = {
    newsList: { data: Story[]; total: number; current_page: number; last_page: number; next_page_url: string | null; prev_page_url: string | null };
    categories: { slug: string; name: string }[];
    currentCategory: string;
    currentSearch: string;
};
export default function NewsMedia({ newsList, categories, currentCategory, currentSearch }: Props) {
    const [search, setSearch] = useState(currentSearch);
    const apply = (category: string) => router.get('/berita', { kategori: category || undefined, cari: search.trim() || undefined }, { preserveScroll: true });
    return <PortalLayout>
        <Head title="Berita & Kegiatan Alumni | FT UNMA"><meta name="description" content="Berita fakultas, lowongan kerja, beasiswa, dan kegiatan alumni Fakultas Teknik Universitas Majalengka." /></Head>
        <main className="unified-news">
            <header className="unified-news-heading">
                <div className="alumni-shell unified-news-heading-inner">
                    <div>
                        <p className="unified-news-eyebrow">KABAR FAKULTAS & ALUMNI</p>
                        <h1>Berita & Kegiatan</h1>
                        <p className="unified-news-intro">Kabar terbaru Fakultas Teknik Universitas Majalengka, peluang karier, dan kegiatan dari komunitas alumni.</p>
                    </div>
                    <Link id="feed-contribute" className="unified-news-contribute" href="/kirim-kegiatan">Kirim berita & kegiatan <ArrowUpRight size={17} aria-hidden="true" /></Link>
                </div>
            </header>
            <div className="alumni-shell unified-news-content">
                <form className="unified-news-tools" onSubmit={(e) => { e.preventDefault(); apply(currentCategory); }}>
                    <div><label htmlFor="feed-search">Cari berita atau kegiatan</label><input id="feed-search" type="search" maxLength={200} value={search} onChange={(e) => setSearch(e.target.value)} placeholder="Judul atau kata kunci" /></div>
                    <div className="unified-news-category">
                        <label htmlFor="feed-category">Kategori</label>
                        <Select value={currentCategory || 'all'} onValueChange={(value) => apply(value === 'all' ? '' : value)}>
                            <SelectTrigger id="feed-category" className="unified-news-category-trigger"><SelectValue /></SelectTrigger>
                            <SelectContent className="unified-news-category-menu" align="start">
                                <SelectItem value="all">Semua kategori</SelectItem>
                                {categories.filter((c) => c.slug !== 'kegiatan-alumni').map((c) => <SelectItem key={c.slug} value={c.slug}>{c.name}</SelectItem>)}
                                <SelectItem value="kegiatan-alumni">Kegiatan Alumni</SelectItem>
                            </SelectContent>
                        </Select>
                    </div>
                    <button id="feed-search-submit" type="submit"><Search size={16} aria-hidden="true" /> Cari</button>
                </form>
                <p className="unified-news-count" role="status">{newsList.total} kiriman{currentCategory || currentSearch ? ' sesuai pencarian' : ' diterbitkan'}</p>
                <div className="unified-news-grid">
                    {newsList.data.map((story) => <article className="unified-news-card" key={`${story.kind}-${story.id}`}>
                        {story.thumbnail && <img src={story.thumbnail} alt="" loading="lazy" />}
                        <div className="unified-news-body">
                            <div className="unified-news-meta"><span>{story.category}</span>{story.date && <time dateTime={story.date}>{new Date(story.date).toLocaleDateString('id-ID', { day: 'numeric', month: 'short', year: 'numeric' })}</time>}</div>
                            <h2><Link id={`feed-${story.kind}-${story.id}`} href={story.kind === 'news' ? `/berita/${story.slug}` : `/kegiatan/${story.id}`}>{story.title}</Link></h2>
                            {story.excerpt && <p>{story.excerpt}</p>}
                        </div>
                    </article>)}
                </div>
                {newsList.total === 0 && <section className="unified-news-empty"><h2>Belum ada kiriman yang cocok</h2><p>Coba kata kunci atau kategori lain.</p><Link id="feed-reset" href="/berita">Tampilkan semua</Link></section>}
                {newsList.last_page > 1 && <nav className="unified-news-pagination" aria-label="Halaman kiriman">{newsList.prev_page_url && <Link id="feed-prev" href={newsList.prev_page_url}>Sebelumnya</Link>}<span>Halaman {newsList.current_page} dari {newsList.last_page}</span>{newsList.next_page_url && <Link id="feed-next" href={newsList.next_page_url}>Berikutnya</Link>}</nav>}
            </div>
        </main>
    </PortalLayout>;
}

