tundra 0.2.0

A framework for building interactive applications for the terminal using Ratatui.
Documentation
# đŸ”ī¸ Tundra

Tundra provides a framework and utilities for creating interactive terminal applications with Ratatui. 

Ratatui is a comprehensive library for creating singular user interfaces in the terminal, but lacks features
for organizing larger applications — composed of several interfaces — and for receiving user data input. 

Tundra aims to extend the functionality of Ratatui with utilities for: 

- Defining application states. 
- Managing the terminal environment and context. 
- Displaying messages through modal dialogs. 
- Receiving user input through input forms and fields. 

Tundra is also highly extensible with tools to easily define your own dialogs and input fields. 

It is **not** intended to be a replacement for or wrapper over Ratatui, nor the backend. Ratatui is still
required to draw the user interface of each application state, and the backend is still required for
low-level terminal operations. 


## 📚 Documentation

Read the documentation **[HERE](https://docs.rs/tundra/)**. 


## đŸĒĒ Modal Dialogs

Modal dialogs are small pop-up "windows" displayed atop a background application state. They contain messages
or prompt for user input and are shown simply by calling a function. Here is an example of an error message
shown in a dialog: 

![dialog error demo](img/dialog_error.png)

Tundra defines several more such dialogs with easy-to-use interfaces, and provides utilities for creating
custom dialogs. 


## đŸ•šī¸ User Input

User input is facilitated through a macro that displays a form with specified fields inside a dialog. The 
return value of the macro invocation is a struct containing the values entered by the user for each field.
Both the values and the fields are stored as members of unspellable structs created inside the macro — no
runtime lookup is required! Here is an example of such a form: 

![dialog form demo](img/dialog_form.png)

Tundra defines several types of fields for entering common types of data, and provides utilities for 
creating custom fields. 


## đŸĒ§ A Note on the Backend
 
Ratatui has support for several terminal backends. If you don't know what that means, this note holds no
significance for you. 
 
Tundra currently only supports the crossterm backend. This is due to a lack of abstraction over the different
backends. Code — particularly pertaining to context and event handling — would have to be written and
repeated for each backend. 
 
If you need another backend for your project, Tundra is not for you — at least for the moment.