rae 0.1.12

Renderer-neutral widget, layout, sanitization, and GLSL shader primitives for Rust desktop tools.
Documentation
use rae::{
    built_in_token_presets, built_in_widget_catalog, ComponentRole, ComponentSize,
    WidgetCatalogQuery, WidgetCategory, WidgetState, WidgetUseCase, WidgetVariant,
};

fn main() {
    let catalog = built_in_widget_catalog();
    let audio = catalog.query(
        WidgetCatalogQuery::new()
            .text("audio meter")
            .category(WidgetCategory::ProAudio)
            .use_case(WidgetUseCase::AudioProduction)
            .variant(WidgetVariant::Glass)
            .limit(6),
    );

    println!("audio glass query: {} results", audio.len());
    for widget in audio {
        println!("- {:<20} {}", widget.id, widget.summary);
    }

    let developer = catalog.query_ids(
        WidgetCatalogQuery::new()
            .text("focus")
            .use_case(WidgetUseCase::DeveloperTools)
            .limit(5),
    );
    println!("developer focus ids: {:?}", developer);

    let tokens = built_in_token_presets()
        .into_iter()
        .find(|tokens| tokens.id == "developer_dark")
        .expect("developer token preset");
    let defaults = tokens.component_defaults(
        WidgetVariant::Glass,
        ComponentSize::Large,
        ComponentRole::Accent,
        WidgetState::new().focused(true),
    );
    println!(
        "defaults: height={:.0}px padding={:.0}/{:.0}px radius={:.0}px blur={:.1}px",
        defaults.height_px,
        defaults.padding_x_px,
        defaults.padding_y_px,
        defaults.radius_px,
        defaults.material.blur_px,
    );
}