Openstatus
www.openstatus.dev
1import type { Metadata } from "next";
2import { Geist, Geist_Mono, Inter } from "next/font/google";
3import "./globals.css";
4import { TailwindIndicator } from "@/components/tailwind-indicator";
5import { ThemeProvider } from "@/components/theme-provider";
6import { Toaster } from "@/components/ui/sonner";
7import { auth } from "@/lib/auth";
8import { TRPCReactProvider } from "@/lib/trpc/client";
9import { cn } from "@/lib/utils";
10import { SessionProvider } from "next-auth/react";
11import LocalFont from "next/font/local";
12import { NuqsAdapter } from "nuqs/adapters/next/app";
13import { ogMetadata, twitterMetadata } from "./metadata";
14import { defaultMetadata } from "./metadata";
15
16const cal = LocalFont({
17 src: "../../public/fonts/CalSans-SemiBold.ttf",
18 variable: "--font-cal-sans",
19});
20
21const commitMono = LocalFont({
22 src: [
23 {
24 path: "../../public/fonts/CommitMono-400-Regular.otf",
25 weight: "400",
26 style: "normal",
27 },
28 {
29 path: "../../public/fonts/CommitMono-400-Italic.otf",
30 weight: "400",
31 style: "italic",
32 },
33 {
34 path: "../../public/fonts/CommitMono-700-Regular.otf",
35 weight: "700",
36 style: "normal",
37 },
38 {
39 path: "../../public/fonts/CommitMono-700-Italic.otf",
40 weight: "700",
41 style: "italic",
42 },
43 ],
44 variable: "--font-commit-mono",
45});
46
47const inter = Inter({
48 subsets: ["latin"],
49 variable: "--font-inter",
50});
51
52const geistSans = Geist({
53 variable: "--font-geist-sans",
54 subsets: ["latin"],
55});
56
57const geistMono = Geist_Mono({
58 variable: "--font-geist-mono",
59 subsets: ["latin"],
60});
61
62export const metadata: Metadata = {
63 ...defaultMetadata,
64 twitter: {
65 ...twitterMetadata,
66 },
67 openGraph: {
68 ...ogMetadata,
69 },
70};
71
72// export const dynamic = "error";
73
74export default async function RootLayout({
75 children,
76}: Readonly<{
77 children: React.ReactNode;
78}>) {
79 const session = await auth();
80
81 return (
82 <html lang="en" suppressHydrationWarning>
83 <body
84 className={cn(
85 geistSans.variable,
86 geistMono.variable,
87 cal.variable,
88 commitMono.variable,
89 inter.variable,
90 "font-sans antialiased ",
91 )}
92 >
93 <SessionProvider session={session}>
94 <TRPCReactProvider>
95 <NuqsAdapter>
96 <ThemeProvider
97 attribute="class"
98 defaultTheme="system"
99 enableSystem
100 disableTransitionOnChange
101 >
102 {children}
103 <TailwindIndicator />
104 <Toaster richColors expand />
105 </ThemeProvider>
106 </NuqsAdapter>
107 </TRPCReactProvider>
108 </SessionProvider>
109 </body>
110 </html>
111 );
112}