import CommonHead from '@/components/CommonHead' import { useState, createContext, useContext } from 'react' import Footer from './components/Footer' import InfoCard from './components/InfoCard' import RevolverMaps from './components/RevolverMaps' import CONFIG_MEDIUM from './config_medium' import Tabs from '@/components/Tabs' import TopNavBar from './components/TopNavBar' import SearchInput from './components/SearchInput' import BottomMenuBar from './components/BottomMenuBar' import { useGlobal } from '@/lib/global' import { useRouter } from 'next/router' import Live2D from '@/components/Live2D' import BLOG from '@/blog.config' import Announcement from './components/Announcement' import JumpToTopButton from './components/JumpToTopButton' const ThemeGlobalMedium = createContext() /** * 基础布局 采用左右两侧布局,移动端使用顶部导航栏 * @returns {JSX.Element} * @constructor */ const LayoutBase = props => { const { children, meta, showInfoCard = true, slotRight, slotTop, siteInfo, notice } = props const { locale } = useGlobal() const router = useRouter() const [tocVisible, changeTocVisible] = useState(false) const { onLoading } = useGlobal() const LoadingCover =
return (
{/* 桌面端左侧菜单 */} {/* */}
{/* 顶部导航栏 */}
{slotTop} {onLoading ? LoadingCover : children}
{/* 底部 */}
{/* 桌面端右侧 */}
{slotRight}
{router.pathname !== '/search' && } {showInfoCard && } {CONFIG_MEDIUM.WIDGET_REVOLVER_MAPS === 'true' && }
{/* 移动端底部导航栏 */}
) } export default LayoutBase export const useGitBookGlobal = () => useContext(ThemeGlobalMedium)