Declarative UI
Describe what to render and Phui diffs and paints each frame for you, redrawing only the cells that changed.
Describe what to render and Phui diffs and paints each frame for you, redrawing only the cells that changed.
Flexbox-like containers with padding, sizing and scrolling, plus colours, gradients and borders.
Change a component's state and the UI updates itself — no manual redraw calls anywhere in your code.
Every keystroke, mouse action and system change arrives at your app as a typed event.
Built on PHP fibers, so it drops into Revolt, ReactPHP or any event loop and awaits slow work without blocking the render.
Take over the whole terminal, or render into a region at the bottom of the shell and hand a value back to the caller.
Colours come from a semantic palette you set once and can swap at runtime, restyling the whole app from one place.
Drive a component against a fake terminal — send it input and assert on the frame it renders, with no TTY or subprocess.