52 lines
1.4 KiB
TypeScript
52 lines
1.4 KiB
TypeScript
import { Metadata } from 'next'
|
|
import { Karla } from 'next/font/google'
|
|
|
|
import Egg from '/src/components/Egg/Egg'
|
|
import Settings from '/src/components/Settings/Settings'
|
|
import TranslateDialog from '/src/components/TranslateDialog/TranslateDialog'
|
|
import { fallbackLng } from '/src/i18n/options'
|
|
import { useTranslation } from '/src/i18n/server'
|
|
|
|
import './global.css'
|
|
import appLink from '../utils/appLink'
|
|
|
|
const karla = Karla({ subsets: ['latin'] })
|
|
|
|
export const metadata: Metadata = {
|
|
metadataBase: new URL(appLink('')),
|
|
title: {
|
|
absolute: 'Crab Fit',
|
|
template: '%s - Crab Fit',
|
|
},
|
|
keywords: ['crab', 'fit', 'crabfit', 'schedule', 'availability', 'availabilities', 'when2meet', 'doodle', 'meet', 'plan', 'time', 'timezone'],
|
|
description: 'Enter your availability to find a time that works for everyone!',
|
|
themeColor: '#F79E00',
|
|
manifest: 'manifest.json',
|
|
openGraph: {
|
|
title: 'Crab Fit',
|
|
description: 'Enter your availability to find a time that works for everyone!',
|
|
url: '/',
|
|
},
|
|
icons: {
|
|
icon: 'favicon.ico',
|
|
apple: 'logo192.png',
|
|
},
|
|
}
|
|
|
|
const RootLayout = async ({ children }: { children: React.ReactNode }) => {
|
|
const { resolvedLanguage } = await useTranslation([])
|
|
|
|
return <html lang={resolvedLanguage ?? fallbackLng}>
|
|
<body className={karla.className}>
|
|
<Settings />
|
|
<Egg />
|
|
<TranslateDialog />
|
|
|
|
{children}
|
|
|
|
</body>
|
|
</html>
|
|
}
|
|
|
|
export default RootLayout
|