Skip to main content

Crate vize_fresco

Crate vize_fresco 

Source
Expand description

Fresco - Vue TUI Framework

A high-performance Terminal User Interface framework for Vue.js, similar to React Ink but built with Rust for performance.

§Features

  • Terminal Control: Cross-platform terminal handling via crossterm
  • Flexbox Layout: Layout engine powered by taffy
  • CJK Support: Full Unicode text handling including Japanese IME
  • Efficient Rendering: Double-buffered differential rendering

§Architecture

┌─────────────────────────────────────────────────────────┐
│                    Vue Components                        │
│                  (Box, Text, Input)                       │
└─────────────────────────────────────────────────────────┘
                          │
                          ▼
┌─────────────────────────────────────────────────────────┐
│                  Vue Custom Renderer                     │
│                    (TypeScript)                          │
└─────────────────────────────────────────────────────────┘
                          │
                          ▼
┌─────────────────────────────────────────────────────────┐
│                   NAPI Bindings                          │
│             (Rust <-> Node.js bridge)                    │
└─────────────────────────────────────────────────────────┘
                          │
        ┌─────────────────┼─────────────────┐
        ▼                 ▼                 ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│   Terminal    │ │    Layout     │ │    Render     │
│   (backend,   │ │   (taffy,     │ │   (tree,      │
│    buffer)    │ │    flex)      │ │    diff)      │
└───────────────┘ └───────────────┘ └───────────────┘
        │                                   │
        ▼                                   ▼
┌───────────────┐                 ┌───────────────┐
│     Input     │                 │     Text      │
│  (keyboard,   │                 │   (width,     │
│   mouse, ime) │                 │    segment)   │
└───────────────┘                 └───────────────┘

Re-exports§

pub use component::BoxNode;
pub use component::InputNode;
pub use component::TextNode;
pub use input::Event;
pub use input::ImeState;
pub use input::KeyEvent;
pub use input::MouseEvent;
pub use layout::FlexStyle;
pub use layout::LayoutEngine;
pub use layout::Rect;
pub use render::RenderNode;
pub use render::RenderTree;
pub use terminal::Backend;
pub use terminal::Buffer;
pub use terminal::Cell;
pub use terminal::Cursor;
pub use text::TextSegment;
pub use text::TextWidth;
pub use text::TextWrap;

Modules§

component
Primitive component nodes.
input
Input handling module.
layout
Layout engine module using taffy.
render
Rendering module for TUI output.
terminal
Terminal control module using crossterm.
text
Text processing module for CJK support.

Constants§

VERSION
Fresco version