1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
//! `tui-kit` — reusable TUI theme, widget frames, and layout helpers.
//!
//! Built on top of [ratatui](https://github.com/ratatui-org/ratatui).
//! Designed to be shared across multiple terminal-UI projects that follow
//! the same visual design language.
//!
//! ## Modules
//!
//! | Module | Contents |
//! |------------|----------|
//! | [`theme`] | [`Theme`] struct — the full color/style palette |
//! | [`block`] | [`block::panel_block`], [`block::popup_block`], [`block::widget_title`], [`block::focusable_block`] |
//! | [`footer`] | [`render_footer`], [`render_footer_with_app`], [`keybind_spans`] — keybind bar |
//! | [`tabs`] | [`tabs::tab_line`] — horizontal tab-bar line for block titles |
//! | [`popup`] | [`popup::centered_popup`] — centered overlay area + Clear |
//! | [`leader`] | [`render_leader_bar`] — vim-style leader key popup |
//! | [`mouse`] | [`mouse_hit`] — hit-test a click against a widget [`Rect`] |
//! | [`toast`] | [`render_toasts`] — stacked notification toasts |
//! | [`list`] | [`list::render_list`] — scrollable focusable list |
//! | [`tree`] | [`tree::render_tree`] — foldable hierarchical tree |
//! | [`form`] | [`render_form`] — multi-field input form |
//! | [`kv`] | [`kv::render_kv_table`] — two-column key/value table |
//!
//! ## Keybind bar convention
//!
//! Every project should show a footer keybind bar using [`render_footer`].
//! The visual format is identical across all projects:
//!
//! ```text
//! Navigate: j/k | Open: Enter | Leader: space | Quit: q
//! ```
//!
//! Keys are styled with [`Theme::shortcut_key`] (yellow), actions and
//! separators with [`Theme::hint`] (dark gray).
//!
//! Build pairs contextually based on the active UI layer (popup vs main screen):
//!
//! ```rust
//! let mut pairs: Vec<(&str, &str)> = Vec::new();
//! if some_popup_open {
//! pairs.push(("Esc", "close"));
//! pairs.push(("Enter", "confirm"));
//! } else {
//! pairs.push(("j/k", "navigate"));
//! pairs.push(("space", "leader"));
//! pairs.push(("q", "quit"));
//! }
//! render_footer(f, footer_area, &pairs, &theme);
//! ```
pub use render_scrollbar;
pub use ;
pub use ;
pub use ;
pub use KvRow;
pub use ;
pub use ;
pub use ;
pub use ;
pub use Theme;
pub use ;
pub use ;
pub use ;