easyorders 0.1.14 → 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 (51) hide show
  1. package/README.md +93 -93
  2. package/dist/bin/cli.js +12 -5
  3. package/dist/template/theme/config.json +113 -95
  4. package/dist/template/theme/home-sections/Tilted-Scrolling-Marque/config.json +107 -0
  5. package/dist/template/theme/home-sections/Tilted-Scrolling-Marque/template.liquid +171 -0
  6. package/dist/template/theme/home-sections/category-mosaic/config.json +89 -4
  7. package/dist/template/theme/home-sections/category-mosaic/template.liquid +84 -69
  8. package/dist/template/theme/home-sections/different-hero/config.json +199 -0
  9. package/dist/template/theme/home-sections/different-hero/template.liquid +219 -0
  10. package/dist/template/theme/home-sections/editorial-feature/config.json +27 -1
  11. package/dist/template/theme/home-sections/editorial-feature/template.liquid +11 -10
  12. package/dist/template/theme/home-sections/newsletter-luxe/config.json +28 -2
  13. package/dist/template/theme/home-sections/newsletter-luxe/template.liquid +19 -13
  14. package/dist/template/theme/home-sections/runway-hero/config.json +87 -30
  15. package/dist/template/theme/home-sections/runway-hero/template.liquid +59 -29
  16. package/dist/template/theme/home-sections/shop-the-look/config.json +93 -1
  17. package/dist/template/theme/home-sections/shop-the-look/template.liquid +41 -19
  18. package/dist/template/theme/home-sections/slider-before-after/config.json +213 -0
  19. package/dist/template/theme/home-sections/slider-before-after/template.liquid +336 -0
  20. package/dist/template/theme/home-sections/test-hero-allbird/config.json +130 -0
  21. package/dist/template/theme/home-sections/test-hero-allbird/template.liquid +149 -0
  22. package/dist/template/theme/home-sections/trust-promise/config.json +76 -2
  23. package/dist/template/theme/home-sections/trust-promise/template.liquid +119 -96
  24. package/dist/template/theme/home-sections/zoom-parallax/config.json +48 -0
  25. package/dist/template/theme/home-sections/zoom-parallax/template.liquid +135 -0
  26. package/dist/template/theme/product-data-schema.json +27 -0
  27. package/dist/template/theme/schema.json +136 -151
  28. package/dist/template/theme/script.js +1095 -586
  29. package/dist/template/theme/sections/breadcrumbs.liquid +17 -17
  30. package/dist/template/theme/sections/categories.liquid +26 -10
  31. package/dist/template/theme/sections/fake-counter.liquid +27 -27
  32. package/dist/template/theme/sections/fake-stock.liquid +6 -6
  33. package/dist/template/theme/sections/fake-visitor.liquid +6 -6
  34. package/dist/template/theme/sections/featured-products.liquid +143 -110
  35. package/dist/template/theme/sections/fixed-buy-button.liquid +51 -46
  36. package/dist/template/theme/sections/footer.liquid +128 -129
  37. package/dist/template/theme/sections/gallery.liquid +65 -61
  38. package/dist/template/theme/sections/header.liquid +232 -152
  39. package/dist/template/theme/sections/home-products-grid.liquid +167 -109
  40. package/dist/template/theme/sections/list-products.liquid +136 -93
  41. package/dist/template/theme/sections/order-invoice.liquid +102 -154
  42. package/dist/template/theme/sections/product-description.liquid +40 -30
  43. package/dist/template/theme/sections/product-details.liquid +48 -63
  44. package/dist/template/theme/sections/products-grid.liquid +134 -86
  45. package/dist/template/theme/sections/related-products.liquid +152 -88
  46. package/dist/template/theme/sections/reviews.liquid +70 -55
  47. package/dist/template/theme/sections/slider.liquid +43 -43
  48. package/dist/template/theme/sections/thanks.liquid +33 -33
  49. package/dist/template/theme/style.css +5617 -3923
  50. package/dist/template/theme/theme-data.json +26 -9
  51. package/package.json +40 -40
@@ -1,129 +1,128 @@
1
-
2
- <footer class="ab-footer">
3
- <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 %}
14
- <address class="ab-footer-contact">
15
- {% if phone != "" %}
16
- <a href="tel:{{ phone }}" class="ab-footer-contact-item">
17
- <span class="ab-footer-contact-icon ab-fci-phone" aria-hidden="true"></span>
18
- <span dir="ltr">{{ phone }}</span>
19
- </a>
20
- {% endif %}
21
- {% if email != "" %}
22
- <a href="mailto:{{ email }}" class="ab-footer-contact-item">
23
- <span class="ab-footer-contact-icon ab-fci-email" aria-hidden="true"></span>
24
- {{ email }}
25
- </a>
26
- {% endif %}
27
- {% if address != "" %}
28
- <span class="ab-footer-contact-item">
29
- <span class="ab-footer-contact-icon ab-fci-address" aria-hidden="true"></span>
30
- {{ address }}
31
- </span>
32
- {% endif %}
33
- </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>
57
- {% endif %}
58
- </div>
59
-
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>
101
-
102
- {% if social.size > 0 %}
103
- <div class="ab-footer-social">
104
- <p class="ab-footer-social-label">{{ follow_label }}</p>
105
- <div class="ab-footer-social-icons">
106
- {% for item in social %}
107
- <a href="{{ item.url }}" target="_blank" rel="noreferrer" aria-label="{{ item.label }}">
108
- <span class="ab-footer-social-img" style="-webkit-mask-image:url({{ item.icon }});mask-image:url({{ item.icon }})"></span>
109
- </a>
110
- {% endfor %}
111
- </div>
112
- </div>
113
- {% endif %}
114
- </div>
115
- </div>
116
-
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 %}
123
-
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>
1
+ <footer class="ab-footer">
2
+ <div class="ab-footer-inner">
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>
70
+ <address class="ab-footer-contact">
71
+ {% if phone != "" %}
72
+ <a href="tel:{{ phone }}" class="ab-footer-contact-item">
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>
74
+ <span dir="ltr">{{ phone }}</span>
75
+ </a>
76
+ {% endif %}
77
+
78
+ {% if email != "" %}
79
+ <a href="mailto:{{ email }}" class="ab-footer-contact-item">
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>
81
+ {{ email }}
82
+ </a>
83
+ {% endif %}
84
+
85
+ {% if address != "" %}
86
+ <span class="ab-footer-contact-item">
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>
88
+ {{ address }}
89
+ </span>
90
+ {% endif %}
91
+ </address>
92
+ </details>
93
+ {% endif %}
94
+ </div>
95
+
96
+ <div class="ab-footer-social-row">
97
+
98
+
99
+ {% if social.size > 0 %}
100
+ <div class="ab-footer-social">
101
+ <p class="ab-footer-social-label">{{ follow_label }}</p>
102
+ <div class="ab-footer-social-icons">
103
+ {% for item in social %}
104
+ <a href="{{ item.url }}" target="_blank" rel="noreferrer" aria-label="{{ item.label }}">
105
+ <span class="ab-footer-social-img" style="-webkit-mask-image:url({{ item.icon }});mask-image:url({{ item.icon }})"></span>
106
+ </a>
107
+ {% endfor %}
108
+ </div>
109
+ </div>
110
+ {% endif %}
111
+ </div>
112
+
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>
126
+
127
+ </div>
128
+ </footer>
@@ -1,61 +1,65 @@
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">
28
- {% for image in images %}
29
- <button
30
- class="ab-gallery-thumb{% if image == mainImage %} ab-active{% endif %}"
31
- data-src="{{ image }}"
32
- type="button"
33
- aria-label="View image {{ forloop.index }}"
34
- >
35
- {% if image contains '.mp4' %}
36
- <video src="{{ image }}" muted playsinline preload="metadata"></video>
37
- {% else %}
38
- <img src="{{ image }}" alt="{{ product_name }}" loading="lazy" />
39
- {% endif %}
40
- </button>
41
- {% endfor %}
42
- </div>
43
- {% endif %}
44
-
45
- <div class="ab-lightbox" data-lightbox>
46
- <div class="ab-lightbox-backdrop" data-lightbox-close></div>
47
- <button class="ab-lightbox-close" data-lightbox-close aria-label="Close">&times;</button>
48
- {% if images.size > 1 %}
49
- <button class="ab-lightbox-arrow ab-lightbox-prev" data-lightbox-prev aria-label="Previous">
50
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="15 18 9 12 15 6"/></svg>
51
- </button>
52
- <button class="ab-lightbox-arrow ab-lightbox-next" data-lightbox-next aria-label="Next">
53
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="9 6 15 12 9 18"/></svg>
54
- </button>
55
- <div class="ab-lightbox-counter" data-lightbox-counter></div>
56
- {% endif %}
57
- <div class="ab-lightbox-body">
58
- <img src="" alt="" class="ab-lightbox-img" data-lightbox-img />
59
- </div>
60
- </div>
61
- </div>
1
+ <div class="ab-gallery">
2
+ {% assign gallery_main_image_id_set = false %}
3
+ <div class="ab-gallery-track" data-gallery-track>
4
+ {% for image in images %}
5
+ <div
6
+ class="ab-gallery-slide"
7
+ data-slide-index="{{ forloop.index0 }}"
8
+ data-src="{{ image }}"
9
+ >
10
+ {% if image contains '.mp4' %}
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>
21
+ {% else %}
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 %}
30
+ {% endif %}
31
+ </div>
32
+ {% endfor %}
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>
46
+ {% endif %}
47
+
48
+ <div class="ab-lightbox" data-lightbox>
49
+ <div class="ab-lightbox-backdrop" data-lightbox-close></div>
50
+ <button class="ab-lightbox-close" data-lightbox-close aria-label="Close">&times;</button>
51
+ {% if images.size > 1 %}
52
+ <button class="ab-lightbox-arrow ab-lightbox-prev" data-lightbox-prev aria-label="Previous">
53
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="15 18 9 12 15 6"/></svg>
54
+ </button>
55
+ <button class="ab-lightbox-arrow ab-lightbox-next" data-lightbox-next aria-label="Next">
56
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="9 6 15 12 9 18"/></svg>
57
+ </button>
58
+ <div class="ab-lightbox-counter" data-lightbox-counter></div>
59
+ {% endif %}
60
+ <div class="ab-lightbox-body">
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>
63
+ </div>
64
+ </div>
65
+ </div>