Introduces a localStorage-backed messy-desktop challenge with sub-steps, drag-and-drop and Places/Back navigation, IBM Plex Mono, and a /api/health endpoint. Adds Vitest coverage for the API and level logic plus Playwright smoke tests. Made-with: Cursor
47 lines
1.2 KiB
TypeScript
47 lines
1.2 KiB
TypeScript
import "~/styles/globals.css";
|
|
|
|
import { type Metadata } from "next";
|
|
import { Bakbak_One, IBM_Plex_Mono, Teko } from "next/font/google";
|
|
|
|
import { TRPCReactProvider } from "~/trpc/react";
|
|
|
|
export const metadata: Metadata = {
|
|
title: "Folder Game Challenge",
|
|
description:
|
|
"An interactive game challenge focused on file management and navigating software.",
|
|
icons: [{ rel: "icon", url: "/favicon.ico" }],
|
|
};
|
|
|
|
const teko = Teko({
|
|
weight: "700",
|
|
subsets: ["latin"],
|
|
variable: "--font-teko",
|
|
});
|
|
|
|
const bakbakOne = Bakbak_One({
|
|
weight: "400",
|
|
subsets: ["latin"],
|
|
variable: "--font-bakbak-one",
|
|
});
|
|
|
|
const ibmPlexMono = IBM_Plex_Mono({
|
|
weight: ["400", "500"],
|
|
subsets: ["latin"],
|
|
variable: "--font-ibm-plex-mono",
|
|
});
|
|
|
|
export default function RootLayout({
|
|
children,
|
|
}: Readonly<{ children: React.ReactNode }>) {
|
|
return (
|
|
<html
|
|
lang="en"
|
|
className={`${teko.variable} ${bakbakOne.variable} ${ibmPlexMono.variable}`}
|
|
>
|
|
<body className="min-h-screen bg-gradient-to-b from-purple-900 via-purple-950 to-[#0f0518] text-zinc-100 antialiased">
|
|
<TRPCReactProvider>{children}</TRPCReactProvider>
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|