{% if item.image %} {% endif %} {% assign title = item.product_title %} {% if title != blank %} {{ title }} {% endif %} {% if item.handle != blank %} Item {{ item.handle | upcase }}{% if item.variant_title != blank and item.variant_title != 'Default Title' %} · {{ item.variant_title }}{% endif %} {% endif %} {% if item.properties._source != blank %} {{ item.properties._source }} {% endif %} {% if item.properties._personalization != blank %} Personalization {% endif %} {% for prop in item.properties %} {% assign _prop = prop | first | split:'_' %} {% unless _prop[0] == blank %} {{ prop | first | replace: '_', ' ' }}: {{ prop | last }} {% endunless %} {% endfor %} {% if found_bundle %} {% for prop in item.properties %} {% assign pk1 = prop | first %} {% if pk1 == '_components' %} {% assign bundle_items = prop | last | split: ',' %} {% for bundle_item in bundle_items %} {% if bundle_qty_up and bundle_qty != blank %} {{ bundle_qty }} {% else %} {{ item.quantity }} {% endif %} x {{ bundle_item | strip | replace: 'amp;', '' }} {% endfor %} {% endif %} {% endfor %} {% endif %} {% if show_surcharge %} This item carries a shipping surcharge: {{ surcharge_total | prepend: '$' }} {% endif %} {% for badge in productBadges | where: 'type', 'badge' %} {% assign tagToCheck = badge.tag %} {% for tag in item.properties._tags %} {% if tag == tagToCheck and badge.cart_badge != blank %} {{ badge.cart_badge | newline_to_br }} {% break %} {% endif %} {% endfor %} {% endfor %} {% comment %} Feed price-display both discount sources it ORs over: the compare-at (tag-derived strikethrough base) and the applied line discount. data-discounted-price is emitted unconditionally — the component ignores it unless it is lower than data-price. It must stay unconditional: a Liquid tag inside an HTML tag's attribute list is shredded by the browser's HTML parser in this client-side template, and a "<" in a Liquid tag is escaped to < and fails to parse. {% endcomment %} {% assign line_unit_price = item.original_price | default: item.price %} {% assign line_final_price = item.final_price | default: item.price %} {% if item.properties._personalization != blank %} Edit Personalization {% endif %} Remove item {% if show_quantity %} Quantity for {{ item.product_title | escape }} – Decrease quantity + Increase quantity {% endif %} {% if show_wishlist %} Save for Later {% endif %} {% comment %} Nested add-ons sit between qty/SFL and the remaining upsell CTAs. Use nested_item (not item) — item is the outer for-loop variable and cannot be reassigned in LiquidJS. {% endcomment %} {% assign parent_key = item.key %} {% assign parent_vid = item.variant_id | append: '' %} {% for candidate in items %} {% liquid assign belongs_to_parent = false if candidate.properties._giftwrap_for == parent_key assign belongs_to_parent = true endif if candidate.vendor == 'Extend' and candidate.properties['_Extend.ProductId'] == parent_vid assign belongs_to_parent = true endif if candidate.parent_relationship.parent.key == parent_key assign belongs_to_parent = true endif if candidate.parent_relationship.parent_key == parent_key assign belongs_to_parent = true endif %} {% if belongs_to_parent %} {% assign nested_item = candidate %} {% assign nested_line_index = forloop.index0 %} {% liquid assign savings_pct = 0 assign compare_price = nested_item.properties._compare_at_price | default: nested_item.compare_at_price if compare_price > nested_item.price assign savings_pct = compare_price | minus: nested_item.price | times: 100 | divided_by: compare_price | round endif assign is_free_from_discount = false if nested_item.final_line_price == 0 and nested_item.original_line_price > 0 and nested_item.line_level_discount_allocations.size > 0 assign is_free_from_discount = true endif %} {% comment %} Cart drawer design leads these lines with the same glyph as the CTA that created them (gift / shield) instead of a thumbnail. Hidden on the cart page, which keeps the nest arrow + image layout. {% endcomment %} {% if nested_item.vendor == 'Extend' %} {% else %} {% endif %} {% comment %} Extend warranties are add-on only — their PDP bounces home, so no link. {% endcomment %} {% if nested_item.vendor == 'Extend' %} {% if nested_item.image %} {% endif %} {{ nested_item.quantity }} {% else %} {% if nested_item.image %} {% endif %} {{ nested_item.quantity }} {% endif %} {{ nested_item.product_title }} {% for prop in nested_item.properties %} {% assign _prop = prop | first | split:'_' %} {% unless _prop[0] == blank %} {{ prop | first | replace: '_', ' ' }}: {{ prop | last }} {% endunless %} {% endfor %} {% if is_free_from_discount %} Free {% else %} {% if savings_pct >= 5 %} {{ savings_pct }}% Off {% endif %} {% if compare_price > nested_item.price %} was {{ compare_price | money | replace: ".00", "" }} {% endif %} {{ nested_item.price | money | replace: ".00", "" }} {% endif %} Remove item {% endif %} {% endfor %} {% if show_extend_cta or show_wrap_cta %} {% if show_wrap_cta %} Add Gift Wrap {% if giftwrap_price != blank %} {{ giftwrap_price }} {% endif %} {% endif %} {% if show_extend_cta %} Extend™ Warranty {% endif %} {% endif %}
{% comment %} Cart drawer design leads these lines with the same glyph as the CTA that created them (gift / shield) instead of a thumbnail. Hidden on the cart page, which keeps the nest arrow + image layout. {% endcomment %} {% if nested_item.vendor == 'Extend' %} {% else %} {% endif %} {% comment %} Extend warranties are add-on only — their PDP bounces home, so no link. {% endcomment %} {% if nested_item.vendor == 'Extend' %} {% if nested_item.image %} {% endif %} {{ nested_item.quantity }} {% else %} {% if nested_item.image %} {% endif %} {{ nested_item.quantity }} {% endif %} {{ nested_item.product_title }} {% for prop in nested_item.properties %} {% assign _prop = prop | first | split:'_' %} {% unless _prop[0] == blank %} {{ prop | first | replace: '_', ' ' }}: {{ prop | last }} {% endunless %} {% endfor %} {% if is_free_from_discount %} Free {% else %} {% if savings_pct >= 5 %} {{ savings_pct }}% Off {% endif %} {% if compare_price > nested_item.price %} was {{ compare_price | money | replace: ".00", "" }} {% endif %} {{ nested_item.price | money | replace: ".00", "" }} {% endif %} Remove item