# harlock v0.2.0 - API Reference

## Modules

- [Harlock.Element](Harlock.Element.md): A node in the view tree returned by an app's `view/1`. Plain struct, no
macros — built via the constructor functions in `Harlock.Elements`
(`text/2`, `vbox/1`, `box/1`, etc.).
- [Harlock.Layout](Harlock.Layout.md): Ratatui-style constraint layout solver.
- [Harlock.Layout.Rect](Harlock.Layout.Rect.md): A rectangle in cell coordinates, returned by `Harlock.Layout.split/3`.
- [Harlock.Render.Buffer](Harlock.Render.Buffer.md): A 2D grid of cells of fixed dimensions, returned by `Harlock.Test.cells/1`.
- [Harlock.Render.Cell](Harlock.Render.Cell.md): A single terminal cell.
- [Harlock.Terminal.Termios](Harlock.Terminal.Termios.md): POSIX termios access for `/dev/tty` via a small NIF.

- Apps
  - [Harlock](Harlock.md): Harlock — a pure-Elixir TUI framework for Unix terminals.
  - [Harlock.App](Harlock.App.md): Behaviour for Harlock applications.
  - [Harlock.Cmd](Harlock.Cmd.md): Side-effect descriptors returned from `init/1` and `update/2`.
  - [Harlock.Element.Column](Harlock.Element.Column.md): Column spec for `Harlock.Elements.table/1`, built via
`Harlock.Elements.column/1`
  - [Harlock.Elements](Harlock.Elements.md): View-tree constructors. Auto-imported into apps via `use Harlock.App`,
so most apps use `text(...)`, `vbox(...)`, `box(...)` etc. directly
without qualification.
  - [Harlock.Focus](Harlock.Focus.md): Read access to focus state during `view/1` and `update/2` callbacks.
  - [Harlock.Sub](Harlock.Sub.md): Subscriptions — long-running sources of events that the runtime starts and
stops as the model changes.
  - [Harlock.TextBuffer](Harlock.TextBuffer.md): Pure helpers for editing a `(value, cursor)` pair.
  - [Harlock.Theme](Harlock.Theme.md): Visual theme tokens used by the renderer.

- Testing
  - [Harlock.Test](Harlock.Test.md): Test harness for Harlock apps.

- Rendering
  - [Harlock.Render.Style](Harlock.Render.Style.md): Visual attributes for a rendered cell.
  - [Harlock.Width](Harlock.Width.md): Display-column width of strings and graphemes for terminal rendering.

