layout.tsx 920 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. import type { Metadata } from "next";
  2. import localFont from "next/font/local";
  3. import { Toaster } from "sonner";
  4. import { ThemeProvider } from "@/components/theme-provider";
  5. import "./globals.css";
  6. const geistSans = localFont({
  7. src: "./fonts/GeistVF.woff",
  8. variable: "--font-geist-sans",
  9. });
  10. const geistMono = localFont({
  11. src: "./fonts/GeistMonoVF.woff",
  12. variable: "--font-geist-mono",
  13. });
  14. export const metadata: Metadata = {
  15. title: "Dashboard | json-render",
  16. description: "AI-generated dashboard widgets with guardrails",
  17. };
  18. export default function RootLayout({
  19. children,
  20. }: {
  21. children: React.ReactNode;
  22. }) {
  23. return (
  24. <html lang="en" suppressHydrationWarning>
  25. <body
  26. className={`${geistSans.variable} ${geistMono.variable} font-sans antialiased`}
  27. >
  28. <ThemeProvider>
  29. {children}
  30. <Toaster />
  31. </ThemeProvider>
  32. </body>
  33. </html>
  34. );
  35. }