easyorders 0.1.15 → 0.1.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/template/theme/config.json +45 -27
- package/dist/template/theme/home-sections/Tilted-Scrolling-Marque/config.json +107 -0
- package/dist/template/theme/home-sections/Tilted-Scrolling-Marque/template.liquid +171 -0
- package/dist/template/theme/home-sections/category-mosaic/config.json +125 -40
- package/dist/template/theme/home-sections/category-mosaic/template.liquid +170 -155
- package/dist/template/theme/home-sections/different-hero/config.json +199 -0
- package/dist/template/theme/home-sections/different-hero/template.liquid +219 -0
- package/dist/template/theme/home-sections/editorial-feature/config.json +93 -67
- package/dist/template/theme/home-sections/editorial-feature/template.liquid +154 -153
- package/dist/template/theme/home-sections/newsletter-luxe/config.json +86 -60
- package/dist/template/theme/home-sections/newsletter-luxe/template.liquid +150 -144
- package/dist/template/theme/home-sections/runway-hero/config.json +148 -91
- package/dist/template/theme/home-sections/runway-hero/template.liquid +189 -159
- package/dist/template/theme/home-sections/shop-the-look/config.json +167 -75
- package/dist/template/theme/home-sections/shop-the-look/template.liquid +326 -304
- package/dist/template/theme/home-sections/slider-before-after/config.json +213 -0
- package/dist/template/theme/home-sections/slider-before-after/template.liquid +336 -0
- package/dist/template/theme/home-sections/test-hero-allbird/config.json +130 -0
- package/dist/template/theme/home-sections/test-hero-allbird/template.liquid +149 -0
- package/dist/template/theme/home-sections/trust-promise/config.json +121 -47
- package/dist/template/theme/home-sections/trust-promise/template.liquid +34 -11
- package/dist/template/theme/home-sections/zoom-parallax/config.json +48 -0
- package/dist/template/theme/home-sections/zoom-parallax/template.liquid +135 -0
- package/dist/template/theme/product-data-schema.json +27 -0
- package/dist/template/theme/schema.json +114 -129
- package/dist/template/theme/script.js +694 -185
- package/dist/template/theme/sections/categories.liquid +20 -4
- package/dist/template/theme/sections/featured-products.liquid +65 -32
- package/dist/template/theme/sections/fixed-buy-button.liquid +6 -1
- package/dist/template/theme/sections/footer.liquid +90 -91
- package/dist/template/theme/sections/gallery.liquid +37 -33
- package/dist/template/theme/sections/header.liquid +105 -25
- package/dist/template/theme/sections/home-products-grid.liquid +68 -10
- package/dist/template/theme/sections/list-products.liquid +73 -30
- package/dist/template/theme/sections/order-invoice.liquid +39 -91
- package/dist/template/theme/sections/product-description.liquid +18 -8
- package/dist/template/theme/sections/product-details.liquid +9 -24
- package/dist/template/theme/sections/products-grid.liquid +102 -54
- package/dist/template/theme/sections/related-products.liquid +124 -60
- package/dist/template/theme/sections/reviews.liquid +43 -28
- package/dist/template/theme/style.css +2283 -589
- package/dist/template/theme/theme-data.json +25 -8
- package/package.json +1 -1
|
@@ -10,54 +10,39 @@
|
|
|
10
10
|
{% endif %}
|
|
11
11
|
</div>
|
|
12
12
|
|
|
13
|
+
<div class="ab-pd-divider"></div>
|
|
14
|
+
|
|
13
15
|
{% if rating > 0 %}
|
|
14
16
|
<div class="ab-pd-rating">
|
|
15
17
|
<div class="ab-pd-stars">
|
|
16
18
|
{% assign full_stars = rating | floor %}
|
|
17
19
|
{% assign has_half = false %}
|
|
18
20
|
{% assign decimal = rating | minus: full_stars %}
|
|
21
|
+
|
|
19
22
|
{% if decimal >= 0.25 and decimal < 0.75 %}
|
|
20
23
|
{% assign has_half = true %}
|
|
21
24
|
{% elsif decimal >= 0.75 %}
|
|
22
25
|
{% assign full_stars = full_stars | plus: 1 %}
|
|
23
26
|
{% endif %}
|
|
24
27
|
|
|
28
|
+
{% assign half_star_index = full_stars | plus: 1 %}
|
|
29
|
+
|
|
25
30
|
{% for i in (1..5) %}
|
|
26
31
|
{% if i <= full_stars %}
|
|
27
32
|
<span class="ab-pd-star ab-pd-star-filled"></span>
|
|
28
|
-
{% elsif has_half and i ==
|
|
33
|
+
{% elsif has_half and i == half_star_index %}
|
|
29
34
|
<span class="ab-pd-star ab-pd-star-half"></span>
|
|
30
35
|
{% else %}
|
|
31
36
|
<span class="ab-pd-star ab-pd-star-empty"></span>
|
|
32
37
|
{% endif %}
|
|
33
38
|
{% endfor %}
|
|
34
39
|
</div>
|
|
40
|
+
|
|
35
41
|
<span class="ab-pd-reviews-count">({{ reviews_count }})</span>
|
|
36
42
|
</div>
|
|
37
|
-
|
|
43
|
+
{% endif %}
|
|
38
44
|
|
|
39
45
|
{% if description and description != "" %}
|
|
40
46
|
<p class="ab-pd-description">{{ description }}</p>
|
|
41
47
|
{% endif %}
|
|
42
|
-
|
|
43
|
-
{% comment %} Wishlist & Compare buttons on the product detail page — dispatch toggle events handled by the storefront JS layer
|
|
44
|
-
<div class="ab-pd-actions">
|
|
45
|
-
<button
|
|
46
|
-
class="ab-pd-wishlist-btn"
|
|
47
|
-
type="button"
|
|
48
|
-
aria-label="Add to wishlist"
|
|
49
|
-
onclick="event.preventDefault();event.stopPropagation();this.dispatchEvent(new CustomEvent('toggle-wishlist',{bubbles:true,detail:{productId:'{{ product_id }}'}}));"
|
|
50
|
-
>
|
|
51
|
-
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
|
|
52
|
-
</button>
|
|
53
|
-
<button
|
|
54
|
-
class="ab-pd-compare-btn"
|
|
55
|
-
type="button"
|
|
56
|
-
aria-label="Compare"
|
|
57
|
-
onclick="event.preventDefault();event.stopPropagation();this.dispatchEvent(new CustomEvent('toggle-compare',{bubbles:true,detail:{productId:'{{ product_id }}'}}));"
|
|
58
|
-
>
|
|
59
|
-
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="16 3 21 8 16 13"/><line x1="21" y1="8" x2="9" y2="8"/><polyline points="8 21 3 16 8 11"/><line x1="3" y1="16" x2="15" y2="16"/></svg>
|
|
60
|
-
</button>
|
|
61
|
-
</div>
|
|
62
|
-
{% endcomment %}
|
|
63
|
-
</div>
|
|
48
|
+
</div>
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
|
|
2
|
-
<section
|
|
2
|
+
<section
|
|
3
|
+
class="ab-pgrid"
|
|
4
|
+
style="
|
|
5
|
+
--ab-sale-badge-bg: {{ theme_data.sale_badge_bg_color | default: '#c94a4a' }};
|
|
6
|
+
--ab-sale-badge-text: {{ theme_data.sale_badge_text_color | default: '#ffffff' }};
|
|
7
|
+
--ab-product-card-bg: {% if theme_data.card_background_product == 'transparent' %}transparent{% else %}{{ theme_data.card_background_product_color | default: '#f5f4f2' }}{% endif %};
|
|
8
|
+
"
|
|
9
|
+
>
|
|
3
10
|
<div class="ab-pgrid-wrap ab-pgrid-wrap--no-hero">
|
|
4
11
|
{% for product in products %}
|
|
5
12
|
{% assign color_variation = product.variations | where: "type", "color" | first %}
|
|
@@ -11,10 +18,52 @@
|
|
|
11
18
|
{% assign swatch_total = image_variation.props.size %}
|
|
12
19
|
{% endif %}
|
|
13
20
|
|
|
21
|
+
{% assign pgrid_custom_badge = '' %}
|
|
22
|
+
{% if product.product_theme_data %}
|
|
23
|
+
{% assign pgrid_custom_badge = product.product_theme_data.custom_badge_title | strip %}
|
|
24
|
+
{% endif %}
|
|
25
|
+
{% assign pgrid_has_sale = false %}
|
|
26
|
+
{% if product.sale_price and product.sale_price < product.price and theme_data.show_sale_badge != false %}
|
|
27
|
+
{% assign pgrid_has_sale = true %}
|
|
28
|
+
{% endif %}
|
|
29
|
+
{% assign pgrid_has_variants = false %}
|
|
30
|
+
{% if product.variations and product.variations.size > 0 %}
|
|
31
|
+
{% assign pgrid_has_variants = true %}
|
|
32
|
+
{% endif %}
|
|
33
|
+
{% assign pgrid_disable_no_stock_str = product.disable_orders_for_no_stock | append: '' | downcase | strip %}
|
|
34
|
+
{% assign pgrid_disable_no_stock = false %}
|
|
35
|
+
{% if pgrid_disable_no_stock_str == 'true' or pgrid_disable_no_stock_str == '1' %}
|
|
36
|
+
{% assign pgrid_disable_no_stock = true %}
|
|
37
|
+
{% endif %}
|
|
38
|
+
{% assign pgrid_stock_flag_raw = product.in_stock | default: product.available %}
|
|
39
|
+
{% assign pgrid_stock_flag_str = pgrid_stock_flag_raw | append: '' | downcase | strip %}
|
|
40
|
+
{% assign pgrid_is_out_of_stock = false %}
|
|
41
|
+
{% if pgrid_stock_flag_str == 'false' or pgrid_stock_flag_str == '0' %}
|
|
42
|
+
{% assign pgrid_is_out_of_stock = true %}
|
|
43
|
+
{% elsif pgrid_stock_flag_str == 'true' or pgrid_stock_flag_str == '1' %}
|
|
44
|
+
{% assign pgrid_is_out_of_stock = false %}
|
|
45
|
+
{% else %}
|
|
46
|
+
{% assign pgrid_stock_qty = product.quantity | default: product.stock | default: product.total_quantity | default: 0 | plus: 0 %}
|
|
47
|
+
{% if pgrid_stock_qty <= 0 %}
|
|
48
|
+
{% assign pgrid_is_out_of_stock = true %}
|
|
49
|
+
{% endif %}
|
|
50
|
+
{% endif %}
|
|
51
|
+
{% assign pgrid_hide_add_btn = false %}
|
|
52
|
+
{% if pgrid_disable_no_stock and pgrid_has_variants == false and pgrid_is_out_of_stock %}
|
|
53
|
+
{% assign pgrid_hide_add_btn = true %}
|
|
54
|
+
{% endif %}
|
|
55
|
+
|
|
14
56
|
<a href="/products/{{ product.slug }}" class="ab-pgrid-card ab-reveal" style="animation-delay: {{ forloop.index | times: 0.04 }}s">
|
|
15
|
-
{% if
|
|
16
|
-
|
|
17
|
-
|
|
57
|
+
{% if pgrid_has_sale or pgrid_custom_badge != '' %}
|
|
58
|
+
<div class="ab-pgrid-badge-stack">
|
|
59
|
+
{% if pgrid_has_sale %}
|
|
60
|
+
{% assign discount = product.price | minus: product.sale_price | times: 100 | divided_by: product.price | floor %}
|
|
61
|
+
<span class="ab-pgrid-badge ab-sale-badge">-{{ discount }}%</span>
|
|
62
|
+
{% endif %}
|
|
63
|
+
{% if pgrid_custom_badge != '' %}
|
|
64
|
+
<span class="ab-pgrid-badge ab-product-custom-badge">{{ pgrid_custom_badge }}</span>
|
|
65
|
+
{% endif %}
|
|
66
|
+
</div>
|
|
18
67
|
{% endif %}
|
|
19
68
|
|
|
20
69
|
<div class="ab-pgrid-media">
|
|
@@ -22,65 +71,64 @@
|
|
|
22
71
|
{% if product.images[0] %}
|
|
23
72
|
<img class="ab-pgrid-img-hover" src="{{ product.images[0] }}" alt="{{ product.name }}" loading="lazy" />
|
|
24
73
|
{% endif %}
|
|
25
|
-
{%
|
|
26
|
-
<div class="ab-card-actions">
|
|
27
|
-
<button
|
|
28
|
-
class="ab-wishlist-btn"
|
|
29
|
-
type="button"
|
|
30
|
-
aria-label="Add to wishlist"
|
|
31
|
-
onclick="event.preventDefault();event.stopPropagation();this.dispatchEvent(new CustomEvent('toggle-wishlist',{bubbles:true,detail:{productId:'{{ product.id }}'}}));"
|
|
32
|
-
>
|
|
33
|
-
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
|
|
34
|
-
</button>
|
|
74
|
+
{% unless pgrid_hide_add_btn %}
|
|
35
75
|
<button
|
|
36
|
-
class="ab-
|
|
76
|
+
class="ab-pgrid-add-btn"
|
|
37
77
|
type="button"
|
|
38
|
-
aria-label="
|
|
39
|
-
onclick="event.preventDefault();event.stopPropagation();this.dispatchEvent(new CustomEvent('
|
|
40
|
-
>
|
|
41
|
-
|
|
42
|
-
</button>
|
|
43
|
-
</div>
|
|
44
|
-
{% endcomment %}
|
|
45
|
-
<button
|
|
46
|
-
class="ab-pgrid-add-btn"
|
|
47
|
-
type="button"
|
|
48
|
-
aria-label="Add to cart"
|
|
49
|
-
onclick="event.preventDefault();event.stopPropagation();this.dispatchEvent(new CustomEvent('quick-add',{bubbles:true,detail:{productId:'{{ product.id }}'}}));"
|
|
50
|
-
></button>
|
|
78
|
+
aria-label="Add to cart"
|
|
79
|
+
onclick="event.preventDefault();event.stopPropagation();this.dispatchEvent(new CustomEvent('quick-add',{bubbles:true,detail:{productId:'{{ product.id }}'}}));"
|
|
80
|
+
></button>
|
|
81
|
+
{% endunless %}
|
|
51
82
|
</div>
|
|
52
83
|
|
|
53
|
-
|
|
54
|
-
|
|
84
|
+
<div class="ab-pgrid-info">
|
|
85
|
+
<p class="ab-pgrid-name">{{ product.name }}</p>
|
|
55
86
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
<
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
<
|
|
87
|
+
{% if color_variation and color_variation.props and color_variation.props.size > 0 %}
|
|
88
|
+
{% assign _sw0 = color_variation.props | first %}
|
|
89
|
+
<p class="ab-pgrid-color">{{ _sw0.name }}</p>
|
|
90
|
+
{% elsif image_variation and image_variation.props and image_variation.props.size > 0 %}
|
|
91
|
+
{% assign _sw0 = image_variation.props | first %}
|
|
92
|
+
<p class="ab-pgrid-color">{{ _sw0.name }}</p>
|
|
62
93
|
{% endif %}
|
|
63
|
-
</div>
|
|
64
94
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
<span class="ab-pgrid-
|
|
69
|
-
{%
|
|
70
|
-
|
|
71
|
-
{%
|
|
72
|
-
|
|
73
|
-
<img src="{{ prop.value }}" alt="{{ prop.name }}" loading="lazy" />
|
|
74
|
-
</span>
|
|
75
|
-
{% endfor %}
|
|
76
|
-
{% endif %}
|
|
95
|
+
<div class="ab-pgrid-price-row">
|
|
96
|
+
{% if product.sale_price and product.sale_price < product.price %}
|
|
97
|
+
<span class="ab-price-old">{{ product.price }} {{ currency }}</span>
|
|
98
|
+
<span class="ab-pgrid-price ab-price-sale">{{ product.sale_price }} {{ currency }}</span>
|
|
99
|
+
{% else %}
|
|
100
|
+
<span class="ab-pgrid-price">{{ product.price }} {{ currency }}</span>
|
|
101
|
+
{% endif %}
|
|
102
|
+
</div>
|
|
77
103
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
104
|
+
<div class="ab-pgrid-swatches">
|
|
105
|
+
{% if color_variation and color_variation.props %}
|
|
106
|
+
{% for prop in color_variation.props limit: 6 %}
|
|
107
|
+
<span
|
|
108
|
+
class="ab-pgrid-swatch{% if forloop.first %} ab-pgrid-swatch--active{% endif %}"
|
|
109
|
+
style="background: {{ prop.value }}"
|
|
110
|
+
title="{{ prop.name }}"
|
|
111
|
+
></span>
|
|
112
|
+
{% endfor %}
|
|
113
|
+
{% elsif image_variation and image_variation.props %}
|
|
114
|
+
{% for prop in image_variation.props limit: 6 %}
|
|
115
|
+
<span
|
|
116
|
+
class="ab-pgrid-swatch ab-pgrid-swatch-image{% if forloop.first %} ab-pgrid-swatch--active{% endif %}"
|
|
117
|
+
title="{{ prop.name }}"
|
|
118
|
+
>
|
|
119
|
+
<img src="{{ prop.value }}" alt="{{ prop.name }}" loading="lazy" />
|
|
120
|
+
</span>
|
|
121
|
+
{% endfor %}
|
|
122
|
+
{% endif %}
|
|
123
|
+
|
|
124
|
+
{% if swatch_total > 6 %}
|
|
125
|
+
<span class="ab-pgrid-swatch-more">+{{ swatch_total | minus: 6 }}</span>
|
|
126
|
+
{% endif %}
|
|
127
|
+
</div>
|
|
81
128
|
</div>
|
|
82
|
-
</
|
|
83
|
-
</a>
|
|
129
|
+
</a>
|
|
84
130
|
{% endfor %}
|
|
85
131
|
</div>
|
|
132
|
+
|
|
133
|
+
|
|
86
134
|
</section>
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
<section
|
|
1
|
+
<section
|
|
2
|
+
class="ab-plist ab-plist--related"
|
|
3
|
+
style="
|
|
4
|
+
--ab-sale-badge-bg: {{ theme_data.sale_badge_bg_color | default: '#c94a4a' }};
|
|
5
|
+
--ab-sale-badge-text: {{ theme_data.sale_badge_text_color | default: '#ffffff' }};
|
|
6
|
+
--ab-product-card-bg: {% if theme_data.card_background_product == 'transparent' %}transparent{% else %}{{ theme_data.card_background_product_color | default: '#f5f4f2' }}{% endif %};
|
|
7
|
+
"
|
|
8
|
+
>
|
|
2
9
|
<div class="ab-plist-header">
|
|
3
10
|
{% if section_title %}
|
|
4
11
|
<h2 class="ab-plist-title ab-reveal">{{ section_title }}</h2>
|
|
@@ -14,75 +21,132 @@
|
|
|
14
21
|
</div>
|
|
15
22
|
|
|
16
23
|
<div class="ab-plist-track">
|
|
17
|
-
{% for product in products %}
|
|
24
|
+
{% for product in products limit: 4 %}
|
|
18
25
|
{% assign color_variation = product.variations | where: "type", "color" | first %}
|
|
19
26
|
{% assign image_variation = product.variations | where: "type", "image" | first %}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
27
|
+
{% assign swatch_total = 0 %}
|
|
28
|
+
{% assign pgrid_custom_badge = '' %}
|
|
29
|
+
{% if product.product_theme_data %}
|
|
30
|
+
{% assign pgrid_custom_badge = product.product_theme_data.custom_badge_title | strip %}
|
|
31
|
+
{% endif %}
|
|
32
|
+
{% assign pgrid_has_sale = false %}
|
|
33
|
+
{% if product.sale_price and product.sale_price < product.price and theme_data.show_sale_badge != false %}
|
|
34
|
+
{% assign pgrid_has_sale = true %}
|
|
35
|
+
{% endif %}
|
|
36
|
+
{% if color_variation and color_variation.props %}
|
|
37
|
+
{% assign swatch_total = color_variation.props.size %}
|
|
38
|
+
{% elsif image_variation and image_variation.props %}
|
|
39
|
+
{% assign swatch_total = image_variation.props.size %}
|
|
40
|
+
{% endif %}
|
|
41
|
+
{% assign pgrid_has_variants = false %}
|
|
42
|
+
{% if product.variations and product.variations.size > 0 %}
|
|
43
|
+
{% assign pgrid_has_variants = true %}
|
|
44
|
+
{% endif %}
|
|
45
|
+
{% assign pgrid_disable_no_stock_str = product.disable_orders_for_no_stock | append: '' | downcase | strip %}
|
|
46
|
+
{% assign pgrid_disable_no_stock = false %}
|
|
47
|
+
{% if pgrid_disable_no_stock_str == 'true' or pgrid_disable_no_stock_str == '1' %}
|
|
48
|
+
{% assign pgrid_disable_no_stock = true %}
|
|
49
|
+
{% endif %}
|
|
50
|
+
{% assign pgrid_stock_flag_raw = product.in_stock | default: product.available %}
|
|
51
|
+
{% assign pgrid_stock_flag_str = pgrid_stock_flag_raw | append: '' | downcase | strip %}
|
|
52
|
+
{% assign pgrid_is_out_of_stock = false %}
|
|
53
|
+
{% if pgrid_stock_flag_str == 'false' or pgrid_stock_flag_str == '0' %}
|
|
54
|
+
{% assign pgrid_is_out_of_stock = true %}
|
|
55
|
+
{% elsif pgrid_stock_flag_str == 'true' or pgrid_stock_flag_str == '1' %}
|
|
56
|
+
{% assign pgrid_is_out_of_stock = false %}
|
|
57
|
+
{% else %}
|
|
58
|
+
{% assign pgrid_stock_qty = product.quantity | default: product.stock | default: product.total_quantity | default: 0 | plus: 0 %}
|
|
59
|
+
{% if pgrid_stock_qty <= 0 %}
|
|
60
|
+
{% assign pgrid_is_out_of_stock = true %}
|
|
25
61
|
{% endif %}
|
|
62
|
+
{% endif %}
|
|
63
|
+
{% assign pgrid_hide_add_btn = false %}
|
|
64
|
+
{% if pgrid_disable_no_stock and pgrid_has_variants == false and pgrid_is_out_of_stock %}
|
|
65
|
+
{% assign pgrid_hide_add_btn = true %}
|
|
66
|
+
{% endif %}
|
|
26
67
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
</button>
|
|
42
|
-
<button
|
|
43
|
-
class="ab-compare-btn"
|
|
44
|
-
type="button"
|
|
45
|
-
aria-label="Compare"
|
|
46
|
-
onclick="event.preventDefault();event.stopPropagation();this.dispatchEvent(new CustomEvent('toggle-compare',{bubbles:true,detail:{productId:'{{ product.id }}'}}));"
|
|
47
|
-
>
|
|
48
|
-
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="16 3 21 8 16 13"/><line x1="21" y1="8" x2="9" y2="8"/><polyline points="8 21 3 16 8 11"/><line x1="3" y1="16" x2="15" y2="16"/></svg>
|
|
49
|
-
</button>
|
|
50
|
-
</div>
|
|
51
|
-
{% endcomment %}
|
|
52
|
-
<button
|
|
53
|
-
class="ab-plist-add-btn"
|
|
54
|
-
type="button"
|
|
55
|
-
aria-label="Add to cart"
|
|
56
|
-
onclick="event.preventDefault();event.stopPropagation();this.dispatchEvent(new CustomEvent('quick-add',{bubbles:true,detail:{productId:'{{ product.id }}'}}));"
|
|
57
|
-
></button>
|
|
58
|
-
</div>
|
|
68
|
+
<div class="ab-pgrid-card ab-reveal" style="animation-delay: {{ forloop.index | times: 0.04 }}s">
|
|
69
|
+
<a href="/products/{{ product.slug }}" class="ab-pgrid-card-link">
|
|
70
|
+
<div class="ab-pgrid-media">
|
|
71
|
+
{% if pgrid_has_sale or pgrid_custom_badge != '' %}
|
|
72
|
+
<div class="ab-pgrid-badge-stack">
|
|
73
|
+
{% if pgrid_has_sale %}
|
|
74
|
+
{% assign discount = product.price | minus: product.sale_price | times: 100 | divided_by: product.price | floor %}
|
|
75
|
+
<span class="ab-pgrid-badge ab-sale-badge">-{{ discount }}%</span>
|
|
76
|
+
{% endif %}
|
|
77
|
+
{% if pgrid_custom_badge != '' %}
|
|
78
|
+
<span class="ab-pgrid-badge ab-product-custom-badge">{{ pgrid_custom_badge }}</span>
|
|
79
|
+
{% endif %}
|
|
80
|
+
</div>
|
|
81
|
+
{% endif %}
|
|
59
82
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
{% if product.sale_price and product.sale_price < product.price %}
|
|
64
|
-
<span class="ab-price-old">{{ product.price }} {{ currency }}</span>
|
|
65
|
-
<span class="ab-plist-price ab-price-sale">{{ product.sale_price }} {{ currency }}</span>
|
|
66
|
-
{% else %}
|
|
67
|
-
<span class="ab-plist-price">{{ product.price }} {{ currency }}</span>
|
|
83
|
+
<img class="ab-pgrid-img-primary" src="{{ product.thumb }}" alt="{{ product.name }}" loading="lazy" />
|
|
84
|
+
{% if product.images[0] %}
|
|
85
|
+
<img class="ab-pgrid-img-hover" src="{{ product.images[0] }}" alt="{{ product.name }}" loading="lazy" />
|
|
68
86
|
{% endif %}
|
|
69
87
|
</div>
|
|
70
88
|
|
|
71
|
-
<div class="ab-
|
|
72
|
-
{
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
{%
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
</span>
|
|
81
|
-
{% endfor %}
|
|
89
|
+
<div class="ab-pgrid-info">
|
|
90
|
+
<p class="ab-pgrid-name">{{ product.name }}</p>
|
|
91
|
+
|
|
92
|
+
{% if color_variation and color_variation.props and color_variation.props.size > 0 %}
|
|
93
|
+
{% assign _sw0 = color_variation.props | first %}
|
|
94
|
+
<p class="ab-pgrid-color">{{ _sw0.name }}</p>
|
|
95
|
+
{% elsif image_variation and image_variation.props and image_variation.props.size > 0 %}
|
|
96
|
+
{% assign _sw0 = image_variation.props | first %}
|
|
97
|
+
<p class="ab-pgrid-color">{{ _sw0.name }}</p>
|
|
82
98
|
{% endif %}
|
|
99
|
+
|
|
100
|
+
<div class="ab-pgrid-price-row">
|
|
101
|
+
{% if product.sale_price and product.sale_price < product.price %}
|
|
102
|
+
<span class="ab-price-old">{{ product.price }} {{ currency }}</span>
|
|
103
|
+
<span class="ab-pgrid-price ab-price-sale">{{ product.sale_price }} {{ currency }}</span>
|
|
104
|
+
{% else %}
|
|
105
|
+
<span class="ab-pgrid-price">{{ product.price }} {{ currency }}</span>
|
|
106
|
+
{% endif %}
|
|
107
|
+
</div>
|
|
108
|
+
|
|
109
|
+
<div class="ab-pgrid-swatches">
|
|
110
|
+
{% if color_variation and color_variation.props %}
|
|
111
|
+
{% for prop in color_variation.props limit: 6 %}
|
|
112
|
+
<span
|
|
113
|
+
class="ab-pgrid-swatch{% if forloop.first %} ab-pgrid-swatch--active{% endif %}"
|
|
114
|
+
style="background: {{ prop.value }}"
|
|
115
|
+
title="{{ prop.name }}"
|
|
116
|
+
></span>
|
|
117
|
+
{% endfor %}
|
|
118
|
+
{% elsif image_variation and image_variation.props %}
|
|
119
|
+
{% for prop in image_variation.props limit: 6 %}
|
|
120
|
+
<span
|
|
121
|
+
class="ab-pgrid-swatch ab-pgrid-swatch-image{% if forloop.first %} ab-pgrid-swatch--active{% endif %}"
|
|
122
|
+
title="{{ prop.name }}"
|
|
123
|
+
>
|
|
124
|
+
<img src="{{ prop.value }}" alt="{{ prop.name }}" loading="lazy" />
|
|
125
|
+
</span>
|
|
126
|
+
{% endfor %}
|
|
127
|
+
{% endif %}
|
|
128
|
+
|
|
129
|
+
{% if swatch_total > 6 %}
|
|
130
|
+
<span class="ab-pgrid-swatch-more">+{{ swatch_total | minus: 6 }}</span>
|
|
131
|
+
{% endif %}
|
|
132
|
+
</div>
|
|
133
|
+
</div>
|
|
134
|
+
</a>
|
|
135
|
+
|
|
136
|
+
{% unless pgrid_hide_add_btn %}
|
|
137
|
+
<div class="ab-pgrid-card-footer">
|
|
138
|
+
<button
|
|
139
|
+
class="ab-pgrid-cta"
|
|
140
|
+
type="button"
|
|
141
|
+
aria-label="Add to cart"
|
|
142
|
+
onclick="event.preventDefault();event.stopPropagation();this.dispatchEvent(new CustomEvent('quick-add',{bubbles:true,detail:{productId:'{{ product.id }}'}}));"
|
|
143
|
+
>
|
|
144
|
+
<svg class="size-5" fill="none" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M8.8999 7.5C8.8999 6.28498 9.88488 5.3 11.0999 5.3H12.8999C14.1149 5.3 15.0999 6.28498 15.0999 7.5C15.0999 7.77615 15.3238 8 15.5999 8C15.876 8 16.0999 7.77615 16.0999 7.5C16.0999 5.73269 14.6672 4.3 12.8999 4.3H11.0999C9.33259 4.3 7.8999 5.73269 7.8999 7.5C7.8999 7.77615 8.12376 8 8.3999 8C8.67604 8 8.8999 7.77615 8.8999 7.5ZM5.7998 15.6V9.39999H18.1998V15.6C18.1998 17.0359 17.0357 18.2 15.5998 18.2H8.39981C6.96387 18.2 5.7998 17.0359 5.7998 15.6ZM4.7998 9.29999C4.7998 8.80294 5.20275 8.39999 5.6998 8.39999H18.2998C18.7969 8.39999 19.1998 8.80294 19.1998 9.29999V15.6C19.1998 17.5882 17.588 19.2 15.5998 19.2H8.39981C6.41158 19.2 4.7998 17.5882 4.7998 15.6V9.29999Z" fill="currentColor"></path></svg>
|
|
145
|
+
<span class="ab-pgrid-cta-label">ADD TO CART</span>
|
|
146
|
+
</button>
|
|
83
147
|
</div>
|
|
84
|
-
|
|
85
|
-
</
|
|
148
|
+
{% endunless %}
|
|
149
|
+
</div>
|
|
86
150
|
{% endfor %}
|
|
87
151
|
</div>
|
|
88
152
|
</section>
|
|
@@ -1,27 +1,38 @@
|
|
|
1
1
|
<div class="ab-reviews">
|
|
2
2
|
<div class="ab-reviews-header">
|
|
3
|
-
<h2 class="ab-reviews-title">
|
|
3
|
+
<h2 class="ab-reviews-title">Real customer reviews</h2>
|
|
4
4
|
<div class="ab-reviews-summary">
|
|
5
|
+
<span class="ab-reviews-count">{{ average_rating_display }} </span>
|
|
5
6
|
<div class="ab-reviews-avg-stars">
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
7
|
+
{% if reviews_count > 0 %}
|
|
8
|
+
{% assign avg_full = average_rating | floor %}
|
|
9
|
+
{% assign avg_decimal = average_rating | minus: avg_full %}
|
|
10
|
+
{% assign avg_has_half = false %}
|
|
11
|
+
|
|
12
|
+
{% if avg_decimal >= 0.25 and avg_decimal < 0.75 %}
|
|
13
|
+
{% assign avg_has_half = true %}
|
|
14
|
+
{% elsif avg_decimal >= 0.75 %}
|
|
15
|
+
{% assign avg_full = avg_full | plus: 1 %}
|
|
16
|
+
{% endif %}
|
|
17
|
+
|
|
18
|
+
{% assign half_star_index = avg_full | plus: 1 %}
|
|
19
|
+
|
|
20
|
+
{% for i in (1..5) %}
|
|
21
|
+
{% if i <= avg_full %}
|
|
22
|
+
<span class="ab-pd-star ab-pd-star-filled"></span>
|
|
23
|
+
{% elsif avg_has_half and i == half_star_index %}
|
|
24
|
+
<span class="ab-pd-star ab-pd-star-half"></span>
|
|
25
|
+
{% else %}
|
|
26
|
+
<span class="ab-pd-star ab-pd-star-empty"></span>
|
|
27
|
+
{% endif %}
|
|
28
|
+
{% endfor %}
|
|
29
|
+
{% else %}
|
|
30
|
+
{% for i in (1..5) %}
|
|
31
|
+
<span class="ab-pd-star ab-pd-star-empty"></span>
|
|
32
|
+
{% endfor %}
|
|
33
|
+
{% endif %}
|
|
34
|
+
</div>
|
|
35
|
+
<span class="ab-reviews-count"> ({{ reviews_count }} {{ t_reviews }})</span>
|
|
25
36
|
</div>
|
|
26
37
|
<button class="ab-reviews-write-btn" type="button" onclick="this.dispatchEvent(new CustomEvent('review-open',{bubbles:true}))">{{ t_share_your_review }}</button>
|
|
27
38
|
</div>
|
|
@@ -30,14 +41,18 @@
|
|
|
30
41
|
{% for review in reviews %}
|
|
31
42
|
<div class="ab-review-card">
|
|
32
43
|
<div class="ab-review-stars">
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
44
|
+
<div class="stars-wrapper">
|
|
45
|
+
{% for i in (1..5) %}
|
|
46
|
+
{% if i <= review.rating %}
|
|
47
|
+
<span class="ab-pd-star ab-pd-star-filled"></span>
|
|
48
|
+
{% else %}
|
|
49
|
+
<span class="ab-pd-star ab-pd-star-empty"></span>
|
|
50
|
+
{% endif %}
|
|
51
|
+
{% endfor %}
|
|
52
|
+
</div>
|
|
53
|
+
|
|
54
|
+
<span class="verified-badge">Verified Buyer</span>
|
|
55
|
+
</div>
|
|
41
56
|
{% if review.user_name and review.user_name != "" %}
|
|
42
57
|
<h3 class="ab-review-author">{{ review.user_name }}</h3>
|
|
43
58
|
{% endif %}
|