Primitives

TreeView

Hierarchical tree view component for nested data.

Overview

The TreeView primitive displays hierarchical data structures with expandable/collapsible nodes.

Basic Usage

use ratkit::primitives::tree_view::{TreeView, TreeNode, TreeState};
use ratatui::Frame;

fn render_tree(frame: &mut Frame) {
    let tree = TreeView::new(vec![
        TreeNode::new("src")
            .child(TreeNode::new("main.rs"))
            .child(TreeNode::new("lib.rs")),
        TreeNode::new("Cargo.toml"),
    ]);
    
    let mut state = TreeState::default();
    frame.render_stateful_widget(tree, frame.area(), &mut state);
}

Tree views support keyboard navigation:

  • Up/Down - Move selection
  • Left - Collapse node
  • Right - Expand node
  • Enter - Toggle expansion

Customization

let tree = TreeView::new(nodes)
    .highlight_style(Style::default().bg(Color::Blue))
    .indent_size(2)
    .show_root(false);