index.tsx 928 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. 'use client'
  2. import cn from 'classnames'
  3. type AvatarProps = {
  4. name: string
  5. avatar?: string
  6. size?: number
  7. className?: string
  8. textClassName?: string
  9. }
  10. const Avatar = ({
  11. name,
  12. avatar,
  13. size = 30,
  14. className,
  15. textClassName,
  16. }: AvatarProps) => {
  17. const avatarClassName = 'shrink-0 flex items-center rounded-full bg-primary-600'
  18. const style = { width: `${size}px`, height: `${size}px`, fontSize: `${size}px`, lineHeight: `${size}px` }
  19. if (avatar) {
  20. return (
  21. <img
  22. className={cn(avatarClassName, className)}
  23. style={style}
  24. alt={name}
  25. src={avatar}
  26. />
  27. )
  28. }
  29. return (
  30. <div
  31. className={cn(avatarClassName, className)}
  32. style={style}
  33. >
  34. <div
  35. className={cn(textClassName, 'text-center text-white scale-[0.4]')}
  36. style={style}
  37. >
  38. {name[0].toLocaleUpperCase()}
  39. </div>
  40. </div>
  41. )
  42. }
  43. export default Avatar