layout.tsx 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import type { Metadata } from "next";
  2. import localFont from "next/font/local";
  3. import "./globals.css";
  4. import { Header } from "@/components/header";
  5. import { Footer } from "@/components/footer";
  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: "json-render | AI-powered UI from JSON with guardrails",
  16. description:
  17. "Define a catalog. AI generates JSON. Your components render natively. Enterprise-grade guardrails for controlled AI UI generation.",
  18. };
  19. export default function RootLayout({
  20. children,
  21. }: Readonly<{
  22. children: React.ReactNode;
  23. }>) {
  24. return (
  25. <html lang="en">
  26. <body className={`${geistSans.variable} ${geistMono.variable}`}>
  27. <div className="min-h-screen flex flex-col">
  28. <Header />
  29. <main className="flex-1">{children}</main>
  30. <Footer />
  31. </div>
  32. </body>
  33. </html>
  34. );
  35. }