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,40 @@
1
+ {{ section.settings.html }}
2
+ {% schema %}
3
+ {
4
+ "name": "html",
5
+ "settings": [
6
+ {
7
+ "type": "header",
8
+ "content": "HTML"
9
+ },
10
+ {
11
+ "type": "html",
12
+ "id": "html",
13
+ "placeholder": {
14
+ "zh-CN": "请输入代码",
15
+ "en-US": "Input code"
16
+ },
17
+ "default": "<div style='height: 190px; background:#F7F7F7; color: #000; display:flex; align-items:center; flex-direction:column; justify-content:center;'> <h2 style='font-size: 24px;font-weight: 500;'>Heading</h2> <h4 style='font-size: 16px;'>body</h4> </div>"
18
+ }
19
+ ],
20
+ "presets": [
21
+ {
22
+ "name": "html",
23
+ "cname": {
24
+ "en-US": "HTML",
25
+ "zh-CN": "HTML"
26
+ },
27
+ "category": {
28
+ "en-US": "Material",
29
+ "zh-CN": "素材"
30
+ },
31
+ "ccategory": {
32
+ "en-US": "Material",
33
+ "zh-CN": "素材"
34
+ },
35
+ "display": true,
36
+ "blocks": []
37
+ }
38
+ ]
39
+ }
40
+ {% endschema %}
@@ -0,0 +1,350 @@
1
+ {% use 'image_text.css' %}
2
+ <div style="background:{{section.settings.title_bg_color}};">
3
+ <div class="{% unless section.settings.is_width_across_screen %}container container-gap{% endunless %}">
4
+ {% assign layout = section.settings.layout | default: 'left' %}
5
+ {% assign text_layout = section.settings.text_layout | default: 'left' %}
6
+ {% assign image= section.settings.image %}
7
+ {% assign link_to_url= section.settings.link_to_url %}
8
+ {% assign layout= layout %}
9
+ {% assign defaultImage = 'oss/operation/1468cb0e248c143782cd5161c2a81455.png' | img_url %}
10
+
11
+ {% capture image_layout %}
12
+ <div class="image-text__image {% if section.settings.is_width_across_screen %}image-text__image_m{% endif %}">
13
+ <a class="common__img-wrapper_lazy"
14
+ {% unless link_to_url.type != 'web' or link_to_url.url contains shop.domain %}
15
+ target="_blank"
16
+ {% endunless %}
17
+ {% if link_to_url.url != blank %}
18
+ href="{{ link_to_url.url }}"
19
+ data-track="viewImage"
20
+ data-track-url="{{ link_to_url.url }}"
21
+ {% endif %}
22
+ style="
23
+ font-size: 0;
24
+ {% if section.settings.is_width_across_screen %}
25
+ padding-bottom: 0;
26
+ {% else %}
27
+ {% if image != blank %}
28
+ padding-bottom:{{ images[image].height | image_padding_bottom : images[image].width, origin: 'unlimit' }};
29
+ {% else %}
30
+ padding-bottom:70.4%;
31
+ {% endif %}
32
+ {% endif %}
33
+ width: 100%;">
34
+ {% if image != blank %}
35
+ {% assign class = 'img-full-width' %}
36
+ {% if link_to_url.url %}
37
+ {% assign class = 'img-full-width' | append: ' common__img_hover' %}
38
+ {% endif %}
39
+ {% if section.settings.is_width_across_screen %}
40
+ {% assign class= 'img-full-width' | append: ' position-static' %}
41
+ {% endif %}
42
+ {% if section.settings.is_width_across_screen and link_to_url.url %}
43
+ {% assign class= 'img-full-width' | append: ' position-static common__img_hover' %}
44
+ {% endif %}
45
+ {% include 'lazyimg',
46
+ src: image,
47
+ style: "margin: auto;",
48
+ class: class
49
+ %}
50
+ {% else %}
51
+ <img src="{{ defaultImage }}" class="{% if section.settings.is_width_across_screen %}position-static{% endif %} "/>
52
+ {% endif %}
53
+ </a>
54
+ </div>
55
+ {% endcapture %}
56
+
57
+ <div class="{% unless section.settings.is_width_across_screen %}row{% endunless %} image-text d-flex align-items-center mb-padding">
58
+ {% if layout == "left" %}
59
+ {{ image_layout }}
60
+ {% endif %}
61
+ <div class="image-text__text image-text__text_{{layout}} text-{{text_layout}} {% if section.settings.is_width_across_screen %}px-14 flex-fill{% endif %}">
62
+ {% for block in section.blocks %}
63
+ {% if block.type == 'heading' and block.settings.title %}
64
+ <div class="image-text__title" style="color:{{block.settings.title_color}};">{{ block.settings.title | escape }}</div>
65
+ {% endif %}
66
+ {% if block.type == 'text' and block.settings.desc %}
67
+ <div class="image-text__desc dj-mce-view" style="color:{{block.settings.text_color}};">{{ block.settings.desc }}</div>
68
+ {% endif %}
69
+ {% if block.type == 'button' and block.settings.button_label and block.settings.button_link %}
70
+ <div>
71
+ <a href="{{ block.settings.button_link.url }}"
72
+ {% include 'link', link: block.settings.button_link %}
73
+ class="btn image-text__btn" style="color:{{block.settings.button_color}};border:1px solid {{block.settings.button_border_color}};background-color:{{block.settings.button_bg_color}};">
74
+ {{ block.settings.button_label | escape }}
75
+ </a>
76
+ </div>
77
+ {% endif %}
78
+ {% endfor %}
79
+ </div>
80
+ {% if layout == "right" %}
81
+ {{ image_layout }}
82
+ {% endif %}
83
+ </div>
84
+ </div>
85
+ </div>
86
+
87
+
88
+ {% schema %}
89
+ {
90
+ "name": "image_text",
91
+ "max_blocks": 3,
92
+ "settings": [
93
+ {
94
+ "type": "image_picker",
95
+ "id": "image",
96
+ "label": {
97
+ "zh-CN": "图片",
98
+ "en-US": "Image"
99
+ },
100
+ "info": {
101
+ "zh-CN": "建议尺寸(宽*长):1080*900px,高度自适应",
102
+ "en-US": "Recommended resolution (width * height):1080*900px,responsive height"
103
+ },
104
+ "default": ""
105
+ },
106
+ {
107
+ "type": "url",
108
+ "id": "link_to_url",
109
+ "label": {
110
+ "en-US": "Image link",
111
+ "zh-CN": "图片链接"
112
+ },
113
+ "is_image_link": true,
114
+ "default": ""
115
+ },
116
+ {
117
+ "type": "select",
118
+ "id": "layout",
119
+ "label": {
120
+ "zh-CN": "PC图片位置",
121
+ "en-US": "Image position on desktop"
122
+ },
123
+ "default": "left",
124
+ "options": [
125
+ {
126
+ "value": "left",
127
+ "label": {
128
+ "en-US": "Image left,text right",
129
+ "zh-CN": "左图右文"
130
+ }
131
+ },
132
+ {
133
+ "value": "right",
134
+ "label": {
135
+ "en-US": "Image right,text left",
136
+ "zh-CN": "右图左文"
137
+ }
138
+ }
139
+ ]
140
+ },
141
+ {
142
+ "type": "select",
143
+ "id": "text_layout",
144
+ "label": {
145
+ "zh-CN": "文字对齐方式",
146
+ "en-US": "Text alignment"
147
+ },
148
+ "default": "left",
149
+ "options": [
150
+ {
151
+ "value": "left",
152
+ "label": {
153
+ "zh-CN": "居左",
154
+ "en-US": "Text left"
155
+ }
156
+ },
157
+ {
158
+ "value": "right",
159
+ "label": {
160
+ "zh-CN": "居右",
161
+ "en-US": "Text right"
162
+ }
163
+ },
164
+ {
165
+ "value": "center",
166
+ "label": {
167
+ "zh-CN": "居中",
168
+ "en-US": "Text center"
169
+ }
170
+ }
171
+ ]
172
+ },
173
+ {
174
+ "type": "checkbox",
175
+ "label": {
176
+ "zh-CN": "宽度铺满屏幕",
177
+ "en-US": "Full page width"
178
+ },
179
+ "id": "is_width_across_screen",
180
+ "default": false
181
+ },
182
+ {
183
+ "type": "color",
184
+ "id": "title_bg_color",
185
+ "label": {
186
+ "en-US": "Background color",
187
+ "zh-CN": "背景颜色"
188
+ },
189
+ "default": "#FFFFFF"
190
+ }
191
+ ],
192
+ "blocks": [
193
+ {
194
+ "type": "heading",
195
+ "name": {
196
+ "zh-CN": "标题",
197
+ "en-US": "Heading"
198
+ },
199
+ "limit": 1,
200
+ "settings": [
201
+ {
202
+ "type": "text",
203
+ "id": "title",
204
+ "label": {
205
+ "en-US": "Heading",
206
+ "zh-CN": "标题"
207
+ },
208
+ "default": "Image with text"
209
+ },
210
+ {
211
+ "type": "color",
212
+ "id": "title_color",
213
+ "label": {
214
+ "zh-CN": "标题颜色",
215
+ "en-US": "Heading color"
216
+ },
217
+ "default": "#000000"
218
+ }
219
+ ]
220
+ },
221
+ {
222
+ "type": "text",
223
+ "name": {
224
+ "zh-CN": "文字",
225
+ "en-US": "Text"
226
+ },
227
+ "limit": 1,
228
+ "settings": [
229
+ {
230
+ "type": "richtext",
231
+ "id": "desc",
232
+ "label": {
233
+ "en-US": "Text",
234
+ "zh-CN": "文字"
235
+ },
236
+ "default": "<p><span>Pair large text with an image to tell a story, explain a detail about your product, or describe a new promotion.</span></p>"
237
+ },
238
+ {
239
+ "type": "color",
240
+ "id": "text_color",
241
+ "label": {
242
+ "en-US": "Text color",
243
+ "zh-CN": "文字颜色"
244
+ },
245
+ "default": "#000000"
246
+ }
247
+ ]
248
+ },
249
+ {
250
+ "type": "button",
251
+ "name": {
252
+ "zh-CN": "按钮",
253
+ "en-US": "Button"
254
+ },
255
+ "limit": 1,
256
+ "settings": [
257
+ {
258
+ "type": "text",
259
+ "id": "button_label",
260
+ "label": {
261
+ "zh-CN": "按钮文字",
262
+ "en-US": "Button text"
263
+ },
264
+ "default": "Optional button"
265
+ },
266
+ {
267
+ "type": "url",
268
+ "id": "button_link",
269
+ "label": {
270
+ "en-US": "Button link",
271
+ "zh-CN": "按钮链接"
272
+ },
273
+ "default": ""
274
+ },
275
+ {
276
+ "type": "color",
277
+ "id": "button_border_color",
278
+ "label": {
279
+ "en-US": "Button border color",
280
+ "zh-CN": "按钮边框颜色"
281
+ },
282
+ "default": "#000000"
283
+ },
284
+ {
285
+ "type": "color",
286
+ "id": "button_bg_color",
287
+ "label": {
288
+ "en-US": "Button background color",
289
+ "zh-CN": "按钮背景颜色"
290
+ },
291
+ "default": "#000000"
292
+ },
293
+ {
294
+ "type": "color",
295
+ "id": "button_color",
296
+ "label": {
297
+ "en-US": "Button text color",
298
+ "zh-CN": "按钮文案颜色"
299
+ },
300
+ "default": "#FFFFFF"
301
+ }
302
+ ]
303
+ }
304
+ ],
305
+ "presets": [
306
+ {
307
+ "name": "image_text",
308
+ "cname": {
309
+ "zh-CN": "图文",
310
+ "en-US": "Image with text"
311
+ },
312
+ "category": {
313
+ "en-US": "Material",
314
+ "zh-CN": "素材"
315
+ },
316
+ "ccategory": {
317
+ "en-US": "Material",
318
+ "zh-CN": "素材"
319
+ },
320
+ "display": true,
321
+ "blocks": [
322
+ {
323
+ "type": "heading",
324
+ "settings": {
325
+ "title": "Image with text",
326
+ "title_color": "#000000"
327
+ }
328
+ },
329
+ {
330
+ "type": "text",
331
+ "settings": {
332
+ "desc": "<p><span>Pair large text with an image to tell a story, explain a detail about your product, or describe a new promotion.</span></p>",
333
+ "text_color": "#000000"
334
+ }
335
+ },
336
+ {
337
+ "type": "button",
338
+ "settings": {
339
+ "button_label": "Optional button",
340
+ "button_link": "",
341
+ "button_border_color": "#000000",
342
+ "button_bg_color": "#000000",
343
+ "button_color": "#FFFFFF"
344
+ }
345
+ }
346
+ ]
347
+ }
348
+ ]
349
+ }
350
+ {% endschema %}