import Link from 'next/link'; import type { Post } from 'contentlayer/generated'; import { siteConfig } from '@/lib/config'; interface Props { post: Post; } export function PostListItem({ post }: Props) { const cover = post.feature_image && post.feature_image.startsWith('../assets') ? post.feature_image.replace('../assets', '/assets') : undefined; const excerpt = post.description || post.custom_excerpt || post.body?.raw?.slice(0, 120); const tagColorClasses = [ 'bg-rose-100 text-rose-700 dark:bg-rose-900/60 dark:text-rose-200', 'bg-emerald-100 text-emerald-700 dark:bg-emerald-900/60 dark:text-emerald-200', 'bg-sky-100 text-sky-700 dark:bg-sky-900/60 dark:text-sky-200', 'bg-amber-100 text-amber-700 dark:bg-amber-900/60 dark:text-amber-200', 'bg-violet-100 text-violet-700 dark:bg-violet-900/60 dark:text-violet-200' ]; return (
  • {cover && (
    {/* eslint-disable-next-line @next/next/no-img-element */} {post.title}
    )}
    {post.published_at && (

    {new Date(post.published_at).toLocaleDateString( siteConfig.defaultLocale )}

    )}

    {post.title}

    {post.tags && post.tags.length > 0 && (
    {post.tags.slice(0, 4).map((t, i) => { const color = tagColorClasses[i % tagColorClasses.length]; return ( #{t} ); })}
    )} {excerpt && (

    {excerpt}

    )}
  • ); }