102 lines
2.8 KiB
TypeScript
102 lines
2.8 KiB
TypeScript
import type { Metadata, Viewport } from "next";
|
|
import localFont from "next/font/local";
|
|
import "./globals.css";
|
|
import { ThemeProvider } from "next-themes";
|
|
import { AuthProvider } from "@/components/auth/AuthContext";
|
|
import { CartProvider } from "@/components/cart/CartContext";
|
|
import { CartDrawer } from "@/components/cart/CartDrawer";
|
|
import { PlayerProvider } from "@/components/player/PlayerContext";
|
|
import { Player } from "@/components/player/Player";
|
|
|
|
const argesta = localFont({
|
|
src: "../public/fonts/Argesta.woff2",
|
|
variable: "--font-argesta-face",
|
|
display: "swap",
|
|
});
|
|
|
|
const silka = localFont({
|
|
src: "../public/fonts/Silka-Regular.woff2",
|
|
variable: "--font-silka-face",
|
|
display: "swap",
|
|
});
|
|
|
|
const silkaSB = localFont({
|
|
src: "../public/fonts/Silka-SemiBold.woff2",
|
|
variable: "--font-silkasb-face",
|
|
display: "swap",
|
|
});
|
|
|
|
const isProduction =
|
|
process.env.NEXT_PUBLIC_APP_URL?.includes("trptk.com") &&
|
|
!process.env.NEXT_PUBLIC_APP_URL?.includes("staging");
|
|
|
|
export const metadata: Metadata = {
|
|
metadataBase: new URL("https://trptk.com"),
|
|
title: {
|
|
default: "TRPTK",
|
|
template: "%s • TRPTK",
|
|
},
|
|
description: "Recording the extraordinary.",
|
|
// Prevent search engines from indexing non-production deployments
|
|
...(!isProduction && {
|
|
robots: { index: false, follow: false },
|
|
}),
|
|
};
|
|
|
|
export const viewport: Viewport = {
|
|
maximumScale: 1,
|
|
themeColor: [
|
|
{ media: "(prefers-color-scheme: light)", color: "#e8e9ea" },
|
|
{ media: "(prefers-color-scheme: dark)", color: "#282e39" },
|
|
],
|
|
};
|
|
|
|
export default function RootLayout({
|
|
children,
|
|
}: Readonly<{
|
|
children: React.ReactNode;
|
|
}>) {
|
|
return (
|
|
<html
|
|
lang="en"
|
|
suppressHydrationWarning
|
|
className={`${argesta.variable} ${silka.variable} ${silkaSB.variable}`}
|
|
>
|
|
<head>
|
|
<script
|
|
type="application/ld+json"
|
|
dangerouslySetInnerHTML={{
|
|
__html: JSON.stringify({
|
|
"@context": "https://schema.org",
|
|
"@type": "Organization",
|
|
name: "TRPTK",
|
|
url: "https://trptk.com",
|
|
description: "Recording the extraordinary.",
|
|
}).replace(/</g, "\\u003c"),
|
|
}}
|
|
/>
|
|
</head>
|
|
<body
|
|
className={`min-h-screen overflow-x-hidden bg-lightbg font-silka text-lighttext antialiased dark:bg-darkbg dark:text-darktext`}
|
|
>
|
|
<ThemeProvider
|
|
attribute="class"
|
|
defaultTheme="dark"
|
|
enableSystem={true}
|
|
disableTransitionOnChange={false}
|
|
storageKey="theme"
|
|
>
|
|
<AuthProvider>
|
|
<CartProvider>
|
|
<PlayerProvider>
|
|
{children}
|
|
<Player />
|
|
</PlayerProvider>
|
|
<CartDrawer />
|
|
</CartProvider>
|
|
</AuthProvider>
|
|
</ThemeProvider>
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|