'use client' import CONFIG from './config' import { useEffect } from 'react' import { Header } from './components/Header' import { Nav } from './components/Nav' import { Footer } from './components/Footer' import { Title } from './components/Title' import { SideBar } from './components/SideBar' import { BlogListPage } from './components/BlogListPage' import { BlogListScroll } from './components/BlogListScroll' import { useGlobal } from '@/lib/global' import { ArticleLock } from './components/ArticleLock' import { ArticleInfo } from './components/ArticleInfo' import JumpToTopButton from './components/JumpToTopButton' import NotionPage from '@/components/NotionPage' import Comment from '@/components/Comment' import ShareBar from '@/components/ShareBar' import SearchInput from './components/SearchInput' import replaceSearchResult from '@/components/Mark' import { isBrowser } from '@/lib/utils' import BlogListGroupByDate from './components/BlogListGroupByDate' import CategoryItem from './components/CategoryItem' import TagItem from './components/TagItem' import { useRouter } from 'next/router' import { Transition } from '@headlessui/react' import { Style } from './style' import { siteConfig } from '@/lib/config' /** * 基础布局框架 * 1.其它页面都嵌入在LayoutBase中 * 2.采用左右两侧布局,移动端使用顶部导航栏 * @returns {JSX.Element} * @constructor */ const LayoutBase = props => { const { children } = props const { onLoading, fullWidth } = useGlobal() const router = useRouter() const { category, tag } = props // 顶部如果是按照分类或标签查看文章列表,列表顶部嵌入一个横幅 // 如果是搜索,则列表顶部嵌入 搜索框 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 =
} // 增加一个状态以触发 Transition 组件的动画 // const [showTransition, setShowTransition] = useState(true) // useEffect(() => { // // 当 location 或 children 发生变化时,触发动画 // setShowTransition(false) // setTimeout(() => setShowTransition(true), 5) // }, [onLoading]) return (