# `ExRatatui.Widgets.List`
[🔗](https://github.com/mcass19/ex_ratatui/blob/v0.8.2/lib/ex_ratatui/widgets/list.ex#L1)

A selectable list widget.

## Fields

  * `:items` - list of items to display. Each item accepts any
    `ExRatatui.Text`-coercible value: a `String.t()`, a `%ExRatatui.Text.Span{}`,
    a `%ExRatatui.Text.Line{}`, a `%ExRatatui.Text{}`, or a list of spans/lines.
  * `:style` - `%ExRatatui.Style{}` for non-selected items
  * `:block` - optional `%ExRatatui.Widgets.Block{}` container
  * `:highlight_style` - `%ExRatatui.Style{}` for the selected item
  * `:highlight_symbol` - string prefix for the selected item (e.g., `">> "`)
  * `:selected` - zero-based index of the selected item, or `nil` for no selection

## Examples

    iex> %ExRatatui.Widgets.List{items: ["Alpha", "Beta", "Gamma"], selected: 0}
    %ExRatatui.Widgets.List{
      items: ["Alpha", "Beta", "Gamma"],
      style: %ExRatatui.Style{},
      block: nil,
      highlight_style: %ExRatatui.Style{},
      highlight_symbol: nil,
      selected: 0
    }

# `item`

```elixir
@type item() ::
  String.t()
  | ExRatatui.Text.Span.t()
  | ExRatatui.Text.Line.t()
  | ExRatatui.Text.t()
  | [ExRatatui.Text.Span.t()]
  | [ExRatatui.Text.Line.t()]
```

# `t`

```elixir
@type t() :: %ExRatatui.Widgets.List{
  block: ExRatatui.Widgets.Block.t() | nil,
  highlight_style: ExRatatui.Style.t(),
  highlight_symbol: String.t() | nil,
  items: [item()],
  selected: non_neg_integer() | nil,
  style: ExRatatui.Style.t()
}
```

---

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