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"""
{render_slot(@inner_block)}
"""
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