tuile
Widget library and design system for ratatui: 108 widget types, a colour system that expands ten colours into thirty semantic roles, tweened animation, mouse handling with cached hit rectangles, and overlays.
Documentation · Repository · Widget index
[]
= "0.1"
use *;
What it adds over plain ratatui
Focus rings, hover and press tracking, scroll offsets, dropdowns and dialogs that paint on
top, twelve colour palettes, and animation that redraws only while something moves. Every
widget is a builder plus a state: Widget::new().options().render(area, buf, &mut state),
and state.handle(&event) returns Ignored, Consumed or Changed.
ratatui-core and crossterm are re-exported (tuile::ratatui_core, tuile::crossterm), so an
app does not pin its own versions.
Families
Controls, text entry, navigation, tables, nine chart types, feedback, notifications, loaders, layout and chrome, big text and menus, content, and a set of components for building an AI chat or coding-agent interface.
The gallery app in the repository has a page per family:
git clone https://github.com/Osyna/tuile && cd tuile
cargo run --release -p showcase
Status
Pre-1.0. #![forbid(unsafe_code)], 260 tests, MSRV 1.88 (edition 2024). The widget contract
is stable; individual builder methods can still be renamed between 0.x releases.
Not affiliated with Textualize. The design language is Textual's, the code is not.
MIT.