# `AshUi.RenderTree`
[🔗](https://github.com/hyperbob-labs/ash_ui/blob/main/lib/ash_ui/render_tree.ex#L1)

Adapter-neutral rendered output produced from a semantic view tree.

Structure and paint are strictly split (DESIGN.md §9): this lowering emits only
bare `part` attributes and ARIA-first state attributes. It applies no theme —
there are no part→class rules, no theme assets, no `is-<state>` classes.
Served DOM carries no class attributes.

# `t`

```elixir
@type t() ::
  AshUi.RenderTree.Element.t()
  | AshUi.RenderTree.Text.t()
  | AshUi.RenderTree.Fragment.t()
  | AshUi.RenderTree.Portal.t()
```

# `element`

```elixir
@spec element(atom() | nil, map(), [t()], keyword()) :: AshUi.RenderTree.Element.t()
```

# `fragment`

```elixir
@spec fragment([t()], keyword()) :: AshUi.RenderTree.Fragment.t()
```

# `portal`

```elixir
@spec portal(term(), [t()], keyword()) :: AshUi.RenderTree.Portal.t()
```

# `render`

```elixir
@spec render(map() | nil, keyword()) :: {:ok, t()} | {:error, term()}
```

# `text`

```elixir
@spec text(term(), keyword()) :: AshUi.RenderTree.Text.t()
```

---

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