Text input with an Add button that appends each entry to a list beneath it, where every row can be deleted individually. Use it when users build up their own list of free-text values rather than picking from a fixed set.
The entry list has a fixed height (--opus-list-field-height, 200px by default) and scrolls inside it, so several of these stack in one form with predictable spacing no matter how many entries each one holds.
Prefer Chip input when the values are short and should stay inside the input box, and Dual list builder when users choose from predefined options instead of typing their own.
| Prop | Type | Default | Description |
|---|---|---|---|
value | string[] | — | Entries rendered in the list. |
onChange | (value: string[]) => void | — | Called with the next entry list. |
placeholder | string | "Add an entry…" | Input placeholder. |
addLabel | string | "Add" | Label for the add button. |
emptyMessage | string | "No entries yet" | Shown when the list is empty. |
disabled | boolean | false | Disables the input, add button, and row deletion. |
readOnly | boolean | false | Shows the entries without the composer or remove buttons. |
reorderable | boolean | true | Enables dragging rows into a new order. |
size | "sm" | "md" | "lg" | "md" | Control height and font size. |
mode | "stacked" | "flagged" | "stacked" | Label and control layout. |
labelPosition | "left" | "right" | "left" | Label placement in flagged mode. |
error | string | — | Validation message; sets aria-invalid. |
help | string | — | Help text linked through aria-describedby. |
required | boolean | false | Marks the field required for assistive tech. |
FieldShell for label, help, error, and required wiring.ul with its own accessible name, and remove controls are real buttons labelled Remove {entry}.Copy this complete component into a page file. Edit and run it in the Playground.
Loading editor…