feat: initialize root layout with dynamic provider rendering and site metadata configuration

This commit is contained in:
2026-05-06 20:28:21 +02:00
parent 13c88dd4f7
commit a37b34f758

View File

@@ -1,12 +1,18 @@
import React from 'react'; import React from 'react';
import dynamic from 'next/dynamic'; // <-- 1. On importe l'outil dynamique
import Navbar from '../components/Navbar'; import Navbar from '../components/Navbar';
import Footer from '../components/Footer'; import Footer from '../components/Footer';
import { Providers } from '../components/Providers'; // <-- L'astuce est ici !
import { getSiteSettings } from '../lib/settings'; import { getSiteSettings } from '../lib/settings';
import { Metadata } from 'next'; import { Metadata } from 'next';
import { Inter, Playfair_Display } from 'next/font/google'; import { Inter, Playfair_Display } from 'next/font/google';
import './globals.css'; import './globals.css';
// 2. LA MAGIE EST ICI : On force Next.js à ignorer les Providers pendant le build serveur
const Providers = dynamic(
() => import('../components/Providers').then((mod) => mod.Providers),
{ ssr: false } // Interdit le Server-Side Rendering pour tout ce qui est dedans !
);
const inter = Inter({ const inter = Inter({
subsets: ['latin'], subsets: ['latin'],
variable: '--font-inter', variable: '--font-inter',
@@ -19,7 +25,7 @@ const playfair = Playfair_Display({
display: 'swap', display: 'swap',
}); });
export const dynamic = 'force-dynamic'; export const dynamicMode = 'force-dynamic'; // Renommé pour éviter les conflits de variables
export async function generateMetadata(): Promise<Metadata> { export async function generateMetadata(): Promise<Metadata> {
const settings = await getSiteSettings(); const settings = await getSiteSettings();
@@ -31,7 +37,7 @@ export async function generateMetadata(): Promise<Metadata> {
canonical: '/', canonical: '/',
}, },
icons: { icons: {
icon: '/favicon.png', // Le favicon est géré proprement ici maintenant icon: '/favicon.png',
}, },
}; };
} }