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
|
@@ -1,12 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
<style>
|
|
2
|
+
:root {
|
|
3
|
+
--ab-main-container-top-padding: {{ theme_data.main_container_padding_top | default: 40 }}px;
|
|
4
|
+
}
|
|
5
|
+
</style>
|
|
6
|
+
<div
|
|
7
|
+
class="ab-theme"
|
|
8
|
+
style="
|
|
9
|
+
--ab-logo-height-desktop: {{ theme_data.logo_height_desktop | default: 47 }}px;
|
|
10
|
+
--ab-logo-height-mobile: {{ theme_data.logo_height_mobile | default: 20 }}px;
|
|
11
|
+
--ab-main-container-top-padding: {{ theme_data.main_container_padding_top | default: 40 }}px;
|
|
12
|
+
--ab-header-category-bg: {{ theme_data.header_category_strip_bg_color | default: '#e1dbd1' }};
|
|
13
|
+
--ab-header-category-text: {{ theme_data.header_category_strip_text_color | default: '#212a2f' }};
|
|
14
|
+
"
|
|
15
|
+
>
|
|
3
16
|
{% if announcement_config and announcement_config.text.size > 0 %}
|
|
4
|
-
|
|
17
|
+
{% assign first_announce_text = announcement_config.text | first | default: "" %}
|
|
18
|
+
{% assign announce_is_arabic = false %}
|
|
19
|
+
{% if lang == "ar" or first_announce_text contains "ا" or first_announce_text contains "ب" or first_announce_text contains "ت" or first_announce_text contains "ث" or first_announce_text contains "ج" or first_announce_text contains "ح" or first_announce_text contains "خ" %}
|
|
20
|
+
{% assign announce_is_arabic = true %}
|
|
21
|
+
{% endif %}
|
|
22
|
+
{% assign ann_repeat_count = 4 %}
|
|
23
|
+
{% if announcement_config.text.size <= 1 %}
|
|
24
|
+
{% assign ann_repeat_count = 8 %}
|
|
25
|
+
{% elsif announcement_config.text.size == 2 %}
|
|
26
|
+
{% assign ann_repeat_count = 6 %}
|
|
27
|
+
{% endif %}
|
|
28
|
+
<div class="ab-announce{% if announce_is_arabic %} ab-announce--arabic{% endif %}" data-ann-type="{{ announcement_config.type }}">
|
|
5
29
|
{% if announcement_config.type == "marquee" %}
|
|
6
30
|
<div class="ab-ann-marquee">
|
|
7
31
|
<div class="ab-ann-marquee-track">
|
|
8
|
-
{% for
|
|
9
|
-
|
|
32
|
+
{% for repeat_index in (1..ann_repeat_count) %}
|
|
33
|
+
{% for item in announcement_config.text %}
|
|
34
|
+
<span class="ab-ann-marquee-item">{{ item }}</span>
|
|
35
|
+
{% endfor %}
|
|
10
36
|
{% endfor %}
|
|
11
37
|
</div>
|
|
12
38
|
</div>
|
|
@@ -34,7 +60,13 @@
|
|
|
34
60
|
<header id="eo-header" class="ab-header">
|
|
35
61
|
<div class="ab-header-inner">
|
|
36
62
|
<div style="display:flex;align-items:center;">
|
|
37
|
-
<button id="eo-menu-btn" class="ab-hamburger" aria-label="Menu"
|
|
63
|
+
<button id="eo-menu-btn" class="ab-hamburger" aria-label="Menu">
|
|
64
|
+
<svg class="ab-hamburger-icon size-6" fill="none" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
|
|
65
|
+
<line stroke="currentColor" stroke-width="1.5" x1="6.65" y1="7.5" x2="18.35" y2="7.5"></line>
|
|
66
|
+
<line stroke="currentColor" stroke-width="1.5" x1="6.65" y1="12" x2="18.35" y2="12"></line>
|
|
67
|
+
<line stroke="currentColor" stroke-width="1.5" x1="6.65" y1="16.5" x2="13.85" y2="16.5"></line>
|
|
68
|
+
</svg>
|
|
69
|
+
</button>
|
|
38
70
|
<a href="/" class="ab-logo">
|
|
39
71
|
{% if logo %}
|
|
40
72
|
<img src="{{ logo }}" alt="{{ store_name }}" />
|
|
@@ -62,14 +94,14 @@
|
|
|
62
94
|
</nav>
|
|
63
95
|
|
|
64
96
|
<div class="ab-right">
|
|
97
|
+
<button type="button" id="header-lang-btn" class="ab-icon-btn lang-btn" aria-label="Change Language" hidden onclick="this.dispatchEvent(new CustomEvent('lang-click',{bubbles:true}))"></button>
|
|
98
|
+
|
|
65
99
|
<a href="/search" class="ab-icon-btn search-btn" aria-label="Search"></a>
|
|
66
100
|
|
|
67
101
|
{% if is_register_active %}
|
|
68
102
|
<button type="button" id="header-register" class="ab-icon-btn register-btn" aria-label="Register" onclick="this.dispatchEvent(new CustomEvent('register-click',{bubbles:true}))"></button>
|
|
69
103
|
{% endif %}
|
|
70
104
|
|
|
71
|
-
<button type="button" id="header-lang-btn" class="ab-icon-btn lang-btn" aria-label="Change Language" hidden onclick="this.dispatchEvent(new CustomEvent('lang-click',{bubbles:true}))"></button>
|
|
72
|
-
|
|
73
105
|
{% comment %} Desktop header: Wishlist link with live count badge & Compare button — dispatches compare-click event; count badges updated by JS
|
|
74
106
|
<a href="/wishlist" class="ab-icon-btn wishlist-btn" aria-label="Wishlist">
|
|
75
107
|
<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>
|
|
@@ -87,20 +119,26 @@
|
|
|
87
119
|
</button>
|
|
88
120
|
</div>
|
|
89
121
|
</div>
|
|
122
|
+
|
|
123
|
+
<div class="ab-header-category">
|
|
124
|
+
{% for category in categories %}
|
|
125
|
+
<a href="{{ category.url }}">{{ category.name }}</a>
|
|
126
|
+
{% endfor %}
|
|
127
|
+
</div>
|
|
90
128
|
</header>
|
|
91
129
|
|
|
92
130
|
<div id="eo-mobile-overlay" class="ab-mobile-overlay"></div>
|
|
93
|
-
<div id="eo-mobile-menu" class="ab-mobile-menu">
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
131
|
+
<div id="eo-mobile-menu" class="ab-mobile-menu">
|
|
132
|
+
<div class="ab-mobile-menu-header">
|
|
133
|
+
<button id="eo-mobile-close" class="ab-mobile-close" aria-label="Close menu"></button>
|
|
134
|
+
<a href="/" class="ab-logo">
|
|
135
|
+
{% if logo %}
|
|
136
|
+
<img src="{{ logo }}" alt="{{ store_name }}" />
|
|
137
|
+
{% else %}
|
|
138
|
+
<span class="ab-logo-text">{{ store_name }}</span>
|
|
139
|
+
{% endif %}
|
|
140
|
+
</a>
|
|
141
|
+
</div>
|
|
104
142
|
<nav class="ab-mobile-nav">
|
|
105
143
|
{% for category in categories %}
|
|
106
144
|
{% if category.children.size > 0 %}
|
|
@@ -119,14 +157,13 @@
|
|
|
119
157
|
{% else %}
|
|
120
158
|
<a href="{{ category.url }}">
|
|
121
159
|
<span>{{ category.name }}</span>
|
|
122
|
-
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="
|
|
123
|
-
|
|
160
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">
|
|
161
|
+
<circle cx="12" cy="12" r="9" />
|
|
162
|
+
<path d="M11 9l3 3-3 3" />
|
|
163
|
+
</svg> </a>
|
|
124
164
|
{% endif %}
|
|
125
165
|
{% endfor %}
|
|
126
|
-
|
|
127
|
-
<span>Search</span>
|
|
128
|
-
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>
|
|
129
|
-
</a>
|
|
166
|
+
|
|
130
167
|
{% if is_register_active %}
|
|
131
168
|
<button type="button" id="header-register-mobile" class="register-btn" aria-label="Register" onclick="this.dispatchEvent(new CustomEvent('register-click',{bubbles:true}))">
|
|
132
169
|
<span>Register</span>
|
|
@@ -147,6 +184,49 @@
|
|
|
147
184
|
</button>
|
|
148
185
|
{% endcomment %}
|
|
149
186
|
</nav>
|
|
187
|
+
{% assign mobile_menu_social = social %}
|
|
188
|
+
{% assign mobile_menu_pages = pages %}
|
|
189
|
+
{% if mobile_menu_social == blank and footer and footer.social %}
|
|
190
|
+
{% assign mobile_menu_social = footer.social %}
|
|
191
|
+
{% endif %}
|
|
192
|
+
{% if mobile_menu_pages == blank and footer and footer.pages %}
|
|
193
|
+
{% assign mobile_menu_pages = footer.pages %}
|
|
194
|
+
{% endif %}
|
|
195
|
+
|
|
196
|
+
{% if mobile_menu_social.size > 0 or mobile_menu_pages.size > 0 %}
|
|
197
|
+
<div class="ab-mobile-menu-footer">
|
|
198
|
+
{% if mobile_menu_social.size > 0 %}
|
|
199
|
+
<div class="ab-mobile-menu-footer-social ab-footer-social-icons">
|
|
200
|
+
{% for item in mobile_menu_social %}
|
|
201
|
+
{% assign social_label = item.label | default: item.type | default: "social" %}
|
|
202
|
+
<a href="{{ item.url }}" target="_blank" rel="noreferrer" aria-label="{{ social_label }}">
|
|
203
|
+
{% if item.icon %}
|
|
204
|
+
<span class="ab-footer-social-img" style="-webkit-mask-image:url({{ item.icon }});mask-image:url({{ item.icon }})"></span>
|
|
205
|
+
{% else %}
|
|
206
|
+
<span class="ab-mobile-menu-footer-social-fallback">{{ social_label | slice: 0, 1 | upcase }}</span>
|
|
207
|
+
{% endif %}
|
|
208
|
+
</a>
|
|
209
|
+
{% endfor %}
|
|
210
|
+
</div>
|
|
211
|
+
{% endif %}
|
|
212
|
+
|
|
213
|
+
{% if mobile_menu_pages.size > 0 %}
|
|
214
|
+
<div class="ab-mobile-menu-footer-pages">
|
|
215
|
+
{% for page in mobile_menu_pages %}
|
|
216
|
+
{% if page.url %}
|
|
217
|
+
{% assign page_href = page.url %}
|
|
218
|
+
{% else %}
|
|
219
|
+
{% assign page_href = "/pages/" | append: page.slug %}
|
|
220
|
+
{% endif %}
|
|
221
|
+
<a href="{{ page_href }}">{{ page.title | default: page.name }}</a>
|
|
222
|
+
{% unless forloop.last %}
|
|
223
|
+
<span class="ab-mobile-menu-footer-sep" aria-hidden="true">·</span>
|
|
224
|
+
{% endunless %}
|
|
225
|
+
{% endfor %}
|
|
226
|
+
</div>
|
|
227
|
+
{% endif %}
|
|
228
|
+
</div>
|
|
229
|
+
{% endif %}
|
|
150
230
|
</div>
|
|
151
231
|
|
|
152
232
|
</div>
|
|
@@ -1,10 +1,24 @@
|
|
|
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
|
+
--ab-pgrid-hero-cta-color: {{ theme_data.pgrid_hero_cta_text_color | default: '#1f272b' }};
|
|
9
|
+
--ab-pgrid-hero-cta-weight: {{ theme_data.pgrid_hero_cta_font_weight | default: '600' }};
|
|
10
|
+
"
|
|
11
|
+
>
|
|
3
12
|
<div class="ab-pgrid-wrap">
|
|
4
13
|
{% for product in products limit: 7 %}
|
|
5
14
|
{% assign color_variation = product.variations | where: "type", "color" | first %}
|
|
6
15
|
{% assign image_variation = product.variations | where: "type", "image" | first %}
|
|
7
16
|
{% assign swatch_total = 0 %}
|
|
17
|
+
{% assign pgrid_has_sale = false %}
|
|
18
|
+
{% if product.sale_price and product.sale_price < product.price and theme_data.show_sale_badge != false %}
|
|
19
|
+
{% assign pgrid_has_sale = true %}
|
|
20
|
+
{% endif %}
|
|
21
|
+
{% assign pgrid_custom_badge_value = pgrid_custom_badge | default: product.custom_badge_title | default: '' %}
|
|
8
22
|
{% if color_variation and color_variation.props %}
|
|
9
23
|
{% assign swatch_total = color_variation.props.size %}
|
|
10
24
|
{% elsif image_variation and image_variation.props %}
|
|
@@ -35,10 +49,52 @@
|
|
|
35
49
|
</a>
|
|
36
50
|
{% endif %}
|
|
37
51
|
|
|
52
|
+
{% assign pgrid_custom_badge = '' %}
|
|
53
|
+
{% if product.product_theme_data %}
|
|
54
|
+
{% assign pgrid_custom_badge = product.product_theme_data.custom_badge_title | strip %}
|
|
55
|
+
{% endif %}
|
|
56
|
+
{% assign pgrid_has_sale = false %}
|
|
57
|
+
{% if product.sale_price and product.sale_price < product.price and theme_data.show_sale_badge != false %}
|
|
58
|
+
{% assign pgrid_has_sale = true %}
|
|
59
|
+
{% endif %}
|
|
60
|
+
{% assign pgrid_has_variants = false %}
|
|
61
|
+
{% if product.variations and product.variations.size > 0 %}
|
|
62
|
+
{% assign pgrid_has_variants = true %}
|
|
63
|
+
{% endif %}
|
|
64
|
+
{% assign pgrid_disable_no_stock_str = product.disable_orders_for_no_stock | append: '' | downcase | strip %}
|
|
65
|
+
{% assign pgrid_disable_no_stock = false %}
|
|
66
|
+
{% if pgrid_disable_no_stock_str == 'true' or pgrid_disable_no_stock_str == '1' %}
|
|
67
|
+
{% assign pgrid_disable_no_stock = true %}
|
|
68
|
+
{% endif %}
|
|
69
|
+
{% assign pgrid_stock_flag_raw = product.in_stock | default: product.available %}
|
|
70
|
+
{% assign pgrid_stock_flag_str = pgrid_stock_flag_raw | append: '' | downcase | strip %}
|
|
71
|
+
{% assign pgrid_is_out_of_stock = false %}
|
|
72
|
+
{% if pgrid_stock_flag_str == 'false' or pgrid_stock_flag_str == '0' %}
|
|
73
|
+
{% assign pgrid_is_out_of_stock = true %}
|
|
74
|
+
{% elsif pgrid_stock_flag_str == 'true' or pgrid_stock_flag_str == '1' %}
|
|
75
|
+
{% assign pgrid_is_out_of_stock = false %}
|
|
76
|
+
{% else %}
|
|
77
|
+
{% assign pgrid_stock_qty = product.quantity | default: product.stock | default: product.total_quantity | default: 0 | plus: 0 %}
|
|
78
|
+
{% if pgrid_stock_qty <= 0 %}
|
|
79
|
+
{% assign pgrid_is_out_of_stock = true %}
|
|
80
|
+
{% endif %}
|
|
81
|
+
{% endif %}
|
|
82
|
+
{% assign pgrid_hide_add_btn = false %}
|
|
83
|
+
{% if pgrid_disable_no_stock and pgrid_has_variants == false and pgrid_is_out_of_stock %}
|
|
84
|
+
{% assign pgrid_hide_add_btn = true %}
|
|
85
|
+
{% endif %}
|
|
86
|
+
|
|
38
87
|
<a href="/products/{{ product.slug }}" class="ab-pgrid-card ab-reveal" style="animation-delay: {{ forloop.index | times: 0.04 }}s">
|
|
39
|
-
{% if
|
|
40
|
-
|
|
41
|
-
|
|
88
|
+
{% if pgrid_has_sale or pgrid_custom_badge != '' %}
|
|
89
|
+
<div class="ab-pgrid-badge-stack">
|
|
90
|
+
{% if pgrid_has_sale %}
|
|
91
|
+
{% assign discount = product.price | minus: product.sale_price | times: 100 | divided_by: product.price | floor %}
|
|
92
|
+
<span class="ab-pgrid-badge ab-sale-badge">-{{ discount }}%</span>
|
|
93
|
+
{% endif %}
|
|
94
|
+
{% if pgrid_custom_badge != '' %}
|
|
95
|
+
<span class="ab-pgrid-badge ab-product-custom-badge">{{ pgrid_custom_badge }}</span>
|
|
96
|
+
{% endif %}
|
|
97
|
+
</div>
|
|
42
98
|
{% endif %}
|
|
43
99
|
|
|
44
100
|
<div class="ab-pgrid-media">
|
|
@@ -66,12 +122,14 @@
|
|
|
66
122
|
</button>
|
|
67
123
|
</div>
|
|
68
124
|
{% endcomment %}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
125
|
+
{% unless pgrid_hide_add_btn %}
|
|
126
|
+
<button
|
|
127
|
+
class="ab-pgrid-add-btn"
|
|
128
|
+
type="button"
|
|
129
|
+
aria-label="Add to cart"
|
|
130
|
+
onclick="event.preventDefault();event.stopPropagation();this.dispatchEvent(new CustomEvent('quick-add',{bubbles:true,detail:{productId:'{{ product.id }}'}}));"
|
|
131
|
+
></button>
|
|
132
|
+
{% endunless %}
|
|
75
133
|
</div>
|
|
76
134
|
|
|
77
135
|
<div class="ab-pgrid-info">
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
<section
|
|
1
|
+
<section
|
|
2
|
+
class="ab-plist"
|
|
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>
|
|
@@ -22,48 +29,72 @@
|
|
|
22
29
|
{% for product in products %}
|
|
23
30
|
{% assign color_variation = product.variations | where: "type", "color" | first %}
|
|
24
31
|
{% assign image_variation = product.variations | where: "type", "image" | first %}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
{%
|
|
28
|
-
|
|
29
|
-
|
|
32
|
+
{% assign plist_custom_badge = '' %}
|
|
33
|
+
{% if product.product_theme_data %}
|
|
34
|
+
{% assign plist_custom_badge = product.product_theme_data.custom_badge_title | strip %}
|
|
35
|
+
{% endif %}
|
|
36
|
+
{% assign plist_has_sale = false %}
|
|
37
|
+
{% if product.sale_price and product.sale_price < product.price and theme_data.show_sale_badge != false %}
|
|
38
|
+
{% assign plist_has_sale = true %}
|
|
39
|
+
{% endif %}
|
|
40
|
+
{% assign plist_has_variants = false %}
|
|
41
|
+
{% if product.variations and product.variations.size > 0 %}
|
|
42
|
+
{% assign plist_has_variants = true %}
|
|
43
|
+
{% endif %}
|
|
44
|
+
{% assign plist_disable_no_stock_str = product.disable_orders_for_no_stock | append: '' | downcase | strip %}
|
|
45
|
+
{% assign plist_disable_no_stock = false %}
|
|
46
|
+
{% if plist_disable_no_stock_str == 'true' or plist_disable_no_stock_str == '1' %}
|
|
47
|
+
{% assign plist_disable_no_stock = true %}
|
|
48
|
+
{% endif %}
|
|
49
|
+
{% assign plist_stock_flag_raw = product.in_stock | default: product.available %}
|
|
50
|
+
{% assign plist_stock_flag_str = plist_stock_flag_raw | append: '' | downcase | strip %}
|
|
51
|
+
{% assign plist_is_out_of_stock = false %}
|
|
52
|
+
{% if plist_stock_flag_str == 'false' or plist_stock_flag_str == '0' %}
|
|
53
|
+
{% assign plist_is_out_of_stock = true %}
|
|
54
|
+
{% elsif plist_stock_flag_str == 'true' or plist_stock_flag_str == '1' %}
|
|
55
|
+
{% assign plist_is_out_of_stock = false %}
|
|
56
|
+
{% else %}
|
|
57
|
+
{% assign plist_stock_qty = product.quantity | default: product.stock | default: product.total_quantity | default: 0 | plus: 0 %}
|
|
58
|
+
{% if plist_stock_qty <= 0 %}
|
|
59
|
+
{% assign plist_is_out_of_stock = true %}
|
|
30
60
|
{% endif %}
|
|
61
|
+
{% endif %}
|
|
62
|
+
{% assign plist_hide_add_btn = false %}
|
|
63
|
+
{% if plist_disable_no_stock and plist_has_variants == false and plist_is_out_of_stock %}
|
|
64
|
+
{% assign plist_hide_add_btn = true %}
|
|
65
|
+
{% endif %}
|
|
31
66
|
|
|
67
|
+
<a href="/products/{{ product.slug }}" class="ab-plist-card ab-reveal" style="animation-delay: {{ forloop.index | times: 0.04 }}s">
|
|
32
68
|
<div class="ab-plist-media">
|
|
69
|
+
{% if plist_has_sale or plist_custom_badge != '' %}
|
|
70
|
+
<div class="ab-plist-badge-stack">
|
|
71
|
+
{% if plist_has_sale %}
|
|
72
|
+
{% assign discount = product.price | minus: product.sale_price | times: 100 | divided_by: product.price | floor %}
|
|
73
|
+
<span class="ab-plist-badge ab-sale-badge">-{{ discount }}%</span>
|
|
74
|
+
{% endif %}
|
|
75
|
+
{% if plist_custom_badge != '' %}
|
|
76
|
+
<span class="ab-plist-badge ab-product-custom-badge">{{ plist_custom_badge }}</span>
|
|
77
|
+
{% endif %}
|
|
78
|
+
</div>
|
|
79
|
+
{% endif %}
|
|
80
|
+
|
|
33
81
|
<img class="ab-plist-img-primary" src="{{ product.thumb }}" alt="{{ product.name }}" loading="lazy" />
|
|
34
82
|
{% if product.images[0] %}
|
|
35
83
|
<img class="ab-plist-img-hover" src="{{ product.images[0] }}" alt="{{ product.name }}" loading="lazy" />
|
|
36
84
|
{% endif %}
|
|
37
|
-
{%
|
|
38
|
-
<div class="ab-card-actions">
|
|
39
|
-
<button
|
|
40
|
-
class="ab-wishlist-btn"
|
|
41
|
-
type="button"
|
|
42
|
-
aria-label="Add to wishlist"
|
|
43
|
-
onclick="event.preventDefault();event.stopPropagation();this.dispatchEvent(new CustomEvent('toggle-wishlist',{bubbles:true,detail:{productId:'{{ product.id }}'}}));"
|
|
44
|
-
>
|
|
45
|
-
<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>
|
|
46
|
-
</button>
|
|
85
|
+
{% unless plist_hide_add_btn %}
|
|
47
86
|
<button
|
|
48
|
-
class="ab-
|
|
87
|
+
class="ab-plist-add-btn"
|
|
49
88
|
type="button"
|
|
50
|
-
aria-label="
|
|
51
|
-
onclick="event.preventDefault();event.stopPropagation();this.dispatchEvent(new CustomEvent('
|
|
52
|
-
>
|
|
53
|
-
|
|
54
|
-
</button>
|
|
55
|
-
</div>
|
|
56
|
-
{% endcomment %}
|
|
57
|
-
<button
|
|
58
|
-
class="ab-plist-add-btn"
|
|
59
|
-
type="button"
|
|
60
|
-
aria-label="Add to cart"
|
|
61
|
-
onclick="event.preventDefault();event.stopPropagation();this.dispatchEvent(new CustomEvent('quick-add',{bubbles:true,detail:{productId:'{{ product.id }}'}}));"
|
|
62
|
-
></button>
|
|
89
|
+
aria-label="Add to cart"
|
|
90
|
+
onclick="event.preventDefault();event.stopPropagation();this.dispatchEvent(new CustomEvent('quick-add',{bubbles:true,detail:{productId:'{{ product.id }}'}}));"
|
|
91
|
+
></button>
|
|
92
|
+
{% endunless %}
|
|
63
93
|
</div>
|
|
64
94
|
|
|
65
95
|
<div class="ab-plist-info">
|
|
66
96
|
<p class="ab-plist-name">{{ product.name }}</p>
|
|
97
|
+
|
|
67
98
|
<div class="ab-plist-price-row">
|
|
68
99
|
{% if product.sale_price and product.sale_price < product.price %}
|
|
69
100
|
<span class="ab-price-old">{{ product.price }} {{ currency }}</span>
|
|
@@ -91,3 +122,15 @@
|
|
|
91
122
|
{% endfor %}
|
|
92
123
|
</div>
|
|
93
124
|
</section>
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
<style>
|
|
129
|
+
.ab-plist-price-row {
|
|
130
|
+
display: flex !important;
|
|
131
|
+
align-items: baseline !important;
|
|
132
|
+
gap: 8px !important;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
</style>
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
<div class="ab-invoice">
|
|
2
2
|
<div class="ab-invoice-header">
|
|
3
|
-
{% if logo and logo != "" %}
|
|
4
|
-
<img class="ab-invoice-logo" src="{{ logo }}" alt="{{ store_name }}" />
|
|
5
|
-
{% endif %}
|
|
6
3
|
<button
|
|
7
4
|
class="ab-invoice-track-btn"
|
|
8
5
|
type="button"
|
|
@@ -12,77 +9,8 @@
|
|
|
12
9
|
</div>
|
|
13
10
|
|
|
14
11
|
<div class="ab-invoice-body">
|
|
15
|
-
<div class="ab-invoice-
|
|
16
|
-
|
|
17
|
-
<address class="ab-invoice-store-info">
|
|
18
|
-
<h3 class="ab-invoice-store-name">{{ store_name }}</h3>
|
|
19
|
-
<span class="ab-invoice-contact-row">
|
|
20
|
-
{% if contact_phone and contact_phone != "" %}
|
|
21
|
-
<a href="tel:{{ contact_phone }}">
|
|
22
|
-
<span class="ab-invoice-contact-label">{{ t_phone }}:</span> {{ contact_phone }}
|
|
23
|
-
</a>
|
|
24
|
-
{% endif %}
|
|
25
|
-
{% if contact_email and contact_email != "" %}
|
|
26
|
-
<a href="mailto:{{ contact_email }}">
|
|
27
|
-
<span class="ab-invoice-contact-label">{{ t_email }}:</span> {{ contact_email }}
|
|
28
|
-
</a>
|
|
29
|
-
{% endif %}
|
|
30
|
-
</span>
|
|
31
|
-
{% if contact_address and contact_address != "" %}
|
|
32
|
-
<span>
|
|
33
|
-
<span class="ab-invoice-contact-label">{{ t_address }}:</span> {{ contact_address }}
|
|
34
|
-
</span>
|
|
35
|
-
{% endif %}
|
|
36
|
-
</address>
|
|
37
|
-
{% endif %}
|
|
38
|
-
|
|
39
|
-
<div class="ab-invoice-shipping">
|
|
40
|
-
<h3 class="ab-invoice-section-title">{{ t_shipping_details }}</h3>
|
|
41
|
-
<dl class="ab-invoice-dl">
|
|
42
|
-
<div class="ab-invoice-dl-row">
|
|
43
|
-
<dt>{{ t_name }}:</dt>
|
|
44
|
-
<dd>{{ order.full_name }}</dd>
|
|
45
|
-
</div>
|
|
46
|
-
<div class="ab-invoice-dl-row">
|
|
47
|
-
<dt>{{ t_phone }}:</dt>
|
|
48
|
-
<dd>{{ order.phone }}</dd>
|
|
49
|
-
</div>
|
|
50
|
-
{% if order.email and order.email != "" %}
|
|
51
|
-
<div class="ab-invoice-dl-row">
|
|
52
|
-
<dt>{{ t_email }}:</dt>
|
|
53
|
-
<dd>{{ order.email }}</dd>
|
|
54
|
-
</div>
|
|
55
|
-
{% endif %}
|
|
56
|
-
{% if order.country and order.country != "" %}
|
|
57
|
-
<div class="ab-invoice-dl-row">
|
|
58
|
-
<dt>{{ t_country }}:</dt>
|
|
59
|
-
<dd>{{ order.country }}</dd>
|
|
60
|
-
</div>
|
|
61
|
-
{% endif %}
|
|
62
|
-
{% if order.government and order.government != "" %}
|
|
63
|
-
<div class="ab-invoice-dl-row">
|
|
64
|
-
<dt>{{ t_government }}:</dt>
|
|
65
|
-
<dd>{{ order.government }}</dd>
|
|
66
|
-
</div>
|
|
67
|
-
{% endif %}
|
|
68
|
-
{% if order.address and order.address != "" %}
|
|
69
|
-
<div class="ab-invoice-dl-row">
|
|
70
|
-
<dt>{{ t_address }}:</dt>
|
|
71
|
-
<dd>{{ order.address }}</dd>
|
|
72
|
-
</div>
|
|
73
|
-
{% endif %}
|
|
74
|
-
<div class="ab-invoice-dl-row">
|
|
75
|
-
<dt>{{ t_payment_details }}:</dt>
|
|
76
|
-
<dd>{{ order.payment_method }}</dd>
|
|
77
|
-
</div>
|
|
78
|
-
{% if order.transfer_receipt and order.transfer_receipt != "" %}
|
|
79
|
-
<div class="ab-invoice-dl-row ab-invoice-dl-row-center">
|
|
80
|
-
<img src="{{ order.transfer_receipt }}" alt="Transfer Receipt" class="ab-invoice-receipt-img" />
|
|
81
|
-
</div>
|
|
82
|
-
{% endif %}
|
|
83
|
-
</dl>
|
|
84
|
-
</div>
|
|
85
|
-
|
|
12
|
+
<div class="ab-invoice-main">
|
|
13
|
+
|
|
86
14
|
<div class="ab-invoice-timeline">
|
|
87
15
|
<ul class="ab-invoice-notes-list">
|
|
88
16
|
<li>
|
|
@@ -97,13 +25,6 @@
|
|
|
97
25
|
{% endfor %}
|
|
98
26
|
</ul>
|
|
99
27
|
</div>
|
|
100
|
-
</div>
|
|
101
|
-
|
|
102
|
-
<div class="ab-invoice-main">
|
|
103
|
-
<div class="ab-invoice-status-row">
|
|
104
|
-
<span class="ab-invoice-status-label">{{ t_order_status }}:</span>
|
|
105
|
-
<span class="ab-invoice-status-value">{{ order.status_label }}</span>
|
|
106
|
-
</div>
|
|
107
28
|
|
|
108
29
|
<div class="ab-invoice-items">
|
|
109
30
|
{% for item in order.cart_items %}
|
|
@@ -118,15 +39,40 @@
|
|
|
118
39
|
{% endif %}
|
|
119
40
|
<p class="ab-invoice-item-qty">{{ t_items_count }}: {{ item.quantity }}</p>
|
|
120
41
|
<p class="ab-invoice-item-unit-price">{{ t_piece_price }}: {{ item.price }} {{ currency }}</p>
|
|
121
|
-
{% if item.metadata_html and item.metadata_html != "" %}
|
|
122
|
-
<div class="ab-invoice-item-metadata">{{ item.metadata_html }}</div>
|
|
123
|
-
{% endif %}
|
|
124
42
|
</div>
|
|
125
43
|
<span class="ab-invoice-item-total">{{ t_total }} {{ item.total }} {{ currency }}</span>
|
|
126
44
|
</div>
|
|
127
45
|
{% endfor %}
|
|
128
46
|
</div>
|
|
129
47
|
|
|
48
|
+
<div class="ab-invoice-shipping">
|
|
49
|
+
<h3 class="ab-invoice-section-title">{{ t_shipping_details }}</h3>
|
|
50
|
+
<dl class="ab-invoice-dl">
|
|
51
|
+
<div class="ab-invoice-dl-row">
|
|
52
|
+
<dt>{{ t_name }}:</dt>
|
|
53
|
+
<dd>{{ order.full_name }}</dd>
|
|
54
|
+
</div>
|
|
55
|
+
<div class="ab-invoice-dl-row">
|
|
56
|
+
<dt>{{ t_phone }}:</dt>
|
|
57
|
+
<dd>{{ order.phone }}</dd>
|
|
58
|
+
</div>
|
|
59
|
+
{% if order.email and order.email != "" %}
|
|
60
|
+
<div class="ab-invoice-dl-row">
|
|
61
|
+
<dt>{{ t_email }}:</dt>
|
|
62
|
+
<dd>{{ order.email }}</dd>
|
|
63
|
+
</div>
|
|
64
|
+
{% endif %}
|
|
65
|
+
<div class="ab-invoice-dl-row">
|
|
66
|
+
<dt>{{ t_address }}:</dt>
|
|
67
|
+
<dd>{{ order.address }}</dd>
|
|
68
|
+
</div>
|
|
69
|
+
<div class="ab-invoice-dl-row">
|
|
70
|
+
<dt>{{ t_payment_details }}:</dt>
|
|
71
|
+
<dd>{{ order.payment_method }}</dd>
|
|
72
|
+
</div>
|
|
73
|
+
</dl>
|
|
74
|
+
</div>
|
|
75
|
+
|
|
130
76
|
<div class="ab-invoice-totals">
|
|
131
77
|
<div class="ab-invoice-dl-row">
|
|
132
78
|
<dt>{{ t_product_total }}:</dt>
|
|
@@ -138,17 +84,19 @@
|
|
|
138
84
|
<dd>{% if order.shipping_cost %}{{ order.shipping_cost }} {{ currency }}{% else %}{{ t_free_shipping }}{% endif %}</dd>
|
|
139
85
|
</div>
|
|
140
86
|
{% endunless %}
|
|
141
|
-
{% if order.coupon_code and order.coupon_code != "" %}
|
|
142
|
-
<div class="ab-invoice-dl-row">
|
|
143
|
-
<dt>{{ t_coupon_code }}: {{ order.coupon_code }}</dt>
|
|
144
|
-
<dd>{{ order.coupon_discount }} {{ currency }}</dd>
|
|
145
|
-
</div>
|
|
146
|
-
{% endif %}
|
|
147
87
|
<div class="ab-invoice-dl-row ab-invoice-total-row">
|
|
148
88
|
<dt>{{ t_total }}:</dt>
|
|
149
89
|
<dd>{{ order.total_cost }} {{ currency }}</dd>
|
|
150
90
|
</div>
|
|
151
91
|
</div>
|
|
92
|
+
|
|
93
|
+
<div class="ab-invoice-status-row">
|
|
94
|
+
<span class="ab-invoice-status-label">{{ t_order_status }}:</span>
|
|
95
|
+
<span class="ab-invoice-status-value">{{ order.status_label }}</span>
|
|
96
|
+
</div>
|
|
97
|
+
|
|
152
98
|
</div>
|
|
99
|
+
|
|
100
|
+
|
|
153
101
|
</div>
|
|
154
|
-
</div>
|
|
102
|
+
</div>
|
|
@@ -1,24 +1,34 @@
|
|
|
1
1
|
<div class="lq-desc-accordion">
|
|
2
2
|
{% if description != "" %}
|
|
3
|
-
<div class="lq-desc-item" data-open="true">
|
|
4
|
-
<button class="lq-desc-toggle" type="button" aria-expanded="true">
|
|
5
|
-
<span>{{ description_label }}</span>
|
|
3
|
+
<div class="lq-desc-item" data-open="true"> <button class="lq-desc-toggle" type="button" aria-expanded="true"> <span>{{ description_label }}</span>
|
|
6
4
|
<span class="lq-desc-chevron"></span>
|
|
7
5
|
</button>
|
|
8
|
-
<div class="lq-desc-panel" style="display:block">
|
|
9
|
-
<div class="lq-desc-content product_description">
|
|
6
|
+
<div class="lq-desc-panel" style="display:block"> <div class="lq-desc-content product_description">
|
|
10
7
|
<div class="ql-editor leading-10" style="text-align:start" dir="auto">{{ description }}</div>
|
|
11
8
|
</div>
|
|
12
9
|
</div>
|
|
13
10
|
</div>
|
|
14
11
|
{% endif %}
|
|
12
|
+
|
|
13
|
+
{% for desc in product_theme_data.desc %}
|
|
14
|
+
<div class="lq-desc-item">
|
|
15
|
+
<button class="lq-desc-toggle" type="button" aria-expanded="false">
|
|
16
|
+
<span class="lq-desc-toggle-label">
|
|
17
|
+
<span>{{ desc.title_headline }}</span>
|
|
18
|
+
</span>
|
|
19
|
+
<span class="lq-desc-chevron"></span>
|
|
20
|
+
</button>
|
|
21
|
+
<div class="lq-desc-panel" style="display:none">
|
|
22
|
+
<div class="lq-desc-content">{{ desc.title_desc }}</div>
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
{% endfor %}
|
|
15
26
|
|
|
16
27
|
{% for policy in policies %}
|
|
17
28
|
<div class="lq-desc-item">
|
|
18
29
|
<button class="lq-desc-toggle" type="button" aria-expanded="false">
|
|
19
30
|
<span class="lq-desc-toggle-label">
|
|
20
|
-
|
|
21
|
-
<span>{{ policy.title }}</span>
|
|
31
|
+
<span>{{ policy.title }}</span>
|
|
22
32
|
</span>
|
|
23
33
|
<span class="lq-desc-chevron"></span>
|
|
24
34
|
</button>
|
|
@@ -27,4 +37,4 @@
|
|
|
27
37
|
</div>
|
|
28
38
|
</div>
|
|
29
39
|
{% endfor %}
|
|
30
|
-
</div>
|
|
40
|
+
</div>
|