layout.tsx 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import Script from "next/script";
  2. import type { Metadata } from "next";
  3. import { Inter } from "next/font/google";
  4. import "./globals.css";
  5. import { Header } from "@/components/Header";
  6. import { Footer } from "@/components/Footer";
  7. import { SkipToContent } from "@/components/SkipToContent";
  8. import { organizationJsonLd, websiteJsonLd } from "@/lib/json-ld";
  9. const inter = Inter({
  10. subsets: ["latin"],
  11. variable: "--font-inter",
  12. weight: ["400", "500", "600", "700"],
  13. display: "swap",
  14. });
  15. export const metadata: Metadata = {
  16. title: {
  17. default: "Jenado Unlimited — Honey, Training, Sourdough & More",
  18. template: "%s | Jenado Unlimited",
  19. },
  20. description: "Jenado Unlimited — local honey, personal training, artisan sourdough, farm-to-table dining, recreation apps, laser engraving, and 3D printing.",
  21. generator: "Next.js",
  22. keywords: ["honey", "personal training", "sourdough", "farm-to-table", "recreation apps", "laser engraving", "3d printing"],
  23. openGraph: {
  24. type: "website",
  25. locale: "en_US",
  26. siteName: "Jenado Unlimited",
  27. },
  28. robots: {
  29. index: true,
  30. follow: true,
  31. },
  32. };
  33. export default function RootLayout({
  34. children,
  35. }: {
  36. children: React.ReactNode;
  37. }) {
  38. return (
  39. <html lang="en" data-scroll-behavior="smooth" suppressHydrationWarning className={inter.variable}>
  40. <body className="antialiased bg-[var(--color-bg)] text-[var(--color-text)] font-sans">
  41. <Script id="org-jsonld" type="application/ld+json" strategy="afterInteractive">
  42. {`{${JSON.stringify(organizationJsonLd())}}`}
  43. </Script>
  44. <Script id="website-jsonld" type="application/ld+json" strategy="afterInteractive">
  45. {`{${JSON.stringify(websiteJsonLd())}}`}
  46. </Script>
  47. <SkipToContent />
  48. <Header />
  49. <main id="main-content" className="min-h-screen">{children}</main>
  50. <Footer />
  51. </body>
  52. </html>
  53. );
  54. }