# KITSUNE UI
> ## ❗ disclaimer
>
> This is just a proof of concept for now, and it is by no means meant to be used yet.
This is a retained mode User Interface library.
## Features
- [ ] Dont compile things that haven't changed.
- [ ] Add macro to implement `widget` for user types.
- [x] Add ways to layout values, and control their size.
- [ ] Find a way to do user input.
- [ ] Maybe find a way to changed state based on Non-user events.
## Getting Started
Using the `window` feature, it is very easy to draw a widget in a `winit` window.
```rust
use kitsune_ui::window::{Window, Result};
#[tokio::main]
async fn main() -> Result<()> {
let widget = 'a';
let window = Window::new(widget).await?;
window.run();
Ok(())
}
```
Here the `widget` could be any value that implements the `kitsune_ui::widget::Widget` trait.