hefesto-widgets 0.5.1

Ratatui widgets for the Hefesto TUI toolkit: popups, scrollable lists, trees, text input and spinners
Documentation
use ratatui::style::{Color, Style};
use ratatui::widgets::{Padding, Scrollbar, ScrollbarOrientation, ScrollbarState};

use crate::popup::PopupSize;

// ── Colours ──────────────────────────────────────────

pub const BORDER_GRAY: Color = Color::Rgb(100, 100, 100);
pub const OUTPUT_GRAY: Color = Color::Rgb(120, 120, 120);
pub const FOOTER_GRAY: Color = Color::Rgb(140, 140, 140);

// ── Symbols ──────────────────────────────────────────

pub const CHECK: &str = "";
pub const CROSS: &str = "";

pub const HIGHLIGHT_SYMBOL: &str = "> ";

// ── Dimensions ───────────────────────────────────────

pub const POPUP_WIDTH: PopupSize = PopupSize::Fixed(44);

// ── Styles ───────────────────────────────────────────

pub const DEFAULT_HIGHLIGHT: Style = Style::new().fg(Color::White).bg(Color::Rgb(0, 0, 128));

// ── Padding ──────────────────────────────────────────

pub const TEXT_PADDING: Padding = Padding::new(1, 1, 0, 0);

// ── Frames ───────────────────────────────────────────

pub const DEFAULT_FRAMES: &[&str] = &["", "", "", "", "", "", "", "", "", ""];

// ── Helpers ──────────────────────────────────────────

pub fn default_scrollbar() -> Scrollbar<'static> {
    Scrollbar::new(ScrollbarOrientation::VerticalRight)
        .begin_symbol(None)
        .end_symbol(None)
}

pub fn default_scrollbar_state(total: usize, position: usize) -> ScrollbarState {
    ScrollbarState::new(total).position(position)
}