# `Jido.Chat.Card.Component`
[🔗](https://github.com/agentjido/jido_chat/blob/v1.2.0/lib/jido/chat/card/component.ex#L1)

Canonical card component used by `Jido.Chat.Card`.

Validation enforces portable semantic limits, such as positive page sizes.
Provider count and text limits belong to each adapter renderer.

# `input`

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

# `t`

```elixir
@type t() :: %Jido.Chat.Card.Component{
  alt_text: nil | nil | binary(),
  caption: nil | nil | binary(),
  categories: [any()],
  columns: [any()],
  data: [any()],
  disabled: boolean(),
  fallback_text: nil | nil | binary(),
  id: nil | nil | binary(),
  image_url: nil | nil | binary(),
  items: [any()],
  kind:
    :text
    | :section
    | :fields
    | :field
    | :button
    | :link_button
    | :link
    | :actions
    | :select
    | :select_option
    | :radio_select
    | :external_select
    | :table
    | :pie_chart
    | :bar_chart
    | :area_chart
    | :line_chart
    | :option_group
    | :image
    | :divider,
  label: nil | nil | binary(),
  markdown: nil | nil | any(),
  metadata: map(),
  min_query_length: nil | nil | integer(),
  option_groups: [any()],
  options: [any()],
  options_source: nil | nil | :static | :external | :dynamic,
  page_size: nil | nil | integer(),
  rows: [any()],
  series: [any()],
  style: nil | nil | binary(),
  text: nil | nil | binary(),
  timeout_ms: nil | nil | integer(),
  title: nil | nil | binary(),
  url: nil | nil | binary(),
  value: nil | nil | binary()
}
```

# `from_map`

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

Builds a component from serialized data.

# `new`

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

Creates a canonical card component.

# `normalize`

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

Normalizes component input.

# `schema`

Returns the schema for a card component.

# `to_map`

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

Serializes the component into a plain map with a type marker.

---

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