Crate fusabi_tui

Crate fusabi_tui 

Source
Expand description

§Fusabi TUI

A Terminal UI library providing Ratatui bindings and widgets for Fusabi scripts.

§Overview

fusabi-tui enables Fusabi scripts to create rich terminal user interfaces by exposing Ratatui’s powerful widget system and layout engine. This library provides:

  • Widgets: High-level UI components (lists, tables, charts, gauges, etc.)
  • Layouts: Flexbox-like constraint-based layout system
  • Canvas: Low-level drawing primitives for custom visualizations
  • Bindings: Native functions exposed to Fusabi scripts

§Architecture

The library is organized into four main modules:

  • widgets: Ratatui widget wrappers and builders
  • layouts: Layout utilities and constraint handling
  • canvas: Canvas-based rendering for custom graphics
  • bindings: Fusabi VM integration and native function registration

§Example Usage

// From a Fusabi script (.fsx)
open Fusabi.TUI

let list = List.create ["Item 1"; "Item 2"; "Item 3"]
let layout = Layout.vertical [Constraint.Percentage 50; Constraint.Min 10]

§Features

  • Zero-copy where possible for performance
  • Type-safe widget construction
  • Composable layout system
  • Seamless Fusabi integration

Re-exports§

pub use bindings::FusabiTuiModule;
pub use canvas::GraphCanvas;
pub use canvas::GraphData;
pub use canvas::GraphEdge;
pub use canvas::GraphNode;
pub use formatting::format_bytes;
pub use formatting::format_duration;
pub use formatting::format_latency;
pub use formatting::format_number;
pub use layouts::Constraint;
pub use layouts::Layout;
pub use widgets::table::render_table;
pub use widgets::table::ColumnDef;
pub use widgets::table::TableData;
pub use widgets::Widget;
pub use widgets::WidgetBuilder;

Modules§

bindings
Bindings module - Fusabi VM integration
canvas
Canvas module - Graph visualization and custom rendering
formatting
Formatting utilities for human-readable display of numbers, bytes, and time.
layouts
Layout module - Constraint-based layout system
widgets
Widget module - Ratatui widget wrappers and builders

Constants§

VERSION
Version of the fusabi-tui library

Type Aliases§

Result
Result type alias for this crate