/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ import React from 'react'; import Head from '@docusaurus/Head'; import isInternalUrl from '@docusaurus/isInternalUrl'; import {useTitleFormatter, useThemeConfig} from '@docusaurus/theme-common'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import useBaseUrl from '@docusaurus/useBaseUrl'; import Navbar from '@theme/Navbar'; import Footer from '@theme/Footer'; import type {Props} from '@theme/Layout'; function Layout(props: Props): JSX.Element { const {siteConfig} = useDocusaurusContext(); const {favicon, url: siteUrl} = siteConfig; const {image: defaultImage, metadatas} = useThemeConfig(); const { children, title, noFooter, description, image, keywords, permalink, } = props; const metaTitle = useTitleFormatter(title); const metaImage = image || defaultImage; let metaImageUrl = siteUrl + useBaseUrl(metaImage); if (!isInternalUrl(metaImage)) { metaImageUrl = metaImage as string; } const faviconUrl = useBaseUrl(favicon); return (
{/* TODO: Do not assume that it is in english language */} {metaTitle && {metaTitle}} {metaTitle && } {favicon && } {description && } {description && ( )} {keywords && keywords.length && ( )} {metaImage && } {metaImage && } {metaImage && ( )} {permalink && } element here, // as it allows react-helmet to override values set in previous // ie we can override default metadatas such as "twitter:card" // In same Head, the same meta would appear twice instead of overriding // See react-helmet doc > {metadatas?.length > 0 && metadatas.map((metadata, i) => ( ))}
{children}
{!noFooter &&
); } export default Layout;