45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
import type { Metadata } from "next";
|
|
import { Bebas_Neue, JetBrains_Mono, Lora } from "next/font/google";
|
|
import "./globals.css";
|
|
import GridCanvas from "@/components/GridCanvas";
|
|
|
|
const bebas = Bebas_Neue({
|
|
weight: "400",
|
|
variable: "--font-bebas",
|
|
subsets: ["latin"],
|
|
});
|
|
|
|
const jetbrains = JetBrains_Mono({
|
|
variable: "--font-jetbrains",
|
|
subsets: ["latin"],
|
|
weight: ["400", "500"],
|
|
});
|
|
|
|
const lora = Lora({
|
|
variable: "--font-lora",
|
|
subsets: ["latin"],
|
|
weight: ["400", "500"],
|
|
});
|
|
|
|
export const metadata: Metadata = {
|
|
title: "Achraf Achkari — Technical Lead & Software Engineer",
|
|
description:
|
|
"Personal portfolio and project hub. Technical Lead at Kereval, building software with Java, TypeScript, and modern frameworks.",
|
|
};
|
|
|
|
export default function RootLayout({
|
|
children,
|
|
}: Readonly<{ children: React.ReactNode }>) {
|
|
return (
|
|
<html
|
|
lang="en"
|
|
className={`${bebas.variable} ${jetbrains.variable} ${lora.variable} h-full`}
|
|
>
|
|
<body className="min-h-full flex flex-col antialiased" suppressHydrationWarning>
|
|
<GridCanvas />
|
|
{children}
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|