// Import ======================================================================================================================== import App from '@/layouts/aia/app-layout'; import Input from '@/components/input'; import SectionNavigation from '@/components/aia/section-navigation'; import PageMeta from '@/components/aia/page-meta'; import HeroContent from '@/components/aia/hero-content'; import ReportCard from '@/components/report-card'; import { router } from '@inertiajs/react'; import { useState } from 'react'; type ReportItem = { id: number; title: string; year: number; summary?: string | null; cover_image_url?: string | null; published_at?: string | null; download_type: 'upload' | 'link'; download_url: string; }; type ReportProps = { reports: ReportItem[]; filters: { year?: number | null; }; years: number[]; }; export default function Report({ reports, filters, years }: ReportProps) { const [selectedYear, setSelectedYear] = useState( filters.year ? String(filters.year) : '' ); const reportCards = reports.map((report) => { const formattedDate = report.published_at ? new Intl.DateTimeFormat('en', { day: '2-digit', month: 'short', year: 'numeric', }).format(new Date(report.published_at)) : String(report.year); return { id: report.id, reportImage: report.cover_image_url || undefined, reportTitle: report.title, reportDate: formattedDate, downloadLink: report.download_url, downloadType: report.download_type, }; }); const handleYearChange = (value: string | boolean) => { const yearValue = typeof value === 'string' ? value : ''; setSelectedYear(yearValue); router.get( route('report'), { year: yearValue || undefined }, { preserveState: true, preserveScroll: true } ); }; return ( } pageMeta={ < PageMeta title="AI in Taiwan" /> } mainClass="pageContent" >
({ value: String(year), label: String(year), })), ]} onChange={handleYearChange} />
{reportCards.map((card) => ( ))}
); }