'use client' import Comment from '@/components/Comment' import replaceSearchResult from '@/components/Mark' import NotionIcon from '@/components/NotionIcon' import NotionPage from '@/components/NotionPage' import ShareBar from '@/components/ShareBar' import { siteConfig } from '@/lib/config' import { useGlobal } from '@/lib/global' import { isBrowser } from '@/lib/utils' import { Transition } from '@headlessui/react' import Link from 'next/link' import { useRouter } from 'next/router' import { useEffect } from 'react' import BlogListArchive from './components/BlogListArchive' import { BlogListPage } from './components/BlogListPage' import { BlogListScroll } from './components/BlogListScroll' import { Footer } from './components/Footer' import { Header } from './components/Header' import { PostLock } from './components/PostLock' import { PostMeta } from './components/PostMeta' import SearchInput from './components/SearchInput' import { SideBar } from './components/SideBar' import CONFIG from './config' import { Style } from './style' /** * 基础布局框架 * 1.其它页面都嵌入在LayoutBase中 * 2.采用左右两侧布局,移动端使用顶部导航栏 * @returns {JSX.Element} * @constructor */ const LayoutBase = props => { const { children } = props const { onLoading, fullWidth, locale } = useGlobal() const router = useRouter() const { post, category, tag } = props const title = post?.title || siteConfig('TITLE') const description = post?.description || siteConfig('AUTHOR') // 顶部如果是按照分类或标签查看文章列表,列表顶部嵌入一个横幅 // 如果是搜索,则列表顶部嵌入 搜索框 let slotTop = null if (category) { slotTop = (
{category}
) } else if (tag) { slotTop =
#{tag}
} else if (props.slotTop) { slotTop = props.slotTop } else if (router.route === '/search') { // 嵌入一个搜索框在顶部 slotTop = (
) } return (