class Lookbook::Nav::Item::Component

def alpine_component

def alpine_component
  "navItemComponent"
end

def alpine_data

def alpine_data
  alpine_encode({
    id: @item.id,
    matchers: item.is_a?(Lookbook::Collection) ? nil : item.matchers
  })
end

def children

def children
  @children ||= if collection? && !collapsed?
    item.non_empty_items.map do |item|
      lookbook_render Lookbook::Nav::Item::Component.new item,
        nav_id: @nav_id,
        depth: (@depth + 1),
        collapse_singles: @collapse_singles
    end
  else
    []
  end
end

def children?

def children?
  children.any? if collection? && !collapsed?
end

def collapsed?

def collapsed?
  @collapse_singles == true && collection? && @item.collapsible? && @item.one?
end

def collection?

def collection?
  @item.is_a? Lookbook::Collection
end

def href

def href
  if collapsed?
    item.url_path
  elsif !collection?
    item.url_path
  end
end

def id

def id
  "#{@nav_id}-#{@item.id}"
end

def initialize(

def initialize(
  item,
  nav_id:,
  depth: 1,
  collapse_singles: false,
  **html_attrs
)
  @nav_id = nav_id
  @item = item
  @depth = depth
  @collapse_singles = collapse_singles
  super(**html_attrs)
end

def item

def item
  collapsed? ? @item.first : @item
end

def left_pad

def left_pad
  ((@depth - 1) * 12) + 24
end

def nav_icon

def nav_icon
  ICONS[@item.type] || :file
end