Files
HaBit/app/layout.tsx

67 lines
1.8 KiB
TypeScript

import type { Metadata, Viewport } from "next";
import { Press_Start_2P, Share_Tech_Mono } from "next/font/google";
import { ThemeProvider } from "next-themes";
import { GlobalAmbientAudio } from "@/components/layout/global-ambient-audio";
import { GlobalBottomNav } from "@/components/layout/global-bottom-nav";
import { SiteHeader } from "@/components/layout/site-header";
import { ToastProvider } from "@/components/ui/toast-provider";
import "./globals.css";
const defaultUrl = process.env.VERCEL_URL
? `https://${process.env.VERCEL_URL}`
: "http://localhost:3000";
export const metadata: Metadata = {
metadataBase: new URL(defaultUrl),
title: "HaBit",
description: "Build habits, grow your digital self, and track wellness every day.",
};
export const viewport: Viewport = {
width: "device-width",
initialScale: 1,
viewportFit: "cover",
interactiveWidget: "resizes-content",
};
const pixelFont = Press_Start_2P({
weight: "400",
subsets: ["latin"],
variable: "--font-pixel",
display: "swap",
});
const bodyFont = Share_Tech_Mono({
weight: "400",
subsets: ["latin"],
variable: "--font-body",
display: "swap",
});
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html lang="en" suppressHydrationWarning>
<body className={`${pixelFont.variable} ${bodyFont.variable} font-sans antialiased`}>
<ThemeProvider
attribute="class"
defaultTheme="system"
enableSystem
disableTransitionOnChange
>
<ToastProvider>
<SiteHeader />
<div className="flex min-h-dvh flex-col pt-topbar">{children}</div>
<GlobalAmbientAudio />
<GlobalBottomNav />
</ToastProvider>
</ThemeProvider>
</body>
</html>
);
}