Non-injection and Non-invasive: Ribir interacts with the APIs of your data structure, and does not require you to do any pre-design for the user interface. Developers can focus on designing the data struct, logic and APIs. Ribir will neither break your existing logic nor require injecting any of its own objects.
Declarative: The user interface is the description of data, the description will automatically react to the data modification. Once you describe your data, the description will keep describing your data.
Purely composed: Ribir creates UI via widgets. There is not a base-object, even if the built-in fields are provided in a composed way. For example, only if you use margin
field, the Margin
widget will be composed, if you do not use it, you don't pay any overhead for Margin
. "Only pay for what you need" is an important guideline for Ribir.
More [Examples]
Compose
, Render
and ComposeChild
widgets, you only need to implement the corresponding traits. Evenmore, you are able to specify the template of the children of ComposeChild
, just by deriving the Template
traits.ribir_widgets
library exists,containing common desktop and mobile widgets.|Platform|Support situation| |---|---| |Linux|✅| |Windows|✅| |macOS|✅| |iOS|🚧 Not yet| |Android|🚧 Not yet| |Web|🚧 Not yet|
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.
This project exists thanks to all the people who contribute:
We also found inspiration from the following frameworks:
Ribir is MIT licensed