defmodule PetalComponents.Loading do use Phoenix.Component import PetalComponents.Helpers # prop size, :string, values: ["sm", "md", "lg"] # prop class, :string, default: "" # prop show, :boolean, default: true def spinner(assigns) do assigns = assigns |> assign_new(:classes, fn -> get_spinner_classes(assigns) end) |> assign_rest(~w(classes size class show)a) ~H""" """ end defp get_spinner_classes(assigns) do base_classes = "animate-spin" custom_classes = assigns[:class] show_class = if assigns[:show] == false, do: "hidden", else: "" size_classes = assigns[:size_class] || get_size_classes(assigns[:size]) build_class([base_classes, custom_classes, show_class, size_classes]) end defp get_size_classes("sm"), do: "h-5 w-5" defp get_size_classes("md"), do: "h-8 w-8" defp get_size_classes("lg"), do: "h-16 w-16" defp get_size_classes(_), do: "h-8 w-8" end