Jon Kelley 379ea09b12 Merge pull request #894 from Demonthos/query-system il y a 2 ans
..
.vscode f34fa5d974 Move dioxus-specifc code into dioxus-tui crate and rename core crate to Rink il y a 2 ans
examples ed4709101c fix duplicate example names il y a 2 ans
src 379ea09b12 Merge pull request #894 from Demonthos/query-system il y a 2 ans
.gitignore f34fa5d974 Move dioxus-specifc code into dioxus-tui crate and rename core crate to Rink il y a 2 ans
Cargo.toml 2b0a86701e Upgrade Taffy to v0.3.12] il y a 2 ans
README.md ed6d813a9c update Rink and Dioxus-TUI readmes il y a 2 ans
test.html f34fa5d974 Move dioxus-specifc code into dioxus-tui crate and rename core crate to Rink il y a 2 ans

README.md

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
  • [x] 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.