# oszimilian/lltui architecture

> Architecture diagram of the GitHub repository oszimilian/lltui, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/oszimilian/lltui
- Repository: https://github.com/oszimilian/lltui

## Overview

lltui is a callback-driven C terminal UI library: a client configures a context and creates, styles, and prints widgets, which emit terminal escape sequences and characters through the transmit callback. The visible widget implementation covers text, lines, boxes and corners; headers also declare integer and float fields. The tree and excerpts support the core rendering and arena/position layers, but no README or client application is present, and input behavior is not evidenced.

Main entry points: [`src/lltui_widget.c`](https://github.com/oszimilian/lltui/blob/master/src/lltui_widget.c) (Widget API), [`src/lltui_cursor.c`](https://github.com/oszimilian/lltui/blob/master/src/lltui_cursor.c) (Cursor output), [`src/lltui_ctx.c`](https://github.com/oszimilian/lltui/blob/master/src/lltui_ctx.c) (Context API), [`src/lltui_pos.c`](https://github.com/oszimilian/lltui/blob/master/src/lltui_pos.c) (Position geometry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["UI context and widgets"]
  node_context["Context API<br/>[lltui_ctx.c]"]
  node_widgets["Widget API<br/>[lltui_widget.c]"]
  node_widget_types["Widget types<br/>[lltui_widget.h]"]
end

subgraph group_render["Terminal rendering"]
  node_cursor["Cursor output<br/>[lltui_cursor.c]"]
end

subgraph group_core["Runtime support"]
  node_pos["Position geometry<br/>[lltui_pos.c]"]
  node_strings["Number formatting<br/>[lltui_string.c]"]
  node_arena["Widget arena<br/>[lltui_arena.c]"]
end

node_client(("UI client"))
node_tx(("Transmit callback"))

node_client -->|"configures"| node_context
node_client -->|"creates and styles"| node_widgets
node_context -->|"initializes"| node_arena
node_widgets -->|"allocates and reads"| node_arena
node_widgets -->|"uses definitions"| node_widget_types
node_widgets -->|"computes geometry"| node_pos
node_widgets -->|"renders via"| node_cursor
node_cursor -->|"formats coordinates"| node_strings
node_cursor -->|"steps across"| node_pos
node_cursor -->|"emits terminal bytes"| node_tx

click node_context "https://github.com/oszimilian/lltui/blob/master/src/lltui_ctx.c"
click node_widgets "https://github.com/oszimilian/lltui/blob/master/src/lltui_widget.c"
click node_widget_types "https://github.com/oszimilian/lltui/blob/master/src/lltui_widget.h"
click node_cursor "https://github.com/oszimilian/lltui/blob/master/src/lltui_cursor.c"
click node_pos "https://github.com/oszimilian/lltui/blob/master/src/lltui_pos.c"
click node_strings "https://github.com/oszimilian/lltui/blob/master/src/lltui_string.c"
click node_arena "https://github.com/oszimilian/lltui/blob/master/src/lltui_arena.c"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_context,node_widgets,node_widget_types,node_client toneBlue
class node_cursor toneAmber
class node_pos,node_strings,node_arena toneMint
class node_tx toneIndigo
```

## Components

### UI context and widgets

- [Context API](https://github.com/oszimilian/lltui/blob/master/src/lltui_ctx.c): `src/lltui_ctx.c`
- [Widget API](https://github.com/oszimilian/lltui/blob/master/src/lltui_widget.c): `src/lltui_widget.c`
- [Widget types](https://github.com/oszimilian/lltui/blob/master/src/lltui_widget.h): `src/lltui_widget.h`

### Terminal rendering

- [Cursor output](https://github.com/oszimilian/lltui/blob/master/src/lltui_cursor.c): `src/lltui_cursor.c`

### Runtime support

- [Position geometry](https://github.com/oszimilian/lltui/blob/master/src/lltui_pos.c): `src/lltui_pos.c`
- [Number formatting](https://github.com/oszimilian/lltui/blob/master/src/lltui_string.c): `src/lltui_string.c`
- [Widget arena](https://github.com/oszimilian/lltui/blob/master/src/lltui_arena.c): `src/lltui_arena.c`

### Other components

- **UI client**
- **Transmit callback**

## Connections

- UI client → Context API: configures
- UI client → Widget API: creates and styles
- Context API → Widget arena: initializes
- Widget API → Widget arena: allocates and reads
- Widget API → Widget types: uses definitions
- Widget API → Position geometry: computes geometry
- Widget API → Cursor output: renders via
- Cursor output → Number formatting: formats coordinates
- Cursor output → Position geometry: steps across
- Cursor output → Transmit callback: emits terminal bytes
