@merchi/product-form 1.19.12

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 (188) hide show
  1. package/README.md +272 -0
  2. package/lib/actions/jobs.d.ts +3 -0
  3. package/lib/actions/jobs.js +80 -0
  4. package/lib/actions/leads.d.ts +7 -0
  5. package/lib/actions/leads.js +67 -0
  6. package/lib/components/AlertVariationSellerEditable.d.ts +6 -0
  7. package/lib/components/AlertVariationSellerEditable.js +46 -0
  8. package/lib/components/Collapse.d.ts +3 -0
  9. package/lib/components/Collapse.js +34 -0
  10. package/lib/components/DateCountdown.d.ts +44 -0
  11. package/lib/components/DateCountdown.js +188 -0
  12. package/lib/components/DropzoneInput.d.ts +10 -0
  13. package/lib/components/DropzoneInput.js +169 -0
  14. package/lib/components/DynamicVariationInput.d.ts +9 -0
  15. package/lib/components/DynamicVariationInput.js +71 -0
  16. package/lib/components/FormLead.d.ts +10 -0
  17. package/lib/components/FormLead.js +215 -0
  18. package/lib/components/GroupInventory.d.ts +6 -0
  19. package/lib/components/GroupInventory.js +16 -0
  20. package/lib/components/InputGroupQuantity.d.ts +8 -0
  21. package/lib/components/InputGroupQuantity.js +117 -0
  22. package/lib/components/InputHiddenStatic.d.ts +8 -0
  23. package/lib/components/InputHiddenStatic.js +24 -0
  24. package/lib/components/InputProductQuantity.d.ts +7 -0
  25. package/lib/components/InputProductQuantity.js +102 -0
  26. package/lib/components/InventoryStatus.d.ts +7 -0
  27. package/lib/components/InventoryStatus.js +67 -0
  28. package/lib/components/MerchiProductForm.d.ts +62 -0
  29. package/lib/components/MerchiProductForm.js +51 -0
  30. package/lib/components/PriceMatrix.d.ts +27 -0
  31. package/lib/components/PriceMatrix.js +106 -0
  32. package/lib/components/ProductButtonsSubmit.d.ts +3 -0
  33. package/lib/components/ProductButtonsSubmit.js +52 -0
  34. package/lib/components/ProductFeatureDeadline.d.ts +3 -0
  35. package/lib/components/ProductFeatureDeadline.js +25 -0
  36. package/lib/components/ProductGroupBuyStatus.d.ts +3 -0
  37. package/lib/components/ProductGroupBuyStatus.js +47 -0
  38. package/lib/components/ProductPriceMatrix.d.ts +3 -0
  39. package/lib/components/ProductPriceMatrix.js +51 -0
  40. package/lib/components/ProductTitle.d.ts +3 -0
  41. package/lib/components/ProductTitle.js +36 -0
  42. package/lib/components/ProductTotalCost.d.ts +3 -0
  43. package/lib/components/ProductTotalCost.js +74 -0
  44. package/lib/components/ProductUnitPrice.d.ts +7 -0
  45. package/lib/components/ProductUnitPrice.js +51 -0
  46. package/lib/components/TooltipElement.d.ts +9 -0
  47. package/lib/components/TooltipElement.js +35 -0
  48. package/lib/components/VariationAreaInput.d.ts +8 -0
  49. package/lib/components/VariationAreaInput.js +219 -0
  50. package/lib/components/VariationCheckBoxOrRadioOption.d.ts +10 -0
  51. package/lib/components/VariationCheckBoxOrRadioOption.js +82 -0
  52. package/lib/components/VariationCheckboxRadio.d.ts +17 -0
  53. package/lib/components/VariationCheckboxRadio.js +57 -0
  54. package/lib/components/VariationColourExtractInput.d.ts +8 -0
  55. package/lib/components/VariationColourExtractInput.js +395 -0
  56. package/lib/components/VariationError.d.ts +7 -0
  57. package/lib/components/VariationError.js +52 -0
  58. package/lib/components/VariationFieldInputInstructions.d.ts +10 -0
  59. package/lib/components/VariationFieldInputInstructions.js +50 -0
  60. package/lib/components/VariationFieldInstructions.d.ts +3 -0
  61. package/lib/components/VariationFieldInstructions.js +22 -0
  62. package/lib/components/VariationFieldNameAndCostInputs.d.ts +7 -0
  63. package/lib/components/VariationFieldNameAndCostInputs.js +34 -0
  64. package/lib/components/VariationFieldOptionDefaultInputs.d.ts +7 -0
  65. package/lib/components/VariationFieldOptionDefaultInputs.js +48 -0
  66. package/lib/components/VariationFieldStaticValues.d.ts +8 -0
  67. package/lib/components/VariationFieldStaticValues.js +57 -0
  68. package/lib/components/VariationFileInput.d.ts +8 -0
  69. package/lib/components/VariationFileInput.js +229 -0
  70. package/lib/components/VariationInput.d.ts +11 -0
  71. package/lib/components/VariationInput.js +97 -0
  72. package/lib/components/VariationLabel.d.ts +11 -0
  73. package/lib/components/VariationLabel.js +85 -0
  74. package/lib/components/VariationOptionColour.d.ts +8 -0
  75. package/lib/components/VariationOptionColour.js +50 -0
  76. package/lib/components/VariationOptionImage.d.ts +8 -0
  77. package/lib/components/VariationOptionImage.js +52 -0
  78. package/lib/components/VariationSelect.d.ts +8 -0
  79. package/lib/components/VariationSelect.js +66 -0
  80. package/lib/components/VariationSelectElements.d.ts +16 -0
  81. package/lib/components/VariationSelectElements.js +141 -0
  82. package/lib/components/VariationTurnaroundTime.d.ts +9 -0
  83. package/lib/components/VariationTurnaroundTime.js +156 -0
  84. package/lib/components/Variations.d.ts +9 -0
  85. package/lib/components/Variations.js +109 -0
  86. package/lib/components/VariationsGroups.d.ts +8 -0
  87. package/lib/components/VariationsGroups.js +79 -0
  88. package/lib/components/buttons/ButtonAddGroup.d.ts +7 -0
  89. package/lib/components/buttons/ButtonAddGroup.js +38 -0
  90. package/lib/components/buttons/ButtonProductSubmit.d.ts +7 -0
  91. package/lib/components/buttons/ButtonProductSubmit.js +33 -0
  92. package/lib/components/buttons/ButtonRemoveGroup.d.ts +8 -0
  93. package/lib/components/buttons/ButtonRemoveGroup.js +25 -0
  94. package/lib/components/buttons/index.d.ts +4 -0
  95. package/lib/components/buttons/index.js +5 -0
  96. package/lib/components/cost.d.ts +11 -0
  97. package/lib/components/cost.js +44 -0
  98. package/lib/components/currency.d.ts +16 -0
  99. package/lib/components/currency.js +184 -0
  100. package/lib/components/drafts/DraftApprovePanel.d.ts +6 -0
  101. package/lib/components/drafts/DraftApprovePanel.js +315 -0
  102. package/lib/components/drafts/DraftCanvas.d.ts +13 -0
  103. package/lib/components/drafts/DraftCanvas.js +496 -0
  104. package/lib/components/drafts/DraftDesignerSheet.d.ts +9 -0
  105. package/lib/components/drafts/DraftDesignerSheet.js +685 -0
  106. package/lib/components/drafts/ProductDraftsHost.d.ts +3 -0
  107. package/lib/components/drafts/ProductDraftsHost.js +207 -0
  108. package/lib/components/drafts/useHtmlImage.d.ts +1 -0
  109. package/lib/components/drafts/useHtmlImage.js +45 -0
  110. package/lib/components/icons/IconChecked.d.ts +3 -0
  111. package/lib/components/icons/IconChecked.js +10 -0
  112. package/lib/components/icons/IconCheckedOrNoStock.d.ts +7 -0
  113. package/lib/components/icons/IconCheckedOrNoStock.js +13 -0
  114. package/lib/components/icons/IconCountryFlag.d.ts +8 -0
  115. package/lib/components/icons/IconCountryFlag.js +27 -0
  116. package/lib/components/icons/IconFile.d.ts +7 -0
  117. package/lib/components/icons/IconFile.js +41 -0
  118. package/lib/components/icons/IconNoStock.d.ts +3 -0
  119. package/lib/components/icons/IconNoStock.js +12 -0
  120. package/lib/components/icons/index.d.ts +5 -0
  121. package/lib/components/icons/index.js +6 -0
  122. package/lib/components/quoteAfterFieldChange.d.ts +7 -0
  123. package/lib/components/quoteAfterFieldChange.js +11 -0
  124. package/lib/components/quoteAfterFieldChange.test.js +58 -0
  125. package/lib/components/utils.d.ts +26 -0
  126. package/lib/components/utils.js +500 -0
  127. package/lib/context/MerchiProductFormProvider.d.ts +177 -0
  128. package/lib/context/MerchiProductFormProvider.js +1020 -0
  129. package/lib/images/product-not-found.png +0 -0
  130. package/lib/index.d.ts +42 -0
  131. package/lib/index.js +41 -0
  132. package/lib/styles/globals.css +1590 -0
  133. package/lib/styles/globals.css.map +1 -0
  134. package/lib/styles/globals.scss +1698 -0
  135. package/lib/utils/area.d.ts +77 -0
  136. package/lib/utils/area.js +298 -0
  137. package/lib/utils/cleanFormVariationJson.d.ts +5 -0
  138. package/lib/utils/cleanFormVariationJson.js +39 -0
  139. package/lib/utils/cleanFormVariationJson.test.js +54 -0
  140. package/lib/utils/countries.d.ts +7 -0
  141. package/lib/utils/countries.js +290 -0
  142. package/lib/utils/currency.d.ts +2 -0
  143. package/lib/utils/currency.js +188 -0
  144. package/lib/utils/draftExport.d.ts +21 -0
  145. package/lib/utils/draftExport.js +481 -0
  146. package/lib/utils/draftExport.test.js +78 -0
  147. package/lib/utils/draftFonts.d.ts +55 -0
  148. package/lib/utils/draftFonts.js +68 -0
  149. package/lib/utils/draftStorage.d.ts +25 -0
  150. package/lib/utils/draftStorage.js +148 -0
  151. package/lib/utils/draftStorage.test.js +125 -0
  152. package/lib/utils/draftTemplates.d.ts +87 -0
  153. package/lib/utils/draftTemplates.js +579 -0
  154. package/lib/utils/draftTemplates.test.js +476 -0
  155. package/lib/utils/formErrors.d.ts +2 -0
  156. package/lib/utils/formErrors.js +29 -0
  157. package/lib/utils/index.d.ts +3 -0
  158. package/lib/utils/index.js +4 -0
  159. package/lib/utils/priceMatrix.d.ts +57 -0
  160. package/lib/utils/priceMatrix.js +82 -0
  161. package/lib/utils/priceMatrix.test.js +200 -0
  162. package/lib/utils/products.d.ts +40 -0
  163. package/lib/utils/products.js +68 -0
  164. package/lib/utils/quantity.d.ts +7 -0
  165. package/lib/utils/quantity.js +19 -0
  166. package/lib/utils/quantity.test.js +42 -0
  167. package/lib/utils/reconcileVariations.d.ts +25 -0
  168. package/lib/utils/reconcileVariations.js +246 -0
  169. package/lib/utils/reconcileVariations.test.js +239 -0
  170. package/lib/utils/selectedVariationCosts.d.ts +6 -0
  171. package/lib/utils/selectedVariationCosts.js +59 -0
  172. package/lib/utils/selectedVariationCosts.test.js +66 -0
  173. package/lib/utils/selections.d.ts +23 -0
  174. package/lib/utils/selections.js +76 -0
  175. package/lib/utils/selections.test.js +159 -0
  176. package/lib/utils/singleOptionVariation.d.ts +2 -0
  177. package/lib/utils/singleOptionVariation.js +22 -0
  178. package/lib/utils/singleOptionVariation.test.js +59 -0
  179. package/lib/utils/supportedNumbers.d.ts +1 -0
  180. package/lib/utils/supportedNumbers.js +27 -0
  181. package/lib/utils/types.d.ts +114 -0
  182. package/lib/utils/types.js +50 -0
  183. package/lib/utils/url.d.ts +3 -0
  184. package/lib/utils/url.js +65 -0
  185. package/lib/utils/variationFields.d.ts +5 -0
  186. package/lib/utils/variationFields.js +116 -0
  187. package/lib/utils/variationFields.test.js +108 -0
  188. package/package.json +93 -0
@@ -0,0 +1,1698 @@
1
+ /* **********
2
+ Embed form
3
+ ********** */
4
+ .merchi-embed-form {
5
+
6
+ /* buttons */
7
+ &_button {
8
+ &-submit {
9
+ margin: 4px !important;
10
+ flex: 1 1 0;
11
+ min-width: 0;
12
+ white-space: nowrap;
13
+ font-size: 0.8125rem;
14
+ font-weight: 600;
15
+ line-height: 1.25;
16
+ padding: 0.4rem 0.75rem;
17
+ min-height: 2.25rem;
18
+ }
19
+ }
20
+
21
+ /* variant container */
22
+ &_variantion-container {
23
+ gap: 1.25rem;
24
+ display: flex;
25
+ flex-direction: column;
26
+ padding: 0;
27
+ }
28
+
29
+ fieldset.merchi-embed-form_product-group-container,
30
+ fieldset.merchi-embed-form_product-group-variation-container,
31
+ &_variantion-container > fieldset {
32
+ border: none;
33
+ margin: 0;
34
+ padding: 0;
35
+ min-width: 0;
36
+ }
37
+
38
+ /* information */
39
+ &_information-container {
40
+ margin-top: 1rem;
41
+
42
+ @media(min-width: 992px) {
43
+ padding: 0;
44
+ }
45
+
46
+ ul {
47
+ gap: 1rem;
48
+ }
49
+
50
+ .nav-item {
51
+ padding: 0 !important;
52
+ }
53
+
54
+ &-list-group-item {
55
+ padding: 0.5rem !important;
56
+ list-style-type: none;
57
+ }
58
+ }
59
+
60
+ /* images */
61
+ &_img {
62
+ &-container {}
63
+
64
+ &-product-pic {
65
+ img {
66
+ max-width: 100%;
67
+ border-radius: 0.5rem;
68
+ }
69
+ }
70
+
71
+ &-preview-container {
72
+ flex-direction: column;
73
+ }
74
+
75
+ &-preview-container-main-image {
76
+ align-items: center;
77
+ display: flex;
78
+ justify-content: center;
79
+ width: 100%;
80
+ }
81
+
82
+ &-thumbnails {
83
+ gap: 1rem;
84
+ flex-wrap: wrap;
85
+ justify-content: center;
86
+ padding: 0.5rem;
87
+ }
88
+ }
89
+
90
+ /* react zoom package */
91
+ &_zoom {
92
+ &-img button {
93
+ font-size: 1.5rem;
94
+ display: flex;
95
+ }
96
+ }
97
+
98
+ /* cost summary */
99
+ &_summary {
100
+ &-product-cost {
101
+ display: flex;
102
+ flex-direction: row;
103
+ justify-content: space-between;
104
+ width: 100%;
105
+ margin: 1rem 0;
106
+ flex-direction: wrap;
107
+ }
108
+
109
+ &-product-cost-container {
110
+ display: flex;
111
+ flex-direction: column;
112
+ font-size: 1.2rem;
113
+ margin-top: 1.5rem
114
+ }
115
+
116
+ &-button-submit-container {
117
+ display: flex;
118
+ }
119
+ }
120
+
121
+ /* variation dropzone */
122
+ &_dropzone {
123
+ padding: 0;
124
+ border: none;
125
+ color: inherit;
126
+ padding: 2rem 1rem;
127
+ background-color: #fff;
128
+ border: 1px dashed #dee2e6;
129
+ border-radius: 0.375rem;
130
+ text-align: center;
131
+ color: #8898aa;
132
+ order: -1;
133
+ cursor: pointer;
134
+ z-index: 999;
135
+ transition: all .2s ease-in-out;
136
+
137
+ &:hover {
138
+ box-shadow: 0 0.5em 0.75em #00000014;
139
+ scale: 1.002;
140
+ }
141
+
142
+ &-text-container {
143
+ display: flex;
144
+ }
145
+
146
+ &-icon-container {
147
+ display: inline-block;
148
+ width: 50px;
149
+ height: 50px;
150
+ background: #dfdfdf;
151
+ border-radius: 100%;
152
+ position: relative;
153
+ margin-right: 1rem;
154
+ }
155
+
156
+ &-icon {
157
+ position: absolute;
158
+ display: block;
159
+ top: 50%;
160
+ height: 24px;
161
+ left: 50%;
162
+ transform: translate(-50%, -50%)
163
+ }
164
+
165
+ &-icon-plus {
166
+ transition: all .15s ease-in-out;
167
+ position: absolute;
168
+ background: white;
169
+ height: 30px;
170
+ width: 30px !important;
171
+ border-radius: 100%;
172
+ border: 1px solid #dfdfdf;
173
+ padding: 5px;
174
+ display: block;
175
+ right: -8px;
176
+ bottom: -14px;
177
+ top: initial;
178
+ left: initial;
179
+
180
+ &:hover {
181
+ scale: 1.2;
182
+ }
183
+ }
184
+ }
185
+
186
+ /* variation image select */
187
+ &_image-select-option {
188
+ &-container {
189
+ display: flex;
190
+ gap: 1rem;
191
+ flex-wrap: wrap;
192
+ }
193
+
194
+ &-item-container {
195
+ flex-grow: 1;
196
+ flex: 0 0 calc(50% - 0.50rem);
197
+
198
+ @media(min-width: 782px) {
199
+ flex: 0 0 calc(33.33% - 0.67rem);
200
+ }
201
+ }
202
+
203
+ &-item {
204
+ background: #fff;
205
+ border-radius: 0.5em;
206
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
207
+ cursor: pointer;
208
+ transition-duration: 0.15s;
209
+ position: relative;
210
+ text-align: center;
211
+ padding: 1rem 0.5rem;
212
+
213
+ &:hover {
214
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
215
+ transition-duration: 0.25s;
216
+ }
217
+
218
+ &-img {
219
+ display: block;
220
+ height: 150px;
221
+ margin: auto;
222
+ max-width: 150px;
223
+ width: 100%;
224
+ background-repeat: no-repeat;
225
+ background-size: contain;
226
+ }
227
+
228
+ svg {
229
+ position: absolute;
230
+ top: 0.5rem;
231
+ right: 0.5rem;
232
+ background: #fff;
233
+ padding: 2px;
234
+ padding-bottom: 1px;
235
+ border-radius: 0.4rem;
236
+ font-size: 28px !important;
237
+ -webkit-animation-name: fadeInOpacity;
238
+ -webkit-animation-iteration-count: 1;
239
+ -webkit-animation-duration: 0.2s;
240
+ animation-name: fadeInOpacity;
241
+ animation-iteration-count: 1;
242
+ animation-duration: 0.2s;
243
+ }
244
+ }
245
+ }
246
+
247
+ /* variation color select */
248
+ &_color-select {
249
+ &-container {
250
+ display: flex;
251
+ flex-wrap: wrap;
252
+ gap: 2rem;
253
+
254
+ @media (max-width: 768px) {
255
+ justify-content: center;
256
+ }
257
+ }
258
+
259
+ &-indicator {
260
+ border-radius: 100%;
261
+ height: 65px;
262
+ width: 65px;
263
+ }
264
+
265
+ &-item {
266
+ align-items: center;
267
+ display: flex;
268
+ flex-direction: column;
269
+ position: relative
270
+ }
271
+
272
+ &-description {
273
+ white-space: nowrap;
274
+ text-overflow: ellipsis;
275
+ overflow: clip;
276
+ max-width: 125px;
277
+ text-transform: capitalize;
278
+ background-color: white;
279
+ padding: 0 0.4rem;
280
+ margin: 6px 0 0 0;
281
+ cursor: pointer;
282
+ border-radius: 5px;
283
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
284
+ font-size: 0.8rem;
285
+ font-weight: 600;
286
+ }
287
+
288
+ &-option {
289
+ border: 4px solid #fff;
290
+ border-radius: 100%;
291
+ box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1);
292
+ transition: all 0.2s ease-in-out;
293
+ z-index: 1;
294
+ height: 50px;
295
+ width: 50px;
296
+
297
+ &:hover {
298
+ box-shadow: 0 5px 4px rgba(0, 0, 0, 0.1);
299
+ }
300
+
301
+ i,
302
+ svg {
303
+ position: absolute;
304
+ top: 0;
305
+ right: 0;
306
+ background: #fff;
307
+ border-radius: 100%;
308
+ font-size: 21px;
309
+ }
310
+ }
311
+ }
312
+
313
+ /* variation checkbox and radio */
314
+ &_checkbox_radio {
315
+ &-container {
316
+ display: flex;
317
+ flex-direction: column;
318
+ }
319
+
320
+ &-item-container {
321
+ display: flex;
322
+ flex-direction: row;
323
+ gap: 1rem;
324
+ flex-wrap: wrap;
325
+ }
326
+
327
+ // item and input are in the merchi embed form with the className merchi-embed-form_checkbox_radio-item, but I dont know what its used for. Leaving it here in case we need it later.
328
+ &-item {}
329
+
330
+ &-input {
331
+ position: absolute;
332
+ opacity: 0;
333
+ cursor: pointer;
334
+ z-index: 999;
335
+ height: 33px;
336
+ width: 33px;
337
+
338
+ // Define the styles for the checkbox label
339
+ +label {
340
+ position: relative;
341
+ cursor: pointer;
342
+ display: flex;
343
+ align-items: center;
344
+ margin-bottom: 0;
345
+
346
+ // Define the custom checkbox indicator
347
+ &::before {
348
+ content: " ";
349
+ display: inline-block;
350
+ margin-right: 0.5rem;
351
+ width: 33px;
352
+ height: 33px;
353
+ background-color: white;
354
+ border-radius: 6px;
355
+ box-shadow: rgba(42, 42, 42, 0.15) 0px 2px 2px 0px;
356
+ transition: all 0.1s ease-in-out;
357
+ cursor: pointer;
358
+ }
359
+
360
+ // Define the custom checkbox indicator when checked
361
+ &::after {
362
+ content: "";
363
+ width: 11px;
364
+ height: 11px; // Size of the checkmark
365
+ border-radius: 100%;
366
+ background-color: #2a2a2a;
367
+ position: absolute;
368
+ top: 50%;
369
+ left: 11px;
370
+ transform: translateY(-50%);
371
+ opacity: 0;
372
+ transition: all 0.3s ease; // Smooth transition for hover/focus effects
373
+ cursor: pointer;
374
+ }
375
+ }
376
+
377
+ &:disabled+label {
378
+ &::before {
379
+ opacity: 0.8;
380
+ box-shadow: none;
381
+ cursor: not-allowed;
382
+ border: inset 1px #0000002b;
383
+ background-color: transparent;
384
+ }
385
+
386
+ &::after {
387
+ cursor: not-allowed;
388
+ }
389
+ }
390
+
391
+ &:disabled+label &-label {
392
+ opacity: 0.8;
393
+ box-shadow: none;
394
+ cursor: not-allowed;
395
+ border: inset 1px #0000002b;
396
+ background-color: transparent;
397
+ }
398
+
399
+ &:disabled+label:hover::before {
400
+ box-shadow: none;
401
+ border: inset 1px #0000002b;
402
+ }
403
+
404
+ // Apply styles to the checkbox when checked
405
+ &:checked+label::before {
406
+ box-shadow: rgba(42, 42, 42, 0.15) 0px 1px 1px 0px;
407
+ }
408
+
409
+ // Show the checkmark when the checkbox is checked
410
+ &:checked+label::after {
411
+ opacity: 1;
412
+ }
413
+
414
+ }
415
+
416
+ &-label {
417
+ position: relative;
418
+ cursor: auto !important;
419
+ display: inline-flex;
420
+ align-items: center;
421
+ height: 33px;
422
+ }
423
+
424
+ &-super {
425
+ display: block;
426
+ color: rgb(129, 136, 155);
427
+ padding: 3px 10px;
428
+ font-weight: bold;
429
+ border-radius: 8px;
430
+ font-size: 11px;
431
+ margin-top: 10px;
432
+ width: -moz-fit-content;
433
+ width: fit-content;
434
+ box-shadow: 1px 1px 2px #00000026;
435
+ background: #f2f4fb;
436
+ border-top: 1px solid white;
437
+ border-left: 1px solid white;
438
+ }
439
+ }
440
+
441
+ /* titles */
442
+ &_input {
443
+ &-radio {
444
+ font-size: 12.6px;
445
+ font-weight: 800;
446
+ padding-bottom: 0.25rem;
447
+ }
448
+
449
+ &-checkbox {
450
+ font-size: 12.6px;
451
+ font-weight: 800;
452
+ padding-bottom: 0.25rem;
453
+
454
+ }
455
+
456
+ &-select {
457
+ font-size: 12.6px;
458
+ font-weight: 800;
459
+ padding-bottom: 0.25rem;
460
+
461
+ }
462
+
463
+ &-image-select {
464
+ font-size: 12.6px;
465
+ font-weight: 800;
466
+ padding-bottom: 0.25rem;
467
+
468
+ }
469
+
470
+ &-file {
471
+ font-size: 12.6px;
472
+ font-weight: 800;
473
+ padding-bottom: 0.25rem;
474
+
475
+ }
476
+ }
477
+
478
+ /* other */
479
+ &_option-cost-detail {
480
+ display: block;
481
+ color: rgb(129, 136, 155);
482
+ font-size: 0.75rem;
483
+ font-weight: 600;
484
+ line-height: 1.2;
485
+ margin-top: 0.25rem;
486
+ text-align: center;
487
+ }
488
+
489
+ &_variation-cost-detail {
490
+ display: block;
491
+ color: rgb(129, 136, 155);
492
+ padding: 3px 10px;
493
+ font-weight: bold;
494
+ border-radius: 8px;
495
+ font-size: 14px;
496
+ width: -moz-fit-content;
497
+ width: fit-content;
498
+ box-shadow: 1px 1px 2px #00000026;
499
+ background: #f2f4fb;
500
+ border-top: 1px solid white;
501
+ border-left: 1px solid white;
502
+ margin: 0.25rem 0rem 0.5rem;
503
+ }
504
+
505
+ /* product groups */
506
+ &_product-group {
507
+ &-container {
508
+ background: transparent;
509
+ border-radius: 0;
510
+ padding: 0;
511
+ display: flex;
512
+ flex-direction: column;
513
+ gap: 1.25rem;
514
+ }
515
+
516
+ &-actions-container {
517
+ display: flex;
518
+ align-items: center;
519
+ justify-content: space-between;
520
+ width: 100%;
521
+
522
+ @media(min-width: 500px) {
523
+ width: auto;
524
+ }
525
+ }
526
+
527
+ &-actions-cost-container {
528
+ align-items: center;
529
+ display: flex;
530
+ justify-content: space-between;
531
+ margin-top: 2rem;
532
+ flex-wrap: wrap;
533
+ gap: 1rem;
534
+ }
535
+
536
+ &-total-cost {
537
+ font-weight: 800;
538
+ }
539
+
540
+ &-button-remove {
541
+ width: 100%;
542
+
543
+ @media(min-width: 500px) {
544
+ width: fit-content;
545
+ }
546
+ }
547
+
548
+ &-button-add-group {
549
+ display: flex;
550
+ align-items: center;
551
+ justify-content: center;
552
+ width: 100%;
553
+ margin: 1rem 0;
554
+ }
555
+
556
+ &-inventory-status {
557
+ width: fit-content;
558
+ border-radius: 50px;
559
+ color: white;
560
+ font-weight: bold;
561
+ font-size: 0.75rem;
562
+ padding: 3px;
563
+ display: flex;
564
+ gap: 0.25rem;
565
+ align-items: center;
566
+ }
567
+
568
+ &-variation-container {
569
+ display: block;
570
+ }
571
+
572
+ &-input-qty-container {
573
+ font-size: 12.6px;
574
+ font-weight: 800;
575
+ }
576
+ }
577
+
578
+ &_product-group-input-qty-container + &_variantion-container {
579
+ margin-top: 1.25rem;
580
+ }
581
+
582
+ /* quantity input */
583
+ &_quantity {
584
+ &-container {}
585
+
586
+ &-label-container {
587
+ font-size: 12.6px;
588
+ font-weight: 800;
589
+ margin-bottom: 0.5rem;
590
+ }
591
+ }
592
+ }
593
+
594
+ /* **********
595
+ END Embed from
596
+ ********** */
597
+
598
+ /* native colour picker (COLOUR_PICKER) — circle, own line under instructions */
599
+ .merchi-input-color-container {
600
+ display: block;
601
+
602
+ .variation-field-instructions {
603
+ display: block;
604
+ width: 100%;
605
+ }
606
+
607
+ input[type='color'] {
608
+ display: block;
609
+ clear: both;
610
+ box-sizing: border-box;
611
+ width: 50px;
612
+ height: 50px;
613
+ max-width: 50px;
614
+ margin-top: 0.35rem;
615
+ padding: 0;
616
+ border: 4px solid #fff;
617
+ border-radius: 50%;
618
+ box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1);
619
+ cursor: pointer;
620
+ overflow: hidden;
621
+ -webkit-appearance: none;
622
+ appearance: none;
623
+
624
+ &::-webkit-color-swatch-wrapper {
625
+ padding: 0;
626
+ }
627
+
628
+ &::-webkit-color-swatch {
629
+ border: none;
630
+ border-radius: 50%;
631
+ }
632
+
633
+ &::-moz-color-swatch {
634
+ border: none;
635
+ border-radius: 50%;
636
+ }
637
+ }
638
+ }
639
+
640
+ /* Draft js RTE styles */
641
+
642
+ .rte-editor-iframeContainer {
643
+ width: 100%;
644
+ height: 0;
645
+ position: relative;
646
+ min-height: 300px;
647
+ padding-bottom: 56.25%;
648
+ }
649
+
650
+ .rte-editor-iframe {
651
+ width: 100%;
652
+ height: 100%;
653
+ position: absolute;
654
+ top: 0;
655
+ left: 0;
656
+ }
657
+
658
+ .rte-editor-invalidVideoSrc {
659
+ text-align: center;
660
+ background-color: #eaeaea;
661
+ padding: 1em;
662
+ }
663
+
664
+ .rte-editor-video {
665
+ width: 100%;
666
+ height: 100%;
667
+ }
668
+
669
+ [data-rmiz-wrap="visible"],
670
+ [data-rmiz-wrap="hidden"] {
671
+ position: relative;
672
+ display: inline-flex;
673
+ align-items: flex-start;
674
+ }
675
+
676
+ [data-rmiz-wrap="hidden"] {
677
+ visibility: hidden;
678
+ }
679
+
680
+ [data-rmiz-overlay] {
681
+ position: fixed;
682
+ top: 0;
683
+ right: 0;
684
+ bottom: 0;
685
+ left: 0;
686
+ width: 100%;
687
+ height: 100%;
688
+ transition-property: background-color;
689
+ }
690
+
691
+ [data-rmiz-btn-open],
692
+ [data-rmiz-btn-close] {
693
+ position: absolute;
694
+ top: 0;
695
+ right: 0;
696
+ bottom: 0;
697
+ left: 0;
698
+ width: 100%;
699
+ height: 100%;
700
+
701
+ /* reset styles */
702
+ margin: 0;
703
+ padding: 0;
704
+ border: none;
705
+ border-radius: 0;
706
+ font: inherit;
707
+ color: inherit;
708
+ background: none;
709
+ -webkit-appearance: none;
710
+ -moz-appearance: none;
711
+ appearance: none;
712
+ }
713
+
714
+ [data-rmiz-btn-open] {
715
+ cursor: zoom-in;
716
+ }
717
+
718
+ [data-rmiz-btn-close] {
719
+ cursor: zoom-out;
720
+ }
721
+
722
+ [data-rmiz-modal-content] {
723
+ position: absolute;
724
+ transition-property: transform;
725
+ transform-origin: center center;
726
+ }
727
+
728
+ /* Product Images */
729
+ .preview-container {
730
+ display: flex;
731
+ height: 490px;
732
+ padding-bottom: 1rem !important;
733
+ padding-top: 1rem !important;
734
+ }
735
+
736
+ .preview-container-stacked {
737
+ display: flex;
738
+ padding-bottom: 1rem !important;
739
+ padding-top: 1rem !important;
740
+ }
741
+
742
+ .preview-container-main-image {
743
+ align-items: center;
744
+ display: flex;
745
+ justify-content: center;
746
+ width: 100%;
747
+ }
748
+
749
+ .product-pic img {
750
+ width: 100%;
751
+ border-radius: .375rem;
752
+ height: auto;
753
+ max-width: 470px;
754
+ max-height: 446px;
755
+ }
756
+
757
+ .fit-image {
758
+ width: 100%;
759
+ object-fit: cover;
760
+ border-radius: .375rem;
761
+ }
762
+
763
+ .variation-field-instructions .DraftEditor-root .DraftEditor-editorContainer {
764
+ min-height: 1px;
765
+ }
766
+
767
+ .variation-field-instructions .DraftEditor-root .DraftEditor-editorContainer .public-DraftEditor-content {
768
+ min-height: 1px;
769
+ }
770
+
771
+ .variation-field-instructions img {
772
+ max-width: 100%;
773
+ }
774
+
775
+ .merchi-product-title {
776
+ font-size: 1.4rem;
777
+ font-weight: 700;
778
+ line-height: 1.25;
779
+ margin: 0 0 0.5rem;
780
+ }
781
+
782
+ .merchi-product-origin-title {
783
+ font-size: 0.7875rem;
784
+ line-height: 1.3;
785
+ }
786
+
787
+ .merchi-product-origin-title h5 {
788
+ font-size: inherit;
789
+ font-weight: 600;
790
+ margin: 0 0 0.25rem;
791
+ }
792
+
793
+ .input-alert-container {
794
+ font-size: 12.6px;
795
+ font-weight: 600;
796
+ margin-top: 0.25rem;
797
+ }
798
+
799
+ .merchi-product-buttons-submit-container {
800
+ display: flex;
801
+ flex-direction: row;
802
+ flex-wrap: wrap;
803
+ align-items: stretch;
804
+ gap: 0.5rem;
805
+ width: 100%;
806
+
807
+ > * {
808
+ flex: 1 1 0;
809
+ min-width: 0;
810
+ }
811
+
812
+ > span {
813
+ display: flex;
814
+ }
815
+
816
+ > span > .merchi-embed-form_button-submit,
817
+ > .merchi-embed-form_button-submit {
818
+ width: 100%;
819
+ font-size: 0.8125rem;
820
+ font-weight: 600;
821
+ line-height: 1.25;
822
+ padding: 0.4rem 0.75rem;
823
+ min-height: 2.25rem;
824
+ }
825
+ }
826
+
827
+ .merchi-area-modality-toggle {
828
+ display: flex;
829
+ align-items: center;
830
+ flex-wrap: wrap;
831
+ gap: 0.5rem;
832
+ margin-bottom: 0.75rem;
833
+ }
834
+
835
+ .merchi-area-modality-label {
836
+ font-size: 0.875rem;
837
+ line-height: 1.25;
838
+ color: #6c757d;
839
+ font-weight: 400;
840
+ }
841
+
842
+ .merchi-area-modality-label.is-active {
843
+ color: inherit;
844
+ font-weight: 600;
845
+ }
846
+
847
+ .merchi-area-modality-switch {
848
+ position: relative;
849
+ display: inline-flex;
850
+ align-items: center;
851
+ width: 2.25rem;
852
+ height: 1.25rem;
853
+ padding: 0;
854
+ border: none;
855
+ border-radius: 999px;
856
+ background: #ced4da;
857
+ cursor: pointer;
858
+ transition: background-color 0.15s ease;
859
+ flex-shrink: 0;
860
+
861
+ &:disabled {
862
+ cursor: not-allowed;
863
+ opacity: 0.55;
864
+ }
865
+
866
+ &:focus {
867
+ outline: none;
868
+ }
869
+
870
+ &:focus-visible {
871
+ outline: 2px solid #0d6efd;
872
+ outline-offset: 2px;
873
+ }
874
+
875
+ &.is-on {
876
+ background: #0d6efd;
877
+ }
878
+ }
879
+
880
+ .merchi-area-modality-switch-thumb {
881
+ position: absolute;
882
+ top: 0.125rem;
883
+ left: 0.125rem;
884
+ width: 1rem;
885
+ height: 1rem;
886
+ border-radius: 50%;
887
+ background: #fff;
888
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
889
+ transition: transform 0.15s ease;
890
+ }
891
+
892
+ .merchi-area-modality-switch.is-on .merchi-area-modality-switch-thumb {
893
+ transform: translateX(1rem);
894
+ }
895
+
896
+ .merchi-area-aspect-lock {
897
+ margin-left: auto;
898
+ font-size: 0.75rem;
899
+ opacity: 0.75;
900
+ }
901
+
902
+ .merchi-area-dimensions {
903
+ display: flex;
904
+ flex-direction: column;
905
+ gap: 0.875rem;
906
+ }
907
+
908
+ .merchi-area-dimension-row {
909
+ display: flex;
910
+ flex-direction: column;
911
+ gap: 0.35rem;
912
+ }
913
+
914
+ .merchi-area-dimension-label {
915
+ display: flex;
916
+ align-items: baseline;
917
+ justify-content: space-between;
918
+ gap: 0.75rem;
919
+ font-size: 0.875rem;
920
+ line-height: 1.25;
921
+ }
922
+
923
+ .merchi-area-dimension-name {
924
+ font-weight: 500;
925
+ }
926
+
927
+ .merchi-area-dimension-meta {
928
+ margin-left: auto;
929
+ color: #6c757d;
930
+ font-variant-numeric: tabular-nums;
931
+ white-space: nowrap;
932
+ }
933
+
934
+ .merchi-area-slider {
935
+ -webkit-appearance: none;
936
+ appearance: none;
937
+ width: 100%;
938
+ height: 1.5rem;
939
+ margin: 0;
940
+ padding: 0;
941
+ background: transparent;
942
+ border: none;
943
+ border-radius: 0;
944
+ box-shadow: none;
945
+ cursor: pointer;
946
+
947
+ &:disabled {
948
+ cursor: not-allowed;
949
+ opacity: 0.55;
950
+ }
951
+
952
+ &:focus {
953
+ outline: none;
954
+ }
955
+
956
+ &:focus-visible {
957
+ outline: 2px solid #0d6efd;
958
+ outline-offset: 2px;
959
+ }
960
+
961
+ &::-webkit-slider-runnable-track {
962
+ height: 0.375rem;
963
+ border-radius: 999px;
964
+ background: #dee2e6;
965
+ }
966
+
967
+ &::-webkit-slider-thumb {
968
+ -webkit-appearance: none;
969
+ appearance: none;
970
+ width: 1.125rem;
971
+ height: 1.125rem;
972
+ margin-top: -0.375rem;
973
+ border: 2px solid #0d6efd;
974
+ border-radius: 50%;
975
+ background: #fff;
976
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
977
+ }
978
+
979
+ &::-moz-range-track {
980
+ height: 0.375rem;
981
+ border: none;
982
+ border-radius: 999px;
983
+ background: #dee2e6;
984
+ }
985
+
986
+ &::-moz-range-thumb {
987
+ width: 1.125rem;
988
+ height: 1.125rem;
989
+ border: 2px solid #0d6efd;
990
+ border-radius: 50%;
991
+ background: #fff;
992
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
993
+ }
994
+ }
995
+
996
+ .merchi-area-slider.is-invalid {
997
+ &::-webkit-slider-runnable-track,
998
+ &::-moz-range-track {
999
+ background: #f1aeb5;
1000
+ }
1001
+
1002
+ &::-webkit-slider-thumb,
1003
+ &::-moz-range-thumb {
1004
+ border-color: #dc3545;
1005
+ }
1006
+ }
1007
+
1008
+ .merchi-price-matrix {
1009
+ margin: 0.75rem 0;
1010
+ overflow-x: auto;
1011
+ }
1012
+
1013
+ .merchi-price-matrix_caption {
1014
+ caption-side: top;
1015
+ text-align: left;
1016
+ font-size: 0.8125rem;
1017
+ font-weight: 600;
1018
+ margin-bottom: 0.4rem;
1019
+ }
1020
+
1021
+ .merchi-price-matrix_caption-title {
1022
+ display: block;
1023
+ }
1024
+
1025
+ .merchi-price-matrix_setup {
1026
+ display: block;
1027
+ font-size: 0.8125rem;
1028
+ font-weight: 400;
1029
+ color: #71717a;
1030
+ margin-top: 0.25rem;
1031
+ }
1032
+
1033
+ .merchi-price-matrix_table {
1034
+ width: 100%;
1035
+ border-collapse: collapse;
1036
+ font-size: 0.8125rem;
1037
+ }
1038
+
1039
+ .merchi-price-matrix_table th,
1040
+ .merchi-price-matrix_table td {
1041
+ padding: 0.45rem 0.65rem;
1042
+ text-align: center;
1043
+ border: 1px solid rgb(227, 228, 247);
1044
+ white-space: nowrap;
1045
+ }
1046
+
1047
+ .merchi-price-matrix_corner,
1048
+ .merchi-price-matrix_row-label {
1049
+ text-align: left;
1050
+ font-weight: 600;
1051
+ background: #f7f7fb;
1052
+ }
1053
+
1054
+ .merchi-price-matrix_th {
1055
+ font-weight: 600;
1056
+ background: #f7f7fb;
1057
+ }
1058
+
1059
+ .merchi-price-matrix_col-active {
1060
+ background: #eef4ff;
1061
+ font-weight: 600;
1062
+ }
1063
+
1064
+ .merchi-price-matrix_band {
1065
+ appearance: none;
1066
+ background: none;
1067
+ border: 0;
1068
+ color: inherit;
1069
+ cursor: pointer;
1070
+ font: inherit;
1071
+ font-weight: inherit;
1072
+ padding: 0;
1073
+ text-decoration: underline;
1074
+ text-underline-offset: 0.15em;
1075
+ }
1076
+
1077
+ .merchi-sr-only {
1078
+ position: absolute;
1079
+ width: 1px;
1080
+ height: 1px;
1081
+ padding: 0;
1082
+ margin: -1px;
1083
+ overflow: hidden;
1084
+ clip: rect(0, 0, 0, 0);
1085
+ white-space: nowrap;
1086
+ border: 0;
1087
+ }
1088
+
1089
+ .merchi-product-draft-cta {
1090
+ display: flex;
1091
+ flex-direction: column;
1092
+ align-items: stretch;
1093
+ gap: 0.75rem;
1094
+ margin-top: 1rem;
1095
+ margin-bottom: 0.75rem;
1096
+ padding: 0.9rem 1rem;
1097
+ border: 1px solid #e4e4e7;
1098
+ border-radius: 0.85rem;
1099
+ background: #fafafa;
1100
+ }
1101
+
1102
+ .merchi-product-draft-cta-heading {
1103
+ font-size: 0.95rem;
1104
+ }
1105
+
1106
+ .merchi-product-draft-cta-tabs {
1107
+ display: grid;
1108
+ grid-template-columns: 1fr 1fr;
1109
+ gap: 4px;
1110
+ padding: 4px;
1111
+ border: 1px solid #e4e4e7;
1112
+ border-radius: 0.85rem;
1113
+ background: #f4f4f5;
1114
+ }
1115
+
1116
+ .merchi-product-draft-cta-tab {
1117
+ appearance: none;
1118
+ min-height: 40px;
1119
+ padding: 0.45rem 0.6rem;
1120
+ border: 1px solid transparent;
1121
+ border-radius: 0.7rem;
1122
+ background: transparent;
1123
+ color: #71717a;
1124
+ font: inherit;
1125
+ font-size: 0.85rem;
1126
+ font-weight: 600;
1127
+ line-height: 1.2;
1128
+ cursor: pointer;
1129
+ }
1130
+
1131
+ .merchi-product-draft-cta-tab.is-active {
1132
+ background: #fff;
1133
+ color: #111827;
1134
+ border-color: #2563eb;
1135
+ }
1136
+
1137
+ .merchi-product-draft-cta-panel {
1138
+ display: flex;
1139
+ flex-direction: column;
1140
+ gap: 0.65rem;
1141
+ padding: 0.85rem 1rem;
1142
+ border: 1px solid #e4e4e7;
1143
+ border-radius: 0.75rem;
1144
+ background: #fff;
1145
+ }
1146
+
1147
+ .merchi-product-draft-cta-panel span {
1148
+ font-size: 0.8rem;
1149
+ color: #71717a;
1150
+ }
1151
+
1152
+ .merchi-product-draft-cta + .merchi-product-buttons-submit-container,
1153
+ .merchi-product-draft-cta + .merchi-action-buttons-container {
1154
+ margin-top: 0;
1155
+ }
1156
+
1157
+ .merchi-product-draft-cta-copy {
1158
+ display: flex;
1159
+ flex-direction: column;
1160
+ gap: 0.15rem;
1161
+ min-width: 0;
1162
+ }
1163
+
1164
+ .merchi-product-draft-cta-copy strong {
1165
+ font-size: 0.95rem;
1166
+ }
1167
+
1168
+ .merchi-product-draft-cta-copy span {
1169
+ font-size: 0.8rem;
1170
+ color: #71717a;
1171
+ }
1172
+
1173
+ .merchi-product-draft-cta-actions {
1174
+ display: flex;
1175
+ flex-wrap: wrap;
1176
+ align-items: center;
1177
+ gap: 0.45rem;
1178
+ }
1179
+
1180
+ .merchi-product-draft-cta-btn {
1181
+ display: inline-flex;
1182
+ align-items: center;
1183
+ justify-content: center;
1184
+ gap: 0.4rem;
1185
+ min-height: 44px;
1186
+ padding: 0.55rem 0.95rem;
1187
+ border: 0;
1188
+ border-radius: 0.7rem;
1189
+ background: #111827;
1190
+ color: #fff;
1191
+ font-weight: 600;
1192
+ font-size: 0.9rem;
1193
+ }
1194
+
1195
+ .merchi-product-draft-cta-reset {
1196
+ appearance: none;
1197
+ border: 0;
1198
+ background: transparent;
1199
+ color: #71717a;
1200
+ font: inherit;
1201
+ font-size: 0.8rem;
1202
+ font-weight: 500;
1203
+ line-height: 1.2;
1204
+ text-decoration: underline;
1205
+ text-underline-offset: 0.15em;
1206
+ cursor: pointer;
1207
+ min-height: 32px;
1208
+ padding: 0 0.25rem;
1209
+ }
1210
+
1211
+ .merchi-product-draft-sheet {
1212
+ position: fixed;
1213
+ inset: 0;
1214
+ z-index: 12000;
1215
+ display: flex;
1216
+ flex-direction: column;
1217
+ width: 100%;
1218
+ height: 100dvh;
1219
+ background: #111111;
1220
+ color: #f4f4f5;
1221
+ padding-bottom: env(safe-area-inset-bottom);
1222
+ }
1223
+
1224
+ .merchi-product-draft-sheet-header {
1225
+ display: flex;
1226
+ align-items: center;
1227
+ gap: 0.75rem;
1228
+ min-height: 56px;
1229
+ padding: 0.5rem 0.75rem;
1230
+ padding-top: calc(0.5rem + env(safe-area-inset-top));
1231
+ }
1232
+
1233
+ .merchi-product-draft-sheet-title {
1234
+ flex: 1;
1235
+ min-width: 0;
1236
+ display: flex;
1237
+ flex-direction: column;
1238
+ }
1239
+
1240
+ .merchi-product-draft-sheet-title strong {
1241
+ font-size: 0.95rem;
1242
+ }
1243
+
1244
+ .merchi-product-draft-sheet-title span {
1245
+ font-size: 0.75rem;
1246
+ color: #a1a1aa;
1247
+ }
1248
+
1249
+ .merchi-product-draft-icon-btn,
1250
+ .merchi-product-draft-done-btn,
1251
+ .merchi-product-draft-stepper {
1252
+ display: inline-flex;
1253
+ align-items: center;
1254
+ justify-content: center;
1255
+ gap: 0.35rem;
1256
+ min-width: 44px;
1257
+ min-height: 44px;
1258
+ width: max-content;
1259
+ max-width: none;
1260
+ padding: 0 0.8rem;
1261
+ border: 0;
1262
+ border-radius: 0.7rem;
1263
+ background: #27272a;
1264
+ color: inherit;
1265
+ font: inherit;
1266
+ white-space: nowrap;
1267
+ flex: 0 0 auto;
1268
+ overflow: visible;
1269
+ }
1270
+
1271
+ .merchi-product-draft-icon-btn svg {
1272
+ flex-shrink: 0;
1273
+ }
1274
+
1275
+ .merchi-product-draft-done-btn {
1276
+ padding: 0 0.9rem;
1277
+ background: #16a34a;
1278
+ font-weight: 600;
1279
+ }
1280
+
1281
+ .merchi-product-draft-icon-btn.is-danger {
1282
+ background: #7f1d1d;
1283
+ }
1284
+
1285
+ .merchi-product-draft-chips {
1286
+ display: flex;
1287
+ gap: 0.5rem;
1288
+ overflow-x: auto;
1289
+ padding: 0 0.75rem 0.5rem;
1290
+ -webkit-overflow-scrolling: touch;
1291
+ }
1292
+
1293
+ .merchi-product-draft-chip {
1294
+ flex: 0 0 auto;
1295
+ min-height: 36px;
1296
+ padding: 0.35rem 0.8rem;
1297
+ border: 1px solid #3f3f46;
1298
+ border-radius: 999px;
1299
+ background: transparent;
1300
+ color: inherit;
1301
+ }
1302
+
1303
+ .merchi-product-draft-chip.is-active {
1304
+ background: #f4f4f5;
1305
+ color: #111111;
1306
+ border-color: #f4f4f5;
1307
+ }
1308
+
1309
+ .merchi-product-draft-main {
1310
+ flex: 1;
1311
+ min-height: 0;
1312
+ display: flex;
1313
+ flex-direction: column;
1314
+ }
1315
+
1316
+ .merchi-product-draft-sheet-body {
1317
+ flex: 1;
1318
+ min-height: 0;
1319
+ position: relative;
1320
+ }
1321
+
1322
+ .merchi-product-draft-dock {
1323
+ flex: 0 0 auto;
1324
+ display: flex;
1325
+ flex-direction: column;
1326
+ background: #18181b;
1327
+ border-top: 1px solid #27272a;
1328
+ }
1329
+
1330
+ .merchi-product-draft-canvas,
1331
+ .merchi-product-draft-canvas-fallback {
1332
+ width: 100%;
1333
+ height: 100%;
1334
+ }
1335
+
1336
+ .merchi-product-draft-canvas-fallback {
1337
+ display: flex;
1338
+ align-items: center;
1339
+ justify-content: center;
1340
+ color: #a1a1aa;
1341
+ }
1342
+
1343
+ .merchi-product-draft-error {
1344
+ margin: 0;
1345
+ padding: 0.4rem 0.85rem;
1346
+ color: #fecaca;
1347
+ font-size: 0.8rem;
1348
+ }
1349
+
1350
+ .merchi-product-draft-inspector,
1351
+ .merchi-product-draft-toolbar {
1352
+ display: flex;
1353
+ align-items: center;
1354
+ gap: 0.45rem;
1355
+ overflow-x: auto;
1356
+ padding: 0.45rem 0.75rem;
1357
+ }
1358
+
1359
+ .merchi-product-draft-inspector {
1360
+ flex: 0 0 auto;
1361
+ flex-wrap: wrap;
1362
+ }
1363
+
1364
+ .merchi-product-draft-text-input {
1365
+ flex: 0 0 auto;
1366
+ width: 100%;
1367
+ height: 2.75rem;
1368
+ max-height: 2.75rem;
1369
+ min-height: 0;
1370
+ resize: none;
1371
+ border-radius: 0.6rem;
1372
+ border: 1px solid #3f3f46;
1373
+ background: #09090b;
1374
+ color: inherit;
1375
+ padding: 0.5rem 0.6rem;
1376
+ font: inherit;
1377
+ }
1378
+
1379
+ .merchi-product-draft-icon-btn.is-active {
1380
+ background: #2563eb;
1381
+ }
1382
+
1383
+ .merchi-product-draft-toolbar {
1384
+ justify-content: space-around;
1385
+ border-top: 1px solid #27272a;
1386
+ background: #18181b;
1387
+ }
1388
+
1389
+ .merchi-product-draft-toolbar button {
1390
+ display: flex;
1391
+ flex-direction: column;
1392
+ align-items: center;
1393
+ justify-content: center;
1394
+ gap: 0.2rem;
1395
+ min-width: 64px;
1396
+ min-height: 52px;
1397
+ border: 0;
1398
+ background: transparent;
1399
+ color: inherit;
1400
+ font-size: 0.7rem;
1401
+ }
1402
+
1403
+ .merchi-product-draft-toolbar button:disabled {
1404
+ opacity: 0.4;
1405
+ }
1406
+
1407
+ .merchi-product-draft-color input {
1408
+ width: 44px;
1409
+ height: 44px;
1410
+ padding: 0;
1411
+ border: 0;
1412
+ background: transparent;
1413
+ }
1414
+
1415
+ .merchi-product-draft-font {
1416
+ flex: 1 1 11rem;
1417
+ min-width: 10rem;
1418
+ }
1419
+
1420
+ .merchi-product-draft-font select {
1421
+ width: 100%;
1422
+ min-height: 44px;
1423
+ padding: 0 0.7rem;
1424
+ border: 1px solid #3f3f46;
1425
+ border-radius: 0.6rem;
1426
+ background: #09090b;
1427
+ color: inherit;
1428
+ font: inherit;
1429
+ font-size: 0.85rem;
1430
+ }
1431
+
1432
+ .merchi-product-draft-file {
1433
+ display: none;
1434
+ }
1435
+
1436
+ .merchi-product-draft-layers,
1437
+ .merchi-product-draft-text-sheet {
1438
+ position: absolute;
1439
+ left: 0;
1440
+ right: 0;
1441
+ bottom: 0;
1442
+ z-index: 2;
1443
+ max-height: 45%;
1444
+ overflow: auto;
1445
+ background: #18181b;
1446
+ border-top-left-radius: 1rem;
1447
+ border-top-right-radius: 1rem;
1448
+ padding: 0.9rem 1rem 1rem;
1449
+ }
1450
+
1451
+ .merchi-product-draft-layers-head,
1452
+ .merchi-product-draft-text-sheet {
1453
+ display: flex;
1454
+ flex-direction: column;
1455
+ gap: 0.6rem;
1456
+ }
1457
+
1458
+ .merchi-product-draft-layers-head {
1459
+ flex-direction: row;
1460
+ justify-content: space-between;
1461
+ align-items: center;
1462
+ }
1463
+
1464
+ .merchi-product-draft-layer {
1465
+ display: flex;
1466
+ align-items: center;
1467
+ gap: 0.6rem;
1468
+ width: 100%;
1469
+ min-height: 44px;
1470
+ margin-top: 0.35rem;
1471
+ padding: 0.45rem 0.6rem;
1472
+ border: 0;
1473
+ border-radius: 0.6rem;
1474
+ background: #27272a;
1475
+ color: inherit;
1476
+ text-align: left;
1477
+ }
1478
+
1479
+ .merchi-product-draft-layer.is-active {
1480
+ outline: 2px solid #60a5fa;
1481
+ }
1482
+
1483
+ .merchi-product-draft-layer span {
1484
+ margin-left: auto;
1485
+ color: #a1a1aa;
1486
+ }
1487
+
1488
+ .merchi-product-draft-text-sheet textarea {
1489
+ width: 100%;
1490
+ min-height: 88px;
1491
+ border-radius: 0.6rem;
1492
+ border: 1px solid #3f3f46;
1493
+ background: #09090b;
1494
+ color: inherit;
1495
+ padding: 0.7rem;
1496
+ font: inherit;
1497
+ }
1498
+
1499
+ .merchi-product-draft-text-sheet button {
1500
+ min-height: 44px;
1501
+ border: 0;
1502
+ border-radius: 0.7rem;
1503
+ background: #2563eb;
1504
+ color: #fff;
1505
+ font-weight: 600;
1506
+ }
1507
+
1508
+ .merchi-product-draft-approve {
1509
+ position: fixed;
1510
+ inset: 0;
1511
+ z-index: 12100;
1512
+ display: flex;
1513
+ align-items: flex-end;
1514
+ background: rgba(0, 0, 0, 0.45);
1515
+ }
1516
+
1517
+ .merchi-product-draft-approve-panel {
1518
+ display: flex;
1519
+ flex-direction: column;
1520
+ width: 100%;
1521
+ height: 90dvh;
1522
+ max-height: 90dvh;
1523
+ overflow: hidden;
1524
+ background: #fff;
1525
+ color: #111;
1526
+ border-top-left-radius: 1rem;
1527
+ border-top-right-radius: 1rem;
1528
+ }
1529
+
1530
+ .merchi-product-draft-approve-layout {
1531
+ display: flex;
1532
+ flex-direction: column;
1533
+ min-height: 0;
1534
+ flex: 1;
1535
+ }
1536
+
1537
+ .merchi-product-draft-approve-intro {
1538
+ flex-shrink: 0;
1539
+ padding: 1.1rem 1.15rem 0.9rem;
1540
+ border-bottom: 1px solid #e5e7eb;
1541
+ }
1542
+
1543
+ .merchi-product-draft-approve-intro h2 {
1544
+ margin: 0 0 0.35rem;
1545
+ font-size: 1.05rem;
1546
+ font-weight: 700;
1547
+ }
1548
+
1549
+ .merchi-product-draft-approve-intro p {
1550
+ margin: 0;
1551
+ font-size: 0.9rem;
1552
+ line-height: 1.45;
1553
+ color: #52525b;
1554
+ }
1555
+
1556
+ .merchi-product-draft-approve-body {
1557
+ flex: 1;
1558
+ min-height: 0;
1559
+ overflow: auto;
1560
+ padding: 1rem 1.15rem;
1561
+ }
1562
+
1563
+ .merchi-product-draft-button-container {
1564
+ display: flex;
1565
+ flex-wrap: wrap;
1566
+ justify-content: flex-end;
1567
+ gap: 0.75rem;
1568
+ margin-top: 0;
1569
+ padding: 1rem 1.15rem;
1570
+ border-top: 1px solid #e5e7eb;
1571
+ background: #fff;
1572
+ }
1573
+
1574
+ .merchi-product-draft-approve-footer {
1575
+ display: grid;
1576
+ grid-template-columns: 1fr 1fr;
1577
+ align-items: stretch;
1578
+ gap: 0.75rem;
1579
+ flex-shrink: 0;
1580
+ margin: 0;
1581
+ padding: 1rem 1.15rem;
1582
+ border-top: 1px solid #e5e7eb;
1583
+ background: #fff;
1584
+ }
1585
+
1586
+ .merchi-product-draft-approve-footer > :not(button) {
1587
+ grid-column: 1 / -1;
1588
+ }
1589
+
1590
+ .merchi-product-draft-approve-footer > button {
1591
+ display: inline-flex;
1592
+ align-items: center;
1593
+ justify-content: center;
1594
+ width: 100%;
1595
+ min-width: 0;
1596
+ min-height: 44px;
1597
+ height: 44px;
1598
+ margin: 0;
1599
+ padding: 0 1rem;
1600
+ text-align: center;
1601
+ font-size: 0.95rem;
1602
+ font-weight: 600;
1603
+ line-height: 1;
1604
+ }
1605
+
1606
+ .merchi-product-draft-btn {
1607
+ appearance: none;
1608
+ display: inline-flex;
1609
+ align-items: center;
1610
+ justify-content: center;
1611
+ min-height: 44px;
1612
+ min-width: 7.5rem;
1613
+ padding: 0.65rem 1.2rem;
1614
+ border: 1px solid transparent;
1615
+ border-radius: 0.7rem;
1616
+ background: #f4f4f5;
1617
+ color: #18181b;
1618
+ font: inherit;
1619
+ font-size: 0.9rem;
1620
+ font-weight: 600;
1621
+ line-height: 1.2;
1622
+ cursor: pointer;
1623
+ }
1624
+
1625
+ .merchi-product-draft-btn:disabled {
1626
+ opacity: 0.6;
1627
+ cursor: not-allowed;
1628
+ }
1629
+
1630
+ .merchi-product-draft-btn-secondary {
1631
+ background: #f4f4f5;
1632
+ color: #18181b;
1633
+ border-color: #e4e4e7;
1634
+ }
1635
+
1636
+ .merchi-product-draft-btn-primary {
1637
+ background: var(--primary, #2563eb);
1638
+ color: var(--primary-foreground, #fff);
1639
+ }
1640
+
1641
+ .merchi-product-draft-approve-panel img {
1642
+ display: block;
1643
+ width: 100%;
1644
+ height: auto;
1645
+ border-radius: 0.65rem;
1646
+ background: #f4f4f5;
1647
+ }
1648
+
1649
+ .merchi-product-draft-group-container {
1650
+ margin-bottom: 1rem;
1651
+ }
1652
+
1653
+ .merchi-product-draft-group-title {
1654
+ margin: 0 0 0.5rem;
1655
+ font-size: 0.95rem;
1656
+ }
1657
+
1658
+ @media (min-width: 768px) {
1659
+ .merchi-product-draft-main {
1660
+ flex-direction: row;
1661
+ }
1662
+
1663
+ .merchi-product-draft-dock {
1664
+ width: 220px;
1665
+ border-top: 0;
1666
+ border-left: 1px solid #27272a;
1667
+ overflow: auto;
1668
+ }
1669
+
1670
+ .merchi-product-draft-toolbar,
1671
+ .merchi-product-draft-inspector {
1672
+ flex-direction: column;
1673
+ overflow: visible;
1674
+ justify-content: flex-start;
1675
+ border-top: 0;
1676
+ }
1677
+
1678
+ .merchi-product-draft-toolbar {
1679
+ margin-top: auto;
1680
+ }
1681
+
1682
+ .merchi-product-draft-approve {
1683
+ align-items: center;
1684
+ justify-content: center;
1685
+ }
1686
+
1687
+ .merchi-product-draft-approve-panel {
1688
+ max-width: 560px;
1689
+ height: min(90dvh, 52rem);
1690
+ border-radius: 1rem;
1691
+ }
1692
+ }
1693
+
1694
+ @media (max-width: 767px) {
1695
+ .merchi-product-draft-btn {
1696
+ flex: 1 1 calc(50% - 0.4rem);
1697
+ }
1698
+ }