dioxus/packages/tui
Demonthos 67a6fa9eb8
Implement new mutations with native core (#630)
* work on seperating tree struture from realdom

* intial update to new mutations

* handle height

* update to taffy 0.2

* add as_varient functions to OwnedAttributeValue

* make get node parent mut optionally return a parent

* work on upward pass

* add more code for parrellel passes

* make resolve passes public

* more work on parallel passes

* fix deadlock and add more tests

* move height into the tree instead of the realdom

* make passes exicute in parallel instead of executing invidual passes in parellel

* fix some warnings

* add up dependant test

* clean up examples

* work on intigrating state with passes

* update to new mutations

* work on implementing macro

* make the macro compile

* more progress on macro

* mark cloned nodes as dirty

* update persistant_iterator utility

* fix mask generation

* update tui with new mutations

* more progress updating tui

* some basic tui examples working

* don't push template nodes onto the stack

* update hover example

* update benchmark

* update more examples

* fix root node layout

* ignore out of bounds renders

* update color picker example

* update all events example

* update remaining examples

* update tests

* tests passing

* move persistant iterator test

* update examples

* fix gaps in layout

* fix formatting

* fix memory leak
2022-12-06 15:38:04 -08:00
..
.vscode feat: add tui 2022-03-09 12:55:30 -05:00
benches Implement new mutations with native core (#630) 2022-12-06 15:38:04 -08:00
examples Implement new mutations with native core (#630) 2022-12-06 15:38:04 -08:00
src Implement new mutations with native core (#630) 2022-12-06 15:38:04 -08:00
tests Merge branch 'master' of https://github.com/DioxusLabs/dioxus into rusty-events 2022-06-29 02:18:57 +03:00
.gitignore feat: add tui 2022-03-09 12:55:30 -05:00
Cargo.toml Implement new mutations with native core (#630) 2022-12-06 15:38:04 -08:00
README.md update readme 2022-05-03 18:43:28 -05:00
test.html feat: add tui 2022-03-09 12:55:30 -05:00

Rink

Beautiful terminal user interfaces in Rust with Dioxus .


Leverage React-like patterns, CSS, HTML, and Rust to build beautiful, portable, terminal user interfaces with Dioxus.

fn app(cx: Scope) -> Element {
    cx.render(rsx!{
        div {
            width: "100%",
            height: "10px",
            background_color: "red",
            justify_content: "center",
            align_items: "center",
            "Hello world!"
        }
    })
}

demo app

Background

You can use Html-like semantics with stylesheets, inline styles, tree hierarchy, components, and more in your text-based user interface (TUI) application.

Rink is basically a port of Ink but for Rust and Dioxus. Rink doesn't depend on Node.js or any other JavaScript runtime, so your binaries are portable and beautiful.

Limitations

  • Subset of Html Terminals can only render a subset of HTML. We support as much as we can.
  • Particular frontend design Terminals and browsers are and look different. Therefore, the same design might not be the best to cover both renderers.

Status

WARNING: Rink is currently under construction!

Rendering a VirtualDom works fine, but the ecosystem of hooks is not yet ready. Additionally, some bugs in the flexbox implementation might be quirky at times.

Features

Rink features:

  • Flexbox based layout system
  • CSS selectors
  • inline CSS support
  • Built-in focusing system
  • high-quality keyboard support
  • Support for events, hooks, and callbacks1
  • Html tags2

1 Basic keyboard and mouse events are implemented. 2 Currently, HTML tags don't translate into any meaning inside of rink. So an input won't really mean anything nor does it have any additional functionality.