Terminal UI library for MoonBit with reactive signals

{
"deps": {
"mizchi/tui": "0.1.1"
}
}mizchi/tui/
├── core/ # Component, Color, BorderChars, builders
├── events/ # InputEvent, parse_input, FocusManager
├── io/ # Platform I/O (print_raw, read_key, keypress)
├── render/ # App, ScreenBuffer, ANSI, layout
└── components/ # UI components (button, input, modal, etc.)import {
"mizchi/tui/render" as @render,
"mizchi/tui/core" as @core,
"mizchi/tui/io" as @io,
"mizchi/tui/events" as @events,
"mizchi/tui/components" as @c,
"mizchi/signals",
}
fn main {
let (cols, rows) = @io.get_terminal_size()
let count = @signals.signal(0)
let app = @render.App::new(cols, rows)
fn render_ui() -> @core.Component {
@c.column([
@c.text("Count: " + count.get().to_string()),
@c.button("Increment"),
])
}
// Initialize terminal
@io.print_raw(@render.App::init_terminal())
// Render
@io.print_raw(app.render_frame(render_ui()))
// Cleanup
@io.print_raw(@render.App::restore_terminal())
}moon run examples/counter