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}
{items.map((it) => (
-
{it.label}
))}
);
}
/** "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')}
);
}