bevy 0.20.0

A refreshingly simple data-driven game engine and app framework
Documentation
use bevy::{
    color::palettes, feathers::theme::ThemeProps, platform::collections::HashMap, prelude::*,
};

/// Creates a basic example theme props for the radio buttons and number inputs.
pub fn basic_example_theme(text_color: Color) -> ThemeProps {
    let mut color = HashMap::new();

    // Radio Button tokens
    color.insert(bevy::feathers::tokens::RADIO_TEXT, text_color);
    color.insert(bevy::feathers::tokens::RADIO_MARK, Color::BLACK);
    color.insert(bevy::feathers::tokens::RADIO_MARK_HOVER, Color::BLACK);
    color.insert(bevy::feathers::tokens::RADIO_MARK_PRESSED, Color::BLACK);

    color.insert(bevy::feathers::tokens::RADIO_BG, Color::WHITE);
    color.insert(
        bevy::feathers::tokens::RADIO_BG_HOVER,
        palettes::basic::GRAY.into(),
    );
    color.insert(
        bevy::feathers::tokens::RADIO_BG_PRESSED,
        palettes::basic::GRAY.into(),
    );
    color.insert(bevy::feathers::tokens::RADIO_BG_CHECKED, Color::WHITE);
    color.insert(bevy::feathers::tokens::RADIO_BG_CHECKED_HOVER, Color::BLACK);
    color.insert(
        bevy::feathers::tokens::RADIO_BG_CHECKED_PRESSED,
        Color::BLACK,
    );

    color.insert(bevy::feathers::tokens::RADIO_BORDER, Color::BLACK);
    color.insert(
        bevy::feathers::tokens::RADIO_BORDER_HOVER,
        palettes::basic::GRAY.into(),
    );
    color.insert(
        bevy::feathers::tokens::RADIO_BORDER_PRESSED,
        palettes::basic::BLACK.into(),
    );
    color.insert(bevy::feathers::tokens::RADIO_BORDER_CHECKED, Color::BLACK);
    color.insert(
        bevy::feathers::tokens::RADIO_BORDER_CHECKED_HOVER,
        Color::BLACK,
    );
    color.insert(
        bevy::feathers::tokens::RADIO_BORDER_CHECKED_PRESSED,
        Color::BLACK,
    );

    // Number Input tokens
    color.insert(bevy::feathers::tokens::TEXT_INPUT_TEXT, text_color);
    color.insert(bevy::feathers::tokens::TEXT_INPUT_BG, Color::BLACK);
    color.insert(bevy::feathers::tokens::TEXT_INPUT_LABEL_BG, Color::BLACK);

    color.insert(bevy::feathers::tokens::SLIDER_BAR, Color::WHITE);
    color.insert(bevy::feathers::tokens::SLIDER_BAR_HOVER, Color::WHITE);
    color.insert(bevy::feathers::tokens::SLIDER_BAR_PRESSED, Color::WHITE);
    color.insert(bevy::feathers::tokens::SLIDER_BG, Color::BLACK);
    color.insert(bevy::feathers::tokens::SLIDER_BG_HOVER, Color::BLACK);
    color.insert(bevy::feathers::tokens::SLIDER_BG_PRESSED, Color::BLACK);

    color.insert(
        bevy::feathers::tokens::TEXT_INPUT_CURSOR,
        bevy::feathers::palette::ACCENT.lighter(0.2),
    );
    color.insert(
        bevy::feathers::tokens::TEXT_INPUT_SELECTION,
        bevy::feathers::palette::ACCENT,
    );
    color.insert(
        bevy::feathers::tokens::TEXT_INPUT_SELECTION_UNFOCUSED,
        bevy::feathers::palette::TRANSPARENT,
    );

    // Checkbox tokens
    color.insert(bevy::feathers::tokens::CHECKBOX_TEXT, text_color);
    color.insert(bevy::feathers::tokens::CHECKBOX_BG, Color::BLACK);
    color.insert(bevy::feathers::tokens::CHECKBOX_MARK, Color::WHITE);
    color.insert(bevy::feathers::tokens::CHECKBOX_BORDER, Color::BLACK);
    color.insert(
        bevy::feathers::tokens::CHECKBOX_BORDER_HOVER,
        bevy::feathers::palette::GRAY_2,
    );
    color.insert(
        bevy::feathers::tokens::CHECKBOX_BORDER_CHECKED_HOVER,
        bevy::feathers::palette::GRAY_0,
    );
    color.insert(
        bevy::feathers::tokens::CHECKBOX_BORDER_PRESSED,
        bevy::feathers::palette::GRAY_1,
    );
    color.insert(
        bevy::feathers::tokens::CHECKBOX_BORDER_CHECKED_PRESSED,
        bevy::feathers::palette::GRAY_1,
    );
    color.insert(
        bevy::feathers::tokens::CHECKBOX_BORDER_CHECKED,
        Color::BLACK,
    );
    color.insert(
        bevy::feathers::tokens::CHECKBOX_BG_HOVER,
        bevy::feathers::palette::GRAY_0,
    );
    color.insert(bevy::feathers::tokens::CHECKBOX_BG_CHECKED, Color::BLACK);
    color.insert(
        bevy::feathers::tokens::CHECKBOX_BG_CHECKED_HOVER,
        Color::BLACK,
    );
    color.insert(
        bevy::feathers::tokens::CHECKBOX_BG_CHECKED_PRESSED,
        bevy::feathers::palette::GRAY_1,
    );
    color.insert(bevy::feathers::tokens::CHECKBOX_BG_PRESSED, Color::BLACK);
    // Feathers Button / Select
    color.insert(
        bevy::feathers::tokens::BUTTON_BG,
        bevy::feathers::palette::TRANSPARENT,
    );
    color.insert(
        bevy::feathers::tokens::BUTTON_BG_HOVER,
        bevy::feathers::palette::TRANSPARENT,
    );
    color.insert(
        bevy::feathers::tokens::BUTTON_BG_PRESSED,
        bevy::feathers::palette::TRANSPARENT,
    );
    color.insert(
        bevy::feathers::tokens::MENU_BG,
        bevy::feathers::palette::GRAY_0,
    );
    color.insert(
        bevy::feathers::tokens::MENU_BORDER,
        bevy::feathers::palette::GRAY_0,
    );
    color.insert(
        bevy::feathers::tokens::MENUITEM_BG_HOVER,
        bevy::feathers::palette::TRANSPARENT,
    );
    color.insert(
        bevy::feathers::tokens::MENUITEM_BG_PRESSED,
        bevy::feathers::palette::TRANSPARENT,
    );
    color.insert(
        bevy::feathers::tokens::MENUITEM_BG_FOCUSED,
        bevy::feathers::palette::TRANSPARENT,
    );
    color.insert(
        bevy::feathers::tokens::LISTROW_BG,
        bevy::feathers::palette::TRANSPARENT,
    );
    color.insert(
        bevy::feathers::tokens::LISTROW_BG_HOVER,
        bevy::feathers::palette::BLACK,
    );
    color.insert(
        bevy::feathers::tokens::LISTROW_BG_SELECTED,
        bevy::feathers::palette::BLACK,
    );
    color.insert(bevy::feathers::tokens::BUTTON_TEXT, text_color);
    color.insert(bevy::feathers::tokens::LISTROW_TEXT, text_color);

    // Slider tokens
    color.insert(
        bevy::feathers::tokens::SLIDER_BG,
        bevy::feathers::palette::BLACK,
    );
    color.insert(
        bevy::feathers::tokens::SLIDER_BG_HOVER,
        bevy::feathers::palette::GRAY_0,
    );
    color.insert(
        bevy::feathers::tokens::SLIDER_BG_PRESSED,
        bevy::feathers::palette::GRAY_1,
    );
    color.insert(
        bevy::feathers::tokens::SLIDER_BAR,
        bevy::feathers::palette::ACCENT,
    );
    color.insert(
        bevy::feathers::tokens::SLIDER_BAR_HOVER,
        bevy::feathers::palette::ACCENT.lighter(0.05),
    );
    color.insert(
        bevy::feathers::tokens::SLIDER_BAR_PRESSED,
        bevy::feathers::palette::ACCENT.lighter(0.1),
    );
    color.insert(bevy::feathers::tokens::SLIDER_TEXT, text_color);

    // Main text color
    color.insert(bevy::feathers::tokens::TEXT_MAIN, text_color);
    ThemeProps::new_non_contextual(color)
}