class Playbook::PbNav::Item

def active_class

def active_class
  active ? "active" : nil
end

def classname

def classname
  if collapsible
    "#{generate_classname('pb_nav_list_kit_item', active_class, highlighted_border_class)} #{generate_classname('pb_collapsible_nav_item', active_class, collapsible_trail_class)} #{font_size_class} #{font_weight_class} pb_nav_list_item_link_collapsible"
  else
    "#{generate_classname('pb_nav_list_kit_item', active_class, highlighted_border_class)} #{font_size_class} #{font_weight_class} pb_nav_list_item_link"
  end
end

def collapsible_icons

def collapsible_icons
  icon_right.present? && icon_right
end

def collapsible_nav_classname

def collapsible_nav_classname
  generate_classname("collapsible_nav_wrapper", active_class, collapsible_trail_class)
end

def collapsible_trail_class

def collapsible_trail_class
  collapsible_trail ? "collapsible_trail" : nil
end

def font_size_class

def font_size_class
  font_size === "small" ? "font_size_small" : "font_size_normal"
end

def font_weight_class

def font_weight_class
  case font_weight
  when "bold"
    "font_bold"
  when "bolder"
    "font_bolder"
  else
    "font_regular"
  end
end

def highlighted_border_class

def highlighted_border_class
  !highlighted_border && active ? "highlighted_border_none" : nil
end

def margin_classes

def margin_classes
  margin_attributes = {
    margin: "m",
    margin_x: "mx",
    margin_y: "my",
    margin_bottom: "mb",
    margin_top: "mt",
    margin_right: "mr",
    margin_left: "ml",
  }
  # rubocop:disable Style/RedundantAssignment
  margin_classes = margin_attributes.map do |attr, class_prefix|
    # rubocop:enable Style/RedundantAssignment
    value = object.public_send(attr)
    " #{class_prefix}_#{value}" if value
  end.compact.join
  margin_classes
end

def spacing_props

def spacing_props
  if collapsible
    if object.margin || object.margin_x || object.margin_y || object.margin_bottom || object.margin_top || object.margin_right || object.margin_left
      # Call the original method
      original_result = super
      # Remove p_value, px_value, py_value, etc. based on the object's properties
      margin_classes_to_remove = []
      margin_classes_to_remove << "m_#{object.margin}" if object.margin
      margin_classes_to_remove << "mx_#{object.margin_x}" if object.margin_x
      margin_classes_to_remove << "my_#{object.margin_y}" if object.margin_y
      margin_classes_to_remove << "mb_#{object.margin_bottom}" if object.margin_bottom
      margin_classes_to_remove << "mt_#{object.margin_top}" if object.margin_top
      margin_classes_to_remove << "mr_#{object.margin_right}" if object.margin_right
      margin_classes_to_remove << "ml_#{object.margin_left}" if object.margin_left
      margin_classes_to_remove.each do |class_to_remove|
        original_result.gsub!(class_to_remove, "")
      end
      original_result.strip
    else
      super
    end
  else
    super
  end
end

def tag

def tag
  link ? "a" : "div"
end