Terminosaurus is a graphical UI library for terminals. Bring interactive user interfaces to your CLIs with ease!

import {useState} from 'react';
import {render} from 'terminosaurus/react';

function App() {
  const [counter, setCounter] = useState(0);

  return (
    <term:div onClick={() => setCounter(counter + 1)}>
      Counter: {counter}

render({}, <App/>);

Type Safe

Everything, including style properties and event handlers, is strongly typed.

No Dependencies

The React renderer is entirely optional, and the core library is framework agnostic.

React Integration

Terminosaurus lets you use React to author your GUIs, simplifying state management.

CSS Support

Terminosaurus supports many of the CSS properties you're used to - text-decoration, background-color, ...

Fast Updates

Terminosaurus tries to only redraw components that changed, even if you don't use memoization patterns.

Advanced Layouts

Terminosaurus supports flexbox layouts, but also relative and absolute positioning, overflow, scrolling, and more.