---
state: wip
---
# FormInput
Base component for making all types of form components.
This component should 'generally' not be used in application code, but instead
be used as a base component for creating application form components/elements.
This component should contain the shared functionality for all form
components, such as labels, errors, notes/messages/notices etc etc. Specific
input types should be provided using the `input` slot.
The following example shows how to create new form input components and
'generally' shouldn't be used in application code.
```hbs preview-template
<FormInput
@name="single"
@help="Help me if you can, I'm feeling down"
>
<:label>
Single Line Text Input
</:label>
<:input>
<input type="text" />
</:input>
</FormInput>
```
## Arguments
| Argument | Type | Default | Description |
| --- | --- | --- | --- |
| `name` | `String` | '' | An identifier for retriving values/errors etc for this input |
| `help` | `String` | | Provide some help text for the input (consider using `@validations` instead) |
| `validations` | `Object` | | A `validations` object |
| `chart` | `Object` | | A StateChart object (implementing `state` and `dispatch` to be passed to the underlying `validate` modifier |
### Slots
| Name | Description |
| --- | --- |
| `input` | Slot to hold the specific input element |
| `label` | The label to be rendered |
## See
- [Template Source Code](./index.hbs)
---