Files
alexandrev-tibco dada9bf14a
Build and push image / build (push) Successful in 1m15s
Read analytics IDs at runtime
2026-05-05 11:36:48 +02:00

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