diff options
Diffstat (limited to 'src/components/Layouts')
| -rw-r--r-- | src/components/Layouts/Layout.module.scss | 20 | ||||
| -rw-r--r-- | src/components/Layouts/Layout.tsx | 155 |
2 files changed, 0 insertions, 175 deletions
diff --git a/src/components/Layouts/Layout.module.scss b/src/components/Layouts/Layout.module.scss deleted file mode 100644 index 33339d4..0000000 --- a/src/components/Layouts/Layout.module.scss +++ /dev/null @@ -1,20 +0,0 @@ -@use "@styles/abstracts/functions" as fun; - -.noscript { - width: 100%; - padding: var(--spacing-xs) var(--spacing-sm); - position: fixed; - top: 0; - z-index: 10; - background: var(--color-bg); - border-bottom: fun.convert-px(3) solid var(--color-border); - color: var(--color-primary-darker); - font-size: var(--font-size-sm); - font-weight: 600; - text-align: center; -} - -.noscript-spacing { - width: 100%; - height: fun.convert-px(80); -} diff --git a/src/components/Layouts/Layout.tsx b/src/components/Layouts/Layout.tsx deleted file mode 100644 index ada32b3..0000000 --- a/src/components/Layouts/Layout.tsx +++ /dev/null @@ -1,155 +0,0 @@ -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 { SearchAction, WebSite, WithContext } from 'schema-dts'; -import styles from './Layout.module.scss'; -import Script from 'next/script'; - -const Layout = ({ - children, - isHome = false, -}: { - children: ReactNode; - isHome?: boolean; -}) => { - const intl = useIntl(); - const { asPath, locale } = useRouter(); - const ref = useRef<HTMLSpanElement>(null); - - useEffect(() => { - ref.current?.focus(); - }, [asPath]); - - type QueryAction = SearchAction & { - 'query-input': string; - }; - - const searchActionSchema: QueryAction = { - '@type': 'SearchAction', - target: { - '@type': 'EntryPoint', - urlTemplate: `${settings.url}/recherche?s={search_term_string}`, - }, - query: 'required', - 'query-input': 'required name=search_term_string', - }; - - const schemaJsonLd: WithContext<WebSite> = { - '@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: searchActionSchema, - }; - - return ( - <> - <Head> - <meta property="og:site_name" content={settings.name} /> - <meta - property="og:locale" - content={`${settings.locales.defaultLocale}_${settings.locales.defaultCountry}`} - /> - <meta property="twitter:card" content="summary" /> - <meta property="twitter:site" content={settings.twitterId} /> - <meta property="twitter:creator" content={settings.twitterId} /> - <meta - name="theme-color" - content="#14578a" - media="(prefers-color-scheme: light)" - /> - <meta - name="theme-color" - content="#85bbd6" - media="(prefers-color-scheme: dark)" - /> - <link - rel="alternate" - href="/feed.xml" - type="application/rss+xml" - title={`${settings.name}'s RSS feed`} - /> - <link - rel="alternate" - href="/atom.xml" - type="application/atom+xml" - title={`${settings.name}'s Atom feed`} - /> - <link - rel="alternate" - href="/feed.json" - type="application/feed+json" - title={`${settings.name}'s Json feed`} - /> - <link rel="icon" href="/favicon.ico" sizes="any" /> - <link rel="icon" href="/icon.svg" type="image/svg+xml" /> - <link rel="apple-touch-icon" href="/apple-touch-icon.png" /> - <link rel="manifest" href="/manifest.webmanifest" /> - </Head> - <Script - id="schema-layout" - type="application/ld+json" - dangerouslySetInnerHTML={{ __html: JSON.stringify(schemaJsonLd) }} - ></Script> - <Script - strategy="afterInteractive" - async - src={`${settings.ackee.url}/${settings.ackee.filename}`} - data-ackee-server={settings.ackee.url} - data-ackee-domain-id={settings.ackee.siteId} - /> - <noscript> - <div className={styles['noscript-spacing']}></div> - </noscript> - <span ref={ref} tabIndex={-1} /> - <a href="#main" className="screen-reader-text"> - {intl.formatMessage({ - defaultMessage: 'Skip to content', - description: 'Layout: Skip to content button', - id: 'iqAbyn', - })} - </a> - <Header isHome={isHome} /> - <Main>{children}</Main> - <Footer /> - <noscript> - <div className={styles.noscript}> - {intl.formatMessage({ - defaultMessage: - 'Without Javascript, some features may not work like loading more posts or use search. If you want to benefit from these features, please activate Javascript.', - description: 'Layout: noscript banner', - id: 'LR70nt', - })} - </div> - </noscript> - </> - ); -}; - -export const getLayout = (page: ReactElement) => { - const pageTitle: string = page.props.breadcrumbTitle; - - return ( - <Layout> - <Breadcrumb pageTitle={pageTitle} /> - {page} - </Layout> - ); -}; - -export default Layout; |
