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,10 +1,26 @@
|
|
|
1
1
|
<div class="ab-categories">
|
|
2
|
-
<div class="ab-categories-
|
|
2
|
+
<div class="ab-categories-header">
|
|
3
|
+
{% if section_title %}
|
|
4
|
+
<h2 class="ab-categories-title ab-reveal">{{ section_title | default: 'Shop by collection' }}</h2>
|
|
5
|
+
{% endif %}
|
|
6
|
+
</div>
|
|
7
|
+
|
|
8
|
+
{% assign cats_size = categories.size %}
|
|
9
|
+
<div
|
|
10
|
+
class="ab-categories-track ab-cat-slider {% if cats_size <= 5 %}ab-cat-track--grid{% else %}ab-cat-track--carousel{% endif %}"
|
|
11
|
+
style="--cat-cols: {{ cats_size }};"
|
|
12
|
+
>
|
|
3
13
|
{% for category in categories %}
|
|
4
14
|
<a href="/collections/{{ category.slug }}" class="ab-cat-card ab-reveal" style="animation-delay: {{ forloop.index | times: 0.04 }}s">
|
|
5
|
-
<
|
|
6
|
-
|
|
15
|
+
<div class="ab-cat-media">
|
|
16
|
+
<img src="{{ category.thumb }}" alt="{{ category.name }}" loading="lazy" />
|
|
17
|
+
</div>
|
|
18
|
+
<div class="ab-cat-overlay"></div>
|
|
19
|
+
<div class="ab-cat-content">
|
|
20
|
+
<span class="ab-cat-label">{{ category.name }}</span>
|
|
21
|
+
|
|
22
|
+
</div>
|
|
7
23
|
</a>
|
|
8
24
|
{% endfor %}
|
|
9
25
|
</div>
|
|
10
|
-
</div>
|
|
26
|
+
</div>
|
|
@@ -1,4 +1,14 @@
|
|
|
1
|
-
<section
|
|
1
|
+
<section
|
|
2
|
+
class="ab-featured-products"
|
|
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
|
+
--ab-featured-hero-subtitle-color: {{ theme_data.featured_hero_subtitle_text_color | default: '#ffffff' }};
|
|
8
|
+
--ab-featured-hero-cta-bg: {{ theme_data.featured_hero_cta_background_color | default: '#ffffff' }};
|
|
9
|
+
--ab-featured-hero-cta-text: {{ theme_data.featured_hero_cta_text_color | default: '#1f272b' }};
|
|
10
|
+
"
|
|
11
|
+
>
|
|
2
12
|
{% if section_title %}
|
|
3
13
|
<h2 class="ab-featured-section-title ab-reveal">{{ section_title }}</h2>
|
|
4
14
|
{% endif %}
|
|
@@ -32,10 +42,52 @@
|
|
|
32
42
|
{% assign swatch_total = image_variation.props.size %}
|
|
33
43
|
{% endif %}
|
|
34
44
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
45
|
+
{% assign pgrid_custom_badge = '' %}
|
|
46
|
+
{% if product.product_theme_data %}
|
|
47
|
+
{% assign pgrid_custom_badge = product.product_theme_data.custom_badge_title | strip %}
|
|
48
|
+
{% endif %}
|
|
49
|
+
{% assign pgrid_has_sale = false %}
|
|
50
|
+
{% if product.sale_price and product.sale_price < product.price and theme_data.show_sale_badge != false %}
|
|
51
|
+
{% assign pgrid_has_sale = true %}
|
|
52
|
+
{% endif %}
|
|
53
|
+
{% assign pgrid_has_variants = false %}
|
|
54
|
+
{% if product.variations and product.variations.size > 0 %}
|
|
55
|
+
{% assign pgrid_has_variants = true %}
|
|
56
|
+
{% endif %}
|
|
57
|
+
{% assign pgrid_disable_no_stock_str = product.disable_orders_for_no_stock | append: '' | downcase | strip %}
|
|
58
|
+
{% assign pgrid_disable_no_stock = false %}
|
|
59
|
+
{% if pgrid_disable_no_stock_str == 'true' or pgrid_disable_no_stock_str == '1' %}
|
|
60
|
+
{% assign pgrid_disable_no_stock = true %}
|
|
61
|
+
{% endif %}
|
|
62
|
+
{% assign pgrid_stock_flag_raw = product.in_stock | default: product.available %}
|
|
63
|
+
{% assign pgrid_stock_flag_str = pgrid_stock_flag_raw | append: '' | downcase | strip %}
|
|
64
|
+
{% assign pgrid_is_out_of_stock = false %}
|
|
65
|
+
{% if pgrid_stock_flag_str == 'false' or pgrid_stock_flag_str == '0' %}
|
|
66
|
+
{% assign pgrid_is_out_of_stock = true %}
|
|
67
|
+
{% elsif pgrid_stock_flag_str == 'true' or pgrid_stock_flag_str == '1' %}
|
|
68
|
+
{% assign pgrid_is_out_of_stock = false %}
|
|
69
|
+
{% else %}
|
|
70
|
+
{% assign pgrid_stock_qty = product.quantity | default: product.stock | default: product.total_quantity | default: 0 | plus: 0 %}
|
|
71
|
+
{% if pgrid_stock_qty <= 0 %}
|
|
72
|
+
{% assign pgrid_is_out_of_stock = true %}
|
|
73
|
+
{% endif %}
|
|
74
|
+
{% endif %}
|
|
75
|
+
{% assign pgrid_hide_add_btn = false %}
|
|
76
|
+
{% if pgrid_disable_no_stock and pgrid_has_variants == false and pgrid_is_out_of_stock %}
|
|
77
|
+
{% assign pgrid_hide_add_btn = true %}
|
|
78
|
+
{% endif %}
|
|
79
|
+
|
|
80
|
+
<a href="/products/{{ product.slug }}" class="ab-pgrid-card ab-featured-card ab-reveal ab-observed ab-visible" style="animation-delay: {{ forloop.index | times: 0.05 }}s">
|
|
81
|
+
{% if pgrid_has_sale or pgrid_custom_badge != '' %}
|
|
82
|
+
<div class="ab-pgrid-badge-stack">
|
|
83
|
+
{% if pgrid_has_sale %}
|
|
84
|
+
{% assign discount = product.price | minus: product.sale_price | times: 100 | divided_by: product.price | floor %}
|
|
85
|
+
<span class="ab-pgrid-badge ab-sale-badge">-{{ discount }}%</span>
|
|
86
|
+
{% endif %}
|
|
87
|
+
{% if pgrid_custom_badge != '' %}
|
|
88
|
+
<span class="ab-pgrid-badge ab-product-custom-badge">{{ pgrid_custom_badge }}</span>
|
|
89
|
+
{% endif %}
|
|
90
|
+
</div>
|
|
39
91
|
{% endif %}
|
|
40
92
|
|
|
41
93
|
<div class="ab-featured-media">
|
|
@@ -43,26 +95,6 @@
|
|
|
43
95
|
{% if product.images[0] %}
|
|
44
96
|
<img class="ab-featured-img-hover" src="{{ product.images[0] }}" alt="{{ product.name }}" loading="lazy" />
|
|
45
97
|
{% endif %}
|
|
46
|
-
{% comment %} Wishlist & Compare action buttons — dispatch custom events caught by the storefront JS layer
|
|
47
|
-
<div class="ab-card-actions">
|
|
48
|
-
<button
|
|
49
|
-
class="ab-wishlist-btn"
|
|
50
|
-
type="button"
|
|
51
|
-
aria-label="Add to wishlist"
|
|
52
|
-
onclick="event.preventDefault();event.stopPropagation();this.dispatchEvent(new CustomEvent('toggle-wishlist',{bubbles:true,detail:{productId:'{{ product.id }}'}}));"
|
|
53
|
-
>
|
|
54
|
-
<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>
|
|
55
|
-
</button>
|
|
56
|
-
<button
|
|
57
|
-
class="ab-compare-btn"
|
|
58
|
-
type="button"
|
|
59
|
-
aria-label="Compare"
|
|
60
|
-
onclick="event.preventDefault();event.stopPropagation();this.dispatchEvent(new CustomEvent('toggle-compare',{bubbles:true,detail:{productId:'{{ product.id }}'}}));"
|
|
61
|
-
>
|
|
62
|
-
<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>
|
|
63
|
-
</button>
|
|
64
|
-
</div>
|
|
65
|
-
{% endcomment %}
|
|
66
98
|
</div>
|
|
67
99
|
|
|
68
100
|
<div class="ab-featured-info">
|
|
@@ -76,7 +108,6 @@
|
|
|
76
108
|
{% endif %}
|
|
77
109
|
</div>
|
|
78
110
|
|
|
79
|
-
|
|
80
111
|
<div class="ab-featured-bottom-row">
|
|
81
112
|
<div class="ab-featured-swatches">
|
|
82
113
|
{% if color_variation and color_variation.props %}
|
|
@@ -96,15 +127,17 @@
|
|
|
96
127
|
{% endif %}
|
|
97
128
|
</div>
|
|
98
129
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
130
|
+
{% unless pgrid_hide_add_btn %}
|
|
131
|
+
<button
|
|
132
|
+
class="ab-featured-add-btn"
|
|
133
|
+
type="button"
|
|
134
|
+
onclick="event.preventDefault();event.stopPropagation();this.dispatchEvent(new CustomEvent('quick-add',{bubbles:true,detail:{productId:'{{ product.id }}'}}));"
|
|
135
|
+
>{{add}}</button>
|
|
136
|
+
{% endunless %}
|
|
104
137
|
</div>
|
|
105
138
|
</div>
|
|
106
139
|
</a>
|
|
107
140
|
{% endfor %}
|
|
108
141
|
</div>
|
|
109
142
|
</div>
|
|
110
|
-
</section>
|
|
143
|
+
</section>
|
|
@@ -42,5 +42,10 @@
|
|
|
42
42
|
type="button"
|
|
43
43
|
{% if disabled %}disabled{% endif %}
|
|
44
44
|
onclick="event.preventDefault();this.dispatchEvent(new CustomEvent('buy-now',{bubbles:true}));"
|
|
45
|
-
>
|
|
45
|
+
>
|
|
46
|
+
<span class="svg-wrapper add-to-cart-icon">
|
|
47
|
+
|
|
48
|
+
</span>
|
|
49
|
+
<span class="btn-text">{{ buy_now_text }}</span>
|
|
50
|
+
</button>
|
|
46
51
|
</div>
|
|
@@ -1,103 +1,100 @@
|
|
|
1
|
-
|
|
2
1
|
<footer class="ab-footer">
|
|
3
2
|
<div class="ab-footer-inner">
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
3
|
+
|
|
4
|
+
{% assign footer_subscribe_title = theme_data.footer_newsletter_title | default: subscribe_label %}
|
|
5
|
+
{% assign footer_subscribe_description = theme_data.footer_newsletter_description | strip %}
|
|
6
|
+
{% assign hide_newsletter_mobile = theme_data.hide_newsletter_mobile %}
|
|
7
|
+
<div class="ab-footer-subscribe-section{% if hide_newsletter_mobile == true or hide_newsletter_mobile == 'true' or hide_newsletter_mobile == 1 or hide_newsletter_mobile == '1' %} ab-footer-subscribe--hide-mobile{% endif %}"{% if theme_data.footer_newsletter_text_color and theme_data.footer_newsletter_text_color != "" %} style="--ab-footer-subscribe-color: {{ theme_data.footer_newsletter_text_color }};"{% endif %}>
|
|
8
|
+
<h4 class="ab-footer-heading ab-footer-subscribe-title">{{ footer_subscribe_title }}</h4>
|
|
9
|
+
{% if footer_subscribe_description != "" %}
|
|
10
|
+
<p class="ab-footer-subscribe-description">{{ footer_subscribe_description }}</p>
|
|
11
|
+
{% endif %}
|
|
12
|
+
<form class="ab-footer-subscribe-form" novalidate onsubmit="event.preventDefault(); var input = this.elements.email; var errorEl = this.querySelector('.ab-footer-email-error'); if (!input || !input.checkValidity()) { if (errorEl) { errorEl.textContent = 'email address'; errorEl.style.display = 'block'; } if (input) input.focus(); return; } if (errorEl) { errorEl.textContent = ''; errorEl.style.display = 'none'; } var email = input.value ? String(input.value).trim() : ''; this.dispatchEvent(new CustomEvent('footer-subscribe', { bubbles: true, detail: { email: email } })); this.reset();">
|
|
13
|
+
<div class="ab-footer-input-wrapper">
|
|
14
|
+
<input type="email" name="email" class="ab-footer-subscribe-input" placeholder="Email Address" required oninput="var e = this.form && this.form.querySelector('.ab-footer-email-error'); if (e) { e.textContent = ''; e.style.display = 'none'; }" />
|
|
15
|
+
<button type="submit" class="ab-footer-subscribe-btn">
|
|
16
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
17
|
+
<circle cx="12" cy="12" r="10"/>
|
|
18
|
+
<polyline points="12 8 16 12 12 16"/>
|
|
19
|
+
<line x1="8" y1="12" x2="16" y2="12"/>
|
|
20
|
+
</svg> </button>
|
|
21
|
+
</div>
|
|
22
|
+
<small class="ab-footer-email-error" aria-live="polite"></small>
|
|
23
|
+
</form>
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<div class="ab-footer-accordions">
|
|
27
|
+
{% if categories.size > 0 %}
|
|
28
|
+
<details class="ab-footer-col ab-footer-details">
|
|
29
|
+
<summary class="ab-footer-heading">
|
|
30
|
+
<span>{{ shop_label }}</span>
|
|
31
|
+
<span class="ab-footer-chev" aria-hidden="true">
|
|
32
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"/></svg>
|
|
33
|
+
</span>
|
|
34
|
+
</summary>
|
|
35
|
+
<ul class="ab-footer-links">
|
|
36
|
+
{% for cat in categories %}
|
|
37
|
+
<li><a href="/collections/{{ cat.slug }}">{{ cat.name }}</a></li>
|
|
38
|
+
{% endfor %}
|
|
39
|
+
</ul>
|
|
40
|
+
</details>
|
|
41
|
+
{% endif %}
|
|
42
|
+
|
|
43
|
+
{% if pages.size > 0 %}
|
|
44
|
+
<details class="ab-footer-col ab-footer-details">
|
|
45
|
+
<summary class="ab-footer-heading">
|
|
46
|
+
<span>{{ help_label }}</span>
|
|
47
|
+
<span class="ab-footer-chev" aria-hidden="true">
|
|
48
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"/></svg>
|
|
49
|
+
</span>
|
|
50
|
+
</summary>
|
|
51
|
+
<ul class="ab-footer-links">
|
|
52
|
+
{% for page in pages %}
|
|
53
|
+
<li><a href="/pages/{{ page.slug }}">{{ page.title }}</a></li>
|
|
54
|
+
{% endfor %}
|
|
55
|
+
</ul>
|
|
56
|
+
</details>
|
|
57
|
+
{% endif %}
|
|
58
|
+
|
|
59
|
+
{% if has_contact %}
|
|
60
|
+
<details class="ab-footer-col ab-footer-details ab-footer-contact-info">
|
|
61
|
+
<summary class="ab-footer-heading">
|
|
62
|
+
<span class="ab-footer-contact-title">
|
|
63
|
+
<span class="ab-footer-contact-title__en">Contact</span>
|
|
64
|
+
<span class="ab-footer-contact-title__ar" lang="ar">تواصل معنا</span>
|
|
65
|
+
</span>
|
|
66
|
+
<span class="ab-footer-chev" aria-hidden="true">
|
|
67
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"/></svg>
|
|
68
|
+
</span>
|
|
69
|
+
</summary>
|
|
14
70
|
<address class="ab-footer-contact">
|
|
15
71
|
{% if phone != "" %}
|
|
16
72
|
<a href="tel:{{ phone }}" class="ab-footer-contact-item">
|
|
17
|
-
<
|
|
73
|
+
<svg class="contact-icon" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"><rect x="5" y="2" width="14" height="20" rx="2" ry="2"></rect><line x1="12" y1="18" x2="12.01" y2="18"></line></svg>
|
|
18
74
|
<span dir="ltr">{{ phone }}</span>
|
|
19
75
|
</a>
|
|
20
76
|
{% endif %}
|
|
77
|
+
|
|
21
78
|
{% if email != "" %}
|
|
22
79
|
<a href="mailto:{{ email }}" class="ab-footer-contact-item">
|
|
23
|
-
<
|
|
80
|
+
<svg class="contact-icon" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22,6 12,13 2,6"></polyline></svg>
|
|
24
81
|
{{ email }}
|
|
25
82
|
</a>
|
|
26
83
|
{% endif %}
|
|
84
|
+
|
|
27
85
|
{% if address != "" %}
|
|
28
86
|
<span class="ab-footer-contact-item">
|
|
29
|
-
<
|
|
87
|
+
<svg class="contact-icon" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"></path><circle cx="12" cy="10" r="3"></circle></svg>
|
|
30
88
|
{{ address }}
|
|
31
89
|
</span>
|
|
32
90
|
{% endif %}
|
|
33
91
|
</address>
|
|
34
|
-
|
|
35
|
-
</div>
|
|
36
|
-
|
|
37
|
-
{% if categories.size > 0 %}
|
|
38
|
-
<div class="ab-footer-col">
|
|
39
|
-
<h4 class="ab-footer-heading">{{ shop_label }}</h4>
|
|
40
|
-
<ul class="ab-footer-links">
|
|
41
|
-
{% for cat in categories %}
|
|
42
|
-
<li><a href="/collections/{{ cat.slug }}">{{ cat.name }}</a></li>
|
|
43
|
-
{% endfor %}
|
|
44
|
-
</ul>
|
|
45
|
-
</div>
|
|
46
|
-
{% endif %}
|
|
47
|
-
|
|
48
|
-
{% if pages.size > 0 %}
|
|
49
|
-
<div class="ab-footer-col">
|
|
50
|
-
<h4 class="ab-footer-heading">{{ help_label }}</h4>
|
|
51
|
-
<ul class="ab-footer-links">
|
|
52
|
-
{% for page in pages %}
|
|
53
|
-
<li><a href="/pages/{{ page.slug }}">{{ page.title }}</a></li>
|
|
54
|
-
{% endfor %}
|
|
55
|
-
</ul>
|
|
56
|
-
</div>
|
|
92
|
+
</details>
|
|
57
93
|
{% endif %}
|
|
58
94
|
</div>
|
|
59
95
|
|
|
60
|
-
<div class="ab-footer-
|
|
61
|
-
|
|
62
|
-
<h4 class="ab-footer-heading">{{ subscribe_label }}</h4>
|
|
63
|
-
<form
|
|
64
|
-
class="ab-footer-subscribe-form"
|
|
65
|
-
novalidate
|
|
66
|
-
onsubmit="
|
|
67
|
-
event.preventDefault();
|
|
68
|
-
if (!this.checkValidity()) {
|
|
69
|
-
this.reportValidity();
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
var input = this.elements.email;
|
|
73
|
-
var email = input && input.value ? String(input.value).trim() : '';
|
|
74
|
-
this.dispatchEvent(
|
|
75
|
-
new CustomEvent('footer-subscribe', {
|
|
76
|
-
bubbles: true,
|
|
77
|
-
detail: { email: email }
|
|
78
|
-
})
|
|
79
|
-
);
|
|
80
|
-
this.reset()
|
|
81
|
-
"
|
|
82
|
-
>
|
|
83
|
-
<input
|
|
84
|
-
type="email"
|
|
85
|
-
name="email"
|
|
86
|
-
class="ab-footer-subscribe-input"
|
|
87
|
-
placeholder="{{ email_placeholder }}"
|
|
88
|
-
autocomplete="email"
|
|
89
|
-
inputmode="email"
|
|
90
|
-
maxlength="254"
|
|
91
|
-
pattern="[^@\s]+@[^@\s]+\.[^@\s]+"
|
|
92
|
-
title="{{ email_placeholder }}"
|
|
93
|
-
required
|
|
94
|
-
aria-required="true"
|
|
95
|
-
/>
|
|
96
|
-
<button type="submit" class="ab-footer-subscribe-btn" aria-label="Subscribe">
|
|
97
|
-
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg>
|
|
98
|
-
</button>
|
|
99
|
-
</form>
|
|
100
|
-
</div>
|
|
96
|
+
<div class="ab-footer-social-row">
|
|
97
|
+
|
|
101
98
|
|
|
102
99
|
{% if social.size > 0 %}
|
|
103
100
|
<div class="ab-footer-social">
|
|
@@ -112,18 +109,20 @@
|
|
|
112
109
|
</div>
|
|
113
110
|
{% endif %}
|
|
114
111
|
</div>
|
|
115
|
-
</div>
|
|
116
112
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
113
|
+
<div class="ab-footer-bottom">
|
|
114
|
+
<p class="ab-footer-copy">© {{ year }} {{ store_name }}. {{ rights_label }}</p>
|
|
115
|
+
|
|
116
|
+
{% if show_powered %}
|
|
117
|
+
<p class="ab-footer-powered">Powered by <a href="https://www.easy-orders.net" target="_blank" rel="noreferrer">easyorders</a></p>
|
|
118
|
+
{% endif %}
|
|
119
|
+
|
|
120
|
+
{% if payment_img != "" and theme_data.show_payment_icons != false %}
|
|
121
|
+
<div class="ab-footer-payment">
|
|
122
|
+
<img src="{{ payment_img }}" alt="Accepted payment methods" />
|
|
123
|
+
</div>
|
|
124
|
+
{% endif %}
|
|
125
|
+
</div>
|
|
123
126
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
<p class="ab-footer-powered">Powered by <a href="https://www.easy-orders.net" target="_blank" rel="noreferrer">easyorders</a></p>
|
|
127
|
-
{% endif %}
|
|
128
|
-
</div>
|
|
129
|
-
</footer>
|
|
127
|
+
</div>
|
|
128
|
+
</footer>
|
|
@@ -1,45 +1,48 @@
|
|
|
1
1
|
<div class="ab-gallery">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
<video
|
|
5
|
-
src="{{ mainImage }}"
|
|
6
|
-
class="ab-gallery-main-media"
|
|
7
|
-
controls
|
|
8
|
-
playsinline
|
|
9
|
-
autoplay
|
|
10
|
-
muted
|
|
11
|
-
preload="metadata"
|
|
12
|
-
></video>
|
|
13
|
-
{% else %}
|
|
14
|
-
<img
|
|
15
|
-
id="gallery-main-image"
|
|
16
|
-
src="{{ mainImage }}"
|
|
17
|
-
alt="{{ product_name }}"
|
|
18
|
-
class="ab-gallery-main-media"
|
|
19
|
-
/>
|
|
20
|
-
{% endif %}
|
|
21
|
-
<button class="ab-gallery-zoom" type="button" aria-label="Zoom image" data-gallery-open>
|
|
22
|
-
<span>+</span>
|
|
23
|
-
</button>
|
|
24
|
-
</div>
|
|
25
|
-
|
|
26
|
-
{% if images.size > 1 %}
|
|
27
|
-
<div class="ab-gallery-thumbs">
|
|
2
|
+
{% assign gallery_main_image_id_set = false %}
|
|
3
|
+
<div class="ab-gallery-track" data-gallery-track>
|
|
28
4
|
{% for image in images %}
|
|
29
|
-
<
|
|
30
|
-
class="ab-gallery-
|
|
5
|
+
<div
|
|
6
|
+
class="ab-gallery-slide"
|
|
7
|
+
data-slide-index="{{ forloop.index0 }}"
|
|
31
8
|
data-src="{{ image }}"
|
|
32
|
-
type="button"
|
|
33
|
-
aria-label="View image {{ forloop.index }}"
|
|
34
9
|
>
|
|
35
10
|
{% if image contains '.mp4' %}
|
|
36
|
-
<video
|
|
11
|
+
<video
|
|
12
|
+
src="{{ image }}"
|
|
13
|
+
class="ab-gallery-media"
|
|
14
|
+
playsinline
|
|
15
|
+
muted
|
|
16
|
+
preload="metadata"
|
|
17
|
+
></video>
|
|
18
|
+
<span class="ab-gallery-play-overlay">
|
|
19
|
+
<svg viewBox="0 0 48 48" fill="none"><circle cx="24" cy="24" r="23" fill="rgba(0,0,0,0.45)"/><polygon points="19,14 19,34 36,24" fill="#fff"/></svg>
|
|
20
|
+
</span>
|
|
37
21
|
{% else %}
|
|
38
|
-
<img
|
|
22
|
+
<img
|
|
23
|
+
src="{{ image }}"
|
|
24
|
+
alt="{{ product_name }}"
|
|
25
|
+
class="ab-gallery-media"
|
|
26
|
+
loading="{% if forloop.first %}eager{% else %}lazy{% endif %}"
|
|
27
|
+
{% unless gallery_main_image_id_set %}id="gallery-main-image"{% endunless %}
|
|
28
|
+
/>
|
|
29
|
+
{% assign gallery_main_image_id_set = true %}
|
|
39
30
|
{% endif %}
|
|
40
|
-
</
|
|
31
|
+
</div>
|
|
41
32
|
{% endfor %}
|
|
42
33
|
</div>
|
|
34
|
+
|
|
35
|
+
{% if images.size > 1 %}
|
|
36
|
+
<div class="ab-gallery-dots" data-gallery-dots>
|
|
37
|
+
{% for image in images %}
|
|
38
|
+
<button
|
|
39
|
+
class="ab-gallery-dot{% if forloop.first %} ab-active{% endif %}"
|
|
40
|
+
type="button"
|
|
41
|
+
data-dot-index="{{ forloop.index0 }}"
|
|
42
|
+
aria-label="View image {{ forloop.index }}"
|
|
43
|
+
></button>
|
|
44
|
+
{% endfor %}
|
|
45
|
+
</div>
|
|
43
46
|
{% endif %}
|
|
44
47
|
|
|
45
48
|
<div class="ab-lightbox" data-lightbox>
|
|
@@ -56,6 +59,7 @@
|
|
|
56
59
|
{% endif %}
|
|
57
60
|
<div class="ab-lightbox-body">
|
|
58
61
|
<img src="" alt="" class="ab-lightbox-img" data-lightbox-img />
|
|
62
|
+
<video class="ab-lightbox-video" data-lightbox-video playsinline muted controls preload="metadata"></video>
|
|
59
63
|
</div>
|
|
60
64
|
</div>
|
|
61
65
|
</div>
|