1#![deny(missing_docs)]
40
41pub(crate) mod core;
42pub(crate) mod error;
43pub(crate) mod input;
44pub(crate) mod output;
45
46pub use core::border::BorderType;
47pub use core::geometry::{Align, Edges, Position, Title, VAlign};
48pub use core::render::{Renderable, Rendered};
49pub use core::style::{Attribute, Color, Modifier, Style};
50pub use core::text::{Line, Span, Text};
51pub use core::theme::{Theme, set_theme, theme};
52pub use error::{Result, SparcliError};
53pub use output::alert::{Alert, AlertKind};
54pub use output::badge::Badge;
55pub use output::columns::Columns;
56pub use output::diff::Diff;
57pub use output::kv::KeyValue;
58pub use output::list::{List, Marker};
59pub use output::live::Live;
60pub use output::multiprogress::MultiProgress;
61pub use output::panel::Panel;
62pub use output::progress::{ProgressBar, ProgressStyle, Thresholds};
63pub use output::rule::Rule;
64pub use output::spinner::{Spinner, SpinnerStyle};
65pub use output::table::{Cell, Column, Table};
66pub use output::tree::{Tree, TreeNode};
67
68#[cfg(feature = "pager")]
69pub use output::pager::Pager;
70
71pub use input::Outcome;
72pub use input::confirm::Confirm;
73pub use input::datepicker::{Date, DatePicker};
74pub use input::editor::edit_file;
75pub use input::history::History;
76pub use input::number::NumberInput;
77pub use input::password::PasswordInput;
78pub use input::select::Select;
79pub use input::shortcut::Shortcut;
80pub use input::text::TextInput;
81pub use input::textarea::Textarea;
82
83#[cfg(feature = "fuzzy")]
84pub use input::fuzzy::FuzzySelect;
85
86#[cfg(feature = "markup")]
88pub mod markup {
89 pub use crate::core::markup::{markup_print, markup_println, parse};
90}
91
92pub mod validate {
94 pub use crate::input::validate::{
95 CharFilter, Validator, alnum, alpha, decimal, digits, min_len,
96 no_space, non_empty,
97 };
98}
99
100pub mod event {
103 pub use crate::input::event::{
104 CrosstermSource, EventSource, InputEvent, KeyCode, KeyPress,
105 };
106}
107
108pub mod shortcut {
110 pub use crate::input::shortcut::{
111 Shortcut, find, help_overlay, hint_line, key_name,
112 };
113}
114
115pub mod width {
117 pub use crate::core::width::{strip_ansi, truncate, visible_width, wrap};
118}
119
120pub mod terminal {
122 pub use crate::core::terminal::{
123 ColorSupport, color_support, is_input_tty, is_output_tty, term_height,
124 term_width, terminal_size,
125 };
126}
127
128pub mod prelude {
130 pub use crate::core::border::BorderType;
131 pub use crate::core::geometry::{Align, Edges, Position, Title, VAlign};
132 pub use crate::core::render::{Renderable, Rendered};
133 pub use crate::core::style::{Attribute, Color, Modifier, Style};
134 pub use crate::core::text::{Line, Span, Text};
135 pub use crate::core::theme::{Theme, set_theme, theme};
136 pub use crate::error::{Result, SparcliError};
137 pub use crate::output::alert::{Alert, AlertKind};
138 pub use crate::output::badge::Badge;
139 pub use crate::output::compose::{align, pad, vstack};
140 pub use crate::output::kv::KeyValue;
141 pub use crate::output::list::{List, Marker};
142 pub use crate::output::panel::Panel;
143 pub use crate::output::rule::Rule;
144 pub use crate::output::tree::{Tree, TreeNode};
145}