[
  {
    "name": "label",
    "type": "string",
    "required": true,
    "description": "The label for the text input field."
  },
  {
    "name": "headingLevel",
    "type": "number",
    "required": false,
    "description": "The heading level which represents an element from `<h1>` through to `<h6>`. Leave blank or set to `0` to use a plain `<label>` element with no heading."
  },
  {
    "name": "headingSize",
    "type": "string",
    "required": false,
    "description": "The physical size of the text input title (`xl`, `l`, `m`, `s` or `xs`).",
    "default": "m"
  },
  {
    "name": "id",
    "type": "string",
    "required": true,
    "description": "A unique ID for the text input component."
  },
  {
    "name": "name",
    "type": "string",
    "required": true,
    "description": "The name of the form field."
  },
  {
    "name": "hint",
    "type": "string",
    "required": false,
    "description": "An optional hint to display above the form field."
  },
  {
    "name": "value",
    "type": "string",
    "required": false,
    "description": "The form field value."
  },
  {
    "name": "error",
    "type": "object",
    "required": false,
    "description": "If set, the details of any errors.",
    "params": [
      {
        "name": "text",
        "type": "string",
        "required": true,
        "description": "The error text to display."
      }
    ]
  },
  {
    "name": "type",
    "type": "string",
    "required": false,
    "description": "Set the type of the text input (for example `text`, `email`, `tel`, etc.). Use with caution to avoid enforcing HTML5 validation.",
    "default": "text"
  },
  {
    "name": "password",
    "type": "boolean",
    "required": false,
    "description": "If `true`, the text input will be a password field.",
    "default": false
  },
  {
    "name": "newPassword",
    "type": "boolean",
    "required": false,
    "description": "If `true`, the browser may try to autofill the password field with a new password. If left as `false`, the browser may try to autofill the password field with an existing password. Ignored when `password` is `false`.",
    "default": false
  },
  {
    "name": "inputmode",
    "type": "string",
    "required": false,
    "description": "Change the [`inputmode` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/inputmode) to allow user devices to display the most appropriate input method. For example, use `numeric` for number inputs."
  },
  {
    "name": "spellcheck",
    "type": "boolean",
    "required": false,
    "description": "If `true`, enable [spellcheck](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/spellcheck) for the text input. Ignored when `password` is `true`.",
    "default": false
  },
  {
    "name": "autocapitalize",
    "type": "string",
    "required": false,
    "description": "If `true`, enable [automatic capitalization](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/autocapitalize) for the text input. Ignored when `password` is `true`. This is not supported in all browsers.",
    "default": "off"
  },
  {
    "name": "autocorrect",
    "type": "boolean",
    "required": false,
    "description": "If `true`, enable [autocorrect](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/autocorrect) for the text input. Ignored when `password` is `true`. This is not supported in all browsers.",
    "default": false
  },
  {
    "name": "autocomplete",
    "type": "string",
    "required": false,
    "description": "Set the [`autocomplete` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/autocomplete) to control browser autofill behaviour. Ignored when `password` is `true`.",
    "default": false
  },
  {
    "name": "size",
    "type": "string",
    "required": false,
    "description": "Set the width of the text input. Can be `xs`, `s`, `m`, `l` or `xl`."
  },
  {
    "name": "formItemClasses",
    "type": "string",
    "required": false,
    "description": "Classes to add to the text input group."
  },
  {
    "name": "formItemAttributes",
    "type": "object",
    "required": false,
    "description": "HTML attributes (for example data attributes) to add to the text input form group."
  },
  {
    "name": "classes",
    "type": "string",
    "required": false,
    "description": "Classes to add to the text input."
  },
  {
    "name": "attributes",
    "type": "object",
    "required": false,
    "description": "HTML attributes (for example data attributes) to add to the text input."
  }
]
