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' const ThemeGlobalMedium = createContext() /** * 基础布局 采用左右两侧布局,移动端使用顶部导航栏 * @returns {JSX.Element} * @constructor */ const LayoutBase = props => { const { children, meta, showInfoCard = true, slotLeft, slotTop, siteInfo } = props const { locale } = useGlobal() const router = useRouter() const [tocVisible, changeTocVisible] = useState(false) const { onLoading } = useGlobal() const LoadingCover =
return (
{/* 左侧推拉抽屉 */}
{slotLeft}
{router.pathname !== '/search' && } {showInfoCard && } {CONFIG_MEDIUM.WIDGET_REVOLVER_MAPS === 'true' && }
{/* 顶部导航栏 */}
{slotTop} {onLoading ? LoadingCover : children} {/* 回顶按钮 */}
{ window.scrollTo({ top: 0, behavior: 'smooth' }) }} />
{/* 底部 */}
{/* 移动端底部导航栏 */}
) } export default LayoutBase export const useMediumGlobal = () => useContext(ThemeGlobalMedium)