| 12345678910111213141516171819202122232425262728293031323334 |
- import { User } from 'icons'
- import Image from 'next/image'
- import { ReactNode, useState } from 'react'
- import { cn } from 'ui'
- interface ProfileImageProps {
- alt?: string
- src?: string
- placeholder?: ReactNode
- className?: string
- }
- export const ProfileImage = ({ alt, src, placeholder, className }: ProfileImageProps) => {
- const [hasInvalidImg, setHasInvalidImg] = useState(false)
- return !!src && !hasInvalidImg ? (
- <Image
- alt={alt ?? ''}
- src={src}
- width="24"
- height="24"
- className={cn('aspect-square bg-foreground rounded-full object-cover', className)}
- onError={() => setHasInvalidImg(true)}
- />
- ) : (
- (placeholder ?? (
- <figure
- className={cn('bg-foreground rounded-full flex items-center justify-center', className)}
- >
- <User size={18} strokeWidth={1.5} className="text-background" />
- </figure>
- ))
- )
- }
|