layout.tsx49 lines · main
1import type { Metadata, Viewport } from 'next';
2import { GeistMono } from 'geist/font/mono';
3import { GeistSans } from 'geist/font/sans';
4
5import './globals.css';
6
7export const metadata: Metadata = {
8 title: {
9 default: 'briven docs',
10 template: '%s · briven docs',
11 },
12 description: 'developer docs for briven — reactive postgres, worldwide, fully portable.',
13 icons: {
14 icon: [{ url: '/favicon.svg', type: 'image/svg+xml' }],
15 shortcut: '/favicon.svg',
16 },
17 metadataBase: new URL('https://docs.briven.tech'),
18 openGraph: {
19 title: 'briven docs',
20 description: 'reactive postgres, worldwide, fully portable — developer docs.',
21 url: 'https://docs.briven.tech',
22 siteName: 'briven docs',
23 locale: 'en_US',
24 type: 'website',
25 },
26 twitter: {
27 card: 'summary_large_image',
28 title: 'briven docs',
29 description: 'reactive postgres, worldwide, fully portable — developer docs.',
30 },
31 alternates: {
32 types: {
33 'application/rss+xml': '/changelog/feed.xml',
34 },
35 },
36};
37
38export const viewport: Viewport = {
39 themeColor: '#0a0b0d',
40 colorScheme: 'dark',
41};
42
43export default function RootLayout({ children }: { children: React.ReactNode }) {
44 return (
45 <html lang="en" className={`${GeistSans.variable} ${GeistMono.variable}`}>
46 <body className="min-h-dvh bg-[var(--color-bg)] text-[var(--color-text)]">{children}</body>
47 </html>
48 );
49}