defmodule Moon.Parts.Header do @moduledoc false use Moon.StatelessComponent @doc "Id for DOM element" prop(id, :string) @doc "Data-testid attribute for DOM element" prop(testid, :string) @doc "Additional Tailwind classes" prop(class, :css_class) @doc "Title slot" slot(title, required: true) @doc "Descrption slot" slot(description) @doc "Breadcrumbs slot" slot(breadcrumbs) @doc "ButtonGroup slot" slot(button_group) @doc "Left button slot for mobile view" slot(left_button) @doc "Right button slot for mobile view" slot(right_button) def render(assigns) do ~F"""
{#if slot_assigned?(:description)}
<#slot {@breadcrumbs} /> <#slot {@left_button} />
<#slot {@title} /> <#slot {@description} />
<#slot {@button_group} /> <#slot {@right_button} />
{#else}
<#slot {@breadcrumbs} /> <#slot {@left_button} />
<#slot {@title} context_put={ header_class: "text-moon-24 lg:text-moon-32", title_only: slot_assigned?(:title) && !slot_assigned?(:description) } />
<#slot {@right_button} />
<#slot {@button_group} /> {/if}
""" end end