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
//! # 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`
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;