SPB Git forge

spb/spinza

Public
8commits 1branches 0releases
1.6 MBsize
maindefault branch
16 days agolast push
TypeScript 97.6% SQL 1.4% JavaScript 0.5%
1.9 KB · 43 lines tsx
Raw Blame History
1import type { Metadata, Viewport } from "next";2import { Geist, Geist_Mono } from "next/font/google";3import "./globals.css";4import { Providers } from "@/components/shell/providers";5import { apiServer } from "@/lib/api-server";6import type { PublicUser, UserSettings, WalletView } from "@spinza/shared";78const geist = Geist({ subsets: ["latin"], variable: "--font-geist-sans", display: "swap" });9const geistMono = Geist_Mono({ subsets: ["latin"], variable: "--font-geist-mono", display: "swap" });1011const siteUrl = process.env.NEXT_PUBLIC_SITE_URL ?? "https://www.spinza.dev";1213export const metadata: Metadata = {14  metadataBase: new URL(siteUrl),15  title: { default: "Spinza — The Virtual Casino Playground", template: "%s · Spinza" },16  description: "Play original Spinza games using free fictional credits. No deposits. No withdrawals. No cash value.",17  applicationName: "Spinza",18  openGraph: { title: "Spinza — The Virtual Casino Playground", description: "Play original Spinza games using free fictional credits. No deposits. No withdrawals. No cash value.", url: siteUrl, siteName: "Spinza", type: "website", images: ["/og.png"] },19  twitter: { card: "summary_large_image", title: "Spinza — The Virtual Casino Playground", description: "Original games. Fictional credits. No cash value." },20  icons: { icon: "/icon.svg", apple: "/apple-icon.png" },21  manifest: "/manifest.webmanifest",22  robots: { index: true, follow: true },23};2425export const viewport: Viewport = {26  themeColor: "#07080c",27  width: "device-width",28  initialScale: 1,29  viewportFit: "cover",30  maximumScale: 1,31};3233export default async function RootLayout({ children }: { children: React.ReactNode }) {34  const session = await apiServer<{ user: PublicUser; wallet: WalletView; settings: UserSettings }>("/api/user");35  return (36    <html lang="en" className={`${geist.variable} ${geistMono.variable}`}>37      <body>38        <Providers session={session}>{children}</Providers>39      </body>40    </html>41  );42}43