86 lines
3.0 KiB
TypeScript
86 lines
3.0 KiB
TypeScript
"use client";
|
|
|
|
import React, { useMemo } from "react";
|
|
import Script from "next/script";
|
|
import { Provider } from "@/components/ui/provider";
|
|
import {
|
|
UrqlProvider,
|
|
ssrExchange,
|
|
cacheExchange,
|
|
fetchExchange,
|
|
createClient
|
|
} from "@urql/next";
|
|
|
|
export default function RootLayout({
|
|
children
|
|
}: Readonly<{
|
|
children: React.ReactNode;
|
|
}>) {
|
|
const [client, ssr] = useMemo(() => {
|
|
const ssr = ssrExchange({
|
|
isClient: typeof window !== "undefined"
|
|
});
|
|
const client = createClient({
|
|
url: "/api/graphql",
|
|
exchanges: [cacheExchange, ssr, fetchExchange],
|
|
suspense: true,
|
|
fetchOptions: {
|
|
headers: {
|
|
"x-api-key":
|
|
process.env?.API_TOKEN || process.env?.NEXT_PUBLIC_API_TOKEN || ""
|
|
}
|
|
}
|
|
});
|
|
|
|
return [client, ssr];
|
|
}, []);
|
|
|
|
const title = "Anti Nazi-Sites Bot Stats";
|
|
const description =
|
|
"A website to display various stats for the Anti Nazi-Sites bot for Telegram. Developed and maintained by Werewolf Kid Creations.";
|
|
const url = "https://bot-stats.werewolfkid.monster";
|
|
const img = "/images/SPD-arrows.svg";
|
|
const domain = "werewolfkid.monster";
|
|
|
|
return (
|
|
<html lang="en" suppressHydrationWarning>
|
|
<title>{title}</title>
|
|
<meta name="description" content={description} />
|
|
<meta property="title" content={title} />
|
|
<meta name="theme-color" content="#00ffff" />
|
|
<link rel="icon" href={img} sizes="any" type="image/png" />
|
|
<meta property="image" content={img} />
|
|
<meta property="image:type" content="image/png" />
|
|
<meta property="image:width" content="653px" />
|
|
<meta property="og:title" content={title} />
|
|
<meta property="og:description" content={description} />
|
|
<meta property="og:url" content={url} />
|
|
<meta property="og:type" content="website" />
|
|
<meta property="og:image" content={img} />
|
|
<meta property="og:image:type" content="image/png" />
|
|
<meta property="og:image:width" content="653px" />
|
|
<meta property="og:image:height" content="651px" />
|
|
<meta property="image:height" content="651px" />
|
|
<meta name="twitter:title" content={title} />
|
|
<meta property="twitter:domain" content={domain} />
|
|
<meta property="twitter:url" content={url} />
|
|
<meta name="twitter:description" content={description} />
|
|
<meta name="twitter:image" content={img} />
|
|
<meta name="twitter:card" content="summary_large_image" />
|
|
<meta httpEquiv="content-language" content="en_US" />
|
|
<meta charSet="UTF-8" />
|
|
<link rel="icon" type="image/svg+xml" href={img} />
|
|
<link rel="shortcut icon" href={img} />
|
|
<link rel="apple-touch-icon" sizes="180x180" href={img} />
|
|
<link rel="manifest" href={img} />
|
|
<body>
|
|
<div id="my-banner"></div>
|
|
<Script src="https://keepandroidopen.org/banner.js?size=mini&hidebutton=off&id=android-banner&animation=off?link=https://keepandroidopen.org" />
|
|
<UrqlProvider client={client} ssr={ssr}>
|
|
<Provider>{children}</Provider>
|
|
</UrqlProvider>
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|