[
    {
        "name": "id",
        "type": "string",
        "required": true,
        "description": "The id of the input."
    },
    {
        "name": "name",
        "type": "string",
        "required": true,
        "description": "The name of the input, which is submitted with the form data."
    },
    {
        "name": "type",
        "type": "string",
        "required": false,
        "description": "Type of input control to render. Defaults to \"text\"."
    },
    {
        "name": "inputmode",
        "type": "string",
        "required": false,
        "description": "Optional value for [inputmode](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode)."
    },
    {
        "name": "value",
        "type": "string",
        "required": false,
        "description": "Optional initial value of the input."
    },
    {
        "name": "describedBy",
        "type": "string",
        "required": false,
        "description": "One or more element IDs to add to the `aria-describedby` attribute, used to provide additional descriptive information for screenreader users."
    },
    {
        "name": "label",
        "type": "object",
        "required": true,
        "description": "Options for the label component.",
        "isComponent": true
    },
    {
        "name": "hint",
        "type": "object",
        "required": false,
        "description": "Options for the hint component.",
        "isComponent": true
    },
    {
        "name": "errorMessage",
        "type": "object",
        "required": false,
        "description": "Options for the error message component. The error message component will not display if you use a falsy value for `errorMessage`, for example `false` or `null`.",
        "isComponent": true
    },
    {
        "name": "prefix",
        "type": "object",
        "required": false,
        "description": "Options for the prefix element.",
        "params": [
            {
                "name": "text",
                "type": "string",
                "required": true,
                "description": "Required. If `html` is set, this is not required. Text to use within the label. If `html` is provided, the `text` argument will be ignored."
            },
            {
                "name": "html",
                "type": "string",
                "required": true,
                "description": "Required. If `text` is set, this is not required. HTML to use within the label. If `html` is provided, the `text` argument will be ignored."
            },
            {
                "name": "classes",
                "type": "string",
                "required": false,
                "description": "Classes to add to the prefix."
            },
            {
                "name": "attributes",
                "type": "object",
                "required": false,
                "description": "HTML attributes (for example data attributes) to add to the prefix element."
            }
        ]
    },
    {
        "name": "suffix",
        "type": "object",
        "required": false,
        "description": "Options for the suffix element.",
        "params": [
            {
                "name": "text",
                "type": "string",
                "required": true,
                "description": "Required. If `html` is set, this is not required. Text to use within the label. If `html` is provided, the `text` argument will be ignored."
            },
            {
                "name": "html",
                "type": "string",
                "required": true,
                "description": "Required. If `text` is set, this is not required. HTML to use within the label. If `html` is provided, the `text` argument will be ignored."
            },
            {
                "name": "classes",
                "type": "string",
                "required": false,
                "description": "Classes to add to the suffix element."
            },
            {
                "name": "attributes",
                "type": "object",
                "required": false,
                "description": "HTML attributes (for example data attributes) to add to the suffix element."
            }
        ]
    },
    {
        "name": "formGroup",
        "type": "object",
        "required": false,
        "description": "Options for the form-group wrapper",
        "params": [
            {
                "name": "classes",
                "type": "string",
                "required": false,
                "description": "Classes to add to the form group (e.g. to show error state for the whole group)"
            }
        ]
    },
    {
        "name": "classes",
        "type": "string",
        "required": false,
        "description": "Classes to add to the input."
    },
    {
        "name": "autocomplete",
        "type": "string",
        "required": false,
        "description": "Attribute to [identify input purpose](https://www.w3.org/WAI/WCAG21/Understanding/identify-input-purpose.html), for instance \"postal-code\" or \"username\". See [autofill](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill) for full list of attributes that can be used."
    },
    {
        "name": "pattern",
        "type": "string",
        "required": false,
        "description": "Attribute to [provide a regular expression pattern](https://www.w3.org/TR/html51/sec-forms.html#the-pattern-attribute), used to match allowed character combinations for the input value."
    },
    {
        "name": "spellcheck",
        "type": "boolean",
        "required": false,
        "description": "Optional field to enable or disable the spellcheck attribute on the input."
    },
    {
        "name": "attributes",
        "type": "object",
        "required": false,
        "description": "HTML attributes (for example data attributes) to add to the anchor tag."
    }
]