44 lines
794 B
TypeScript
44 lines
794 B
TypeScript
import cn from 'classnames'
|
|
import Link from 'next/link'
|
|
import Image from 'next/image'
|
|
|
|
export type TCoverImage = {
|
|
title: string
|
|
src: string
|
|
slug?: string
|
|
height: number
|
|
width: number
|
|
}
|
|
|
|
const CoverImage: React.FC<TCoverImage> = ({
|
|
title,
|
|
src,
|
|
slug,
|
|
height,
|
|
width,
|
|
}) => {
|
|
const image = (
|
|
<Image
|
|
src={src}
|
|
alt={`Cover Image for ${title}`}
|
|
className={cn('shadow-sm', {
|
|
'hover:shadow-md transition-shadow duration-200': slug,
|
|
})}
|
|
layout="responsive"
|
|
width={width}
|
|
height={height}
|
|
/>
|
|
)
|
|
return (
|
|
<div className="sm:mx-0">
|
|
{slug ? (
|
|
<Link href={`/posts/${slug}`} aria-label={title}>
|
|
{image}
|
|
</Link>
|
|
) : (
|
|
image
|
|
)}
|
|
</div>
|
|
)
|
|
}
|
|
export default CoverImage
|