an app to share curated trails
sidetrail.app
atproto
nextjs
react
rsc
1import type { Metadata } from "next";
2import "./global.css";
3import { LoginModalProvider } from "@/app/LoginModalContext";
4import { LoginModal } from "@/app/LoginModal";
5import { loadCurrentDid } from "@/data/queries";
6import { Suspense } from "react";
7import { AuthProvider } from "@/app/AuthContext";
8export const metadata: Metadata = {
9 metadataBase: new URL("https://sidetrail.app"),
10 title: "sidetrail",
11 description: "trails worth walking",
12};
13
14export default async function RootLayout({ children }: { children: React.ReactNode }) {
15 return (
16 <html lang="en">
17 <body>
18 <Suspense fallback={null}>
19 <Auth>
20 <LoginModalProvider>
21 {children}
22 <LoginModal />
23 </LoginModalProvider>
24 </Auth>
25 </Suspense>
26 </body>
27 </html>
28 );
29}
30
31async function Auth({ children }: { children: React.ReactNode }) {
32 const did = await loadCurrentDid();
33 return <AuthProvider did={did}>{children}</AuthProvider>;
34}