49 lines
1.5 KiB
TypeScript
49 lines
1.5 KiB
TypeScript
import type { Metadata } from 'next';
|
|
import localFont from 'next/font/local';
|
|
import { GeistSans } from 'geist/font/sans';
|
|
import { GeistMono } from 'geist/font/mono';
|
|
import './globals.css';
|
|
import '@openmaic/renderer/fonts.css';
|
|
import 'animate.css';
|
|
import 'katex/dist/katex.min.css';
|
|
import { ThemeProvider } from '@/lib/hooks/use-theme';
|
|
import { I18nProvider } from '@/lib/hooks/use-i18n';
|
|
import { Toaster } from '@/components/ui/sonner';
|
|
import { ServerProvidersInit } from '@/components/server-providers-init';
|
|
import { AccessCodeGuard } from '@/components/access-code-guard';
|
|
|
|
const inter = localFont({
|
|
src: '../node_modules/@fontsource-variable/inter/files/inter-latin-wght-normal.woff2',
|
|
variable: '--font-sans',
|
|
weight: '100 900',
|
|
});
|
|
|
|
export const metadata: Metadata = {
|
|
title: 'OpenMAIC',
|
|
description:
|
|
'The open-source AI interactive classroom. Upload a PDF to instantly generate an immersive, multi-agent learning experience.',
|
|
};
|
|
|
|
export default function RootLayout({
|
|
children,
|
|
}: Readonly<{
|
|
children: React.ReactNode;
|
|
}>) {
|
|
return (
|
|
<html lang="en" className={inter.variable} suppressHydrationWarning>
|
|
<body
|
|
className={`${GeistSans.variable} ${GeistMono.variable} antialiased`}
|
|
suppressHydrationWarning
|
|
>
|
|
<ThemeProvider>
|
|
<I18nProvider>
|
|
<ServerProvidersInit />
|
|
<AccessCodeGuard>{children}</AccessCodeGuard>
|
|
<Toaster position="top-center" />
|
|
</I18nProvider>
|
|
</ThemeProvider>
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|