easyorders 0.1.13 → 0.1.15
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/README.md +93 -93
- package/dist/bin/cli.js +12 -5
- package/dist/template/theme/config.json +95 -95
- package/dist/template/theme/home-sections/category-mosaic/config.json +40 -40
- package/dist/template/theme/home-sections/category-mosaic/template.liquid +155 -155
- package/dist/template/theme/home-sections/editorial-feature/config.json +67 -67
- package/dist/template/theme/home-sections/editorial-feature/template.liquid +153 -153
- package/dist/template/theme/home-sections/newsletter-luxe/config.json +60 -60
- package/dist/template/theme/home-sections/newsletter-luxe/template.liquid +144 -144
- package/dist/template/theme/home-sections/runway-hero/config.json +91 -91
- package/dist/template/theme/home-sections/runway-hero/template.liquid +159 -159
- package/dist/template/theme/home-sections/shop-the-look/config.json +75 -75
- package/dist/template/theme/home-sections/shop-the-look/template.liquid +304 -304
- package/dist/template/theme/home-sections/trust-promise/config.json +47 -47
- package/dist/template/theme/home-sections/trust-promise/template.liquid +96 -96
- package/dist/template/theme/schema.json +151 -151
- package/dist/template/theme/script.js +586 -586
- package/dist/template/theme/sections/breadcrumbs.liquid +17 -17
- package/dist/template/theme/sections/categories.liquid +9 -9
- package/dist/template/theme/sections/fake-counter.liquid +27 -27
- package/dist/template/theme/sections/fake-stock.liquid +6 -6
- package/dist/template/theme/sections/fake-visitor.liquid +6 -6
- package/dist/template/theme/sections/featured-products.liquid +110 -110
- package/dist/template/theme/sections/fixed-buy-button.liquid +46 -46
- package/dist/template/theme/sections/footer.liquid +128 -128
- package/dist/template/theme/sections/gallery.liquid +61 -61
- package/dist/template/theme/sections/header.liquid +152 -152
- package/dist/template/theme/sections/home-products-grid.liquid +109 -109
- package/dist/template/theme/sections/list-products.liquid +93 -93
- package/dist/template/theme/sections/order-invoice.liquid +154 -154
- package/dist/template/theme/sections/product-description.liquid +30 -30
- package/dist/template/theme/sections/product-details.liquid +63 -63
- package/dist/template/theme/sections/products-grid.liquid +86 -86
- package/dist/template/theme/sections/related-products.liquid +88 -88
- package/dist/template/theme/sections/reviews.liquid +55 -55
- package/dist/template/theme/sections/slider.liquid +43 -43
- package/dist/template/theme/sections/thanks.liquid +33 -33
- package/dist/template/theme/style.css +3923 -3923
- package/dist/template/theme/theme-data.json +9 -9
- package/package.json +40 -40
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
<nav class="ab-breadcrumbs" aria-label="Breadcrumb">
|
|
2
|
-
<ol class="ab-breadcrumbs-list">
|
|
3
|
-
<li class="ab-breadcrumbs-item">
|
|
4
|
-
<a href="/">{{ home_text }}</a>
|
|
5
|
-
<span class="ab-breadcrumbs-sep">/</span>
|
|
6
|
-
</li>
|
|
7
|
-
{% for crumb in categories %}
|
|
8
|
-
<li class="ab-breadcrumbs-item">
|
|
9
|
-
<a href="/collections/{{ crumb.slug }}">{{ crumb.name }}</a>
|
|
10
|
-
<span class="ab-breadcrumbs-sep">/</span>
|
|
11
|
-
</li>
|
|
12
|
-
{% endfor %}
|
|
13
|
-
<li class="ab-breadcrumbs-item ab-breadcrumbs-current" aria-current="page">
|
|
14
|
-
{{ product_name }}
|
|
15
|
-
</li>
|
|
16
|
-
</ol>
|
|
17
|
-
</nav>
|
|
1
|
+
<nav class="ab-breadcrumbs" aria-label="Breadcrumb">
|
|
2
|
+
<ol class="ab-breadcrumbs-list">
|
|
3
|
+
<li class="ab-breadcrumbs-item">
|
|
4
|
+
<a href="/">{{ home_text }}</a>
|
|
5
|
+
<span class="ab-breadcrumbs-sep">/</span>
|
|
6
|
+
</li>
|
|
7
|
+
{% for crumb in categories %}
|
|
8
|
+
<li class="ab-breadcrumbs-item">
|
|
9
|
+
<a href="/collections/{{ crumb.slug }}">{{ crumb.name }}</a>
|
|
10
|
+
<span class="ab-breadcrumbs-sep">/</span>
|
|
11
|
+
</li>
|
|
12
|
+
{% endfor %}
|
|
13
|
+
<li class="ab-breadcrumbs-item ab-breadcrumbs-current" aria-current="page">
|
|
14
|
+
{{ product_name }}
|
|
15
|
+
</li>
|
|
16
|
+
</ol>
|
|
17
|
+
</nav>
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
<div class="ab-categories">
|
|
2
|
-
<div class="ab-categories-track">
|
|
3
|
-
{% for category in categories %}
|
|
4
|
-
<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>
|
|
7
|
-
</a>
|
|
8
|
-
{% endfor %}
|
|
9
|
-
</div>
|
|
1
|
+
<div class="ab-categories">
|
|
2
|
+
<div class="ab-categories-track">
|
|
3
|
+
{% for category in categories %}
|
|
4
|
+
<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>
|
|
7
|
+
</a>
|
|
8
|
+
{% endfor %}
|
|
9
|
+
</div>
|
|
10
10
|
</div>
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
<div class="ab-fake-counter" data-product-id="{{ product_id }}" data-hours="{{ hours }}">
|
|
2
|
-
<div class="ab-fc-header">
|
|
3
|
-
<span class="ab-fc-icon" aria-hidden="true"></span>
|
|
4
|
-
<span class="ab-fc-title">{{ title }}</span>
|
|
5
|
-
</div>
|
|
6
|
-
<div class="ab-fc-digits" dir="ltr">
|
|
7
|
-
<div class="ab-fc-unit">
|
|
8
|
-
<span class="ab-fc-num" data-unit="days">00</span>
|
|
9
|
-
<span class="ab-fc-label">{{ label_days }}</span>
|
|
10
|
-
</div>
|
|
11
|
-
<span class="ab-fc-sep">:</span>
|
|
12
|
-
<div class="ab-fc-unit">
|
|
13
|
-
<span class="ab-fc-num" data-unit="hours">00</span>
|
|
14
|
-
<span class="ab-fc-label">{{ label_hours }}</span>
|
|
15
|
-
</div>
|
|
16
|
-
<span class="ab-fc-sep">:</span>
|
|
17
|
-
<div class="ab-fc-unit">
|
|
18
|
-
<span class="ab-fc-num" data-unit="minutes">00</span>
|
|
19
|
-
<span class="ab-fc-label">{{ label_minutes }}</span>
|
|
20
|
-
</div>
|
|
21
|
-
<span class="ab-fc-sep">:</span>
|
|
22
|
-
<div class="ab-fc-unit">
|
|
23
|
-
<span class="ab-fc-num" data-unit="seconds">00</span>
|
|
24
|
-
<span class="ab-fc-label">{{ label_seconds }}</span>
|
|
25
|
-
</div>
|
|
26
|
-
</div>
|
|
27
|
-
</div>
|
|
1
|
+
<div class="ab-fake-counter" data-product-id="{{ product_id }}" data-hours="{{ hours }}">
|
|
2
|
+
<div class="ab-fc-header">
|
|
3
|
+
<span class="ab-fc-icon" aria-hidden="true"></span>
|
|
4
|
+
<span class="ab-fc-title">{{ title }}</span>
|
|
5
|
+
</div>
|
|
6
|
+
<div class="ab-fc-digits" dir="ltr">
|
|
7
|
+
<div class="ab-fc-unit">
|
|
8
|
+
<span class="ab-fc-num" data-unit="days">00</span>
|
|
9
|
+
<span class="ab-fc-label">{{ label_days }}</span>
|
|
10
|
+
</div>
|
|
11
|
+
<span class="ab-fc-sep">:</span>
|
|
12
|
+
<div class="ab-fc-unit">
|
|
13
|
+
<span class="ab-fc-num" data-unit="hours">00</span>
|
|
14
|
+
<span class="ab-fc-label">{{ label_hours }}</span>
|
|
15
|
+
</div>
|
|
16
|
+
<span class="ab-fc-sep">:</span>
|
|
17
|
+
<div class="ab-fc-unit">
|
|
18
|
+
<span class="ab-fc-num" data-unit="minutes">00</span>
|
|
19
|
+
<span class="ab-fc-label">{{ label_minutes }}</span>
|
|
20
|
+
</div>
|
|
21
|
+
<span class="ab-fc-sep">:</span>
|
|
22
|
+
<div class="ab-fc-unit">
|
|
23
|
+
<span class="ab-fc-num" data-unit="seconds">00</span>
|
|
24
|
+
<span class="ab-fc-label">{{ label_seconds }}</span>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
<div class="ab-fake-stock">
|
|
2
|
-
<p class="ab-fs-text">{{ text }}</p>
|
|
3
|
-
<div class="ab-fs-bar">
|
|
4
|
-
<div class="ab-fs-fill"></div>
|
|
5
|
-
</div>
|
|
6
|
-
</div>
|
|
1
|
+
<div class="ab-fake-stock">
|
|
2
|
+
<p class="ab-fs-text">{{ text }}</p>
|
|
3
|
+
<div class="ab-fs-bar">
|
|
4
|
+
<div class="ab-fs-fill"></div>
|
|
5
|
+
</div>
|
|
6
|
+
</div>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
<div class="ab-fake-visitor" data-min="{{ min }}" data-max="{{ max }}">
|
|
2
|
-
<span class="ab-fv-eye" aria-hidden="true"></span>
|
|
3
|
-
<p class="ab-fv-text">
|
|
4
|
-
<span class="ab-fv-count">{{ min }}</span> {{ watching_text }}
|
|
5
|
-
</p>
|
|
6
|
-
</div>
|
|
1
|
+
<div class="ab-fake-visitor" data-min="{{ min }}" data-max="{{ max }}">
|
|
2
|
+
<span class="ab-fv-eye" aria-hidden="true"></span>
|
|
3
|
+
<p class="ab-fv-text">
|
|
4
|
+
<span class="ab-fv-count">{{ min }}</span> {{ watching_text }}
|
|
5
|
+
</p>
|
|
6
|
+
</div>
|
|
@@ -1,110 +1,110 @@
|
|
|
1
|
-
<section class="ab-featured-products">
|
|
2
|
-
{% if section_title %}
|
|
3
|
-
<h2 class="ab-featured-section-title ab-reveal">{{ section_title }}</h2>
|
|
4
|
-
{% endif %}
|
|
5
|
-
<div class="ab-featured-layout">
|
|
6
|
-
<a
|
|
7
|
-
href="{% if category and category.slug %}/collections/{{ category.slug }}{% else %}#{% endif %}"
|
|
8
|
-
class="ab-featured-hero ab-reveal"
|
|
9
|
-
>
|
|
10
|
-
<img
|
|
11
|
-
src="{% if category and category.thumb %}{{ category.thumb }}{% elsif products and products[0] and products[0].thumb %}{{ products[0].thumb }}{% endif %}"
|
|
12
|
-
alt="{% if category and category.name %}{{ category.name }}{% else %}{{ section_title }}{% endif %}"
|
|
13
|
-
loading="lazy"
|
|
14
|
-
/>
|
|
15
|
-
<span class="ab-featured-hero-overlay"></span>
|
|
16
|
-
<div class="ab-featured-hero-content">
|
|
17
|
-
{% if category and category.name %}
|
|
18
|
-
<p class="ab-featured-hero-subtitle">{{ category.name }}</p>
|
|
19
|
-
{% endif %}
|
|
20
|
-
</div>
|
|
21
|
-
{% unless hide_view_all %}<span class="ab-featured-hero-cta">{{shop_now}}</span>{% endunless %}
|
|
22
|
-
</a>
|
|
23
|
-
|
|
24
|
-
<div class="ab-featured-grid">
|
|
25
|
-
{% for product in products limit: 4 %}
|
|
26
|
-
{% assign color_variation = product.variations | where: "type", "color" | first %}
|
|
27
|
-
{% assign image_variation = product.variations | where: "type", "image" | first %}
|
|
28
|
-
{% assign swatch_total = 0 %}
|
|
29
|
-
{% if color_variation and color_variation.props %}
|
|
30
|
-
{% assign swatch_total = color_variation.props.size %}
|
|
31
|
-
{% elsif image_variation and image_variation.props %}
|
|
32
|
-
{% assign swatch_total = image_variation.props.size %}
|
|
33
|
-
{% endif %}
|
|
34
|
-
|
|
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>
|
|
39
|
-
{% endif %}
|
|
40
|
-
|
|
41
|
-
<div class="ab-featured-media">
|
|
42
|
-
<img class="ab-featured-img-primary" src="{{ product.thumb }}" alt="{{ product.name }}" loading="lazy" />
|
|
43
|
-
{% if product.images[0] %}
|
|
44
|
-
<img class="ab-featured-img-hover" src="{{ product.images[0] }}" alt="{{ product.name }}" loading="lazy" />
|
|
45
|
-
{% 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
|
-
</div>
|
|
67
|
-
|
|
68
|
-
<div class="ab-featured-info">
|
|
69
|
-
<p class="ab-featured-name">{{ product.name }}</p>
|
|
70
|
-
<div class="ab-featured-price-row">
|
|
71
|
-
{% if product.sale_price and product.sale_price < product.price %}
|
|
72
|
-
<span class="ab-price-old">{{ product.price }} {{ currency }}</span>
|
|
73
|
-
<span class="ab-featured-price ab-price-sale">{{ product.sale_price }} {{ currency }}</span>
|
|
74
|
-
{% else %}
|
|
75
|
-
<span class="ab-featured-price">{{ product.price }} {{ currency }}</span>
|
|
76
|
-
{% endif %}
|
|
77
|
-
</div>
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
<div class="ab-featured-bottom-row">
|
|
81
|
-
<div class="ab-featured-swatches">
|
|
82
|
-
{% if color_variation and color_variation.props %}
|
|
83
|
-
{% for prop in color_variation.props limit: 4 %}
|
|
84
|
-
<span class="ab-featured-swatch" style="background: {{ prop.value }}" title="{{ prop.name }}"></span>
|
|
85
|
-
{% endfor %}
|
|
86
|
-
{% elsif image_variation and image_variation.props %}
|
|
87
|
-
{% for prop in image_variation.props limit: 4 %}
|
|
88
|
-
<span class="ab-featured-swatch ab-featured-swatch-image" title="{{ prop.name }}">
|
|
89
|
-
<img src="{{ prop.value }}" alt="{{ prop.name }}" loading="lazy" />
|
|
90
|
-
</span>
|
|
91
|
-
{% endfor %}
|
|
92
|
-
{% endif %}
|
|
93
|
-
|
|
94
|
-
{% if swatch_total > 4 %}
|
|
95
|
-
<span class="ab-featured-swatch-more">+{{ swatch_total | minus: 4 }}</span>
|
|
96
|
-
{% endif %}
|
|
97
|
-
</div>
|
|
98
|
-
|
|
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>
|
|
104
|
-
</div>
|
|
105
|
-
</div>
|
|
106
|
-
</a>
|
|
107
|
-
{% endfor %}
|
|
108
|
-
</div>
|
|
109
|
-
</div>
|
|
110
|
-
</section>
|
|
1
|
+
<section class="ab-featured-products">
|
|
2
|
+
{% if section_title %}
|
|
3
|
+
<h2 class="ab-featured-section-title ab-reveal">{{ section_title }}</h2>
|
|
4
|
+
{% endif %}
|
|
5
|
+
<div class="ab-featured-layout">
|
|
6
|
+
<a
|
|
7
|
+
href="{% if category and category.slug %}/collections/{{ category.slug }}{% else %}#{% endif %}"
|
|
8
|
+
class="ab-featured-hero ab-reveal"
|
|
9
|
+
>
|
|
10
|
+
<img
|
|
11
|
+
src="{% if category and category.thumb %}{{ category.thumb }}{% elsif products and products[0] and products[0].thumb %}{{ products[0].thumb }}{% endif %}"
|
|
12
|
+
alt="{% if category and category.name %}{{ category.name }}{% else %}{{ section_title }}{% endif %}"
|
|
13
|
+
loading="lazy"
|
|
14
|
+
/>
|
|
15
|
+
<span class="ab-featured-hero-overlay"></span>
|
|
16
|
+
<div class="ab-featured-hero-content">
|
|
17
|
+
{% if category and category.name %}
|
|
18
|
+
<p class="ab-featured-hero-subtitle">{{ category.name }}</p>
|
|
19
|
+
{% endif %}
|
|
20
|
+
</div>
|
|
21
|
+
{% unless hide_view_all %}<span class="ab-featured-hero-cta">{{shop_now}}</span>{% endunless %}
|
|
22
|
+
</a>
|
|
23
|
+
|
|
24
|
+
<div class="ab-featured-grid">
|
|
25
|
+
{% for product in products limit: 4 %}
|
|
26
|
+
{% assign color_variation = product.variations | where: "type", "color" | first %}
|
|
27
|
+
{% assign image_variation = product.variations | where: "type", "image" | first %}
|
|
28
|
+
{% assign swatch_total = 0 %}
|
|
29
|
+
{% if color_variation and color_variation.props %}
|
|
30
|
+
{% assign swatch_total = color_variation.props.size %}
|
|
31
|
+
{% elsif image_variation and image_variation.props %}
|
|
32
|
+
{% assign swatch_total = image_variation.props.size %}
|
|
33
|
+
{% endif %}
|
|
34
|
+
|
|
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>
|
|
39
|
+
{% endif %}
|
|
40
|
+
|
|
41
|
+
<div class="ab-featured-media">
|
|
42
|
+
<img class="ab-featured-img-primary" src="{{ product.thumb }}" alt="{{ product.name }}" loading="lazy" />
|
|
43
|
+
{% if product.images[0] %}
|
|
44
|
+
<img class="ab-featured-img-hover" src="{{ product.images[0] }}" alt="{{ product.name }}" loading="lazy" />
|
|
45
|
+
{% 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
|
+
</div>
|
|
67
|
+
|
|
68
|
+
<div class="ab-featured-info">
|
|
69
|
+
<p class="ab-featured-name">{{ product.name }}</p>
|
|
70
|
+
<div class="ab-featured-price-row">
|
|
71
|
+
{% if product.sale_price and product.sale_price < product.price %}
|
|
72
|
+
<span class="ab-price-old">{{ product.price }} {{ currency }}</span>
|
|
73
|
+
<span class="ab-featured-price ab-price-sale">{{ product.sale_price }} {{ currency }}</span>
|
|
74
|
+
{% else %}
|
|
75
|
+
<span class="ab-featured-price">{{ product.price }} {{ currency }}</span>
|
|
76
|
+
{% endif %}
|
|
77
|
+
</div>
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
<div class="ab-featured-bottom-row">
|
|
81
|
+
<div class="ab-featured-swatches">
|
|
82
|
+
{% if color_variation and color_variation.props %}
|
|
83
|
+
{% for prop in color_variation.props limit: 4 %}
|
|
84
|
+
<span class="ab-featured-swatch" style="background: {{ prop.value }}" title="{{ prop.name }}"></span>
|
|
85
|
+
{% endfor %}
|
|
86
|
+
{% elsif image_variation and image_variation.props %}
|
|
87
|
+
{% for prop in image_variation.props limit: 4 %}
|
|
88
|
+
<span class="ab-featured-swatch ab-featured-swatch-image" title="{{ prop.name }}">
|
|
89
|
+
<img src="{{ prop.value }}" alt="{{ prop.name }}" loading="lazy" />
|
|
90
|
+
</span>
|
|
91
|
+
{% endfor %}
|
|
92
|
+
{% endif %}
|
|
93
|
+
|
|
94
|
+
{% if swatch_total > 4 %}
|
|
95
|
+
<span class="ab-featured-swatch-more">+{{ swatch_total | minus: 4 }}</span>
|
|
96
|
+
{% endif %}
|
|
97
|
+
</div>
|
|
98
|
+
|
|
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>
|
|
104
|
+
</div>
|
|
105
|
+
</div>
|
|
106
|
+
</a>
|
|
107
|
+
{% endfor %}
|
|
108
|
+
</div>
|
|
109
|
+
</div>
|
|
110
|
+
</section>
|
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
<div class="ab-fixed-buy">
|
|
2
|
-
{% if thumb and thumb != "" %}
|
|
3
|
-
<div class="ab-fixed-buy-preview">
|
|
4
|
-
<img class="ab-fixed-buy-thumb" src="{{ thumb }}" alt="{{ product_name }}" />
|
|
5
|
-
<div class="ab-fixed-buy-info">
|
|
6
|
-
<span class="ab-fixed-buy-name">{{ product_name }}</span>
|
|
7
|
-
<div class="ab-fixed-buy-price-row">
|
|
8
|
-
{% if sale_price and sale_price < price %}
|
|
9
|
-
<span class="ab-fixed-buy-price-old">{{ price }} {{ currency }}</span>
|
|
10
|
-
<span class="ab-fixed-buy-price ab-fixed-buy-price-sale">{{ sale_price }} {{ currency }}</span>
|
|
11
|
-
{% else %}
|
|
12
|
-
<span class="ab-fixed-buy-price">{{ price }} {{ currency }}</span>
|
|
13
|
-
{% endif %}
|
|
14
|
-
</div>
|
|
15
|
-
</div>
|
|
16
|
-
</div>
|
|
17
|
-
{% endif %}
|
|
18
|
-
|
|
19
|
-
{% unless hide_quantity %}
|
|
20
|
-
<div class="ab-fixed-buy-qty">
|
|
21
|
-
<button
|
|
22
|
-
class="ab-fixed-buy-qty-btn"
|
|
23
|
-
type="button"
|
|
24
|
-
onclick="this.dispatchEvent(new CustomEvent('increment-quantity',{bubbles:true}));"
|
|
25
|
-
{% if increase_disabled %}disabled{% endif %}
|
|
26
|
-
>
|
|
27
|
-
<svg width="14" height="14" viewBox="0 0 14 14" fill="none"><path d="M7 1v12M1 7h12" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>
|
|
28
|
-
</button>
|
|
29
|
-
<span class="ab-fixed-buy-qty-value">{{ quantity }}</span>
|
|
30
|
-
<button
|
|
31
|
-
class="ab-fixed-buy-qty-btn"
|
|
32
|
-
type="button"
|
|
33
|
-
onclick="this.dispatchEvent(new CustomEvent('decrement-quantity',{bubbles:true}));"
|
|
34
|
-
>
|
|
35
|
-
<svg width="14" height="14" viewBox="0 0 14 14" fill="none"><path d="M1 7h12" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>
|
|
36
|
-
</button>
|
|
37
|
-
</div>
|
|
38
|
-
{% endunless %}
|
|
39
|
-
|
|
40
|
-
<button
|
|
41
|
-
class="ab-fixed-buy-btn"
|
|
42
|
-
type="button"
|
|
43
|
-
{% if disabled %}disabled{% endif %}
|
|
44
|
-
onclick="event.preventDefault();this.dispatchEvent(new CustomEvent('buy-now',{bubbles:true}));"
|
|
45
|
-
>{{ buy_now_text }}</button>
|
|
46
|
-
</div>
|
|
1
|
+
<div class="ab-fixed-buy">
|
|
2
|
+
{% if thumb and thumb != "" %}
|
|
3
|
+
<div class="ab-fixed-buy-preview">
|
|
4
|
+
<img class="ab-fixed-buy-thumb" src="{{ thumb }}" alt="{{ product_name }}" />
|
|
5
|
+
<div class="ab-fixed-buy-info">
|
|
6
|
+
<span class="ab-fixed-buy-name">{{ product_name }}</span>
|
|
7
|
+
<div class="ab-fixed-buy-price-row">
|
|
8
|
+
{% if sale_price and sale_price < price %}
|
|
9
|
+
<span class="ab-fixed-buy-price-old">{{ price }} {{ currency }}</span>
|
|
10
|
+
<span class="ab-fixed-buy-price ab-fixed-buy-price-sale">{{ sale_price }} {{ currency }}</span>
|
|
11
|
+
{% else %}
|
|
12
|
+
<span class="ab-fixed-buy-price">{{ price }} {{ currency }}</span>
|
|
13
|
+
{% endif %}
|
|
14
|
+
</div>
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
17
|
+
{% endif %}
|
|
18
|
+
|
|
19
|
+
{% unless hide_quantity %}
|
|
20
|
+
<div class="ab-fixed-buy-qty">
|
|
21
|
+
<button
|
|
22
|
+
class="ab-fixed-buy-qty-btn"
|
|
23
|
+
type="button"
|
|
24
|
+
onclick="this.dispatchEvent(new CustomEvent('increment-quantity',{bubbles:true}));"
|
|
25
|
+
{% if increase_disabled %}disabled{% endif %}
|
|
26
|
+
>
|
|
27
|
+
<svg width="14" height="14" viewBox="0 0 14 14" fill="none"><path d="M7 1v12M1 7h12" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>
|
|
28
|
+
</button>
|
|
29
|
+
<span class="ab-fixed-buy-qty-value">{{ quantity }}</span>
|
|
30
|
+
<button
|
|
31
|
+
class="ab-fixed-buy-qty-btn"
|
|
32
|
+
type="button"
|
|
33
|
+
onclick="this.dispatchEvent(new CustomEvent('decrement-quantity',{bubbles:true}));"
|
|
34
|
+
>
|
|
35
|
+
<svg width="14" height="14" viewBox="0 0 14 14" fill="none"><path d="M1 7h12" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>
|
|
36
|
+
</button>
|
|
37
|
+
</div>
|
|
38
|
+
{% endunless %}
|
|
39
|
+
|
|
40
|
+
<button
|
|
41
|
+
class="ab-fixed-buy-btn"
|
|
42
|
+
type="button"
|
|
43
|
+
{% if disabled %}disabled{% endif %}
|
|
44
|
+
onclick="event.preventDefault();this.dispatchEvent(new CustomEvent('buy-now',{bubbles:true}));"
|
|
45
|
+
>{{ buy_now_text }}</button>
|
|
46
|
+
</div>
|