Spaces:
Sleeping
Sleeping
File size: 3,387 Bytes
13ae717 0b6b0ac 13ae717 829f9f6 bd69b27 13ae717 0b6b0ac 13ae717 0b6b0ac 13ae717 0b6b0ac bd69b27 13ae717 bd69b27 13ae717 bd69b27 13ae717 bd69b27 13ae717 bd69b27 13ae717 bd69b27 13ae717 bd69b27 13ae717 bd69b27 13ae717 bd69b27 13ae717 bd69b27 13ae717 0b6b0ac 13ae717 ec51066 13ae717 0b6b0ac 13ae717 0b6b0ac 829f9f6 0b6b0ac ec1f23a 0b6b0ac 93d579e 13ae717 0b6b0ac | 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 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | /* eslint-disable @typescript-eslint/no-explicit-any */
import type { Metadata, Viewport } from "next";
import { Inter, PT_Sans } from "next/font/google";
import { cookies } from "next/headers";
import TanstackProvider from "@/components/providers/tanstack-query-provider";
import "@/assets/globals.css";
import { Toaster } from "@/components/ui/sonner";
import MY_TOKEN_KEY from "@/lib/get-cookie-name";
import { apiServer } from "@/lib/api";
import AppContext from "@/components/contexts/app-context";
import Script from "next/script";
import { BRAND_NAME, BRAND_ICON_SRC } from "@/lib/branding";
const inter = Inter({
variable: "--font-inter-sans",
subsets: ["latin"],
});
const ptSans = PT_Sans({
variable: "--font-ptSans-mono",
subsets: ["latin"],
weight: ["400", "700"],
});
export const metadata: Metadata = {
title: `${BRAND_NAME} | Build with AI ✨`,
description:
`${BRAND_NAME} is a web development tool that helps you build websites with AI, no code required. Let's deploy your website and enjoy the magic of AI.`,
openGraph: {
title: `${BRAND_NAME} | Build with AI ✨`,
description:
`${BRAND_NAME} is a web development tool that helps you build websites with AI, no code required. Let's deploy your website and enjoy the magic of AI.`,
url: "https://deepsite.hf.co",
siteName: BRAND_NAME,
images: [
{
url: "https://deepsite.hf.co/banner.png",
width: 1200,
height: 630,
alt: `${BRAND_NAME} Open Graph Image`,
},
],
},
twitter: {
card: "summary_large_image",
title: `${BRAND_NAME} | Build with AI ✨`,
description:
`${BRAND_NAME} is a web development tool that helps you build websites with AI, no code required. Let's deploy your website and enjoy the magic of AI.`,
images: ["https://deepsite.hf.co/banner.png"],
},
appleWebApp: {
capable: true,
title: BRAND_NAME,
statusBarStyle: "black-translucent",
},
icons: {
icon: BRAND_ICON_SRC,
shortcut: BRAND_ICON_SRC,
apple: BRAND_ICON_SRC,
},
};
export const viewport: Viewport = {
initialScale: 1,
maximumScale: 1,
themeColor: "#000000",
};
async function getMe() {
const cookieStore = await cookies();
const token = cookieStore.get(MY_TOKEN_KEY())?.value;
if (!token) return { user: null, errCode: null };
try {
const res = await apiServer.get("/me", {
headers: {
Authorization: `Bearer ${token}`,
},
});
return { user: res.data.user, errCode: null };
} catch (err: any) {
return { user: null, errCode: err.status };
}
}
// if domain isn't deepsite.hf.co or enzostvs-deepsite.hf.space redirect to deepsite.hf.co
export default async function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
const data = await getMe();
return (
<html lang="en">
<Script
defer
data-domain="deepsite.hf.co"
src="https://plausible.io/js/script.js"
></Script>
<body
className={`${inter.variable} ${ptSans.variable} antialiased bg-black dark h-[100dvh] overflow-hidden`}
>
{/* Iframe embed warning removed; EMBED_MODE controls behavior */}
<Toaster richColors position="bottom-center" />
<TanstackProvider>
<AppContext me={data}>{children}</AppContext>
</TanstackProvider>
</body>
</html>
);
}
|