# `Toddy.Iced.Widget.Themer`
[🔗](https://github.com/toddy-ui/toddy-elixir/blob/v0.3.0/lib/toddy/iced/widget/themer.ex#L1)

Per-subtree theme override -- applies a different theme to child widgets.

## Props

- `theme` -- a built-in theme atom (e.g. `:dark`, `:nord`) or a custom
  palette map. See `Toddy.Iced.Theme`.
- `a11y` (map) -- accessibility overrides. See `Toddy.Iced.A11y`.

# `t`

```elixir
@type t() :: %Toddy.Iced.Widget.Themer{
  a11y: Toddy.Iced.A11y.t() | nil,
  children: [Toddy.Iced.ui_node() | struct()],
  id: String.t(),
  theme: Toddy.Iced.Theme.t()
}
```

# `a11y`

```elixir
@spec a11y(themer :: t(), a11y :: Toddy.Iced.A11y.t()) :: t()
```

Sets accessibility annotations.

# `build`

```elixir
@spec build(themer :: t()) :: Toddy.Iced.ui_node()
```

Converts this themer struct to a `ui_node()` map via the `Toddy.Iced.Widget` protocol.

# `extend`

```elixir
@spec extend(themer :: t(), children :: [Toddy.Iced.ui_node() | struct()]) :: t()
```

Appends multiple children to the themer.

# `new`

```elixir
@spec new(id :: String.t(), theme :: Toddy.Iced.Theme.t()) :: t()
```

Creates a new themer struct with the given theme.

# `push`

```elixir
@spec push(themer :: t(), child :: Toddy.Iced.ui_node() | struct()) :: t()
```

Appends a child to the themer.

---

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