HTML 77.2%
TypeScript 10.5%
Python 9.6%
JavaScript 2.5%
1import Link from 'next/link';2import { LogoMark } from '@/components/brand/logo';3import { AUTHOR_NAME, CONTACT_EMAIL, footerGroups, HOST_NAME, HOST_URL, SITE_URL, TAGLINE } from '@/lib/site';45export function SiteFooter() {6 return (7 <footer className="mt-16 border-t border-rule">8 <div className="container-x mx-auto max-w-[1600px] py-10">9 <div className="grid gap-8 md:grid-cols-[1.4fr_1fr_1fr_1fr_1fr]">10 <div>11 <p className="flex items-center gap-2 text-ink">12 <LogoMark size={22} /> <span className="tracking-tight"><span className="font-bold">AI</span> <span className="font-medium text-ink-2">Atlas</span></span>13 </p>14 <p className="mt-3 max-w-sm text-sm leading-relaxed text-ink-2">15 {TAGLINE}. Every number links back to its source, tier and observation time; history is never discarded; conflicts are shown, never averaged.16 </p>17 <p className="mono mt-3 text-xs text-ink-3">{SITE_URL.replace(/^https?:\/\//, '')}/api/v1</p>18 </div>19 {footerGroups.map((g) => (20 <div key={g.label}>21 <p className="eyebrow mb-2">{g.label}</p>22 <ul className="space-y-1 text-sm">23 {g.items.map((n) => (24 <li key={n.href + n.label}>25 <Link href={n.href} className="inline-block py-0.5 text-ink-2 hover:text-ink">26 {n.label}27 </Link>28 </li>29 ))}30 </ul>31 </div>32 ))}33 </div>34 <div className="mt-10 flex flex-col gap-2 border-t border-rule pt-5 text-xs text-ink-3 md:flex-row md:items-center md:justify-between">35 <p>36 Built by <span className="text-ink-2">{AUTHOR_NAME}</span> ·{' '}37 <a href={`mailto:${CONTACT_EMAIL}`} className="text-ink-2 hover:text-ink">38 {CONTACT_EMAIL}39 </a>{' '}40 · Hosted on{' '}41 <a href={HOST_URL} className="text-ink-2 hover:text-ink" rel="noopener noreferrer">42 {HOST_NAME}43 </a>{' '}44 (<a href={HOST_URL} className="hover:text-ink" rel="noopener noreferrer">{HOST_URL.replace(/^https?:\/\//, '')}</a>)45 </p>46 <p>© 2026 {AUTHOR_NAME} · AI Atlas. Data is aggregated from public sources and attributed on every page.</p>47 </div>48 </div>49 </footer>50 );51}52