Form
A form component library with validation, field management, and integration with various input types
Installation
Import
Basic
Textarea Adapter
Select Adapter
Multi Select Adapter
Chips Input Adapter
Checkbox Adapter
Radio Group Adapter
Switch Adapter
Range Adapter
Numeric Input Adapter
Segmented Adapter
Basic Form
With Description
With Validation
With Schema Validation
Schema Validation
Use Zod Schema to validate the form, support complex validation rules
With Async Initial Values
Async Initial Values Example
Demonstrate how to asynchronously load the initial values of the form, commonly used in editing existing data scenarios
With Array Fields
Array Form Example
Demonstrate how to handle array-type form fields, including simple arrays and object arrays
{
"name": "",
"skills": [],
"hobbies": [
{
"name": "",
"description": "",
"yearsOfExperience": 0
}
],
"contacts": [
{
"type": "email",
"value": "",
"isPrimary": true
},
{
"type": "phone",
"value": "",
"isPrimary": false
}
]
}With Linked Fields
Linked fields example
Demonstrates how to link two fields, when one field value changes, the validation of the other field will be re-run
{
"username": "",
"email": "",
"password": "",
"confirmPassword": "",
"newEmail": "",
"confirmNewEmail": ""
}With Reactivity
Reactive subscription example
Demonstrates how to use useStore and form.Subscribe to access reactive form values
useStore subscription example
{
"userType": "personal",
"name": "",
"email": "",
"company": "",
"website": "",
"plan": "basic",
"newsletter": false,
"notifications": {
"email": true,
"sms": false,
"push": true
},
"budget": 1000
}With Listeners
Listeners API example
Demonstrates how to use Listeners API to handle side effects and cascading logic between fields
Activity log
{
"country": "",
"province": "",
"city": "",
"userType": "individual",
"personalInfo": {
"firstName": "",
"lastName": "",
"idNumber": ""
},
"companyInfo": {
"companyName": "",
"taxId": "",
"industry": ""
},
"organizationInfo": {
"orgName": "",
"orgType": "",
"registrationNumber": ""
},
"email": "",
"phone": "",
"newsletter": false,
"notifications": {
"email": true,
"sms": false
}
}With Custom Errors
Custom error handling example
Demonstrates how to use TanStack Form's flexible error handling mechanism, supporting multiple error types and custom error display
API reference
| BaseAdapter | Type | Default |
|---|---|---|
className | string |undefined | - |
description | ReactNode | - |
error | ReactNode | - |
htmlFor | string |undefined | - |
label | ReactNode | - |
legendMode | boolean |undefined | false |
| CheckboxAdapter | Type | Default |
value | boolean |undefined | - |
readOnly | boolean |undefined | - |
className | string |undefined | - |
variant | undefined |"default" |"accent" |"outline" | - |
focused | boolean |undefined | - |
mixed | boolean |undefined | - |
onChange | (value: T) => void | - |
onBlur | (() => void) |undefined | - |
onFocus | (() => void) |undefined | - |
label | ReactNode | - |
size | undefined |"default" |"large" | - |
description | ReactNode | - |
error | ReactNode | - |
onBlurAsync | (() => void) |undefined | - |
onBlurAsyncDebounceMs | number |undefined | - |
onChangeAsync | ((value: T) => void) |undefined | - |
onChangeAsyncDebounceMs | number |undefined | - |
onFocusAsync | (() => void) |undefined | - |
onFocusAsyncDebounceMs | number |undefined | - |
| createCheckboxAdapter | Type | Default |
value | boolean |undefined | - |
readOnly | boolean |undefined | - |
className | string |undefined | - |
variant | undefined |"default" |"accent" |"outline" | - |
focused | boolean |undefined | - |
mixed | boolean |undefined | - |
onChange | ((value: T) => void) |undefined | - |
onBlur | (() => void) |undefined | - |
onFocus | (() => void) |undefined | - |
label | ReactNode | - |
size | undefined |"default" |"large" | - |
description | ReactNode | - |
error | ReactNode | - |
onBlurAsync | (() => void) |undefined | - |
onBlurAsyncDebounceMs | number |undefined | - |
onChangeAsync | ((value: T) => void) |undefined | - |
onChangeAsyncDebounceMs | number |undefined | - |
onFocusAsync | (() => void) |undefined | - |
onFocusAsyncDebounceMs | number |undefined | - |
| ChipsInputAdapter | Type | Default |
disabled | boolean |undefined | - |
placeholder | string |undefined | - |
readOnly | boolean |undefined | - |
id | string |undefined | - |
allowDuplicates | boolean |undefined | - |
onAdd | ((value: string) => void) |undefined | - |
onRemove | ((value: string) => void) |undefined | - |
renderChip | ((props: RenderChipProps) => ReactNode) |undefined | - |
description | ReactNode | - |
error | ReactNode | - |
label | ReactNode | - |
onBlur | (() => void) |undefined | - |
onBlurAsync | (() => void) |undefined | - |
onBlurAsyncDebounceMs | number |undefined | - |
onChange | (value: T[]) => void | - |
onChangeAsync | ((value: T[]) => void) |undefined | - |
onChangeAsyncDebounceMs | number |undefined | - |
onFocus | (() => void) |undefined | - |
onFocusAsync | (() => void) |undefined | - |
onFocusAsyncDebounceMs | number |undefined | - |
size | undefined |"default" |"large" | - |
value | T[] | - |
| createChipsInputAdapter | Type | Default |
disabled | boolean |undefined | - |
placeholder | string |undefined | - |
readOnly | boolean |undefined | - |
id | string |undefined | - |
allowDuplicates | boolean |undefined | - |
onAdd | ((value: string) => void) |undefined | - |
onRemove | ((value: string) => void) |undefined | - |
renderChip | ((props: RenderChipProps) => ReactNode) |undefined | - |
description | ReactNode | - |
error | ReactNode | - |
label | ReactNode | - |
onBlur | (() => void) |undefined | - |
onBlurAsync | (() => void) |undefined | - |
onBlurAsyncDebounceMs | number |undefined | - |
onChange | ((value: T[]) => void) |undefined | - |
onChangeAsync | ((value: T[]) => void) |undefined | - |
onChangeAsyncDebounceMs | number |undefined | - |
onFocus | (() => void) |undefined | - |
onFocusAsync | (() => void) |undefined | - |
onFocusAsyncDebounceMs | number |undefined | - |
size | undefined |"default" |"large" | - |
value | T[] |undefined | - |
| InputAdapter | Type | Default |
selected | boolean |undefined | - |
className | string |undefined | - |
focusSelection | undefined |"none" |"all" |"end" | - |
onIsEditingChange | ((isEditing: boolean) => void) |undefined | - |
variant | undefined |"default" |"light" |"dark" |"reset" | - |
description | ReactNode | - |
error | ReactNode | - |
label | ReactNode | - |
onBlur | (() => void) |undefined | - |
onBlurAsync | (() => void) |undefined | - |
onBlurAsyncDebounceMs | number |undefined | - |
onChange | (value: T) => void | - |
onChangeAsync | ((value: T) => void) |undefined | - |
onChangeAsyncDebounceMs | number |undefined | - |
onFocus | (() => void) |undefined | - |
onFocusAsync | (() => void) |undefined | - |
onFocusAsyncDebounceMs | number |undefined | - |
size | undefined |"default" |"large" | - |
value | string | - |
| createInputAdapter | Type | Default |
selected | boolean |undefined | - |
className | string |undefined | - |
focusSelection | undefined |"none" |"all" |"end" | - |
onIsEditingChange | ((isEditing: boolean) => void) |undefined | - |
variant | undefined |"default" |"light" |"dark" |"reset" | - |
description | ReactNode | - |
error | ReactNode | - |
label | ReactNode | - |
onBlur | (() => void) |undefined | - |
onBlurAsync | (() => void) |undefined | - |
onBlurAsyncDebounceMs | number |undefined | - |
onChange | ((value: T) => void) |undefined | - |
onChangeAsync | ((value: T) => void) |undefined | - |
onChangeAsyncDebounceMs | number |undefined | - |
onFocus | (() => void) |undefined | - |
onFocusAsync | (() => void) |undefined | - |
onFocusAsyncDebounceMs | number |undefined | - |
size | undefined |"default" |"large" | - |
value | string |undefined | - |
| MultiSelectAdapter | Type | Default |
disabled | boolean |undefined | - |
open | boolean |undefined | - |
placeholder | string |undefined | - |
readOnly | boolean |undefined | - |
className | string |undefined | - |
renderChip | ((props: { disabled?: boolean |undefined; displayValue: string; index: number; onRemove?: ((e: MouseEvent<HTMLButtonElement, MouseEvent>) => void) |undefined; value: string; }) => ReactNode) |undefined | - |
variant | undefined |"default" |"light" |"reset" | - |
chipVariant | undefined |"default" |"accent" |"success" |"rest" | - |
closeOnSelect | boolean |undefined | - |
focusManagerProps | FloatingFocusManagerProps |undefined | - |
getDisplayValue | ((value: string) => string) |undefined | - |
i18n | { maxSelectionMessage?: ((maxSelection: number) => string) |undefined; minSelectionMessage?: ((minSelection: number) => string) |undefined; } |undefined | - |
matchTriggerWidth | boolean |undefined | - |
maxChips | number |undefined | - |
maxSelection | number |undefined | - |
minSelection | number |undefined | - |
onOpenChange | ((open: boolean) => void) |undefined | - |
placement | undefined |"top" |"right" |"bottom" |"left" |"top-start" |"top-end" |"right-start" |"right-end" |"bottom-start" |"bottom-end" |"left-start" |"left-end" | - |
portalId | string |undefined | - |
root | HTMLElement |null |undefined | - |
showValidationMessage | boolean |undefined | - |
values | string[] |undefined | - |
description | ReactNode | - |
error | ReactNode | - |
label | ReactNode | - |
onBlur | (() => void) |undefined | - |
onBlurAsync | (() => void) |undefined | - |
onBlurAsyncDebounceMs | number |undefined | - |
onChange | (value: T[]) => void | - |
onChangeAsync | ((value: T[]) => void) |undefined | - |
onChangeAsyncDebounceMs | number |undefined | - |
onFocus | (() => void) |undefined | - |
onFocusAsync | (() => void) |undefined | - |
onFocusAsyncDebounceMs | number |undefined | - |
size | undefined |"default" |"large" | - |
value | T[] | - |
name | string |undefined | - |
options | SelectOption<T>[] |undefined | [] |
| createMultiSelectAdapter | Type | Default |
disabled | boolean |undefined | - |
open | boolean |undefined | - |
placeholder | string |undefined | - |
readOnly | boolean |undefined | - |
className | string |undefined | - |
renderChip | ((props: { disabled?: boolean |undefined; displayValue: string; index: number; onRemove?: ((e: MouseEvent<HTMLButtonElement, MouseEvent>) => void) |undefined; value: string; }) => ReactNode) |undefined | - |
variant | undefined |"default" |"light" |"reset" | - |
chipVariant | undefined |"default" |"accent" |"success" |"rest" | - |
closeOnSelect | boolean |undefined | - |
focusManagerProps | FloatingFocusManagerProps |undefined | - |
getDisplayValue | ((value: string) => string) |undefined | - |
i18n | { maxSelectionMessage?: ((maxSelection: number) => string) |undefined; minSelectionMessage?: ((minSelection: number) => string) |undefined; } |undefined | - |
matchTriggerWidth | boolean |undefined | - |
maxChips | number |undefined | - |
maxSelection | number |undefined | - |
minSelection | number |undefined | - |
onOpenChange | ((open: boolean) => void) |undefined | - |
placement | undefined |"top" |"right" |"bottom" |"left" |"top-start" |"top-end" |"right-start" |"right-end" |"bottom-start" |"bottom-end" |"left-start" |"left-end" | - |
portalId | string |undefined | - |
root | HTMLElement |null |undefined | - |
showValidationMessage | boolean |undefined | - |
values | string[] |undefined | - |
description | ReactNode | - |
error | ReactNode | - |
label | ReactNode | - |
onBlur | (() => void) |undefined | - |
onBlurAsync | (() => void) |undefined | - |
onBlurAsyncDebounceMs | number |undefined | - |
onChange | ((value: T[]) => void) |undefined | - |
onChangeAsync | ((value: T[]) => void) |undefined | - |
onChangeAsyncDebounceMs | number |undefined | - |
onFocus | (() => void) |undefined | - |
onFocusAsync | (() => void) |undefined | - |
onFocusAsyncDebounceMs | number |undefined | - |
size | undefined |"default" |"large" | - |
value | T[] |undefined | - |
name | string |undefined | - |
options | SelectOption<T>[] |undefined | - |
| NumericInputAdapter | Type | Default |
size | undefined |"default" |"large" | - |
defaultValue | NumericInputValue |undefined | - |
disabled | boolean |undefined | - |
max | number |undefined | - |
min | number |undefined | - |
readOnly | boolean |undefined | - |
selected | boolean |undefined | - |
step | number |undefined | - |
className | string |undefined | - |
id | string |undefined | - |
onIsEditingChange | ((isEditing: boolean) => void) |undefined | - |
variant | undefined |"default" |"light" |"dark" |"reset" | - |
classNames | { container?: string |undefined; input?: string |undefined; } |undefined | - |
tooltip | TooltipProps |undefined | - |
triggerRef | RefObject<HTMLDivElement> |((el: HTMLDivElement |null) => void) |undefined | - |
decimal | number |undefined | - |
expression | string |undefined | - |
focused | boolean |undefined | - |
handlerPressed | boolean |undefined | - |
handlerProps | Record<string, unknown> |undefined | - |
onEmpty | (() => void) |undefined | - |
onPressEnd | (((event: PressEvent) => void) & ((e: PointerEvent) => void)) |undefined | - |
onPressStart | (((event: PressEvent) => void) & ((e: PointerEvent) => void)) |undefined | - |
shiftStep | number |undefined | - |
value | number | - |
onChange | (value: T) => void | - |
onBlur | (() => void) |undefined | - |
onFocus | (() => void) |undefined | - |
label | ReactNode | - |
description | ReactNode | - |
error | ReactNode | - |
onBlurAsync | (() => void) |undefined | - |
onBlurAsyncDebounceMs | number |undefined | - |
onChangeAsync | ((value: T) => void) |undefined | - |
onChangeAsyncDebounceMs | number |undefined | - |
onFocusAsync | (() => void) |undefined | - |
onFocusAsyncDebounceMs | number |undefined | - |
| createNumericInputAdapter | Type | Default |
size | undefined |"default" |"large" | - |
defaultValue | NumericInputValue |undefined | - |
disabled | boolean |undefined | - |
max | number |undefined | - |
min | number |undefined | - |
readOnly | boolean |undefined | - |
selected | boolean |undefined | - |
step | number |undefined | - |
className | string |undefined | - |
id | string |undefined | - |
onIsEditingChange | ((isEditing: boolean) => void) |undefined | - |
variant | undefined |"default" |"light" |"dark" |"reset" | - |
classNames | { container?: string |undefined; input?: string |undefined; } |undefined | - |
tooltip | TooltipProps |undefined | - |
triggerRef | RefObject<HTMLDivElement> |((el: HTMLDivElement |null) => void) |undefined | - |
decimal | number |undefined | - |
expression | string |undefined | - |
focused | boolean |undefined | - |
handlerPressed | boolean |undefined | - |
handlerProps | Record<string, unknown> |undefined | - |
onEmpty | (() => void) |undefined | - |
onPressEnd | (((event: PressEvent) => void) & ((e: PointerEvent) => void)) |undefined | - |
onPressStart | (((event: PressEvent) => void) & ((e: PointerEvent) => void)) |undefined | - |
shiftStep | number |undefined | - |
value | number |undefined | - |
onChange | ((value: T) => void) |undefined | - |
onBlur | (() => void) |undefined | - |
onFocus | (() => void) |undefined | - |
label | ReactNode | - |
description | ReactNode | - |
error | ReactNode | - |
onBlurAsync | (() => void) |undefined | - |
onBlurAsyncDebounceMs | number |undefined | - |
onChangeAsync | ((value: T) => void) |undefined | - |
onChangeAsyncDebounceMs | number |undefined | - |
onFocusAsync | (() => void) |undefined | - |
onFocusAsyncDebounceMs | number |undefined | - |
| RadioGroupAdapter | Type | Default |
readOnly | boolean |undefined | - |
variant | undefined |"default" |"accent" |"outline" | - |
options | { disabled?: boolean |undefined; label: string; value: string; }[] |undefined | - |
description | ReactNode | - |
error | ReactNode | - |
label | ReactNode | - |
onBlur | (() => void) |undefined | - |
onBlurAsync | (() => void) |undefined | - |
onBlurAsyncDebounceMs | number |undefined | - |
onChange | (value: T) => void | - |
onChangeAsync | ((value: T) => void) |undefined | - |
onChangeAsyncDebounceMs | number |undefined | - |
onFocus | (() => void) |undefined | - |
onFocusAsync | (() => void) |undefined | - |
onFocusAsyncDebounceMs | number |undefined | - |
size | undefined |"default" |"large" | - |
value | string | - |
| createRadioGroupAdapter | Type | Default |
readOnly | boolean |undefined | - |
variant | undefined |"default" |"accent" |"outline" | - |
options | { disabled?: boolean |undefined; label: string; value: string; }[] |undefined | - |
description | ReactNode | - |
error | ReactNode | - |
label | ReactNode | - |
onBlur | (() => void) |undefined | - |
onBlurAsync | (() => void) |undefined | - |
onBlurAsyncDebounceMs | number |undefined | - |
onChange | ((value: T) => void) |undefined | - |
onChangeAsync | ((value: T) => void) |undefined | - |
onChangeAsyncDebounceMs | number |undefined | - |
onFocus | (() => void) |undefined | - |
onFocusAsync | (() => void) |undefined | - |
onFocusAsyncDebounceMs | number |undefined | - |
size | undefined |"default" |"large" | - |
value | string |undefined | - |
| RangeAdapter | Type | Default |
defaultValue | number |undefined | - |
disabled | boolean |undefined | - |
max | number |undefined | - |
min | number |undefined | - |
readOnly | boolean |undefined | - |
step | number |undefined | - |
className | string |undefined | - |
connectsClassName | { negative?: string |undefined; positive?: string |undefined; } |undefined | - |
onChangeEnd | (() => void) |undefined | - |
onChangeStart | (() => void) |undefined | - |
thumbSize | number |undefined | - |
trackSize | { height?: number |undefined; width?: number |"auto" |undefined; } |undefined | - |
description | ReactNode | - |
error | ReactNode | - |
label | ReactNode | - |
onBlur | (() => void) |undefined | - |
onBlurAsync | (() => void) |undefined | - |
onBlurAsyncDebounceMs | number |undefined | - |
onChange | (value: T) => void | - |
onChangeAsync | ((value: T) => void) |undefined | - |
onChangeAsyncDebounceMs | number |undefined | - |
onFocus | (() => void) |undefined | - |
onFocusAsync | (() => void) |undefined | - |
onFocusAsyncDebounceMs | number |undefined | - |
size | undefined |"default" |"large" | - |
value | number | - |
| createRangeAdapter | Type | Default |
defaultValue | number |undefined | - |
disabled | boolean |undefined | - |
max | number |undefined | - |
min | number |undefined | - |
readOnly | boolean |undefined | - |
step | number |undefined | - |
className | string |undefined | - |
connectsClassName | { negative?: string |undefined; positive?: string |undefined; } |undefined | - |
onChangeEnd | (() => void) |undefined | - |
onChangeStart | (() => void) |undefined | - |
thumbSize | number |undefined | - |
trackSize | { height?: number |undefined; width?: number |"auto" |undefined; } |undefined | - |
description | ReactNode | - |
error | ReactNode | - |
label | ReactNode | - |
onBlur | (() => void) |undefined | - |
onBlurAsync | (() => void) |undefined | - |
onBlurAsyncDebounceMs | number |undefined | - |
onChange | ((value: T) => void) |undefined | - |
onChangeAsync | ((value: T) => void) |undefined | - |
onChangeAsyncDebounceMs | number |undefined | - |
onFocus | (() => void) |undefined | - |
onFocusAsync | (() => void) |undefined | - |
onFocusAsyncDebounceMs | number |undefined | - |
size | undefined |"default" |"large" | - |
value | number |undefined | - |
| SegmentedAdapter | Type | Default |
disabled | boolean |undefined | - |
readOnly | boolean |undefined | - |
className | string |undefined | - |
variant | undefined |"default" |"light" |"dark" |"reset" | - |
tooltip | TooltipProps |undefined | - |
description | ReactNode | - |
error | ReactNode | - |
label | ReactNode | - |
onBlur | (() => void) |undefined | - |
onBlurAsync | (() => void) |undefined | - |
onBlurAsyncDebounceMs | number |undefined | - |
onChange | (value: T) => void | - |
onChangeAsync | ((value: T) => void) |undefined | - |
onChangeAsyncDebounceMs | number |undefined | - |
onFocus | (() => void) |undefined | - |
onFocusAsync | (() => void) |undefined | - |
onFocusAsyncDebounceMs | number |undefined | - |
size | undefined |"default" |"large" | - |
value | string | - |
options | SegmentedOption<T>[] |undefined | - |
| createSegmentedAdapter | Type | Default |
disabled | boolean |undefined | - |
readOnly | boolean |undefined | - |
className | string |undefined | - |
variant | undefined |"default" |"light" |"dark" |"reset" | - |
tooltip | TooltipProps |undefined | - |
description | ReactNode | - |
error | ReactNode | - |
label | ReactNode | - |
onBlur | (() => void) |undefined | - |
onBlurAsync | (() => void) |undefined | - |
onBlurAsyncDebounceMs | number |undefined | - |
onChange | ((value: T) => void) |undefined | - |
onChangeAsync | ((value: T) => void) |undefined | - |
onChangeAsyncDebounceMs | number |undefined | - |
onFocus | (() => void) |undefined | - |
onFocusAsync | (() => void) |undefined | - |
onFocusAsyncDebounceMs | number |undefined | - |
size | undefined |"default" |"large" | - |
value | string |undefined | - |
options | SegmentedOption<T>[] |undefined | - |
| SelectAdapter | Type | Default |
disabled | boolean |undefined | - |
open | boolean |undefined | - |
readOnly | boolean |undefined | - |
className | string |undefined | - |
variant | undefined |"default" |"light" |"reset" | - |
focusManagerProps | Partial<FloatingFocusManagerProps> |undefined | - |
matchTriggerWidth | boolean |undefined | - |
onOpenChange | ((open: boolean) => void) |undefined | - |
placement | undefined |"bottom-start" |"bottom-end" | - |
portalId | string |undefined | - |
root | HTMLElement |null |undefined | - |
closeOnEscape | boolean |undefined | - |
description | ReactNode | - |
error | ReactNode | - |
label | ReactNode | - |
onBlur | (() => void) |undefined | - |
onBlurAsync | (() => void) |undefined | - |
onBlurAsyncDebounceMs | number |undefined | - |
onChange | (value: T) => void | - |
onChangeAsync | ((value: T) => void) |undefined | - |
onChangeAsyncDebounceMs | number |undefined | - |
onFocus | (() => void) |undefined | - |
onFocusAsync | (() => void) |undefined | - |
onFocusAsyncDebounceMs | number |undefined | - |
size | undefined |"default" |"large" | - |
value | string | - |
name | string |undefined | - |
options | SelectOption<T>[] |undefined | [] |
placeholder | string |undefined | - |
| createSelectAdapter | Type | Default |
disabled | boolean |undefined | - |
open | boolean |undefined | - |
readOnly | boolean |undefined | - |
className | string |undefined | - |
variant | undefined |"default" |"light" |"reset" | - |
focusManagerProps | Partial<FloatingFocusManagerProps> |undefined | - |
matchTriggerWidth | boolean |undefined | - |
onOpenChange | ((open: boolean) => void) |undefined | - |
placement | undefined |"bottom-start" |"bottom-end" | - |
portalId | string |undefined | - |
root | HTMLElement |null |undefined | - |
closeOnEscape | boolean |undefined | - |
description | ReactNode | - |
error | ReactNode | - |
label | ReactNode | - |
onBlur | (() => void) |undefined | - |
onBlurAsync | (() => void) |undefined | - |
onBlurAsyncDebounceMs | number |undefined | - |
onChange | ((value: T) => void) |undefined | - |
onChangeAsync | ((value: T) => void) |undefined | - |
onChangeAsyncDebounceMs | number |undefined | - |
onFocus | (() => void) |undefined | - |
onFocusAsync | (() => void) |undefined | - |
onFocusAsyncDebounceMs | number |undefined | - |
size | undefined |"default" |"large" | - |
value | string |undefined | - |
name | string |undefined | - |
options | SelectOption<T>[] |undefined | - |
placeholder | string |undefined | - |
| SwitchAdapter | Type | Default |
readOnly | boolean |undefined | - |
className | string |undefined | - |
variant | undefined |"default" |"accent" |"outline" | - |
focused | boolean |undefined | - |
description | ReactNode | - |
error | ReactNode | - |
label | ReactNode | - |
onBlur | (() => void) |undefined | - |
onBlurAsync | (() => void) |undefined | - |
onBlurAsyncDebounceMs | number |undefined | - |
onChange | (value: T) => void | - |
onChangeAsync | ((value: T) => void) |undefined | - |
onChangeAsyncDebounceMs | number |undefined | - |
onFocus | (() => void) |undefined | - |
onFocusAsync | (() => void) |undefined | - |
onFocusAsyncDebounceMs | number |undefined | - |
size | undefined |"default" |"large" | - |
value | boolean | - |
| createSwitchAdapter | Type | Default |
readOnly | boolean |undefined | - |
className | string |undefined | - |
variant | undefined |"default" |"accent" |"outline" | - |
focused | boolean |undefined | - |
description | ReactNode | - |
error | ReactNode | - |
label | ReactNode | - |
onBlur | (() => void) |undefined | - |
onBlurAsync | (() => void) |undefined | - |
onBlurAsyncDebounceMs | number |undefined | - |
onChange | ((value: T) => void) |undefined | - |
onChangeAsync | ((value: T) => void) |undefined | - |
onChangeAsyncDebounceMs | number |undefined | - |
onFocus | (() => void) |undefined | - |
onFocusAsync | (() => void) |undefined | - |
onFocusAsyncDebounceMs | number |undefined | - |
size | undefined |"default" |"large" | - |
value | boolean |undefined | - |
| TextareaAdapter | Type | Default |
selected | boolean |undefined | - |
className | string |undefined | - |
focusSelection | undefined |"none" |"all" |"end" | "all" |
onIsEditingChange | ((isEditing: boolean) => void) |undefined | - |
variant | undefined |"default" |"light" |"dark" |"reset" | "default" |
allowNewline | boolean |undefined | true |
contentRef | RefObject<HTMLDivElement> |undefined | - |
lineHeight | number |undefined | 16 |
maxRows | number |undefined | undefined (no maximum) |
minRows | number |undefined | 3 |
padding | number |undefined | 4 (py-1) |
resize | false |"auto" |"handle" |undefined | "auto" |
scrollRef | RefObject<HTMLDivElement> |undefined | - |
description | ReactNode | - |
error | ReactNode | - |
label | ReactNode | - |
onBlur | (() => void) |undefined | - |
onBlurAsync | (() => void) |undefined | - |
onBlurAsyncDebounceMs | number |undefined | - |
onChange | (value: T) => void | - |
onChangeAsync | ((value: T) => void) |undefined | - |
onChangeAsyncDebounceMs | number |undefined | - |
onFocus | (() => void) |undefined | - |
onFocusAsync | (() => void) |undefined | - |
onFocusAsyncDebounceMs | number |undefined | - |
size | undefined |"default" |"large" | - |
value | string | - |
| createTextareaAdapter | Type | Default |
selected | boolean |undefined | - |
className | string |undefined | - |
focusSelection | undefined |"none" |"all" |"end" | "all" |
onIsEditingChange | ((isEditing: boolean) => void) |undefined | - |
variant | undefined |"default" |"light" |"dark" |"reset" | "default" |
allowNewline | boolean |undefined | true |
contentRef | RefObject<HTMLDivElement> |undefined | - |
lineHeight | number |undefined | 16 |
maxRows | number |undefined | undefined (no maximum) |
minRows | number |undefined | 3 |
padding | number |undefined | 4 (py-1) |
resize | false |"auto" |"handle" |undefined | "auto" |
scrollRef | RefObject<HTMLDivElement> |undefined | - |
description | ReactNode | - |
error | ReactNode | - |
label | ReactNode | - |
onBlur | (() => void) |undefined | - |
onBlurAsync | (() => void) |undefined | - |
onBlurAsyncDebounceMs | number |undefined | - |
onChange | ((value: T) => void) |undefined | - |
onChangeAsync | ((value: T) => void) |undefined | - |
onChangeAsyncDebounceMs | number |undefined | - |
onFocus | (() => void) |undefined | - |
onFocusAsync | (() => void) |undefined | - |
onFocusAsyncDebounceMs | number |undefined | - |
size | undefined |"default" |"large" | - |
value | string |undefined | - |