# 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-600 group-hover:text-teal-600 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