import { useMemo } from 'react'; import { Outlet } from 'react-router-dom'; import { I18nextProvider } from 'react-i18next'; import i18n from '../i18n.js'; import { Header } from './Header.jsx'; import { Footer } from './Footer.jsx'; import { useTheme } from '../hooks/useTheme.js'; import '../styles/layout.css'; export function LangLayout({ lang }) { const { theme, toggleTheme } = useTheme(); // A per-page cloned instance, not a mutation of the shared `i18n` singleton: // the SSG build renders many pages concurrently in the same process // (ssgOptions.concurrency), so changing the shared instance's language // during render would leak between pages rendering at the same time. const scopedI18n = useMemo(() => i18n.cloneInstance({ lng: lang }), [lang]); return (