# frozen_string_literal: true

class SidenavLinkComponent < ViewComponent::Base
  def initialize(name:, level: 1, path:, icon: nil, text_icon: nil,
                 active: false, disabled: false)
    @name = name
    @level = level
    @path = path
    @icon = icon
    @text_icon = text_icon
    @active = active
    @disabled = disabled
    @link_class = class_names_link(path)
    @icon_class = class_names_icon(path)
  end

  def class_names_link(path)
    px = @level == 1 ? "px-4" : "pl-8 pr-4"
    base = "#{px} py-2 group border-l-4 flex items-center text-base font-medium"

    if @active
      "#{base} bg-teal-50 border-teal-500 text-teal-700 hover:bg-teal-50 hover:text-teal-700"
    elsif @disabled
      "#{base} border-transparent text-gray-400 hover:bg-gray-50"
    else
      "#{base} border-transparent text-gray-900 hover:bg-gray-50 hover:text-gray-900"
    end
  end

  def class_names_icon(path)
    if @active
      "text-teal-500 group-hover:text-teal-500 flex-shrink-0 -ml-1 mr-3 h-6 w-6"
    elsif @disabled
      "text-gray-300 group-hover:text-gray-300 flex-shrink-0 -ml-1 mr-3 h-6 w-6"
    else
      "text-gray-400 group-hover:text-gray-500 flex-shrink-0 -ml-1 mr-3 h-6 w-6"
    end
  end
end
