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.
Files changed (43) hide show
  1. package/dist/template/theme/config.json +45 -27
  2. package/dist/template/theme/home-sections/Tilted-Scrolling-Marque/config.json +107 -0
  3. package/dist/template/theme/home-sections/Tilted-Scrolling-Marque/template.liquid +171 -0
  4. package/dist/template/theme/home-sections/category-mosaic/config.json +125 -40
  5. package/dist/template/theme/home-sections/category-mosaic/template.liquid +170 -155
  6. package/dist/template/theme/home-sections/different-hero/config.json +199 -0
  7. package/dist/template/theme/home-sections/different-hero/template.liquid +219 -0
  8. package/dist/template/theme/home-sections/editorial-feature/config.json +93 -67
  9. package/dist/template/theme/home-sections/editorial-feature/template.liquid +154 -153
  10. package/dist/template/theme/home-sections/newsletter-luxe/config.json +86 -60
  11. package/dist/template/theme/home-sections/newsletter-luxe/template.liquid +150 -144
  12. package/dist/template/theme/home-sections/runway-hero/config.json +148 -91
  13. package/dist/template/theme/home-sections/runway-hero/template.liquid +189 -159
  14. package/dist/template/theme/home-sections/shop-the-look/config.json +167 -75
  15. package/dist/template/theme/home-sections/shop-the-look/template.liquid +326 -304
  16. package/dist/template/theme/home-sections/slider-before-after/config.json +213 -0
  17. package/dist/template/theme/home-sections/slider-before-after/template.liquid +336 -0
  18. package/dist/template/theme/home-sections/test-hero-allbird/config.json +130 -0
  19. package/dist/template/theme/home-sections/test-hero-allbird/template.liquid +149 -0
  20. package/dist/template/theme/home-sections/trust-promise/config.json +121 -47
  21. package/dist/template/theme/home-sections/trust-promise/template.liquid +34 -11
  22. package/dist/template/theme/home-sections/zoom-parallax/config.json +48 -0
  23. package/dist/template/theme/home-sections/zoom-parallax/template.liquid +135 -0
  24. package/dist/template/theme/product-data-schema.json +27 -0
  25. package/dist/template/theme/schema.json +114 -129
  26. package/dist/template/theme/script.js +694 -185
  27. package/dist/template/theme/sections/categories.liquid +20 -4
  28. package/dist/template/theme/sections/featured-products.liquid +65 -32
  29. package/dist/template/theme/sections/fixed-buy-button.liquid +6 -1
  30. package/dist/template/theme/sections/footer.liquid +90 -91
  31. package/dist/template/theme/sections/gallery.liquid +37 -33
  32. package/dist/template/theme/sections/header.liquid +105 -25
  33. package/dist/template/theme/sections/home-products-grid.liquid +68 -10
  34. package/dist/template/theme/sections/list-products.liquid +73 -30
  35. package/dist/template/theme/sections/order-invoice.liquid +39 -91
  36. package/dist/template/theme/sections/product-description.liquid +18 -8
  37. package/dist/template/theme/sections/product-details.liquid +9 -24
  38. package/dist/template/theme/sections/products-grid.liquid +102 -54
  39. package/dist/template/theme/sections/related-products.liquid +124 -60
  40. package/dist/template/theme/sections/reviews.liquid +43 -28
  41. package/dist/template/theme/style.css +2283 -589
  42. package/dist/template/theme/theme-data.json +25 -8
  43. package/package.json +1 -1
@@ -1,10 +1,26 @@
1
1
  <div class="ab-categories">
2
- <div class="ab-categories-track">
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
- <img src="{{ category.thumb }}" alt="{{ category.name }}" />
6
- <span class="ab-cat-label">{{ category.name }}</span>
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 class="ab-featured-products">
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
- <a href="/products/{{ product.slug }}" class="ab-featured-card ab-reveal" style="animation-delay: {{ forloop.index | times: 0.04 }}s">
36
- {% if product.sale_price and product.sale_price < product.price %}
37
- {% assign discount = product.price | minus: product.sale_price | times: 100 | divided_by: product.price | floor %}
38
- <span class="ab-featured-badge ab-sale-badge">{{ sale }} -{{ discount }}%</span>
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
- <button
100
- class="ab-featured-add-btn"
101
- type="button"
102
- onclick="event.preventDefault();event.stopPropagation();this.dispatchEvent(new CustomEvent('quick-add',{bubbles:true,detail:{productId:'{{ product.id }}'}}));"
103
- >{{add}}</button>
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
- >{{ buy_now_text }}</button>
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
- <div class="ab-footer-columns">
5
- <div class="ab-footer-col ab-footer-brand">
6
- <a href="/" class="ab-footer-logo">
7
- {% if logo != "" %}
8
- <img src="{{ logo }}" alt="{{ store_name }}" />
9
- {% else %}
10
- <span class="ab-footer-logo-text">{{ store_name }}</span>
11
- {% endif %}
12
- </a>
13
- {% if has_contact %}
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
- <span class="ab-footer-contact-icon ab-fci-phone" aria-hidden="true"></span>
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
- <span class="ab-footer-contact-icon ab-fci-email" aria-hidden="true"></span>
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
- <span class="ab-footer-contact-icon ab-fci-address" aria-hidden="true"></span>
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
- {% endif %}
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-right">
61
- <div class="ab-footer-subscribe">
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
- <div class="ab-footer-bottom">
118
- {% if payment_img != "" %}
119
- <div class="ab-footer-payment">
120
- <img src="{{ payment_img }}" alt="Accepted payment methods" />
121
- </div>
122
- {% endif %}
113
+ <div class="ab-footer-bottom">
114
+ <p class="ab-footer-copy">&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
- <p class="ab-footer-copy">&copy; {{ year }} {{ store_name }}. {{ rights_label }}</p>
125
- {% if show_powered %}
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
- <div class="ab-gallery-main" data-gallery-open>
3
- {% if mainImage contains '.mp4' %}
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
- <button
30
- class="ab-gallery-thumb{% if image == mainImage %} ab-active{% endif %}"
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 src="{{ image }}" muted playsinline preload="metadata"></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 src="{{ image }}" alt="{{ product_name }}" loading="lazy" />
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
- </button>
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>