[workspace] members = ["examples/*", "MoonZoon/crates/*"] resolver = "2" [package] name = "haalka" version = "0.2.1" edition = "2021" categories = ["asynchronous", "gui", "game-development"] description = "ergonomic reactive Bevy UI library powered by FRP signals" exclude = [".github/", "crates/"] keywords = ["ui", "reactive", "signals", "gamedev", "bevy"] license = "MIT OR Apache-2.0" repository = "https://github.com/databasedav/haalka" documentation = "https://docs.rs/haalka" [lints.rust] missing_docs = "warn" unsafe_code = "deny" [package.metadata.docs.rs] cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"] # TODO: use MoonZoon's futures-signals/futures-util extensions directly when it is published as a crate [dependencies] apply = "0.3" async-io = "2.3" async-lock = "3.3" bevy = "0.14" bevy_cosmic_edit = { version = "0.24", optional = true } bevy_eventlistener = "0.8" bevy_mod_picking = { version = "0.20", default-features = false, features = ["backend_bevy_ui"], optional = true } bevy-async-ecs = "0.6.0" cfg-if = "1.0" enclose = "1.1" futures-signals = "0.3" haalka_futures_signals_ext = { path = "MoonZoon/crates/futures_signals_ext", version = "0.0.2" } once_cell = "1.19" paste = { version = "1.0", optional = true } [features] default = [ "text_input", "utils", ] text_input = ["ui", "bevy_cosmic_edit"] ui = ["bevy_mod_picking", "derive"] derive = ["paste"] utils = [] # see https://github.com/Dimchikkk/bevy_cosmic_edit/blob/776605d549540d0b40edccc1eabe431f617875a0/Cargo.toml#L14 multicam = ["bevy_cosmic_edit/multicam"] [dev-dependencies] bevy = { version = "0.14", features = ["bevy_dev_tools"] } bevy_asset_loader = { version = "0.21", features = ["2d"] } bevy_nine_slice_ui = "0.7" bevy_rand = { version = "0.7", features = ["rand_chacha"] } colorgrad = "0.6" rand = "0.8" strum = { version = "0.25", features = ["derive"] } calc = { version = "0.4", default-features = false } rust_decimal = "1.35" [[example]] name = "align" path = "examples/align.rs" doc-scrape-examples = true [[example]] name = "button" path = "examples/button.rs" doc-scrape-examples = true [[example]] name = "calculator" path = "examples/calculator.rs" doc-scrape-examples = true [[example]] name = "challenge01" path = "examples/challenge01.rs" doc-scrape-examples = true [[example]] name = "challenge02" path = "examples/challenge02.rs" doc-scrape-examples = true [[example]] name = "challenge03" path = "examples/challenge03.rs" doc-scrape-examples = true [[example]] name = "challenge04" path = "examples/challenge04.rs" doc-scrape-examples = true [[example]] name = "challenge05" path = "examples/challenge05.rs" doc-scrape-examples = true [[example]] name = "counter" path = "examples/counter.rs" doc-scrape-examples = true [[example]] name = "ecs_ui_sync" path = "examples/ecs_ui_sync.rs" doc-scrape-examples = true [[example]] name = "key_values_sorted" path = "examples/key_values_sorted.rs" doc-scrape-examples = true [[example]] name = "scroll_grid" path = "examples/scroll_grid.rs" doc-scrape-examples = true [[example]] name = "scroll" path = "examples/scroll.rs" doc-scrape-examples = true [[example]] name = "snake" path = "examples/snake.rs" doc-scrape-examples = true