{
  "$schema": "https://json-schema.org/draft/2019-09/schema",
  "$id": "https://cdn.jsdelivr.net/npm/lets-form/schemas/react/fields.json",
  "type": "array",
  "items": {
    "required": [
      "component"
    ],
    "type": "object",
    "allOf": [
      {
        "if": {
          "properties": {
            "component": {
              "const": "input-text"
            }
          }
        },
        "then": {
          "properties": {
            "name": {
              "type": "string"
            },
            "label": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "hint": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "placeholder": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "disabled": {
              "type": "boolean"
            },
            "readOnly": {
              "type": "boolean"
            },
            "hidden": {
              "type": "boolean"
            },
            "submitOnEnter": {
              "type": "boolean"
            },
            "fullWidth": {
              "type": "boolean"
            },
            "width": {
              "type": "integer"
            }
          }
        }
      },
      {
        "if": {
          "properties": {
            "component": {
              "const": "select"
            }
          }
        },
        "then": {
          "properties": {
            "name": {
              "type": "string"
            },
            "label": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "hint": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "placeholder": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "options": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "value": {
                    "type": "string"
                  },
                  "label": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "$ref": "#/$defs/i18n"
                      }
                    ]
                  },
                  "image": {
                    "type": "string"
                  }
                }
              }
            },
            "value": {
              "type": "string"
            },
            "image": {
              "type": "string"
            },
            "showImageOptions": {
              "type": "boolean"
            },
            "filterKey": {
              "type": "string"
            },
            "filterValue": {
              "type": "string"
            },
            "disabled": {
              "type": "boolean"
            },
            "readOnly": {
              "type": "boolean"
            },
            "hidden": {
              "type": "boolean"
            },
            "fullWidth": {
              "type": "boolean"
            },
            "width": {
              "type": "integer"
            }
          }
        }
      },
      {
        "if": {
          "properties": {
            "component": {
              "const": "group"
            }
          }
        },
        "then": {
          "properties": {
            "name": {
              "type": "string"
            },
            "label": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "hidden": {
              "type": "boolean"
            },
            "align": {
              "type": "string",
              "enum": [
                "left",
                "center",
                "right"
              ]
            },
            "collapsible": {
              "type": "boolean"
            },
            "open": {
              "type": "boolean"
            },
            "border": {
              "type": "string",
              "enum": [
                "top",
                "bottom",
                "topBottom",
                "boxed"
              ]
            }
          }
        }
      },
      {
        "if": {
          "properties": {
            "component": {
              "const": "object"
            }
          }
        },
        "then": {
          "properties": {
            "name": {
              "type": "string"
            },
            "label": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "hidden": {
              "type": "boolean"
            },
            "align": {
              "type": "string",
              "enum": [
                "left",
                "center",
                "right"
              ]
            },
            "collapsible": {
              "type": "boolean"
            },
            "open": {
              "type": "boolean"
            },
            "border": {
              "type": "string",
              "enum": [
                "top",
                "bottom",
                "topBottom",
                "boxed"
              ]
            }
          }
        }
      },
      {
        "if": {
          "properties": {
            "component": {
              "const": "two-columns"
            }
          }
        },
        "then": {
          "properties": {
            "name": {
              "type": "string"
            },
            "layout": {
              "type": "string",
              "enum": [
                "layout-1-1",
                "layout-1-2",
                "layout-1-3",
                "layout-1-4",
                "layout-2-1",
                "layout-3-1",
                "layout-4-1",
                "layout-2-3",
                "layout-3-2",
                "layout-0-1",
                "layout-1-0"
              ]
            },
            "leftAlignment": {
              "type": "string",
              "enum": [
                "auto",
                "baseline",
                "center",
                "end",
                "flex-end",
                "flex-start",
                "inherit",
                "initial",
                "normal",
                "revert",
                "self-end",
                "self-start",
                "start",
                "stretch",
                "unset"
              ]
            },
            "rightAlignment": {
              "type": "string",
              "enum": [
                "auto",
                "baseline",
                "center",
                "end",
                "flex-end",
                "flex-start",
                "inherit",
                "initial",
                "normal",
                "revert",
                "self-end",
                "self-start",
                "start",
                "stretch",
                "unset"
              ]
            },
            "hidden": {
              "type": "boolean"
            }
          }
        }
      },
      {
        "if": {
          "properties": {
            "component": {
              "const": "three-columns"
            }
          }
        },
        "then": {
          "properties": {
            "name": {
              "type": "string"
            },
            "layout": {
              "type": "string",
              "enum": [
                "layout-0-1-0",
                "layout-1-0-0",
                "layout-1-1-1",
                "layout-1-1-2",
                "layout-1-2-1",
                "layout-2-1-1",
                "layout-1-1-3",
                "layout-1-3-1",
                "layout-3-1-1"
              ]
            },
            "leftAlignment": {
              "type": "string",
              "enum": [
                "auto",
                "baseline",
                "center",
                "end",
                "flex-end",
                "flex-start",
                "inherit",
                "initial",
                "normal",
                "revert",
                "self-end",
                "self-start",
                "start",
                "stretch",
                "unset"
              ]
            },
            "centerAlignment": {
              "type": "string",
              "enum": [
                "auto",
                "baseline",
                "center",
                "end",
                "flex-end",
                "flex-start",
                "inherit",
                "initial",
                "normal",
                "revert",
                "self-end",
                "self-start",
                "start",
                "stretch",
                "unset"
              ]
            },
            "rightAlignment": {
              "type": "string",
              "enum": [
                "auto",
                "baseline",
                "center",
                "end",
                "flex-end",
                "flex-start",
                "inherit",
                "initial",
                "normal",
                "revert",
                "self-end",
                "self-start",
                "start",
                "stretch",
                "unset"
              ]
            },
            "hidden": {
              "type": "boolean"
            }
          }
        }
      },
      {
        "if": {
          "properties": {
            "component": {
              "const": "columns"
            }
          }
        },
        "then": {
          "properties": {
            "name": {
              "type": "string"
            },
            "columns": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "alignment": {
                    "type": "string",
                    "enum": [
                      "auto",
                      "baseline",
                      "center",
                      "end",
                      "flex-end",
                      "flex-start",
                      "inherit",
                      "initial",
                      "normal",
                      "revert",
                      "self-end",
                      "self-start",
                      "start",
                      "stretch",
                      "unset"
                    ]
                  },
                  "size": {
                    "type": "integer"
                  },
                  "hidden": {
                    "type": "string"
                  }
                }
              }
            },
            "alignment": {
              "type": "string",
              "enum": [
                "auto",
                "baseline",
                "center",
                "end",
                "flex-end",
                "flex-start",
                "inherit",
                "initial",
                "normal",
                "revert",
                "self-end",
                "self-start",
                "start",
                "stretch",
                "unset"
              ]
            },
            "size": {
              "type": "integer"
            },
            "hidden": {
              "type": "boolean"
            }
          }
        }
      },
      {
        "if": {
          "properties": {
            "component": {
              "const": "array"
            }
          }
        },
        "then": {
          "properties": {
            "name": {
              "type": "string"
            },
            "label": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "hint": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "disabled": {
              "type": "boolean"
            },
            "readOnly": {
              "type": "boolean"
            },
            "hidden": {
              "type": "boolean"
            },
            "align": {
              "type": "string",
              "enum": [
                "top",
                "center",
                "bottom"
              ]
            },
            "alignOffset": {
              "type": "integer"
            },
            "arrayType": {
              "type": "string",
              "enum": [
                "arrayOfObject",
                "arrayOfValues",
                "commaSeparated"
              ]
            }
          }
        }
      },
      {
        "if": {
          "properties": {
            "component": {
              "const": "input-number"
            }
          }
        },
        "then": {
          "properties": {
            "name": {
              "type": "string"
            },
            "label": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "hint": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "placeholder": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "disabled": {
              "type": "boolean"
            },
            "readOnly": {
              "type": "boolean"
            },
            "hidden": {
              "type": "boolean"
            },
            "min": {
              "type": "integer"
            },
            "step": {
              "type": "integer"
            },
            "max": {
              "type": "integer"
            },
            "fullWidth": {
              "type": "boolean"
            },
            "width": {
              "type": "integer"
            }
          }
        }
      },
      {
        "if": {
          "properties": {
            "component": {
              "const": "date"
            }
          }
        },
        "then": {
          "properties": {
            "name": {
              "type": "string"
            },
            "label": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "hint": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "placeholder": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "disabled": {
              "type": "boolean"
            },
            "readOnly": {
              "type": "boolean"
            },
            "hidden": {
              "type": "boolean"
            }
          }
        }
      },
      {
        "if": {
          "properties": {
            "component": {
              "const": "checkbox"
            }
          }
        },
        "then": {
          "properties": {
            "name": {
              "type": "string"
            },
            "label": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "hint": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "disabled": {
              "type": "boolean"
            },
            "readOnly": {
              "type": "boolean"
            },
            "hidden": {
              "type": "boolean"
            }
          }
        }
      },
      {
        "if": {
          "properties": {
            "component": {
              "const": "textarea"
            }
          }
        },
        "then": {
          "properties": {
            "name": {
              "type": "string"
            },
            "label": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "hint": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "placeholder": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "disabled": {
              "type": "boolean"
            },
            "readOnly": {
              "type": "boolean"
            },
            "hidden": {
              "type": "boolean"
            },
            "fullWidth": {
              "type": "boolean"
            },
            "width": {
              "type": "integer"
            },
            "rows": {
              "type": "integer"
            }
          }
        }
      },
      {
        "if": {
          "properties": {
            "component": {
              "const": "placeholder"
            }
          }
        },
        "then": {
          "properties": {
            "name": {
              "type": "string"
            },
            "label": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "hint": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "text": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "hidden": {
              "type": "boolean"
            }
          }
        }
      },
      {
        "if": {
          "properties": {
            "component": {
              "const": "placeholder-image"
            }
          }
        },
        "then": {
          "properties": {
            "name": {
              "type": "string"
            },
            "url": {
              "type": "string"
            },
            "align": {
              "type": "string",
              "enum": [
                "left",
                "center",
                "right"
              ]
            },
            "hidden": {
              "type": "boolean"
            },
            "maxWidth": {
              "type": "integer"
            },
            "maxHeight": {
              "type": "integer"
            },
            "marginTop": {
              "type": "integer"
            },
            "marginBottom": {
              "type": "integer"
            }
          }
        }
      },
      {
        "if": {
          "properties": {
            "component": {
              "const": "button"
            }
          }
        },
        "then": {
          "properties": {
            "name": {
              "type": "string"
            },
            "buttonType": {
              "type": "string",
              "enum": [
                "toggle",
                "link"
              ]
            },
            "labelOn": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "iconOn": {
              "type": "string"
            },
            "labelOff": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "iconOff": {
              "type": "string"
            },
            "initialValue": {
              "type": "boolean"
            },
            "labelLink": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "iconLink": {
              "type": "string"
            },
            "href": {
              "type": "string"
            },
            "hint": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "fullWidth": {
              "type": "boolean"
            },
            "width": {
              "type": "integer"
            },
            "hidden": {
              "type": "boolean"
            }
          }
        }
      },
      {
        "if": {
          "properties": {
            "component": {
              "const": "divider"
            }
          }
        },
        "then": {
          "properties": {
            "name": {
              "type": "string"
            },
            "size": {
              "type": "integer"
            },
            "color": {
              "type": "string"
            },
            "hidden": {
              "type": "boolean"
            }
          }
        }
      },
      {
        "if": {
          "properties": {
            "component": {
              "const": "datetime"
            }
          }
        },
        "then": {
          "properties": {
            "name": {
              "type": "string"
            },
            "label": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "hint": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "placeholder": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "disabled": {
              "type": "boolean"
            },
            "readOnly": {
              "type": "boolean"
            },
            "hidden": {
              "type": "boolean"
            }
          }
        }
      },
      {
        "if": {
          "properties": {
            "component": {
              "const": "upload"
            }
          }
        },
        "then": {
          "properties": {
            "name": {
              "type": "string"
            },
            "label": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "hint": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "disabled": {
              "type": "boolean"
            },
            "hidden": {
              "type": "boolean"
            },
            "accept": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "acceptedFile": {
                    "type": "string"
                  }
                }
              }
            },
            "acceptedFile": {
              "type": "string"
            },
            "uploadButtonLabel": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "multiple": {
              "type": "boolean"
            }
          }
        }
      },
      {
        "if": {
          "properties": {
            "component": {
              "const": "time"
            }
          }
        },
        "then": {
          "properties": {
            "name": {
              "type": "string"
            },
            "label": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "hint": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "placeholder": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "disabled": {
              "type": "boolean"
            },
            "readOnly": {
              "type": "boolean"
            },
            "hidden": {
              "type": "boolean"
            }
          }
        }
      },
      {
        "if": {
          "properties": {
            "component": {
              "const": "hidden"
            }
          }
        },
        "then": {
          "properties": {
            "name": {
              "type": "string"
            },
            "info": {
              "type": "string"
            }
          }
        }
      },
      {
        "if": {
          "properties": {
            "component": {
              "const": "currency"
            }
          }
        },
        "then": {
          "properties": {
            "name": {
              "type": "string"
            },
            "label": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "hint": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "placeholder": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/i18n"
                }
              ]
            },
            "disabled": {
              "type": "boolean"
            },
            "readOnly": {
              "type": "boolean"
            },
            "hidden": {
              "type": "boolean"
            },
            "currency": {
              "type": "string",
              "enum": [
                "AFN",
                "ALL",
                "DZD",
                "ARS",
                "AMD",
                "AUD",
                "AZN",
                "BHD",
                "BDT",
                "BYN",
                "BZD",
                "BOB",
                "BAM",
                "BWP",
                "BRL",
                "GBP",
                "BND",
                "BGN",
                "BIF",
                "XOF",
                "XAF",
                "KHR",
                "CAD",
                "CVE",
                "CLP",
                "CNY",
                "COP",
                "KMF",
                "CDF",
                "CRC",
                "HRK",
                "CZK",
                "DKK",
                "DJF",
                "DOP",
                "EGP",
                "ERN",
                "EEK",
                "ETB",
                "EUR",
                "GEL",
                "GHS",
                "GTQ",
                "GNF",
                "HNL",
                "HKD",
                "HUF",
                "ISK",
                "INR",
                "IDR",
                "IRR",
                "IQD",
                "ILS",
                "JMD",
                "JPY",
                "JOD",
                "KZT",
                "KES",
                "KWD",
                "LVL",
                "LBP",
                "LYD",
                "LTL",
                "MOP",
                "MKD",
                "MGA",
                "MYR",
                "MUR",
                "MXN",
                "MDL",
                "MAD",
                "MZN",
                "MMK",
                "NAD",
                "NPR",
                "TWD",
                "NZD",
                "NIO",
                "NGN",
                "NOK",
                "OMR",
                "PKR",
                "PAB",
                "PYG",
                "PEN",
                "PHP",
                "PLN",
                "QAR",
                "RON",
                "RUB",
                "RWF",
                "SAR",
                "RSD",
                "SGD",
                "SOS",
                "ZAR",
                "KRW",
                "LKR",
                "SDG",
                "SEK",
                "CHF",
                "SYP",
                "TZS",
                "THB",
                "TOP",
                "TTD",
                "TND",
                "TRY",
                "USD",
                "UGX",
                "UAH",
                "AED",
                "UYU",
                "UZS",
                "VEF",
                "VND",
                "YER",
                "ZMK",
                "ZWL"
              ]
            },
            "align": {
              "type": "string",
              "enum": [
                "left",
                "center",
                "right"
              ]
            },
            "fullWidth": {
              "type": "boolean"
            },
            "width": {
              "type": "integer"
            }
          }
        }
      }
    ]
  },
  "$defs": {
    "i18n": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "propertyNames": {
        "enum": [
          "af-ZA",
          "ar",
          "bg-BG",
          "ca-AD",
          "cs-CZ",
          "cy-GB",
          "da-DK",
          "de-AT",
          "de-CH",
          "de-DE",
          "el-GR",
          "en-GB",
          "en-US",
          "es-CL",
          "es-ES",
          "es-MX",
          "et-EE",
          "eu",
          "fa-IR",
          "fi-FI",
          "fr-CA",
          "fr-FR",
          "he-IL",
          "hi-IN",
          "hr-HR",
          "hu-HU",
          "id-ID",
          "is-IS",
          "it-IT",
          "ja-JP",
          "km-KH",
          "ko-KR",
          "la",
          "lt-LT",
          "lv-LV",
          "mn-MN",
          "nb-NO",
          "nl-NL",
          "nn-NO",
          "pl-PL",
          "pt-BR",
          "pt-PT",
          "ro-RO",
          "ru-RU",
          "sk-SK",
          "sl-SI",
          "sr-RS",
          "sv-SE",
          "th-TH",
          "tr-TR",
          "uk-UA",
          "vi-VN",
          "zh-CN",
          "zh-TW"
        ]
      }
    }
  }
}