66 lines
1.8 KiB
TypeScript
66 lines
1.8 KiB
TypeScript
import { GeistSans } from 'geist/font/sans'
|
|
import { GeistMono } from 'geist/font/mono'
|
|
|
|
import '@/app/globals.css'
|
|
import { cn } from '@/lib/utils'
|
|
import { TailwindIndicator } from '@/components-ai/tailwind-indicator'
|
|
import { Providers } from '@/components-ai/providers'
|
|
import { Header } from '@/components-ai/header'
|
|
import { Toaster } from '@/components-ai/ui/sonner'
|
|
import { Navigation } from '@/components/navbar/navigation'
|
|
|
|
export const metadata = {
|
|
metadataBase: process.env.VERCEL_URL
|
|
? new URL(`https://${process.env.VERCEL_URL}`)
|
|
: undefined,
|
|
title: {
|
|
default: 'Next.js AI Chatbot',
|
|
template: `%s - Next.js AI Chatbot`
|
|
},
|
|
description: 'An AI-powered chatbot template built with Next.js and Vercel.',
|
|
icons: {
|
|
icon: '/favicon.ico',
|
|
shortcut: '/favicon-16x16.png',
|
|
apple: '/apple-touch-icon.png'
|
|
}
|
|
}
|
|
|
|
export const viewport = {
|
|
themeColor: [
|
|
{ media: '(prefers-color-scheme: light)', color: 'white' },
|
|
{ media: '(prefers-color-scheme: dark)', color: 'black' }
|
|
]
|
|
}
|
|
|
|
interface RootLayoutProps {
|
|
children: React.ReactNode
|
|
}
|
|
|
|
export default function RootLayout({ children }: RootLayoutProps) {
|
|
return (
|
|
<html lang="en" suppressHydrationWarning>
|
|
<body
|
|
className={cn(
|
|
'font-sans antialiased',
|
|
GeistSans.variable,
|
|
GeistMono.variable
|
|
)}
|
|
>
|
|
<Toaster position="top-center" />
|
|
<Providers
|
|
attribute="class"
|
|
defaultTheme="system"
|
|
enableSystem
|
|
disableTransitionOnChange
|
|
>
|
|
<div className="flex flex-col min-h-screen ">
|
|
<Navigation />
|
|
<main className="flex flex-col flex-1 bg-muted/2">{children}</main>
|
|
</div>
|
|
<TailwindIndicator />
|
|
</Providers>
|
|
</body>
|
|
</html>
|
|
)
|
|
}
|