Website | Nightly Docs | Stable Docs | Book | Discord
Freya is a native GUI library for Rust powered by 🧬 Dioxus and 🎨 Skia.
fn app(cx: Scope) -> Element {
let mut count = use_state(cx, || 0);
render!(
rect {
height: "20%",
width: "100%",
background: "rgb(233, 196, 106)",
padding: "12",
color: "rgb(20, 33, 61)",
label {
font_size: "20",
"Number is: {count}"
}
}
rect {
height: "80%",
width: "100%",
background: "rgb(168, 218, 220)",
color: "black",
padding: "12",
onclick: move |_| count += 1,
label { "Click to increase!" }
}
)
} |
Thanks to my sponsors for supporting this project! 😄
Note: main
branch currently depends on Dioxus 0.5.
Clone this repo and run:
cargo run --example counter
You can also try freya-template
Add Freya and Dioxus as dependencies:
freya = "0.1"
dioxus = { version = "0.4", features = ["macro", "hooks"], default-features = false }
- ⛏️ Built-in components (button, scroll views, switch and more)
- 🚇 Built-in hooks library (animations, text editing and more)
- 🔍 Built-in devtools panel (experimental
⚠️ ) - 🧰 Built-in headless testing runner for components
- 🎨 Theming support (not extensible yet
⚠️ ) - 🛩️ Cross-platform (Windows, Linux, MacOS)
- 🖼️ SKSL Shaders support
- 🔄️ Dioxus Hot-reload support
- 📒 Multi-line text editing (experimental
⚠️ ) - 🦾 Basic Accessibility Support (experimental
⚠️ ) - 🧩Compatible with dioxus-std and other Dioxus renderer-agnostic libraries
- Performant and low memory usage
- Good developer experience
- Cross-platform support
- Decent Accessibility support
- Useful testing APIs
- Useful and extensible components and hooks
You can see the tracking issue to know what features are implemented and which ones are not, yet.