defmodule Moon.Components.Avatar do @moduledoc false use Moon.StatelessComponent alias Moon.Icon alias Moon.Components.Avatar.StatusOrigin prop(image_url, :string) prop(name, :string) prop(color, :css_class, default: "text-bulma") prop(bg_color, :css_class, default: "bg-goku") prop(is_uppercase, :boolean, default: true) prop(size, :string, default: "md", values: ~w(xs sm md lg xl 2xl)) prop(class, :css_class) prop(is_status_active, :boolean, default: false) prop(status_origin, :struct, default: %StatusOrigin{vertical: "bottom", horizontal: "right"}) prop(is_rounded, :boolean, default: false) def style(assigns) do "background-image: url(#{assigns.image_url});" end def render(assigns) do ~F"""
{@name}
""" end defp set_icon_dimensions(size) do cond do size == "xs" -> "w-4 h-4" size == "2xl" -> "w-8 h-8" true -> "w-6 h-6" end end defp set_border_radius(size, is_rounded) do cond do is_rounded -> "rounded-full" size == "xs" -> "rounded-moon-i-xs" size == "2xl" -> "rounded-moon-i-md" true -> "rounded-moon-i-sm" end end end