SPB Git

spb/llmindex Public

The discriminative, contamination-resistant, fully transparent LLM ranking — updated live.

TypeScript 77.9% TeX 15.2% Python 3.7% SQL 1.4% JavaScript 1.1% Shell 0.5%
3.5 KB · 86 lines tsx
Raw Blame History
1/**2 * llmindex.io — root layout (responsive header + maintainer-credited footer)3 * Author:  Simon-Pierre Boucher4 * Contact: contact@spboucher.ai5 * License: Proprietary — © Simon-Pierre Boucher, all rights reserved6 */7import type { Metadata, Viewport } from 'next';8import Link from 'next/link';9import { Logo } from '@/components/Logo';10import './globals.css';1112export const metadata: Metadata = {13  metadataBase: new URL(process.env.PUBLIC_BASE_URL ?? 'https://www.llmindex.io'),14  title: {15    default: 'LLM Index — discriminative, contamination-resistant LLM rankings',16    template: '%s · LLM Index',17  },18  description:19    'The most discriminative, contamination-resistant, fully transparent LLM ranking. IRT-based scoring, dynamic item generation, pairwise duels, calibration and an efficiency frontier — updated live.',20};2122export const viewport: Viewport = {23  themeColor: '#fafafa',24  width: 'device-width',25  initialScale: 1,26};2728export default function RootLayout({ children }: { children: React.ReactNode }) {29  return (30    <html lang="en">31      <body className="min-h-screen">32        <header className="sticky top-0 z-40 border-b border-zinc-200 bg-white/85 shadow-sm shadow-zinc-200/50 backdrop-blur">33          <nav className="mx-auto flex max-w-6xl items-center justify-between gap-3 px-4 py-3">34            <Link href="/" aria-label="LLM Index home">35              <Logo />36            </Link>37            <div className="flex items-center gap-4 text-sm sm:gap-6">38              <Link href="/" className="text-zinc-600 transition-colors hover:text-zinc-900">39                Leaderboard40              </Link>41              <Link href="/frontier" className="text-zinc-600 transition-colors hover:text-zinc-900">42                Frontier43              </Link>44              <Link href="/methodology" className="text-zinc-600 transition-colors hover:text-zinc-900">45                Methodology46              </Link>47              <a48                href="/api/v1/leaderboard"49                className="hidden rounded-full border border-zinc-300 px-3 py-1 text-zinc-700 transition-colors hover:border-emerald-400 hover:text-emerald-600 sm:inline-block"50              >51                API52              </a>53            </div>54          </nav>55        </header>56        <main className="mx-auto max-w-6xl px-4 py-6 sm:py-10">{children}</main>57        <footer className="border-t border-zinc-200 px-4 py-6 text-center text-xs leading-relaxed text-zinc-500">58          <span>59            © {new Date().getFullYear()} LLM Index — maintained by Simon-Pierre Boucher ·{' '}60            <a className="underline hover:text-zinc-700" href="mailto:contact@spboucher.ai">61              contact@spboucher.ai62            </a>63          </span>64          <br className="sm:hidden" />65          <span className="hidden sm:inline"> · </span>66          <span>All scores carry 95% confidence intervals</span>67          <div className="mt-2 flex flex-wrap items-center justify-center gap-x-4 gap-y-1">68            <Link href="/methodology" className="underline hover:text-zinc-700">69              Methodology70            </Link>71            <Link href="/privacy" className="underline hover:text-zinc-700">72              Privacy Policy73            </Link>74            <Link href="/terms" className="underline hover:text-zinc-700">75              Terms of Service76            </Link>77            <a href="mailto:contact@spboucher.ai" className="underline hover:text-zinc-700">78              Contact79            </a>80          </div>81        </footer>82      </body>83    </html>84  );85}86