lib/live_view_native_swift_ui/modifiers/lists/badge.ex

defmodule LiveViewNativeSwiftUi.Modifiers.Badge do
  use LiveViewNativePlatform.Modifier

  alias LiveViewNativeSwiftUi.Types.KeyName

  modifier_schema "badge" do
    field :content, KeyName
    field :label, :string
    field :count, :integer
  end

  def params(label) when is_binary(label), do: [label: label]
  def params(count) when is_number(count), do: [count: count]
  def params(params) do
    with {:ok, _} <- KeyName.cast(params) do
      [content: params]
    else
      _ ->
        params
    end
  end
end