{
  "type": "text-input",
  "description": "Text input with optional param sync.",
  "hasChildren": false,
  "propsSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "label": {
        "description": "Label text displayed above the input",
        "type": "string"
      },
      "param": {
        "description": "The canvas parameter name to sync with, or form field name if inside a Form component. If omitted, works as a regular input.",
        "type": "string"
      },
      "placeholder": {
        "default": "Enter value...",
        "type": "string"
      },
      "defaultValue": {
        "default": "",
        "type": "string"
      },
      "submitMode": {
        "default": "type",
        "type": "string",
        "enum": [
          "type",
          "focus",
          "submit"
        ],
        "description": "Controls when the input value is sent: type sends while typing, focus sends on blur, and submit sends only from the inline submit button or Enter key."
      },
      "debounceMs": {
        "default": 300,
        "type": "integer",
        "minimum": 0,
        "maximum": 9007199254740991
      },
      "disabled": {
        "default": false,
        "type": "boolean"
      },
      "type": {
        "default": "text",
        "type": "string"
      },
      "style": {
        "description": "Inline CSS styles as a plain CSS string (e.g., \"color: red; font-size: 16px\")",
        "type": "string"
      }
    },
    "description": "A text input field that can optionally sync with canvas parameters. If param is provided, syncs with that parameter or form; otherwise works as a regular input."
  }
}
