Repository Public
1import Link from "next/link";2import { Wordmark } from "@/components/ui/Logo";3import { site } from "@/lib/data";4import { formatDate, getDict, type Locale } from "@/lib/i18n";56export function Footer({ locale }: { locale: Locale }) {7 const t = getDict(locale);8 const links = [9 ["/live", t.nav.live],10 ["/nodes", t.nav.nodes],11 ["/architecture", t.nav.architecture],12 ["/research", t.nav.research],13 ["/benchmarks", t.nav.benchmarks],14 ["/gallery", t.nav.gallery],15 ["/access", t.nav.access],16 ] as const;17 return (18 <footer className="mt-24 border-t border-line bg-surface md:mt-40">19 <div className="shell grid gap-12 py-14 md:grid-cols-12 md:py-20">20 <div className="md:col-span-5">21 <Wordmark />22 <p className="mt-6 max-w-[46ch] text-[0.9375rem] leading-relaxed text-body">{t.footer.purpose}</p>23 </div>24 <nav aria-label={t.footer.sections} className="md:col-span-3">25 <h2 className="label">{t.footer.sections}</h2>26 <ul className="mt-4 space-y-2.5 text-[0.9375rem]">27 {links.map(([href, label]) => (28 <li key={href}>29 <Link href={`/${locale}${href}`} className="text-body hover:text-accent">{label}</Link>30 </li>31 ))}32 </ul>33 </nav>34 <div className="md:col-span-4">35 <h2 className="label">{t.footer.contact}</h2>36 <p className="mt-4">37 <a className="link text-[1.0625rem]" href={`mailto:${site.contactEmail}`}>{site.contactEmail}</a>38 </p>39 <p className="label mt-8">{t.footer.updated}</p>40 <p className="num mt-2 text-[0.9375rem] text-body">41 <time dateTime={site.updatedAt}>{formatDate(site.updatedAt, locale)}</time>42 </p>43 </div>44 </div>45 <div className="border-t border-line">46 <p className="shell py-6 text-[0.8125rem] leading-relaxed text-mute">{t.footer.disclaimer}</p>47 </div>48 </footer>49 );50}51