Files
myeasycms-v2/apps/web/app/layout.tsx
Giancarlo Buomprisco 2c0d0bf7a1 Next.js 16, React 19.2, Identities page, Invitations identities step, PNPM Catalogs (#381)
* Upgraded to Next.js 16
* Refactored code to comply with React 19.2 ESLint rules
* Refactored some useEffect usages with the new useEffectEvent
* Added Identities page and added second step to set up an identity after accepting an invitation
* Updated all dependencies
* Introduced PNPM catalogs for some frequently updated dependencies
* Bugs fixing and improvements
2025-10-22 11:47:47 +09:00

45 lines
1.1 KiB
TypeScript

import { headers } from 'next/headers';
import { Toaster } from '@kit/ui/sonner';
import { RootProviders } from '~/components/root-providers';
import { getFontsClassName } from '~/lib/fonts';
import { createI18nServerInstance } from '~/lib/i18n/i18n.server';
import { generateRootMetadata } from '~/lib/root-metadata';
import { getRootTheme } from '~/lib/root-theme';
import '../styles/globals.css';
export const generateMetadata = () => {
return generateRootMetadata();
};
export default async function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
const { language } = await createI18nServerInstance();
const theme = await getRootTheme();
const className = getFontsClassName(theme);
const nonce = await getCspNonce();
return (
<html lang={language} className={className}>
<body>
<RootProviders theme={theme} lang={language} nonce={nonce}>
{children}
</RootProviders>
<Toaster richColors={true} theme={theme} position="top-center" />
</body>
</html>
);
}
async function getCspNonce() {
const headersStore = await headers();
return headersStore.get('x-nonce') ?? undefined;
}