defmodule AlgoraWeb.Components.Avatar do @moduledoc false use Phoenix.Component attr(:src, :string) attr(:alt, :string) attr(:class, :string, default: nil) attr(:rest, :global) def user_avatar(assigns) do ~H""" <.avatar class={@class} {@rest}> <.avatar_fallback class="fallback"> <%= @alt |> String.first() |> String.upcase() %> <.avatar_image src={@src} alt={@alt} /> """ end attr(:class, :string, default: nil) attr(:rest, :global) slot(:inner_block, required: true) def avatar(assigns) do ~H""" <%= render_slot(@inner_block) %> """ end attr(:src, :string) attr(:alt, :string) attr(:class, :string, default: nil) attr(:rest, :global) def avatar_image(assigns) do ~H""" """ end attr(:class, :string, default: nil) attr(:rest, :global) slot(:inner_block, required: false) def avatar_fallback(assigns) do ~H""" <%= render_slot(@inner_block) %> """ end # TODO defp cn(x), do: x end