Skip to content

Latest commit

 

History

History
25 lines (19 loc) · 1.38 KB

File metadata and controls

25 lines (19 loc) · 1.38 KB

Courgette Usage Rules

Courgette is a declarative TUI framework for Elixir built on OTP. Zero runtime dependencies.

Pipeline: Component render/1 → Element Tree → Layout (Flexbox) → Paint (Buffer) → Diff → ANSI → Terminal

Core Conventions

  • Root apps use use Courgette.App; children use use Courgette.LiveComponent
  • Assigns are maps internally. Public APIs accept keyword lists.
  • DSL macros (box, text, input, etc.) build pure-data element trees
  • live_component(Module, id: "unique") — the :id is required
  • Events are tuples: {:key, {:char, "a"}}, {:key, :enter}, {:key, {:ctrl, "c"}}
  • Focus: set focusable: true on live_component; Tab/Shift-Tab cycles focus
  • Children notify parents via send(assigns.parent_pid, {tag, value})

Sub-rules