Scrapboard.org client
at labels 53 lines 1.5 kB view raw
1import type { Metadata } from "next"; 2import { Geist, Geist_Mono, Inter } from "next/font/google"; 3import "./globals.css"; 4import { ThemeProvider } from "next-themes"; 5import { Navbar } from "@/nav/navbar"; 6import { AuthProvider } from "@/lib/hooks/useAuth"; 7import { ProfileProvider } from "@/lib/useProfile"; 8import { Toaster } from "sonner"; 9import { StoresProvider } from "@/lib/stores/storesProvider"; 10 11const geistSans = Geist({ 12 variable: "--font-geist-sans", 13 subsets: ["latin"], 14}); 15 16const geistMono = Geist_Mono({ 17 variable: "--font-geist-mono", 18 subsets: ["latin"], 19}); 20 21const inter = Inter({ subsets: ["latin"] }); 22 23export const metadata: Metadata = { 24 title: "pin.to.it", 25 description: "Simple scrapboard.org client", 26}; 27 28export default function RootLayout({ 29 children, 30}: Readonly<{ 31 children: React.ReactNode; 32}>) { 33 return ( 34 <html lang="en" suppressHydrationWarning> 35 <head /> 36 <body className={`${inter.className} ${geistMono.variable} antialiased`}> 37 <ThemeProvider attribute="class" defaultTheme="system" enableSystem> 38 <AuthProvider> 39 <ProfileProvider> 40 <StoresProvider> 41 <div className="min-h-screen flex flex-col"> 42 <Navbar /> 43 <main className="flex-1 py-6">{children}</main> 44 </div> 45 </StoresProvider> 46 </ProfileProvider> 47 </AuthProvider> 48 </ThemeProvider> 49 <Toaster /> 50 </body> 51 </html> 52 ); 53}