-
Notifications
You must be signed in to change notification settings - Fork 38
Expand file tree
/
Copy pathlayout.tsx
More file actions
90 lines (86 loc) · 2.22 KB
/
layout.tsx
File metadata and controls
90 lines (86 loc) · 2.22 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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import { Footer } from "@/components/sections/footer";
import { cn } from "@/lib/utils";
import type { Metadata } from "next";
import { ThemeProvider } from "next-themes";
import { JetBrains_Mono } from "next/font/google";
import localFont from "next/font/local";
import type { PropsWithChildren } from "react";
import { Toaster } from "sonner";
import { DynamicMaximumScaleMeta } from "./layout.client";
import "./styles.css";
import { config } from "@/config";
const inter = localFont({
src: "./inter-variable.woff2",
variable: "--font-inter",
});
const jetbrainsMono = JetBrains_Mono({
subsets: ["latin"],
variable: "--font-jetbrains-mono",
});
export const metadata: Metadata = {
title: {
default: config.name,
template: `%s — ${config.name}`,
},
metadataBase: new URL(config.url),
alternates: {
canonical: "/",
},
description: config.description,
keywords: [
"emoji",
"emoji picker",
"react",
"unstyled",
"component",
"emojibase",
"liveblocks",
],
authors: [
{
name: "Liveblocks",
url: "https://liveblocks.io",
},
],
creator: "Liveblocks",
openGraph: {
type: "website",
locale: "en_US",
url: config.url,
title: config.name,
description: config.description,
siteName: config.name,
},
twitter: {
card: "summary_large_image",
title: config.name,
description: config.description,
creator: "@liveblocks",
},
};
export default function RootLayout({ children }: PropsWithChildren) {
return (
<html lang="en" suppressHydrationWarning>
<body className={cn(inter.variable, jetbrainsMono.variable)}>
<ThemeProvider
attribute="class"
defaultTheme="system"
disableTransitionOnChange
enableSystem
>
<DynamicMaximumScaleMeta />
<Toaster mobileOffset={26} />
<div
className={cn(
"container relative flex min-h-dvh flex-col",
"before:pointer-events-none before:absolute before:inset-x-4 before:h-full before:border-x before:border-dotted md:before:inset-x-0",
)}
>
{children}
</div>
<Footer />
</ThemeProvider>
</body>
</html>
);
}