|
import Link from 'next/link' |
|
import CONFIG from '../config' |
|
import TwikooCommentCount from '@/components/TwikooCommentCount' |
|
import { formatDateFmt } from '@/lib/formatDate' |
|
import { siteConfig } from '@/lib/config' |
|
import LazyImage from '@/components/LazyImage' |
|
import { checkContainHttp, sliceUrlFromHttp } from '@/lib/utils' |
|
import NotionIcon from '@/components/NotionIcon' |
|
|
|
export const BlogItem = props => { |
|
const { post } = props |
|
const showPageCover = siteConfig('SIMPLE_POST_COVER_ENABLE', false, CONFIG) |
|
const url = checkContainHttp(post.slug) ? sliceUrlFromHttp(post.slug) : `${siteConfig('SUB_PATH', '')}/${post.slug}` |
|
|
|
return <div key={post.id} className="h-42 my-6 pb-12 border-b dark:border-gray-800" > |
|
{/* 文章标题 */} |
|
|
|
<div className='flex'> |
|
<div className='article-cover h-full'> |
|
{/* 图片封面 */} |
|
{showPageCover && ( |
|
<div className="overflow-hidden mr-2 w-56 h-full"> |
|
<Link href={url} passHref legacyBehavior> |
|
<LazyImage src={post?.pageCoverThumbnail} className='w-56 h-full object-cover object-center group-hover:scale-110 duration-500' /> |
|
</Link> |
|
</div> |
|
)} |
|
</div> |
|
|
|
<article className='article-info'> |
|
|
|
<h2 className="mb-2"> |
|
<Link |
|
href={url} |
|
className="blog-item-title font-bold text-black text-2xl menu-link"> |
|
<NotionIcon icon={post.pageIcon} />{post.title} |
|
</Link> |
|
</h2> |
|
|
|
{/* 文章信息 */} |
|
<header className="mb-5 text-md text-gray-700 dark:text-gray-300 flex-wrap flex leading-6"> |
|
<div className='space-x-2'> |
|
<span> <a href={siteConfig('SIMPLE_AUTHOR_LINK', null, CONFIG)} className='p-1 hover:text-red-400 transition-all duration-200'><i className="fa-regular fa-user"></i> {siteConfig('AUTHOR')}</a></span> |
|
<span> |
|
<Link className='p-1 hover:text-red-400 transition-all duration-200' href={`/archive#${formatDateFmt(post?.publishDate, 'yyyy-MM')}`}> |
|
<i className="fa-regular fa-clock" /> {post.date?.start_date || post.createdTime} |
|
</Link> |
|
</span> |
|
<span><TwikooCommentCount post={post} /></span> |
|
</div> |
|
|
|
<div> |
|
{post.category && <Link href={`/category/${post.category}`} className='p-1'> <span className="hover:text-red-400 transition-all duration-200"><i className="fa-regular fa-folder mr-0.5" />{post.category}</span></Link>} |
|
{post?.tags && post?.tags?.length > 0 && post?.tags.map(t => <Link key={t} href={`/tag/${t}`} className=' hover:text-red-400 transition-all duration-200'><span > /{t}</span></Link>)} |
|
</div> |
|
</header> |
|
|
|
<main className="text-gray-700 dark:text-gray-300 leading-normal mb-6"> |
|
{post.summary} |
|
{post.summary && <span>...</span>} |
|
</main> |
|
</article> |
|
</div> |
|
|
|
<div className='block'> |
|
<Link href={url} className='inline-block rounded-sm text-blue-600 text-xs dark:border-gray-800 border hover:text-red-400 transition-all duration-200 hover:border-red-300 h-9 leading-8 px-5'> |
|
Continue Reading <i className="fa-solid fa-angle-right align-middle"></i> |
|
</Link> |
|
</div> |
|
</div> |
|
} |
|
|