BC Icons and ImageBC Icons and Image
SVG IconsText and ImageVideo Capable
← Back to Sections

BC Icons and Image

A clean, professional section for showcasing your brand's core values or key features with customizable icons and text. Perfect for highlighting what makes your business unique - whether it's "Free Shipping," "24/7 Support," "Quality Guaranteed," or your company's mission statements.

Key Features:

  • Display up to 3 values/features in a responsive grid layout with a prominent hero image or video
  • Fully customizable inline SVG icons (Lucide-compatible) with color controls, or upload custom icon images
  • Rich text support for both headings and descriptions with extensive typography controls
  • Hero media section supporting both images and videos with opacity controls and customizable dimensions
  • Responsive typography that scales beautifully on all devices with mobile-specific scaling ratios
  • Flexible styling options: use your theme's colors or apply complete custom branding including borders
  • Mobile-optimized layout that transforms to a 2x2 grid on tablets and stacks vertically on phones
  • Optional call-to-action button with custom styling or theme integration
  • Adjustable content card width and comprehensive padding controls for perfect spacing

Perfect for:Β Trust badges, brand values, service highlights, company principles, product feature showcases, or any content that combines compelling visuals with icon-supported descriptive text in a premium card layout.

{%- style -%}
  .section-{{ section.id }} {
    {% if section.settings.use_custom_colors %}
      background-color: {{ section.settings.background_color }};
      color: {{ section.settings.text_color }};
    {% else %}
      color: rgb(var(--color-foreground));
    {% endif %}
    padding: {{ section.settings.padding_top }}px {{ section.settings.padding_horizontal_desktop }}px {{ section.settings.padding_bottom }}px {{ section.settings.padding_horizontal_desktop }}px;
    {% if section.settings.top_border_thickness > 0 %}
      border-top: {{ section.settings.top_border_thickness }}px solid {{ section.settings.top_border_color }};
    {% endif %}
    {% if section.settings.bottom_border_thickness > 0 %}
      border-bottom: {{ section.settings.bottom_border_thickness }}px solid {{ section.settings.bottom_border_color }};
    {% endif %}
  }

  .section-{{ section.id }} .bc-main-wrapper {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
  }

  .section-{{ section.id }} .bc-content-card {
    background-color: {{ section.settings.inner_background_color }};
    border-radius: 22px;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    position: relative;
    max-width: {{ section.settings.content_card_max_width }}px;
  }

  .section-{{ section.id }} .bc-main-image {
    max-height: {{ section.settings.main_media_height }}px;
    width: 100%;
    object-fit: cover;
    border-top-left-radius: 22px;
    border-top-right-radius: 22px;
    opacity: {{ section.settings.image_opacity }}%;
    display: block;
  }

  .section-{{ section.id }} .bc-main-video {
    max-height: {{ section.settings.main_media_height }}px;
    width: 100%;
    object-fit: cover;
    border-top-left-radius: 22px;
    border-top-right-radius: 22px;
    opacity: {{ section.settings.video_opacity }}%;
    display: block;
  }

  .section-{{ section.id }} .bc-bottom-section {
    display: flex;
    justify-content: space-between;
    gap: 40px;
    padding: 40px;
  }

  .section-{{ section.id }} .bc-value-column {
    width: 25%;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 15px;
  }

  .section-{{ section.id }} .bc-icon {
    width: {{ section.settings.icon_size }}px;
    color: {{ section.settings.icon_color }};
  }

  .section-{{ section.id }} .bc-icon svg {
    width: 100%;
    height: 100%;
    display: block;
  }

  .section-{{ section.id }} .bc-icon img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    display: block;
  }

  .section-{{ section.id }} .bc-value-heading * {
    font-size: clamp({{ section.settings.value_heading_size | times: section.settings.value_heading_mobile_scale_ratio }}rem, 4vw, {{ section.settings.value_heading_size }}rem) !important;
    line-height: {{ section.settings.value_heading_line_height }};
    max-width: {{ section.settings.value_heading_max_width }}ch;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
  }

  .section-{{ section.id }} .bc-value-text * {
    font-size: clamp({{ section.settings.value_text_size | times: section.settings.value_text_mobile_scale_ratio }}rem, 4vw, {{ section.settings.value_text_size }}rem) !important;
    line-height: {{ section.settings.value_text_line_height }};
    max-width: {{ section.settings.value_text_max_width }}ch;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
  }

  .section-{{ section.id }} .button {
    position: absolute;
    top: 25px;
    right: 25px;
  }

  {% if section.settings.use_custom_button_style %}
  .section-{{ section.id }} .bc-button {
    padding: {{ section.settings.button_padding_top }}px {{ section.settings.button_padding_horizontal }}px {{ section.settings.button_padding_bottom }}px {{ section.settings.button_padding_horizontal }}px;
    background-color: {{ section.settings.button_background_color }};
    color: {{ section.settings.button_text_color }};
    border: {{ section.settings.button_border_width }}px solid {{ section.settings.button_border_color }};
    border-radius: {{ section.settings.button_border_radius }}px;
    text-decoration: none;
    display: inline-block;
    transition: background-color 0.3s ease;
  }

  .section-{{ section.id }} .bc-button:hover {
    background-color: {{ section.settings.button_hover_background_color }};
  }
  {% endif %}

  @media screen and (max-width: 991px) {
    .section-{{ section.id }} {
      padding-left: {{ section.settings.padding_horizontal_tablet }}px;
      padding-right: {{ section.settings.padding_horizontal_tablet }}px;
    }

    .section-{{ section.id }} .bc-bottom-section {
      gap: 30px;
      padding: 20px;
    }

    .section-{{ section.id }} .bc-value-column {
      width: unset !important;
    }
  }

  @media screen and (max-width: 767px) {
    .section-{{ section.id }} {
      padding-left: {{ section.settings.padding_horizontal_mobile }}px;
      padding-right: {{ section.settings.padding_horizontal_mobile }}px;
    }

    .section-{{ section.id }} .bc-main-image {
      max-height: {{ section.settings.main_media_height | times: 0.7 | round }}px;
      min-height: {{ section.settings.main_media_height | times: 0.7 | round }}px;
    }

    .section-{{ section.id }} .bc-main-video {
      max-height: {{ section.settings.main_media_height | times: 0.7 | round }}px;
      min-height: {{ section.settings.main_media_height | times: 0.7 | round }}px;
    }

    .section-{{ section.id }} .bc-bottom-section {
      flex-direction: column;
      gap: 40px;
      padding: 40px;
      display: grid;
      grid-template-rows: auto auto;
      grid-template-columns: 1fr 1fr;
      grid-auto-columns: 1fr;
    }

    .section-{{ section.id }} .bc-value-column {
      width: 100%;
    }
  }

  @media screen and (max-width: 479px) {
    .section-{{ section.id }} .bc-main-image {
      max-height: {{ section.settings.main_media_height | times: 0.6 | round }}px;
      min-height: {{ section.settings.main_media_height | times: 0.6 | round }}px;
    }

    .section-{{ section.id }} .bc-main-video {
      max-height: {{ section.settings.main_media_height | times: 0.6 | round }}px;
      min-height: {{ section.settings.main_media_height | times: 0.6 | round }}px;
    }

    .section-{{ section.id }} .bc-bottom-section {
      padding: 40px;
      display: flex;
    }
  }
{%- endstyle -%}

{% comment %} Designed and Developed by Bungalow Creative. Get sections like these at The Section Studio https://bungalowcreative.co/pages/the-section-studio {% endcomment %}

<div class="section-{{ section.id }}{% unless section.settings.use_custom_colors %} color-{{ section.settings.color_scheme }}{% endunless %}">
  <div class="bc-main-wrapper">
    <div class="bc-content-card">
      {% if section.settings.main_video != blank %}
        {{
          section.settings.main_video
          | video_tag:
            controls: false,
            autoplay: true,
            loop: true,
            muted: true,
            preload: 'auto',
            class: 'bc-main-video',
            loading: section.settings.image_loading
        }}
      {% elsif section.settings.main_image != blank %}
        {{
          section.settings.main_image
          | image_url: width: 1200
          | image_tag:
            alt: section.settings.main_image_alt,
            class: 'bc-main-image',
            loading: section.settings.image_loading
        }}
      {% else %}
        <div style="background-color: #f5f5f5; height: 400px; display: flex; align-items: center; justify-content: center; border-top-left-radius: 22px; border-top-right-radius: 22px;">
          <p>Add an image or video</p>
        </div>
      {% endif %}

      <div class="bc-bottom-section">
        {% for i in (1..3) %}
          {% assign icon_image_setting = 'icon_image_' | append: i %}
          {% assign icon_image_alt_setting = 'icon_image_alt_' | append: i %}
          {% assign icon_svg_setting = 'icon_svg_' | append: i %}
          {% assign value_heading_setting = 'value_heading_' | append: i %}
          {% assign value_text_setting = 'value_text_' | append: i %}

          <div class="bc-value-column">
            <div class="bc-icon" style="color: {{ section.settings.icon_color }};">
              {% if section.settings[icon_image_setting] != blank %}
                <img
                  src="{{ section.settings[icon_image_setting] | image_url: 'original' }}"
                  alt="{{ section.settings[icon_image_alt_setting] | default: 'Icon' }}"
                  loading="lazy"
                >
              {% elsif section.settings[icon_svg_setting] != blank %}
                {{ section.settings[icon_svg_setting] }}
              {% endif %}
            </div>

            <div class="bc-value-heading">
              {{ section.settings[value_heading_setting] | default: '<h3>Your Heading Goes Here</h3>' }}
            </div>

            <div class="bc-value-text">
              {{
                section.settings[value_text_setting]
                | default: '<p>Add your description text here to explain this value or benefit.</p>'
              }}
            </div>
          </div>
        {% endfor %}
      </div>

      {% if section.settings.button_link != blank %}
        <a
          href="{{ section.settings.button_link }}"
          class="button{% if section.settings.use_theme_button_class %} {{ section.settings.theme_button_class }}{% endif %}{% if section.settings.use_custom_button_style %} bc-button{% endif %}"
        >
          {{ section.settings.button_text | default: 'Click me' }}
        </a>
      {% endif %}
    </div>
  </div>
</div>

{% schema %}
{
  "name": "BC Icons and Image",
  "settings": [
    {
      "type": "header",
      "content": "Colors"
    },
    {
      "type": "color_scheme",
      "id": "color_scheme",
      "label": "Color Scheme",
      "default": "scheme-1"
    },
    {
      "type": "checkbox",
      "id": "use_custom_colors",
      "label": "Use custom colors instead of a Dawn color scheme",
      "default": false
    },
    {
      "type": "color",
      "id": "background_color",
      "label": "Background Color",
      "default": "#ffffff"
    },
    {
      "type": "color",
      "id": "text_color",
      "label": "Text Color",
      "default": "#000000"
    },
    {
      "type": "color",
      "id": "inner_background_color",
      "label": "Inner Card Background Color",
      "default": "#ffffff"
    },
    {
      "type": "color",
      "id": "icon_color",
      "label": "Icon Color",
      "default": "#000000"
    },
    {
      "type": "color",
      "id": "button_background_color",
      "label": "Button Background Color",
      "default": "#000000"
    },
    {
      "type": "color",
      "id": "button_text_color",
      "label": "Button Text Color",
      "default": "#ffffff"
    },
    {
      "type": "color",
      "id": "button_hover_background_color",
      "label": "Button Hover Background Color",
      "default": "#333333"
    },
    {
      "type": "color",
      "id": "button_border_color",
      "label": "Button Border Color",
      "default": "#000000"
    },
    {
      "type": "color",
      "id": "top_border_color",
      "label": "Top Border Color",
      "default": "#000000"
    },
    {
      "type": "color",
      "id": "bottom_border_color",
      "label": "Bottom Border Color",
      "default": "#000000"
    },
    {
      "type": "header",
      "content": "Section Settings"
    },
    {
      "type": "range",
      "id": "content_card_max_width",
      "label": "Content Card Maximum Width",
      "min": 400,
      "max": 1600,
      "step": 50,
      "default": 1000,
      "unit": "px"
    },
    {
      "type": "range",
      "id": "padding_top",
      "label": "Top Padding",
      "min": 0,
      "max": 150,
      "step": 5,
      "default": 80,
      "unit": "px"
    },
    {
      "type": "range",
      "id": "padding_bottom",
      "label": "Bottom Padding",
      "min": 0,
      "max": 150,
      "step": 5,
      "default": 80,
      "unit": "px"
    },
    {
      "type": "range",
      "id": "padding_horizontal_desktop",
      "label": "Horizontal Padding (Desktop)",
      "min": 0,
      "max": 150,
      "step": 5,
      "default": 50,
      "unit": "px"
    },
    {
      "type": "range",
      "id": "padding_horizontal_tablet",
      "label": "Horizontal Padding (Tablet)",
      "min": 0,
      "max": 150,
      "step": 5,
      "default": 40,
      "unit": "px"
    },
    {
      "type": "range",
      "id": "padding_horizontal_mobile",
      "label": "Horizontal Padding (Mobile)",
      "min": 0,
      "max": 150,
      "step": 5,
      "default": 10,
      "unit": "px"
    },
    {
      "type": "range",
      "id": "top_border_thickness",
      "label": "Top Border Thickness",
      "min": 0,
      "max": 20,
      "step": 1,
      "default": 0,
      "unit": "px"
    },
    {
      "type": "range",
      "id": "bottom_border_thickness",
      "label": "Bottom Border Thickness",
      "min": 0,
      "max": 20,
      "step": 1,
      "default": 0,
      "unit": "px"
    },
    {
      "type": "range",
      "id": "icon_size",
      "label": "Icon Size",
      "min": 12,
      "max": 200,
      "step": 4,
      "default": 28,
      "unit": "px"
    },
    {
      "type": "header",
      "content": "Text Content"
    },
    {
      "type": "richtext",
      "id": "value_heading_1",
      "label": "Value 1 Heading",
      "default": "<h3>Value 1</h3>"
    },
    {
      "type": "richtext",
      "id": "value_text_1",
      "label": "Value 1 Text",
      "default": "<p>Add your description text here to explain this value or benefit.</p>"
    },
    {
      "type": "richtext",
      "id": "value_heading_2",
      "label": "Value 2 Heading",
      "default": "<h3>Value 2</h3>"
    },
    {
      "type": "richtext",
      "id": "value_text_2",
      "label": "Value 2 Text",
      "default": "<p>Add your description text here to explain this value or benefit.</p>"
    },
    {
      "type": "richtext",
      "id": "value_heading_3",
      "label": "Value 3 Heading",
      "default": "<h3>Value 3</h3>"
    },
    {
      "type": "richtext",
      "id": "value_text_3",
      "label": "Value 3 Text",
      "default": "<p>Add your description text here to explain this value or benefit.</p>"
    },
    {
      "type": "header",
      "content": "Typography - Value Headings"
    },
    {
      "type": "range",
      "id": "value_heading_size",
      "label": "Value Heading Font Size",
      "min": 0.5,
      "max": 8,
      "step": 0.1,
      "default": 1.6,
      "unit": "rem",
      "info": "Font size in rem units (good for accessibility)"
    },
    {
      "type": "range",
      "id": "value_heading_line_height",
      "label": "Value Heading Line Height",
      "min": 1,
      "max": 2,
      "step": 0.1,
      "default": 1.4
    },
    {
      "type": "range",
      "id": "value_heading_max_width",
      "label": "Value Heading Max Width",
      "min": 10,
      "max": 100,
      "step": 1,
      "default": 50,
      "unit": "ch"
    },
    {
      "type": "range",
      "id": "value_heading_mobile_scale_ratio",
      "label": "Value Heading Mobile Scale Ratio",
      "min": 0.5,
      "max": 1,
      "step": 0.1,
      "default": 0.7,
      "unit": "Γ—",
      "info": "Controls how much text shrinks on smaller screens"
    },
    {
      "type": "header",
      "content": "Typography - Value Text"
    },
    {
      "type": "range",
      "id": "value_text_size",
      "label": "Value Text Font Size",
      "min": 0.5,
      "max": 8,
      "step": 0.1,
      "default": 1.4,
      "unit": "rem",
      "info": "Font size in rem units (good for accessibility)"
    },
    {
      "type": "range",
      "id": "value_text_line_height",
      "label": "Value Text Line Height",
      "min": 1,
      "max": 2,
      "step": 0.1,
      "default": 1.5
    },
    {
      "type": "range",
      "id": "value_text_max_width",
      "label": "Value Text Max Width",
      "min": 10,
      "max": 100,
      "step": 1,
      "default": 60,
      "unit": "ch"
    },
    {
      "type": "range",
      "id": "value_text_mobile_scale_ratio",
      "label": "Value Text Mobile Scale Ratio",
      "min": 0.5,
      "max": 1,
      "step": 0.1,
      "default": 1,
      "unit": "Γ—",
      "info": "Controls how much text shrinks on smaller screens"
    },
    {
      "type": "header",
      "content": "Media"
    },
    {
      "type": "image_picker",
      "id": "main_image",
      "label": "Main Image"
    },
    {
      "type": "text",
      "id": "main_image_alt",
      "label": "Main Image Alt Text",
      "placeholder": "Describe the image"
    },
    {
      "type": "video",
      "id": "main_video",
      "label": "Main Video (Optional)",
      "info": "Video takes precedence over image if both are provided"
    },
    {
      "type": "range",
      "id": "main_media_height",
      "label": "Media Height",
      "min": 200,
      "max": 800,
      "step": 50,
      "default": 550,
      "unit": "px",
      "info": "Controls the height of both images and videos"
    },
    {
      "type": "range",
      "id": "image_opacity",
      "label": "Image Opacity",
      "min": 10,
      "max": 100,
      "step": 5,
      "unit": "%",
      "default": 100
    },
    {
      "type": "range",
      "id": "video_opacity",
      "label": "Video Opacity",
      "min": 10,
      "max": 100,
      "step": 5,
      "unit": "%",
      "default": 100
    },
    {
      "type": "select",
      "id": "image_loading",
      "label": "Image Loading",
      "options": [
        {
          "value": "lazy",
          "label": "Lazy"
        },
        {
          "value": "eager",
          "label": "Eager"
        }
      ],
      "default": "lazy"
    },
    {
      "type": "header",
      "content": "Icons - Value 1"
    },
    {
      "type": "image_picker",
      "id": "icon_image_1",
      "label": "Icon 1 Image (Optional)",
      "info": "Upload an image to use as the icon. This takes precedence over SVG code if both are provided."
    },
    {
      "type": "text",
      "id": "icon_image_alt_1",
      "label": "Icon 1 Image Alt Text",
      "placeholder": "e.g. Shipping icon"
    },
    {
      "type": "textarea",
      "id": "icon_svg_1",
      "label": "Icon 1 SVG Code",
      "info": "Paste the inline SVG code here. You can copy icons directly from https://lucide.dev/icons using the 'Copy SVG' button. Make sure the SVG uses 'stroke=\"currentColor\"' or 'fill=\"currentColor\"' so the color setting works."
    },
    {
      "type": "header",
      "content": "Icons - Value 2"
    },
    {
      "type": "image_picker",
      "id": "icon_image_2",
      "label": "Icon 2 Image (Optional)",
      "info": "Upload an image to use as the icon. This takes precedence over SVG code if both are provided."
    },
    {
      "type": "text",
      "id": "icon_image_alt_2",
      "label": "Icon 2 Image Alt Text",
      "placeholder": "e.g. Quality icon"
    },
    {
      "type": "textarea",
      "id": "icon_svg_2",
      "label": "Icon 2 SVG Code",
      "info": "Paste the inline SVG code here. You can copy icons directly from https://lucide.dev/icons using the 'Copy SVG' button. Make sure the SVG uses 'stroke=\"currentColor\"' or 'fill=\"currentColor\"' so the color setting works."
    },
    {
      "type": "header",
      "content": "Icons - Value 3"
    },
    {
      "type": "image_picker",
      "id": "icon_image_3",
      "label": "Icon 3 Image (Optional)",
      "info": "Upload an image to use as the icon. This takes precedence over SVG code if both are provided."
    },
    {
      "type": "text",
      "id": "icon_image_alt_3",
      "label": "Icon 3 Image Alt Text",
      "placeholder": "e.g. Speed icon"
    },
    {
      "type": "textarea",
      "id": "icon_svg_3",
      "label": "Icon 3 SVG Code",
      "info": "Paste the inline SVG code here. You can copy icons directly from https://lucide.dev/icons using the 'Copy SVG' button. Make sure the SVG uses 'stroke=\"currentColor\"' or 'fill=\"currentColor\"' so the color setting works."
    },
    {
      "type": "header",
      "content": "Buttons"
    },
    {
      "type": "text",
      "id": "button_text",
      "label": "Button Text",
      "default": "Shop Now",
      "placeholder": "Shop Now"
    },
    {
      "type": "url",
      "id": "button_link",
      "label": "Button Link"
    },
    {
      "type": "checkbox",
      "id": "use_theme_button_class",
      "label": "Use theme button styling",
      "info": "Only enable this if your theme uses a different class than 'button' for its primary buttons."
    },
    {
      "type": "text",
      "id": "theme_button_class",
      "label": "Theme button class",
      "info": "Enter your theme's main button class (e.g. 'btn', 'primary-button') if it's not 'button'.",
      "placeholder": "e.g. btn btn--primary"
    },
    {
      "type": "checkbox",
      "id": "use_custom_button_style",
      "label": "Use custom button styling",
      "info": "Enable this to apply custom styles (padding, colors, radius, etc.) to this section's buttons."
    },
    {
      "type": "range",
      "id": "button_padding_top",
      "label": "Button Top Padding",
      "min": 0,
      "max": 50,
      "step": 1,
      "default": 12,
      "unit": "px"
    },
    {
      "type": "range",
      "id": "button_padding_bottom",
      "label": "Button Bottom Padding",
      "min": 0,
      "max": 50,
      "step": 1,
      "default": 12,
      "unit": "px"
    },
    {
      "type": "range",
      "id": "button_padding_horizontal",
      "label": "Button Horizontal Padding",
      "min": 0,
      "max": 50,
      "step": 1,
      "default": 24,
      "unit": "px"
    },
    {
      "type": "range",
      "id": "button_border_radius",
      "label": "Button Border Radius",
      "min": 0,
      "max": 50,
      "step": 1,
      "default": 4,
      "unit": "px"
    },
    {
      "type": "range",
      "id": "button_border_width",
      "label": "Button Border Width",
      "min": 0,
      "max": 10,
      "step": 1,
      "default": 0,
      "unit": "px"
    }
  ],
  "presets": [
    {
      "name": "BC Icons and Image"
    }
  ]
}
{% endschema %}