Widgets

Widgets Overview

Advanced pre-built widgets for common TUI use cases.

Overview

Widgets are advanced components that combine multiple primitives to solve common TUI application needs. They provide ready-to-use solutions for complex UI patterns.

Available Widgets

MarkdownPreview

CodeDiff

AIChat

HotkeyFooter

FileSystemTree

ThemePicker

Widget vs Primitive

Widgets differ from primitives in several ways:

AspectPrimitivesWidgets
ComplexitySimple, single-purposeComplex, multi-component
StateMinimalRich state management
Use CaseBuilding blocksComplete solutions
CustomizationHighModerate

Usage Pattern

Widgets follow a similar pattern to primitives but often include more sophisticated state:

use ratkit::widgets::markdown_preview::{MarkdownPreview, MarkdownState};
use ratatui::Frame;

let preview = MarkdownPreview::new("# Hello\n\nWorld!");
let mut state = MarkdownState::default();

frame.render_stateful_widget(preview, area, &mut state);

Styling

Widgets respect ratkit's theming system while providing their own sensible defaults:

let widget = MarkdownPreview::new(content)
    .theme(Theme::Dark)
    .code_theme(CodeTheme::Dracula);