defmodule Moon.Design.Progress.Pin do @moduledoc false use Moon.StatelessComponent, slot: "pin" @doc "Id of the component" prop(id, :string) @doc "Data-testid attribute value" prop(testid, :string) @doc "Tailwind classes for customization" prop(class, :css_class, from_context: :class) @doc "Will be got from Progress in most cases" prop(size, :css_class, from_context: :size) @doc "Will be got from Progress in most cases" prop(value, :decimal, from_context: :value) def render(assigns) do ~F"""
{"#{round(@value || 0)}%"}
""" end def get_pin_style(size) do case size do "6xs" -> "bottom-[18px] ltr:-right-3 rtl:-left-3 before:w-3 before:h-3 before:-bottom-[25px]" "5xs" -> "bottom-5 ltr:-right-3 rtl:-left-3 before:w-3 before:h-3 before:-bottom-[26px]" "4xs" -> "bottom-6 ltr:-right-3 rtl:-left-3 before:w-3 before:h-3 before:-bottom-7" "3xs" -> "bottom-7 ltr:-right-3 rtl:-left-3 before:w-3 before:h-3 before:-bottom-[30px]" "2xs" -> "bottom-8 ltr:-right-[10px] rtl:-left-[10px] before:w-4 before:h-4 before:-bottom-[34px]" end end end