managarr-tree-widget 0.24.0

Tree Widget for Managarr
Documentation
# Managarr Tree Widget

[Ratatui](https://docs.rs/ratatui) Widget built to show Tree Data structures.

![Screenshot](media/screenshot.png)

## Installation
Add this widget to your project using the following command: 

```shell
cargo add managarr-tree-widget
```

## Running the example
To run the example widget, simply run:

```shell
cargo run --example example
```

## Usage
The following is an example of how to create a tree of strings (namely one like the one used in the [example](./examples/example.rs)):

```rust
fn draw(&mut self, frame: &mut Frame) {
    let area = frame.area();
    let tree_items = vec![
        TreeItem::new_leaf("Alfa"),
        TreeItem::new(
            "Bravo",
            vec![
                TreeItem::new_leaf("Charlie"),
                TreeItem::new(
                    "Delta",
                    vec![TreeItem::new_leaf("Echo"), TreeItem::new_leaf("Foxtrot")],
                )
                .expect("all item identifiers are unique"),
                TreeItem::new_leaf("Golf"),
            ],
        )
        .expect("all item identifiers are unique"),
        TreeItem::new_leaf("Hotel"),
    ];
    let widget = Tree::new(&tree_items)
        .expect("all item identifiers are unique")
        .block(
            Block::bordered()
                .title("Tree Widget"),
        )
        .highlight_style(
            Style::new()
                .fg(Color::Black)
                .bg(Color::LightGreen)
                .add_modifier(Modifier::BOLD),
        )
        .highlight_symbol(">> ");
    frame.render_stateful_widget(widget, area, &mut self.state);
}
```

This will generate the following tree structure:

```
┌── Alfa
├── Bravo
│   ├── Charlie
│   ├── Delta
│   │ ├── Echo
│   │ └── Foxtrot
│   └── Golf
└── Hotel
```

This example assumes the existence of a `self.state` field that is initialized with `TreeState::default()`. The `TreeItem` struct is used to create a tree of items, and the `Tree` struct is used to create the widget itself.

A more detailed and feature-complete example is available in the [example](./examples/example.rs) file.

## Credit
The original project for this widget is the [Ratatui Tree Widget](https://github.com/EdJoPaTo/tui-rs-tree-widget), which was purpose built for the specific use
case of [`mqttui`](https://github.com/EdJoPaTo/mqttui).

The updated version of the tree widget that allows more generic types is created by me, [Alex Clarke](https://github.com/Dark-Alex-17).