layout.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import type { Metadata } from "next";
  2. import { Inter } from "next/font/google";
  3. import "./globals.css";
  4. import { ThemeProvider } from "@/components/layout";
  5. import { AuthProvider } from "@/lib/auth-context";
  6. import { ModelSelectionProvider } from "@/contexts/model-selection-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. <ModelSelectionProvider>
  36. {children}
  37. </ModelSelectionProvider>
  38. </AuthProvider>
  39. </ThemeProvider>
  40. </body>
  41. </html>
  42. );
  43. }