[
  {
    "id": "text",
    "fields": [
      {
        "component": "richtext",
        "name": "text",
        "label": "Text",
        "valueType": "string"
      },
      {
        "component": "select",
        "name": "alignment",
        "label": "Text Alignment",
        "valueType": "string",
        "options": [
          {
            "name": "Left",
            "value": "left"
          },
          {
            "name": "Center",
            "value": "center"
          },
          {
            "name": "Right",
            "value": "right"
          }
        ]
      }
    ]
  },
  {
    "id": "title",
    "fields": [
      {
        "component": "text",
        "name": "title",
        "label": "Title",
        "valueType": "string"
      },
      {
        "component": "text",
        "name": "link",
        "label": "Link",
        "valueType": "string"
      },
      {
        "component": "select",
        "name": "type",
        "label": "Title Level",
        "valueType": "string",
        "options": [
          {
            "name": "H1",
            "value": "h1"
          },
          {
            "name": "H2",
            "value": "h2"
          },
          {
            "name": "H3",
            "value": "h3"
          },
          {
            "name": "H4",
            "value": "h4"
          },
          {
            "name": "H5",
            "value": "h5"
          },
          {
            "name": "H6",
            "value": "h6"
          }
        ]
      },
      {
        "component": "select",
        "name": "alignment",
        "label": "Alignment",
        "valueType": "string",
        "options": [
          {
            "name": "Left",
            "value": "left"
          },
          {
            "name": "Center",
            "value": "center"
          },
          {
            "name": "Right",
            "value": "right"
          }
        ]
      },
      {
        "component": "text",
        "name": "cssClass",
        "label": "CSS Class",
        "valueType": "string"
      }
    ]
  },
  {
    "id": "image",
    "fields": [
      {
        "component": "reference",
        "name": "image",
        "label": "AEM Content Picker",
        "valueType": "string"
      },
      {
        "component": "text",
        "name": "alt",
        "label": "Alt Text",
        "valueType": "string"
      },
      {
        "component": "boolean",
        "name": "decorative",
        "label": "Decorative Image",
        "valueType": "boolean"
      },
      {
        "component": "boolean",
        "name": "lightbox",
        "label": "Enable Lightbox",
        "valueType": "boolean"
      }
    ]
  },
  {
    "id": "video",
    "fields": [
      {
        "component": "select",
        "name": "source",
        "label": "Video Source",
        "valueType": "string",
        "options": [
          {
            "name": "YouTube",
            "value": "youtube"
          },
          {
            "name": "Vimeo",
            "value": "vimeo"
          },
          {
            "name": "Self Hosted",
            "value": "self"
          }
        ]
      },
      {
        "component": "container",
        "name": "youtubeSettings",
        "label": "YouTube Settings",
        "condition": {
          "===": [
            {
              "var": "source"
            },
            "youtube"
          ]
        },
        "fields": [
          {
            "component": "text",
            "name": "youtubeLink",
            "label": "YouTube Video Link",
            "valueType": "string"
          }
        ]
      },
      {
        "component": "container",
        "name": "vimeoSettings",
        "label": "Vimeo Settings",
        "condition": {
          "===": [
            {
              "var": "source"
            },
            "vimeo"
          ]
        },
        "fields": [
          {
            "component": "text",
            "name": "vimeoLink",
            "label": "Vimeo Video Link",
            "valueType": "string"
          }
        ]
      },
      {
        "component": "container",
        "name": "selfHostedSettings",
        "label": "Self Hosted Settings",
        "condition": {
          "===": [
            {
              "var": "source"
            },
            "self"
          ]
        },
        "fields": [
          {
            "component": "radio-group",
            "label": "Options",
            "name": "selfHostedLink",
            "valueType": "string",
            "options": [
              {
                "name": "AEM Hosted",
                "value": "aem"
              },
              {
                "name": "External",
                "value": "external"
              }
            ]
          },
          {
            "component": "text",
            "name": "externalLink",
            "label": "Self Hosted Video Link",
            "valueType": "string",
            "condition": {
              "===": [
                {
                  "var": "selfHostedLink"
                },
                "external"
              ]
            }
          },
          {
            "component": "reference",
            "name": "aemHosted",
            "label": "AEM Content Picker",
            "valueType": "string",
            "condition": {
              "===": [
                {
                  "var": "selfHostedLink"
                },
                "aem"
              ]
            }
          }
        ]
      },
      {
        "component": "reference",
        "name": "poster",
        "label": "Poster Image",
        "valueType": "string"
      },
      {
        "component": "boolean",
        "name": "autoplay",
        "label": "Autoplay",
        "valueType": "boolean"
      },
      {
        "component": "boolean",
        "name": "loop",
        "label": "Loop",
        "valueType": "boolean"
      },
      {
        "component": "boolean",
        "name": "muted",
        "label": "Muted",
        "valueType": "boolean"
      },
      {
        "component": "boolean",
        "name": "fullwidth",
        "label": "Full Width",
        "valueType": "boolean"
      },
      {
        "component": "number",
        "name": "width",
        "label": "Width",
        "valueType": "number",
        "condition": {
          "===": [
            {
              "var": "fullwidth"
            },
            false
          ]
        }
      },
      {
        "component": "select",
        "name": "alignment",
        "label": "Alignment",
        "valueType": "string",
        "options": [
          {
            "name": "Left",
            "value": "left"
          },
          {
            "name": "Center",
            "value": "center"
          },
          {
            "name": "Right",
            "value": "right"
          }
        ],
        "condition": {
          "===": [
            {
              "var": "fullwidth"
            },
            false
          ]
        }
      },
      {
        "component": "text",
        "name": "cssClass",
        "label": "CSS Class",
        "valueType": "string"
      }
    ]
  },
  {
    "id": "button",
    "fields": [
      {
        "component": "text",
        "name": "text",
        "label": "Button Text",
        "valueType": "string"
      },
      {
        "component": "text",
        "name": "link",
        "label": "Button Link",
        "valueType": "string"
      },
      {
        "component": "boolean",
        "name": "openInNewTab",
        "label": "Open in New Tab",
        "valueType": "boolean"
      }
    ]
  },
  {
    "id": "teaser",
    "fields": [
      {
        "component": "text",
        "name": "pretitle",
        "label": "Pre Title",
        "valueType": "string"
      },
      {
        "component": "text",
        "name": "title",
        "label": "Title",
        "valueType": "string"
      },
      {
        "component": "text",
        "name": "description",
        "label": "Description",
        "valueType": "string"
      },
      {
        "component": "container",
        "name": "button",
        "label": "Button Settings",
        "fields": [
          {
            "component": "text",
            "name": "buttonText",
            "label": "Button Text",
            "valueType": "string"
          },
          {
            "component": "text",
            "name": "buttonLink",
            "label": "Button Link",
            "valueType": "string"
          },
          {
            "component": "boolean",
            "name": "openButtonInNewTab",
            "label": "Open in New Tab",
            "valueType": "boolean"
          }
        ]
      }
    ]
  },
  {
    "id": "container",
    "fields": [
      {
        "component": "text",
        "name": "cssClass",
        "label": "CSS Class",
        "valueType": "string"
      }
    ]
  },
  {
    "id": "multi-column-container",
    "fields": [
      {
        "component": "number",
        "name": "columns",
        "label": "Number of Columns",
        "valueType": "number",
        "value": 2,
        "validation": {
          "numberMin": 2,
          "numberMax": 4
        }
      },
      {
        "component": "select",
        "name": "column-layout",
        "label": "Column Layout",
        "valueType": "string",
        "options": [
          {
            "name": "1:1",
            "value": "1:1"
          },
          {
            "name": "1:2",
            "value": "1:2"
          },
          {
            "name": "2:1",
            "value": "2:1"
          },
          {
            "name": "1:3",
            "value": "1:3"
          },
          {
            "name": "3:1",
            "value": "3:1"
          }
        ],
        "condition": {
          "===": [
            {
              "var": "columns"
            },
            2
          ]
        }
      }
    ]
  },
  {
    "id": "accordion",
    "fields": [
      {
        "component": "text",
        "name": "cssClass",
        "label": "CSS Class",
        "valueType": "string"
      }
    ]
  },
  {
    "id": "accordion-item",
    "fields": [
      {
        "component": "text",
        "name": "title",
        "label": "Title",
        "valueType": "string"
      }
    ]
  },
  {
    "id": "gallery",
    "fields": [
      {
        "component": "container",
        "name": "images",
        "label": "Images",
        "multi": true,
        "fields": [
          {
            "component": "reference",
            "name": "image",
            "label": "AEM Content Picker",
            "valueType": "string"
          },
          {
            "component": "text",
            "name": "alt",
            "label": "Alt Text",
            "valueType": "string"
          }
        ]
      }
    ]
  },
  {
    "id": "slider",
    "fields": [
      {
        "component": "number",
        "name": "slidesToShow",
        "label": "Slides to Show",
        "valueType": "number",
        "value": 3,
        "validation": {
          "numberMin": 1,
          "numberMax": 4
        }
      },
      {
        "component": "boolean",
        "name": "autoplay",
        "label": "Autoplay",
        "valueType": "boolean"
      },
      {
        "component": "number",
        "name": "autoplaySpeed",
        "label": "Autoplay Speed (ms)",
        "valueType": "number",
        "value": 3000,
        "validation": {
          "numberMin": 1000
        },
        "condition": {
          "===": [
            {
              "var": "autoplay"
            },
            true
          ]
        }
      },
      {
        "component": "boolean",
        "name": "dots",
        "label": "Show Dots",
        "valueType": "boolean"
      },
      {
        "component": "boolean",
        "name": "arrows",
        "label": "Show Arrows",
        "valueType": "boolean"
      },
      {
        "component": "number",
        "name": "slidesToSlide",
        "label": "Slides to Slide",
        "valueType": "number",
        "value": 1,
        "validation": {
          "numberMin": 1,
          "numberMax": 4
        }
      }
    ]
  },
  {
    "id": "slider-item",
    "fields": [
      {
        "component": "text",
        "name": "title",
        "label": "Title",
        "valueType": "string"
      },
      {
        "component": "text",
        "name": "description",
        "label": "Description",
        "valueType": "string"
      },
      {
        "component": "reference",
        "name": "image",
        "label": "Image",
        "valueType": "string"
      },
      {
        "component": "text",
        "name": "alt",
        "label": "Image Alt Text",
        "valueType": "string"
      }
    ]
  },
  {
    "id": "navigation",
    "fields": [
      {
        "component": "text",
        "name": "cssClass",
        "label": "CSS Class",
        "valueType": "string"
      }
    ]
  },
  {
    "id": "language-switcher",
    "fields": [
      {
        "component": "text",
        "name": "cssClass",
        "label": "CSS Class",
        "valueType": "string"
      }
    ]
  }
]
