bevy_extended_ui 1.3.0

Create simply ui's with css and html for bevy.
Documentation
use bevy::prelude::*;
use bevy_extended_ui::example_utils::make_app;
use bevy_extended_ui::html::{HtmlEvent, HtmlSource};
use bevy_extended_ui::io::HtmlAsset;
use bevy_extended_ui::registry::UiRegistry;
use bevy_extended_ui::styles::{CssID, IconPlace};
use bevy_extended_ui::widgets::UIWidgetState;
use bevy_extended_ui_macros::html_fn;

/// Runs the button example app.
fn main() {
    let mut app = make_app("Debug Html UI - test");

    app.add_systems(
        Startup,
        |mut reg: ResMut<UiRegistry>, asset_server: Res<AssetServer>| {
            let handle: Handle<HtmlAsset> = asset_server.load("examples/button.html");
            reg.add_and_use("button_test".to_string(), HtmlSource::from_handle(handle));
        },
    );

    app.run();
}

/// Logs initialization of a button widget.
#[html_fn("init_me_btn")]
fn init_me_btn(In(target): In<HtmlEvent>) {
    info!("init_me_btn called for entity {:?}", target.entity);
}

/// Logs focus events for a button widget.
#[html_fn("focus_me")]
fn focus_me(In(target): In<HtmlEvent>) {
    info!("focus_me called for entity {:?}", target.entity);
}

/// Toggles button enabled state when clicked.
#[html_fn("click_me_btn")]
fn click_me_btn(
    In(_target): In<HtmlEvent>,
    mut query: Query<
        (
            &mut UIWidgetState,
            &CssID,
            &mut bevy_extended_ui::widgets::Button,
        ),
        With<CssID>,
    >,
) {
    for (mut state, id, mut button) in query.iter_mut() {
        if id.0.eq("fn_q_key") {
            state.disabled = !state.disabled;
            if state.disabled {
                button.text = "Im Disabled".to_string();
            } else {
                button.text = "Im Enabled".to_string();
            }
        }
    }
}

/// Moves the button icon when the cursor enters.
#[html_fn("enter_me_btn")]
fn enter_me_btn(
    In(target): In<HtmlEvent>,
    mut query: Query<(Entity, &mut bevy_extended_ui::widgets::Button), With<CssID>>,
) {
    for (entity, mut button) in query.iter_mut() {
        if entity.eq(&target.entity) {
            button.icon_place = IconPlace::Right;
        }
    }
}

/// Restores the button icon position when the cursor leaves.
#[html_fn("leave_me_btn")]
fn leave_me_btn(
    In(target): In<HtmlEvent>,
    mut query: Query<(Entity, &mut bevy_extended_ui::widgets::Button), With<CssID>>,
) {
    for (entity, mut button) in query.iter_mut() {
        if entity.eq(&target.entity) {
            button.icon_place = IconPlace::Left;
        }
    }
}