settings.columns{
"name": "IconBlock",
"view": "Default",
"section": "SectionA",
"settings": {
"columns": 4,
"blockExtended": false,
"textColor": "#ffffff",
"icons": [
{
"text": "Sample text",
"header": "Sample text",
"image": {
"id": "Image Id",
"galleryId": "Gallery Id",
"link": "https://example.com/media/sample.jpg",
"mediaType": "Image"
},
"link": "/sample"
},
"..."
],
"id": "Component Id",
"section": "SectionA",
"type": "IconBlock",
"name": "IconBlock",
"configuredInContentApi": false,
"view": "Default",
"displayName": "Sample text",
"cssClass": "(UNDEFINED)"
},
"translations": {
"clickToLearnMoreAbout": "Sample text",
"iconBlock": "Sample text",
"imageFor": "Sample text",
"...": "..."
}
}settings.idcomp-{{ id }}.settings.icons[]settings.cssClass(UNDEFINED).settings.columns (number)1 → lg:w-full2 → lg:w-1/23 → lg:w-1/34 → lg:w-1/4translations.*target="_blank"). If you want the strictest security posture for external links, add rel="noopener noreferrer" in the template.settings.blockExtended and settings.textColor exist in the model example but are not used by the current Noir template.colClass from settings.columns and applies it to each item wrapper.container-lg-row) with gaps.icon.image.link is present → renders <img> with:alt = "{{ translations.imageFor }} <header or translations.iconBlock>"icon.header is present → renders <h2>icon.text is present → renders <p>icon.link is present:<a href="..." target="_blank">translations.clickToLearnMoreAbout in aria-label