Skip to main content

Crate tui_pages

Crate tui_pages 

Source
Expand description

Coordination runtime for keyboard-driven, page-based TUI applications.

The crate is intentionally domain-agnostic: applications own their action enum, view/page enum, and state. The library owns the coordination model — input sequences, command resolution, focus, overlays, navigation, buffers, and panes — and applies the TuiEffect values an application returns.

TuiPages is the primary entry point. The submodules (input, command, focus, navigation) expose the same primitives for advanced callers that want to wire the flow themselves.

Re-exports§

pub use dialog::DialogButtonRenderer;
pub use dialog::DialogData;
pub use dialog::DialogKey;
pub use dialog::DialogPurposeClass;
pub use dialog::DialogPurposeStyle;
pub use dialog::DialogResult;
pub use dialog::DialogTheme;
pub use dialog::render_dialog;
pub use dialog::render_dialog_with_button_renderer;
pub use picker::PickerData;
pub use picker::PickerEntry;
pub use picker::PickerField;
pub use picker::PickerFieldWeights;
pub use picker::PickerHead;
pub use picker::PickerHeadColumn;
pub use picker::PickerLayout;
pub use picker::PickerScope;
pub use picker::PickerTheme;
pub use picker::centered_picker_area;
pub use picker::render_picker;
pub use picker::render_picker_with_custom_preview;
pub use theme::Theme;
pub use theme::ThemeError;
pub use theme::ThemeLoader;
pub use theme::ThemeManager;
pub use theme::ThemeRole;
pub use theme::ThemeStyles;
pub use crate::canvas::CanvasDispatchOutcome;
pub use crate::canvas::CanvasKeyDispatchOutcome;
pub use crate::canvas::CanvasTextWidgetOutcome;
pub use crate::canvas::accepts_text_input as canvas_accepts_text_input;
pub use crate::canvas::dispatch_action as dispatch_canvas_action;
pub use crate::canvas::dispatch_key_event as dispatch_canvas_key_event;
pub use crate::canvas::dispatch_text_area_key as dispatch_canvas_text_area_key;
pub use crate::canvas::dispatch_text_input_key as dispatch_canvas_text_input_key;
pub use crate::canvas::focus_intent_for_boundary as canvas_focus_intent_for_boundary;
pub use crate::canvas::mode_for_app_mode as canvas_mode_for_app_mode;
pub use crate::canvas::modes_for_app_mode as canvas_modes_for_app_mode;
pub use crate::canvas::render_canvas_with_suggestions;
pub use crate::canvas::render_canvas_with_suggestions_default;
pub use crate::canvas::render_canvas_with_suggestions_default_options;
pub use crate::canvas::render_canvas_with_suggestions_with_options;
pub use crate::canvas::text_chord_to_action as canvas_text_chord_to_action;
pub use crate::canvas::text_chord_to_canvas_action;
pub use crate::canvas::update_cursor_style_for_editor;
pub use crate::canvas::update_cursor_style_for_mode;
pub use crate::canvas::analyze_canvas_overlaps;
pub use crate::canvas::canvas_action_name;
pub use crate::canvas::canvas_bindable_actions;
pub use crate::canvas::canvas_default_binding_catalog;
pub use crate::canvas::canvas_suggestion_default_bindings;
pub use command::CommandHint;
pub use command::CommandRegistry;
pub use command::CommandResolver;
pub use command::CommandResponse;
pub use focus::FocusController;
pub use focus::FocusIntent;
pub use focus::FocusManager;
pub use focus::FocusQuery;
pub use focus::FocusTarget;
pub use focus::FocusWrap;
pub use focus::Focusable;
pub use focus::OverlayFocus;
pub use focus::PageFocusBuilder;
pub use input::BindableActionInfo;
pub use input::BindingAnalysis;
pub use input::BindingCatalog;
pub use input::BindingConflict;
pub use input::BindingInfo;
pub use input::BindingLayer;
pub use input::BindingSource;
pub use input::CanvasRoutingPrecedence;
pub use input::ChordSequenceTracker;
pub use input::InputHint;
pub use input::InputPipeline;
pub use input::InputRegistry;
pub use input::KeyChord;
pub use input::KeyMap;
pub use input::ParseKeyError;
pub use input::PipelineResponse;
pub use input::analyze_keymap_bindings;
pub use input::navigation_bindable_actions;
pub use input::parse_binding;
pub use input::parse_key;
pub use input::try_parse_binding;
pub use input::try_parse_key;
pub use keybindings::ActionRegistry;
pub use keybindings::BindingNotice;
pub use keybindings::BindingStore;
pub use keybindings::BuiltinNavigationPreset;
pub use keybindings::KeybindingConfig;
pub use keybindings::KeybindingConfigError;
pub use keybindings::KeybindingReport;
pub use keybindings::NavigationAction;
pub use keybindings::NavigationActionInfo;
pub use keybindings::NavigationConflictPolicy;
pub use keybindings::NavigationPreset;
pub use keybindings::NavigationPresetBinding;
pub use keybindings::NavigationPresetError;
pub use keybindings::NavigationPresetIssue;
pub use keybindings::NavigationPresetSection;
pub use keybindings::ParseBuiltinNavigationPresetError;
pub use keybindings::ParseNavigationActionError;
pub use keybindings::VimAction;
pub use keybindings::apply_navigation_preset_toml;
pub use keybindings::bind_builtin_general_defaults;
pub use keybindings::bind_builtin_global_defaults;
pub use keybindings::bind_builtin_navigation_defaults;
pub use keybindings::bind_emacs_general_defaults;
pub use keybindings::bind_emacs_global_defaults;
pub use keybindings::bind_emacs_navigation_defaults;
pub use keybindings::bind_helix_general_defaults;
pub use keybindings::bind_helix_global_defaults;
pub use keybindings::bind_helix_navigation_defaults;
pub use keybindings::bind_vim_general_defaults;
pub use keybindings::bind_vim_global_defaults;
pub use keybindings::bind_vim_navigation_defaults;
pub use keybindings::emacs_preset_toml;
pub use keybindings::helix_preset_toml;
pub use keybindings::navigation_action_infos;
pub use keybindings::navigation_action_outcome;
pub use keybindings::remap_navigation_preset_toml;
pub use keybindings::try_standard_navigation_action;
pub use keybindings::try_standard_vim_action;
pub use keybindings::vim_action_outcome;
pub use keybindings::vim_preset_toml;
pub use navigation::BufferState;
pub use navigation::NavigationCoordinator;
pub use navigation::NavigationEvent;
pub use navigation::NavigationResult;
pub use navigation::NavigationRouter;
pub use navigation::PaneId;
pub use navigation::PaneSession;
pub use navigation::PaneSplit;
pub use navigation::ViewBuffer;
pub use navigation::WorkspaceState;
pub use runtime::CommandLineAreas;
pub use runtime::ActionContext;
pub use runtime::ActionOutcome;
pub use runtime::InputLayerContext;
pub use runtime::ModeId;
pub use runtime::NoCanvasHooks;
pub use runtime::PageFn;
pub use runtime::PageProvider;
pub use runtime::PageSpec;
pub use runtime::RuntimeContext;
pub use runtime::TuiActionHandler;
pub use runtime::TuiApp;
pub use runtime::TuiEffect;
pub use runtime::TuiPages;
pub use runtime::TuiPagesBuilder;
pub use runtime::TuiPagesError;
pub use runtime::TuiPagesOutput;
pub use runtime::TuiPagesResult;
pub use runtime::TuiPagesStatus;
pub use runtime::modes;
pub use runtime::CanvasHooks;
pub use terminal::TerminalGuard;
pub use terminal::enter as enter_terminal;

Modules§

canvas
Integration helpers for using the canvas crate with tui-pages.
command
dialog
Built-in modal dialog system (feature = tui).
focus
input
keybindings
Editor-style default keybinding presets (Vim, Emacs, Helix, …).
navigation
picker
Built-in fuzzy picker (feature = tui).
prelude
Everything a typical application needs in one glob import.
runtime
terminal
Panic-safe terminal lifecycle.
theme
Helix-compatible theme loader.

Macros§

define_buttons

Enums§

CanvasAction
All available canvas actions.
CanvasBoundaryExit
Boundary reached while moving inside the canvas.