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,1106 @@
1
+ @import './tools.scss';
2
+
3
+ @keyframes fadeinout {
4
+ 0% {
5
+ background-color: #f1f1f1;
6
+ }
7
+ 50% {
8
+ background-color: #e2e2e2;
9
+ }
10
+ 100% {
11
+ background-color: #f1f1f1;
12
+ }
13
+ }
14
+
15
+ /* product detail starts */
16
+ .disabled {
17
+ background-color: #efefef;
18
+ cursor: not-allowed;
19
+ }
20
+
21
+ .btn-border {
22
+ border: 1px solid #e2e2e2;
23
+ }
24
+
25
+ @media ($pc) {
26
+ .product-detail {
27
+ .sep-loaded-slider__button {
28
+ opacity: 1;
29
+ color: #fff;
30
+ background-color: rgba(0, 0, 0, 0.6);
31
+ &:hover {
32
+ background-color: rgba(0, 0, 0, 0.8);
33
+ }
34
+ }
35
+ .sep-loaded-slider__button-prev {
36
+ border-radius: 0 50% 50% 0;
37
+ transform: translateX(-16px);
38
+ text-align: right;
39
+ padding-right: 14px;
40
+ }
41
+ .sep-loaded-slider__button-next {
42
+ border-radius: 50% 0 0 50%;
43
+ padding-left: 14px;
44
+ text-align: left;
45
+ transform: translateX(16px);
46
+ }
47
+ }
48
+ }
49
+
50
+ @media ($mobile) {
51
+ .product-detail {
52
+ padding-top: 0;
53
+ padding-bottom: 0;
54
+ }
55
+ }
56
+
57
+ .product-image {
58
+ position: relative;
59
+ width: 100%;
60
+ padding: 0;
61
+ overflow: hidden;
62
+
63
+ .hidden {
64
+ opacity: 0;
65
+ }
66
+
67
+ .swiper-slide {
68
+ position: relative;
69
+ cursor: pointer;
70
+ }
71
+
72
+ &__swiper {
73
+ position: relative;
74
+ overflow: hidden;
75
+
76
+ &_bullets {
77
+ display: block;
78
+ position: absolute;
79
+ bottom: px-to-rem(15);
80
+ left: 50%;
81
+ transform: translateX(-50%);
82
+ font-size: px-to-rem(14);
83
+ color: #fff;
84
+ background: rgba(0, 0, 0, 0.5);
85
+ height: px-to-rem(22);
86
+ line-height: px-to-rem(22);
87
+ padding: 0 px-to-rem(10);
88
+ z-index: 1;
89
+ border-radius: px-to-rem(11);
90
+ }
91
+
92
+ &_img {
93
+ width: 100%;
94
+ position: absolute;
95
+ height: 100%;
96
+ }
97
+ &_img.loading_bg {
98
+ background-color: #f1f1f1;
99
+ animation-name: fadeinout;
100
+ animation-duration: 4s;
101
+ animation-iteration-count: infinite;
102
+ }
103
+
104
+ &-wrapper {
105
+ align-items: center;
106
+ }
107
+
108
+ &_btn {
109
+ display: none;
110
+ }
111
+ }
112
+
113
+ &__thumbs {
114
+ display: none;
115
+ }
116
+
117
+ .slick-slide > div {
118
+ font-size: 0;
119
+ letter-spacing: -3px;
120
+ }
121
+ .product-image__thumbs-item {
122
+ width: 70px !important;
123
+ height: 70px !important;
124
+ display: inline-block;
125
+ margin: 0 5px;
126
+ flex: 0 0 auto;
127
+ cursor: pointer;
128
+ img {
129
+ position: absolute;
130
+ top: 0;
131
+ left: 0;
132
+ bottom: 0;
133
+ right: 0;
134
+ max-width: 100%;
135
+ max-height: 100%;
136
+ margin: auto;
137
+ }
138
+ /* 加载过程背景色占位 */
139
+ img.lazyload:not(.lazyloaded) {
140
+ width: 100%;
141
+ height: 100%;
142
+ animation-name: fadeinout;
143
+ animation-duration: 4s;
144
+ animation-iteration-count: infinite;
145
+ }
146
+ }
147
+ }
148
+
149
+ .product-info {
150
+ padding: px-to-rem(22.5) px-to-rem(15);
151
+
152
+ &__header {
153
+ color: $black;
154
+ // border-bottom: 1px solid #ddd;
155
+
156
+ &_title {
157
+ font-size: px-to-rem(20);
158
+ font-weight: 500;
159
+ margin-bottom: px-to-rem(12);
160
+
161
+ @media ($mobile) {
162
+ &-more-hide {
163
+ overflow: hidden;
164
+ white-space: nowrap;
165
+ text-overflow: ellipsis;
166
+ }
167
+
168
+ &-hide {
169
+ display: none;
170
+ }
171
+ }
172
+ @media ($pc) {
173
+ font-size: px-to-rem(26);
174
+ }
175
+ }
176
+
177
+ &_brief {
178
+ color: #666;
179
+ line-height: 1.5;
180
+ font-size: px-to-rem(16);
181
+ margin-bottom: px-to-rem(25);
182
+ @media ($pc) {
183
+ font-size: px-to-rem(14);
184
+ }
185
+ }
186
+
187
+ &_price {
188
+ color: $black;
189
+ font-size: px-to-rem(17);
190
+
191
+ @media ($pc) {
192
+ font-size: px-to-rem(22);
193
+ }
194
+ }
195
+
196
+ &_off-ratio {
197
+ color: $black;
198
+ font-size: px-to-rem(17);
199
+ position: relative;
200
+ padding-left: px-to-rem(10);
201
+ padding-right: px-to-rem(5);
202
+
203
+ @media ($pc) {
204
+ font-size: px-to-rem(22);
205
+ }
206
+
207
+ &::before {
208
+ content: '';
209
+ display: block;
210
+ position: absolute;
211
+ height: px-to-rem(16);
212
+ width: 2px;
213
+ background: #000;
214
+ left: -1px;
215
+ top: 50%;
216
+ margin-top: px-to-rem(-8);
217
+ }
218
+ }
219
+
220
+ &_compare-at-price {
221
+ font-size: px-to-rem(14);
222
+ color: #999;
223
+ text-decoration: line-through;
224
+
225
+ @media ($pc) {
226
+ font-size: px-to-rem(16);
227
+ }
228
+ }
229
+
230
+ &_sales {
231
+ font-size: px-to-rem(14);
232
+ color: #999;
233
+ }
234
+
235
+ &_price-wrapper {
236
+ display: flex;
237
+ flex-wrap: nowrap;
238
+ flex-direction: row;
239
+ justify-content: space-between;
240
+ align-items: center;
241
+ padding-bottom: px-to-rem(15);
242
+
243
+ &-left {
244
+ display: flex;
245
+ flex-wrap: wrap;
246
+ align-items: center;
247
+
248
+ span {
249
+ margin-right: px-to-rem(10);
250
+
251
+ &:last-of-type {
252
+ margin-right: 0;
253
+ }
254
+ }
255
+ }
256
+ }
257
+ }
258
+
259
+ &__variants {
260
+ margin-top: px-to-rem(35);
261
+
262
+ &_title {
263
+ font-size: px-to-rem(16);
264
+ font-weight: 500;
265
+ color: #2a2a2a;
266
+ line-height: px-to-rem(17);
267
+ }
268
+
269
+ &_size-guide {
270
+ color: #666;
271
+ font-size: px-to-rem(14);
272
+ text-decoration: underline;
273
+ float: right;
274
+ cursor: pointer;
275
+ }
276
+
277
+ &_items {
278
+ margin-bottom: px-to-rem(16);
279
+ select {
280
+ -webkit-appearance: none;
281
+ -moz-appearance: none;
282
+ appearance: none;
283
+ background-position: right center;
284
+ background-image: url(//static.staticdj.com/themes/ico-select.svg);
285
+ background-repeat: no-repeat;
286
+ background-position: right 10px center;
287
+ background-color: transparent;
288
+ background-size: 11px;
289
+ display: inline-block;
290
+ vertical-align: middle;
291
+ padding: 8px 10px;
292
+ padding-right: 28px;
293
+ width: 100%;
294
+ cursor: pointer;
295
+ outline: none;
296
+ border: 1px solid #bfbfbf;
297
+ max-width: 100%;
298
+ border-radius: 0;
299
+ margin-top: 10px;
300
+ }
301
+ }
302
+
303
+ &_value {
304
+ // min-height: px-to-rem(37);
305
+ word-break: break-word;
306
+ line-height: px-to-rem(28);
307
+ min-width: px-to-rem(40);
308
+ font-size: px-to-rem(13);
309
+ margin-right: px-to-rem(10);
310
+ margin-bottom: 0;
311
+ position: relative;
312
+ color: #2a2a2a;
313
+ padding: 0;
314
+ margin-top: px-to-rem(10);
315
+
316
+ &_color {
317
+ line-height: 0;
318
+ width: 40px;
319
+ height: 40px;
320
+ display: inline-flex;
321
+ align-items: center;
322
+ justify-content: center;
323
+
324
+ & label {
325
+ width: 32px !important;
326
+ height: 32px !important;
327
+ border-radius: 50%;
328
+ border: 2px solid #e2e2e2;
329
+ padding: 0 !important;
330
+ }
331
+
332
+ & input:disabled ~ label {
333
+ cursor: not-allowed;
334
+ }
335
+ }
336
+
337
+ & label {
338
+ cursor: inherit;
339
+ width: 100%;
340
+ padding: 0 1.25rem;
341
+ border: 2px solid #e2e2e2;
342
+ }
343
+
344
+ & input:disabled ~ label {
345
+ @extend .disabled;
346
+ }
347
+
348
+ &.active {
349
+ font-weight: 500;
350
+ }
351
+
352
+ }
353
+
354
+ &_value-wrapper {
355
+ font-size: 0;
356
+ margin-right: -10px;
357
+ }
358
+ }
359
+
360
+ &__qty {
361
+ font-size: 0;
362
+
363
+ &-dropdown {
364
+ border: 1px solid #bfbfbf;
365
+ display: flex;
366
+ justify-content: space-between;
367
+ border-radius: 4px;
368
+ & button,
369
+ & input {
370
+ border: none;
371
+ height: 40px;
372
+ }
373
+ & button {
374
+ border-radius: 4px 0 0 4px;
375
+ width: 60px;
376
+ }
377
+ & input {
378
+ flex-grow: 1;
379
+ }
380
+ }
381
+
382
+ &_title {
383
+ font-size: px-to-rem(16);
384
+ font-weight: 500;
385
+ color: #2a2a2a;
386
+ margin-bottom: px-to-rem(10);
387
+ }
388
+
389
+ &_stock {
390
+ font-weight: 400;
391
+ color: #999;
392
+ }
393
+
394
+ &_btn {
395
+ @extend .btn-border;
396
+
397
+ width: px-to-rem(32);
398
+ height: px-to-rem(32);
399
+ text-align: center;
400
+ padding: 0;
401
+ font-size: px-to-rem(16);
402
+
403
+ &:disabled {
404
+ @extend .disabled;
405
+ }
406
+ }
407
+
408
+ &_num {
409
+ @extend .btn-border;
410
+
411
+ display: inline-block;
412
+ width: px-to-rem(40);
413
+ height: px-to-rem(32);
414
+ font-size: px-to-rem(13);
415
+ margin: 0 px-to-rem(10);
416
+ text-align: center;
417
+ padding: 0;
418
+ box-shadow: none;
419
+ vertical-align: middle;
420
+
421
+ &:disabled {
422
+ @extend .disabled;
423
+ }
424
+ }
425
+ }
426
+
427
+ &__btn {
428
+ margin-top: px-to-rem(28);
429
+
430
+ button {
431
+ width: 100%;
432
+ margin-bottom: px-to-rem(15);
433
+ height: px-to-rem(44);
434
+ font-size: px-to-rem(15);
435
+
436
+ @media ($pc) {
437
+ height: px-to-rem(50);
438
+ }
439
+ }
440
+ }
441
+
442
+ &__url {
443
+ margin-top: px-to-rem(23);
444
+ font-size: px-to-rem(14);
445
+
446
+ > a {
447
+ color: #000;
448
+ text-decoration: underline;
449
+ }
450
+ }
451
+
452
+ &__additional {
453
+ margin: 15px 0;
454
+ }
455
+ }
456
+
457
+ .product-info__variants_radio:checked ~ label[data-iscolor] {
458
+ box-shadow: 0px 0px 0px 2px var(--skin_primary_btn_bg_color);
459
+ border: 2px solid var(--skin_bg);
460
+ }
461
+
462
+ .product-info__variants_radio:checked ~ label:not([data-iscolor]) {
463
+ border: 2px solid var(--skin_primary_btn_bg_color) !important;
464
+ &:before {
465
+ content: '';
466
+ position: absolute;
467
+ width: 10px;
468
+ height: 6px;
469
+ background: transparent;
470
+ bottom: 4px;
471
+ right: 2px;
472
+ border: 2px solid var(--skin_primary_btn_text_color);
473
+ border-top: none;
474
+ border-right: none;
475
+ -webkit-transform: rotate(-55deg);
476
+ -ms-transform: rotate(-55deg);
477
+ transform: rotate(-55deg);
478
+ z-index: 9;
479
+ }
480
+ &:after {
481
+ content: '';
482
+ width: 0px;
483
+ height: 0px;
484
+ border: 10px solid transparent;
485
+ border-bottom: 10px solid var(--skin_primary_btn_bg_color);
486
+ border-right: 10px solid var(--skin_primary_btn_bg_color);
487
+ position: absolute;
488
+ bottom: 0;
489
+ right: 0;
490
+ }
491
+ }
492
+
493
+ .product-info__desc-wrap {
494
+ width: 100%;
495
+ border-bottom: 1px solid rgba(230,230,230,0.6);
496
+
497
+ & .product-info__desc-icon{
498
+ transition-duration: 300ms;
499
+ }
500
+ &.is-open .product-info__desc-icon {
501
+ transform: scale(1.2) rotate(-180deg);
502
+ }
503
+ }
504
+
505
+ .product-info__desc-text{
506
+ flex: 1;
507
+ font-weight: 600;
508
+ }
509
+
510
+ .product-info__desc-tab-header {
511
+ display: flex;
512
+ align-items: center;
513
+ padding: 17px 0px;
514
+ font-size: 16px;
515
+ cursor: pointer;
516
+ margin-bottom: 0px;
517
+ }
518
+
519
+ .product-info__desc-content {
520
+ overflow: hidden;
521
+ padding-top: 8px;
522
+ padding-bottom: 24px;
523
+ }
524
+
525
+ .hide-scrollbar::-webkit-scrollbar,.hide-scrollbar ::-webkit-scrollbar {
526
+ display:none;
527
+ }
528
+ .hide-scrollbar {
529
+ -ms-overflow-style: none;
530
+ scrollbar-width: none;
531
+ }
532
+ .product-info__desc-tab {
533
+ padding-top: 20px;
534
+
535
+ &-cb {
536
+ display: none;
537
+ }
538
+ }
539
+
540
+ @media ($pc){
541
+ .product-info__desc-tab {
542
+ padding-top: 40px;
543
+ }
544
+ .product-info__desc-tab-header {
545
+ padding: 17px 16px;
546
+
547
+ &:hover {
548
+ background: rgba(230,230,230,0.35);
549
+ }
550
+ i {
551
+ display: flex;
552
+ align-items: center;
553
+ }
554
+ }
555
+
556
+ .product-info__desc-text{
557
+ letter-spacing: 0.3px;
558
+ }
559
+
560
+ .product-info__desc-content {
561
+ padding: 12px 12px 40px 16px;
562
+ }
563
+ }
564
+
565
+ @media ($mobile) {
566
+ .product-info__desc-wrap .product-info__desc-tab-header:active {
567
+ background: rgba(230,230,230,0.35);
568
+ margin: 0 -16px;
569
+ padding-right: 16px;
570
+ padding-left: 16px;
571
+ }
572
+ }
573
+
574
+ @media ($pc) {
575
+ .product-image {
576
+ &__swiper {
577
+ &_btn.sep-font {
578
+ width: px-to-rem(50);
579
+ height: px-to-rem(50);
580
+ text-align: center;
581
+ line-height: px-to-rem(50);
582
+ font-size: 12px;
583
+ color: $black;
584
+ cursor: pointer;
585
+ font-weight: 600;
586
+ display: none;
587
+ background-color: #fff;
588
+ opacity: 0.5;
589
+
590
+ &.swiper-button-disabled {
591
+ background-color: #d6d6d6;
592
+ }
593
+
594
+ &.swiper-button-prev {
595
+ outline: none;
596
+ background-image: unset !important;
597
+ left: 0;
598
+ }
599
+
600
+ &.swiper-button-next {
601
+ outline: none;
602
+ background-image: unset !important;
603
+ right: 0;
604
+ }
605
+
606
+ &:hover {
607
+ color: #fff;
608
+ background: #4b4b4b;
609
+ opacity: 1;
610
+ }
611
+ }
612
+
613
+ &_bullets {
614
+ display: none;
615
+ }
616
+
617
+ &:hover {
618
+ .product-image__swiper_btn {
619
+ display: block;
620
+
621
+ &.swiper-button-disabled {
622
+ display: none;
623
+ }
624
+ }
625
+ }
626
+ }
627
+
628
+ &__thumbs {
629
+ margin-top: px-to-rem(15);
630
+ display: block;
631
+ position: relative;
632
+ padding: 0 px-to-rem(35);
633
+
634
+ &-content {
635
+ display: flex;
636
+ flex-wrap: nowrap;
637
+ overflow: hidden;
638
+ }
639
+ .slick-slide {
640
+ border: 1px solid transparent;
641
+ }
642
+ .slick-current {
643
+ border-color: #000;
644
+ }
645
+
646
+ &_list {
647
+ &.swiper-wrapper {
648
+ white-space: nowrap;
649
+ overflow: hidden;
650
+ font-size: 0;
651
+
652
+ .swiper-slide {
653
+ position: relative;
654
+ width: 100%;
655
+ height: 100%;
656
+
657
+ img {
658
+ max-width: 100%;
659
+ max-height: 100%;
660
+ position: absolute;
661
+ top: 50%;
662
+ left: 50%;
663
+ transform: translate(-50%, -50%);
664
+ }
665
+ }
666
+
667
+ .pagination-item {
668
+ width: px-to-rem(70);
669
+ height: px-to-rem(70);
670
+ display: inline-block;
671
+ border-radius: 0;
672
+ margin: 0 5px;
673
+ border: 1px solid transparent;
674
+ cursor: pointer;
675
+
676
+ &.swiper-pagination-bullet {
677
+ margin: 0;
678
+ }
679
+
680
+ &.swiper-pagination-bullet-active {
681
+ border: 1px solid #000;
682
+ }
683
+
684
+ img {
685
+ border: 1px solid rgba(1, 1, 1, 0);
686
+ max-width: 100%;
687
+ max-height: 100%;
688
+ }
689
+ }
690
+ }
691
+ }
692
+
693
+ &_btn {
694
+ &.sep-font {
695
+ width: px-to-rem(20);
696
+ top: 50%;
697
+ margin-top: px-to-rem(-25);
698
+ outline: 0;
699
+ height: px-to-rem(50);
700
+ text-align: center;
701
+ line-height: px-to-rem(50);
702
+ background: #212121;
703
+ color: #fff;
704
+ cursor: pointer;
705
+ opacity: 1;
706
+ z-index: 1;
707
+ position: absolute;
708
+ }
709
+
710
+ &.slick-disabled {
711
+ background-color: #d6d6d6;
712
+ pointer-events: none;
713
+ }
714
+
715
+ &:hover {
716
+ background: #000;
717
+ opacity: 0.7;
718
+ }
719
+
720
+ &:active {
721
+ background: #000;
722
+ opacity: 1;
723
+ }
724
+
725
+ &.swiper-button-prev {
726
+ left: 0;
727
+ outline: none;
728
+ }
729
+
730
+ &.swiper-button-next {
731
+ right: 0;
732
+ outline: none;
733
+ background-image: unset !important;
734
+ }
735
+ }
736
+ }
737
+ }
738
+
739
+ html[dir='rtl'] .product-image__thumbs_list.swiper-wrapper .pagination-item {
740
+ margin: 0 0 0 px-to-rem(10);
741
+ }
742
+
743
+ .product-info {
744
+ padding-top: 0;
745
+ padding-left: px-to-rem(42);
746
+
747
+ &__btn {
748
+ display: flex;
749
+ justify-content: space-between;
750
+ clear: both;
751
+
752
+ &_2 .btn {
753
+ width: 48%;
754
+ }
755
+ }
756
+ }
757
+ }
758
+
759
+ /* quick view modal */
760
+ .product-select-modal {
761
+ display: flex;
762
+ flex-wrap: nowrap;
763
+ padding: 40px 30px;
764
+ box-shadow: 0px 0px 9px 0px #737373;
765
+
766
+ .product-detail {
767
+ width: 815px;
768
+ padding: 0;
769
+
770
+ > .row {
771
+ margin: 0;
772
+ }
773
+ }
774
+
775
+ @media ($pc) {
776
+ .product-detail {
777
+ width: 815px;
778
+ padding: 0;
779
+
780
+ > .row {
781
+ margin: 0;
782
+ }
783
+ }
784
+ }
785
+
786
+ .product-info {
787
+ width: 45%;
788
+ flex: 0 0 auto;
789
+ padding: 0 0 0 px-to-rem(24);
790
+
791
+ &__variants_value {
792
+ min-height: 26px;
793
+ line-height: 24px;
794
+ }
795
+
796
+ &__qty_btn {
797
+ width: px-to-rem(24);
798
+ }
799
+ }
800
+
801
+ .product-image {
802
+ width: 55%;
803
+ max-width: 55%;
804
+ height: 100%;
805
+ flex: 0 0 auto;
806
+ padding: 0;
807
+
808
+ .product-image__thumbs {
809
+ padding: 0 px-to-rem(27);
810
+ }
811
+ }
812
+ }
813
+
814
+ @media ($mobile) {
815
+ .product-select-modal {
816
+ padding: 0;
817
+ display: block;
818
+
819
+ .product-detail {
820
+ width: auto;
821
+ }
822
+
823
+ .product-info {
824
+ width: 100%;
825
+ padding: 0;
826
+
827
+ &__header_title,
828
+ &__header_brief,
829
+ &__url {
830
+ display: none;
831
+ }
832
+
833
+ &__header_price-wrapper-left {
834
+ margin-left: px-to-rem(105);
835
+ margin-top: px-to-rem(10);
836
+ }
837
+
838
+ &__header_compare-at-price {
839
+ width: 100%;
840
+ }
841
+
842
+ &__header_price-wrapper {
843
+ padding-bottom: px-to-rem(10);
844
+ }
845
+
846
+ &__body {
847
+ padding: px-to-rem(15);
848
+ max-height: 50vh;
849
+ overflow: auto;
850
+ }
851
+ }
852
+
853
+ .product-image {
854
+ position: absolute;
855
+ top: -20px;
856
+ left: px-to-rem(15);
857
+ z-index: 2;
858
+ width: px-to-rem(150/2);
859
+ height: px-to-rem(150/2);
860
+ bottom: px-to-rem(35);
861
+ display: flex;
862
+ justify-content: center;
863
+ align-items: center;
864
+ flex-direction: column;
865
+ background: #fff;
866
+
867
+ .product-image__swiper_bullets {
868
+ display: none;
869
+ }
870
+ }
871
+ }
872
+ }
873
+
874
+ @media ($mobile) {
875
+ .product-select-modal {
876
+ padding: 0;
877
+ display: block;
878
+
879
+ .product-detail {
880
+ width: auto;
881
+ }
882
+
883
+ .product-info {
884
+ width: 100%;
885
+ padding: 0;
886
+
887
+ &__header_title,
888
+ &__header_brief,
889
+ &__url {
890
+ display: none;
891
+ }
892
+
893
+ &__header_price-wrapper-left {
894
+ margin-left: px-to-rem(105);
895
+ margin-top: px-to-rem(10);
896
+ }
897
+
898
+ &__header_compare-at-price {
899
+ width: 100%;
900
+ }
901
+
902
+ &__header_price-wrapper {
903
+ padding-bottom: px-to-rem(10);
904
+ }
905
+
906
+ &__body {
907
+ padding: px-to-rem(15);
908
+ max-height: 50vh;
909
+ overflow: auto;
910
+ }
911
+ }
912
+
913
+ .product-image {
914
+ position: absolute;
915
+ top: -20px;
916
+ left: px-to-rem(15);
917
+ z-index: 2;
918
+ width: px-to-rem(150/2);
919
+ height: px-to-rem(150/2);
920
+ bottom: px-to-rem(35);
921
+ display: flex;
922
+ justify-content: center;
923
+ align-items: center;
924
+ flex-direction: column;
925
+ background: #fff;
926
+
927
+ .product-image__swiper_bullets {
928
+ display: none;
929
+ }
930
+ }
931
+ }
932
+ }
933
+
934
+ #product-select-modal {
935
+ .modal-dialog {
936
+ max-width: 875px;
937
+ }
938
+ }
939
+
940
+ @media ($mobile) {
941
+ #product-select-modal {
942
+ .modal-dialog {
943
+ max-width: none;
944
+ margin: 0;
945
+ min-height: auto;
946
+
947
+ .modal-content {
948
+ position: fixed;
949
+ bottom: 0;
950
+
951
+ .product-info__btn button:last-child {
952
+ margin-bottom: 0;
953
+ }
954
+ }
955
+ }
956
+ }
957
+ }
958
+
959
+ // 相关推荐
960
+ .relative_product {
961
+ @media ($pc) {
962
+ padding-right: 0;
963
+ padding-left: 0;
964
+ }
965
+ &__content {
966
+ margin: 0 -12px;
967
+ clear: both;
968
+ @media ($mobile) {
969
+ margin: 0 -7.5px;
970
+ }
971
+ }
972
+ &__change {
973
+ // position: absolute;
974
+ float: right;
975
+ right: 0;
976
+ font-size: 12px;
977
+ color: #666;
978
+ text-decoration: underline;
979
+ margin-bottom: 10px;
980
+ cursor: pointer;
981
+ }
982
+ &__title {
983
+ font-size: 24px;
984
+ line-height: 29px;
985
+ margin-bottom: 56px;
986
+ margin-top: 68px;
987
+ white-space: nowrap;
988
+
989
+ @media ($mobile) {
990
+ font-size: 18px;
991
+ margin-bottom: 28px;
992
+ margin-top: 28px;
993
+ }
994
+ }
995
+ }
996
+ html[dir='rtl'] .relative_product {
997
+ &__change {
998
+ left: 0;
999
+ right: unset;
1000
+ float: left;
1001
+ }
1002
+ }
1003
+
1004
+ // 社交分享
1005
+ .product-info__social-sharing {
1006
+ margin-top: 30px;
1007
+ white-space: nowrap;
1008
+
1009
+ .share-facebook,
1010
+ .share-twitter,
1011
+ .share-pinterest {
1012
+ display: inline-flex;
1013
+ align-items: center;
1014
+ width: 33.33%; // justify-content: space-around;
1015
+ i {
1016
+ font-size: 28px;
1017
+ margin-right: 15px;
1018
+ }
1019
+
1020
+ span {
1021
+ display: inline-block;
1022
+ font-size: 14px; // margin-right: 30px;
1023
+ }
1024
+ }
1025
+
1026
+ .share-pinterest span {
1027
+ margin-right: 0;
1028
+ }
1029
+ }
1030
+
1031
+ html[dir='rtl'] {
1032
+ .product-info__header_off-ratio::before {
1033
+ content: '';
1034
+ display: block;
1035
+ position: absolute;
1036
+ height: px-to-rem(16);
1037
+ width: 2px;
1038
+ background: #000;
1039
+ right: px-to-rem(-4);
1040
+ top: 50%;
1041
+ margin-top: px-to-rem(-8);
1042
+ }
1043
+
1044
+ @media ($mobile) {
1045
+ .product-info__header_price-wrapper-left {
1046
+ padding-right: 0;
1047
+ }
1048
+ }
1049
+
1050
+ @media ($pc) {
1051
+ .product-info {
1052
+ padding-left: 0;
1053
+ padding-right: px-to-rem(24);
1054
+ }
1055
+ }
1056
+
1057
+ .product-info__variants_value {
1058
+ margin-right: 0;
1059
+ margin-left: px-to-rem(10);
1060
+ }
1061
+ }
1062
+
1063
+ #product-select-modal {
1064
+ .product-info__additional {
1065
+ display: none;
1066
+ }
1067
+ }
1068
+ @media ($mobile) {
1069
+ #product-select-modal {
1070
+ .product-info__additional,
1071
+ .sep-loaded-slider__button,
1072
+ .product-image__swiper_bullets {
1073
+ display: none;
1074
+ }
1075
+ .product-image .position-relative,
1076
+ .product-slider {
1077
+ width: 100%;
1078
+ height: 100%;
1079
+ }
1080
+ .product-info__variants {
1081
+ margin-top: 0;
1082
+ }
1083
+ }
1084
+ }
1085
+
1086
+ @keyframes pploading {
1087
+ 0% {
1088
+ background-position: 0% 0;
1089
+ }
1090
+ 50% {
1091
+ background-position: 100% 0;
1092
+ }
1093
+ 100% {
1094
+ background-position: 200% 0;
1095
+ }
1096
+ }
1097
+ .placeholder-paypal-express-button-container {
1098
+ display: block;
1099
+ height: 50px;
1100
+ width: 100%;
1101
+ background-image: linear-gradient(to left, #e6e6e6 0%, #cdcdcd 50%, #e6e6e6 100%);
1102
+ animation: 3s linear 0s infinite normal forwards running pploading;
1103
+ background-size: 200% 100%;
1104
+ border-radius: 4px;
1105
+ margin-top: 16px;
1106
+ }