layout.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import type { Metadata } from "next";
  2. import { Inter } from "next/font/google";
  3. import "./globals.css";
  4. import { ThemeProvider } from "@/components/theme-provider";
  5. import { VersionChecker } from "@/components/version-checker";
  6. import { AuthProvider } from "@/lib/auth-context";
  7. const inter = Inter({
  8. subsets: ["latin"],
  9. variable: "--font-sans",
  10. });
  11. export const metadata: Metadata = {
  12. title: "Stable Diffusion REST - Web UI",
  13. description: "Modern web interface for Stable Diffusion image generation",
  14. };
  15. export default function RootLayout({
  16. children,
  17. }: Readonly<{
  18. children: React.ReactNode;
  19. }>) {
  20. return (
  21. <html lang="en" suppressHydrationWarning>
  22. <head>
  23. {/* Load server configuration - this is dynamically generated by the server */}
  24. {/* Load synchronously to ensure config is available before React hydration */}
  25. <script src="/ui/config.js"></script>
  26. </head>
  27. <body className={`${inter.variable} font-sans antialiased`}>
  28. <ThemeProvider
  29. attribute="class"
  30. defaultTheme="system"
  31. enableSystem
  32. disableTransitionOnChange
  33. >
  34. <AuthProvider>
  35. <VersionChecker />
  36. {children}
  37. </AuthProvider>
  38. </ThemeProvider>
  39. </body>
  40. </html>
  41. );
  42. }