38 lines
1,010 B
TypeScript
38 lines
1,010 B
TypeScript
import Avatar from './avatar'
|
|
import Date from './date'
|
|
import CoverImage from './cover-image'
|
|
import Link from 'next/link'
|
|
import { AuthorType, ImgixType } from 'interfaces'
|
|
|
|
type PostPreviewProps = {
|
|
title: string
|
|
coverImage: ImgixType
|
|
date: string
|
|
excerpt: string
|
|
author: AuthorType
|
|
slug: string
|
|
}
|
|
|
|
const PostPreview = (props: PostPreviewProps) => {
|
|
const { title, coverImage, date, excerpt, author, slug } = props
|
|
|
|
return (
|
|
<div>
|
|
<div className="mb-5">
|
|
<CoverImage slug={slug} title={title} url={coverImage.imgix_url} />
|
|
</div>
|
|
<h3 className="text-3xl mb-3 leading-snug">
|
|
<Link href={`/posts/${slug}`} className="hover:underline">
|
|
{title}
|
|
</Link>
|
|
</h3>
|
|
<div className="text-lg mb-4">
|
|
<Date dateString={date} />
|
|
</div>
|
|
<p className="text-lg leading-relaxed mb-4">{excerpt}</p>
|
|
<Avatar name={author.title} picture={author.metadata.picture.imgix_url} />
|
|
</div>
|
|
)
|
|
}
|
|
|
|
export default PostPreview
|