import PageContainer from 'components/page-container'
import Sidebar from 'components/sidebar/sidebar'
import componentsSidebar from 'configs/components.sidebar.json'
import gettingStartedSidebar from 'configs/getting-started.sidebar.json'
import hooksSidebar from 'configs/hooks.sidebar.json'
import styledSystemSidebar from 'configs/styled-system.sidebar.json'
import tutorialSidebar from 'configs/tutorial.sidebar.json'
import communitySidebar from 'configs/community.sidebar.json'
import figmaSidebar from 'configs/figma.sidebar.json'
import semverRSort from 'semver/functions/rsort'
import { ReactNode } from 'react'
import { RouteItem } from 'utils/get-route-context'
import { Frontmatter } from 'src/types/frontmatter'
import { List, ListItem } from '@chakra-ui/react'
import SidebarLink from 'components/sidebar/sidebar-link'
import { allChangelogs } from 'contentlayer/generated'
import TocNav from 'components/toc-nav'
import { t } from 'utils/i18n'
export function getRoutes(slug: string): RouteItem[] {
// for home page, use docs sidebar
if (slug === '/') {
return gettingStartedSidebar.routes as RouteItem[]
}
const configMap = {
'/getting-started': gettingStartedSidebar,
'/docs/styled-system': styledSystemSidebar,
'/docs/hooks': hooksSidebar,
'/docs/components': componentsSidebar,
'/tutorial': tutorialSidebar,
'/community': communitySidebar,
'/figma': figmaSidebar,
}
const [, sidebar] =
Object.entries(configMap).find(([path]) => slug.startsWith(path)) ?? []
const routes = sidebar?.routes ?? []
return routes as RouteItem[]
}
export function getVersions(): RouteItem[] {
return semverRSort(
allChangelogs
.filter(({ version }) => version.startsWith('2.'))
.map(({ version }) => version),
).map((version) => ({
title: `v${version}`,
path: `/changelog/v${version}`,
}))
}
interface MDXLayoutProps {
frontmatter: Frontmatter
children: ReactNode
hideToc?: boolean
maxWidth?: string
}
export default function MDXLayout(props: MDXLayoutProps) {
const { frontmatter, children, maxWidth } = props
const routes = getRoutes(frontmatter.slug)
const versions = getVersions()
return (
}
rightSidebar={
{versions.map(({ title, path }) => (
{title}
))}
}
>
{children}
)
}