lib/live_view_native_swift_ui/types/key_equivalent.ex

defmodule LiveViewNativeSwiftUi.Types.KeyEquivalent do
  use LiveViewNativePlatform.Modifier.Type
  def type, do: :string

  @keys [
    :up_arrow,
    :down_arrow,
    :left_arrow,
    :right_arrow,
    :clear,
    :delete,
    :end,
    :escape,
    :home,
    :page_up,
    :page_down,
    :return,
    :space,
    :tab
  ]

  def cast(value) when is_atom(value) and value in @keys, do: {:ok, Atom.to_string(value)}
  def cast(value) when is_binary(value) and byte_size(value) == 1, do: {:ok, value}
  def cast(value) when is_list(value) and length(value) == 1, do: {:ok, to_string(value)}
  def cast(_), do: :error
end