# A2UI v0.3.0 - Table of Contents

> Elixir renderer for the A2UI v0.9 protocol — server-driven UI over Phoenix LiveView

## Pages

- [A2UI](readme.md)
- [Changelog](changelog.md)
- [Contributing](contributing.md)
- [A2UI Elixir — Roadmap](spec.md)
- [LICENSE](license.md)

## Modules

- [A2UI.Demo.Agent](A2UI.Demo.Agent.md): Demo restaurant booking agent.
- [A2UI.Demo.DemoLive](A2UI.Demo.DemoLive.md)
- [A2UI.Demo.Endpoint](A2UI.Demo.Endpoint.md)
- [A2UI.Demo.ErrorHTML](A2UI.Demo.ErrorHTML.md)
- [A2UI.Demo.Layouts](A2UI.Demo.Layouts.md)
- [A2UI.Demo.Router](A2UI.Demo.Router.md)
- [A2UI.Demo.StatusBadge](A2UI.Demo.StatusBadge.md): Custom StatusBadge component demonstrating the pluggable component system.

- Core
  - [A2UI](A2UI.md): A2UI renderer for Phoenix/LiveView.
  - [A2UI.Agent](A2UI.Agent.md): Behaviour and macro for building A2UI agents.
  - [A2UI.Catalog](A2UI.Catalog.md): Compile-time catalog registry for A2UI component type validation.
  - [A2UI.Connection](A2UI.Connection.md): Opaque handle representing a connected client.

- Surface &amp; Rendering
  - [A2UI.Component](A2UI.Component.md): Represents an A2UI component in the adjacency list.
  - [A2UI.ComponentRenderer](A2UI.ComponentRenderer.md): Behaviour and convenience macro for building custom A2UI component renderers.
  - [A2UI.ComponentTree](A2UI.ComponentTree.md): Operations on the A2UI component adjacency list.
  - [A2UI.Surface](A2UI.Surface.md): Represents an A2UI rendering surface.
  - [A2UI.SurfaceManager](A2UI.SurfaceManager.md): Pure functional state manager for A2UI surfaces.

- Protocol
  - [A2UI.Protocol.Message](A2UI.Protocol.Message.md): Union type and dispatcher for A2UI protocol messages.
  - [A2UI.Protocol.Messages.Action](A2UI.Protocol.Messages.Action.md): Represents an action message sent from client to server.

  - [A2UI.Protocol.Messages.CreateSurface](A2UI.Protocol.Messages.CreateSurface.md): Represents a `createSurface` message from the A2UI protocol.

  - [A2UI.Protocol.Messages.DeleteSurface](A2UI.Protocol.Messages.DeleteSurface.md): Represents a `deleteSurface` message from the A2UI protocol.

  - [A2UI.Protocol.Messages.Error](A2UI.Protocol.Messages.Error.md): Represents an error message sent from client to server.
  - [A2UI.Protocol.Messages.UpdateComponents](A2UI.Protocol.Messages.UpdateComponents.md): Represents an `updateComponents` message from the A2UI protocol.

  - [A2UI.Protocol.Messages.UpdateDataModel](A2UI.Protocol.Messages.UpdateDataModel.md): Represents an `updateDataModel` message from the A2UI protocol.

  - [A2UI.Protocol.Parser](A2UI.Protocol.Parser.md): Parses A2UI JSONL streams into protocol message structs.

- Components
  - [A2UI.Components.AudioPlayer](A2UI.Components.AudioPlayer.md): Renders an A2UI AudioPlayer component.

  - [A2UI.Components.Button](A2UI.Components.Button.md): Renders an A2UI Button component.
  - [A2UI.Components.Card](A2UI.Components.Card.md): Renders an A2UI Card component — a container with a single child.

  - [A2UI.Components.CheckBox](A2UI.Components.CheckBox.md): Renders an A2UI CheckBox component.

  - [A2UI.Components.ChoicePicker](A2UI.Components.ChoicePicker.md): Renders an A2UI ChoicePicker component.
  - [A2UI.Components.Column](A2UI.Components.Column.md): Renders an A2UI Column component — a vertical flex container.

  - [A2UI.Components.DateTimeInput](A2UI.Components.DateTimeInput.md): Renders an A2UI DateTimeInput component.
  - [A2UI.Components.Divider](A2UI.Components.Divider.md): Renders an A2UI Divider component.
  - [A2UI.Components.Icon](A2UI.Components.Icon.md): Renders an A2UI Icon component.
  - [A2UI.Components.Image](A2UI.Components.Image.md): Renders an A2UI Image component.

  - [A2UI.Components.ListComponent](A2UI.Components.ListComponent.md): Renders an A2UI List component.
  - [A2UI.Components.Modal](A2UI.Components.Modal.md): Renders an A2UI Modal component.
  - [A2UI.Components.RenderContext](A2UI.Components.RenderContext.md): Threads rendering state through the component tree.
  - [A2UI.Components.Renderer](A2UI.Components.Renderer.md): Entry point for rendering A2UI surfaces as Phoenix function components.
  - [A2UI.Components.Row](A2UI.Components.Row.md): Renders an A2UI Row component — a horizontal flex container.

  - [A2UI.Components.Slider](A2UI.Components.Slider.md): Renders an A2UI Slider component.

  - [A2UI.Components.Tabs](A2UI.Components.Tabs.md): Renders an A2UI Tabs component.
  - [A2UI.Components.Text](A2UI.Components.Text.md): Renders an A2UI Text component.
  - [A2UI.Components.TextField](A2UI.Components.TextField.md): Renders an A2UI TextField component.
  - [A2UI.Components.Video](A2UI.Components.Video.md): Renders an A2UI Video component.

- Data Model
  - [A2UI.DataModel](A2UI.DataModel.md): JSON document store for A2UI surface data.
  - [A2UI.DataModel.Binding](A2UI.DataModel.Binding.md): Resolves dynamic values in A2UI component props.
  - [A2UI.DataModel.Functions](A2UI.DataModel.Functions.md): Evaluates A2UI client-side function descriptors server-side.
  - [A2UI.DataModel.JsonPointer](A2UI.DataModel.JsonPointer.md): RFC 6901 JSON Pointer implementation.

- LiveView
  - [A2UI.Live](A2UI.Live.md): Macro for integrating A2UI into a Phoenix LiveView.
  - [A2UI.Live.EventHandler](A2UI.Live.EventHandler.md): Pure functions for handling Phoenix LiveView events in A2UI.
  - [A2UI.Live.InitHook](A2UI.Live.InitHook.md): LiveView `on_mount` hook that initializes `@a2ui_surfaces` assign.

- Transport
  - [A2UI.Transport](A2UI.Transport.md): Behaviour for A2UI message transport.
  - [A2UI.Transport.A2A](A2UI.Transport.A2A.md): A2A client transport for A2UI.
  - [A2UI.Transport.Local](A2UI.Transport.Local.md): In-process transport for A2UI.
  - [A2UI.Transport.SSE](A2UI.Transport.SSE.md): SSE transport for A2UI.

- Plug (SSE + JSON-RPC)
  - [A2UI.Plug](A2UI.Plug.md): Plug for serving A2UI agents over HTTP.
  - [A2UI.Plug.ConnectionRegistry](A2UI.Plug.ConnectionRegistry.md): ETS-based registry mapping SSE connection IDs to handler pids.
  - [A2UI.Plug.JSONRPC](A2UI.Plug.JSONRPC.md): JSON-RPC 2.0 handler for A2UI.
  - [A2UI.Plug.SSE](A2UI.Plug.SSE.md): SSE connection handler for A2UI.

- A2A Integration
  - [A2UI.A2A](A2UI.A2A.md): Adapter that exposes an A2UI agent over the A2A protocol.

## Mix Tasks

- [mix a2ui.demo](Mix.Tasks.A2ui.Demo.md): Starts the A2UI demo server.

