React Setpoint Control
A slider is fine for volume. It is the wrong control for a reactor temperature, where a fat-fingered drag is a safety event. This is numeric entry that clamps to limits, requires an explicit confirm, and then ramps the process value toward the target the way a real controller does.
Reactor temperature
Process value
185°C
Setpoint
185°C
Changes ramp at 12 °C/s.
Feed flow rate
LockedProcess value
42.5L/min
Setpoint
42.5L/min
Interlock: coolant flow permissive not met.
Installation
Props
| Prop | Type | Description |
|---|---|---|
| label unit | string | Name and engineering unit |
| value | number | Current process value |
| min max | number | Hard limits — entry is clamped |
| step | number | Nudge-button increment |
| rampRate | number | Max change per second; larger moves ramp over time |
| precision | number | Displayed decimal places |
| disabled | boolean | Lock the control (e.g. from an interlock) |
| disabledReason | string | Why it's locked |
| — | — | Fired on confirmed apply |
Why the extra steps are the point
Every friction in this control is deliberate, because the failure mode it guards against is a wrong value sent to real equipment:
- Clamping happens on entry, not on submit — you cannot even type your way past a limit into a confirmable state.
- Apply is two-stage. The first press arms a confirm; the confirm button is styled as destructive because committing a setpoint to a live process is a consequential act. A slider offers no such moment.
- The value ramps. On confirm, the displayed process value eases toward the target over a time proportional to the distance and
rampRate, mirroring how the real loop will move — an operator watching a step jump would rightly distrust the display.
Pair it with an Interlock Chain: pass disabled when a permissive isn't met, and put the failing condition in disabledReason, as the second card in the demo shows. The control should be dead until it is safe to move.
New components every week
Get the week's new Kelvin UI components and templates in one short email. No spam, unsubscribe anytime.