defmodule Paleta.Components.Breadcrumb do
use Phoenix.Component
attr(:title, :string, required: true)
attr(:steps, :list, required: true)
attr(:border, :boolean, default: false)
slot(:actions, doc: "Add action")
def breadcrumb(assigns) do
{last, steps} =
assigns[:steps]
|> List.pop_at(-1)
assigns
|> assign(:last, last)
|> assign(:steps, steps)
|> assign(:border_class, border(assigns.border))
|> render()
end
defp render(assigns) do
~H"""
<%= @title %>
-
<.link
:if={step.path}
class={"#{@border_class} flex items-center space-x-1.5 text-primary transition-colors hover:text-primary-focus dark:text-accent-light dark:hover:text-accent"}
navigate={step.path}
>
<%= step.label %>
<%= step.label %>
-
<%= @last.label %>
<%= render_slot(@actions) %>
"""
end
defp border(true),
do:
"flex items-center space-x-1.5 rounded-lg border border-slate-200 py-1 px-1.5 leading-none "
defp border(false), do: ""
end