@instockng/storefront-ui 1.0.95 → 1.0.96

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 (209) hide show
  1. package/dist/components/AddOnsDiscountScreen.d.ts.map +1 -1
  2. package/dist/index107.mjs +1 -1
  3. package/dist/index108.mjs +3 -3
  4. package/dist/index110.mjs +2 -2
  5. package/dist/index111.mjs +2 -28
  6. package/dist/index112.mjs +26 -16
  7. package/dist/index113.mjs +13 -210
  8. package/dist/index114.mjs +194 -159
  9. package/dist/index115.mjs +175 -17
  10. package/dist/index116.mjs +14 -15
  11. package/dist/index117.mjs +15 -25
  12. package/dist/index118.mjs +27 -150
  13. package/dist/index119.mjs +151 -15
  14. package/dist/index120.mjs +13 -24
  15. package/dist/index121.mjs +22 -75
  16. package/dist/index122.mjs +76 -30
  17. package/dist/index123.mjs +32 -139
  18. package/dist/index124.mjs +135 -45
  19. package/dist/index125.mjs +51 -19
  20. package/dist/index126.mjs +15 -19
  21. package/dist/index127.mjs +21 -17
  22. package/dist/index128.mjs +16 -18
  23. package/dist/index129.mjs +17 -13
  24. package/dist/index130.mjs +13 -14
  25. package/dist/index131.mjs +13 -12
  26. package/dist/index132.mjs +14 -58
  27. package/dist/index133.mjs +57 -10
  28. package/dist/index134.mjs +11 -32
  29. package/dist/index135.mjs +32 -17
  30. package/dist/index136.mjs +17 -27
  31. package/dist/index137.mjs +26 -19
  32. package/dist/index138.mjs +20 -12
  33. package/dist/index139.mjs +12 -14
  34. package/dist/index140.mjs +14 -40
  35. package/dist/index141.mjs +40 -16
  36. package/dist/index142.mjs +16 -261
  37. package/dist/index143.mjs +262 -64
  38. package/dist/index144.mjs +69 -7
  39. package/dist/index145.mjs +8 -2
  40. package/dist/index146.mjs +2 -2
  41. package/dist/index147.mjs +2 -33
  42. package/dist/index148.mjs +33 -2
  43. package/dist/index149.mjs +2 -2
  44. package/dist/index150.mjs +21 -2
  45. package/dist/index151.mjs +56 -2
  46. package/dist/index152.mjs +29 -2
  47. package/dist/index153.mjs +7 -2
  48. package/dist/index154.mjs +50 -16
  49. package/dist/index155.mjs +6 -32
  50. package/dist/index156.mjs +11 -37
  51. package/dist/index157.mjs +7 -18
  52. package/dist/index158.mjs +28 -18
  53. package/dist/index159.mjs +2 -2
  54. package/dist/index160.mjs +70 -20
  55. package/dist/index161.mjs +163 -42
  56. package/dist/index162.mjs +2 -2
  57. package/dist/index163.mjs +2 -30
  58. package/dist/index164.mjs +2 -18
  59. package/dist/index165.mjs +18 -2
  60. package/dist/index166.mjs +32 -2
  61. package/dist/index167.mjs +38 -2
  62. package/dist/index168.mjs +18 -2
  63. package/dist/index169.mjs +13 -67
  64. package/dist/index170.mjs +2 -2
  65. package/dist/index171.mjs +15 -48
  66. package/dist/index172.mjs +46 -2
  67. package/dist/index173.mjs +2 -36
  68. package/dist/index174.mjs +20 -142
  69. package/dist/index175.mjs +18 -2
  70. package/dist/index176.mjs +2 -2
  71. package/dist/index177.mjs +2 -19
  72. package/dist/index179.mjs +2 -2
  73. package/dist/index18.mjs +71 -85
  74. package/dist/index180.mjs +64 -18
  75. package/dist/index181.mjs +2 -2
  76. package/dist/index182.mjs +53 -2
  77. package/dist/index183.mjs +2 -24
  78. package/dist/index184.mjs +28 -15
  79. package/dist/index185.mjs +152 -2
  80. package/dist/index186.mjs +2 -2
  81. package/dist/index187.mjs +2 -2
  82. package/dist/index188.mjs +10 -14
  83. package/dist/index189.mjs +2 -2
  84. package/dist/index190.mjs +2 -23
  85. package/dist/index191.mjs +26 -2
  86. package/dist/index192.mjs +2 -2
  87. package/dist/index193.mjs +2 -2
  88. package/dist/index194.mjs +17 -16
  89. package/dist/index195.mjs +23 -2
  90. package/dist/index196.mjs +2 -23
  91. package/dist/index197.mjs +2 -2
  92. package/dist/index198.mjs +2 -2
  93. package/dist/index199.mjs +23 -2
  94. package/dist/index200.mjs +2 -2
  95. package/dist/index201.mjs +23 -2
  96. package/dist/index202.mjs +2 -2
  97. package/dist/index203.mjs +2 -2
  98. package/dist/index204.mjs +2 -2
  99. package/dist/index205.mjs +20 -124
  100. package/dist/index206.mjs +2 -2
  101. package/dist/index207.mjs +20 -71
  102. package/dist/index208.mjs +2 -74
  103. package/dist/index209.mjs +2 -21
  104. package/dist/index210.mjs +2 -56
  105. package/dist/index211.mjs +2 -29
  106. package/dist/index212.mjs +2 -7
  107. package/dist/index213.mjs +2 -52
  108. package/dist/index214.mjs +2 -6
  109. package/dist/index215.mjs +2 -12
  110. package/dist/index216.mjs +127 -7
  111. package/dist/index217.mjs +2 -28
  112. package/dist/index218.mjs +74 -2
  113. package/dist/index219.mjs +73 -69
  114. package/dist/index220.mjs +2 -167
  115. package/dist/index221.mjs +13 -2
  116. package/dist/index222.mjs +7 -2
  117. package/dist/index223.mjs +31 -2
  118. package/dist/index224.mjs +11 -2
  119. package/dist/index225.mjs +3 -107
  120. package/dist/index226.mjs +4 -2
  121. package/dist/index227.mjs +12 -2
  122. package/dist/index228.mjs +4 -36
  123. package/dist/index229.mjs +33 -2
  124. package/dist/index230.mjs +31 -2
  125. package/dist/index231.mjs +28 -2
  126. package/dist/index232.mjs +61 -2
  127. package/dist/index233.mjs +2 -2
  128. package/dist/index234.mjs +2 -2
  129. package/dist/index235.mjs +2 -244
  130. package/dist/index237.mjs +2 -33
  131. package/dist/index238.mjs +2 -65
  132. package/dist/index239.mjs +2 -25
  133. package/dist/index240.mjs +2 -2
  134. package/dist/index241.mjs +108 -2
  135. package/dist/index243.mjs +2 -2
  136. package/dist/index245.mjs +37 -2
  137. package/dist/index246.mjs +2 -2
  138. package/dist/index247.mjs +244 -4
  139. package/dist/index248.mjs +2 -2
  140. package/dist/index249.mjs +33 -2
  141. package/dist/index250.mjs +65 -2
  142. package/dist/index251.mjs +25 -2
  143. package/dist/index252.mjs +2 -13
  144. package/dist/index253.mjs +2 -7
  145. package/dist/index254.mjs +2 -31
  146. package/dist/index255.mjs +2 -11
  147. package/dist/index256.mjs +2 -4
  148. package/dist/index257.mjs +2 -4
  149. package/dist/index258.mjs +2 -12
  150. package/dist/index259.mjs +2 -5
  151. package/dist/index260.mjs +2 -33
  152. package/dist/index261.mjs +4 -31
  153. package/dist/index262.mjs +2 -28
  154. package/dist/index263.mjs +2 -61
  155. package/dist/index264.mjs +2 -2
  156. package/dist/index265.mjs +18 -2
  157. package/dist/index266.mjs +42 -13
  158. package/dist/index267.mjs +2 -47
  159. package/dist/index273.mjs +2 -1
  160. package/dist/index274.mjs +2 -3
  161. package/dist/index275.mjs +2 -2
  162. package/dist/index276.mjs +17 -2
  163. package/dist/index277.mjs +11 -15
  164. package/dist/index278.mjs +6 -13
  165. package/dist/index279.mjs +30 -6
  166. package/dist/index280.mjs +2 -30
  167. package/dist/index40.mjs +1 -1
  168. package/dist/index41.mjs +1 -1
  169. package/dist/index42.mjs +1 -1
  170. package/dist/index43.mjs +1 -1
  171. package/dist/index44.mjs +1 -1
  172. package/dist/index45.mjs +2 -2
  173. package/dist/index47.mjs +2 -2
  174. package/dist/index55.mjs +1 -1
  175. package/dist/index61.mjs +2 -2
  176. package/dist/index62.mjs +1 -1
  177. package/dist/index63.mjs +1 -1
  178. package/dist/index64.mjs +1 -1
  179. package/dist/index65.mjs +1 -1
  180. package/dist/index66.mjs +1 -1
  181. package/dist/index67.mjs +1 -1
  182. package/dist/index68.mjs +1 -1
  183. package/dist/index69.mjs +1 -1
  184. package/dist/index70.mjs +1 -1
  185. package/dist/index71.mjs +1 -1
  186. package/dist/index72.mjs +1 -1
  187. package/dist/index73.mjs +1 -1
  188. package/dist/index74.mjs +1 -1
  189. package/dist/index75.mjs +1 -1
  190. package/dist/index76.mjs +4 -23
  191. package/dist/index77.mjs +23 -2
  192. package/dist/index78.mjs +21 -150
  193. package/dist/index79.mjs +152 -4
  194. package/dist/index80.mjs +2 -23
  195. package/dist/index83.mjs +2 -2
  196. package/dist/index84.mjs +37 -2
  197. package/dist/index85.mjs +42 -5
  198. package/dist/index86.mjs +2 -1134
  199. package/dist/index87.mjs +5 -19
  200. package/dist/index88.mjs +1119 -40
  201. package/dist/index89.mjs +14 -27
  202. package/dist/index90.mjs +55 -2
  203. package/dist/index91.mjs +33 -37
  204. package/dist/index92.mjs +2 -43
  205. package/dist/index95.mjs +5 -5
  206. package/dist/index97.mjs +3 -3
  207. package/dist/styles.css +1 -1
  208. package/package.json +1 -1
  209. package/src/components/AddOnsDiscountScreen.tsx +80 -99
@@ -77,10 +77,10 @@ export function AddOnsDiscountScreen({
77
77
  let fullProduct: any = null;
78
78
  let fullVariant: any = null;
79
79
  for (const group of displayAddons || []) {
80
- const found = group.addons.find((a: any) => a.id === product.id);
80
+ const found = group.addons.find((a) => a.id === product.id);
81
81
  if (found) {
82
82
  fullProduct = found;
83
- fullVariant = found.variants.find((v: any) => v.id === variant.id);
83
+ fullVariant = found.variants.find((v) => v.id === variant.id);
84
84
  break;
85
85
  }
86
86
  }
@@ -134,105 +134,86 @@ export function AddOnsDiscountScreen({
134
134
  </p>
135
135
  </div>
136
136
 
137
- {/* Group by parent product */}
138
- <div className="space-y-6">
139
- {(displayAddons || []).map((group: any) => (
140
- <div key={group.productId}>
141
- {/* Parent product header */}
142
- <div className="flex items-center gap-2 mb-3">
143
- {group.productThumbnailUrl && (
144
- <img
145
- src={group.productThumbnailUrl}
146
- alt={group.productName}
147
- className="w-8 h-8 rounded-full object-cover flex-shrink-0"
148
- />
149
- )}
150
- <p className="text-sm font-medium text-gray-600">
151
- Goes great with {group.productName}
152
- </p>
153
- </div>
154
-
155
- {/* Horizontal scrollable add-on cards */}
156
- <div className="flex gap-3 overflow-x-auto pb-2 -mx-1 px-1 scrollbar-hide">
157
- {group.addons.map((addon: any) => {
158
- const firstVariant = addon.variants[0];
159
- if (!firstVariant) return null;
160
-
161
- const isAdding = addingProductIds.includes(addon.id);
162
- const isAdded = addedProductIds.includes(addon.id);
163
- const discountedPrice = Math.round(firstVariant.price * (1 - addon.discountPercent / 100));
164
-
165
- return (
166
- <div
167
- key={addon.id}
168
- className="flex-shrink-0 w-36 flex flex-col bg-white border border-gray-200 rounded-lg overflow-hidden"
169
- >
170
- {/* Product Image + Badge */}
171
- <div className="relative aspect-square bg-gray-100 overflow-hidden">
172
- {addon.thumbnailUrl ? (
173
- <img
174
- src={addon.thumbnailUrl}
175
- alt={addon.name}
176
- className="absolute inset-0 w-full h-full object-cover"
177
- />
178
- ) : (
179
- <div className="absolute inset-0 w-full h-full flex items-center justify-center">
180
- <Package className="h-8 w-8 text-gray-300" />
181
- </div>
182
- )}
183
- {/* Discount badge */}
184
- <div className="absolute top-1 left-1 bg-red-500 text-white text-xs font-bold px-1.5 py-0.5 rounded">
185
- {addon.discountPercent}% OFF
186
- </div>
187
- </div>
188
-
189
- {/* Product Info */}
190
- <div className="p-2 flex flex-col flex-1">
191
- <h4 className="text-xs font-medium text-gray-900 line-clamp-2 leading-tight min-h-[2.5em]">
192
- {addon.name}
193
- </h4>
194
- <div className="mt-1">
195
- <span className="text-xs text-gray-400 line-through mr-1">
196
- {formatCurrency(firstVariant.price)}
197
- </span>
198
- <span className="text-sm font-bold text-red-600">
199
- {formatCurrency(discountedPrice)}
200
- </span>
201
- </div>
202
-
203
- {/* Add / Added Button */}
204
- <Button
205
- size="sm"
206
- onClick={() => handleAddClick(addon, addon.discountPercent)}
207
- disabled={isAdding || isAdded}
208
- className={cn(
209
- 'w-full text-xs h-7 mt-2',
210
- isAdded
211
- ? 'bg-green-500 hover:bg-green-500 text-white !opacity-100'
212
- : 'bg-red-500 hover:bg-red-600 text-white'
213
- )}
214
- >
215
- {isAdding ? (
216
- <>
217
- <Loader2 className="h-3 w-3 animate-spin" />
218
- Adding...
219
- </>
220
- ) : isAdded ? (
221
- <>
222
- <Check className="h-3 w-3" />
223
- Added
224
- </>
225
- ) : (
226
- 'Add'
227
- )}
228
- </Button>
137
+ {/* All add-ons in a 2-column grid */}
138
+ <div className="grid grid-cols-2 gap-3">
139
+ {(displayAddons || []).flatMap((group) =>
140
+ group.addons.map((addon) => {
141
+ const firstVariant = addon.variants[0];
142
+ if (!firstVariant) return null;
143
+
144
+ const isAdding = addingProductIds.includes(addon.id);
145
+ const isAdded = addedProductIds.includes(addon.id);
146
+ const discountedPrice = Math.round(firstVariant.price * (1 - addon.discountPercent / 100));
147
+
148
+ return (
149
+ <div
150
+ key={addon.id}
151
+ className="flex flex-col bg-white border border-gray-200 rounded-lg overflow-hidden"
152
+ >
153
+ {/* Product Image + Badge */}
154
+ <div className="relative aspect-square bg-gray-100 overflow-hidden">
155
+ {addon.thumbnailUrl ? (
156
+ <img
157
+ src={addon.thumbnailUrl}
158
+ alt={addon.name}
159
+ className="absolute inset-0 w-full h-full object-cover"
160
+ />
161
+ ) : (
162
+ <div className="absolute inset-0 w-full h-full flex items-center justify-center">
163
+ <Package className="h-8 w-8 text-gray-300" />
229
164
  </div>
165
+ )}
166
+ {/* Discount badge */}
167
+ <div className="absolute top-1 left-1 bg-red-500 text-white text-xs font-bold px-1.5 py-0.5 rounded">
168
+ {addon.discountPercent}% OFF
169
+ </div>
170
+ </div>
171
+
172
+ {/* Product Info */}
173
+ <div className="p-2 flex flex-col flex-1">
174
+ <h4 className="text-xs font-medium text-gray-900 line-clamp-2 leading-tight min-h-[2.5em]">
175
+ {addon.name}
176
+ </h4>
177
+ <div className="mt-1">
178
+ <span className="text-xs text-gray-400 line-through mr-1">
179
+ {formatCurrency(firstVariant.price)}
180
+ </span>
181
+ <span className="text-sm font-bold text-red-600">
182
+ {formatCurrency(discountedPrice)}
183
+ </span>
230
184
  </div>
231
- );
232
- })}
233
- </div>
234
- </div>
235
- ))}
185
+
186
+ {/* Add / Added Button */}
187
+ <Button
188
+ size="sm"
189
+ onClick={() => handleAddClick(addon, addon.discountPercent)}
190
+ disabled={isAdding || isAdded}
191
+ className={cn(
192
+ 'w-full text-xs h-7 mt-2',
193
+ isAdded
194
+ ? 'bg-green-500 hover:bg-green-500 text-white !opacity-100'
195
+ : 'bg-red-500 hover:bg-red-600 text-white'
196
+ )}
197
+ >
198
+ {isAdding ? (
199
+ <>
200
+ <Loader2 className="h-3 w-3 animate-spin" />
201
+ Adding...
202
+ </>
203
+ ) : isAdded ? (
204
+ <>
205
+ <Check className="h-3 w-3" />
206
+ Added
207
+ </>
208
+ ) : (
209
+ 'Add'
210
+ )}
211
+ </Button>
212
+ </div>
213
+ </div>
214
+ );
215
+ })
216
+ )}
236
217
  </div>
237
218
  </div>
238
219