Widgets

FileSystemTree

Browsable file system tree widget.

Overview

The FileSystemTree widget provides a browsable file system tree with support for file operations, selection, and navigation.

Basic Usage

use ratkit::widgets::file_system_tree::{FileSystemTree, FileTreeState};
use ratatui::Frame;

fn render_file_tree(frame: &mut Frame) {
    let tree = FileSystemTree::new("./src");
    let mut state = FileTreeState::default();
    
    frame.render_stateful_widget(tree, frame.area(), &mut state);
}

Features

  • File icons - Different icons for file types
  • Directory navigation - Expand/collapse directories
  • File selection - Single and multi-select
  • Operations - Delete, rename, create
  • Filtering - Filter by name or type

Tree navigation with keyboard:

  • ↑/↓ - Move selection
  • - Expand directory
  • - Collapse directory
  • Enter - Open file/expand directory
  • Space - Toggle selection

Customization

let tree = FileSystemTree::new("./src")
    .show_hidden(false)
    .filter(|path| path.extension() == Some("rs"))
    .file_icon(|path| {
        if path.extension() == Some("rs") {
            "🦀"
        } else {
            "📄"
        }
    });