Skip to main content

Widgets: Inputs And Forms

Use these widgets when the user is editing data, confirming choices, or moving through a guided form.

Core entry widgets

WidgetUse it forCapabilitiesGood example
Buttonprimary actionskeyboard/pointer activation, pressed/focused states, optional descriptionHelloWorld, WorkspaceApp
Labelstatic headings or readoutssimple styled text without interactionstarter shells
Badgecompact state chipstone-driven status or count labelsdashboards and rails
TextInputsingle-line inputplaceholder text, editing, submit/cancel eventsCounterForm
TextAreamulti-line inputparagraph editing and larger text buffersdenser edit flows
NumberInputnumeric entrybounded numeric editing and direct value settingCounterForm
Choicesmall one-of-many selectioncompact choice list for short option setsCounterForm
ComboBoxtyped selection from a known listeditable text + item listform-heavy apps
AutocompleteInputsuggestion-first text entryfree typing with commitable suggestionssearch/config flows
DatePickerdate entrycalendar-style date pickingplanning and scheduling
TimePickertime entrytime-of-day editingplanning and scheduling

Selection and boolean widgets

WidgetUse it forCapabilitiesGood example
RadioGroupvisible single-choice groupsexplicit mutually exclusive optionsforms and settings
Toggleboolean stateon/off interaction with focused stylingsettings rows
Sliderbounded range changesscrub numeric values with keyboard/pointersettings and tuning
MultiSelectmany-of-many selectionmultiple checked options in one surfacefilters and option sets
TagInputtoken/tag editingadd/remove tags or short labelsquery and labeling flows

Form containers

WidgetUse it forCapabilitiesGood example
Formexplicit field/value formsfixed form rows with helper text and required hintsadmin/config screens
FieldSetgrouped rows or grouped optionsframed grouping and section readabilitydense forms
ValidationSummaryvalidation feedbackaggregated errors and quick attention guidancesubmit flows
DataForm<TModel>model-bound formsregistered field definitions, model binding, validators, commit eventsadvanced form flows

Guided workflow widgets

WidgetUse it forCapabilitiesGood example
Steppercompact multi-step progresscurrent-step state and completion markersonboarding or setup
Wizardguided step flowlarger step descriptions and explicit progressionsetup and task flows

When to choose Form vs DataForm<TModel>

  • use Form when the screen is mostly explicit UI rows
  • use DataForm<TModel> when you want a bound model and field registration to stay together