layout.tsx 1.4 KB

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