defmodule RiverConnectWeb.Components.UI.Menu do @moduledoc """ Implement menu components """ use RiverConnectWeb.Components.UI, :component @doc """ Render menu ## Examples: <.menu> <.menu_label>Account <.menu_separator /> <.menu_group> <.menu_item> Profile <.menu_shortcut>⌘P <.menu_item> Billing <.menu_shortcut>⌘B <.menu_item> Settings <.menu_shortcut>⌘S """ attr :class, :string, default: "top-0 left-full" slot :inner_block, required: true attr :rest, :global def menu(assigns) do ~H"""
{render_slot(@inner_block)}
""" end attr :class, :string, default: nil attr :disabled, :boolean, default: false slot :inner_block, required: true attr :rest, :global def menu_item(assigns) do ~H"""
@disabled}} {@rest} > {render_slot(@inner_block)}
""" end attr :class, :string, default: nil attr :inset, :boolean, default: false slot :inner_block, required: true attr :rest, :global def menu_label(assigns) do ~H"""
{render_slot(@inner_block)}
""" end attr :class, :string, default: nil slot :inner_block def menu_separator(assigns) do ~H""" """ end attr :class, :string, default: nil slot :inner_block, required: true attr :rest, :global def menu_shortcut(assigns) do ~H""" {render_slot(@inner_block)} """ end attr :class, :string, default: nil slot :inner_block, required: true attr :rest, :global def menu_group(assigns) do ~H"""
{render_slot(@inner_block)}
""" end end