|
import Link from 'next/link' |
|
import CONFIG from '../config' |
|
import { BlogPostCardInfo } from './BlogPostCardInfo' |
|
import { siteConfig } from '@/lib/config' |
|
import LazyImage from '@/components/LazyImage' |
|
import { checkContainHttp, sliceUrlFromHttp } from '@/lib/utils' |
|
|
|
const BlogPostCard = ({ index, post, showSummary, siteInfo }) => { |
|
const showPreview = siteConfig('HEXO_POST_LIST_PREVIEW', null, CONFIG) && post.blockMap |
|
if (post && !post.pageCoverThumbnail && siteConfig('HEXO_POST_LIST_COVER_DEFAULT', null, CONFIG)) { |
|
post.pageCoverThumbnail = siteInfo?.pageCover |
|
} |
|
const showPageCover = siteConfig('HEXO_POST_LIST_COVER', null, CONFIG) && post?.pageCoverThumbnail && !showPreview |
|
|
|
const url = checkContainHttp(post.slug) ? sliceUrlFromHttp(post.slug) : `${siteConfig('SUB_PATH', '')}/${post.slug}` |
|
|
|
return ( |
|
|
|
<div className={`${siteConfig('HEXO_POST_LIST_COVER_HOVER_ENLARGE', null, CONFIG) ? ' hover:scale-110 transition-all duration-150' : ''}`} > |
|
<div key={post.id} |
|
data-aos="fade-up" |
|
data-aos-easing="ease-in-out" |
|
data-aos-duration="800" |
|
data-aos-once="false" |
|
data-aos-anchor-placement="top-bottom" |
|
id='blog-post-card' |
|
className={`group md:h-56 w-full flex justify-between md:flex-row flex-col-reverse ${siteConfig('HEXO_POST_LIST_IMG_CROSSOVER', null, CONFIG) && index % 2 === 1 ? 'md:flex-row-reverse' : ''} |
|
overflow-hidden border dark:border-black rounded-xl bg-white dark:bg-hexo-black-gray`}> |
|
|
|
{/* 文字内容 */} |
|
<BlogPostCardInfo index={index} post={post} showPageCover={showPageCover} showPreview={showPreview} showSummary={showSummary} /> |
|
|
|
{/* 图片封面 */} |
|
{showPageCover && ( |
|
<div className="md:w-5/12 overflow-hidden"> |
|
<Link href={url} passHref legacyBehavior> |
|
<LazyImage priority={index === 1} src={post?.pageCoverThumbnail} className='h-56 w-full object-cover object-center group-hover:scale-110 duration-500' /> |
|
</Link> |
|
</div> |
|
)} |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
) |
|
} |
|
|
|
export default BlogPostCard |
|
|