TrademarkTrademark
Docs
Ctrl k
Search docs...
Form Controls

Input

Updated: October 18, 2026
View on GitHub
Soon
Not released yet. This is on main and is not in any published version yet. It will not install today.

Input is a bordered text field built on React Native's TextInput. Its label sits where the value goes and floats above it once the field is focused or filled. It takes every TextInput prop as well, such as keyboardType, autoComplete and secureTextEntry. See the web Input for the same component in the browser.

Controlled

Read the text with onChangeText, which gets the new string. onChange is React Native's event, not the web's.

Uncontrolled

Pass defaultValue and let the field keep the text. The label stays floating while there is text.

Error and description

errorMessage shows under the field while error is true. description is a hint under it.

Prefix, suffix and character count

prefix and suffix take any element. characterCount shows how many characters are left, and needs maxLength. loading shows a spinner in place of the suffix.

Differences from the web

  • Use onChangeText for the value. There is no id and no validate prop.
  • disabled makes the field read-only and dims it. React Native's editable is set from it.
  • style sets the outer column; inputStyle sets the text inside.
  • There is no focus ring. The border turns stronger while the field is focused.

API reference

Takes every TextInput prop except style and editable.

Prop
Type
Default
Description
labelstringFloats above the value once the field is focused or filled. Also the accessibility label.
size"xs" | "s" | "m" | "l" | "xl""m"The field's height, from 40 to 72 spacing steps.
errorbooleanfalseDraws the field in the danger colour and shows errorMessage.
errorMessageReactNodeShown under the field while error is true.
descriptionReactNodeA hint under the field.
prefixReactNodeAn element before the text.
suffixReactNodeAn element after the text. Hidden while loading.
variant"default" | "ghost""default"ghost has no border or background.
loadingbooleanfalseShows a spinner at the end.
disabledbooleanfalseDims the field and stops editing.
characterCountbooleanShows how many characters are left. Needs maxLength.
styleViewStyleStyle for the outer column.
inputStyleTextStyleStyle for the TextInput.
Edit this page on GitHub
TrademarkTrademark
Built with curiosity by Lorant One and the Design Engineers Club