lib/history_web/views/status_view.ex

defmodule HistoryWeb.StatusView do
  use HistoryWeb, :view

  def render("_pill.html", assigns) do
    title = Map.get(assigns, :title, "status")

    ~E"""
    <span class="<%= bg_color(assigns.status) %> <%= text_color(assigns.status) %> py-2 px-4 inline-block rounded-full" title="<%= title %>">
      <%= assigns.status %>
    </span>
    """
  end

  defp bg_color(:enqueued), do: "bg-yellow-50"
  defp bg_color(:error), do: "bg-red-50"
  defp bg_color(:working), do: "bg-purple-50"
  defp bg_color(:not_found), do: "bg-gray-50"
  defp bg_color(:complete), do: "bg-green-50"
  defp bg_color(:canceled), do: "bg-gray-400"

  defp text_color(:enqueued), do: "text-yellow-400"
  defp text_color(:error), do: "text-red-400"
  defp text_color(:working), do: "text-purple-400"
  defp text_color(:not_found), do: "text-gray-400"
  defp text_color(:complete), do: "text-green-400"
  defp text_color(:canceled), do: "text-white"
end