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