defmodule Moon.Parts.Wizard.Panels do
@moduledoc "Almost copy of Moon.Design.Tabs.Panels except few classes"
use Moon.StatelessComponent, slot: "content"
import Moon.Helpers.MakeList
@doc "Id attribute for DOM element"
prop(id, :string)
@doc "Additional Tailwind classes for container"
prop(class, :css_class)
@doc "HTML data-testid attribute for container"
prop(testid, :string)
@doc "Will be got from Tabs in most cases"
prop(selected, :integer, from_context: :selected)
@doc "Panels slot"
slot(panels, required: true)
@doc "Additional buttons etc."
slot(default)
def render(assigns) do
~F"""
<div
role="tabpanel"
tabindex={@selected}
class={merge(["px-4 md:px-8 pt-6 md:pt-10 pb-6 pb-28 w-3/4 md:w-2/3 bg-goku rounded-moon-s-lg", @class])}
{=@id}
data-testid={@testid}
>
<#slot {Enum.at(make_list(@panels), @selected)} />
</div>
"""
end
end