Files
no-twitter-bot-stats/src/app/layout.tsx
2026-03-22 10:41:04 -04:00

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>
);
}