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