76 lines
2 KiB
TypeScript
76 lines
2 KiB
TypeScript
|
|
import React from "react"
|
|||
|
|
import type { Metadata, Viewport } from 'next'
|
|||
|
|
import { Orbitron, Rajdhani, JetBrains_Mono, Noto_Sans_JP } from 'next/font/google'
|
|||
|
|
import { Analytics } from '@vercel/analytics/next'
|
|||
|
|
import { ThemeProvider } from '@/components/theme-provider'
|
|||
|
|
import './globals.css'
|
|||
|
|
|
|||
|
|
// KŌDŌ Typography System
|
|||
|
|
const orbitron = Orbitron({
|
|||
|
|
subsets: ["latin"],
|
|||
|
|
variable: "--font-display",
|
|||
|
|
display: "swap",
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
const rajdhani = Rajdhani({
|
|||
|
|
subsets: ["latin"],
|
|||
|
|
weight: ["300", "400", "500", "600", "700"],
|
|||
|
|
variable: "--font-sans",
|
|||
|
|
display: "swap",
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
const jetbrainsMono = JetBrains_Mono({
|
|||
|
|
subsets: ["latin"],
|
|||
|
|
variable: "--font-mono",
|
|||
|
|
display: "swap",
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
const notoSansJP = Noto_Sans_JP({
|
|||
|
|
subsets: ["latin"],
|
|||
|
|
weight: ["300", "400", "500", "700", "900"],
|
|||
|
|
variable: "--font-jp",
|
|||
|
|
display: "swap",
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
export const metadata: Metadata = {
|
|||
|
|
title: {
|
|||
|
|
default: 'VEZA × TALAS — KŌDŌ Design System',
|
|||
|
|
template: '%s | VEZA',
|
|||
|
|
},
|
|||
|
|
description: 'Professional design system for the VEZA music platform. Fusion of Manga, Graffiti, Nature, Gaming & Linux aesthetics.',
|
|||
|
|
keywords: ['design system', 'music platform', 'VEZA', 'TALAS', 'UI components', 'neon', 'cyberpunk'],
|
|||
|
|
authors: [{ name: 'VEZA Team' }],
|
|||
|
|
generator: 'v0.app',
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export const viewport: Viewport = {
|
|||
|
|
themeColor: [
|
|||
|
|
{ media: '(prefers-color-scheme: light)', color: '#f5f5f5' },
|
|||
|
|
{ media: '(prefers-color-scheme: dark)', color: '#050508' },
|
|||
|
|
],
|
|||
|
|
width: 'device-width',
|
|||
|
|
initialScale: 1,
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export default function RootLayout({
|
|||
|
|
children,
|
|||
|
|
}: Readonly<{
|
|||
|
|
children: React.ReactNode
|
|||
|
|
}>) {
|
|||
|
|
return (
|
|||
|
|
<html lang="en" suppressHydrationWarning>
|
|||
|
|
<body className={`${orbitron.variable} ${rajdhani.variable} ${jetbrainsMono.variable} ${notoSansJP.variable} font-sans antialiased`}>
|
|||
|
|
<ThemeProvider
|
|||
|
|
attribute="class"
|
|||
|
|
defaultTheme="dark"
|
|||
|
|
enableSystem
|
|||
|
|
disableTransitionOnChange
|
|||
|
|
>
|
|||
|
|
{children}
|
|||
|
|
</ThemeProvider>
|
|||
|
|
<Analytics />
|
|||
|
|
</body>
|
|||
|
|
</html>
|
|||
|
|
)
|
|||
|
|
}
|