Skip to content

Reference

Component reference

General-purpose link for references and related actions surfaced by the renderer. Render as an anchor or equivalent control with standard link behavior.

PropTypeOptionalDescription
hrefstringNoSet as the anchor destination; the renderer passes a fully qualified or relative URL.
childrenReactNodeNoRender this content inside the link; it may be plain text or richer markup.
targetstringYesSet the anchor target when provided, for example _blank for a new tab.
relstringYesSet the anchor rel attribute; when using _blank, prefer noopener noreferrer.

Use standard link behavior; avoid preventing default unless you provide equivalent navigation.

Errors

Inline list of validation messages for a specific control, answer, or the form summary. Keep each message distinct and close to the related input or summary area.

PropTypeOptionalDescription
idstringNoApply as the container id so inputs can reference it via aria-describedby.
messagesstring[]NoRender each string as a distinct message line.

Consider rendering messages as a list. If you use aria-live or role="alert" to announce updates, prefer polite announcements to avoid repeated reads.

OptionsLoading

Loading UI for option-backed controls while options are fetching. Use it to show a spinner or skeleton where options would appear.

PropTypeOptionalDescription
isLoadingbooleanNoWhen true, show a loading indicator instead of options.

The renderer may render OptionsLoading in the question scaffold or selection table while options are loading. Option controls also receive isLoading, so avoid duplicating spinners if you render both.

Help

Short help text associated with a node label. Usually rendered near the label and referenced by the control via aria-describedby.

PropTypeOptionalDescription
idstringNoApply as the element id so the control can reference it.
childrenReactNodeNoRender this help content near the label or input.
ariaLabelstringYesUse as aria-label for the help region when needed.

Legal or consent content tied to a node. It can be inline text or a trigger that reveals more detail, but should remain accessible.

PropTypeOptionalDescription
idstringNoApply to the element that contains (or references) the legal text so other components can target it via aria-describedby.
childrenReactNodeNoRender the legal text or markup provided by the renderer.
ariaLabelstringYesUse as an aria-label when the legal UI is only an icon or otherwise lacks a visible label.

Flyover

Supplementary context for a node, often presented as a tooltip or popover. Keep it discoverable from the header and reachable via aria-describedby.

PropTypeOptionalDescription
idstringNoApply to the element that holds (or is referenced by) the flyover content so inputs can point to it via aria-describedby.
childrenReactNodeNoRender the informational content provided by the renderer.
ariaLabelstringYesUse as an aria-label when the flyover UI is an icon-only control.

Label

Header block for questions and groups that owns label layout (prefix + label text), required marker, and optional help/legal/flyover slots. It also provides the labelled-by anchor for the main control.

PropTypeOptionalDescription
prefixReactNodeYesRender an optional prefix (for example, a question number).
childrenReactNodeNoRender the primary label content for the node.
idstringNoUse as the id on the label element so inputs can reference it via aria-labelledby.
htmlForstringYesForward to the label element to connect it to the primary control.
requiredbooleanYesWhen true, display a visual required indicator near the label.
helpReactNodeYesRender the help slot content next to or beneath the label.
legalReactNodeYesRender the legal slot content within the header layout.
flyoverReactNodeYesRender the flyover slot content within the header layout.
as"legend" | "label" | "text"YesHint for the semantic role of the label; themes can select the appropriate tag.

as is a semantic/styling hint; themes may render a div for all values (including "legend") and should not assume fieldset/legend markup.

InputGroup

Layout wrapper for multi-part inputs such as quantity and coding. Arrange the children as a single logical field using a 12-column span system. Provide a span value per child; themes do not infer or default them. Keep the total at 12 to avoid gaps or wrapping.

PropTypeOptionalDescription
childrenReactNodeNoRender each child input in order as a single grouped control.
spansnumber[]NoColumn spans in a 12-column system (for example, [8, 4] for a 2/3 + 1/3 split). Provide one span per child.

TextInput

Single-line text field for short string answers, URLs, or identifiers. Render a standard input and forward accessibility ids and placeholder.

PropTypeOptionalDescription
idstringNoSet as the input element id so labels can target it.
typestringYesUse as the HTML input type (defaults to text in most themes).
valuestringNoRender this string as the current input value.
onChange(value: string) => voidNoCall with the new string whenever the user edits the field.
disabledbooleanYesWhen true, render the input in a disabled state and prevent edits.
placeholderstringYesShow this hint when the input is empty.
ariaLabelledBystringNoForward to aria-labelledby to associate the input with its label.
ariaDescribedBystringYesForward to aria-describedby to associate the input with help or error text.
inputModeHTMLAttributes<Element>["inputMode"]YesApply to the inputmode attribute to influence virtual keyboard layouts.
minLengthnumberYesEnforce a minimum character length when provided.
maxLengthnumberYesEnforce a maximum character length when provided.

TextArea

Multi-line text field for longer narrative responses. Use a textarea or equivalent and forward accessibility ids and placeholder.

PropTypeOptionalDescription
idstringNoSet as the textarea id so labels can target it.
valuestringNoRender this string as the current textarea value.
onChange(value: string) => voidNoCall with the new string whenever the user edits the text.
disabledbooleanYesWhen true, render the textarea in a disabled state and prevent edits.
placeholderstringYesShow this hint when the textarea is empty.
ariaLabelledBystringNoForward to aria-labelledby to associate the textarea with its label.
ariaDescribedBystringYesForward to aria-describedby to associate the textarea with help or error text.
inputModeHTMLAttributes<Element>["inputMode"]YesApply to the inputmode attribute to influence virtual keyboard layouts.
minLengthnumberYesEnforce a minimum character length when provided.
maxLengthnumberYesEnforce a maximum character length when provided.

NumberInput

Numeric text field for integer, decimal, and quantity values. Accept undefined for empty and show a unit label when provided.

PropTypeOptionalDescription
idstringNoSet as the input id so labels can target it.
valuenumberYesRender this number as the current value; omit it to show an empty field.
onChange(value?: number) => voidNoCall with the parsed number when the user edits, or undefined when the field is cleared.
disabledbooleanYesWhen true, render the input in a disabled state and prevent edits.
placeholderstringYesShow this hint when the field is empty.
stepnumber | "any"YesApply as the input step value to control increments and precision.
minnumberYesApply as the minimum allowed value.
maxnumberYesApply as the maximum allowed value.
ariaLabelledBystringNoForward to aria-labelledby to associate the input with its label.
ariaDescribedBystringYesForward to aria-describedby to associate the input with help or error text.
unitLabelstringYesRender a static unit label alongside the input when provided.

DateInput

Date-only field for calendar values. Use a date picker or text input but keep the value string intact.

PropTypeOptionalDescription
idstringNoSet as the input id so labels can target it.
valuestringNoRender this date string as the current value (typically YYYY-MM-DD).
onChange(value: string) => voidNoCall with the new date string whenever the user edits the field.
disabledbooleanYesWhen true, render the input in a disabled state and prevent edits.
placeholderstringYesShow this hint when the field is empty.
minstringYesApply as the minimum allowed date value.
maxstringYesApply as the maximum allowed date value.
ariaLabelledBystringNoForward to aria-labelledby to associate the input with its label.
ariaDescribedBystringYesForward to aria-describedby to associate the input with help or error text.

DateTimeInput

Date and time field for combined values. Use a datetime picker or text input but keep the value string intact.

PropTypeOptionalDescription
idstringNoSet as the input id so labels can target it.
valuestringNoRender this date-time string as the current value (typically YYYY-MM-DDTHH:mm).
onChange(value: string) => voidNoCall with the new date-time string whenever the user edits the field.
disabledbooleanYesWhen true, render the input in a disabled state and prevent edits.
placeholderstringYesShow this hint when the field is empty.
minstringYesApply as the minimum allowed date-time value.
maxstringYesApply as the maximum allowed date-time value.
ariaLabelledBystringNoForward to aria-labelledby to associate the input with its label.
ariaDescribedBystringYesForward to aria-describedby to associate the input with help or error text.

TimeInput

Time-only field for hours and minutes. Use a time picker or text input but keep the value string intact.

PropTypeOptionalDescription
idstringNoSet as the input id so labels can target it.
valuestringNoRender this time string as the current value (typically HH:mm).
onChange(value: string) => voidNoCall with the new time string whenever the user edits the field.
disabledbooleanYesWhen true, render the input in a disabled state and prevent edits.
placeholderstringYesShow this hint when the field is empty.
minstringYesApply as the minimum allowed time value.
maxstringYesApply as the maximum allowed time value.
ariaLabelledBystringNoForward to aria-labelledby to associate the input with its label.
ariaDescribedBystringYesForward to aria-describedby to associate the input with help or error text.

SliderInput

Range control for bounded numeric values. Show bounds and current value when available, and treat undefined as no selection.

PropTypeOptionalDescription
valuenumberYesRender this number as the current slider position; omit it to represent an unset value.
onChange(value?: number) => voidNoCall with the new numeric value whenever the slider moves, or undefined if cleared.
disabledbooleanYesWhen true, render the slider in a disabled state and prevent interaction.
minnumberYesUse as the lower bound for the slider range.
maxnumberYesUse as the upper bound for the slider range.
stepnumberYesApply as the slider step increment.
ariaLabelledBystringNoForward to aria-labelledby to associate the slider with its label.
ariaDescribedBystringYesForward to aria-describedby to associate the slider with help or error text.
lowerLabelstringYesDisplay this label near the minimum value marker when provided.
upperLabelstringYesDisplay this label near the maximum value marker when provided.
unitLabelstringYesRender a unit label alongside the current value when provided.

SpinnerInput

Numeric control with stepper affordances for small ranges. It should support typing, step changes, and min/max rules.

PropTypeOptionalDescription
valuenumberYesRender this number as the current value; omit it to represent an empty field.
onChange(value?: number) => voidNoCall with the new numeric value when the user edits or uses the stepper, or undefined when cleared.
disabledbooleanYesWhen true, render the control in a disabled state and prevent interaction.
minnumberYesUse as the lower bound for the value.
maxnumberYesUse as the upper bound for the value.
stepnumberYesApply as the step increment for the control.
ariaLabelledBystringNoForward to aria-labelledby to associate the input with its label.
ariaDescribedBystringYesForward to aria-describedby to associate the input with help or error text.
placeholderstringYesShow this hint when the field is empty.
unitLabelstringYesRender a unit label alongside the input when provided.

SelectInput

Single-select dropdown for option lists. Include disabled legacy entries in the options list when needed and allow clearing the selection when applicable.

PropTypeOptionalDescription
optionsOptionItem[]NoRender these entries as selectable options in the dropdown.
selectedOptionSelectedOptionItemYesRender this option as the current selection, or omit it when empty.
onChange(token?: string) => voidNoCall with the newly selected option token, or undefined when the selection is cleared.
onSearch(query: string) => voidYesCall with the search query when the user types into the control.
specifyOtherOptionOptionItemYesRender an extra option (for example, “Specify other”) alongside the options list.
customOptionFormReactNodeYesRender UI associated with the custom option (for example, a custom value input row).
idstringNoSet as the select element id so labels can target it.
ariaLabelledBystringNoForward to aria-labelledby to associate the select with its label.
ariaDescribedBystringYesForward to aria-describedby to associate the select with help or error text.
disabledbooleanYesWhen true, render the select in a disabled state and prevent changes.
isLoadingbooleanYesWhen true, show a loading indicator or disable option interactions as needed.
placeholderstringYesShow this hint in the input when no option is selected.

The renderer always provides id for option-backed controls. Use it on the primary focusable element and for any combobox/listbox wiring in custom select UIs.

RadioButton

Single radio input used for table/grid selections or custom radio layouts.

PropTypeOptionalDescription
idstringNoSet as the radio input id so labels can target it.
groupNamestringNoUse as the radio group name to keep options exclusive.
valuestringNoSet as the radio value.
checkedbooleanNoRender the radio as selected when true.
onChange() => voidNoCall when the user selects this radio.
ariaLabelledBystringNoForward to aria-labelledby to associate the radio with its label.
ariaDescribedBystringYesForward to aria-describedby to associate the radio with help or error text.
disabledbooleanYesWhen true, render the radio disabled and prevent selection.
labelReactNodeYesRender optional inline label content when provided.

RadioButtonList

Single-select option list presented as radio buttons. Include disabled legacy options in the options list when needed.

PropTypeOptionalDescription
optionsOptionItem[]NoRender these entries as radio options.
selectedOptionSelectedOptionItemYesRender this option as the current selection, or omit it when empty.
onChange(token?: string) => voidNoCall with the newly selected option token, or undefined when the selection is cleared.
specifyOtherOptionOptionItemYesRender an extra option (for example, “Specify other”) alongside the options list.
customOptionFormReactNodeYesRender UI associated with the custom option (for example, a custom value input row).
idstringNoUse as the radio group name/id so options stay grouped.
ariaLabelledBystringNoForward to aria-labelledby to associate the group with its label.
ariaDescribedBystringYesForward to aria-describedby to associate the group with help or error text.
disabledbooleanYesWhen true, render options as disabled and prevent selection changes.
isLoadingbooleanYesWhen true, show a loading indicator or busy state for the list.

Checkbox

Single checkbox used for table/grid selections or custom checkbox layouts.

PropTypeOptionalDescription
idstringNoSet as the checkbox input id so labels can target it.
checkedbooleanNoRender the checkbox as checked when true.
onChange() => voidNoCall when the user toggles this checkbox.
ariaLabelledBystringNoForward to aria-labelledby to associate the checkbox with its label.
ariaDescribedBystringYesForward to aria-describedby to associate the checkbox with help or error text.
disabledbooleanYesWhen true, render the checkbox disabled and prevent toggling.
labelReactNodeYesRender optional inline label content when provided.

CheckboxList

Multi-select option list presented as checkboxes. Support per-option errors and optional custom-option content.

PropTypeOptionalDescription
optionsOptionItem[]NoRender these entries as checkbox options.
selectedOptionsSelectedOptionItem[]NoRender these selections as checked options and use their tokens to match state.
onSelect(token: string) => voidNoCall with the option token when the user checks a box.
onDeselect(token: string) => voidNoCall with the option token when the user unchecks a box.
specifyOtherOptionOptionItemYesRender an extra option (for example, “Specify other”) alongside the options list.
customOptionFormReactNodeYesRender UI associated with the custom option (for example, a custom value input row).
idstringNoUse as the checkbox group name/id so inputs stay grouped.
ariaLabelledBystringNoForward to aria-labelledby to associate the group with its label.
ariaDescribedBystringYesForward to aria-describedby to associate the group with help or error text.
disabledbooleanYesWhen true, render all options as disabled and prevent changes.
isLoadingbooleanYesWhen true, show a loading indicator or busy state for the list.

If a selected option provides errors or ariaDescribedBy, render the error content near that option and attach aria-describedby to the option's focusable element.

MultiSelectInput

Composite multi-select UI that combines a picker, chips, and optional custom-option content. It should display selections as chips and allow removal when permitted.

PropTypeOptionalDescription
optionsOptionItem[]NoRender these entries as options in the picker dropdown.
selectedOptionsSelectedOptionItem[]NoRender these selections as chips and use their tokens to filter options.
onSelect(token: string) => voidNoCall with the selected option token when the user picks an option.
onDeselect(token: string) => voidNoCall with the selected token when the user removes a selection.
onSearch(query: string) => voidYesCall with the search query when the user types into the picker input.
idstringNoSet as the input id so the combobox and listbox can be referenced.
specifyOtherOptionOptionItemYesRender an extra option (for example, “Specify other”) alongside the options list.
ariaLabelledBystringNoForward to aria-labelledby for the picker so it associates with the label.
ariaDescribedBystringYesForward to aria-describedby for the picker so it associates with help or error text.
disabledbooleanYesWhen true, render the picker and chip actions in a disabled state.
isLoadingbooleanYesWhen true, show a loading indicator or busy state for the options.
customOptionFormReactNodeYesRender UI associated with the custom option (for example, a custom value input row).
placeholderstringYesShow this placeholder text in the picker when no value is selected.

When rendering chips or selected rows, attach SelectedOptionItem.ariaDescribedBy to the focusable element for that selection so per-selection errors can be announced.

CustomOptionForm

Layout wrapper for custom option entry flows. Use it to present the custom input along with submit/cancel actions.

PropTypeOptionalDescription
contentReactNodeNoRender the custom input control.
errorsReactNodeYesRender validation or error content associated with the custom input.
submitCustomOptionActionNoConfigure the primary submit action (label, handler, disabled state).
cancelCustomOptionActionNoConfigure the secondary cancel action (label, handler, disabled state).

Use cancel as the "back to options" action and submit to commit the custom value.

FileInput

Attachment picker that handles file selection, display of the selected file, and clearing. Call onChange for the raw file (or undefined when clearing) so the renderer can update the Attachment.

PropTypeOptionalDescription
valueAttachmentYesRender this attachment as the current value; omit it when no file is selected.
idstringNoSet as the input id so labels can target the underlying file input.
ariaLabelledBystringNoForward to aria-labelledby for the file input and any summary region.
ariaDescribedBystringYesForward to aria-describedby for the file input and any summary region.
disabledbooleanYesWhen true, disable file selection and related actions.
acceptstringYesForward to the file input accept attribute to limit selectable file types.
onChange(file?: File) => voidYesCall with the selected file, or undefined when clearing the current file.

AnswerList

Container that lays out one or more answers and an optional add control. It controls spacing and ordering of answer rows.

PropTypeOptionalDescription
childrenReactNodeNoRender the list of answer rows supplied by the renderer.
onAdd() => voidYesWhen provided, render an add‑answer control.
canAddbooleanYesWhen false, render the add control disabled.
addLabelstringYesUse as the add‑answer label for icon-only controls.

AnswerScaffold

Layout for a single answer row, combining the main control, an optional remove action, and nested content such as child nodes and errors.

PropTypeOptionalDescription
controlReactNodeNoRender the main input control for this answer instance.
onRemove() => voidYesWhen provided, render a remove action for this answer.
canRemovebooleanYesWhen false, render the remove action disabled.
errorsReactNodeYesRender per-answer validation errors (Errors).
childrenReactNodeYesRender nested content such as child nodes.

QuestionScaffold

Wrapper around a question that organizes header, control, and validation feedback. Use it as the outer shell for question nodes.

PropTypeOptionalDescription
linkIdstringNoUse for debugging; typically render as a data-linkId attribute and feel free to ignore it.
headerReactNodeYesRender the question header (label, help, legal, flyover).
childrenReactNodeNoRender the question body content, including controls and answer-level errors.
errorsReactNodeYesRender question-level validation errors.

GroupList

Wrapper around a repeating group that holds the collection of instances and the add control.

PropTypeOptionalDescription
linkIdstringNoUse for debugging; typically render as a data-linkId attribute and feel free to ignore it.
headerReactNodeYesRender the header for the repeating group list.
childrenReactNodeNoRender each group instance inside the list.
onAdd() => voidYesWhen provided, render an add‑group control.
canAddbooleanYesWhen false, render the add control disabled.
addLabelstringYesUse as the add‑group label for icon-only controls.

GroupScaffold

Layout shell for a group instance (repeating or not). It can also render an optional remove action and errors.

PropTypeOptionalDescription
headerReactNodeYesRender the group header (label, help, legal, flyover).
childrenReactNodeYesRender the group body content and nested nodes.
errorsReactNodeYesRender per-instance validation errors.
onRemove() => voidYesWhen provided, render a remove action for this instance.
canRemovebooleanYesWhen false, render the remove action disabled.
removeLabelstringYesUse as the remove label for icon-only controls.

Layout wrapper for group nodes rendered with control="header". Use it to style and place header content such as summary blocks or callouts above a group body.

PropTypeOptionalDescription
linkIdstringNoUse for debugging; typically render as a data-linkId attribute and feel free to ignore it.
childrenReactNodeNoRender the header content provided by the renderer.

Layout wrapper for group nodes rendered with control="footer". Use it to style and place footer content such as summaries or actions below a group body.

PropTypeOptionalDescription
linkIdstringNoUse for debugging; typically render as a data-linkId attribute and feel free to ignore it.
childrenReactNodeNoRender the footer content provided by the renderer.

DisplayRenderer

Renderer for display-only nodes such as static text or markdown. It should not expose input controls.

PropTypeOptionalDescription
linkIdstringNoUse for debugging; typically render as a data-linkId attribute and feel free to ignore it.
childrenReactNodeNoRender the display text or markup provided by the renderer.

Stack

List container that renders nodes in order. It should handle spacing and grouping.

PropTypeOptionalDescription
childrenReactNodeNoRender the node items provided by the renderer in order.

Form

Outer wrapper for the questionnaire. If you render a form element, prevent default and call onSubmit; otherwise invoke onSubmit from your own controls. When pagination is provided, render prev/next controls and keep them aligned with submit/cancel.

PropTypeOptionalDescription
onSubmit() => voidYesCall when the user submits; prevent default yourself if you render a form.
onCancel() => voidYesCall when the user cancels the form flow (e.g., resets or exits).
childrenReactNodeNoRender the full form content inside the form element.
paginationFormPaginationYesRender pagination controls and the current/total page context.
titlestringYesRender the form title text.
descriptionstringYesRender the form description text.
errorsReactNodeYesRender the provided error element near the top of the form.
beforeReactNodeYesRender content before the main form body (pinned headers).
afterReactNodeYesRender content after the main form body (actions, footers).

Example patterns:

<form
  onSubmit={(event) => {
    event.preventDefault();
    onSubmit?.();
  }}
>
  {children}
</form>
<div>
  {children}
  <button type="button" onClick={onSubmit}>
    Submit
  </button>
</div>

Table

Tabular layout used by grid-style groups. Render headers and rows based on column and row metadata. Render a row header column for the row content values. When isLoading or errors are provided on a column or row, place them alongside the header content.

PropTypeOptionalDescription
columnsTableColumn[]NoRender these column definitions as table headers.
rowsTableRow[]NoRender these row definitions, including optional row header content and cell content.

TabContainer

Tabbed layout for group panels. Render the active panel, wire ids for aria, and show errors when relevant.

PropTypeOptionalDescription
headerReactNodeYesRender the tab set header content (often the group label).
itemsTabItem[]NoRender each tab item, including its label and panel content.
valuenumberNoUse as the active tab index to show the selected panel.
onChange(index: number) => voidNoCall when the user selects a different tab.
errorsReactNodeYesRender validation or status content associated with the tab set.
linkIdstringNoUse for debugging; typically render as a data-linkId attribute and feel free to ignore it.

Implement tabs with the standard ARIA roles, using buttonId and panelId to wire aria-controls and aria-labelledby.

Data types

Shared data structures referenced by theme component props.

FormPagination

Pagination state used by Form when rendering paged questionnaires.

FieldTypeOptionalDescription
currentnumberNoRender this as the current page number in the navigation UI.
totalnumberNoRender this as the total page count in the navigation UI.
onPrev() => voidNoCall when the user activates the previous-page control.
onNext() => voidNoCall when the user activates the next-page control.
disabledPrevbooleanNoWhen true, render the previous-page control disabled.
disabledNextbooleanNoWhen true, render the next-page control disabled.

OptionItem

Base option shape used by option selectors such as select inputs and radio lists.

FieldTypeOptionalDescription
tokenstringNoUse as the stable option token for selection and updates; safe as a React key.
labelReactNodeNoRender as the visible label for the option; the renderer provides display-ready content.
disabledbooleanYesWhen true, render the option as unavailable and prevent selection.

SelectedOptionItem

Represents a selected option rendered as a chip or a single selection.

FieldTypeOptionalDescription
tokenstringNoUse as a stable identifier when rendering and updating selections; safe as a React key.
labelReactNodeNoRender as the selection's visible label, which may differ from the current options list.
disabledbooleanYesWhen true, render the selection as unavailable.
ariaDescribedBystringYesForward to aria-describedby on the focusable element for this selection.
errorsReactNodeYesRender as error content associated with this selection, near the option.

CustomOptionAction

FieldTypeOptionalDescription
labelstringNoRender as the action label.
onClick() => voidNoCall when the action is activated.
disabledbooleanYesWhen true, render the action disabled and prevent interaction.

Attachment

Attachment shape used by FileInput to display metadata and stored content.

FieldTypeOptionalDescription
titlestringYesDisplay name or title to show for the attachment.
urlstringYesLink target for downloaded or referenced files.
sizenumberYesByte size for the attachment used for display.
contentTypestringYesMIME type used for labeling or preview decisions.
datastringYesBase64-encoded file content for inline attachments.

TableColumn

FieldTypeOptionalDescription
tokenstringNoUse as a stable identifier for the column.
contentReactNodeNoRender as the column header content.
isLoadingbooleanYesWhen true, render a loading indicator near the content.
errorsReactNodeYesRender errors associated with the column header content.

TableRow

FieldTypeOptionalDescription
tokenstringNoUse as a stable identifier for the row.
contentReactNodeNoRender as the row header content.
cellsTableCell[]NoRender these cells for the row, aligned to columns.
isLoadingbooleanYesWhen true, render a loading indicator near the content.
errorsReactNodeYesRender errors associated with the row header content.
onRemove() => voidYesInvoke when the remove action is activated for this row.
canRemovebooleanYesWhen false, render the remove action disabled.
removeLabelstringYesUse as the label for icon-only remove controls.

When any row provides onRemove, render a trailing remove-action column for all rows.

TableCell

FieldTypeOptionalDescription
tokenstringNoUse as a stable identifier for the cell.
contentReactNodeYesRender as the cell content.

TabItem

FieldTypeOptionalDescription
tokenstringNoUse as a stable identifier for the tab; safe as a React key.
labelReactNodeNoRender as the tab button label.
buttonIdstringNoApply as the tab button id and use it for aria-controls.
panelIdstringNoApply as the tab panel id and use it for aria-labelledby.
contentReactNodeNoRender as the panel content for this tab.