defmodule SigmaKit.Components.SideNav do use Phoenix.LiveComponent import SigmaKit.Components.Icons, only: [icon: 1] slot :inner_block, required: true slot :logo def sidenav(assigns) do ~H"""
{render_slot(@logo)}
{render_slot(@inner_block)}
""" end attr :title, :string, required: true slot :inner_block, required: true def sidenav_section(assigns) do ~H"""
{@title}
{render_slot(@inner_block)}
""" end attr :title, :string, required: true attr :icon, :string, required: true attr :to, :string, required: true attr :active, :boolean, default: false attr :new, :boolean, default: false def sidenav_item(assigns) when assigns.new == false do ~H""" <.link navigate={@to} class={[ "flex items-center gap-2 py-2 px-3 text-sm cursor-pointer rounded font-medium transition-all duration-300 group", !@active && "hover:bg-gray-100", @active && "bg-primary-700" ]} > <.icon :if={assigns[:icon]} name={@icon} class={[ "w-4 h-4 transition-colors duration-900 group-hover:transition-colors", @active && "text-primary-100", !@active && "text-primary-500 group-hover:text-secondary-500 " ]} />
{@title}
""" end def sidenav_item(assigns) when assigns.new == true do ~H""" <.icon :if={assigns[:icon]} name={@icon} class="w-4 h-4 text-zinc-400 group-hover:text-primary-500 transition-colors duration-900 group-hover:transition-colors " />
{@title}
""" end end