hefesto-widgets 0.6.6

Ratatui widgets for the Hefesto TUI toolkit: popups, scrollable lists, trees, text input and spinners
Documentation
//! # hefesto-widgets
//!
//! [![Crates.io](https://img.shields.io/crates/v/hefesto-widgets)](https://crates.io/crates/hefesto-widgets)
//!
//! Widgets reutilizables para interfaces TUI construidas con
//! [ratatui](https://crates.io/crates/ratatui), orientados al ecosistema
//! **Hefesto**. Proporcionan componentes modulares, stateful y configurables.
//!
//! ## Quickstart
//!
//! ```rust
//! use hefesto_widgets::{Popup, PopupSize};
//! use ratatui::{style::Color, text::Line};
//!
//! let _popup = Popup::new(Color::White)
//!     .title("Aviso")
//!     .content(vec![Line::from("Operación completada")])
//!     .width(PopupSize::Fixed(44));
//! ```
//!
//! ## Índice de widgets
//!
//! | Widget | Tipo | Propósito |
//! |---|---|---|
//! | [`Popup`] | base | Caja de diálogo configurable (tamaño, borde, posición, fondo) |
//! | [`ChoosePopup`] | Stateful | Lista seleccionable con filtro inline y selección múltiple |
//! | [`ConfirmationPopup`] | Widget | Diálogo confirmar/cancelar con estilos personalizables |
//! | [`ThemedConfirmationPopup`] | Widget | Confirmación con variante semántica (Success/Warning/Danger/None) |
//! | [`FileBrowser`] | Stateful | Navegador de archivos (widget standalone, sin chrome de popup) |
//! | [`FileBrowserPopup`] | Stateful | Navegador de archivos con título, bordes y posición |
//! | [`TreePopup`] | Stateful | Árbol expandible dentro de un popup |
//! | [`SpinPopup`] | Stateful | Spinner animado + comando + salida + mensaje de finalización |
//! | [`TextInputPopup`] | Stateful | Campo de texto centrado dentro de un popup |
//! | [`ScrollList`] | Stateful | Lista desplazable con scrollbar vertical |
//! | [`Tree`] | Stateful | Árbol expandible/colapsable con indentación |
//! | [`TextInput`] | Stateful | Editor de texto de una o varias líneas |
//! | [`Spin`] | Stateful | Spinner atómico mínimo |
//! | [`ThemedSpin`] | Stateful | Spinner con variantes predefinidas (Dots, Line, Pulse, …) |
//!
//! ## Tipos auxiliares
//!
//! | Tipo | Descripción |
//! |---|---|
//! | [`AutoSized`] | Trait para popups con altura automática según su contenido |
//! | [`BorderType`] | Estilos de borde (Plain, Rounded, Double, Thick, QuadrantInside, QuadrantOutside, None) |
//! | [`PopupSize`] | Modos de tamaño (Fixed, Percent, Auto, Max) |
//! | [`ConfirmationVariant`] | Variantes semánticas para [`ThemedConfirmationPopup`] |
//! | [`SpinVariant`] | Variantes de animación para [`ThemedSpin`] |
//! | `decorate_with_dots` | Helper para pintar fondo decorativo de puntos (opt-in, color, symbol, density) |
//! | [`ScrollListState`], [`ChoosePopupState`], [`FileBrowserState`], [`SpinState`], [`TextInputState`], [`TreeState`] | Estados para widgets stateful |
//!
//! ## Breaking changes v0.4.x → v0.5.0
//!
//! - `HefestoConfirmationPopup` renombrado a [`ThemedConfirmationPopup`]
//! - `HefestoSpin` renombrado a [`ThemedSpin`]
//! - `fill_bg` renombrado a `bg_color` en todos los widgets
//! - `input_fill_bg` renombrado a `input_bg_color` en `TextInputPopup`

mod popup;
mod tree;
mod popups;
mod scroll_list;
mod spin;
mod spins;
mod styles;
mod text_input;

pub use popup::{BorderType, DotGridConfig, Popup, PopupSize};
pub use popups::{AutoSized, ChoosePopup, ChoosePopupState, ConfirmationPopup, ConfirmationVariant, FileBrowser, FileBrowserPopup, FileBrowserState, ThemedConfirmationPopup, SpinPopup, TextInputPopup, TreePopup};
pub use scroll_list::{ScrollList, ScrollListState};
pub use spins::{ThemedSpin, SpinVariant};
pub use spin::{Spin, SpinState};
pub use tree::{Tree, TreeNode, TreeState};
pub use styles::{
    decorate_with_dots, decorate_with_dots_with_pattern, default_scrollbar, default_scrollbar_state,
    DotPattern, BORDER_GRAY, CHECK, CROSS, DEFAULT_FRAMES, DEFAULT_HIGHLIGHT, FOOTER_GRAY,
    HIGHLIGHT_SYMBOL, OUTPUT_GRAY, POPUP_WIDTH, TEXT_PADDING,
};
pub use text_input::{TextInput, TextInputState};