Scrapboard.org client
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}