defmodule MoonBackofficeWeb.Subbar do
use Phoenix.Component
import Customizations.Subbar
import MoonBackofficeWeb.CoreComponents, only: [icon: 1]
attr :parameters, :list, required: true
defp list_item(%{parameters: %{active: true}} = assigns) do
%{ class: item_class, icon: %{ image: icon, class: icon_class }} = pick_outfit(:active_item)
assigns = assign(assigns, :item_class, item_class)
|> assign(icon_class: icon_class)
|> assign(icon: icon)
~H"""
<.icon name={assigns.icon} class={assigns.icon_class} />
<%= @parameters.name %>
"""
end
defp list_item(assigns) do
%{ class: item_class, anchor: anchor_class, icon: %{ image: icon, class: icon_class }} = pick_outfit(:item)
assigns = assign(assigns, :item_class, item_class)
|> assign(icon_class: icon_class)
|> assign(icon: icon)
|> assign(anchor_class: anchor_class)
~H"""
<.icon name={assigns.icon} class={assigns.icon_class} />
<%= @parameters.name %>
"""
end
attr :parameters, :list, required: true
defp subsection(assigns) do
%{ class: header_class, icon: %{ image: icon, class: icon_class }, subclass: list_class } = pick_outfit(:subsection)
assigns = assign(assigns, :header_class, header_class)
|> assign(icon_class: icon_class)
|> assign(icon: icon)
|> assign(list_class: list_class)
~H"""
<%= for item <- @parameters.items do %>
<.list_item parameters={item} />
<% end %>
"""
end
attr :items, :list, required: true
def subbar(assigns) do
%{ class: class } = pick_outfit(:list)
assigns = assign(assigns, :class, class)
~H"""
<%= for sub_section <- @items do %>
-
<.subsection parameters={sub_section} />
<% end %>
"""
end
end