SPB Git

Repository Public

Footer.tsx 1.9 KB 51 lines tsx

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
Files main
Menu

Theme