use console::style;
use tabled::Tabled;
pub fn header(text: &str) {
eprintln!("{}", style(format!("▸ {text}")).bold().cyan());
}
pub fn subheader(text: &str) {
eprintln!("{}", style(text).bold().underlined());
}
pub fn kv(key: &str, value: &str) {
eprintln!(
" {} {}",
style(format!("{key}:")).dim(),
style(value).bold()
);
}
pub fn success(message: &str) {
eprintln!("{} {message}", style("✓").green().bold());
}
pub fn error(message: &str) {
eprintln!("{} {message}", style("✗").red().bold());
}
pub fn warning(message: &str) {
eprintln!("{} {message}", style("!").yellow().bold());
}
pub fn detail(text: &str) {
eprintln!(" {}", style(text).dim());
}
pub fn blank() {
eprintln!();
}
pub fn separator() {
eprintln!("{}", style("─".repeat(50)).dim());
}
pub fn table<I, T>(data: I)
where
I: IntoIterator<Item = T>,
T: Tabled,
{
eprintln!("{}", tabled::Table::new(data));
}
pub fn banner(name: &str, version: &str) {
eprintln!(
"{} {}\n",
style(name).bold().cyan(),
style(format!("v{version}")).dim()
);
}