import { Badge, Box, Flex, SkipNavContent, SkipNavLink, chakra, } from '@chakra-ui/react' import EditPageLink from 'components/edit-page-button' import Footer from 'components/footer' import Header from 'components/header' import SEO from 'components/seo' import TableOfContent from 'components/table-of-content' import { useRouter } from 'next/router' import * as React from 'react' import { FrontmatterHeading } from 'src/types/frontmatter' import { convertBackticksToInlineCode } from 'utils/convert-backticks-to-inline-code' import { t } from 'utils/i18n' import { AdBanner } from './chakra-pro/ad-banner' function useHeadingFocusOnRouteChange() { const router = useRouter() React.useEffect(() => { const onRouteChange = () => { const [heading] = Array.from(document.getElementsByTagName('h1')) heading?.focus() } router.events.on('routeChangeComplete', onRouteChange) return () => { router.events.off('routeChangeComplete', onRouteChange) } }, [router.events]) } interface PageContainerProps { frontmatter: { slug?: string title: string description?: string editUrl?: string version?: string headings?: FrontmatterHeading[] } hideToc?: boolean maxWidth?: string children: React.ReactNode leftSidebar?: React.ReactElement rightSidebar?: React.ReactElement pagination?: React.ReactElement } function PageContainer(props: PageContainerProps) { const { frontmatter, children, leftSidebar, rightSidebar, pagination, hideToc, maxWidth = '48rem', } = props useHeadingFocusOnRouteChange() if (!frontmatter) return <> const { title, description, editUrl, version, headings = [] } = frontmatter return ( <> {t('component.page-container.skip-to-content')}
{leftSidebar || null} {convertBackticksToInlineCode(title)} {version && ( v{version} )} {children} {editUrl && } {pagination || null}