generated from fahricansecer/boilerplate-fe
42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import { Provider } from '@/components/ui/provider';
|
|
import { Bricolage_Grotesque } from 'next/font/google';
|
|
import { hasLocale, NextIntlClientProvider } from 'next-intl';
|
|
import { notFound } from 'next/navigation';
|
|
import { routing } from '@/i18n/routing';
|
|
import { dir } from 'i18next';
|
|
import './global.css';
|
|
|
|
const bricolage = Bricolage_Grotesque({
|
|
variable: '--font-bricolage',
|
|
subsets: ['latin'],
|
|
});
|
|
|
|
export default async function RootLayout({
|
|
children,
|
|
params,
|
|
}: {
|
|
children: React.ReactNode;
|
|
params: Promise<{ locale: string }>;
|
|
}) {
|
|
const { locale } = await params;
|
|
if (!hasLocale(routing.locales, locale)) {
|
|
notFound();
|
|
}
|
|
|
|
return (
|
|
<html lang={locale} dir={dir(locale)} suppressHydrationWarning data-scroll-behavior='smooth'>
|
|
<head>
|
|
<link rel='apple-touch-icon' sizes='180x180' href='/favicon/apple-touch-icon.png' />
|
|
<link rel='icon' type='image/png' sizes='32x32' href='/favicon/favicon-32x32.png' />
|
|
<link rel='icon' type='image/png' sizes='16x16' href='/favicon/favicon-16x16.png' />
|
|
<link rel='manifest' href='/favicon/site.webmanifest' />
|
|
</head>
|
|
<body className={bricolage.variable}>
|
|
<NextIntlClientProvider>
|
|
<Provider>{children}</Provider>
|
|
</NextIntlClientProvider>
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|