# `Cringe`
[🔗](https://github.com/elixir-vibe/cringe/blob/v0.1.0/lib/cringe.ex#L1)

OTP-native terminal UI toolkit for Elixir.

Cringe builds terminal documents from plain Elixir data and renders them into
terminal frames. The API is intentionally small while the package is early.

# `box`
*macro* 

# `column`
*macro* 

# `frame`

```elixir
@spec frame(Cringe.Document.t(), Cringe.Renderer.render_opts()) :: Cringe.Frame.t()
```

Renders a terminal document to a frame.

# `render`

```elixir
@spec render(Cringe.Document.t(), Cringe.Renderer.render_opts()) :: String.t()
```

Renders a terminal document to a string.

    iex> Cringe.text("hello") |> Cringe.render(width: 3)
    "hel"

# `row`
*macro* 

# `run`

```elixir
@spec run(
  module(),
  keyword()
) :: GenServer.on_start()
```

Starts a supervised Cringe runtime.

# `text`

```elixir
@spec text(
  IO.chardata(),
  keyword()
) :: Cringe.Document.Text.t()
```

Builds a text node.

    iex> Cringe.text("hello")
    %Cringe.Document.Text{content: "hello", opts: []}

---

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