Skip to main content

Input widgets

Input widgets are where user intent enters the shared app model.

That is what makes them different from display widgets. A display widget mostly shows state. An input widget usually reflects current state and also emits the next action that will change it.

In Fission, that means input widgets are usually bound to explicit ActionEnvelope values that flow into reducers, and from there into state transitions or runtime effects.

Choosing among input widgets

Use the simplest control that matches the shape of the choice.

Use buttons for discrete actions. Use toggles or checkboxes for boolean state. Use sliders for continuous values. Use text inputs for free-form editing. Use selects or segmented controls when the valid choices are small and known. Use comboboxes when typing and suggestion picking need to meet.

When the interaction becomes more specialized, move to lower-level gesture, drag, or editing helpers.

Core action and value controls

WidgetDedicated pageWhen to choose it
ButtonButtonOne explicit action such as save, submit, open, or close
ButtonVariantButtonVariantSupporting type for button style choice
ButtonContentAlignButtonContentAlignSupporting type for button content alignment
CheckboxCheckboxBoolean choice with visible checked state
RadioRadioOne selection inside a known group
SwitchSwitchBoolean choice that reads like on or off state
SliderSliderContinuous single numeric value
RangeSliderRangeSliderContinuous lower and upper bound selection
SegmentedControlSegmentedControlA small set of exclusive options presented side by side

Text and form entry widgets

WidgetDedicated pageWhen to choose it
TextInputTextInputFree-form text entry
NumberInputNumberInputNumeric entry with dedicated affordances
FormControlFormControlLabel, helper, or validation wrapper around a field
EditableEditableLower-level editable content surface

These widgets are the ones most closely tied to the runtime's input, clipboard, and input method editor model.

Choice and picker widgets

WidgetDedicated pageWhen to choose it
SelectSelectClosed choice list with a dedicated picker surface
SelectItemSelectItemSupporting item type for Select
ComboboxComboboxTyping plus filtered suggestion selection
DropDownDropDownDropdown helper or composition surface
DatePickerDatePickerDate choice
DateRangePickerDateRangePickerStart and end date choice
TimePickerTimePickerTime-of-day choice

Gesture, drag, and file-oriented input

WidgetDedicated pageWhen to choose it
GestureDetectorGestureDetectorA widget needs direct gesture callbacks
DraggableDraggableA region should act as a drag source
DragTargetDragTargetA region should accept drops
DropzoneDropzoneFile or payload drops need a dedicated area
FileUploadFileUploadFile selection and upload flow wrapper

Practical cross-reference

If the hard part is no longer which control to choose but how input is normalized, how locale or theme reaches the widget tree, or how the clipboard and input method editor flow work, continue to Environment, input, and input method editor. For the user-facing guide, see Input, text, and environment.