No description
Find a file
2022-02-03 14:45:05 -06:00
.vscode feat: wire up stretch into place 2021-12-31 23:53:37 -05:00
examples updates: move to stable versions 2022-01-12 09:40:36 -05:00
src added rgb color for background-color 2022-02-03 14:45:05 -06:00
tests feat: wire up stretch into place 2021-12-31 23:53:37 -05:00
.gitignore wip: first pass 2021-07-28 10:52:38 -04:00
Cargo.toml Cleaning up Cargo.toml 2022-01-13 21:54:21 +01:00
README.md Cleaning up the README 2022-01-13 21:15:02 +01:00
test.html wip: add an image 2022-01-01 01:08:31 -05:00

Rink: Like "Ink" but for Rust and Dioxus

The fastest portable TUIs in the west 🔫🤠🔫 🐎🔥🔥🔥

Rink lets you build terminal user interfaces in Rust with Dioxus.

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.

Example

Let's print Hello world! in the center of the screen.

static App: FC<()> = |cx| {
    cx.render(rsx!{
        div { 
            width: "100%", 
            height: "10px",
            background_color: "red",
            justify_content: "center",
            align_items: "center",

            "Hello world!"
        }
    })
}

demo app

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 callbacks
  • Html tags1

1 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.