Packages
moon
2.78.0
2.90.5
retired
2.90.4
2.90.3
2.90.2
2.90.1
2.90.0
2.89.4
2.89.1
2.89.0
2.88.0
2.87.11
2.87.10
2.87.9
2.87.8
2.87.7
2.87.6
2.87.5
2.87.4
2.87.3
2.87.2
2.87.1
2.87.0
2.86.1
2.86.0
2.85.1
2.85.0
2.84.0
2.83.0
2.82.0
2.81.4
2.81.3
2.81.2
2.81.1
2.81.0
2.80.2
2.80.1
2.80.0
2.79.13
2.79.12
2.79.11
2.79.10
2.79.9
2.79.8
2.79.7
2.79.6
2.79.5
2.79.4
2.79.3
2.79.2
2.79.1
2.79.0
2.78.4
2.78.3
2.78.2
2.78.1
2.78.0
2.77.0
2.76.5
2.76.4
2.76.3
2.76.2
2.76.1
2.76.0
2.75.0
2.74.1
2.74.0
2.73.8
2.73.7
2.73.6
2.73.5
2.73.4
2.73.3
2.73.2
2.73.1
2.73.0
2.72.5
2.72.4
2.72.3
2.72.2
2.72.1
2.72.0
2.71.1
2.71.0
2.70.0
2.69.2
2.69.1
2.69.0
2.68.11
2.68.10
Components-based design system written in elixir
Current section
Files
Jump to
Current section
Files
lib/moon/components/icon_button.ex
# Please do not use this. Use Button instead.
defmodule Moon.Components.IconButton do
@moduledoc false
use Moon.StatelessComponent
alias Moon.Icon
prop(id, :string, default: nil)
prop(icon_name, :string, required: true)
prop(icon_size, :string, default: "1rem")
prop(class, :string)
prop(title, :string)
prop(height, :integer, default: 10)
prop(width, :integer, default: 10)
prop(text_color, :string, default: "text-trunks")
prop(hover_bg_color, :string, default: "bg-hit-120")
prop(click, :event)
prop(value_name, :string)
prop(value, :any)
prop(type, :string, values!: ["button", "reset", "submit"], default: "submit")
def render(assigns) do
~F"""
<button
{=@id}
class={"h-#{@height} w-#{@width} rounded flex items-center justify-center hover:text-bulma #{@text_color} hover:#{@hover_bg_color} #{@class}"}
title={@title}
:on-click={@click}
{...phx_val_tag(@value_name, @value)}
type={@type}
>
<Icon name={@icon_name} font_size={@icon_size} />
</button>
"""
end
def phx_val_tag(nil, _), do: []
def phx_val_tag(name, value) do
# credo:disable-for-next-line Credo.Check.Warning.UnsafeToAtom
key = String.to_atom("phx-value-#{name}")
[{key, value}]
end
end