/** * HEO 主题说明 * > 主题设计者 [张洪](https://zhheo.com/) * > 主题开发者 [tangly1024](https://github.com/tangly1024) * 1. 开启方式 在blog.config.js 将主题配置为 `HEO` * 2. 更多说明参考此[文档](https://docs.tangly1024.com/article/notionnext-heo) */ import Comment from '@/components/Comment' import { AdSlot } from '@/components/GoogleAdsense' import { HashTag } from '@/components/HeroIcons' import LazyImage from '@/components/LazyImage' import LoadingCover from '@/components/LoadingCover' import replaceSearchResult from '@/components/Mark' import NotionPage from '@/components/NotionPage' import ShareBar from '@/components/ShareBar' import WWAds from '@/components/WWAds' import { siteConfig } from '@/lib/config' import { useGlobal } from '@/lib/global' import { loadWowJS } from '@/lib/plugins/wow' import { isBrowser } from '@/lib/utils' import { Transition } from '@headlessui/react' import Link from 'next/link' import { useRouter } from 'next/router' import { useEffect, useState } from 'react' import BlogPostArchive from './components/BlogPostArchive' import BlogPostListPage from './components/BlogPostListPage' import BlogPostListScroll from './components/BlogPostListScroll' import CategoryBar from './components/CategoryBar' import FloatTocButton from './components/FloatTocButton' import Footer from './components/Footer' import Header from './components/Header' import Hero from './components/Hero' import LatestPostsGroup from './components/LatestPostsGroup' import { NoticeBar } from './components/NoticeBar' import PostAdjacent from './components/PostAdjacent' import PostCopyright from './components/PostCopyright' import PostHeader from './components/PostHeader' import { PostLock } from './components/PostLock' import PostRecommend from './components/PostRecommend' import SearchNav from './components/SearchNav' import SideRight from './components/SideRight' import CONFIG from './config' import { Style } from './style' /** * 基础布局 采用上中下布局,移动端使用顶部侧边导航栏 * @param props * @returns {JSX.Element} * @constructor */ const LayoutBase = props => { const { children, slotTop, className } = props // 全屏模式下的最大宽度 const { fullWidth, isDarkMode } = useGlobal() const router = useRouter() const headerSlot = (
{/* 顶部导航 */}
{/* 通知横幅 */} {router.route === '/' ? ( <> ) : null} {fullWidth ? null : }
) // 右侧栏 用户信息+标签列表 const slotRight = router.route === '/404' || fullWidth ? null : const maxWidth = fullWidth ? 'max-w-[96rem] mx-auto' : 'max-w-[86rem]' // 普通最大宽度是86rem和顶部菜单栏对齐,留空则与窗口对齐 const HEO_HERO_BODY_REVERSE = siteConfig( 'HEO_HERO_BODY_REVERSE', false, CONFIG ) const HEO_LOADING_COVER = siteConfig('HEO_LOADING_COVER', true, CONFIG) // 加载wow动画 useEffect(() => { loadWowJS() }, []) return (