forked from captableinc/captable
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlayout.tsx
More file actions
53 lines (50 loc) · 1.71 KB
/
layout.tsx
File metadata and controls
53 lines (50 loc) · 1.71 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
import logo from "@/assets/logo.svg";
import { PublicEnvScript } from "@/components/public-env-script";
import ScreenSize from "@/components/screen-size";
import { constants } from "@/lib/constants";
import { envUtils } from "@/env";
import { cn } from "@/lib/utils";
import { NextAuthProvider } from "@/providers/next-auth";
import { ProgressBarProvider } from "@/providers/progress-bar";
import { getServerComponentAuthSession } from "@/server/auth";
import { robotoMono, satoshi } from "@/styles/fonts";
import "@/styles/globals.css";
import { TRPCReactProvider } from "@/trpc/react";
import type { Metadata } from "next";
import { cookies } from "next/headers";
import { Toaster } from "sonner";
export const metadata: Metadata = {
title: {
template: "%s | Captable, Inc.",
default: "Captable, Inc.",
},
description:
"Captable, Inc. is an open source cap table management tool that does not sell your data.",
icons: [{ rel: "icon", url: logo.src }],
metadataBase: new URL(constants.url),
};
export default async function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
const session = await getServerComponentAuthSession();
return (
<html lang="en" className={cn(satoshi.variable, robotoMono.variable)}>
<head>
<PublicEnvScript />
</head>
<body className="min-h-screen">
<ProgressBarProvider>
<NextAuthProvider session={session}>
<TRPCReactProvider cookies={cookies().toString()}>
<main>{children}</main>
<Toaster richColors />
{envUtils.isDevelopment() && <ScreenSize />}
</TRPCReactProvider>
</NextAuthProvider>
</ProgressBarProvider>
</body>
</html>
);
}