# `Dala.List`
[🔗](https://github.com/manhvu/dala/blob/main/lib/dala/list.ex#L1)

Public API for list operations.

This module delegates to `Dala.Ui.List` for list-related functionality.

# `default_renderer`

```elixir
@spec default_renderer(term()) :: map()
```

The default item renderer.

Handles binaries, maps with `:label`/`:text`, and falls back to `inspect/1`
for anything else.

# `expand`

```elixir
@spec expand(map(), map(), pid()) :: map()
```

Walk a render tree and expand all `type: :list` nodes into `lazy_list` nodes.

Called internally by `Dala.Screen` before passing the tree to `Dala.Ui.Renderer`.
`renderers` is the `list_renderers` map from `socket.__dala__`. `pid` is the
screen process (used as the tap target for row-select events).

# `put_renderer`

```elixir
@spec put_renderer(Dala.Socket.t(), atom(), (term() -&gt; map())) :: Dala.Socket.t()
```

Register a custom item renderer for a list.

`id` must match the `:id` prop on the `type: :list` node.
`renderer` is a 1-arity function that receives one item and returns a node map.

Call this from `mount/3` or `handle_info/2` — it is stored in `socket.__dala__`
and picked up at render time.

---

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