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%
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