{
  "section": {
    "label": "Rows / columns",
    "group": "Layout",
    "icon": "▦",
    "fields": [
      {
        "key": "columns",
        "label": "Columns",
        "type": "select",
        "default": "2",
        "options": [
          "1",
          "2",
          "3",
          "4",
          "5",
          "6"
        ]
      },
      {
        "key": "ratio",
        "label": "Column balance",
        "type": "select",
        "default": "equal",
        "options": [
          "equal",
          "wide-left",
          "wide-right"
        ]
      },
      {
        "key": "gap",
        "label": "Gap",
        "type": "number",
        "default": 24,
        "min": 0,
        "max": 80
      },
      {
        "key": "background",
        "label": "Background",
        "type": "select",
        "default": "none",
        "options": [
          "none",
          "soft",
          "white",
          "muted"
        ]
      },
      {
        "key": "padding",
        "label": "Padding",
        "type": "number",
        "default": 24,
        "min": 0,
        "max": 100
      },
      {
        "key": "structure",
        "label": "Structure model",
        "type": "select",
        "default": "grid",
        "options": [
          "grid",
          "columns"
        ],
        "hidden": true
      },
      {
        "key": "widths",
        "label": "Column widths",
        "type": "widths",
        "default": "",
        "hidden": true
      },
      {
        "key": "layout",
        "label": "Layout engine",
        "type": "select",
        "default": "grid",
        "options": [
          "grid",
          "flex"
        ]
      },
      {
        "key": "direction",
        "label": "Flex direction",
        "type": "select",
        "default": "row",
        "options": [
          "row",
          "column"
        ]
      },
      {
        "key": "justify",
        "label": "Distribution",
        "type": "select",
        "default": "start",
        "options": [
          "start",
          "center",
          "end",
          "space-between",
          "space-around"
        ]
      },
      {
        "key": "alignItems",
        "label": "Vertical alignment",
        "type": "select",
        "default": "stretch",
        "options": [
          "stretch",
          "start",
          "center",
          "end"
        ]
      },
      {
        "key": "wrap",
        "label": "Flex wrapping",
        "type": "select",
        "default": "yes",
        "options": [
          "yes",
          "no"
        ]
      },
      {
        "key": "columnsTablet",
        "label": "Tablet columns (0 = automatic)",
        "type": "number",
        "default": 0,
        "min": 0,
        "max": 6
      },
      {
        "key": "columnsMobile",
        "label": "Mobile columns (0 = automatic)",
        "type": "number",
        "default": 0,
        "min": 0,
        "max": 6
      },
      {
        "key": "reverseMobile",
        "label": "Reverse columns on mobile",
        "type": "select",
        "default": "no",
        "options": [
          "no",
          "yes"
        ]
      },
      {
        "key": "backgroundImage",
        "label": "Background image",
        "type": "image",
        "default": {
          "id": 0,
          "url": "",
          "alt": "",
          "caption": "",
          "ratio": "16/9",
          "fit": "cover",
          "x": 50,
          "y": 50,
          "sizeMode": "inherit",
          "width": 100,
          "maxWidth": 0,
          "frameHeight": 0,
          "align": "center",
          "zoom": 100
        }
      },
      {
        "key": "parallax",
        "label": "Fixed background",
        "type": "select",
        "default": "no",
        "options": [
          "no",
          "yes"
        ]
      },
      {
        "key": "divider",
        "label": "Bottom shape divider",
        "type": "select",
        "default": "none",
        "options": [
          "none",
          "wave",
          "triangle",
          "curve"
        ]
      },
      {
        "key": "gridMode",
        "label": "Grid mode",
        "type": "select",
        "default": "legacy",
        "hidden": true,
        "options": [
          "legacy",
          "custom",
          "auto-fit"
        ]
      },
      {
        "key": "gridDense",
        "label": "Fill gaps densely",
        "type": "select",
        "default": "no",
        "hidden": true,
        "options": [
          "no",
          "yes"
        ]
      },
      {
        "key": "gridTracks",
        "label": "Track widths",
        "type": "grid-tracks",
        "default": "",
        "hidden": true
      },
      {
        "key": "gridMinWidth",
        "label": "Minimum card width",
        "type": "number",
        "default": 240,
        "hidden": true,
        "min": 100,
        "max": 800
      },
      {
        "key": "gridRowGap",
        "label": "Row gap",
        "type": "number",
        "default": -1,
        "hidden": true,
        "min": -1,
        "max": 160
      },
      {
        "key": "gridColumnGap",
        "label": "Column gap",
        "type": "number",
        "default": -1,
        "hidden": true,
        "min": -1,
        "max": 160
      },
      {
        "key": "gridTracksTablet",
        "label": "Track widths",
        "type": "grid-tracks",
        "default": "",
        "hidden": true
      },
      {
        "key": "gridMinWidthTablet",
        "label": "Minimum card width",
        "type": "number",
        "default": 0,
        "hidden": true,
        "min": 0,
        "max": 800
      },
      {
        "key": "gridRowGapTablet",
        "label": "Row gap",
        "type": "number",
        "default": -1,
        "hidden": true,
        "min": -1,
        "max": 160
      },
      {
        "key": "gridColumnGapTablet",
        "label": "Column gap",
        "type": "number",
        "default": -1,
        "hidden": true,
        "min": -1,
        "max": 160
      },
      {
        "key": "gridTracksMobile",
        "label": "Track widths",
        "type": "grid-tracks",
        "default": "",
        "hidden": true
      },
      {
        "key": "gridMinWidthMobile",
        "label": "Minimum card width",
        "type": "number",
        "default": 0,
        "hidden": true,
        "min": 0,
        "max": 800
      },
      {
        "key": "gridRowGapMobile",
        "label": "Row gap",
        "type": "number",
        "default": -1,
        "hidden": true,
        "min": -1,
        "max": 160
      },
      {
        "key": "gridColumnGapMobile",
        "label": "Column gap",
        "type": "number",
        "default": -1,
        "hidden": true,
        "min": -1,
        "max": 160
      },
      {
        "key": "directionTablet",
        "label": "direction Tablet",
        "type": "select",
        "default": "inherit",
        "options": [
          "inherit",
          "row",
          "row-reverse",
          "column",
          "column-reverse"
        ],
        "hidden": true
      },
      {
        "key": "justifyTablet",
        "label": "justify Tablet",
        "type": "select",
        "default": "inherit",
        "options": [
          "inherit",
          "start",
          "center",
          "end",
          "space-between",
          "space-around",
          "space-evenly"
        ],
        "hidden": true
      },
      {
        "key": "alignItemsTablet",
        "label": "alignItems Tablet",
        "type": "select",
        "default": "inherit",
        "options": [
          "inherit",
          "start",
          "center",
          "end",
          "stretch",
          "baseline"
        ],
        "hidden": true
      },
      {
        "key": "wrapTablet",
        "label": "wrap Tablet",
        "type": "select",
        "default": "inherit",
        "options": [
          "inherit",
          "yes",
          "no"
        ],
        "hidden": true
      },
      {
        "key": "flexGapTablet",
        "label": "Flex gap Tablet",
        "type": "number",
        "default": -1,
        "min": -1,
        "max": 160,
        "hidden": true
      },
      {
        "key": "directionMobile",
        "label": "direction Mobile",
        "type": "select",
        "default": "inherit",
        "options": [
          "inherit",
          "row",
          "row-reverse",
          "column",
          "column-reverse"
        ],
        "hidden": true
      },
      {
        "key": "justifyMobile",
        "label": "justify Mobile",
        "type": "select",
        "default": "inherit",
        "options": [
          "inherit",
          "start",
          "center",
          "end",
          "space-between",
          "space-around",
          "space-evenly"
        ],
        "hidden": true
      },
      {
        "key": "alignItemsMobile",
        "label": "alignItems Mobile",
        "type": "select",
        "default": "inherit",
        "options": [
          "inherit",
          "start",
          "center",
          "end",
          "stretch",
          "baseline"
        ],
        "hidden": true
      },
      {
        "key": "wrapMobile",
        "label": "wrap Mobile",
        "type": "select",
        "default": "inherit",
        "options": [
          "inherit",
          "yes",
          "no"
        ],
        "hidden": true
      },
      {
        "key": "flexGapMobile",
        "label": "Flex gap Mobile",
        "type": "number",
        "default": -1,
        "min": -1,
        "max": 160,
        "hidden": true
      }
    ],
    "container": true,
    "description": "Drag a row onto the page, then place modules inside its columns."
  },
  "hero": {
    "label": "Article headline",
    "group": "News",
    "icon": "N",
    "fields": [
      {
        "key": "kicker",
        "label": "Label above headline",
        "type": "text",
        "default": ""
      },
      {
        "key": "title",
        "label": "Headline",
        "type": "text",
        "default": ""
      },
      {
        "key": "summary",
        "label": "Standfirst",
        "type": "textarea",
        "default": ""
      },
      {
        "key": "byline",
        "label": "Byline",
        "type": "text",
        "default": ""
      },
      {
        "key": "layout",
        "label": "Layout",
        "type": "select",
        "default": "classic",
        "options": [
          "classic",
          "split",
          "cover",
          "center"
        ]
      },
      {
        "key": "image",
        "label": "Image",
        "type": "image",
        "default": {
          "id": 0,
          "url": "",
          "alt": "",
          "caption": "",
          "ratio": "16/9",
          "fit": "cover",
          "x": 50,
          "y": 50,
          "sizeMode": "inherit",
          "width": 100,
          "maxWidth": 0,
          "frameHeight": 0,
          "align": "center",
          "zoom": 100
        }
      },
      {
        "key": "level",
        "label": "Heading level",
        "type": "select",
        "default": "h1",
        "options": [
          "h1",
          "h2"
        ]
      },
      {
        "key": "textAlign",
        "label": "Text alignment",
        "type": "select",
        "default": "left",
        "options": [
          "left",
          "center",
          "right",
          "justify"
        ]
      }
    ],
    "description": "Structured headline, summary, byline and a responsive image."
  },
  "heading": {
    "label": "Heading",
    "group": "Basic",
    "icon": "H",
    "fields": [
      {
        "key": "text",
        "label": "Heading",
        "type": "text",
        "default": ""
      },
      {
        "key": "level",
        "label": "Heading level",
        "type": "select",
        "default": "h2",
        "options": [
          "h2",
          "h3",
          "h4",
          "h1",
          "h5",
          "h6"
        ]
      }
    ],
    "description": ""
  },
  "text": {
    "label": "Rich text",
    "group": "Basic",
    "icon": "T",
    "fields": [
      {
        "key": "content",
        "label": "Text",
        "type": "rich",
        "default": ""
      },
      {
        "key": "textAlign",
        "label": "Text alignment",
        "type": "select",
        "default": "left",
        "options": [
          "left",
          "center",
          "right",
          "justify"
        ]
      }
    ],
    "description": ""
  },
  "image": {
    "label": "Image",
    "group": "Media",
    "icon": "▧",
    "fields": [
      {
        "key": "image",
        "label": "Image",
        "type": "image",
        "default": {
          "id": 0,
          "url": "",
          "alt": "",
          "caption": "",
          "ratio": "16/9",
          "fit": "cover",
          "x": 50,
          "y": 50,
          "sizeMode": "inherit",
          "width": 100,
          "maxWidth": 0,
          "frameHeight": 0,
          "align": "center",
          "zoom": 100
        }
      }
    ],
    "description": "Choose a crop, image fit and focal point."
  },
  "quote": {
    "label": "Pull quote",
    "group": "News",
    "icon": "“",
    "fields": [
      {
        "key": "quote",
        "label": "Quote",
        "type": "textarea",
        "default": ""
      },
      {
        "key": "author",
        "label": "Attribution",
        "type": "text",
        "default": ""
      },
      {
        "key": "variant",
        "label": "Style",
        "type": "select",
        "default": "editorial",
        "options": [
          "editorial",
          "border",
          "bubble"
        ]
      },
      {
        "key": "textAlign",
        "label": "Text alignment",
        "type": "select",
        "default": "left",
        "options": [
          "left",
          "center",
          "right",
          "justify"
        ]
      }
    ],
    "description": ""
  },
  "button": {
    "label": "Button",
    "group": "Basic",
    "icon": "↗",
    "fields": [
      {
        "key": "label",
        "label": "Label",
        "type": "text",
        "default": "Read more"
      },
      {
        "key": "url",
        "label": "Link",
        "type": "url",
        "default": ""
      },
      {
        "key": "variant",
        "label": "Style",
        "type": "select",
        "default": "solid",
        "options": [
          "solid",
          "outline",
          "soft",
          "text"
        ]
      },
      {
        "key": "size",
        "label": "Button size",
        "type": "select",
        "default": "medium",
        "options": [
          "small",
          "medium",
          "large"
        ]
      },
      {
        "key": "background",
        "label": "Button colour",
        "type": "color",
        "default": ""
      },
      {
        "key": "textColor",
        "label": "Button text colour",
        "type": "color",
        "default": ""
      },
      {
        "key": "icon",
        "label": "Icon",
        "type": "select",
        "default": "none",
        "options": [
          "none",
          "arrow",
          "chevron",
          "plus",
          "download",
          "play",
          "cart",
          "star",
          "heart"
        ],
        "iconPicker": true
      },
      {
        "key": "iconPosition",
        "label": "Icon position",
        "type": "select",
        "default": "after",
        "options": [
          "before",
          "after"
        ]
      },
      {
        "key": "iconColor",
        "label": "Icon colour",
        "type": "color",
        "default": ""
      },
      {
        "key": "iconSize",
        "label": "Icon size (px, 0 = automatic)",
        "type": "number",
        "min": 0,
        "max": 96,
        "default": 0
      },
      {
        "key": "fullWidth",
        "label": "Full width",
        "type": "select",
        "default": "no",
        "options": [
          "no",
          "yes"
        ]
      },
      {
        "key": "target",
        "label": "Open in",
        "type": "select",
        "default": "same",
        "options": [
          "same",
          "new"
        ]
      },
      {
        "key": "nofollow",
        "label": "Nofollow",
        "type": "select",
        "default": "no",
        "options": [
          "no",
          "yes"
        ]
      },
      {
        "key": "audioEnabled",
        "label": "Press sound",
        "type": "select",
        "default": "no",
        "options": [
          "no",
          "yes"
        ]
      },
      {
        "key": "audioEffect",
        "label": "Press sound effect",
        "type": "select",
        "default": "none",
        "options": [
          "none",
          "glass-break",
          "explosion",
          "weapon",
          "whistle",
          "bird",
          "scream",
          "cry",
          "yes",
          "no",
          "chime",
          "click",
          "pop",
          "whoosh"
        ]
      },
      {
        "key": "audioVolume",
        "label": "Press sound volume (%)",
        "type": "number",
        "default": 55,
        "min": 0,
        "max": 100
      },
      {
        "key": "audioCooldown",
        "label": "Press sound cooldown (ms)",
        "type": "number",
        "default": 180,
        "min": 0,
        "max": 2000
      },
      {
        "key": "audioRepeat",
        "label": "Press sound repeat",
        "type": "select",
        "default": "always",
        "options": [
          "always",
          "once"
        ]
      }
    ],
    "description": ""
  },
  "divider": {
    "label": "Divider",
    "group": "Layout",
    "icon": "—",
    "fields": [
      {
        "key": "variant",
        "label": "Style",
        "type": "select",
        "default": "line",
        "options": [
          "line",
          "dotted",
          "accent"
        ]
      }
    ],
    "description": ""
  },
  "spacer": {
    "label": "Spacer",
    "group": "Layout",
    "icon": "↕",
    "fields": [
      {
        "key": "height",
        "label": "Height",
        "type": "number",
        "default": 32,
        "min": 0,
        "max": 200
      }
    ],
    "description": ""
  },
  "list": {
    "label": "List",
    "group": "Basic",
    "icon": "≡",
    "fields": [
      {
        "key": "items",
        "label": "Items",
        "type": "rows",
        "default": [],
        "columns": [
          {
            "key": "text",
            "label": "Text",
            "type": "text",
            "default": ""
          }
        ]
      },
      {
        "key": "style",
        "label": "List style",
        "type": "select",
        "default": "bullet",
        "options": [
          "bullet",
          "number",
          "check"
        ]
      }
    ],
    "description": ""
  },
  "facts": {
    "label": "Key facts",
    "group": "News",
    "icon": "✓",
    "fields": [
      {
        "key": "title",
        "label": "Title",
        "type": "text",
        "default": "At a glance"
      },
      {
        "key": "items",
        "label": "Facts",
        "type": "rows",
        "default": [],
        "columns": [
          {
            "key": "label",
            "label": "Label",
            "type": "text",
            "default": ""
          },
          {
            "key": "value",
            "label": "Value",
            "type": "text",
            "default": ""
          }
        ]
      }
    ],
    "description": ""
  },
  "table": {
    "label": "Comparison table",
    "group": "News",
    "icon": "▤",
    "fields": [
      {
        "key": "caption",
        "label": "Caption",
        "type": "text",
        "default": ""
      },
      {
        "key": "headers",
        "label": "Column headings (one per line)",
        "type": "textarea",
        "default": "Feature\nOption A\nOption B"
      },
      {
        "key": "rows",
        "label": "Rows (one per line; separate cells with |)",
        "type": "textarea",
        "default": ""
      },
      {
        "key": "note",
        "label": "Source / note",
        "type": "text",
        "default": ""
      }
    ],
    "description": ""
  },
  "toc": {
    "label": "Table of contents",
    "group": "News",
    "icon": "≡",
    "fields": [
      {
        "key": "title",
        "label": "Title",
        "type": "text",
        "default": "In this article"
      }
    ],
    "description": ""
  },
  "accordion": {
    "label": "FAQ / accordion",
    "group": "Layout",
    "icon": "+",
    "fields": [
      {
        "key": "items",
        "label": "Questions",
        "type": "rows",
        "default": [],
        "columns": [
          {
            "key": "title",
            "label": "Question",
            "type": "text",
            "default": ""
          },
          {
            "key": "content",
            "label": "Answer",
            "type": "rich",
            "default": ""
          }
        ]
      }
    ],
    "description": ""
  },
  "tabs": {
    "label": "Tabs",
    "group": "Layout",
    "icon": "▱",
    "fields": [
      {
        "key": "items",
        "label": "Tabs",
        "type": "rows",
        "default": [],
        "columns": [
          {
            "key": "title",
            "label": "Tab title",
            "type": "text",
            "default": ""
          },
          {
            "key": "content",
            "label": "Text",
            "type": "rich",
            "default": ""
          }
        ]
      }
    ],
    "description": ""
  },
  "gallery": {
    "label": "Photo gallery",
    "group": "Media",
    "icon": "▧",
    "fields": [
      {
        "key": "images",
        "label": "Images",
        "type": "images",
        "default": []
      },
      {
        "key": "columns",
        "label": "Columns",
        "type": "select",
        "default": "3",
        "options": [
          "2",
          "3",
          "4"
        ]
      },
      {
        "key": "ratio",
        "label": "Image ratio",
        "type": "select",
        "default": "4/3",
        "options": [
          "16/9",
          "4/3",
          "1/1",
          "3/4",
          "auto"
        ]
      },
      {
        "key": "layout",
        "label": "Layout",
        "type": "select",
        "default": "grid",
        "options": [
          "grid",
          "masonry"
        ]
      },
      {
        "key": "lightbox",
        "label": "Lightbox",
        "type": "select",
        "default": "yes",
        "options": [
          "yes",
          "no"
        ]
      }
    ],
    "description": ""
  },
  "stat": {
    "label": "Statistic",
    "group": "Data",
    "icon": "↗",
    "fields": [
      {
        "key": "value",
        "label": "Value",
        "type": "text",
        "default": ""
      },
      {
        "key": "label",
        "label": "Label",
        "type": "text",
        "default": ""
      },
      {
        "key": "source",
        "label": "Source",
        "type": "text",
        "default": ""
      }
    ],
    "description": ""
  },
  "progress": {
    "label": "Progress bar",
    "group": "Data",
    "icon": "▰",
    "fields": [
      {
        "key": "label",
        "label": "Label",
        "type": "text",
        "default": ""
      },
      {
        "key": "value",
        "label": "Percentage",
        "type": "number",
        "default": 75,
        "min": 0,
        "max": 100
      }
    ],
    "description": ""
  },
  "rating": {
    "label": "Star rating",
    "group": "Data",
    "icon": "★",
    "fields": [
      {
        "key": "label",
        "label": "Label",
        "type": "text",
        "default": ""
      },
      {
        "key": "value",
        "label": "Rating",
        "type": "number",
        "default": 4,
        "min": 0,
        "max": 5
      },
      {
        "key": "note",
        "label": "Rating explanation",
        "type": "text",
        "default": ""
      }
    ],
    "description": ""
  },
  "review": {
    "label": "Review verdict",
    "group": "News",
    "icon": "★",
    "fields": [
      {
        "key": "title",
        "label": "Title",
        "type": "text",
        "default": "Our verdict"
      },
      {
        "key": "score",
        "label": "Score out of 10",
        "type": "number",
        "default": 8,
        "min": 0,
        "max": 10
      },
      {
        "key": "verdict",
        "label": "Verdict",
        "type": "rich",
        "default": ""
      },
      {
        "key": "pros",
        "label": "Pros (one per line)",
        "type": "textarea",
        "default": ""
      },
      {
        "key": "cons",
        "label": "Cons (one per line)",
        "type": "textarea",
        "default": ""
      }
    ],
    "description": "A score, balanced pros and cons, and a clear verdict."
  },
  "timeline": {
    "label": "Timeline",
    "group": "News",
    "icon": "•",
    "fields": [
      {
        "key": "items",
        "label": "Events",
        "type": "rows",
        "default": [],
        "columns": [
          {
            "key": "date",
            "label": "Date / time",
            "type": "text",
            "default": ""
          },
          {
            "key": "title",
            "label": "Event",
            "type": "text",
            "default": ""
          },
          {
            "key": "content",
            "label": "Text",
            "type": "rich",
            "default": ""
          }
        ]
      }
    ],
    "description": ""
  },
  "steps": {
    "label": "Step-by-step guide",
    "group": "News",
    "icon": "1",
    "fields": [
      {
        "key": "items",
        "label": "Steps",
        "type": "rows",
        "default": [],
        "columns": [
          {
            "key": "title",
            "label": "Step title",
            "type": "text",
            "default": ""
          },
          {
            "key": "content",
            "label": "Text",
            "type": "rich",
            "default": ""
          }
        ]
      }
    ],
    "description": ""
  },
  "author": {
    "label": "Author card",
    "group": "News",
    "icon": "◎",
    "fields": [
      {
        "key": "name",
        "label": "Author name",
        "type": "text",
        "default": ""
      },
      {
        "key": "role",
        "label": "Role",
        "type": "text",
        "default": ""
      },
      {
        "key": "bio",
        "label": "Biography",
        "type": "textarea",
        "default": ""
      },
      {
        "key": "image",
        "label": "Image",
        "type": "image",
        "default": {
          "id": 0,
          "url": "",
          "alt": "",
          "caption": "",
          "ratio": "16/9",
          "fit": "cover",
          "x": 50,
          "y": 50,
          "sizeMode": "inherit",
          "width": 100,
          "maxWidth": 0,
          "frameHeight": 0,
          "align": "center",
          "zoom": 100
        }
      },
      {
        "key": "url",
        "label": "Author link",
        "type": "url",
        "default": ""
      }
    ],
    "description": ""
  },
  "sources": {
    "label": "Sources & corrections",
    "group": "News",
    "icon": "↗",
    "fields": [
      {
        "key": "title",
        "label": "Title",
        "type": "text",
        "default": "Sources"
      },
      {
        "key": "items",
        "label": "Sources",
        "type": "rows",
        "default": [],
        "columns": [
          {
            "key": "label",
            "label": "Source title",
            "type": "text",
            "default": ""
          },
          {
            "key": "url",
            "label": "URL",
            "type": "url",
            "default": ""
          }
        ]
      },
      {
        "key": "correction",
        "label": "Correction / update note",
        "type": "textarea",
        "default": ""
      }
    ],
    "description": ""
  },
  "column": {
    "label": "Column",
    "group": "Layout",
    "icon": "▥",
    "container": true,
    "internal": true,
    "fields": [
      {
        "key": "gap",
        "label": "Space between modules",
        "type": "number",
        "default": 0,
        "min": 0,
        "max": 100
      },
      {
        "key": "vertical",
        "label": "Vertical alignment",
        "type": "select",
        "default": "start",
        "options": [
          "start",
          "center",
          "end",
          "space-between"
        ]
      }
    ],
    "description": "A column holds a vertical stack of modules, including nested rows."
  },
  "button-group": {
    "label": "Button group",
    "icon": "◇",
    "group": "Basic",
    "description": "Button group",
    "fields": [
      {
        "key": "items",
        "label": "Buttons",
        "type": "rows",
        "default": [],
        "columns": [
          {
            "key": "label",
            "label": "Label",
            "type": "text",
            "default": ""
          },
          {
            "key": "url",
            "label": "Link",
            "type": "url",
            "default": ""
          },
          {
            "key": "variant",
            "label": "Style",
            "type": "select",
            "default": "solid",
            "options": [
              "solid",
              "outline",
              "text"
            ]
          },
          {
            "key": "icon",
            "label": "Icon",
            "type": "select",
            "default": "none",
            "options": [
              "none",
              "arrow",
              "chevron",
              "plus",
              "download",
              "play",
              "cart",
              "star",
              "heart"
            ],
            "iconPicker": true
          },
          {
            "key": "iconPosition",
            "label": "Icon position",
            "type": "select",
            "default": "after",
            "options": [
              "before",
              "after"
            ]
          },
          {
            "key": "audioEnabled",
            "label": "Sound",
            "type": "select",
            "default": "no",
            "options": [
              "no",
              "yes"
            ]
          },
          {
            "key": "audioEffect",
            "label": "Sound effect",
            "type": "select",
            "default": "none",
            "options": [
              "none",
              "glass-break",
              "explosion",
              "weapon",
              "whistle",
              "bird",
              "scream",
              "cry",
              "yes",
              "no",
              "chime",
              "click",
              "pop",
              "whoosh"
            ]
          },
          {
            "key": "audioVolume",
            "label": "Volume (%)",
            "type": "number",
            "default": 55,
            "min": 0,
            "max": 100
          },
          {
            "key": "audioCooldown",
            "label": "Cooldown (ms)",
            "type": "number",
            "default": 180,
            "min": 0,
            "max": 2000
          },
          {
            "key": "audioRepeat",
            "label": "Repeat",
            "type": "select",
            "default": "always",
            "options": [
              "always",
              "once"
            ]
          },
          {
            "key": "iconColor",
            "label": "Icon colour",
            "type": "color",
            "default": ""
          },
          {
            "key": "iconSize",
            "label": "Icon size (px, 0 = automatic)",
            "type": "number",
            "min": 0,
            "max": 96,
            "default": 0
          }
        ]
      },
      {
        "key": "direction",
        "label": "Direction",
        "type": "select",
        "default": "horizontal",
        "options": [
          "horizontal",
          "vertical"
        ]
      }
    ]
  },
  "icon": {
    "label": "Icon",
    "icon": "◇",
    "group": "Basic",
    "description": "Icon",
    "fields": [
      {
        "key": "symbol",
        "label": "Symbol",
        "type": "text",
        "default": "★",
        "iconPicker": true
      },
      {
        "key": "label",
        "label": "Accessible label",
        "type": "text",
        "default": ""
      },
      {
        "key": "url",
        "label": "Link",
        "type": "url",
        "default": ""
      },
      {
        "key": "size",
        "label": "Icon size",
        "type": "number",
        "default": 48,
        "min": 12,
        "max": 180
      }
    ]
  },
  "icon-list": {
    "label": "Icon list",
    "icon": "◇",
    "group": "Basic",
    "description": "Icon list",
    "fields": [
      {
        "key": "items",
        "label": "Items",
        "type": "rows",
        "default": [],
        "columns": [
          {
            "key": "symbol",
            "label": "Symbol",
            "type": "text",
            "default": "✓",
            "iconPicker": true
          },
          {
            "key": "text",
            "label": "Text",
            "type": "text",
            "default": ""
          },
          {
            "key": "url",
            "label": "Link",
            "type": "url",
            "default": ""
          }
        ]
      }
    ]
  },
  "callout": {
    "label": "Call to action",
    "icon": "◇",
    "group": "Marketing",
    "description": "Call to action content. The action link/button is optional and appears only when Show action is enabled.",
    "fields": [
      {
        "key": "title",
        "label": "Title",
        "type": "text",
        "default": ""
      },
      {
        "key": "content",
        "label": "Content",
        "type": "rich",
        "default": ""
      },
      {
        "key": "textAlign",
        "label": "Text alignment",
        "type": "select",
        "default": "left",
        "options": [
          "left",
          "center",
          "right",
          "justify"
        ]
      },
      {
        "key": "image",
        "label": "Image",
        "type": "image",
        "default": {
          "id": 0,
          "url": "",
          "alt": "",
          "caption": "",
          "ratio": "16/9",
          "fit": "cover",
          "x": 50,
          "y": 50,
          "sizeMode": "inherit",
          "width": 100,
          "maxWidth": 0,
          "frameHeight": 0,
          "align": "center",
          "zoom": 100
        }
      },
      {
        "key": "action",
        "label": "Show action",
        "type": "select",
        "default": "no",
        "options": [
          "no",
          "yes"
        ]
      },
      {
        "key": "actionType",
        "label": "Action type",
        "type": "select",
        "default": "button",
        "options": [
          "button",
          "link"
        ]
      },
      {
        "key": "label",
        "label": "Action text",
        "type": "text",
        "default": "Learn more"
      },
      {
        "key": "url",
        "label": "Link destination",
        "type": "url",
        "default": ""
      },
      {
        "key": "actionSize",
        "label": "Button size",
        "type": "select",
        "default": "medium",
        "options": [
          "small",
          "medium",
          "large"
        ]
      },
      {
        "key": "actionStyle",
        "label": "Button style",
        "type": "select",
        "default": "solid",
        "options": [
          "solid",
          "outline",
          "soft"
        ]
      },
      {
        "key": "actionBackground",
        "label": "Button colour",
        "type": "color",
        "default": ""
      },
      {
        "key": "actionTextColor",
        "label": "Button text colour",
        "type": "color",
        "default": ""
      },
      {
        "key": "actionAudioEnabled",
        "label": "Action sound",
        "type": "select",
        "default": "no",
        "options": [
          "no",
          "yes"
        ]
      },
      {
        "key": "actionAudioEffect",
        "label": "Action sound effect",
        "type": "select",
        "default": "none",
        "options": [
          "none",
          "glass-break",
          "explosion",
          "weapon",
          "whistle",
          "bird",
          "scream",
          "cry",
          "yes",
          "no",
          "chime",
          "click",
          "pop",
          "whoosh"
        ]
      },
      {
        "key": "actionAudioVolume",
        "label": "Action sound volume (%)",
        "type": "number",
        "default": 55,
        "min": 0,
        "max": 100
      },
      {
        "key": "actionAudioCooldown",
        "label": "Action sound cooldown (ms)",
        "type": "number",
        "default": 180,
        "min": 0,
        "max": 2000
      },
      {
        "key": "actionAudioRepeat",
        "label": "Action sound repeat",
        "type": "select",
        "default": "always",
        "options": [
          "always",
          "once"
        ]
      },
      {
        "key": "fullWidth",
        "label": "Full width",
        "type": "select",
        "default": "no",
        "options": [
          "no",
          "yes"
        ]
      },
      {
        "key": "target",
        "label": "Open in",
        "type": "select",
        "default": "same",
        "options": [
          "same",
          "new"
        ]
      },
      {
        "key": "nofollow",
        "label": "Nofollow",
        "type": "select",
        "default": "no",
        "options": [
          "no",
          "yes"
        ]
      },
      {
        "key": "layout",
        "label": "Layout",
        "type": "select",
        "default": "horizontal",
        "options": [
          "horizontal",
          "vertical"
        ]
      }
    ]
  },
  "dual-heading": {
    "label": "Dual colour heading",
    "icon": "◇",
    "group": "Basic",
    "description": "Dual colour heading",
    "fields": [
      {
        "key": "before",
        "label": "First part",
        "type": "text",
        "default": ""
      },
      {
        "key": "accent",
        "label": "Accent part",
        "type": "text",
        "default": ""
      },
      {
        "key": "after",
        "label": "Last part",
        "type": "text",
        "default": ""
      },
      {
        "key": "level",
        "label": "Heading level",
        "type": "select",
        "default": "h2",
        "options": [
          "h1",
          "h2",
          "h3",
          "h4",
          "h5",
          "h6"
        ]
      }
    ]
  },
  "business-hours": {
    "label": "Business hours",
    "icon": "◇",
    "group": "Marketing",
    "description": "Business hours",
    "fields": [
      {
        "key": "title",
        "label": "Title",
        "type": "text",
        "default": "Opening hours"
      },
      {
        "key": "items",
        "label": "Hours",
        "type": "rows",
        "default": [],
        "columns": [
          {
            "key": "day",
            "label": "Day",
            "type": "text",
            "default": ""
          },
          {
            "key": "hours",
            "label": "Hours",
            "type": "text",
            "default": ""
          }
        ]
      },
      {
        "key": "note",
        "label": "Note",
        "type": "textarea",
        "default": ""
      }
    ]
  },
  "price-list": {
    "label": "Restaurant / price list",
    "icon": "◇",
    "group": "Marketing",
    "description": "Restaurant / price list",
    "fields": [
      {
        "key": "title",
        "label": "Title",
        "type": "text",
        "default": ""
      },
      {
        "key": "items",
        "label": "Items",
        "type": "rows",
        "default": [],
        "columns": [
          {
            "key": "title",
            "label": "Item",
            "type": "text",
            "default": ""
          },
          {
            "key": "description",
            "label": "Description",
            "type": "textarea",
            "default": ""
          },
          {
            "key": "price",
            "label": "Price",
            "type": "text",
            "default": ""
          },
          {
            "key": "image",
            "label": "Image",
            "type": "image",
            "default": {
              "id": 0,
              "url": "",
              "alt": "",
              "caption": "",
              "ratio": "16/9",
              "fit": "cover",
              "x": 50,
              "y": 50,
              "sizeMode": "inherit",
              "width": 100,
              "maxWidth": 0,
              "frameHeight": 0,
              "align": "center",
              "zoom": 100
            }
          }
        ]
      }
    ]
  },
  "download": {
    "label": "File download link",
    "icon": "◇",
    "group": "Basic",
    "description": "Links to a file. The file permissions are controlled by its host.",
    "fields": [
      {
        "key": "label",
        "label": "Label",
        "type": "text",
        "default": "Download file"
      },
      {
        "key": "url",
        "label": "File URL",
        "type": "url",
        "default": ""
      },
      {
        "key": "description",
        "label": "Description",
        "type": "textarea",
        "default": ""
      }
    ]
  },
  "social-links": {
    "label": "Social links",
    "icon": "◇",
    "group": "Marketing",
    "description": "Social links",
    "fields": [
      {
        "key": "items",
        "label": "Links",
        "type": "rows",
        "default": [],
        "columns": [
          {
            "key": "label",
            "label": "Network / accessible label",
            "type": "text",
            "default": ""
          },
          {
            "key": "symbol",
            "label": "Symbol",
            "type": "text",
            "default": "",
            "iconPicker": true
          },
          {
            "key": "url",
            "label": "Link",
            "type": "url",
            "default": ""
          }
        ]
      }
    ]
  },
  "anchor": {
    "label": "Menu anchor",
    "icon": "◇",
    "group": "Layout",
    "description": "Menu anchor",
    "fields": [
      {
        "key": "name",
        "label": "Anchor name",
        "type": "text",
        "default": ""
      }
    ]
  },
  "component": {
    "label": "Linked component",
    "icon": "◇",
    "group": "Dynamic",
    "description": "Shared published layout with independent content values. Choose its source in the component inspector.",
    "fields": [
      {
        "key": "source",
        "label": "Component source",
        "type": "number",
        "default": 0,
        "min": 0,
        "max": 2147483647,
        "hidden": true
      },
      {
        "key": "sourceKey",
        "label": "Component identity",
        "type": "text",
        "default": "",
        "hidden": true
      },
      {
        "key": "variant",
        "label": "Component variant",
        "type": "text",
        "default": "",
        "hidden": true
      },
      {
        "key": "values",
        "label": "Instance content",
        "type": "component-values",
        "default": [],
        "hidden": true
      }
    ]
  }
}
