Ribir is a framework for building modern native/wasm cross-platform user interface applications. ![CI](https://github.com/RibirX/Ribir/actions/workflows/main.yml/badge.svg ) [![codecov](https://codecov.io/gh/RibirX/Ribir/branch/master/graph/badge.svg)](https://codecov.io/gh/RibirX/ribir) [![License](https://img.shields.io/badge/license-MIT-informational)](https://github.com/RibirX/ribir/blob/master/LICENSE) [Documents] | [Examples]

Principles

At First Glance

``` rust use ribir::prelude::*; fn main() { app::run(widget! { states { cnt: Stateful::new(0) } Column { h_align: HAlign::Center, align_items: Align::Center, FilledButton { on_tap: move |_| *cnt += 1, Label::new("Add") } H1 { text: cnt.to_string() } FilledButton { on_tap: move |_| *cnt += -1, Label::new("Sub") } } }); } ```

More [Examples]

Key Features

Support Platform

|Platform|Support situation| |---|---| |Linux|✅| |Windows|✅| |macOS|✅| |iOS|🚧 Not yet| |Android|🚧 Not yet| |Web|🚧 Not yet|

Contributing

We are grateful to the community for contributing bug fixes and improvements.

😎 New to Ribir?

Start learning about the framework by helping us improve our documentation. Feel free to open a new "Documentation" issue. We are also very welcome: * Point out to us where our document has misunderstandings * Pull requests which improve test coverage * Add undocumented code (e.g. built-in widget) * Report typo

For more information please read: * Contributing Guide * Writing a Good Issue

🤔 Confused about something?

Feel free to go to Discussions and open a new "Q&A" to get help from contributors. Often questions lead to improvements to the ergonomics of the framework, better documentation, and even new features!

😱 Found a bug?

Please report all bugs! We are happy to help support developers fix the bugs they find if they are interested and have the time.

Thanks

This project exists thanks to all the people who contribute:



We also found inspiration from the following frameworks:

License

Ribir is MIT licensed