<?php

namespace YOOtheme;

return [
    'name' => 'map',
    'title' => 'Map',
    'group' => 'multiple items',
    'icon' => '${url:images/icon.svg}',
    'iconSmall' => '${url:images/iconSmall.svg}',
    'element' => true,
    'container' => true,
    'width' => 500,
    'defaults' => [
        'show_title' => true,
        'show_meta' => true,
        'show_content' => true,
        'show_image' => true,
        'show_link' => true,
        'type' => 'roadmap',
        'zoom' => 10,
        'controls' => true,
        'poi' => false,
        'zooming' => false,
        'dragging' => false,
        'min_zoom' => 0,
        'max_zoom' => 18,
        'title_hover_style' => 'reset',
        'title_element' => 'h3',
        'meta_style' => 'text-meta',
        'meta_align' => 'below-title',
        'meta_element' => 'div',
        'image_svg_color' => 'emphasis',
        'link_text' => 'Read more',
        'link_style' => 'default',
        'margin_top' => 'default',
        'margin_bottom' => 'default',
    ],
    'placeholder' => [
        'children' => [
            [
                'type' => 'list_item',
            ],
        ],
    ],
    'updates' => __DIR__ . '/updates.php',
    'templates' => [
        'render' => __DIR__ . '/templates/template.php',
        'content' => __DIR__ . '/templates/content.php',
    ],
    'transforms' => [
        'render' => [Builder\MapElement::class, 'render'],
    ],
    'fields' => [
        'content' => [
            'label' => 'Items',
            'type' => 'content-items',
            'title' => 'title',
            'button' => 'Add Item',
            'item' => 'map_item',
        ],
        'show_title' => [
            'label' => 'Display',
            'type' => 'checkbox',
            'text' => 'Show the title',
        ],
        'show_meta' => [
            'type' => 'checkbox',
            'text' => 'Show the meta text',
        ],
        'show_content' => [
            'type' => 'checkbox',
            'text' => 'Show the content',
        ],
        'show_image' => [
            'type' => 'checkbox',
            'text' => 'Show the image',
        ],
        'show_link' => [
            'description' =>
                'Show or hide content fields without the need to delete the content itself.',
            'type' => 'checkbox',
            'text' => 'Show the link',
        ],
        'marker_icon' => [
            'label' => 'Marker Icon',
            'type' => 'image',
        ],
        'marker_icon_width' => [
            'label' => 'Width',
            'type' => 'number',
            'attrs' => [
                'placeholder' => 'auto',
            ],
            'enable' => 'marker_icon',
        ],
        'marker_icon_height' => [
            'label' => 'Height',
            'type' => 'number',
            'attrs' => [
                'placeholder' => 'auto',
            ],
            'enable' => 'marker_icon',
        ],
        'cluster_icon_1' => [
            'label' => 'Cluster Icon (< 10 Markers)',
            'type' => 'image',
        ],
        'cluster_icon_1_width' => [
            'label' => 'Width',
            'type' => 'number',
            'attrs' => [
                'placeholder' => 'auto',
            ],
            'enable' => 'cluster_icon_1',
        ],
        'cluster_icon_1_height' => [
            'label' => 'Height',
            'type' => 'number',
            'attrs' => [
                'placeholder' => 'auto',
            ],
            'enable' => 'cluster_icon_1',
        ],
        'cluster_icon_1_text_color' => [
            'label' => 'Text Color',
            'type' => 'color',
            'enable' => 'cluster_icon_1',
        ],
        'cluster_icon_2' => [
            'label' => 'Cluster Icon (< 100 Markers)',
            'type' => 'image',
        ],
        'cluster_icon_2_width' => [
            'label' => 'Width',
            'type' => 'number',
            'attrs' => [
                'placeholder' => 'auto',
            ],
            'enable' => 'cluster_icon_2',
        ],
        'cluster_icon_2_height' => [
            'label' => 'Height',
            'type' => 'number',
            'attrs' => [
                'placeholder' => 'auto',
            ],
            'enable' => 'cluster_icon_2',
        ],
        'cluster_icon_2_text_color' => [
            'label' => 'Text Color',
            'type' => 'color',
            'enable' => 'cluster_icon_2',
        ],
        'cluster_icon_3' => [
            'label' => 'Cluster Icon (100+ Markers)',
            'type' => 'image',
        ],
        'cluster_icon_3_width' => [
            'label' => 'Width',
            'type' => 'number',
            'attrs' => [
                'placeholder' => 'auto',
            ],
            'enable' => 'cluster_icon_3',
        ],
        'cluster_icon_3_height' => [
            'label' => 'Height',
            'type' => 'number',
            'attrs' => [
                'placeholder' => 'auto',
            ],
            'enable' => 'cluster_icon_3',
        ],
        'cluster_icon_3_text_color' => [
            'label' => 'Text Color',
            'type' => 'color',
            'enable' => 'cluster_icon_3',
        ],
        'consent_placeholder_image' => [
            'label' => 'Placeholder Image',
            'description' => 'Select an optional placeholder image to load the map on click.',
            'type' => 'image',
        ],
        'width' => [
            'type' => 'number',
        ],
        'height' => [
            'type' => 'number',
            'enable' => '!height_viewport',
        ],
        'width_breakpoint' => [
            'type' => 'checkbox',
            'text' => 'Use width as breakpoint only',
            'enable' => 'width && height && !height_viewport',
        ],
        'height_viewport' => [
            'type' => 'select',
            'options' => [
                'None' => '',
                'Viewport' => 'viewport',
                'Viewport (Subtract Next Section)' => 'section',
            ],
        ],
        'height_viewport_height' => [
            'type' => 'number',
            'attrs' => [
                'placeholder' => '100',
                'min' => 0,
                'step' => 10,
                'class' => 'uk-form-width-xsmall',
            ],
            'enable' => "height_viewport == 'viewport'",
        ],
        'height_viewport_offset' => [
            'type' => 'checkbox',
            'text' => 'Subtract height above',
            'enable' =>
                "height_viewport == 'viewport' && (height_viewport_height || 0) <= 100 || height_viewport == 'section'",
        ],
        'type' => [
            'label' => 'Type',
            'description' => 'Choose a map type.',
            'type' => 'select',
            'options' => [
                'Roadmap' => 'roadmap',
                'Satellite' => 'satellite',
            ],
        ],
        'zoom' => [
            'label' => 'Zoom',
            'description' =>
                'Set the initial resolution at which to display the map. 0 is fully zoomed out and 18 is at the highest resolution zoomed in. Alternatively, set the viewport to contain the given markers.',
            'type' => 'range',
            'attrs' => [
                'min' => 0,
                'max' => 18,
                'step' => 1,
            ],
            'enable' => '!fit_bounds',
        ],
        'fit_bounds' => [
            'type' => 'checkbox',
            'text' => 'Fit markers',
        ],
        'controls' => [
            'label' => 'Controls',
            'description' =>
                'Display the map controls and define whether the map can be zoomed or dragged using the mouse wheel or touch.',
            'type' => 'checkbox',
            'text' => 'Show map controls',
        ],
        'poi' => [
            'type' => 'checkbox',
            'text' => 'Show points of interest',
            'show' => 'yootheme.config.google_maps_api_key',
        ],
        'zooming' => [
            'type' => 'checkbox',
            'text' => 'Enable map zooming',
        ],
        'dragging' => [
            'type' => 'checkbox',
            'text' => 'Enable map dragging',
        ],
        'min_zoom' => [
            'label' => 'Minimum Zoom',
            'description' => 'Minimum zoom level of the map.',
            'type' => 'range',
            'attrs' => [
                'min' => 0,
                'max' => 18,
                'step' => 1,
            ],
            'enable' => 'zooming',
        ],
        'max_zoom' => [
            'label' => 'Maximum Zoom',
            'description' => 'Maximum zoom level of the map.',
            'type' => 'range',
            'attrs' => [
                'min' => 0,
                'max' => 18,
                'step' => 1,
            ],
            'enable' => 'zooming',
        ],
        'text_color' => [
            'label' => 'Text Color',
            'description' =>
                'Set light or dark color mode for text, buttons and controls if a sticky transparent navbar is displayed above.',
            'type' => 'select',
            'options' => [
                'None' => '',
                'Light' => 'light',
                'Dark' => 'dark',
            ],
            'source' => true,
        ],
        'styler_hue' => [
            'label' => 'Hue',
            'description' => 'Set the hue, e.g. <i>#ff0000</i>.',
            'type' => 'color',
            'alpha' => false,
            'fields' => false,
            'saturation' => false,
            'enable' => 'yootheme.config.google_maps_api_key',
        ],
        'styler_lightness' => [
            'label' => 'Lightness',
            'description' => 'Set percentage change in lightness (Between -100 and 100).',
            'type' => 'range',
            'attrs' => [
                'min' => -100,
                'max' => 100,
                'step' => 1,
            ],
            'enable' => 'yootheme.config.google_maps_api_key',
        ],
        'styler_invert_lightness' => [
            'type' => 'checkbox',
            'text' => 'Invert lightness',
            'enable' => 'yootheme.config.google_maps_api_key',
        ],
        'styler_saturation' => [
            'label' => 'Saturation',
            'description' => 'Set percentage change in saturation (Between -100 and 100).',
            'type' => 'range',
            'attrs' => [
                'min' => -100,
                'max' => 100,
                'step' => 1,
            ],
            'enable' => 'yootheme.config.google_maps_api_key',
        ],
        'styler_gamma' => [
            'label' => 'Gamma',
            'description' =>
                'Set percentage change in the amount of gamma correction (Between 0.01 and 10.0, where 1.0 applies no correction).',
            'type' => 'range',
            'attrs' => [
                'min' => 0.01,
                'max' => 10,
                'step' => 0.1,
            ],
            'enable' => 'yootheme.config.google_maps_api_key',
        ],
        'clustering' => [
            'label' => 'Clustering',
            'type' => 'checkbox',
            'text' => 'Enable marker clustering',
        ],
        'popup_max_width' => [
            'label' => 'Max Width',
            'description' => 'Set the maximum width.',
            'type' => 'number',
        ],
        'title_style' => [
            'label' => 'Style',
            'description' =>
                'Title styles differ in font-size but may also come with a predefined color, size and font.',
            'type' => 'select',
            'options' => [
                'None' => '',
                'Heading Small' => 'heading-small',
                'Heading H1' => 'h1',
                'Heading H2' => 'h2',
                'Heading H3' => 'h3',
                'Heading H4' => 'h4',
                'Heading H5' => 'h5',
                'Heading H6' => 'h6',
                'Text Meta' => 'text-meta',
                'Text Lead' => 'text-lead',
                'Text Small' => 'text-small',
                'Text Large' => 'text-large',
            ],
            'enable' => 'show_title',
        ],
        'title_link' => [
            'label' => 'Link',
            'description' => 'Link the title if a link exists.',
            'type' => 'checkbox',
            'text' => 'Link title',
            'enable' => 'show_title && show_link',
        ],
        'title_hover_style' => [
            'label' => 'Hover Style',
            'description' => 'Set the hover style for a linked title.',
            'type' => 'select',
            'options' => [
                'None' => 'reset',
                'Heading Link' => 'heading',
                'Default Link' => '',
            ],
            'enable' => 'show_title && show_link && title_link',
        ],
        'title_decoration' => [
            'label' => 'Decoration',
            'description' =>
                'Decorate the title with a divider, bullet or a line that is vertically centered to the heading.',
            'type' => 'select',
            'options' => [
                'None' => '',
                'Divider' => 'divider',
                'Bullet' => 'bullet',
                'Line' => 'line',
            ],
            'enable' => 'show_title',
        ],
        'title_font_family' => [
            'label' => 'Font Family',
            'description' =>
                'Select an alternative font family. Mind that not all styles have different font families.',
            'type' => 'select',
            'options' => [
                'None' => '',
                'Default' => 'default',
                'Primary' => 'primary',
                'Secondary' => 'secondary',
                'Tertiary' => 'tertiary',
            ],
            'enable' => 'show_title',
        ],
        'title_color' => [
            'label' => 'Color',
            'description' =>
                "Select the text color. If the Background option is selected, styles that don't apply a background image use the primary color instead.",
            'type' => 'select',
            'options' => [
                'None' => '',
                'Muted' => 'muted',
                'Emphasis' => 'emphasis',
                'Primary' => 'primary',
                'Secondary' => 'secondary',
                'Success' => 'success',
                'Warning' => 'warning',
                'Danger' => 'danger',
                'Background' => 'background',
            ],
            'enable' => 'show_title',
        ],
        'title_element' => [
            'label' => 'HTML Element',
            'description' =>
                'Set the level for the section heading or give it no semantic meaning.',
            'type' => 'select',
            'options' => [
                'h1' => 'h1',
                'h2' => 'h2',
                'h3' => 'h3',
                'h4' => 'h4',
                'h5' => 'h5',
                'h6' => 'h6',
                'div' => 'div',
            ],
            'enable' => 'show_title',
        ],
        'title_margin' => [
            'label' => 'Margin Top',
            'description' =>
                'Set the top margin. Note that the margin will only apply if the content field immediately follows another content field.',
            'type' => 'select',
            'options' => [
                'X-Small' => 'xsmall',
                'Small' => 'small',
                'Default' => '',
                'Medium' => 'medium',
                'Large' => 'large',
                'X-Large' => 'xlarge',
                'None' => 'remove',
            ],
            'enable' => 'show_title',
        ],
        'meta_style' => [
            'label' => 'Style',
            'description' =>
                'Select a predefined meta text style, including color, size and font-family.',
            'type' => 'select',
            'options' => [
                'None' => '',
                'Text Meta' => 'text-meta',
                'Text Lead' => 'text-lead',
                'Text Small' => 'text-small',
                'Text Large' => 'text-large',
                'Heading H1' => 'h1',
                'Heading H2' => 'h2',
                'Heading H3' => 'h3',
                'Heading H4' => 'h4',
                'Heading H5' => 'h5',
                'Heading H6' => 'h6',
            ],
            'enable' => 'show_meta',
        ],
        'meta_color' => [
            'label' => 'Color',
            'description' => 'Select the text color.',
            'type' => 'select',
            'options' => [
                'None' => '',
                'Muted' => 'muted',
                'Emphasis' => 'emphasis',
                'Primary' => 'primary',
                'Secondary' => 'secondary',
                'Success' => 'success',
                'Warning' => 'warning',
                'Danger' => 'danger',
            ],
            'enable' => 'show_meta',
        ],
        'meta_align' => [
            'label' => 'Alignment',
            'description' => 'Align the meta text.',
            'type' => 'select',
            'options' => [
                'Above Title' => 'above-title',
                'Below Title' => 'below-title',
                'Below Content' => 'below-content',
            ],
            'enable' => 'show_meta',
        ],
        'meta_element' => [
            'label' => 'HTML Element',
            'description' =>
                'Set the level for the section heading or give it no semantic meaning.',
            'type' => 'select',
            'options' => [
                'h1' => 'h1',
                'h2' => 'h2',
                'h3' => 'h3',
                'h4' => 'h4',
                'h5' => 'h5',
                'h6' => 'h6',
                'div' => 'div',
            ],
            'enable' => 'show_meta',
        ],
        'meta_margin' => [
            'label' => 'Margin Top',
            'description' =>
                'Set the top margin. Note that the margin will only apply if the content field immediately follows another content field.',
            'type' => 'select',
            'options' => [
                'X-Small' => 'xsmall',
                'Small' => 'small',
                'Default' => '',
                'Medium' => 'medium',
                'Large' => 'large',
                'X-Large' => 'xlarge',
                'None' => 'remove',
            ],
            'enable' => 'show_meta',
        ],
        'content_style' => [
            'label' => 'Style',
            'description' =>
                'Select a predefined text style, including color, size and font-family.',
            'type' => 'select',
            'options' => [
                'None' => '',
                'Text Meta' => 'text-meta',
                'Text Lead' => 'text-lead',
                'Text Small' => 'text-small',
                'Text Large' => 'text-large',
                'Heading H1' => 'h1',
                'Heading H2' => 'h2',
                'Heading H3' => 'h3',
                'Heading H4' => 'h4',
                'Heading H5' => 'h5',
                'Heading H6' => 'h6',
            ],
            'enable' => 'show_content',
        ],
        'content_margin' => [
            'label' => 'Margin Top',
            'description' =>
                'Set the top margin. Note that the margin will only apply if the content field immediately follows another content field.',
            'type' => 'select',
            'options' => [
                'X-Small' => 'xsmall',
                'Small' => 'small',
                'Default' => '',
                'Medium' => 'medium',
                'Large' => 'large',
                'X-Large' => 'xlarge',
                'None' => 'remove',
            ],
            'enable' => 'show_content',
        ],
        'image_width' => [
            'type' => 'number',
            'attrs' => [
                'placeholder' => 'auto',
            ],
            'enable' => 'show_image',
        ],
        'image_height' => [
            'type' => 'number',
            'attrs' => [
                'placeholder' => 'auto',
            ],
            'enable' => 'show_image',
        ],
        'image_loading' => [
            'label' => 'Loading',
            'description' =>
                'By default, images are loaded lazy. Enable eager loading for images in the initial viewport.',
            'type' => 'checkbox',
            'text' => 'Load image eagerly',
            'enable' => 'show_image',
        ],
        'image_border' => [
            'label' => 'Border',
            'description' => 'Select the image border style.',
            'type' => 'select',
            'options' => [
                'None' => '',
                'Rounded' => 'rounded',
                'Circle' => 'circle',
                'Pill' => 'pill',
            ],
            'enable' => 'show_image',
        ],
        'image_link' => [
            'label' => 'Link',
            'description' => 'Link the image if a link exists.',
            'type' => 'checkbox',
            'text' => 'Link image',
            'enable' => 'show_image && show_link',
        ],
        'image_svg_inline' => [
            'label' => 'Inline SVG',
            'description' =>
                'Inject SVG images into the page markup so that they can easily be styled with CSS.',
            'type' => 'checkbox',
            'text' => 'Make SVG stylable with CSS',
            'enable' => 'show_image',
        ],
        'image_svg_animate' => [
            'type' => 'checkbox',
            'text' => 'Animate strokes',
            'enable' => 'show_image && image_svg_inline',
        ],
        'image_svg_color' => [
            'label' => 'SVG Color',
            'description' =>
                'Select the SVG color. It will only apply to supported elements defined in the SVG.',
            'type' => 'select',
            'options' => [
                'None' => '',
                'Muted' => 'muted',
                'Emphasis' => 'emphasis',
                'Primary' => 'primary',
                'Secondary' => 'secondary',
                'Success' => 'success',
                'Warning' => 'warning',
                'Danger' => 'danger',
            ],
            'enable' => 'show_image && image_svg_inline',
        ],
        'link_text' => [
            'label' => 'Text',
            'description' => 'Enter the text for the link.',
            'enable' => 'show_link',
        ],
        'link_aria_label' => [
            'label' => 'ARIA Label',
            'description' =>
                'Enter a descriptive text label to make it accessible if the link has no visible text.',
            'enable' => 'show_link',
        ],
        'link_target' => [
            'label' => 'Attributes',
            'description' =>
                "Optionally, open the link in a new window, treat it as download, don't endorse the linked page or don't include the referrer header.",
            'type' => 'checkbox',
            'text' => 'Open in a new window',
            'enable' => 'show_link',
        ],
        'link_download' => [
            'type' => 'checkbox',
            'text' => 'Download',
            'enable' => 'show_link',
        ],
        'link_rel_nofollow' => [
            'type' => 'checkbox',
            'text' => 'Nofollow',
            'enable' => 'show_link',
        ],
        'link_rel_noreferrer' => [
            'type' => 'checkbox',
            'text' => 'Noreferrer',
            'enable' => 'show_link',
        ],
        'link_style' => [
            'label' => 'Style',
            'description' => 'Set the link style.',
            'type' => 'select',
            'options' => [
                'Button Default' => 'default',
                'Button Primary' => 'primary',
                'Button Secondary' => 'secondary',
                'Button Danger' => 'danger',
                'Button Text' => 'text',
                'Link' => '',
                'Link Muted' => 'link-muted',
                'Link Text' => 'link-text',
            ],
            'enable' => 'show_link',
        ],
        'link_size' => [
            'label' => 'Button Size',
            'description' => 'Set the button size.',
            'type' => 'select',
            'options' => [
                'Small' => 'small',
                'Default' => '',
                'Large' => 'large',
            ],
            'enable' => 'show_link && link_style && !$match(link_style, \'link-(muted|text)\')',
        ],
        'link_fullwidth' => [
            'type' => 'checkbox',
            'text' => 'Full width button',
            'enable' => 'show_link && link_style && !$match(link_style, \'link-(muted|text)\')',
        ],
        'link_margin' => [
            'label' => 'Margin Top',
            'description' =>
                'Set the top margin. Note that the margin will only apply if the content field immediately follows another content field.',
            'type' => 'select',
            'options' => [
                'X-Small' => 'xsmall',
                'Small' => 'small',
                'Default' => '',
                'Medium' => 'medium',
                'Large' => 'large',
                'X-Large' => 'xlarge',
                'None' => 'remove',
            ],
            'enable' => 'show_link',
        ],
        'consent_card_size' => [
            'label' => 'Card Size',
            'type' => 'checkbox',
            'text' => 'Small card size',
        ],
        'position' => '${builder.position}',
        'position_left' => '${builder.position_left}',
        'position_right' => '${builder.position_right}',
        'position_top' => '${builder.position_top}',
        'position_bottom' => '${builder.position_bottom}',
        'position_z_index' => '${builder.position_z_index}',
        'blend' => '${builder.blend}',
        'margin_top' => '${builder.margin_top}',
        'margin_bottom' => '${builder.margin_bottom}',
        'maxwidth' => '${builder.maxwidth}',
        'maxwidth_breakpoint' => '${builder.maxwidth_breakpoint}',
        'block_align' => '${builder.block_align}',
        'block_align_breakpoint' => '${builder.block_align_breakpoint}',
        'block_align_fallback' => '${builder.block_align_fallback}',
        'item_text_align' => [
            'label' => 'Text Alignment',
            'description' =>
                'Center, left and right alignment may depend on a breakpoint and require a fallback.',
            'type' => 'select',
            'options' => [
                'None' => '',
                'Left' => 'left',
                'Center' => 'center',
                'Right' => 'right',
                'Justify' => 'justify',
            ],
        ],
        'item_text_align_breakpoint' => [
            'label' => 'Text Alignment Breakpoint',
            'description' => 'Define the device width from which the alignment will apply.',
            'type' => 'select',
            'options' => [
                'Always' => '',
                'Small (Phone Landscape)' => 's',
                'Medium (Tablet Landscape)' => 'm',
                'Large (Desktop)' => 'l',
                'X-Large (Large Screens)' => 'xl',
            ],
            'enable' => "item_text_align && item_text_align != 'justify'",
        ],
        'item_text_align_fallback' => [
            'label' => 'Text Alignment Fallback',
            'description' => 'Define an alignment fallback for device widths below the breakpoint.',
            'type' => 'select',
            'options' => [
                'None' => '',
                'Left' => 'left',
                'Center' => 'center',
                'Right' => 'right',
                'Justify' => 'justify',
            ],
            'enable' =>
                "item_text_align && item_text_align != 'justify' && item_text_align_breakpoint",
        ],
        'animation' => '${builder.animation}',
        '_parallax_button' => '${builder._parallax_button}',
        'visibility' => '${builder.visibility}',
        'container_padding_remove' => '${builder.container_padding_remove}',
        'name' => '${builder.name}',
        'status' => '${builder.status}',
        'source' => '${builder.source}',
        'id' => '${builder.id}',
        'class' => '${builder.cls}',
        'attributes' => '${builder.attrs}',
        'css' => [
            'label' => 'CSS',
            'description' =>
                'Enter your own custom CSS. The following selectors will be prefixed automatically for this element: <code>.el-element</code>, <code>.el-item</code>, <code>.el-title</code>, <code>.el-meta</code>, <code>.el-content</code>, <code>.el-image</code>, <code>.el-link</code>',
            'type' => 'editor',
            'editor' => 'code',
            'mode' => 'css',
            'attrs' => [
                'debounce' => 500,
                'hints' => [
                    '.el-element',
                    '.el-item',
                    '.el-title',
                    '.el-meta',
                    '.el-content',
                    '.el-image',
                    '.el-link',
                ],
            ],
            'source' => true,
        ],
        'transform' => '${builder.transform}',
    ],
    'fieldset' => [
        'default' => [
            'type' => 'tabs',
            'fields' => [
                [
                    'title' => 'Content',
                    'fields' => [
                        'content',
                        'show_title',
                        'show_meta',
                        'show_content',
                        'show_image',
                        'show_link',
                        'marker_icon',
                        [
                            'name' => '_marker_icon_dimension',
                            'type' => 'grid',
                            'width' => '1-2',
                            'fields' => ['marker_icon_width', 'marker_icon_height'],
                        ],
                        'cluster_icon_1',
                        [
                            'name' => '_cluster_icon_1_dimensions',
                            'type' => 'grid',
                            'width' => '1-3',
                            'fields' => [
                                'cluster_icon_1_width',
                                'cluster_icon_1_height',
                                'cluster_icon_1_text_color',
                            ],
                        ],
                        'cluster_icon_2',
                        [
                            'name' => '_cluster_icon_2_dimensions',
                            'type' => 'grid',
                            'width' => '1-3',
                            'fields' => [
                                'cluster_icon_2_width',
                                'cluster_icon_2_height',
                                'cluster_icon_2_text_color',
                            ],
                        ],
                        'cluster_icon_3',
                        [
                            'name' => '_cluster_icon_3_dimensions',
                            'type' => 'grid',
                            'width' => '1-3',
                            'fields' => [
                                'cluster_icon_3_width',
                                'cluster_icon_3_height',
                                'cluster_icon_3_text_color',
                            ],
                        ],
                        'consent_placeholder_image',
                    ],
                ],
                [
                    'title' => 'Settings',
                    'fields' => [
                        [
                            'label' => 'Map',
                            'type' => 'group',
                            'divider' => true,
                            'fields' => [
                                [
                                    'label' => 'Width/Height',
                                    'description' =>
                                        'Set the width and height in pixels. If no width is set, the map takes the full width. If both width and height are set, the map is responsive like an image. Additionally, the width can be used as a breakpoint. The map takes the full width, but below the breakpoint it will start to shrink preserving the aspect ratio.',
                                    'type' => 'grid',
                                    'width' => '1-2',
                                    'fields' => ['width', 'height'],
                                ],
                                'width_breakpoint',
                                [
                                    'label' => 'Height Viewport',
                                    'description' =>
                                        'Set a fixed height, and optionally subtract the header height to fill the first visible viewport. Alternatively, expand the height so the next section also fits the viewport.',
                                    'name' => '_height_viewport',
                                    'type' => 'grid',
                                    'width' => 'expand,auto',
                                    'gap' => 'small',
                                    'fields' => ['height_viewport', 'height_viewport_height'],
                                ],
                                'height_viewport_offset',
                                'type',
                                'zoom',
                                'fit_bounds',
                                'controls',
                                'poi',
                                'zooming',
                                'dragging',
                                'min_zoom',
                                'max_zoom',
                                'text_color',
                            ],
                        ],
                        [
                            'label' => 'Style',
                            'description' => 'Only available for Google Maps.',
                            'type' => 'group',
                            'divider' => true,
                            'fields' => [
                                'styler_hue',
                                'styler_lightness',
                                'styler_invert_lightness',
                                'styler_saturation',
                                'styler_gamma',
                            ],
                        ],
                        [
                            'label' => 'Marker',
                            'type' => 'group',
                            'divider' => true,
                            'fields' => ['clustering'],
                        ],
                        [
                            'label' => 'Popup',
                            'type' => 'group',
                            'divider' => true,
                            'fields' => ['popup_max_width'],
                        ],
                        [
                            'label' => 'Title',
                            'type' => 'group',
                            'divider' => true,
                            'fields' => [
                                'title_style',
                                'title_link',
                                'title_hover_style',
                                'title_decoration',
                                'title_font_family',
                                'title_color',
                                'title_element',
                                'title_margin',
                            ],
                        ],
                        [
                            'label' => 'Meta',
                            'type' => 'group',
                            'divider' => true,
                            'fields' => [
                                'meta_style',
                                'meta_color',
                                'meta_align',
                                'meta_element',
                                'meta_margin',
                            ],
                        ],
                        [
                            'label' => 'Content',
                            'type' => 'group',
                            'divider' => true,
                            'fields' => ['content_style', 'content_margin'],
                        ],
                        [
                            'label' => 'Image',
                            'type' => 'group',
                            'divider' => true,
                            'fields' => [
                                [
                                    'label' => 'Width/Height',
                                    'description' =>
                                        'Setting just one value preserves the original proportions. The image will be resized and cropped automatically, and where possible, high resolution images will be auto-generated.',
                                    'type' => 'grid',
                                    'width' => '1-2',
                                    'fields' => ['image_width', 'image_height'],
                                ],
                                'image_loading',
                                'image_border',
                                'image_link',
                                'image_svg_inline',
                                'image_svg_animate',
                                'image_svg_color',
                            ],
                        ],
                        [
                            'label' => 'Link',
                            'type' => 'group',
                            'divider' => true,
                            'fields' => [
                                'link_text',
                                'link_aria_label',
                                'link_target',
                                'link_download',
                                'link_rel_nofollow',
                                'link_rel_noreferrer',
                                'link_style',
                                'link_size',
                                'link_fullwidth',
                                'link_margin',
                            ],
                        ],
                        [
                            'label' => 'Consent',
                            'type' => 'group',
                            'divider' => true,
                            'fields' => [
                                'consent_card_size',
                            ],
                        ],
                        [
                            'label' => 'General',
                            'type' => 'group',
                            'fields' => [
                                'position',
                                'position_left',
                                'position_right',
                                'position_top',
                                'position_bottom',
                                'position_z_index',
                                'blend',
                                'margin_top',
                                'margin_bottom',
                                'maxwidth',
                                'maxwidth_breakpoint',
                                'block_align',
                                'block_align_breakpoint',
                                'block_align_fallback',
                                'item_text_align',
                                'item_text_align_breakpoint',
                                'item_text_align_fallback',
                                'animation',
                                '_parallax_button',
                                'visibility',
                                'container_padding_remove',
                            ],
                        ],
                    ],
                ],
                '${builder.advanced}',
            ],
        ],
    ],
];
