One of the features I use often with lil-gui is to change values with the wheel of the mouse - i.e. I click inside the numerical textbox, and with the wheel scrolling and I change the value in small steps (depending on the .step()) and whith shift+scroll I change the value in large steps. I use this when the range is big and I need to make just small change, that is smaller than one pixel of the horizontal slider.
Scrolling feels OK from my point of view. The options for larger and smaller steps are useful. There is a light inconsistency - changing values with up/down keyboard arrows does not change the step size ( ↑↓ for one step, Shift-↑↓ for 10×step and Alt-↑↓ for 0.1×steps).
My next question is about customization. Usually I use lil-gui, but decorate and resize its appearance like this. The current leva-vanilla listbox options are somewhat too dark – see “Medium”:
I’ve aligned keyboard input with scroll (shift/alt now behave the same), and replaced the native <select> with a custom dropdown to avoid browser styling issues.
I’m also working on a theming system similar to what Leva provides, so styling can be customized more easily.
Next step is improving keyboard navigation for the dropdown.
Would love to hear how this feels if you get a chance to try it again. Thanks a lot for your continuous feedback! Much appreciated
Heads up: I’ll be introducing a breaking API change after v0.0.6.
leva-vanilla started as a lightweight lil-gui-style tool, but that direction limits what it can become. I’m reworking the API toward a schema-based, reactive model inspired by Leva.
The goal is better DX, not more features.
Instead of this:
const gui = new GUI()
gui.add(params, 'speed', 0, 10)
This is a breaking change, but it’s happening early (pre v0.1.0) so the project can grow on a stronger foundation.
I also plan to build a React wrapper so it aligns closely with Leva’s useControls.
If you’ve tried the current API or have opinions about this direction, I’d really appreciate your feedback before I lock it in.
I’m especially interested in input from people who have worked on similar systems (reactivity, control panels, or creative coding tools), including contributors in the Three.js / Poimandres ecosystem.