# frozen_string_literal: true

class AvatarComponent < ViewComponent::Base
  ALLOWED_SIZES = %w[xs sm md lg xl xxl].freeze

  def initialize(user:, size:, classes: [])
    @user = user
    @size = size if ALLOWED_SIZES.include? size
    @classes = classes
  end

  private

  def size_to_version(size)
    case size
    when "xs", "sm"
      :small
    when "md", "lg"
      :medium
    when "xl", "xxl"
      :large
    end
  end

  def alt_text = "@#{@user.screen_name}"

  def avatar_classes = @classes.unshift("avatar-#{@size}")

  def avatar_image = @user.profile_picture.url(size_to_version(@size))
end