Code, koaluxury.com

 avatar
unknown
liquid
a year ago
66 kB
18
No Index
<!-- /sections/section-product.liquid -->
{%- liquid
  assign product = all_products[section.settings.home_product]
  assign current_variant = product.selected_or_first_available_variant
  assign unique = section.id
  assign bg_color = section.settings.bg_color
  assign text_color = section.settings.color
  assign border_color = section.settings.border_color
-%}

{%- style -%}
  #Product--{{ section.id }} {
    --PT: {{ section.settings.padding_top }}px;
    --PB: {{ section.settings.padding_bottom }}px;

    {%- unless bg_color == 'rgba(0,0,0,0)' or bg_color == blank -%}
      --bg: {{ bg_color }};
    {%- endunless -%}

    {%- unless text_color == 'rgba(0,0,0,0)' or text_color == blank -%}
      --text: {{ text_color }};
      --text-light: {{ text_color | color_mix: settings.bg_color, 70 }};
      --text-dark: {{ text_color | color_saturate: 10 | color_darken: 15 }};
    {%- endunless -%}

    {%- unless border_color == 'rgba(0,0,0,0)' or border_color == blank -%}
      --border: {{ border_color }};
    {%- endunless -%}
  }
{%- endstyle -%}

<div
  id="Product--{{ unique }}"
  class="index-product section-padding"
  data-section-id="{{ unique }}"
  data-section-type="product"
  data-enable-history-state="false"
  data-sticky-enabled="{{ section.settings.product_sticky_enable }}"
  data-tall-layout="{% if section.settings.image_layout == 'stacked' or section.settings.image_layout == 'grid-1' or section.settings.image_layout == 'grid-2' %}true{% else %}false{% endif %}"
  data-slideshow-disabled-mobile="{% if section.settings.mobile_image_style == 'slider' %}true{% else %}false{% endif %}"
  data-image-zoom-enable="{{ section.settings.enable_zoom }}"
>
  {%- if product.empty? -%}
    {%- render 'onboarding-product', section: section, unique: section.id -%}
  {%- else -%}
    <!-- /snippets/product.liquid -->

    {% comment %}
      Renders product content

      Accepts:
      - product: {Object} Current product (required)
      - section: {Object} Image to render (required)
    {% endcomment %}

    {%- liquid
      assign current_variant = product.selected_or_first_available_variant
      assign unique = unique | default: ''
      assign enable_video_looping = section.settings.enable_video_looping
      assign image_size = section.settings.image_size
      assign image_layout = section.settings.image_layout
      assign mobile_image_style = section.settings.mobile_image_style
      assign featured_media = current_variant.featured_media | default: product.featured_media
      assign featured_media_aspect_ratio = featured_media.aspect_ratio | default: 1
      assign is_title_linked = true
      if template.name == 'product'
        assign is_title_linked = false
      endif

      assign enable_thumbnails = false
      if image_layout == 'thumbnails' or image_layout == 'thumbnails-left' or mobile_image_style == 'thumbs'
        assign enable_thumbnails = true
      endif

      assign modifier = image_layout | default: 'thumbnails'
      assign product_wrapper_modifier = 'product__wrapper--' | append: modifier

      assign show_buy_buttons = false
      assign buy_buttons = section.blocks | where: 'type', 'buttons'

      if buy_buttons.size > 0
        assign show_buy_buttons = true
      endif

      assign image_width = 770

      if image_size == 'small'
        assign product_wrapper_modifier = product_wrapper_modifier | append: ' product__wrapper--small'
        assign image_width = 525
      endif

      if image_size == 'stretch'
        assign product_wrapper_modifier = product_wrapper_modifier | append: ' product__wrapper--stretch'
        assign image_width = 970
      endif

      assign product_form_id = 'ProductForm--' | append: section.id | append: '-' | append: product.id
    -%}

    <div class="product__wrapper {{ product_wrapper_modifier }}" data-product>
      <div class="product__wrapper__inner">
        <div class="product__page">
          <div class="product__images{% if mobile_image_style == 'slider' %} product__images--no-thumbs{% else %} product__images--has-thumbs{% endif %}">
            {%- if product.media.size > 0 -%}
              <div
                class="product__slides product-single__photos"
                style="--featured-media-aspect-ratio: {{ featured_media_aspect_ratio | round: 2 }};"
                data-product-slideshow
                data-product-single-media-group
                data-options='{"prevNextButtons": true, "contain": true, "adaptiveHeight": true, "fade": true}'
              >
                {%- for media in product.media -%}
                  {%- render 'media',
                    media: media,
                    featured_media: featured_media,
                    enable_video_looping: enable_video_looping,
                    sectionkey: unique,
                    image_width: image_width,
                    cover: true
                  -%}
                {%- endfor -%}
              </div>

              {%- assign first_3d_model = product.media | where: 'media_type', 'model' | first -%}
              {%- if first_3d_model -%}
                <button
                  class="btn btn--outline btn--black btn--ar product-single__view-in-space"
                  data-shopify-xr
                  data-shopify-model3d-id="{{ first_3d_model.id }}"
                  data-shopify-title="{{ product.title | strip_html }}"
                  data-shopify-xr-hidden
                >
                  {%- render 'icon-media-model' -%}

                  <span class="product-single__view-in-space-text">{{ 'products.general.view_space' | t }}</span>
                </button>
              {%- endif -%}

              {%- if enable_thumbnails and product.media.size > 1 -%}
                <!--
                  <div class="product__thumbs" data-product-thumbs>
                    <div class="product__thumbs__holder" data-thumbs-slider>
                      {%- for media in product.media -%}
                        <div class="product__thumb{% if forloop.first %} is-active{% endif %}" data-thumb-item>
                          <a
                            class="product__thumb__link"
                            href="{{ media.preview_image.src }}"
                            aria-current="{% if forloop.first %}true{% else %}false{% endif %}"
                            data-media-id="{{ section.id }}-{{ media.id }}"
                            data-thumb-index="{{ forloop.index0 }}"
                            data-thumb-link
                          >
                            {%- liquid
                              render 'image', image: media.preview_image, width: 150, height: 150, sizes: '75px', widths: '75, 100, 150, 225, 300', aspect_ratio: 1

                              if media.media_type == 'video' or media.media_type == 'external_video'
                                render 'icon-media-video'
                              elsif media.media_type == 'model'
                                render 'icon-media-model'
                              endif
                            -%}
                          </a>
                        </div>
                      {%- endfor -%}
                    </div>
                  </div>
                -->
              {%- endif -%}
            {%- else -%}
              <div
                class="product__slides product__slides--{{ image_size }} product-single__photos"
                data-product-slideshow
                data-product-single-media-group
              >
                <div class="product__photo product__photo--blank product__slide"></div>
              </div>
            {%- endif -%}
          </div>

          <div class="product__content"></div>
          <div
            class="form__wrapper{% unless show_buy_buttons %} form__wrapper--no-buttons{% endunless %}{% unless current_variant.available %} variant--soldout{% endunless %}"
            data-form-wrapper
          >
            <div class="form__width">
              {% comment %} The input with name="id" submits to cart {% endcomment %}
              <input type="hidden" name="id" value="{{ current_variant.id }}" form="{{ product_form_id }}">

              {%- for block in section.blocks -%}
                {%- liquid
                  assign padding_bottom = block.settings.padding_bottom
                  assign bg_accent = block.settings.bg_color

                  capture block_style
                    if padding_bottom
                      echo '--block-padding-bottom: ' | append: block.settings.padding_bottom | append: 'px;'
                    endif

                    if bg_accent
                      if block.type == 'upsell' or block.type == 'complementary-products'
                        unless bg_accent == 'rgba(0,0,0,0)' or bg_accent == blank
                          echo '--bg-accent: ' | append: bg_accent | append: ';'
                        endunless
                      endif
                    endif
                  endcapture

                  if block_style != blank
                    assign block_style = 'style="' | append: block_style | append: '"'
                  endif
                -%}

                {%- case block.type -%}
                  {%- when '@app' -%}
                    {%- render block -%}

                  {%- when 'title' -%}
                    {%- render 'product-title',
                      product: product,
                      section_id: section.id,
                      block: block,
                      block_style: block_style,
                      is_title_linked: is_title_linked
                    -%}

                  {%- when 'price' -%}
                    {%- render 'product-price',
                      product: product,
                      section_id: section.id,
                      block: block,
                      block_style: block_style
                    -%}

                  {%- when 'variants' -%}
                    {%- render 'product-variant-options',
                      product: product,
                      section_id: section.id,
                      block: block,
                      block_style: block_style,
                      product_form_id: product_form_id,
                      enable_size_chart: true
                    -%}

                  {%- when 'buttons' -%}
                    {%- render 'product-buttons',
                      product: product,
                      current_variant: current_variant,
                      section_id: section.id,
                      block: block,
                      block_style: block_style,
                      unique: unique,
                      product_form_id: product_form_id
                    -%}

                  {%- when 'tab_richtext' -%}
                    {%- render 'product-description',
                      product: product,
                      section_id: section.id,
                      block: block,
                      block_style: block_style
                    -%}

                  {%- when 'inventory_countdown' -%}
                    {% comment %} Product inventory {% endcomment %}

                    {%- liquid
                      assign show_remaining_class = ''
                      assign show_notice = block.settings.show_notice
                      assign max_inventory = block.settings.max_inventory
                      assign hide_inventory_count = block.settings.hide_inventory_counter
                      assign current_inventory = 0
                      assign has_unavailable_variants = false
                      assign show_buy_buttons = false
                      assign buy_buttons = section.blocks | where: 'type', 'buttons'
                      if buy_buttons.size > 0
                        assign show_buy_buttons = true
                      endif

                      comment
                        Set a limit of the max inventory quantity to prevent a real quantity exposure
                      endcomment
                      assign max_inventory_quantity = max_inventory | plus: 1

                      if current_variant.inventory_management and current_variant.inventory_policy == 'deny'
                        if current_variant.inventory_quantity > 0 and current_variant.inventory_quantity <= max_inventory
                          assign show_remaining_class = 'count-is-low'
                          assign current_inventory = current_variant.inventory_quantity | at_most: max_inventory_quantity
                        elsif current_variant.inventory_quantity > 0 and current_variant.inventory_quantity > max_inventory and show_notice == 'always'
                          assign show_remaining_class = 'count-is-in'
                        elsif current_variant.inventory_quantity < 1 and show_notice == 'always'
                          assign show_remaining_class = 'count-is-out'
                        endif
                      endif

                      assign show_inventory = false
                      assign has_low_inventory = false
                      assign has_soldout = false
                      assign variants_inventory = product.variants | map: 'inventory_quantity'
                      for inventory_quantity in variants_inventory
                        if inventory_quantity > 0 and inventory_quantity < max_inventory
                          assign has_low_inventory = true
                        endif

                        if inventory_quantity < 1
                          assign has_soldout = true
                        endif
                      endfor

                      if has_low_inventory or has_soldout and show_notice == 'always'
                        assign show_inventory = true
                      endif

                      assign variant_count = 1
                      for option in product.options_with_values
                        assign variant_count = variant_count | times: option.values.size
                      endfor

                      if variant_count > product.variants.size
                        assign has_unavailable_variants = true
                      endif

                      if show_buy_buttons == false and has_unavailable_variants
                        assign show_inventory = true
                      endif
                    -%}

                    {%- if show_inventory or show_notice == 'always' -%}
                      {%- capture inventory -%}
    <span data-remaining-count>{{ current_inventory | default: 0 }}</span>
  {%- endcapture -%}

                      <div
                        class="product__block variant__countdown {{ show_remaining_class }}"
                        data-remaining-max="{{ max_inventory }}"
                        data-remaining-show-notice="{{ show_notice }}"
                        data-remaining-wrapper
                        {{ block.shopify_attributes }}
                        {{ block_style }}
                      >
                        <span class="variant__countdown--in">{{ 'products.product.in_stock' | t }}</span>
                        {%- if hide_inventory_count -%}
                          <span class="variant__countdown--low">{{ 'products.product.remaining_no_count' | t }}</span>
                        {%- else -%}
                          <span class="variant__countdown--low">
                            {{- 'products.product.remaining_html' | t: inventory: inventory -}}
                          </span>
                        {%- endif -%}

                        <span class="variant__countdown--out">{{ 'products.product.out_of_stock' | t }}</span>
                        <span class="variant__countdown--unavailable">
                          {{- 'products.product.item_unavailable' | t -}}
                        </span>

                        <script data-product-remaining-json type="application/json">
                          {
                            {%- liquid
                              for variant in product.variants
                                assign variant_id = variant.id | json

                                if variant.inventory_management and variant.inventory_policy == 'deny'
                                  assign quantity = variant.inventory_quantity | at_most: max_inventory_quantity

                                  if hide_inventory_count
                                    if quantity < 1
                                      assign remaining_value = 'out'
                                    elsif quantity > 0 and quantity < max_inventory
                                      assign remaining_value = 'low'
                                    else
                                      assign remaining_value = 'in'
                                    endif
                                  else
                                    assign remaining_value = quantity
                                  endif
                                else
                                  assign remaining_value = 'unavailable'
                                endif

                                echo '"' | append: variant_id | append: '": "' | append: remaining_value | append: '"'

                                unless forloop.last
                                  echo ','
                                endunless
                              endfor
                            -%}
                          }
                        </script>
                      </div>
                    {%- elsif request.design_mode -%}
                      <div {{ block.shopify_attributes }}></div>
                    {%- endif -%}

                  {%- when 'upsell' -%}
                    {%- assign upsell_product = product.metafields.theme.upsell.value
                      | default: block.settings.upsell_product
                    -%}

                    <div class="product__block product__upsell" {{ block.shopify_attributes }} {{ block_style }}>
                      {%- assign upsell_title = 'products.general.upsell_title' | t -%}
                      {%- render 'upsell-product', upsell_product: upsell_product, upsell_title: upsell_title -%}
                    </div>

                  {%- when 'pickup' -%}
                    <div
                      class="product__block product__pickup"
                      data-store-availability-container="{{ current_variant.id }}"
                      {{ block.shopify_attributes }}
                      {{ block_style }}
                    ></div>

                  {%- when 'code' -%}
                    <div class="product__block product__custom-code" {{ block_style }} {{ block.shopify_attributes }}>
                      {{ block.settings.code }}
                    </div>

                  {%- when 'siblings' -%}
                    {%- render 'product-siblings',
                      product: product,
                      uniq_id: product_form_id,
                      block: block,
                      block_style: block_style,
                      quick_add_product: false
                    -%}

                  {%- when 'text' -%}
                    {% comment %} Text block for product {% endcomment %}

                    {%- if block.settings.title != blank or block.settings.text != blank -%}
                      <div class="product__block product__text" {{ block.shopify_attributes }} {{ block_style }}>
                        {%- if block.settings.title != blank -%}
                          <p class="product__heading strong">
                            {{- block.settings.title -}}
                          </p>
                        {%- endif -%}

                        {%- if block.settings.text != blank -%}
                          <div class="product__subheading">
                            {{- block.settings.text -}}
                          </div>
                        {%- endif -%}
                      </div>
                    {%- endif -%}

                  {%- when 'icon' -%}
                    {% comment %} Icon block for Product {% endcomment %}
                    {%- liquid
                      assign image = block.settings.image
                      assign prev_index = forloop.index0 | minus: 1
                      assign next_index = forloop.index0 | plus: 1
                      assign prev_block = section.blocks[prev_index]
                      assign next_block = section.blocks[next_index]
                      assign icon_color = block.settings.icon_color
                      if icon_color != blank and icon_color != 'rgba(0,0,0,0)'
                        assign block_style = ' style="--text: ' | append: icon_color | append: '"'
                      endif
                      assign width = block.settings.width
                    -%}

                    {%- if forloop.index0 == 0 or prev_block.type != 'icon' -%}
                      <div
                        class="product__block product__icon__row"
                        style="--block-padding-bottom: {{ block.settings.padding_bottom }}px;"
                      >
                    {%- endif -%}

                    <div
                      class="product__icon__container product__icon__container--{{ width }}"
                      {{ block_style }}
                      {{ block.shopify_attributes }}
                    >
                      {%- liquid
                        assign icon_size = block.settings.icon_size
                        assign icon_color = block.settings.icon_color
                        capture icon_style
                          echo 'style="'
                          echo '--icon-size: ' | append: icon_size | append: 'px;'
                          if icon_color != blank and icon_color != 'rgba(0,0,0,0)'
                            echo ' --text: ' | append: icon_color | append: ';'
                          endif
                          echo '"'
                        endcapture
                      -%}
                      <div class="product__icon" data-aos="img-in" {{ icon_style }}>
                        {%- liquid
                          if image
                            assign icon_width = icon_size
                            assign icon_width_retina = icon_width | times: 2
                            assign icon_sizes = icon_width | append: 'px'
                            assign icon_widths = icon_width | append: ', ' | append: icon_width_retina

                            render 'image', image: image, width: icon_width_retina, sizes: icon_sizes, widths: icon_widths, show_backfill: false
                          else
                            render 'animated-icon', filename: block.settings.icon_name
                          endif
                        -%}
                      </div>

                      {%- if block.settings.title != blank -%}
                        <div class="product__icon__text" data-aos="fade" data-aos-duration="500">
                          <p>{{ block.settings.title }}</p>
                        </div>
                      {%- endif -%}
                    </div>

                    {%- if forloop.index == section.blocks.size or next_block.type != 'icon' -%}
                      </div>
                    {%- endif -%}

                  {%- when 'sharing' -%}
                    <div class="product__block" {{ block.shopify_attributes }}>
                      {%- assign share_url = current_variant.url | prepend: request.origin -%}
                      {%- render 'share-button', share_url: share_url -%}
                    </div>

                  {%- when 'divider' -%}
                    {%- render 'divider', block: block, modifier: 'product__block product__block--divider' -%}

                  {%- when 'line-item' -%}
                    <div
                      class="product__block{% if settings.show_lines %} product__block--lines{% endif %} select__fieldset"
                      {{ block.shopify_attributes }}
                      {{ block_style }}
                    >
                      {%- if block.settings.label != blank -%}
                        {%- assign input_id = unique
                          | append: '-'
                          | append: block.id
                          | append: '-'
                          | append: forloop.index
                        -%}
                        {%- assign required = block.settings.required -%}
                        {%- case block.settings.type -%}
                          {%- when 'text' -%}
                            <label for="{{ input_id }}" class="select__label">
                              {{- block.settings.label | escape_once -}}
                            </label>

                            <input
                              type="text"
                              class="properties__input"
                              id="{{ input_id }}"
                              form="{{ product_form_id }}"
                              {% if required %}
                                required
                              {% endif %}
                              name="properties[{{ block.settings.label | escape_once }}]"
                            >

                          {%- when 'checkbox' -%}
                            {%- if block.settings.unchecked_value != blank and block.settings.checked_value != blank -%}
                              <div class="properties__checkbox checkbox">
                                <input
                                  type="hidden"
                                  name="properties[{{ block.settings.label | escape_once }}]"
                                  form="{{ product_form_id }}"
                                  value="{{ block.settings.unchecked_value }}"
                                >

                                <input
                                  type="checkbox"
                                  name="properties[{{ block.settings.label | escape_once }}]"
                                  id="{{ input_id }}"
                                  form="{{ product_form_id }}"
                                  value="{{ block.settings.checked_value }}"
                                >

                                <label
                                  class="radio__fieldset__label"
                                  for="{{ input_id }}"
                                >
                                  {{- block.settings.label | escape_once -}}
                                </label>
                              </div>
                            {%- endif -%}

                          {%- when 'dropdown' -%}
                            {%- capture line_item_options -%}
        <ul id="{{ unique }}-select-{{ option.name | handle }}" class="select-popout__list" data-popout-list>
          {%- assign has_selected = false -%}
          {%- assign selected_value = '' -%}

          {%- for i in (1..3) -%}
            {%- assign value = 'option_' | append: forloop.index -%}
            {%- assign value = block.settings[value] -%}

            {%- if value != blank -%}
              <li class="select-popout__item{% unless has_selected %} is-active{% endunless %}">
                <a class="select-popout__option"
                  href="#"
                  {% unless has_selected %}aria-current="true"{% endunless %}
                  data-value="{{ value | escape_once }}"
                  data-popout-option>
                  <span>
                    {{ value | escape_once }}
                  </span>
                </a>
              </li>

              {%- unless has_selected -%}
                {%- assign selected_value = value -%}
              {%- endunless -%}
              {%- assign has_selected = true -%}
            {%- endif -%}
          {%- endfor -%}
        </ul>
      {%- endcapture -%}

                            {%- if has_selected -%}
                              <span class="radio__legend">
                                <span class="radio__legend__label">{{ block.settings.label | escape_once }}</span>
                              </span>

                              <div class="select-popout" data-popout data-popout-prevent="true">
                                <button
                                  type="button"
                                  class="select-popout__toggle"
                                  aria-expanded="false"
                                  aria-controls="{{ unique }}-select-{{ option.name | handle }}"
                                  aria-labelledby="{{ unique }}-select-{{ option.name | handle }}-label"
                                  data-popout-toggle
                                >
                                  <span data-popout-toggle-text>{{ selected_value }}</span>
                                  {%- render 'icon-nav-arrow-down' -%}
                                </button>

                                {{ line_item_options }}

                                <input
                                  type="hidden"
                                  name="properties[{{ block.settings.label | escape_once }}]"
                                  id="{{ input_id }}"
                                  value="{{ selected_value | escape_once }}"
                                  form="{{ product_form_id }}"
                                  data-popout-input
                                  data-single-option-selector
                                >
                              </div>
                            {%- endif -%}
                        {%- endcase -%}
                      {%- endif -%}
                    </div>

                  {%- when 'features' -%}
                    {% comment %} Features block for Product {% endcomment %}

                    {%- liquid
                      assign block_id = block.id
                      assign text = block.settings.text
                      assign title = block.settings.title
                      assign prev_index = forloop.index0 | minus: 1
                      assign next_index = forloop.index0 | plus: 1
                      assign prev_block = section.blocks[prev_index]
                      assign next_block = section.blocks[next_index]
                      assign image = block.settings.icon_alt
                      assign bg_color = block.settings.bg_color
                      assign text_color = block.settings.color

                      comment
                        Always force dots style to be "line" except if "Circle" is chosen from the global settings
                      endcomment
                      assign dots_style = 'line'
                      if settings.dots_style == 'circle'
                        assign dots_style = 'circle'
                      endif

                      capture style
                        if bg_color != 'rgba(0,0,0,0)' and bg_color != blank
                          echo '--bg: ' | append: bg_color | append: ';'
                        endif

                        if text_color != 'rgba(0,0,0,0)' and text_color != blank
                          echo '--text: ' | append: text_color | append: ';'
                        endif
                      endcapture
                    -%}

                    {%- if forloop.index0 == 0 or prev_block.type != 'features' -%}
                      {%- assign slide_index = 0 -%}
                      <div
                        class="product__block product__features"
                        {{ block_style }}
                        data-slider
                        data-slider-fullwidth
                        data-dots="{{ dots_style }}"
                        data-options='{"pageDots": true, "adaptiveHeight": true, "autoPlay": false, "prevNextButtons": false, "fade": false, "draggable": ">1"}'
                      >
                    {%- endif -%}

                    <div
                      class="product__feature"
                      data-slide="{{ block_id }}"
                      data-slide-index="{{ slide_index }}"
                      data-block-id="{{ block_id }}"
                      {% if style != blank %}
                        style="{{ style }}"
                      {% endif %}
                      {{ block.shopify_attributes }}
                    >
                      <div class="product__feature__content">
                        <div class="product__icon__container product__feature__heading">
                          {%- assign icon_size = block.settings.icon_size -%}
                          <div class="product__icon" style="--icon-size: {{ icon_size }}px;">
                            {%- liquid
                              if image
                                assign icon_width = icon_size
                                assign icon_width_retina = icon_width | times: 2
                                assign icon_sizes = icon_width | append: 'px'
                                assign icon_widths = icon_width | append: ', ' | append: icon_width_retina
                                render 'image', image: image, width: icon_width_retina, sizes: icon_sizes, widths: icon_widths, show_backfill: false
                              else
                                render 'animated-icon', filename: block.settings.icon_name
                              endif
                            -%}
                          </div>

                          {%- if title != blank -%}
                            <div class="product__icon__text">
                              <p>{{ title }}</p>
                            </div>
                          {%- endif -%}
                        </div>

                        {%- if text != blank -%}
                          <div class="rte">
                            {{ text }}
                          </div>
                        {%- endif -%}
                      </div>
                    </div>

                    {%- if forloop.index == section.blocks.size or next_block.type != 'features' -%}
                      </div>
                    {%- endif -%}

                    {%- assign slide_index = slide_index | plus: 1 -%}

                  {%- when 'complementary-products' -%}
                    <div
                      class="product__block product__complementary"
                      {{ block.shopify_attributes }}
                      {{ block_style }}
                    >
                      <complementary-products
                        class="complementary-products"
                        data-url="{{ routes.product_recommendations_url }}?section_id={{ section.id }}&product_id={{ product.id }}&limit=10&intent=complementary"
                      >
                        {%- if recommendations.performed and recommendations.products_count > 0 -%}
                          {%- assign complementary_products_title = 'products.general.complementary_products_title'
                            | t
                          -%}
                          {%- if complementary_products_title != blank -%}
                            <p class="complementary-products__title">{{ complementary_products_title }}</p>
                          {%- endif -%}

                          {%- for product in recommendations.products -%}
                            {%- render 'upsell-product', upsell_product: product -%}
                          {%- endfor -%}
                        {%- endif -%}
                      </complementary-products>
                    </div>
                {%- endcase -%}
              {%- endfor -%}
            </div>
          </div>
        </div>
      </div>
    </div>

    {% unless product == empty %}
      <script type="application/json" data-product-json>
        {{ product | json }}
      </script>
      <script type="application/json" id="ModelJson-{{ unique }}">
        {{ product.media | where: 'media_type', 'model' | json }}
      </script>
    {% endunless %}

    {% comment %} Google wants to know when to check your price again {% endcomment %}

    {%- liquid
      assign days_price_is_valid = 1
      assign seconds_in_a_day = 86400
      assign seconds_price_valid = days_price_is_valid | times: seconds_in_a_day

      if product.selected_or_first_available_variant.featured_media
        assign seo_media = product.selected_or_first_available_variant.featured_media
      else
        assign seo_media = product.featured_media
      endif
    -%}

    <script type="application/ld+json">
      {
        "@context": "http://schema.org/",
        "@type": "Product",
        "name": {{ product.title | json }},
        "url": {{ request.origin | append: product.url | json }},
        {% if seo_media -%}
          "image": [
            {{ seo_media | image_url: width: 1920 | prepend: "https:" | json }}
          ],
        {%- endif %}
        "description": {{ product.description | strip_html | json }},
        {%- if current_variant.sku != blank -%}
          "sku": {{ current_variant.sku | json }},
        {%- endif -%}
        {%- if product.metafields.reviews.rating.value != blank -%}
          "aggregateRating": {
            "@type": "AggregateRating",
            "ratingValue": "{{ product.metafields.reviews.rating.value }}",
            "ratingCount": "{{ product.metafields.reviews.rating_count.value }}",
            "bestRating": "{{ product.metafields.reviews.rating.value.scale_max }}",
            "worstRating": "{{ product.metafields.reviews.rating.value.scale_min }}"
          },
        {%- endif -%}
        "brand": {
          "@type": "Organization",
          "name": {{ product.vendor | json }}
        },
        "offers": [
          {%- for variant in product.variants -%}
            {
              "@type" : "Offer",
              {%- if variant.sku != blank -%}
                "sku": {{ variant.sku | json }},
              {%- endif -%}
              {%- if variant.barcode.size == 12 -%}
                "gtin12": {{ variant.barcode }},
              {%- endif -%}
              {%- if variant.barcode.size == 13 -%}
                "gtin13": {{ variant.barcode }},
              {%- endif -%}
              {%- if variant.barcode.size == 14 -%}
                "gtin14": {{ variant.barcode }},
              {%- endif -%}
              "availability" : "http://schema.org/{% if variant.available %}InStock{% else %}OutOfStock{% endif %}",
              "price" : {{ variant.price | divided_by: 100.00 | json }},
              "priceCurrency" : {{ cart.currency.iso_code | json }},
              "priceValidUntil": "{{ 'now' | date: '%s' | plus: seconds_price_valid | date: '%Y-%m-%d' }}",
              "url" : {{ request.origin | append: variant.url | json }}
            }{% unless forloop.last %},{% endunless %}
          {%- endfor -%}
        ]
      }
    </script>
  {%- endif -%}
</div>

{% schema %}
{
  "name": "Featured product",
  "settings": [
    {
      "type": "product",
      "id": "home_product",
      "label": "Product"
    },
    {
      "type": "header",
      "content": "Layout"
    },
    {
      "type": "checkbox",
      "id": "product_sticky_enable",
      "label": "Enable sticky form",
      "default": true
    },
    {
      "type": "select",
      "id": "image_layout",
      "label": "Style",
      "default": "thumbnails",
      "options": [
        { "value": "thumbnails", "label": "Thumbnails - Bottom" },
        { "value": "thumbnails-left", "label": "Thumbnails - Left" },
        { "value": "stacked", "label": "Stacked" },
        { "value": "grid-1", "label": "Mosaic" },
        { "value": "grid-2", "label": "Grid" }
      ],
      "info": "Desktop only"
    },
    {
      "type": "select",
      "id": "image_size",
      "label": "Image size",
      "options": [
        {
          "value": "small",
          "label": "Small"
        },
        {
          "value": "normal",
          "label": "Normal"
        },
        {
          "value": "stretch",
          "label": "Stretch - No thumbnails"
        }
      ],
      "default": "normal"
    },
    {
      "type": "header",
      "content": "Media",
      "info": "Learn more about [media types](https://help.shopify.com/manual/products/product-media)"
    },
    {
      "type": "checkbox",
      "id": "enable_zoom",
      "label": "Enable zoom",
      "default": true
    },
    {
      "type": "checkbox",
      "id": "enable_video_looping",
      "label": "Enable video looping",
      "default": false
    },
    {
      "type": "header",
      "content": "Mobile"
    },
    {
      "type": "select",
      "id": "mobile_image_style",
      "label": "Style",
      "options": [
        {
          "value": "thumbs",
          "label": "Thumbnails"
        },
        {
          "value": "slider",
          "label": "Slider"
        }
      ],
      "default": "thumbs"
    },
    {
      "type": "header",
      "content": "Colors"
    },
    {
      "id": "bg_color",
      "type": "color",
      "label": "Background"
    },
    {
      "type": "color",
      "id": "color",
      "label": "Text"
    },
    {
      "type": "color",
      "id": "border_color",
      "label": "Border"
    },
    {
      "type": "header",
      "content": "Block padding"
    },
    {
      "type": "range",
      "id": "block_padding",
      "min": 0,
      "max": 50,
      "step": 1,
      "unit": "px",
      "label": "Padding",
      "default": 20
    },
    {
      "type": "header",
      "content": "Section padding"
    },
    {
      "type": "range",
      "id": "padding_top",
      "min": 0,
      "max": 100,
      "step": 1,
      "unit": "px",
      "label": "Padding top",
      "default": 50
    },
    {
      "type": "range",
      "id": "padding_bottom",
      "min": 0,
      "max": 100,
      "step": 1,
      "unit": "px",
      "label": "Padding bottom",
      "default": 50
    }
  ],
  "blocks": [
    {
      "type": "@app"
    },
    {
      "type": "title",
      "name": "Title",
      "limit": 1,
      "settings": [
        {
          "type": "select",
          "id": "subheading_option",
          "label": "Navigation",
          "default": "none",
          "options": [
            { "value": "none", "label": "None" },
            { "value": "breadcrumb", "label": "Breadcrumb" },
            { "value": "collection", "label": "Collection" },
            { "value": "vendor", "label": "Vendor" }
          ]
        },
        {
          "type": "header",
          "content": "Star rating"
        },
        {
          "type": "checkbox",
          "id": "show_rating",
          "label": "Show ratings",
          "default": true,
          "info": "Requires an app to set the metafield value for reviews.rating"
        },
        {
          "type": "checkbox",
          "id": "enable_star_rating",
          "label": "Enable star rating",
          "default": true
        },
        {
          "type": "checkbox",
          "id": "show_rating_count",
          "label": "Show rating count",
          "default": false
        },
        {
          "type": "header",
          "content": "Block spacing"
        },
        {
          "type": "range",
          "id": "padding_bottom",
          "min": 0,
          "max": 50,
          "step": 2,
          "unit": "px",
          "label": "Padding bottom",
          "default": 8
        }
      ]
    },
    {
      "type": "price",
      "name": "Price",
      "limit": 1,
      "settings": [
        {
          "type": "header",
          "content": "Block spacing"
        },
        {
          "type": "range",
          "id": "padding_bottom",
          "min": 0,
          "max": 50,
          "step": 2,
          "unit": "px",
          "label": "Padding bottom",
          "default": 16
        }
      ]
    },
    {
      "type": "variants",
      "name": "Variant picker",
      "limit": 1,
      "settings": [
        {
          "type": "header",
          "content": "Size chart"
        },
        {
          "type": "page",
          "id": "info_page",
          "label": "Page",
          "info": "[Learn more](https://broadcast.invisiblethemes.com/products/size-charts)"
        },
        {
          "type": "header",
          "content": "Subscriptions",
          "info": "Learn more about [subscriptions](https://help.shopify.com/en/manual/products/subscriptions)"
        },
        {
          "type": "checkbox",
          "id": "subscriptions_enable_selectors",
          "label": "Enable subscription selectors",
          "info": "Shown on products with subscription options",
          "default": false
        },
        {
          "type": "header",
          "content": "Block spacing"
        },
        {
          "type": "range",
          "id": "padding_bottom",
          "min": 0,
          "max": 50,
          "step": 2,
          "unit": "px",
          "label": "Padding bottom",
          "default": 16
        }
      ]
    },
    {
      "type": "buttons",
      "name": "Buy buttons",
      "limit": 1,
      "settings": [
        {
          "type": "checkbox",
          "id": "show_quantity",
          "label": "Show quantity selector",
          "default": true
        },
        {
          "type": "checkbox",
          "id": "show_payment_button",
          "label": "Show dynamic checkout buttons",
          "info": "Each customer will see their preferred payment method from those available on your store, such as PayPal or Apple Pay. [Learn more](https://help.shopify.com/en/manual/online-store/os/dynamic-checkout)",
          "default": true
        },
        {
          "type": "header",
          "content": "Block spacing"
        },
        {
          "type": "range",
          "id": "padding_bottom",
          "min": 0,
          "max": 50,
          "step": 2,
          "unit": "px",
          "label": "Padding bottom",
          "default": 32
        }
      ]
    },
    {
      "type": "siblings",
      "name": "Siblings",
      "limit": 1,
      "settings": [
        {
          "type": "paragraph",
          "content": "Siblings allow you to split colors into separate products. [Learn more](https://invisiblethemes.com/link/broadcast/docs/siblings)"
        },
        {
          "type": "text",
          "id": "siblings_collection",
          "label": "Product siblings collection handle",
          "info": "Use a metafield containing a collection handle for color siblings.  The collection should contain all color options as unique products."
        },
        {
          "type": "text",
          "id": "sibling_color",
          "label": "Product color metafield",
          "info": "Use a single line text metafield called 'theme.sibling_color' for product color."
        },
        {
          "type": "header",
          "content": "Block spacing"
        },
        {
          "type": "range",
          "id": "padding_bottom",
          "min": 0,
          "max": 50,
          "step": 2,
          "unit": "px",
          "label": "Padding bottom",
          "default": 16
        }
      ]
    },
    {
      "type": "tab_richtext",
      "name": "Description",
      "limit": 1,
      "settings": [
        {
          "type": "checkbox",
          "id": "show_read_more",
          "label": "Show read more button",
          "default": true
        },
        {
          "type": "select",
          "id": "style",
          "label": "Tab style",
          "default": "tabs",
          "options": [
            { "value": "inline", "label": "Disable tabs" },
            { "value": "tabs", "label": "Tabs" },
            { "value": "accordions", "label": "Accordions" }
          ]
        },
        {
          "type": "text",
          "id": "title_1",
          "label": "Tab heading",
          "default": "Tab"
        },
        {
          "type": "richtext",
          "id": "raw_content_1",
          "label": "Tab text",
          "default": "<p>This content type will accept <strong>rich text</strong> to help with adding styles and links to additional pages or content. Use this to add supplementary information to help your buyers.</p>"
        },
        {
          "type": "text",
          "id": "title_2",
          "label": "Tab heading",
          "default": "Info"
        },
        {
          "type": "richtext",
          "id": "raw_content_2",
          "label": "Tab text",
          "default": "<p>You can use product metafields to assign content to this tab that is unique to an individual product.  Use tabs to highlight unique features, sizing information, or other sales information.</p>"
        },
        {
          "type": "text",
          "id": "title_3",
          "label": "Tab heading"
        },
        {
          "type": "richtext",
          "id": "raw_content_3",
          "label": "Tab text"
        },
        {
          "type": "text",
          "id": "title_4",
          "label": "Tab heading"
        },
        {
          "type": "richtext",
          "id": "raw_content_4",
          "label": "Tab text"
        },
        {
          "type": "text",
          "id": "title_5",
          "label": "Tab heading"
        },
        {
          "type": "richtext",
          "id": "raw_content_5",
          "label": "Tab text"
        },
        {
          "type": "header",
          "content": "Block spacing"
        },
        {
          "type": "range",
          "id": "padding_bottom",
          "min": 0,
          "max": 50,
          "step": 2,
          "unit": "px",
          "label": "Padding bottom",
          "default": 0
        }
      ]
    },
    {
      "type": "upsell",
      "name": "Upsell",
      "limit": 1,
      "settings": [
        {
          "type": "paragraph",
          "content": "Use the metafield “theme.upsell” to connect an upsell product. [Learn more](https://invisiblethemes.com/link/broadcast/docs/upsell)"
        },
        {
          "type": "product",
          "id": "upsell_product",
          "label": "Product"
        },
        {
          "type": "header",
          "content": "Colors"
        },
        {
          "type": "color",
          "id": "bg_color",
          "label": "Background"
        },
        {
          "type": "header",
          "content": "Block spacing"
        },
        {
          "type": "range",
          "id": "padding_bottom",
          "min": 0,
          "max": 50,
          "step": 2,
          "unit": "px",
          "label": "Padding bottom",
          "default": 16
        }
      ]
    },
    {
      "type": "inventory_countdown",
      "name": "Inventory countdown",
      "limit": 1,
      "settings": [
        {
          "type": "select",
          "id": "show_notice",
          "label": "Show notice",
          "default": "low-inventory",
          "options": [
            { "label": "Always", "value": "always" },
            { "label": "Low inventory", "value": "low-inventory" }
          ]
        },
        {
          "type": "range",
          "id": "max_inventory",
          "label": "Low inventory threshold",
          "min": 1,
          "max": 50,
          "step": 1,
          "default": 10
        },
        {
          "type": "checkbox",
          "id": "hide_inventory_counter",
          "label": "Hide inventory counter",
          "default": true
        },
        {
          "type": "header",
          "content": "Block spacing"
        },
        {
          "type": "range",
          "id": "padding_bottom",
          "min": 0,
          "max": 50,
          "step": 2,
          "unit": "px",
          "label": "Padding bottom",
          "default": 16
        }
      ]
    },
    {
      "type": "sharing",
      "name": "Sharing",
      "limit": 1,
      "settings": [
        {
          "type": "header",
          "content": "Block spacing"
        },
        {
          "type": "range",
          "id": "padding_bottom",
          "min": 0,
          "max": 50,
          "step": 2,
          "unit": "px",
          "label": "Padding bottom",
          "default": 16
        }
      ]
    },
    {
      "type": "text",
      "name": "Text",
      "settings": [
        {
          "type": "text",
          "id": "title",
          "label": "Heading",
          "default": "Have questions?"
        },
        {
          "type": "richtext",
          "id": "text",
          "label": "Text",
          "default": "<p>Get in touch with us at any time.</p>"
        },
        {
          "type": "header",
          "content": "Block spacing"
        },
        {
          "type": "range",
          "id": "padding_bottom",
          "min": 0,
          "max": 50,
          "step": 2,
          "unit": "px",
          "label": "Padding bottom",
          "default": 16
        }
      ]
    },
    {
      "type": "code",
      "name": "Custom code",
      "settings": [
        {
          "type": "liquid",
          "id": "code",
          "label": "Custom code",
          "info": "Add app snippets or other Liquid code to create advanced customizations."
        },
        {
          "type": "header",
          "content": "Block spacing"
        },
        {
          "type": "range",
          "id": "padding_bottom",
          "min": 0,
          "max": 50,
          "step": 2,
          "unit": "px",
          "label": "Padding bottom",
          "default": 16
        }
      ]
    },
    {
      "type": "icon",
      "name": "Icon",
      "settings": [
      {
          "type": "select",
          "id": "icon_name",
          "label": "Icon",
          "default": "icon-award",
          "options": [
            { "label": "Award", "value": "icon-award" },
            { "label": "Box", "value": "icon-box" },
            { "label": "Chat", "value": "icon-chat" },
            { "label": "Cloud", "value": "icon-cloud" },
            { "label": "Diameter", "value": "icon-diameter" },
            { "label": "Discount", "value": "icon-discount" },
            { "label": "Donation", "value": "icon-donation" },
            { "label": "Droplet", "value": "icon-droplet" },
            { "label": "Info", "value": "icon-info-empty" },
            { "label": "Email", "value": "icon-email" },
            { "label": "Fast shipment", "value": "icon-fast-shipment" },
            { "label": "Flare", "value": "icon-flare" },
            { "label": "Flower", "value": "icon-flower" },
            { "label": "Gift", "value": "icon-gift" },
            { "label": "Green shipment", "value": "icon-green-shipment" },
            { "label": "Heart", "value": "icon-heart" },
            { "label": "Leaf", "value": "icon-leaf" },
            { "label": "Lightening", "value": "icon-lightening" },
            { "label": "Location", "value": "icon-location" },
            { "label": "Mail", "value": "icon-mail" },
            { "label": "Notes", "value": "icon-notes" },
            { "label": "Pants", "value": "icon-pants" },
            { "label": "Peace", "value": "icon-peace" },
            { "label": "Pin", "value": "icon-pin" },
            { "label": "Planet", "value": "icon-planet" },
            { "label": "Phone", "value": "icon-phone" },
            { "label": "Recycle", "value": "icon-recycle" },
            { "label": "Ruler", "value": "icon-ruler" },
            { "label": "Shield", "value": "icon-shield" },
            { "label": "Smile", "value": "icon-smile" },
            { "label": "Star", "value": "icon-star" },
            { "label": "Tree", "value": "icon-tree" },
            { "label": "Trophy", "value": "icon-trophy" },
            { "label": "Truck", "value": "icon-truck" },
            { "label": "Vegan", "value": "icon-vegan" },
            { "label": "Wash", "value": "icon-wash" },
            { "label": "Washing machine", "value": "icon-washing-machine" }
          ]
        },
        {
          "type": "image_picker",
          "id": "image",
          "label": "Alternative icon/image"
        },
        {
          "type": "range",
          "id": "icon_size",
          "label": "Size",
          "unit": "px",
          "min": 20,
          "max": 80,
          "step": 5,
          "default": 20
        },
        {
          "type": "color",
          "id": "icon_color",
          "label": "Icon color",
          "default": "#545454"
        },
        {
          "type": "text",
          "id": "title",
          "label": "Heading",
          "default": "Title"
        },
        {
          "type": "header",
          "content": "Layout"
        },
        {
          "type": "select",
          "id": "width",
          "label": "Width",
          "default": "full",
          "options": [
            { "label": "Full width", "value": "full" },
            { "label": "Half", "value": "half" },
            { "label": "One third", "value": "third" },
            { "label": "One quarter", "value": "quarter" }
          ]
        },
        {
          "type": "header",
          "content": "Block spacing"
        },
        {
          "type": "range",
          "id": "padding_bottom",
          "min": 0,
          "max": 50,
          "step": 2,
          "unit": "px",
          "label": "Padding bottom",
          "default": 16
        }
      ]
    },
    {
      "type": "divider",
      "name": "Divider",
      "settings": [
        {
          "type": "checkbox",
          "id": "show_line",
          "label": "Show line",
          "default": true
        },
        {
          "type": "range",
          "id": "padding_top",
          "min": 0,
          "max": 50,
          "step": 1,
          "unit": "px",
          "label": "Padding top",
          "default": 20
        },
        {
          "type": "range",
          "id": "padding_bottom",
          "min": 0,
          "max": 50,
          "step": 1,
          "unit": "px",
          "label": "Padding bottom",
          "default": 20
        }
      ]
    },
    {
      "type": "line-item",
      "name": "Line item property",
      "settings": [
        {
          "type": "text",
          "id": "label",
          "label": "Label",
          "default": "Your label"
        },
        {
          "type": "select",
          "id": "type",
          "label": "Type",
          "default": "text",
          "options": [
            { "label": "Text", "value": "text" },
            { "label": "Checkbox", "value": "checkbox" },
            { "label": "Dropdown", "value": "dropdown" }
          ]
        },
        {
          "type": "header",
          "content": "Text",
          "info": "For Type set to \"Text\"."
        },
        {
          "type": "checkbox",
          "id": "required",
          "label": "Required",
          "default": true
        },
        {
          "type": "header",
          "content": "Checkbox",
          "info": "For Type set to \"Checkbox\"."
        },
        {
          "type": "text",
          "id": "checked_value",
          "label": "Checked value",
          "default": "Yes"
        },
        {
          "type": "text",
          "id": "unchecked_value",
          "label": "Unchecked value",
          "default": "No"
        },
        {
          "type": "header",
          "content": "Dropdown",
          "info": "For Type set to \"Dropdown\"."
        },
        {
          "type": "text",
          "id": "option_1",
          "label": "Option 1",
          "default": "Option 1"
        },
        {
          "type": "text",
          "id": "option_2",
          "label": "Option 2",
          "default": "Option 2"
        },
        {
          "type": "text",
          "id": "option_3",
          "label": "Option 3",
          "default": "Option 3"
        },
        {
          "type": "header",
          "content": "Block spacing"
        },
        {
          "type": "range",
          "id": "padding_bottom",
          "min": 0,
          "max": 50,
          "step": 2,
          "unit": "px",
          "label": "Padding bottom",
          "default": 16
        }
      ]
    },
    {
      "type": "features",
      "name": "Feature",
      "settings": [
        {
          "type": "select",
          "id": "icon_name",
          "label": "Icon",
          "default": "icon-award",
          "options": [
            { "label": "Award", "value": "icon-award" },
            { "label": "Box", "value": "icon-box" },
            { "label": "Chat", "value": "icon-chat" },
            { "label": "Cloud", "value": "icon-cloud" },
            { "label": "Diameter", "value": "icon-diameter" },
            { "label": "Discount", "value": "icon-discount" },
            { "label": "Donation", "value": "icon-donation" },
            { "label": "Droplet", "value": "icon-droplet" },
            { "label": "Info", "value": "icon-info-empty" },
            { "label": "Email", "value": "icon-email" },
            { "label": "Fast shipment", "value": "icon-fast-shipment" },
            { "label": "Flare", "value": "icon-flare" },
            { "label": "Flower", "value": "icon-flower" },
            { "label": "Gift", "value": "icon-gift" },
            { "label": "Green shipment", "value": "icon-green-shipment" },
            { "label": "Heart", "value": "icon-heart" },
            { "label": "Leaf", "value": "icon-leaf" },
            { "label": "Lightening", "value": "icon-lightening" },
            { "label": "Location", "value": "icon-location" },
            { "label": "Mail", "value": "icon-mail" },
            { "label": "Notes", "value": "icon-notes" },
            { "label": "Pants", "value": "icon-pants" },
            { "label": "Peace", "value": "icon-peace" },
            { "label": "Pin", "value": "icon-pin" },
            { "label": "Planet", "value": "icon-planet" },
            { "label": "Phone", "value": "icon-phone" },
            { "label": "Recycle", "value": "icon-recycle" },
            { "label": "Ruler", "value": "icon-ruler" },
            { "label": "Shield", "value": "icon-shield" },
            { "label": "Smile", "value": "icon-smile" },
            { "label": "Star", "value": "icon-star" },
            { "label": "Tree", "value": "icon-tree" },
            { "label": "Trophy", "value": "icon-trophy" },
            { "label": "Truck", "value": "icon-truck" },
            { "label": "Vegan", "value": "icon-vegan" },
            { "label": "Wash", "value": "icon-wash" },
            { "label": "Washing machine", "value": "icon-washing-machine" }
          ]
        },
        {
          "type": "image_picker",
          "id": "icon_alt",
          "label": "Alternative icon/image"
        },
        {
          "type": "range",
          "id": "icon_size",
          "label": "Size",
          "unit": "px",
          "min": 20,
          "max": 80,
          "step": 5,
          "default": 20
        },
        {
          "type": "text",
          "id": "title",
          "label": "Heading",
          "default": "Feature"
        },
        {
          "type": "richtext",
          "id": "text",
          "label": "Text",
          "default": "<p>This content type will accept <strong>rich text</strong> to help with adding styles and links to additional pages or content. Use this to add supplementary information to help your buyers.</p>"
        },
        {
          "type": "header",
          "content": "Colors"
        },
        {
          "id": "bg_color",
          "type": "color",
          "label": "Background",
          "default": "#F7F9FA"
        },
        {
          "type": "color",
          "id": "color",
          "label": "Text",
          "default": "#212121"
        },
        {
          "type": "header",
          "content": "Block spacing"
        },
        {
          "type": "range",
          "id": "padding_bottom",
          "min": 0,
          "max": 50,
          "step": 2,
          "unit": "px",
          "label": "Padding",
          "default": 16
        }
      ]
    },
    {
      "type": "complementary-products",
      "name": "Complementary products",
      "limit": 1,
      "settings": [
        {
          "type": "paragraph",
          "content": "To select complementary products, add the Search & Discovery app. [Learn more](https://help.shopify.com/manual/online-store/search-and-discovery/product-recommendations)"
        },
        {
          "type": "header",
          "content": "Colors"
        },
        {
          "type": "color",
          "id": "bg_color",
          "label": "Background"
        },
        {
          "type": "header",
          "content": "Block spacing"
        },
        {
          "type": "range",
          "id": "padding_bottom",
          "min": 0,
          "max": 50,
          "step": 2,
          "unit": "px",
          "label": "Padding bottom",
          "default": 16
        }
      ]
    }
  ],
  "presets": [
    {
      "name": "Featured product",
      "category": "Collection",
      "blocks": [
        {
          "type": "title"
        },
        {
          "type": "price"
        },
        {
          "type": "variants"
        },
        {
          "type": "buttons"
        },
        {
          "type": "tab_richtext"
        },
        {
          "type": "divider",
          "settings": {
            "padding_top": 30,
            "padding_bottom": 20
          }
        },
        {
          "type": "upsell"
        },
        {
          "type": "divider",
          "settings": {
            "padding_top": 10,
            "padding_bottom": 30
          }
        },
        {
          "type": "icon",
          "settings": {
            "icon_name": "icon-email",
            "title": "Free 30 Days Returns"
          }
        },
        {
          "type": "icon",
          "settings": {
            "icon_name": "icon-truck",
            "title": "Free shipping on orders over $100"
          }
        }
      ]
    }
  ],
  "disabled_on": {
    "groups": ["header", "aside", "custom.pre_footer", "footer"]
  }
}
{% endschema %}
Editor is loading...
Leave a Comment