shoplazza-cli 0.0.1

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 (181) hide show
  1. package/.editorconfig +28 -0
  2. package/.prettierrc +9 -0
  3. package/LICENSE +21 -0
  4. package/README.md +208 -0
  5. package/bin/shoplazza +117 -0
  6. package/fixtures/assets/blog.scss +74 -0
  7. package/fixtures/assets/cart_modal.scss +450 -0
  8. package/fixtures/assets/collection_detail.js +234 -0
  9. package/fixtures/assets/collection_detail.scss +345 -0
  10. package/fixtures/assets/collection_list.scss +11 -0
  11. package/fixtures/assets/collection_slider.scss +169 -0
  12. package/fixtures/assets/feature_columns.scss +26 -0
  13. package/fixtures/assets/feature_product.scss +109 -0
  14. package/fixtures/assets/footer.js +58 -0
  15. package/fixtures/assets/footer.scss +337 -0
  16. package/fixtures/assets/four_images.scss +29 -0
  17. package/fixtures/assets/gallery.scss +55 -0
  18. package/fixtures/assets/header.js +178 -0
  19. package/fixtures/assets/header.scss +929 -0
  20. package/fixtures/assets/image_text.scss +72 -0
  21. package/fixtures/assets/logo_bar.scss +11 -0
  22. package/fixtures/assets/newsletter.scss +90 -0
  23. package/fixtures/assets/not_found.scss +39 -0
  24. package/fixtures/assets/page_detail.scss +16 -0
  25. package/fixtures/assets/pagination.scss +150 -0
  26. package/fixtures/assets/postcss.config.js +6 -0
  27. package/fixtures/assets/product_description.scss +88 -0
  28. package/fixtures/assets/product_detail.js +634 -0
  29. package/fixtures/assets/product_detail.scss +1106 -0
  30. package/fixtures/assets/relative_product.scss +45 -0
  31. package/fixtures/assets/reviews.scss +70 -0
  32. package/fixtures/assets/rich_text.scss +71 -0
  33. package/fixtures/assets/search.js +87 -0
  34. package/fixtures/assets/search.scss +67 -0
  35. package/fixtures/assets/slide.scss +51 -0
  36. package/fixtures/assets/slider.scss +141 -0
  37. package/fixtures/assets/theme.css +976 -0
  38. package/fixtures/assets/theme.scss +1100 -0
  39. package/fixtures/assets/three_images.scss +20 -0
  40. package/fixtures/assets/tools.scss +23 -0
  41. package/fixtures/assets/two_images.scss +24 -0
  42. package/fixtures/assets/video.scss +45 -0
  43. package/fixtures/assets/video_text.scss +63 -0
  44. package/fixtures/config/settings_data.json +107 -0
  45. package/fixtures/config/settings_schema.json +690 -0
  46. package/fixtures/layout/theme.liquid +76 -0
  47. package/fixtures/locales/ar-SA.json +212 -0
  48. package/fixtures/locales/de-DE.json +290 -0
  49. package/fixtures/locales/en-US.json +290 -0
  50. package/fixtures/locales/es-ES.json +290 -0
  51. package/fixtures/locales/fr-FR.json +290 -0
  52. package/fixtures/locales/id-ID.json +212 -0
  53. package/fixtures/locales/it-IT.json +212 -0
  54. package/fixtures/locales/ja-JP.json +289 -0
  55. package/fixtures/locales/ko-KR.json +290 -0
  56. package/fixtures/locales/nl-NL.json +290 -0
  57. package/fixtures/locales/pl-PL.json +290 -0
  58. package/fixtures/locales/pt-PT.json +212 -0
  59. package/fixtures/locales/ru-RU.json +212 -0
  60. package/fixtures/locales/th-TH.json +212 -0
  61. package/fixtures/locales/zh-CN.json +290 -0
  62. package/fixtures/locales/zh-TW.json +290 -0
  63. package/fixtures/sections/apps.liquid +47 -0
  64. package/fixtures/sections/blog.liquid +137 -0
  65. package/fixtures/sections/collection_desc.liquid +34 -0
  66. package/fixtures/sections/collection_detail.liquid +436 -0
  67. package/fixtures/sections/collection_image.liquid +104 -0
  68. package/fixtures/sections/collection_list.liquid +161 -0
  69. package/fixtures/sections/collection_name.liquid +34 -0
  70. package/fixtures/sections/collection_slider.liquid +330 -0
  71. package/fixtures/sections/feature_columns.liquid +275 -0
  72. package/fixtures/sections/feature_product.liquid +227 -0
  73. package/fixtures/sections/footer.liquid +488 -0
  74. package/fixtures/sections/four_images.liquid +160 -0
  75. package/fixtures/sections/gallery.liquid +258 -0
  76. package/fixtures/sections/header.liquid +1157 -0
  77. package/fixtures/sections/html.liquid +40 -0
  78. package/fixtures/sections/image_text.liquid +350 -0
  79. package/fixtures/sections/instagram_plus.liquid +393 -0
  80. package/fixtures/sections/logo_bar.liquid +183 -0
  81. package/fixtures/sections/newsletter.liquid +225 -0
  82. package/fixtures/sections/not_found.liquid +39 -0
  83. package/fixtures/sections/overlay_image.liquid +648 -0
  84. package/fixtures/sections/page_detail.liquid +39 -0
  85. package/fixtures/sections/photo_collection.liquid +433 -0
  86. package/fixtures/sections/product_description.liquid +208 -0
  87. package/fixtures/sections/product_detail.liquid +611 -0
  88. package/fixtures/sections/products.liquid +216 -0
  89. package/fixtures/sections/relative_product.liquid +121 -0
  90. package/fixtures/sections/reviews.liquid +115 -0
  91. package/fixtures/sections/rich_text.liquid +157 -0
  92. package/fixtures/sections/search.liquid +163 -0
  93. package/fixtures/sections/slide.liquid +719 -0
  94. package/fixtures/sections/three_images.liquid +157 -0
  95. package/fixtures/sections/two_images.liquid +125 -0
  96. package/fixtures/sections/video.liquid +95 -0
  97. package/fixtures/sections/video_text.liquid +128 -0
  98. package/fixtures/snippets/bgset.liquid +21 -0
  99. package/fixtures/snippets/card_title.liquid +8 -0
  100. package/fixtures/snippets/cart_modal.liquid +74 -0
  101. package/fixtures/snippets/collection.liquid +77 -0
  102. package/fixtures/snippets/collection_filter_modal.liquid +56 -0
  103. package/fixtures/snippets/default_image_4.liquid +14 -0
  104. package/fixtures/snippets/default_image_6.liquid +18 -0
  105. package/fixtures/snippets/default_image_8.liquid +23 -0
  106. package/fixtures/snippets/four_images_item.liquid +8 -0
  107. package/fixtures/snippets/header_ads.liquid +95 -0
  108. package/fixtures/snippets/hero_image.liquid +94 -0
  109. package/fixtures/snippets/icon_video_play_large.liquid +1 -0
  110. package/fixtures/snippets/icon_video_play_medium.liquid +4 -0
  111. package/fixtures/snippets/icon_video_play_small.liquid +4 -0
  112. package/fixtures/snippets/lazyimg.liquid +22 -0
  113. package/fixtures/snippets/lazyimg_art.liquid +36 -0
  114. package/fixtures/snippets/lazysizes.liquid +41 -0
  115. package/fixtures/snippets/link.liquid +2 -0
  116. package/fixtures/snippets/pagination.liquid +48 -0
  117. package/fixtures/snippets/product.liquid +126 -0
  118. package/fixtures/snippets/product_art_tpl.liquid +152 -0
  119. package/fixtures/snippets/product_info_body.liquid +337 -0
  120. package/fixtures/snippets/product_info_tpl.liquid +423 -0
  121. package/fixtures/snippets/product_label.liquid +46 -0
  122. package/fixtures/snippets/settings.liquid +295 -0
  123. package/fixtures/snippets/social-meta-tags.liquid +106 -0
  124. package/fixtures/snippets/video_html.liquid +11 -0
  125. package/fixtures/snippets/video_source.liquid +98 -0
  126. package/fixtures/snippets/video_thumb_icon.liquid +2 -0
  127. package/fixtures/templates/404.liquid +1 -0
  128. package/fixtures/templates/collection.liquid +92 -0
  129. package/fixtures/templates/index.liquid +206 -0
  130. package/fixtures/templates/page.liquid +1 -0
  131. package/fixtures/templates/product.liquid +99 -0
  132. package/fixtures/templates/search.liquid +1 -0
  133. package/jest.config.js +192 -0
  134. package/lib/__tests__/log.test.js +15 -0
  135. package/lib/__tests__/utils.test.js +69 -0
  136. package/lib/auth/__mocks__/getCode.js +7 -0
  137. package/lib/auth/__mocks__/index.js +0 -0
  138. package/lib/auth/child.js +23 -0
  139. package/lib/auth/getCode.js +35 -0
  140. package/lib/auth/index.js +91 -0
  141. package/lib/commands/__tests__/login.test.js +77 -0
  142. package/lib/commands/__tests__/logout.test.js +29 -0
  143. package/lib/commands/__tests__/store.test.js +44 -0
  144. package/lib/commands/__tests__/switch.test.js +45 -0
  145. package/lib/commands/login.js +99 -0
  146. package/lib/commands/logout.js +14 -0
  147. package/lib/commands/store.js +14 -0
  148. package/lib/commands/switch.js +52 -0
  149. package/lib/commands/theme/__tests__/delete.test.js +49 -0
  150. package/lib/commands/theme/__tests__/init.test.js +21 -0
  151. package/lib/commands/theme/__tests__/list.test.js +80 -0
  152. package/lib/commands/theme/__tests__/package.test.js +17 -0
  153. package/lib/commands/theme/__tests__/publish.test.js +61 -0
  154. package/lib/commands/theme/__tests__/pull.test.js +69 -0
  155. package/lib/commands/theme/__tests__/push.test.js +63 -0
  156. package/lib/commands/theme/__tests__/serve.test.js +107 -0
  157. package/lib/commands/theme/delete.js +64 -0
  158. package/lib/commands/theme/init.js +51 -0
  159. package/lib/commands/theme/list.js +28 -0
  160. package/lib/commands/theme/package.js +37 -0
  161. package/lib/commands/theme/publish.js +56 -0
  162. package/lib/commands/theme/pull.js +62 -0
  163. package/lib/commands/theme/push.js +106 -0
  164. package/lib/commands/theme/serve.js +153 -0
  165. package/lib/commands/theme/share.js +20 -0
  166. package/lib/commands/version.js +6 -0
  167. package/lib/config.js +5 -0
  168. package/lib/db/__mocks__/index.js +9 -0
  169. package/lib/db/__tests__/analytics.test.js +19 -0
  170. package/lib/db/__tests__/user.test.js +20 -0
  171. package/lib/db/analytics.js +48 -0
  172. package/lib/db/index.js +9 -0
  173. package/lib/db/user.js +68 -0
  174. package/lib/log.js +13 -0
  175. package/lib/openAPI/__mocks__/index.js +20 -0
  176. package/lib/openAPI/api.js +76 -0
  177. package/lib/openAPI/index.js +46 -0
  178. package/lib/report.js +37 -0
  179. package/lib/tracing.js +50 -0
  180. package/lib/utils.js +48 -0
  181. package/package.json +54 -0
@@ -0,0 +1,225 @@
1
+ {% use 'newsletter.css' %}
2
+ <div class="container container-gap">
3
+ <div class="row">
4
+ <div class="col-sm-12">
5
+ <div id="newsletter" class="newsletter text-center">
6
+ <div class="newsletter_subscribing">
7
+ {% for block in section.blocks %}
8
+ {% if block.type == 'heading' and block.settings.title %}
9
+ <div class="newsletter__title dj_skin_title_font">{{ block.settings.title }}</div>
10
+ {% endif %}
11
+ {% if block.type == 'sub_heading' and block.settings.sub_title %}
12
+ <div class="newsletter__title_sub dj_skin_text">{{ block.settings.sub_title }}</div>
13
+ {% endif %}
14
+ {% if block.type == 'form' and block.settings.btn_title %}
15
+ <div class="newsletter__form">
16
+ <div class="form-row mx-auto">
17
+ <div class="col-sm-12 col-md-8 newsletter__input-wrap">
18
+ <input id="input_email" type="email" class=" newsletter__input form-control" placeholder="{{ 'i18n.general.newsletter_form.email_placeholder' | t }}">
19
+ <div class="text-left invalid-feedback"></div>
20
+ </div>
21
+ <div class="col-sm-12 col-md-4 newsletter__btn-wrap">
22
+ <input type="button" class="submit_newsletter dj_skin_title_font newsletter__btn btn btn-primary" type="submit" value="{{ block.settings.btn_title }}">
23
+ </div>
24
+ </div>
25
+ </div>
26
+ {% endif %}
27
+ {% endfor %}
28
+ </div>
29
+ <div class="newsletter_subscribed">
30
+ {% for block in section.blocks %}
31
+ {% if block.type == 'heading' and block.settings.title_thanks != '' %}
32
+ <div class="newsletter__title dj_skin_title_font">{{ block.settings.title_thanks }}</div>
33
+ {% endif %}
34
+ {% if block.type == 'sub_heading' and block.settings.sub_title_thanks != '' %}
35
+ <div class="newsletter__title_sub dj_skin_text">{{ block.settings.sub_title_thanks }}</div>
36
+ {% endif %}
37
+ {% endfor %}
38
+ </div>
39
+ </div>
40
+ </div>
41
+ </div>
42
+ </div>
43
+
44
+
45
+ {% javascript %}
46
+
47
+ $(function () {
48
+ var lan = {{ 'i18n.general.newsletter_form' | t | json }};
49
+ $("[data-section-type='newsletter']")
50
+ .on('click', '.submit_newsletter', function(e) {
51
+ var emailExp = /^([A-Za-z0-9_\-.])+@([A-Za-z0-9_\-.])+\.([A-Za-z]{2,4})$/g;
52
+ var newsletterObj = $(this).parents('.newsletter');
53
+ var emailObj = newsletterObj.find('input[type=email]');
54
+ var email = emailObj.val();
55
+ var invalidFeedback = newsletterObj.find('.invalid-feedback');
56
+ var feedbacks = {
57
+ is_empty: lan.email_address_empty_warning,
58
+ not_formatted: lan.email_address_invalid_warning
59
+ };
60
+
61
+ emailObj.removeClass('is-valid is-invalid');
62
+ invalidFeedback.html("");
63
+
64
+ if (email === '') {
65
+ invalidFeedback.html(feedbacks['is_empty']);
66
+ emailObj.addClass('is-invalid');
67
+ return;
68
+ }
69
+ if (!emailExp.test(email)) {
70
+ invalidFeedback.html(feedbacks['not_formatted']);
71
+ emailObj.addClass('is-invalid');
72
+ return;
73
+ }
74
+ $.ajax({
75
+ url: '/api/customers/newsletters',
76
+ type: 'post',
77
+ dataType: 'text',
78
+ data: {
79
+ email: email
80
+ },
81
+ success: function(data, textStatus, jqXHR) {
82
+ if (jqXHR.status === 200) {
83
+ emailObj.addClass('is-valid');
84
+ newsletterObj.addClass('newsletter_success');
85
+ }
86
+ },
87
+ error: function(jqXHR) {
88
+ emailObj.addClass('is-invalid');
89
+ newsletterObj.removeClass('newsletter_success');
90
+ invalidFeedback.html(JSON.parse(jqXHR.responseText).errors);
91
+ }
92
+ });
93
+ })
94
+ .on('keyup', '#input_email', function(e) {
95
+ if (e.keyCode === 13) {
96
+ $('[data-section-id="{{section.id}}"] .submit_newsletter').trigger('click');
97
+ }
98
+ });
99
+ })
100
+ {% endjavascript %}
101
+
102
+ {% schema %}
103
+ {
104
+ "name": "newsletter",
105
+ "max_blocks": 3,
106
+ "settings": [],
107
+ "blocks": [
108
+ {
109
+ "type": "heading",
110
+ "name": {
111
+ "zh-CN": "标题",
112
+ "en-US": "Heading"
113
+ },
114
+ "limit": 1,
115
+ "settings": [
116
+ {
117
+ "type": "text",
118
+ "id": "title",
119
+ "label": {
120
+ "en-US": "Heading",
121
+ "zh-CN": "标题"
122
+ },
123
+ "default": "Sign up for our newsletter"
124
+ },
125
+ {
126
+ "type": "text",
127
+ "id": "title_thanks",
128
+ "label": {
129
+ "zh-CN": "感谢订阅标题",
130
+ "en-US": "Heading"
131
+ },
132
+ "default": "Thanks for Subscribing!"
133
+ }
134
+ ]
135
+ },
136
+ {
137
+ "type": "sub_heading",
138
+ "name": {
139
+ "zh-CN": "副标题",
140
+ "en-US": "Subheading"
141
+ },
142
+ "limit": 1,
143
+ "settings": [
144
+ {
145
+ "type": "text",
146
+ "id": "sub_title",
147
+ "label": {
148
+ "en-US": "Subheading",
149
+ "zh-CN": "副标题"
150
+ },
151
+ "default": "Never miss a new season"
152
+ },
153
+ {
154
+ "type": "text",
155
+ "id": "sub_title_thanks",
156
+ "label": {
157
+ "zh-CN": "感谢订阅副标题",
158
+ "en-US": "Subheading"
159
+ },
160
+ "default": "We will send news to your email."
161
+ }
162
+ ]
163
+ },
164
+ {
165
+ "type": "form",
166
+ "name": {
167
+ "zh-CN": "表单",
168
+ "en-US": "Email form"
169
+ },
170
+ "limit": 1,
171
+ "settings": [
172
+ {
173
+ "type": "text",
174
+ "id": "btn_title",
175
+ "label": {
176
+ "en-US": "Subscribe button",
177
+ "zh-CN": "订阅按钮"
178
+ },
179
+ "default": "Subscribe"
180
+ }
181
+ ]
182
+ }
183
+ ],
184
+ "presets": [
185
+ {
186
+ "name": "newsletter",
187
+ "cname": {
188
+ "zh-CN": "邮件订阅",
189
+ "en-US": "Newsletter"
190
+ },
191
+ "category": {
192
+ "en-US": "Marketing",
193
+ "zh-CN": "营销"
194
+ },
195
+ "ccategory": {
196
+ "en-US": "Marketing",
197
+ "zh-CN": "营销"
198
+ },
199
+ "display": true,
200
+ "blocks": [
201
+ {
202
+ "type": "heading",
203
+ "settings": {
204
+ "title": "Sign up for our newsletter",
205
+ "title_thanks": "Thanks for Subscribing!"
206
+ }
207
+ },
208
+ {
209
+ "type": "sub_heading",
210
+ "settings": {
211
+ "sub_title": "Never miss a new season",
212
+ "sub_title_thanks": "We will send news to your email."
213
+ }
214
+ },
215
+ {
216
+ "type": "form",
217
+ "settings": {
218
+ "btn_title": "Subscribe"
219
+ }
220
+ }
221
+ ]
222
+ }
223
+ ]
224
+ }
225
+ {% endschema %}
@@ -0,0 +1,39 @@
1
+ <div class="container not-found container-empty-gap">
2
+ <div class="row">
3
+ <div class="col-12 d-flex flex-column justify-content-center align-items-center text-center">
4
+ <span class="not-found__title dj_skin_title_font_family">{{ 'i18n.general.404.title' | t }}</span>
5
+ <span class="not-found__text ">{{ 'i18n.general.404.tips' | t }}</span>
6
+ <a href="/" class="btn btn-primary dj_skin_title_font not-found__btn">{{ 'i18n.general.404.continue_shopping' | t }}</a>
7
+ </div>
8
+ </div>
9
+ </div>
10
+
11
+ {% use 'not_found.css' %}
12
+
13
+
14
+ {% schema %}
15
+ {
16
+ "name": "not_found",
17
+ "templates": ["404"],
18
+ "limit": 1,
19
+ "settings": [],
20
+ "presets": [
21
+ {
22
+ "name": "not_found",
23
+ "cname": {
24
+ "en-US": "404 page",
25
+ "zh-CN": "404页面"
26
+ },
27
+ "category": {
28
+ "zh-CN": "基础",
29
+ "en-US": "Basic"
30
+ },
31
+ "ccategory": {
32
+ "zh-CN": "基础",
33
+ "en-US": "Basic"
34
+ },
35
+ "display": true
36
+ }
37
+ ]
38
+ }
39
+ {% endschema %}