import React, { useContext, useMemo, useState } from 'react' import { ConfigProvider, Grid } from 'antd' // import 'github-markdown-css/github-markdown-light.css' import './github-markdown-light.css' const { useBreakpoint } = Grid import s from './index.module.less' import AppHeader from './Header' import AppSider, { defaultSideNavs } from './Sider' import { themeConfigCtx } from '../ctx' export { default as MDX } from './MDX' import { useThemeCtx } from '..' import { LayoutContext } from './ctx' import { Footer } from './Footer' import OutLine from './Outline' ConfigProvider.config({ prefixCls: 'vp-antd', }) interface Props {} const AppLayout: React.FC> = ({ children }) => { const { sideNavs } = useContext(themeConfigCtx) const themeCtxValue = useThemeCtx() const [isSlideSiderOpen, setIsSlideSiderOpen] = useState(false) const sideNavsData = useMemo(() => { if (typeof sideNavs === 'function') return sideNavs(themeCtxValue) if (Array.isArray(sideNavs)) return sideNavs return defaultSideNavs(themeCtxValue) }, [themeCtxValue]) const screenWidth = useBreakpoint() const layoutCtxVal = useMemo(() => { return { screenWidth, isSlideSiderOpen, setIsSlideSiderOpen, } }, [isSlideSiderOpen, screenWidth]) return (
{sideNavsData && sideNavsData.length > 0 && (
)}
{children}
) } export default AppLayout const theme = { token: { colorSplit: 'rgba(5, 5, 5, 0.1)', }, } as const