Skip to main content
Input components are interactive in the editor and control panel. On the OBS layer, they render as static display-only text showing their current value (since viewers can’t interact with the overlay).

Button

A clickable button with variant styling.
string
required
Button text.
'default' | 'secondary' | 'outline' | 'destructive'
default:"default"
Visual style. Use "destructive" for dangerous actions like resets or deletes.
boolean
default:"false"
Disable the button.
() => void
Click handler.
Buttons don’t render at all on the OBS layer — there’s no one to click them.

TextField

Single-line text input with an optional label.
string
Label above the input.
string
Placeholder text.
string
Current value.
(value: string) => void
Called when the value changes.
boolean
default:"false"
Disable editing.

TextArea

Multi-line text input. Use for longer content like descriptions or messages.
string
Label above the textarea.
string
Placeholder text.
string
Current value.
(value: string) => void
Called when the value changes.
number
default:"3"
Number of visible rows.
boolean
default:"false"
Disable editing.

NumberField

Numeric input with optional min, max, and step constraints.
string
Label above the input.
number
Current value.
number
Minimum value.
number
Maximum value.
number
Step increment.
(value: number) => void
Called when the value changes.
boolean
default:"false"
Disable editing.

Toggle

On/off switch with an optional label.
string
Label next to the switch.
boolean
default:"false"
Whether the toggle is on.
(checked: boolean) => void
Called when toggled.
boolean
default:"false"
Disable interaction.

Select from a list of predefined options.
string
Label above the select.
string
Currently selected value.
Array<{ label: string; value: string }>
required
Available options.
(value: string) => void
Called when selection changes.
boolean
default:"false"
Disable selection.