dioxus/packages/rink
Miles Murgaw 6210c6fefe
Convert use_eval to use send/recv system (#1080)
* progress: reworked

don't run this, it'll kill your web browser

* feat: use_eval but with comms

* revision: async recv & recv_sync

* revision: use_eval

* revision: standard eval interface

* revision: use serde_json::Value instead of JsValue

* revision: docs

* revision: error message

* create: desktop eval (wip)

* fix: desktop eval

* revision: wrap use_eval in Rc<RefCell<_>>

* fix: fmt, clippy

* fix: desktop tests

* revision: change to channel system

- fixes clippy errors
- fixes playwright tests

* fix: tests

* fix: eval example

* fix: fmt

* fix: tests, desktop stuff

* fix: tests

* feat: drop handler

* fix: tests

* fix: rustfmt

* revision: web promise/callback system

* fix: recv error

* revision: IntoFuture, functionation

* fix: ci

* revision: playwright web

* remove: unescessary code

* remove dioxus-html from public examples

* prototype-patch

* fix web eval

* fix: rustfmt

* fix: CI

* make use_eval more efficient

* implement eval for liveview as well

* fix playwright tests

* fix clippy

* more clippy fixes

* fix clippy

* fix stack overflow

* fix desktop mock

* fix clippy

---------

Co-authored-by: Evan Almloff <evanalmloff@gmail.com>
2023-07-21 17:36:25 -05:00
..
.vscode Move dioxus-specifc code into dioxus-tui crate and rename core crate to Rink 2023-03-13 12:04:51 -05:00
examples Merge branch 'master' into make-widgets-cross-framework 2023-06-30 12:44:15 -07:00
src Convert use_eval to use send/recv system (#1080) 2023-07-21 17:36:25 -05:00
.gitignore Move dioxus-specifc code into dioxus-tui crate and rename core crate to Rink 2023-03-13 12:04:51 -05:00
Cargo.toml Update license field following SPDX 2.1 license expression standard 2023-07-20 18:00:07 +01:00
README.md update Rink and Dioxus-TUI readmes 2023-03-14 17:31:21 -05:00
test.html Move dioxus-specifc code into dioxus-tui crate and rename core crate to Rink 2023-03-13 12:04:51 -05:00

Rink

A beautiful terminal user interfaces library in Rust.


Leverage CSS, HTML, and Rust to build beautiful, portable, terminal user interfaces. Rink is the cross-framework library that powers Dioxus-TUI

demo app

Background

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

Rink is essentially a port of Ink but for Rust. 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 Dom works fine, but the ecosystem of widgets is not ready yet. 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
  • Widgets
  • Support for events, hooks, and callbacks1
  • Html tags2

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