Files
Webserver/app/layout.tsx
Akshay Kolli 382edaab75
All checks were successful
Deploy Website / build-and-deploy (push) Successful in 2m15s
updated look
2026-04-11 23:27:29 -04:00

86 lines
2.7 KiB
TypeScript

import type { Metadata } from "next";
import {
IBM_Plex_Mono,
Instrument_Sans,
} from "next/font/google";
import Script from "next/script";
import "./globals.css";
import { Analytics } from "@/components/Analytics";
import { AmbientCanvas } from "@/components/layout/AmbientCanvas";
import { Footer } from "@/components/layout/Footer";
import { Navbar } from "@/components/layout/Navbar";
const instrumentSans = Instrument_Sans({
variable: "--font-instrument-sans",
subsets: ["latin"],
display: "swap",
weight: ["400", "500", "600", "700"],
});
const ibmPlexMono = IBM_Plex_Mono({
variable: "--font-ibm-plex-mono",
subsets: ["latin"],
display: "swap",
weight: ["400", "500"],
});
export const metadata: Metadata = {
metadataBase: new URL("https://akkolli.net"),
title: {
default: "Akshay Kolli",
template: "%s | Akshay Kolli",
},
description: "Personal website of Akshay Kolli — CS PhD Student at UMass Lowell researching World Models, Reinforcement Learning, and Multi-Agent Systems.",
openGraph: {
title: "Akshay Kolli",
description: "CS PhD Student at UMass Lowell researching World Models, Reinforcement Learning, and Multi-Agent Systems.",
siteName: "Akshay Kolli",
type: "website",
},
twitter: {
card: "summary",
creator: "@thekolliakshay",
},
};
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html lang="en" suppressHydrationWarning>
<body
className={`${instrumentSans.variable} ${ibmPlexMono.variable} min-h-screen bg-paper font-sans text-ink antialiased`}
>
<Script id="theme-init" strategy="beforeInteractive">
{`
try {
const storedTheme = localStorage.getItem("theme-preference");
const theme = storedTheme === "light" || storedTheme === "dark"
? storedTheme
: (window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light");
document.documentElement.dataset.theme = theme;
} catch {}
`}
</Script>
<a
href="#main-content"
className="sr-only focus:not-sr-only focus:absolute focus:left-4 focus:top-4 focus:z-[100] focus:rounded-full focus:bg-paper-strong focus:px-4 focus:py-2 focus:text-sm focus:font-medium focus:text-ink focus:shadow-[0_12px_30px_rgba(23,28,24,0.08)]"
>
Skip to content
</a>
<AmbientCanvas />
<div className="site-shell flex min-h-screen flex-col">
<Navbar />
<main id="main-content" className="flex-grow">
{children}
</main>
<Footer />
<Analytics />
</div>
</body>
</html>
);
}