-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlayout.tsx
More file actions
72 lines (67 loc) · 2.21 KB
/
layout.tsx
File metadata and controls
72 lines (67 loc) · 2.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import type { Metadata } from "next";
import { Inter, Playfair_Display } from "next/font/google";
import "./globals.css";
import ErrorBoundary from "@/components/ErrorBoundary";
import Providers from "@/components/providers";
import RouteLoader from "@/components/RouteLoader";
import { Suspense } from "react";
import { Analytics } from "@vercel/analytics/react";
const inter = Inter({
subsets: ['latin'],
weight: ['300', '400', '500', '600', '700'],
variable: '--font-inter',
display: 'swap',
});
const playfair = Playfair_Display({
subsets: ['latin'],
weight: ['400', '500', '600', '700'],
variable: '--font-playfair',
display: 'swap',
});
export const metadata: Metadata = {
title: "Incia & Arvin's Wedding",
description: "Join us in celebrating the love story of Incia & Arvin - from childhood friends to forever partners. Dhaka, Bangladesh with celebrations continuing in Phu Quoc, Vietnam.",
keywords: ["wedding", "Incia", "Arvin", "Dhaka", "Vietnam", "celebration"],
authors: [{ name: "CodeStorm Hub" }],
creator: "CodeStorm Hub",
openGraph: {
title: "Incia & Arvin's Wedding",
description: "Join us in celebrating the love story of Incia & Arvin",
type: "website",
locale: "en_US",
siteName: "Incia & Arvin's Wedding",
},
twitter: {
card: "summary_large_image",
title: "Incia & Arvin's Wedding",
description: "Join us in celebrating the love story of Incia & Arvin",
},
robots: "index, follow",
};
// Separate viewport export as required by Next.js 13+
export const viewport = {
width: "device-width",
initialScale: 1,
};
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html lang="en" className={`${inter.variable} ${playfair.variable} scroll-smooth`}>
<body className="font-sans antialiased bg-cream-50 text-gray-800">
<Providers>
<ErrorBoundary>
{/* Wrap components that read search params in Suspense to satisfy Next.js CSR bailout requirements */}
<Suspense fallback={null}>
<RouteLoader />
</Suspense>
{children}
</ErrorBoundary>
</Providers>
<Analytics />
</body>
</html>
);
}