import Footer from '@components/Footer/Footer'; import Header from '@components/Header/Header'; import Main from '@components/Main/Main'; import Breadcrumb from '@components/Breadcrumb/Breadcrumb'; import { settings } from '@utils/config'; import Head from 'next/head'; import { useRouter } from 'next/router'; import { ReactElement, ReactNode, useEffect, useRef } from 'react'; import { useIntl } from 'react-intl'; import { WebSite, WithContext } from 'schema-dts'; import styles from './Layout.module.scss'; const Layout = ({ children, isHome = false, }: { children: ReactNode; isHome?: boolean; }) => { const intl = useIntl(); const { locale } = useRouter(); const ref = useRef(null); const { asPath } = useRouter(); useEffect(() => { ref.current?.focus(); }, [asPath]); const schemaJsonLd: WithContext = { '@context': 'https://schema.org', '@id': `${settings.url}`, '@type': 'WebSite', name: settings.name, description: locale?.startsWith('en') ? settings.baseline.en : settings.baseline.fr, url: settings.url, author: { '@id': `${settings.url}/#branding` }, copyrightYear: Number(settings.copyright.startYear), creator: { '@id': `${settings.url}/#branding` }, editor: { '@id': `${settings.url}/#branding` }, inLanguage: settings.locales.defaultLocale, potentialAction: { '@type': 'SearchAction', target: `${settings.url}/recherche?s={query}`, query: 'required', }, }; return ( <> {intl.formatMessage({ defaultMessage: 'Skip to content', description: 'Layout: Skip to content button', })}
{children}