jarq 0.7.5

An interactive jq-like JSON query tool with a TUI
Documentation
//! Color theme for the UI.
//!
//! All colors are centralized here for consistency and future customization.

use ratatui::style::Color;

/// Application color theme.
pub struct Theme {
    // JSON syntax highlighting
    pub json_null: Color,
    pub json_bool: Color,
    pub json_number: Color,
    pub json_string: Color,
    pub json_key: Color,
    pub json_punctuation: Color,

    // Filter input
    pub prompt_editing: Color,
    pub prompt_partial_eval: Color,
    pub prompt_inactive: Color,
    pub filter_error: Color,
    pub filter_partial_highlight: Color,
    pub filter_dim: Color,

    // Status bar
    pub status_bar_normal: Color,
    pub status_bar_evaluating: Color,

    // Status messages
    pub status_message: Color,

    // Help popup
    pub help_key: Color,
    pub help_title: Color,

    // Scroll indicators
    pub scroll_indicator: Color,

    // Loading/error screens
    pub loading_title: Color,
    pub error_title: Color,
    pub error_message: Color,
}

impl Default for Theme {
    fn default() -> Self {
        Self {
            // JSON syntax (jq-like colors)
            json_null: Color::Magenta,
            json_bool: Color::Magenta,
            json_number: Color::Yellow,
            json_string: Color::Green,
            json_key: Color::Cyan,
            json_punctuation: Color::DarkGray,

            // Filter input
            prompt_editing: Color::Yellow,
            prompt_partial_eval: Color::Magenta,
            prompt_inactive: Color::DarkGray,
            filter_error: Color::Red,
            filter_partial_highlight: Color::Magenta,
            filter_dim: Color::Gray,

            // Status bar
            status_bar_normal: Color::DarkGray,
            status_bar_evaluating: Color::Yellow,

            // Status messages
            status_message: Color::White,

            // Help popup
            help_key: Color::Cyan,
            help_title: Color::Yellow,

            // Scroll indicators
            scroll_indicator: Color::DarkGray,

            // Loading/error screens
            loading_title: Color::Yellow,
            error_title: Color::Red,
            error_message: Color::DarkGray,
        }
    }
}

/// Global theme instance.
pub static THEME: std::sync::LazyLock<Theme> = std::sync::LazyLock::new(Theme::default);