# Atui v0.3.0 - Table of Contents

> A terminal UI toolkit for Elixir, in the shape of Phoenix LiveView: stateful views, tiled windows, styled cells and an IO loop that only writes when the frame changes.

## Pages

- [Atui](readme.md)
- [Changelog](changelog.md)
- [LICENSE](license.md)

## Modules

- Runtime
  - [Atui](Atui.md): A terminal UI toolkit for Elixir, in the shape of Phoenix LiveView.
  - [Atui.Fetch](Atui.Fetch.md): Runs a slow thing off the UI's process and sends the answer back to a view.
  - [Atui.Runtime](Atui.Runtime.md): The main IO loop: owns the terminal, the view stack and every view's timer.

- Views
  - [Atui.Panes](Atui.Panes.md): A tiling window manager a view can hold in its own state.
  - [Atui.View](Atui.View.md): The behaviour every screen implements — the LiveView half of Atui.

- Widgets
  - [Atui.TextInput](Atui.TextInput.md): A single-line text field a view holds in its own state.

- Drawing
  - [Atui.Layout](Atui.Layout.md): Splits a rect into non-overlapping rects.
  - [Atui.Rect](Atui.Rect.md): A rectangular region of the terminal, in cell coordinates.
  - [Atui.Screen](Atui.Screen.md): A fixed-size grid of terminal cells that views draw into.
  - [Atui.Style](Atui.Style.md): Colour and text attributes for a cell.
  - [Atui.Text](Atui.Text.md): The things a terminal UI does to a string that does not fit, and the one it
does to a string it did not write.

- Terminal
  - [Atui.Input](Atui.Input.md): Reads the terminal and sends decoded keys to a target process.
  - [Atui.Key](Atui.Key.md): Decodes a raw byte stream from the terminal into key events.
  - [Atui.Terminal](Atui.Terminal.md): Terminal setup, teardown and the handful of ANSI sequences the runtime needs.

