55 lines
1.5 KiB
TypeScript
55 lines
1.5 KiB
TypeScript
import type { Metadata } from "next";
|
|
import { Suspense, type ReactNode } from "react";
|
|
import Analytics from "@/components/Analytics";
|
|
import "./globals.css";
|
|
|
|
export const metadata: Metadata = {
|
|
title: {
|
|
default: "hidden11",
|
|
template: "%s | hidden11",
|
|
},
|
|
description: "Daily football lineup puzzle with sharper clues, harder challenges and shareable results.",
|
|
metadataBase: new URL("https://hidden11.app"),
|
|
applicationName: "hidden11",
|
|
alternates: {
|
|
canonical: "https://hidden11.app",
|
|
},
|
|
keywords: ["football puzzle", "soccer puzzle", "daily game", "lineup puzzle", "hidden11"],
|
|
icons: {
|
|
icon: "/favicon.svg",
|
|
},
|
|
openGraph: {
|
|
title: "hidden11",
|
|
description: "Beat Easy, Medium and Hard in the daily football lineup puzzle and share the result.",
|
|
url: "https://hidden11.app",
|
|
siteName: "hidden11",
|
|
locale: "en_US",
|
|
type: "website",
|
|
},
|
|
twitter: {
|
|
card: "summary_large_image",
|
|
title: "hidden11",
|
|
description: "Beat Easy, Medium and Hard in the daily football lineup puzzle and share the result.",
|
|
},
|
|
};
|
|
|
|
export default function RootLayout({
|
|
children,
|
|
}: Readonly<{
|
|
children: ReactNode;
|
|
}>) {
|
|
const gaMeasurementId = process.env.NEXT_PUBLIC_GA_MEASUREMENT_ID;
|
|
const clarityProjectId = process.env.NEXT_PUBLIC_CLARITY_PROJECT_ID;
|
|
|
|
return (
|
|
<html lang="en">
|
|
<body>
|
|
{children}
|
|
<Suspense fallback={null}>
|
|
<Analytics gaMeasurementId={gaMeasurementId} clarityProjectId={clarityProjectId} />
|
|
</Suspense>
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|