'use client' import CONFIG from './config' import { useRouter } from 'next/router' import { useEffect, useState, createContext, useContext } from 'react' import { isBrowser } from '@/lib/utils' import Footer from './components/Footer' import InfoCard from './components/InfoCard' import RevolverMaps from './components/RevolverMaps' import TopNavBar from './components/TopNavBar' import SearchInput from './components/SearchInput' import { useGlobal } from '@/lib/global' import Live2D from '@/components/Live2D' import NavPostList from './components/NavPostList' import ArticleInfo from './components/ArticleInfo' import Catalog from './components/Catalog' import Announcement from './components/Announcement' import PageNavDrawer from './components/PageNavDrawer' import FloatTocButton from './components/FloatTocButton' import { AdSlot } from '@/components/GoogleAdsense' import JumpToTopButton from './components/JumpToTopButton' import ShareBar from '@/components/ShareBar' import CategoryItem from './components/CategoryItem' import TagItemMini from './components/TagItemMini' import ArticleAround from './components/ArticleAround' import Comment from '@/components/Comment' import TocDrawer from './components/TocDrawer' import NotionPage from '@/components/NotionPage' import { ArticleLock } from './components/ArticleLock' import { Transition } from '@headlessui/react' import { Style } from './style' import BlogArchiveItem from './components/BlogArchiveItem' import Link from 'next/link' import dynamic from 'next/dynamic' import { siteConfig } from '@/lib/config' import NotionIcon from '@/components/NotionIcon' const WWAds = dynamic(() => import('@/components/WWAds'), { ssr: false }) // 主题全局变量 const ThemeGlobalGitbook = createContext() export const useGitBookGlobal = () => useContext(ThemeGlobalGitbook) /** * 基础布局 * 采用左右两侧布局,移动端使用顶部导航栏 * @returns {JSX.Element} * @constructor */ const LayoutBase = (props) => { const { children, post, allNavPages, slotLeft, slotRight, slotTop } = props const { onLoading, fullWidth } = useGlobal() const router = useRouter() const [tocVisible, changeTocVisible] = useState(false) const [pageNavVisible, changePageNavVisible] = useState(false) const [filteredNavPages, setFilteredNavPages] = useState(allNavPages) const showTocButton = post?.toc?.length > 1 useEffect(() => { setFilteredNavPages(allNavPages) }, [post]) return (