defmodule PetalComponents.Loading do use Phoenix.Component # prop size, :string, default: "sm", values: ["button", "sm", "md", "lg"] # prop class, :css_class, default: "" # prop show, :boolean, default: true def spinner(assigns) do ~H""" """ end defp get_spinner_classes(assigns) do base_classes = "animate-spin -ml-1" custom_classes = assigns[:class] || "" show_class = if assigns[:show], do: "", else: "hidden" size_classes = get_size_classes(assigns[:size]) Enum.join( [ base_classes, custom_classes, show_class, size_classes ], " " ) end def get_size_classes("button"), do: "-ml-0.5 mr-2 h-4 w-4" def get_size_classes("sm"), do: "h-5 w-5" def get_size_classes("md"), do: "h-8 w-8" def get_size_classes("lg"), do: "h-16 w-16" def get_size_classes(_), do: "h-8 w-8" end