This commit is contained in:
giancarlo
2024-03-24 02:23:22 +08:00
parent 648d77b430
commit bce3479368
589 changed files with 37067 additions and 9596 deletions

74
apps/web/app/layout.tsx Normal file
View File

@@ -0,0 +1,74 @@
import { Inter as SansFont } from 'next/font/google';
import { cookies } from 'next/headers';
import { RootProviders } from '~/components/root-providers';
import appConfig from '~/config/app.config';
import { createI18nServerInstance } from '~/lib/i18n/i18n.server';
import { Toaster } from '@kit/ui/sonner';
import { cn } from '@kit/ui/utils';
import '../styles/globals.css';
const sans = SansFont({
subsets: ['latin'],
variable: '--font-family-sans',
fallback: ['system-ui', 'Helvetica Neue', 'Helvetica', 'Arial'],
preload: true,
weight: ['300', '400', '500', '600', '700', '800'],
});
export default async function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
const i18n = await createI18nServerInstance();
const lang = i18n.language;
return (
<html lang={lang} className={getClassName()}>
<body>
<RootProviders lang={lang}>{children}</RootProviders>
</body>
<Toaster richColors={false} />
</html>
);
}
function getClassName() {
const themeCookie = cookies().get('theme')?.value;
const theme = themeCookie ?? appConfig.theme;
const dark = theme === 'dark';
return cn('antialiased', {
dark,
[sans.className]: true,
});
}
export const metadata = {
title: appConfig.name,
description: appConfig.description,
metadataBase: new URL(appConfig.url!),
openGraph: {
url: appConfig.url,
siteName: appConfig.name,
description: appConfig.description,
},
twitter: {
card: 'summary_large_image',
title: appConfig.title,
description: appConfig.description,
},
icons: {
icon: '/assets/images/favicon/favicon.ico',
shortcut: '/shortcut-icon.png',
apple: '/assets/images/favicon/apple-touch-icon.png',
other: {
rel: 'apple-touch-icon-precomposed',
url: '/apple-touch-icon-precomposed.png',
},
},
};