import Link from 'next/link';
import { t, tOpt } from '@/i18n';
import { cn } from '@/lib/cn';
import { compact, formatDate, grouped } from '@/lib/format';
import { routes } from '@/lib/site';
import type { UpdatesResponse } from '@/lib/types-analytics';
/** Latest data updates: one row per source (status, last import, vintage, latest year, values changed). */
export function LatestUpdates({ data, limit = 9 }: { data: UpdatesResponse; limit?: number }) {
const rows = [...data.sources].sort((a, b) => (b.last_success_at ?? '').localeCompare(a.last_success_at ?? '')).slice(0, limit);
return (
{rows.map((s) => (
-
{s.source.name ?? s.source.id}
{tOpt(`home.updates.status.${s.status}`, s.status)}
{formatDate(s.last_success_at ?? s.last_retrieved_at)}
{s.source_updated_at ? t('home.updates.vintage', { date: formatDate(s.source_updated_at) }) : ''}
{s.latest_year ? `→ ${s.latest_year}` : ''}
{t('home.updates.counts', { obs: compact(s.n_observations), ind: grouped(s.n_indicators) })}
{s.values_changed ? ` · ${t('home.updates.changed', { n: grouped(s.values_changed), c: grouped(s.countries_affected) })}` : ''}
))}
{t('home.updates.snapshot', { run: data.snapshot.run_id ?? '', date: formatDate(data.snapshot.built_at) })}
{t('home.updates.all')} →
);
}