# `Jido.Chat.Modal.Element`
[🔗](https://github.com/agentjido/jido_chat/blob/v1.0.0/lib/jido/chat/modal/element.ex#L1)

Canonical modal element used by `Jido.Chat.Modal`.

# `input`

```elixir
@type input() :: t() | map()
```

# `t`

```elixir
@type t() :: %Jido.Chat.Modal.Element{
  help_text: nil | nil | binary(),
  id: binary(),
  kind: :text_input | :select | :radio_select | :select_option,
  label: nil | nil | binary(),
  max_length: nil | nil | integer(),
  metadata: map(),
  min_length: nil | nil | integer(),
  multiline: boolean(),
  options: [any()],
  placeholder: nil | nil | binary(),
  required: boolean(),
  value: nil | nil | binary()
}
```

# `from_map`

```elixir
@spec from_map(map()) :: t()
```

Builds a modal element from serialized data.

# `new`

```elixir
@spec new(t() | map()) :: t()
```

Creates a canonical modal element.

# `normalize`

```elixir
@spec normalize(input()) :: t()
```

Normalizes modal element input.

# `schema`

Returns the schema for modal elements.

# `to_map`

```elixir
@spec to_map(t()) :: map()
```

Serializes the modal element into a plain map with a type marker.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
