Barazo default frontend barazo.forum
at main 75 lines 2.2 kB view raw
1import type { Metadata } from 'next' 2import { Source_Code_Pro } from 'next/font/google' 3import './globals.css' 4import { ThemeProvider } from '@/components/theme-provider' 5import { AuthProvider } from '@/context/auth-context' 6import { AppToastProvider } from '@/context/toast-context' 7import { OnboardingProvider } from '@/context/onboarding-context' 8import { PluginProvider } from '@/context/plugin-context' 9import { SetupGuard } from '@/components/setup-guard' 10import { DynamicFavicon } from '@/components/dynamic-favicon' 11 12const sourceCodePro = Source_Code_Pro({ 13 subsets: ['latin'], 14 variable: '--font-source-code', 15 display: 'swap', 16 weight: ['400', '500', '600', '700'], 17}) 18 19export const metadata: Metadata = { 20 title: { 21 default: 'Barazo - Community Forums on the AT Protocol', 22 template: '%s | Barazo', 23 }, 24 description: 25 'Federated community forums with portable identity, user data ownership, and cross-community reputation.', 26 keywords: ['forum', 'community', 'AT Protocol', 'federated', 'discussions'], 27 authors: [{ name: 'Barazo' }], 28 creator: 'Barazo', 29 metadataBase: new URL('https://barazo.forum'), 30 openGraph: { 31 type: 'website', 32 locale: 'en_US', 33 siteName: 'Barazo', 34 }, 35 twitter: { 36 card: 'summary_large_image', 37 creator: '@barazoforum', 38 }, 39 robots: { 40 index: true, 41 follow: true, 42 }, 43} 44 45export default function RootLayout({ 46 children, 47}: Readonly<{ 48 children: React.ReactNode 49}>) { 50 return ( 51 <html lang="en" className={sourceCodePro.variable} suppressHydrationWarning> 52 <head> 53 <DynamicFavicon /> 54 </head> 55 <body className="min-h-screen font-sans antialiased"> 56 <ThemeProvider 57 attribute="class" 58 defaultTheme="dark" 59 enableSystem={true} 60 disableTransitionOnChange 61 > 62 <AuthProvider> 63 <AppToastProvider> 64 <OnboardingProvider> 65 <PluginProvider> 66 <SetupGuard>{children}</SetupGuard> 67 </PluginProvider> 68 </OnboardingProvider> 69 </AppToastProvider> 70 </AuthProvider> 71 </ThemeProvider> 72 </body> 73 </html> 74 ) 75}