2024-10-21 13:57:45 -06:00

43 lines
1.3 KiB
TypeScript

import { ThemeProvider } from "@/components/layout/themeProvider"
import { Toaster } from "@/components/ui/sonner"
import { PreviewProvider } from "@/context/PreviewContext"
import { SocketProvider } from "@/context/SocketContext"
import { ClerkProvider } from "@clerk/nextjs"
import { Analytics } from "@vercel/analytics/react"
import { GeistMono } from "geist/font/mono"
import { GeistSans } from "geist/font/sans"
import type { Metadata } from "next"
import "./globals.css"
export const metadata: Metadata = {
title: "Sandbox",
description: "A collaborative, AI-powered cloud code editing environment",
}
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode
}>) {
return (
<ClerkProvider>
<html lang="en" className={`${GeistSans.variable} ${GeistMono.variable}`}>
<body>
<ThemeProvider
attribute="class"
defaultTheme="dark"
forcedTheme="dark"
disableTransitionOnChange
>
<SocketProvider>
<PreviewProvider>{children}</PreviewProvider>
</SocketProvider>
<Analytics />
<Toaster position="bottom-left" richColors />
</ThemeProvider>
</body>
</html>
</ClerkProvider>
)
}