@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.
- package/dist/components/AddOnsDiscountScreen.d.ts.map +1 -1
- package/dist/index107.mjs +1 -1
- package/dist/index108.mjs +3 -3
- package/dist/index110.mjs +2 -2
- package/dist/index111.mjs +2 -28
- package/dist/index112.mjs +26 -16
- package/dist/index113.mjs +13 -210
- package/dist/index114.mjs +194 -159
- package/dist/index115.mjs +175 -17
- package/dist/index116.mjs +14 -15
- package/dist/index117.mjs +15 -25
- package/dist/index118.mjs +27 -150
- package/dist/index119.mjs +151 -15
- package/dist/index120.mjs +13 -24
- package/dist/index121.mjs +22 -75
- package/dist/index122.mjs +76 -30
- package/dist/index123.mjs +32 -139
- package/dist/index124.mjs +135 -45
- package/dist/index125.mjs +51 -19
- package/dist/index126.mjs +15 -19
- package/dist/index127.mjs +21 -17
- package/dist/index128.mjs +16 -18
- package/dist/index129.mjs +17 -13
- package/dist/index130.mjs +13 -14
- package/dist/index131.mjs +13 -12
- package/dist/index132.mjs +14 -58
- package/dist/index133.mjs +57 -10
- package/dist/index134.mjs +11 -32
- package/dist/index135.mjs +32 -17
- package/dist/index136.mjs +17 -27
- package/dist/index137.mjs +26 -19
- package/dist/index138.mjs +20 -12
- package/dist/index139.mjs +12 -14
- package/dist/index140.mjs +14 -40
- package/dist/index141.mjs +40 -16
- package/dist/index142.mjs +16 -261
- package/dist/index143.mjs +262 -64
- package/dist/index144.mjs +69 -7
- package/dist/index145.mjs +8 -2
- package/dist/index146.mjs +2 -2
- package/dist/index147.mjs +2 -33
- package/dist/index148.mjs +33 -2
- package/dist/index149.mjs +2 -2
- package/dist/index150.mjs +21 -2
- package/dist/index151.mjs +56 -2
- package/dist/index152.mjs +29 -2
- package/dist/index153.mjs +7 -2
- package/dist/index154.mjs +50 -16
- package/dist/index155.mjs +6 -32
- package/dist/index156.mjs +11 -37
- package/dist/index157.mjs +7 -18
- package/dist/index158.mjs +28 -18
- package/dist/index159.mjs +2 -2
- package/dist/index160.mjs +70 -20
- package/dist/index161.mjs +163 -42
- package/dist/index162.mjs +2 -2
- package/dist/index163.mjs +2 -30
- package/dist/index164.mjs +2 -18
- package/dist/index165.mjs +18 -2
- package/dist/index166.mjs +32 -2
- package/dist/index167.mjs +38 -2
- package/dist/index168.mjs +18 -2
- package/dist/index169.mjs +13 -67
- package/dist/index170.mjs +2 -2
- package/dist/index171.mjs +15 -48
- package/dist/index172.mjs +46 -2
- package/dist/index173.mjs +2 -36
- package/dist/index174.mjs +20 -142
- package/dist/index175.mjs +18 -2
- package/dist/index176.mjs +2 -2
- package/dist/index177.mjs +2 -19
- package/dist/index179.mjs +2 -2
- package/dist/index18.mjs +71 -85
- package/dist/index180.mjs +64 -18
- package/dist/index181.mjs +2 -2
- package/dist/index182.mjs +53 -2
- package/dist/index183.mjs +2 -24
- package/dist/index184.mjs +28 -15
- package/dist/index185.mjs +152 -2
- package/dist/index186.mjs +2 -2
- package/dist/index187.mjs +2 -2
- package/dist/index188.mjs +10 -14
- package/dist/index189.mjs +2 -2
- package/dist/index190.mjs +2 -23
- package/dist/index191.mjs +26 -2
- package/dist/index192.mjs +2 -2
- package/dist/index193.mjs +2 -2
- package/dist/index194.mjs +17 -16
- package/dist/index195.mjs +23 -2
- package/dist/index196.mjs +2 -23
- package/dist/index197.mjs +2 -2
- package/dist/index198.mjs +2 -2
- package/dist/index199.mjs +23 -2
- package/dist/index200.mjs +2 -2
- package/dist/index201.mjs +23 -2
- package/dist/index202.mjs +2 -2
- package/dist/index203.mjs +2 -2
- package/dist/index204.mjs +2 -2
- package/dist/index205.mjs +20 -124
- package/dist/index206.mjs +2 -2
- package/dist/index207.mjs +20 -71
- package/dist/index208.mjs +2 -74
- package/dist/index209.mjs +2 -21
- package/dist/index210.mjs +2 -56
- package/dist/index211.mjs +2 -29
- package/dist/index212.mjs +2 -7
- package/dist/index213.mjs +2 -52
- package/dist/index214.mjs +2 -6
- package/dist/index215.mjs +2 -12
- package/dist/index216.mjs +127 -7
- package/dist/index217.mjs +2 -28
- package/dist/index218.mjs +74 -2
- package/dist/index219.mjs +73 -69
- package/dist/index220.mjs +2 -167
- package/dist/index221.mjs +13 -2
- package/dist/index222.mjs +7 -2
- package/dist/index223.mjs +31 -2
- package/dist/index224.mjs +11 -2
- package/dist/index225.mjs +3 -107
- package/dist/index226.mjs +4 -2
- package/dist/index227.mjs +12 -2
- package/dist/index228.mjs +4 -36
- package/dist/index229.mjs +33 -2
- package/dist/index230.mjs +31 -2
- package/dist/index231.mjs +28 -2
- package/dist/index232.mjs +61 -2
- package/dist/index233.mjs +2 -2
- package/dist/index234.mjs +2 -2
- package/dist/index235.mjs +2 -244
- package/dist/index237.mjs +2 -33
- package/dist/index238.mjs +2 -65
- package/dist/index239.mjs +2 -25
- package/dist/index240.mjs +2 -2
- package/dist/index241.mjs +108 -2
- package/dist/index243.mjs +2 -2
- package/dist/index245.mjs +37 -2
- package/dist/index246.mjs +2 -2
- package/dist/index247.mjs +244 -4
- package/dist/index248.mjs +2 -2
- package/dist/index249.mjs +33 -2
- package/dist/index250.mjs +65 -2
- package/dist/index251.mjs +25 -2
- package/dist/index252.mjs +2 -13
- package/dist/index253.mjs +2 -7
- package/dist/index254.mjs +2 -31
- package/dist/index255.mjs +2 -11
- package/dist/index256.mjs +2 -4
- package/dist/index257.mjs +2 -4
- package/dist/index258.mjs +2 -12
- package/dist/index259.mjs +2 -5
- package/dist/index260.mjs +2 -33
- package/dist/index261.mjs +4 -31
- package/dist/index262.mjs +2 -28
- package/dist/index263.mjs +2 -61
- package/dist/index264.mjs +2 -2
- package/dist/index265.mjs +18 -2
- package/dist/index266.mjs +42 -13
- package/dist/index267.mjs +2 -47
- package/dist/index273.mjs +2 -1
- package/dist/index274.mjs +2 -3
- package/dist/index275.mjs +2 -2
- package/dist/index276.mjs +17 -2
- package/dist/index277.mjs +11 -15
- package/dist/index278.mjs +6 -13
- package/dist/index279.mjs +30 -6
- package/dist/index280.mjs +2 -30
- package/dist/index40.mjs +1 -1
- package/dist/index41.mjs +1 -1
- package/dist/index42.mjs +1 -1
- package/dist/index43.mjs +1 -1
- package/dist/index44.mjs +1 -1
- package/dist/index45.mjs +2 -2
- package/dist/index47.mjs +2 -2
- package/dist/index55.mjs +1 -1
- package/dist/index61.mjs +2 -2
- package/dist/index62.mjs +1 -1
- package/dist/index63.mjs +1 -1
- package/dist/index64.mjs +1 -1
- package/dist/index65.mjs +1 -1
- package/dist/index66.mjs +1 -1
- package/dist/index67.mjs +1 -1
- package/dist/index68.mjs +1 -1
- package/dist/index69.mjs +1 -1
- package/dist/index70.mjs +1 -1
- package/dist/index71.mjs +1 -1
- package/dist/index72.mjs +1 -1
- package/dist/index73.mjs +1 -1
- package/dist/index74.mjs +1 -1
- package/dist/index75.mjs +1 -1
- package/dist/index76.mjs +4 -23
- package/dist/index77.mjs +23 -2
- package/dist/index78.mjs +21 -150
- package/dist/index79.mjs +152 -4
- package/dist/index80.mjs +2 -23
- package/dist/index83.mjs +2 -2
- package/dist/index84.mjs +37 -2
- package/dist/index85.mjs +42 -5
- package/dist/index86.mjs +2 -1134
- package/dist/index87.mjs +5 -19
- package/dist/index88.mjs +1119 -40
- package/dist/index89.mjs +14 -27
- package/dist/index90.mjs +55 -2
- package/dist/index91.mjs +33 -37
- package/dist/index92.mjs +2 -43
- package/dist/index95.mjs +5 -5
- package/dist/index97.mjs +3 -3
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- 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
|
|
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
|
|
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
|
-
{/*
|
|
138
|
-
<div className="
|
|
139
|
-
{(displayAddons || []).
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
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
|
-
|
|
234
|
-
|
|
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
|
|