import Link from 'next/link'; import { t } from '@/i18n'; import { formatDate } from '@/lib/format'; import { routes } from '@/lib/site'; import { Logo } from '@/components/brand/Logo'; /** * Site footer: explore/reference link columns, licence note, credits ("Made by … · contact", "Hosted on MacLustr"). * `builtAt`/`runId` (optional) come from the API `meta` of the page that renders it. Reuse `` * on /sources and /api pages for the contact line. */ export function SiteFooter({ builtAt, runId }: { builtAt?: string | null; runId?: string | null }) { const explore = [ { href: routes.explore(), label: t('nav.explore') }, { href: routes.countries(), label: t('nav.countries') }, { href: routes.compare(), label: t('nav.compare') }, { href: routes.rankings(), label: t('nav.rankings') }, { href: routes.indicators(), label: t('nav.indicators') }, { href: routes.regions(), label: t('nav.regions') }, { href: routes.changes(), label: t('site.footer.changes') }, { href: routes.trajectories(), label: t('nav.trajectories') }, { href: routes.scatter(), label: t('nav.scatter') }, { href: routes.finder(), label: t('nav.finder') }, { href: routes.extremes(), label: t('nav.extremes') }, { href: routes.stories(), label: t('nav.stories') }, ]; const reference = [ { href: routes.sources(), label: t('site.footer.sources') }, { href: routes.methodology(), label: t('site.footer.methodology') }, { href: routes.api(), label: t('site.footer.api') }, { href: routes.download(), label: t('site.footer.data') }, { href: routes.updates(), label: t('nav.updates') }, { href: routes.peers(), label: t('nav.peers') }, ]; return ( ); } function FooterColumn({ title, items }: { title: string; items: Array<{ href: string; label: string }> }) { return (
{title}
); } /** "Made by Simon-Pierre Boucher · contact@spboucher.ai" + "Hosted on MacLustr". */ export function FooterCredits({ className }: { className?: string }) { return (

{t('site.footer.madeBy')} {t('site.footer.author')} ·{' '} {t('site.footer.contact')} · {t('site.footer.hostedOn')}{' '} {t('site.footer.host')}

); }