defmodule LiveViewUI.Accordion do @moduledoc """ A simple accordion component for dynamically displaying collapsible content panels. ## Example Usage Here is a basic example of setting up an accordion with two items: ```elixir Accordion Item 1

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam nec purus nec nunc.

Accordion Item 2

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam nec purus nec nunc.

``` This structure allows you to toggle visibility of each content panel, providing a streamlined user experience. """ use Phoenix.Component import LiveViewUI.Helper attr :multiple, :boolean, default: false attr :class, :any, default: nil attr :rest, :global slot :inner_block, required: true def root(assigns) do ~H"""
<%= render_slot(@inner_block) %>
""" end attr :id, :string, required: true attr :active, :boolean, default: false attr :disabled, :boolean, default: false attr :class, :any, default: nil attr :rest, :global slot :inner_block, required: true def item(assigns) do ~H"""
<%= render_slot(@inner_block) %>
""" end attr :class, :any, default: nil attr :rest, :global slot :inner_block, required: true def trigger(assigns) do ~H"""
""" end attr :active, :boolean, default: false attr :class, :any, default: nil attr :rest, :global slot :inner_block, required: true def content(assigns) do ~H"""
<%= render_slot(@inner_block) %>
""" end end