|
import InfoCard from './InfoCard' |
|
import { MenuList } from './MenuList' |
|
import SearchInput from './SearchInput' |
|
import Toc from './Toc' |
|
import { useGlobal } from '@/lib/global' |
|
import Tabs from '@/components/Tabs' |
|
import Logo from './Logo' |
|
import Card from './Card' |
|
import CONFIG from '../config' |
|
import Live2D from '@/components/Live2D' |
|
import { siteConfig } from '@/lib/config' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const SideAreaLeft = props => { |
|
const { post, slot, postCount } = props |
|
const { locale } = useGlobal() |
|
const showToc = post && post.toc && post.toc.length > 1 |
|
return <aside id='left' className={(JSON.parse(siteConfig('LAYOUT_SIDEBAR_REVERSE')) ? 'ml-4' : 'mr-4') + ' hidden lg:block flex-col w-60 z-20 relative'}> |
|
|
|
<section |
|
className='w-60'> |
|
{/* 菜单 */} |
|
<section className='shadow hidden lg:block mb-5 pb-4 bg-white dark:bg-hexo-black-gray hover:shadow-xl duration-200'> |
|
<Logo className='h-32' {...props} /> |
|
<div className='pt-2 px-2 font-sans'> |
|
<MenuList allowCollapse={true} {...props} /> |
|
</div> |
|
{siteConfig('NEXT_MENU_SEARCH', null, CONFIG) && <div className='px-2 pt-2 font-sans'> |
|
<SearchInput {...props} /> |
|
</div>} |
|
|
|
</section> |
|
|
|
</section> |
|
|
|
<div className='sticky top-4 hidden lg:block'> |
|
<Card> |
|
<Tabs> |
|
{showToc && ( |
|
<div key={locale.COMMON.TABLE_OF_CONTENTS} className='dark:text-gray-400 text-gray-600 bg-white dark:bg-hexo-black-gray duration-200'> |
|
<Toc toc={post.toc} /> |
|
</div> |
|
)} |
|
|
|
<div key={locale.NAV.ABOUT} className='mb-5 bg-white dark:bg-hexo-black-gray duration-200 py-6'> |
|
<InfoCard {...props} /> |
|
<> |
|
<div className='mt-2 text-center dark:text-gray-300 font-light text-xs'> |
|
<span className='px-1 '> |
|
<strong className='font-medium'>{postCount}</strong>{locale.COMMON.POSTS}</span> |
|
<span className='px-1 busuanzi_container_site_uv hidden'> |
|
| <strong className='pl-1 busuanzi_value_site_uv font-medium' />{locale.COMMON.VISITORS}</span> |
|
{/* <span className='px-1 busuanzi_container_site_pv hidden'> |
|
| <strong className='pl-1 busuanzi_value_site_pv font-medium'/>{locale.COMMON.VIEWS}</span> */} |
|
</div> |
|
</> |
|
</div> |
|
</Tabs> |
|
</Card> |
|
|
|
<div className='flex justify-center'> |
|
{slot} |
|
<Live2D /> |
|
</div> |
|
</div> |
|
|
|
</aside> |
|
} |
|
export default SideAreaLeft |
|
|