Elm-inspired library for building tui interfaces Thuja heavily relies on the tui crate and essentially is just an (opinionated) wrapper around it. Thuja uses crossterm as a terminal backend.
Thuja is an experimental library and its API is likely a subject to change
The simplest app looks like this: ```rust,no_run use thuja::{components::list::List, Component, Thuja};
fn main() {
let list = List::new(vec!["one", "two", "three"]);
Thuja::new(list).run();
}
```
This code will display a list of three elements, with the fist one selected. You can switch between elements using arrow keys.
Pretty simple, right?
The goal of the project is to make components easily reusable and composable.
The next example will display the same list, but with a legend status bar and Ctrl+C
handling:
```rust,no_run
use thuja::{components::{ctrlc::{CtrlCHandler,CtrlCMsg},legend::Legend,list::List},Thuja};
fn main() { let list = List::new(vec!["one", "two", "three"]); let ctrlc = CtrlCHandler::new(list, "Quit"); let legend = Legend::new(ctrlc); Thuja::new(legend).withexitmsg(Some(CtrlCMsg::Exit)).run(); } ```
See the docs for further information.
As said, it is Elm-inspired and also consonant with "tui" (terminal user interface). Got it?