ReferenceComponentsForms and controls
Field
Field component API, behavior, and executable example.
Loading executable example…
API and events
Connect semantic terminal controls to typed form state, validation, descriptions, errors, hints, and submission.
export function Field({
label,
description,
error,
field,
hint,
required,
children,
slots,
slotProps,
...props
}: FieldProps): ReactNode;Props, functions, and events
| Member | Type | Required | Description | Related types |
|---|---|---|---|---|
label | string | Yes | The label member uses the string contract. | — |
description | string | undefined | No | The description member uses the string | undefined contract. | — |
error | string | readonly string[] | undefined | No | The error member uses the string | readonly string[] | undefined contract. | — |
field | { readonly errors: readonly string[]; } | undefined | No | The field member uses the { readonly errors: readonly string[]; } | undefined contract. | — |
hint | string | undefined | No | The hint member uses the string | undefined contract. | — |
required | boolean | undefined | No | The required member uses the boolean | undefined contract. | — |
children | ReactNode | No | The children member uses the ReactNode contract. | — |
variant | string | undefined | No | The variant member uses the string | undefined contract. | — |
size | "sm" | "md" | "lg" | undefined | No | The size member uses the "sm" | "md" | "lg" | undefined contract. | — |
unstyled | boolean | undefined | No | The unstyled member uses the boolean | undefined contract. | — |
className | string | undefined | No | The className member uses the string | undefined contract. | — |
layout | Partial<Omit<LayoutNodeInput, "id" | "children" | "semantics">> | undefined | No | The layout member uses the Partial<Omit<LayoutNodeInput, "id" | "children" | "semantics">> | undefined contract. | — |
id | string | undefined | No | The id member uses the string | undefined contract. | — |
testId | string | undefined | No | The testId member uses the string | undefined contract. | — |
role | SemanticRole | undefined | No | The role member uses the SemanticRole | undefined contract. | SemanticRole |
disabled | boolean | undefined | No | The disabled member uses the boolean | undefined contract. | — |
readOnly | boolean | undefined | No | The readOnly member uses the boolean | undefined contract. | — |
selected | boolean | undefined | No | The selected member uses the boolean | undefined contract. | — |
checked | boolean | undefined | No | The checked member uses the boolean | undefined contract. | — |
expanded | boolean | undefined | No | The expanded member uses the boolean | undefined contract. | — |
valueText | string | undefined | No | The valueText member uses the string | undefined contract. | — |
slots | Partial<SlotComponents<{ root: import("ink").BoxProps; label: import("ink").TextProps; description: import("ink").TextProps; control: import("ink").BoxProps; error: import("ink").TextProps; hint: import("ink").TextProps; }>> | undefined | No | The slots member uses the Partial<SlotComponents<{ root: import("ink").BoxProps; label: import("ink").TextProps; description: import("ink").TextProps; control: import("ink").BoxProps; error: import("ink").TextProps; hint: import("ink").TextProps; }>> | undefined contract. | BoxProps, SlotComponents, TextProps |
slotProps | Partial<SlotProps<{ root: import("ink").BoxProps; label: import("ink").TextProps; description: import("ink").TextProps; control: import("ink").BoxProps; error: import("ink").TextProps; hint: import("ink").TextProps; }, object>> | undefined | No | The slotProps member uses the Partial<SlotProps<{ root: import("ink").BoxProps; label: import("ink").TextProps; description: import("ink").TextProps; control: import("ink").BoxProps; error: import("ink").TextProps; hint: import("ink").TextProps; }, object>> | undefined contract. | BoxProps, SlotProps, TextProps |
Controls expose onValueChange, onSubmit, focus, selection, and validation callbacks.
Callback props run after the documented input is accepted. Callbacks are not cancellable unless their return type or description states otherwise.
Interaction and capabilities
Text controls edit directly; choice controls use arrows and Space or Enter; Form coordinates validation and submission.
The published manifest records keyboard, focus, pointer, theme, terminal, semantic, event, and dependency requirements.
Complete import
import { Field } from "@/components/tuil/forms/controls";