● Zion Boggan
repos/Stepping App/apps/web/src/app/layout.tsx
zionboggan.com ↗
81 lines · tsx
History for this file →
1
import type { Metadata, Viewport } from "next";
2
import { Bricolage_Grotesque, Instrument_Serif, Space_Mono } from "next/font/google";
3
import "./globals.css";
4
import { TRPCProvider } from "@/lib/trpc/provider";
5
import { SmoothScroll } from "@/components/smooth-scroll";
6
 
7
const bricolage = Bricolage_Grotesque({
8
  subsets: ["latin"],
9
  variable: "--font-bricolage",
10
  display: "swap",
11
});
12
 
13
const instrument = Instrument_Serif({
14
  subsets: ["latin"],
15
  weight: "400",
16
  style: ["normal", "italic"],
17
  variable: "--font-instrument",
18
  display: "swap",
19
});
20
 
21
const spaceMono = Space_Mono({
22
  subsets: ["latin"],
23
  weight: ["400", "700"],
24
  variable: "--font-space-mono",
25
  display: "swap",
26
});
27
 
28
const SITE_URL = process.env.NEXT_PUBLIC_SITE_URL || "https://stepping.zionboggan.com";
29
const DESCRIPTION =
30
  "Chicago Stepping. Your City. The sets, the people, and the road between cities, in one place.";
31
 
32
export const metadata: Metadata = {
33
  metadataBase: new URL(SITE_URL),
34
  title: "Chicago Stepping. Your City.",
35
  description: DESCRIPTION,
36
  applicationName: "Chicago Stepping",
37
  robots: { index: false, follow: false },
38
  manifest: "/manifest.webmanifest",
39
  icons: {
40
    icon: "/icon.svg",
41
    shortcut: "/icon.svg",
42
    apple: "/icon.svg",
43
  },
44
  openGraph: {
45
    title: "Chicago Stepping. Your City.",
46
    description: DESCRIPTION,
47
    siteName: "Chicago Stepping",
48
    url: SITE_URL,
49
    images: [{ url: `${SITE_URL}/og-image.png`, width: 1200, height: 630 }],
50
    type: "website",
51
  },
52
  twitter: {
53
    card: "summary_large_image",
54
    title: "Chicago Stepping. Your City.",
55
    description: DESCRIPTION,
56
    images: [`${SITE_URL}/og-image.png`],
57
  },
58
};
59
 
60
export const viewport: Viewport = {
61
  themeColor: "#0a0a0b",
62
};
63
 
64
export default function RootLayout({
65
  children,
66
}: Readonly<{
67
  children: React.ReactNode;
68
}>) {
69
  return (
70
    <html
71
      lang="en"
72
      className={`${bricolage.variable} ${instrument.variable} ${spaceMono.variable} h-full`}
73
    >
74
      <body className="min-h-full bg-stage text-bone">
75
        <SmoothScroll>
76
          <TRPCProvider>{children}</TRPCProvider>
77
        </SmoothScroll>
78
      </body>
79
    </html>
80
  );
81
}