defmodule Moon.Design.CircularProgress do @moduledoc false use Moon.StatelessComponent prop(bg_color, :css_class, default: "stroke-trunks/[.24]") prop(progress_color, :css_class, default: "stroke-piccolo") prop(size, :string, values: ["2xs", "xs", "sm", "md", "lg"], default: "md") prop(value, :decimal, default: 0) prop(class, :css_class) prop(testid, :string) prop(id, :string) def render(assigns) do ~F""" """ end def get_circular_size(size) do case size do "2xs" -> "1rem" "xs" -> "1.5rem" "sm" -> "2rem" "md" -> "2.5rem" "lg" -> "3rem" end end defp get_d() do """ M #{viewbox_center_x()},#{viewbox_center_y()} m 0,-#{path_radius()} a #{path_radius()},#{path_radius()} 0 1 1 0,#{2 * path_radius()} a #{path_radius()},#{path_radius()} 0 1 1 0,-#{2 * path_radius()} """ end defp viewbox_width(), do: 100 defp viewbox_height(), do: 100 defp viewbox_center_x(), do: 50 defp viewbox_center_y(), do: 50 defp path_radius(), do: (viewbox_height() - 8) / 2 defp circumference(), do: pi() * 2 * path_radius() defp gaplength(value), do: (100 - value) * circumference() / 100 defp pi(), do: 3.14159 end