2025-06-22 10:02:50 +02:00
|
|
|
import { ThemeProvider } from "next-themes";
|
|
|
|
|
import { Analytics } from "@vercel/analytics/react";
|
2025-06-22 18:39:59 +02:00
|
|
|
import Script from "next/script";
|
2025-06-22 10:02:50 +02:00
|
|
|
import "./globals.css";
|
|
|
|
|
import { Toaster } from "../components/ui/sonner";
|
|
|
|
|
import { TooltipProvider } from "../components/ui/tooltip";
|
2025-06-30 19:58:36 +02:00
|
|
|
import { StorageProvider } from "../components/storage-provider";
|
2025-06-25 20:14:55 +05:30
|
|
|
import { baseMetaData } from "./metadata";
|
2025-07-10 20:53:58 +02:00
|
|
|
import { defaultFont } from "../lib/font-config";
|
2025-07-16 01:00:40 +01:00
|
|
|
import { BotIdClient } from "botid/client";
|
2025-07-18 12:51:44 +02:00
|
|
|
import { env } from "@/env";
|
2025-06-22 10:02:50 +02:00
|
|
|
|
2025-06-25 20:14:55 +05:30
|
|
|
export const metadata = baseMetaData;
|
2025-06-22 10:02:50 +02:00
|
|
|
|
2025-07-16 01:00:40 +01:00
|
|
|
const protectedRoutes = [
|
|
|
|
|
{
|
|
|
|
|
path: "/api/waitlist",
|
|
|
|
|
method: "POST",
|
|
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
|
2025-06-22 10:02:50 +02:00
|
|
|
export default function RootLayout({
|
|
|
|
|
children,
|
|
|
|
|
}: Readonly<{
|
|
|
|
|
children: React.ReactNode;
|
|
|
|
|
}>) {
|
|
|
|
|
return (
|
|
|
|
|
<html lang="en" suppressHydrationWarning>
|
2025-07-16 01:00:40 +01:00
|
|
|
<head>
|
|
|
|
|
<BotIdClient protect={protectedRoutes} />
|
|
|
|
|
</head>
|
2025-07-10 20:53:58 +02:00
|
|
|
<body className={`${defaultFont.className} font-sans antialiased`}>
|
2025-07-12 15:45:12 +02:00
|
|
|
<ThemeProvider attribute="class" forcedTheme="dark">
|
2025-06-22 13:08:37 +02:00
|
|
|
<TooltipProvider>
|
2025-06-30 19:58:36 +02:00
|
|
|
<StorageProvider>{children}</StorageProvider>
|
2025-06-22 13:08:37 +02:00
|
|
|
<Analytics />
|
|
|
|
|
<Toaster />
|
2025-06-22 20:43:36 +02:00
|
|
|
<Script
|
2025-07-02 16:25:08 +03:00
|
|
|
src="https://cdn.databuddy.cc/databuddy.js"
|
2025-06-22 20:43:36 +02:00
|
|
|
strategy="afterInteractive"
|
2025-06-22 18:39:59 +02:00
|
|
|
async
|
|
|
|
|
data-client-id="UP-Wcoy5arxFeK7oyjMMZ"
|
2025-07-18 12:51:44 +02:00
|
|
|
data-disabled={env.NODE_ENV === "development"}
|
2025-07-13 13:20:06 +02:00
|
|
|
data-track-attributes={false}
|
2025-07-13 13:25:43 +02:00
|
|
|
data-track-errors={true}
|
2025-07-13 13:20:06 +02:00
|
|
|
data-track-outgoing-links={false}
|
|
|
|
|
data-track-web-vitals={false}
|
|
|
|
|
data-track-sessions={false}
|
2025-06-22 18:39:59 +02:00
|
|
|
/>
|
2025-06-22 13:08:37 +02:00
|
|
|
</TooltipProvider>
|
2025-06-22 10:02:50 +02:00
|
|
|
</ThemeProvider>
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|
|
|
|
|
);
|
|
|
|
|
}
|