SPB Git forge

spb/rareindex

Public
54commits 1branches 0releases
7.1 MBsize
maindefault branch
10 days agolast push
TypeScript 61.9% HTML 37.2% SQL 0.7%
2.6 KB · 57 lines tsx
Raw Blame History
1import type { Metadata, Viewport } from 'next';2import { Geist, Geist_Mono } from 'next/font/google';3import './globals.css';4import { SiteHeader } from '@/components/layout/site-header';5import { SiteFooter } from '@/components/layout/site-footer';6import { TabBar } from '@/components/layout/tab-bar';7import { THEME_SCRIPT } from '@/components/layout/theme-toggle';89const geistSans = Geist({ variable: '--font-geist-sans', subsets: ['latin'], display: 'swap' });10const geistMono = Geist_Mono({ variable: '--font-geist-mono', subsets: ['latin'], display: 'swap' });1112const SITE_URL = process.env.NEXT_PUBLIC_SITE_URL ?? 'https://www.rareindex.io';1314export const metadata: Metadata = {15  metadataBase: new URL(SITE_URL),16  title: { default: 'RareIndex — The Global Market for Collectibles', template: '%s · RareIndex' },17  description: 'Discover, price, track and analyze collectible assets across the world’s marketplaces and auction houses.',18  applicationName: 'RareIndex',19  manifest: '/manifest.webmanifest',20  appleWebApp: { capable: true, statusBarStyle: 'default', title: 'RareIndex' },21  formatDetection: { telephone: false },22  openGraph: { type: 'website', siteName: 'RareIndex', url: SITE_URL, title: 'RareIndex — The Global Market for Collectibles', description: 'Prices, sales, listings, rarity, liquidity and indices for collectible assets.' },23  twitter: { card: 'summary_large_image', title: 'RareIndex', description: 'The global market for collectibles.' },24  robots: { index: true, follow: true },25};2627export const viewport: Viewport = {28  width: 'device-width',29  initialScale: 1,30  viewportFit: 'cover',31  themeColor: [32    { media: '(prefers-color-scheme: light)', color: '#f7f7f5' },33    { media: '(prefers-color-scheme: dark)', color: '#0a0b0d' },34  ],35};3637export default function RootLayout({ children }: { children: React.ReactNode }) {38  return (39    <html lang="en" className={`${geistSans.variable} ${geistMono.variable} h-full antialiased`} suppressHydrationWarning>40      <head>41        <script dangerouslySetInnerHTML={{ __html: THEME_SCRIPT }} />42      </head>43      <body className="flex min-h-full flex-col">44        <a href="#main" className="sr-only focus:not-sr-only focus:fixed focus:left-3 focus:top-3 focus:z-[100] focus:rounded-md focus:bg-elevated focus:px-3 focus:py-2 focus:text-sm focus:shadow-pop">45          Skip to content46        </a>47        <SiteHeader />48        <main id="main" className="tabbar-pad mx-auto w-full max-w-[1440px] flex-1 px-4 pt-4 sm:px-6">49          {children}50        </main>51        <SiteFooter />52        <TabBar />53      </body>54    </html>55  );56}57