open-vui
v0.1.1
Published
Vue 3 custom renderer for OpenTUI
Readme
open-vui
Vue Adapter for OpenTUI.
Adapted from the Solid Adapter.
WIP This is a work in progress, some features may not work as expected.
Installation
bun install open-vuiUsage
- Add preload script to
bunfig.toml(enables.vueimports):
preload = ["open-vui/preload"]- Create a Vue SFC using OpenTUI tags:
<template>
<box border :style="{ width: 30, height: 7 }">
<text>Hello from Vue</text>
</box>
</template>- Render it:
import { render } from "open-vui";
import App from "./App.vue";
await render(App);- Run with
bun index.ts.
Notes
- Visible text must be inside a
<text>element. (Whitespace-only nodes between elements are ignored.)
Table of Contents
Core Concepts
Components
open-vui exposes Vue template elements that map to OpenTUI renderables:
- Layout & Display:
text,box,scrollbox,ascii_font - Input:
input,textarea,select,tab_select - Code & Diff:
code,line_number,diff - Text Modifiers:
span,strong,b,em,i,u,br,a
API Reference
render(node, rendererOrConfig?)
Render a Vue component tree into a CLI renderer. If rendererOrConfig is omitted, a renderer is created with default options.
Parameters:
node: Vue component.rendererOrConfig?:CliRendererinstance orCliRendererConfig.
testRender(node, options?)
Create a test renderer for snapshots and interaction tests.
Create a test renderer for snapshots and interaction tests.
extend(components)
Register custom renderables as template elements.
extend({ customBox: CustomBoxRenderable })
getComponentCatalogue()
Returns the current component catalogue that powers JSX tag lookup.
Hooks
useRenderer()onResize(callback)useTerminalDimensions()useKeyboard(handler, options?)usePaste(handler)useSelectionHandler(handler)useTimeline(options?)
Components
Layout & Display
text: styled text containerbox: layout container with borders, padding, and flex settingsscrollbox: scrollable containerascii_font: ASCII art text renderer
Input
input: single-line text inputtextarea: multi-line text inputselect: list selectiontab_select: tab-based selection
Code & Diff
code: syntax-highlighted code blocksline_number: line-numbered code display with diff/diagnostic helpersdiff: unified or split diff viewer
Text Modifiers
These must appear inside a text component:
span: inline styled textstrong/b: bold textem/i: italic textu: underline textbr: line breaka: link text withhref
