@salesgenterp/ui-components 0.4.554 → 0.4.555

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/index.js CHANGED
@@ -2941,6 +2941,21 @@ var saveExcessPayment = function saveExcessPayment(_ref2) {
2941
2941
  return Promise.reject(e);
2942
2942
  }
2943
2943
  };
2944
+ var verifyExcessPaymentToken = function verifyExcessPaymentToken(_ref3) {
2945
+ var apiEndPoint = _ref3.apiEndPoint,
2946
+ token = _ref3.token,
2947
+ excessPaymentToken = _ref3.excessPaymentToken;
2948
+ try {
2949
+ return Promise.resolve(API({
2950
+ url: "/ecommerce/customer/verifyExcessPaymentLink?token=" + excessPaymentToken,
2951
+ apiEndPoint: apiEndPoint,
2952
+ token: token,
2953
+ method: 'POST'
2954
+ }));
2955
+ } catch (e) {
2956
+ return Promise.reject(e);
2957
+ }
2958
+ };
2944
2959
 
2945
2960
  var ExcessPaymentForm = function ExcessPaymentForm(_ref) {
2946
2961
  var paymentMethods = _ref.paymentMethods,
@@ -3034,7 +3049,8 @@ var ExcessPaymentDialog = function ExcessPaymentDialog(_ref2) {
3034
3049
  token = _ref2.token,
3035
3050
  styles = _ref2.styles,
3036
3051
  onSave = _ref2.onSave,
3037
- customerData = _ref2.customerData;
3052
+ customerData = _ref2.customerData,
3053
+ excessPaymentToken = _ref2.excessPaymentToken;
3038
3054
  var _useForm = reactHookForm.useForm({
3039
3055
  defaultValues: {
3040
3056
  paymentModeId: '',
@@ -3105,26 +3121,51 @@ var ExcessPaymentDialog = function ExcessPaymentDialog(_ref2) {
3105
3121
  token: token,
3106
3122
  asyncService: function asyncService() {
3107
3123
  try {
3108
- return Promise.resolve(getPaymentMethods({
3124
+ return Promise.resolve(verifyExcessPaymentToken({
3109
3125
  apiEndPoint: apiEndPoint,
3110
- token: token
3126
+ token: token,
3127
+ excessPaymentToken: excessPaymentToken
3111
3128
  }));
3112
3129
  } catch (e) {
3113
3130
  return Promise.reject(e);
3114
3131
  }
3115
3132
  }
3116
3133
  }, function (data) {
3117
- var paymentMethods = (data === null || data === void 0 ? void 0 : data.filter(function (item) {
3118
- return item === null || item === void 0 ? void 0 : item.ecommerce;
3119
- })) || [];
3120
- return /*#__PURE__*/React__default.createElement(ExcessPaymentForm, {
3121
- loading: loading,
3122
- paymentMethods: paymentMethods,
3123
- control: control,
3124
- styles: styles,
3125
- handleSubmit: handleSubmit,
3126
- onSubmit: onSubmit,
3127
- onClose: onClose
3134
+ if (data === false) {
3135
+ return /*#__PURE__*/React__default.createElement("div", {
3136
+ style: {
3137
+ color: 'red',
3138
+ textAlign: 'center',
3139
+ padding: '16px 8px'
3140
+ }
3141
+ }, "This excess payment link has already been used. An excess payment was previously added using this link.");
3142
+ }
3143
+ return /*#__PURE__*/React__default.createElement(AsyncDataLoadComponent, {
3144
+ apiEndPoint: apiEndPoint,
3145
+ token: token,
3146
+ asyncService: function asyncService() {
3147
+ try {
3148
+ return Promise.resolve(getPaymentMethods({
3149
+ apiEndPoint: apiEndPoint,
3150
+ token: token
3151
+ }));
3152
+ } catch (e) {
3153
+ return Promise.reject(e);
3154
+ }
3155
+ }
3156
+ }, function (paymentMethodsData) {
3157
+ var paymentMethods = (paymentMethodsData === null || paymentMethodsData === void 0 ? void 0 : paymentMethodsData.filter(function (item) {
3158
+ return item === null || item === void 0 ? void 0 : item.ecommerce;
3159
+ })) || [];
3160
+ return /*#__PURE__*/React__default.createElement(ExcessPaymentForm, {
3161
+ loading: loading,
3162
+ paymentMethods: paymentMethods,
3163
+ control: control,
3164
+ styles: styles,
3165
+ handleSubmit: handleSubmit,
3166
+ onSubmit: onSubmit,
3167
+ onClose: onClose
3168
+ });
3128
3169
  });
3129
3170
  })));
3130
3171
  };
@@ -3147,7 +3188,7 @@ var totalIcons = [{
3147
3188
  icon: /*#__PURE__*/React__default.createElement(tb.TbFileDollar, null)
3148
3189
  }];
3149
3190
  var Dashboard = function Dashboard(_ref) {
3150
- var _customerData$custome, _selectDates$salesOrd, _selectDates$recentIn, _selectDates$salesOrd2, _selectDates$recentIn2, _customerData$custome2, _customerData$custome3, _customerData$custome4;
3191
+ var _queryParams$excessPa, _customerData$custome, _selectDates$salesOrd, _selectDates$recentIn, _selectDates$salesOrd2, _selectDates$recentIn2, _customerData$custome2, _customerData$custome3, _customerData$custome4;
3151
3192
  var apiEndPoint = _ref.apiEndPoint,
3152
3193
  serviceApiEndPoint = _ref.serviceApiEndPoint,
3153
3194
  token = _ref.token,
@@ -3514,6 +3555,7 @@ var Dashboard = function Dashboard(_ref) {
3514
3555
  setTriggerTableData: setTriggerTableData,
3515
3556
  styles: styles
3516
3557
  }), (isExcessPaymentModal === null || isExcessPaymentModal === void 0 ? void 0 : isExcessPaymentModal.open) && /*#__PURE__*/React__default.createElement(ExcessPaymentDialog, {
3558
+ excessPaymentToken: (_queryParams$excessPa = queryParams === null || queryParams === void 0 ? void 0 : queryParams.excessPayment) != null ? _queryParams$excessPa : '',
3517
3559
  customerData: customerData,
3518
3560
  apiEndPoint: apiEndPoint,
3519
3561
  token: token,
@@ -8161,6 +8203,10 @@ var formatCurrency = function formatCurrency(amount) {
8161
8203
  maximumFractionDigits: 2
8162
8204
  });
8163
8205
  };
8206
+ var getPerQuantitySaveLabel = function getPerQuantitySaveLabel(amount, coupon) {
8207
+ var prefix = (coupon === null || coupon === void 0 ? void 0 : coupon.maxAllowedDiscount) > 0 ? 'Save up to' : 'Save';
8208
+ return prefix + " $" + formatCurrency(amount) + " per quantity";
8209
+ };
8164
8210
  var getUnitSaving = function getUnitSaving(coupon, productPrice) {
8165
8211
  if (coupon !== null && coupon !== void 0 && coupon.percentage && coupon !== null && coupon !== void 0 && coupon.offPercentage && productPrice > 0) {
8166
8212
  return productPrice * (coupon.offPercentage / 100);
@@ -8179,10 +8225,19 @@ var formatCartCount = function formatCartCount(cartQuantity) {
8179
8225
  var formatRemainingQuantity = function formatRemainingQuantity(remaining) {
8180
8226
  return remaining + " more " + (remaining === 1 ? 'quantity' : 'quantities');
8181
8227
  };
8228
+ var formatQuantityLabel = function formatQuantityLabel(count) {
8229
+ return count + " " + (count === 1 ? 'quantity' : 'quantities');
8230
+ };
8182
8231
  var isBuyXGetFreeProduct = function isBuyXGetFreeProduct(coupon) {
8183
8232
  var _coupon$freeProducts;
8184
8233
  return (coupon === null || coupon === void 0 ? void 0 : coupon.discountType) === 'BuyXGetFreeProduct' || (coupon === null || coupon === void 0 ? void 0 : (_coupon$freeProducts = coupon.freeProducts) === null || _coupon$freeProducts === void 0 ? void 0 : _coupon$freeProducts.length) > 0 && (coupon === null || coupon === void 0 ? void 0 : coupon.quantityToBuy) > 0;
8185
8234
  };
8235
+ var isBuyXGetDiscount = function isBuyXGetDiscount(coupon) {
8236
+ if ((coupon === null || coupon === void 0 ? void 0 : coupon.discountType) === 'BuyXGetDiscount') return true;
8237
+ if (isBuyXGetFreeProduct(coupon)) return false;
8238
+ if (!((coupon === null || coupon === void 0 ? void 0 : coupon.quantityToBuy) > 0) || (coupon === null || coupon === void 0 ? void 0 : coupon.quantityToGet) > 0) return false;
8239
+ return Boolean(coupon === null || coupon === void 0 ? void 0 : coupon.offPercentage) || Boolean(coupon === null || coupon === void 0 ? void 0 : coupon.offAmount);
8240
+ };
8186
8241
  var getBuyXGetFreeProductOffPercent = function getBuyXGetFreeProductOffPercent(coupon) {
8187
8242
  var pct = Number(coupon === null || coupon === void 0 ? void 0 : coupon.offPercentage);
8188
8243
  if (Number.isFinite(pct) && pct > 0) return pct;
@@ -8196,6 +8251,22 @@ var getBuyXGetFreeProductOfferLabel = function getBuyXGetFreeProductOfferLabel(c
8196
8251
  if (offPercent >= 100) return 'free';
8197
8252
  return offPercent + "% off on these products";
8198
8253
  };
8254
+ var getBuyXGetDiscountOffLabel = function getBuyXGetDiscountOffLabel(coupon, productPrice) {
8255
+ if (productPrice === void 0) {
8256
+ productPrice = 0;
8257
+ }
8258
+ if (coupon !== null && coupon !== void 0 && coupon.percentage && coupon !== null && coupon !== void 0 && coupon.offPercentage) {
8259
+ return coupon.offPercentage + "% off";
8260
+ }
8261
+ var unitSaving = getUnitSaving(coupon, productPrice);
8262
+ if (unitSaving) {
8263
+ return "$" + formatCurrency(unitSaving) + " off";
8264
+ }
8265
+ if ((coupon === null || coupon === void 0 ? void 0 : coupon.offAmount) > 0) {
8266
+ return "$" + formatCurrency(coupon.offAmount) + " off";
8267
+ }
8268
+ return 'discount';
8269
+ };
8199
8270
  var getFreeProductHref = function getFreeProductHref(product) {
8200
8271
  return "/product-details/" + paramCase.paramCase((product === null || product === void 0 ? void 0 : product.productAlias) || (product === null || product === void 0 ? void 0 : product.productName) || '') + "?id=" + (product === null || product === void 0 ? void 0 : product.productId);
8201
8272
  };
@@ -8204,8 +8275,8 @@ var getBuyXGetFreeProductMessages = function getBuyXGetFreeProductMessages(quant
8204
8275
  offPercentage = 100;
8205
8276
  }
8206
8277
  var isFullyFree = offPercentage >= 100;
8207
- var buyTimes = quantityToBuy + " " + (quantityToBuy === 1 ? 'time' : 'times');
8208
- var benefitSummary = isFullyFree ? "Buy this product " + buyTimes + ", get " + quantityToGet + " " + (quantityToGet === 1 ? 'free product' : 'free products') : "Buy this product " + buyTimes + ", get " + offPercentage + "% off on these products";
8278
+ var addQtyLabel = formatQuantityLabel(quantityToBuy);
8279
+ var benefitSummary = isFullyFree ? "Add " + addQtyLabel + " of this product and get " + quantityToGet + " " + (quantityToGet === 1 ? 'free product' : 'free products') : "Add " + addQtyLabel + " of this product and get " + offPercentage + "% off on these products";
8209
8280
  var lines = [benefitSummary];
8210
8281
  if (cartQuantity <= 0) {
8211
8282
  return lines;
@@ -8221,7 +8292,7 @@ var getBuyXGetFreeProductMessages = function getBuyXGetFreeProductMessages(quant
8221
8292
  };
8222
8293
  var getBuyXGetYMessages = function getBuyXGetYMessages(quantityToBuy, quantityToGet, cartQuantity) {
8223
8294
  var totalNeeded = quantityToBuy + quantityToGet;
8224
- var lines = ["Buy " + quantityToBuy + ", get " + quantityToGet + " for free"];
8295
+ var lines = ["Add " + formatQuantityLabel(quantityToBuy) + ", get " + formatQuantityLabel(quantityToGet) + " for free"];
8225
8296
  if (cartQuantity <= 0) {
8226
8297
  return lines;
8227
8298
  }
@@ -8234,8 +8305,34 @@ var getBuyXGetYMessages = function getBuyXGetYMessages(quantityToBuy, quantityTo
8234
8305
  lines.push(formatCartCount(cartQuantity));
8235
8306
  lines.push("Add " + formatRemainingQuantity(_remaining) + " to apply this coupon");
8236
8307
  } else {
8237
- var freeLabel = quantityToGet === 1 ? 'item' : 'items';
8238
- lines.push(formatCartCount(cartQuantity) + " \xB7 Apply this coupon to get " + quantityToGet + " " + freeLabel + " for free");
8308
+ lines.push(formatCartCount(cartQuantity) + " \xB7 Apply this coupon to get " + formatQuantityLabel(quantityToGet) + " for free");
8309
+ }
8310
+ return lines;
8311
+ };
8312
+ var getBuyXGetDiscountMessages = function getBuyXGetDiscountMessages(coupon, _temp) {
8313
+ var _ref = _temp === void 0 ? {} : _temp,
8314
+ _ref$productPrice = _ref.productPrice,
8315
+ productPrice = _ref$productPrice === void 0 ? 0 : _ref$productPrice,
8316
+ _ref$cartQuantity = _ref.cartQuantity,
8317
+ cartQuantity = _ref$cartQuantity === void 0 ? 0 : _ref$cartQuantity;
8318
+ var quantityToBuy = (coupon === null || coupon === void 0 ? void 0 : coupon.quantityToBuy) || 0;
8319
+ var offLabel = getBuyXGetDiscountOffLabel(coupon, productPrice);
8320
+ var addLabel = formatQuantityLabel(quantityToBuy);
8321
+ var unitSaving = getUnitSaving(coupon, productPrice);
8322
+ var lines = ["Add " + addLabel + ", get " + offLabel];
8323
+ if (unitSaving) {
8324
+ lines[0] = "Add " + addLabel + ", get " + offLabel + " \xB7 " + getPerQuantitySaveLabel(unitSaving, coupon);
8325
+ }
8326
+ if (cartQuantity <= 0) {
8327
+ return lines;
8328
+ }
8329
+ if (cartQuantity < quantityToBuy) {
8330
+ var remaining = quantityToBuy - cartQuantity;
8331
+ lines.push(formatCartCount(cartQuantity));
8332
+ lines.push("Add " + formatRemainingQuantity(remaining) + " to qualify");
8333
+ } else {
8334
+ var totalSaving = unitSaving ? unitSaving * cartQuantity : null;
8335
+ lines.push(totalSaving ? formatCartCount(cartQuantity) + " \xB7 Apply this coupon to get $" + formatCurrency(totalSaving) + " off" : formatCartCount(cartQuantity) + " \xB7 Apply this coupon to get " + offLabel);
8239
8336
  }
8240
8337
  return lines;
8241
8338
  };
@@ -8243,10 +8340,21 @@ var getCouponTypeIcon = function getCouponTypeIcon(coupon) {
8243
8340
  if (isBuyXGetFreeProduct(coupon)) {
8244
8341
  return isFullyFreeBuyXOffer(coupon) ? fi.FiGift : fi.FiPercent;
8245
8342
  }
8343
+ if (isBuyXGetDiscount(coupon)) return fi.FiLayers;
8246
8344
  if ((coupon === null || coupon === void 0 ? void 0 : coupon.quantityToBuy) > 0 && (coupon === null || coupon === void 0 ? void 0 : coupon.quantityToGet) > 0) return fi.FiLayers;
8247
8345
  if (coupon !== null && coupon !== void 0 && coupon.offPercentage) return fi.FiPercent;
8248
8346
  return fi.FiTag;
8249
8347
  };
8348
+ var getCouponLimitMessages = function getCouponLimitMessages(coupon) {
8349
+ var lines = [];
8350
+ if ((coupon === null || coupon === void 0 ? void 0 : coupon.maxAllowedDiscount) > 0) {
8351
+ lines.push("Maximum saving is up to $" + formatCurrency(coupon.maxAllowedDiscount) + ".");
8352
+ }
8353
+ if ((coupon === null || coupon === void 0 ? void 0 : coupon.maxAllowedAmount) > 0) {
8354
+ lines.push("Applies when your order is more than $" + formatCurrency(coupon.maxAllowedAmount) + ".");
8355
+ }
8356
+ return lines;
8357
+ };
8250
8358
  var getDetailMeta = function getDetailMeta(line) {
8251
8359
  if (line.includes('added in the cart') && line.includes('Apply')) {
8252
8360
  return {
@@ -8277,15 +8385,21 @@ var getDetailMeta = function getDetailMeta(line) {
8277
8385
  tone: 'info'
8278
8386
  };
8279
8387
  };
8280
- var getCouponBenefit = function getCouponBenefit(coupon, _temp) {
8281
- var _ref = _temp === void 0 ? {} : _temp,
8282
- _ref$productPrice = _ref.productPrice,
8283
- productPrice = _ref$productPrice === void 0 ? 0 : _ref$productPrice,
8284
- _ref$cartQuantity = _ref.cartQuantity,
8285
- cartQuantity = _ref$cartQuantity === void 0 ? 0 : _ref$cartQuantity;
8388
+ var getCouponBenefit = function getCouponBenefit(coupon, _temp2) {
8389
+ var _ref2 = _temp2 === void 0 ? {} : _temp2,
8390
+ _ref2$productPrice = _ref2.productPrice,
8391
+ productPrice = _ref2$productPrice === void 0 ? 0 : _ref2$productPrice,
8392
+ _ref2$cartQuantity = _ref2.cartQuantity,
8393
+ cartQuantity = _ref2$cartQuantity === void 0 ? 0 : _ref2$cartQuantity;
8286
8394
  if (isBuyXGetFreeProduct(coupon)) {
8287
8395
  return getBuyXGetFreeProductMessages(coupon.quantityToBuy, coupon.quantityToGet, cartQuantity, getBuyXGetFreeProductOffPercent(coupon));
8288
8396
  }
8397
+ if (isBuyXGetDiscount(coupon)) {
8398
+ return getBuyXGetDiscountMessages(coupon, {
8399
+ productPrice: productPrice,
8400
+ cartQuantity: cartQuantity
8401
+ });
8402
+ }
8289
8403
  var hasBuyXGetY = (coupon === null || coupon === void 0 ? void 0 : coupon.quantityToBuy) > 0 && (coupon === null || coupon === void 0 ? void 0 : coupon.quantityToGet) > 0;
8290
8404
  if (hasBuyXGetY) {
8291
8405
  return getBuyXGetYMessages(coupon.quantityToBuy, coupon.quantityToGet, cartQuantity);
@@ -8294,9 +8408,9 @@ var getCouponBenefit = function getCouponBenefit(coupon, _temp) {
8294
8408
  if (!unitSaving) return null;
8295
8409
  var lines = [];
8296
8410
  if (coupon !== null && coupon !== void 0 && coupon.offPercentage) {
8297
- lines.push(coupon.offPercentage + "% off \xB7 Save $" + formatCurrency(unitSaving) + " per item");
8411
+ lines.push(coupon.offPercentage + "% off \xB7 " + getPerQuantitySaveLabel(unitSaving, coupon));
8298
8412
  } else {
8299
- lines.push("Save $" + formatCurrency(unitSaving) + " per item");
8413
+ lines.push(getPerQuantitySaveLabel(unitSaving, coupon));
8300
8414
  }
8301
8415
  if (cartQuantity > 0) {
8302
8416
  var totalSaving = unitSaving * cartQuantity;
@@ -8304,47 +8418,44 @@ var getCouponBenefit = function getCouponBenefit(coupon, _temp) {
8304
8418
  }
8305
8419
  return lines;
8306
8420
  };
8307
- var getSuggestionPreviewText = function getSuggestionPreviewText(coupon, _temp2) {
8308
- var _ref2 = _temp2 === void 0 ? {} : _temp2,
8309
- _ref2$productPrice = _ref2.productPrice,
8310
- productPrice = _ref2$productPrice === void 0 ? 0 : _ref2$productPrice,
8311
- _ref2$cartQuantity = _ref2.cartQuantity,
8312
- cartQuantity = _ref2$cartQuantity === void 0 ? 0 : _ref2$cartQuantity;
8421
+ var getSuggestionPreviewText = function getSuggestionPreviewText(coupon, _temp3) {
8422
+ var _ref3 = _temp3 === void 0 ? {} : _temp3,
8423
+ _ref3$productPrice = _ref3.productPrice,
8424
+ productPrice = _ref3$productPrice === void 0 ? 0 : _ref3$productPrice,
8425
+ _ref3$cartQuantity = _ref3.cartQuantity,
8426
+ cartQuantity = _ref3$cartQuantity === void 0 ? 0 : _ref3$cartQuantity;
8313
8427
  if (!coupon) return null;
8314
8428
  if (isBuyXGetFreeProduct(coupon)) {
8315
- var _quantityToBuy = coupon.quantityToBuy || 1;
8429
+ var quantityToBuy = coupon.quantityToBuy || 1;
8316
8430
  var quantityToGet = coupon.quantityToGet || 1;
8317
- var buyTimes = _quantityToBuy + " " + (_quantityToBuy === 1 ? 'time' : 'times');
8431
+ var addQtyLabel = formatQuantityLabel(quantityToBuy);
8318
8432
  var offPercent = getBuyXGetFreeProductOffPercent(coupon);
8319
8433
  if (offPercent >= 100) {
8320
- return "Buy this product " + buyTimes + ", get " + quantityToGet + " " + (quantityToGet === 1 ? 'free product' : 'free products') + ". Click View All offers to know more";
8434
+ return "Add " + addQtyLabel + " of this product and get " + quantityToGet + " " + (quantityToGet === 1 ? 'free product' : 'free products') + ". Click View All offers to know more";
8321
8435
  }
8322
- return "Buy this product " + buyTimes + ", get " + offPercent + "% off on some products. Click View All offers to know more";
8436
+ return "Add " + addQtyLabel + " of this product and get " + offPercent + "% off on some products. Click View All offers to know more";
8323
8437
  }
8324
- var hasBuyXGetY = (coupon === null || coupon === void 0 ? void 0 : coupon.quantityToBuy) > 0 && (coupon === null || coupon === void 0 ? void 0 : coupon.quantityToGet) > 0;
8325
- if (hasBuyXGetY) {
8438
+ if (isBuyXGetDiscount(coupon)) {
8326
8439
  var _getCouponBenefit;
8327
8440
  return ((_getCouponBenefit = getCouponBenefit(coupon, {
8328
8441
  productPrice: productPrice,
8329
8442
  cartQuantity: cartQuantity
8330
8443
  })) === null || _getCouponBenefit === void 0 ? void 0 : _getCouponBenefit[0]) || null;
8331
8444
  }
8332
- var unitSaving = getUnitSaving(coupon, productPrice);
8333
- var quantityToBuy = coupon === null || coupon === void 0 ? void 0 : coupon.quantityToBuy;
8334
- var hasBuyQuantityRequirement = quantityToBuy > 0 && !((coupon === null || coupon === void 0 ? void 0 : coupon.quantityToGet) > 0);
8335
- if (hasBuyQuantityRequirement && coupon !== null && coupon !== void 0 && coupon.offPercentage && unitSaving) {
8336
- var qtyLabel = quantityToBuy === 1 ? 'quantity' : 'quantities';
8337
- return "Buy " + quantityToBuy + " " + qtyLabel + ", get " + coupon.offPercentage + "% off, save $" + formatCurrency(unitSaving) + " per item";
8338
- }
8339
- if (hasBuyQuantityRequirement && unitSaving) {
8340
- var _qtyLabel = quantityToBuy === 1 ? 'quantity' : 'quantities';
8341
- return "Buy " + quantityToBuy + " " + _qtyLabel + ", save $" + formatCurrency(unitSaving) + " per item";
8445
+ var hasBuyXGetY = (coupon === null || coupon === void 0 ? void 0 : coupon.quantityToBuy) > 0 && (coupon === null || coupon === void 0 ? void 0 : coupon.quantityToGet) > 0;
8446
+ if (hasBuyXGetY) {
8447
+ var _getCouponBenefit2;
8448
+ return ((_getCouponBenefit2 = getCouponBenefit(coupon, {
8449
+ productPrice: productPrice,
8450
+ cartQuantity: cartQuantity
8451
+ })) === null || _getCouponBenefit2 === void 0 ? void 0 : _getCouponBenefit2[0]) || null;
8342
8452
  }
8453
+ var unitSaving = getUnitSaving(coupon, productPrice);
8343
8454
  if (coupon !== null && coupon !== void 0 && coupon.offPercentage && unitSaving) {
8344
- return "get " + coupon.offPercentage + "% off, save $" + formatCurrency(unitSaving) + " per item";
8455
+ return "get " + coupon.offPercentage + "% off, " + getPerQuantitySaveLabel(unitSaving, coupon).toLowerCase();
8345
8456
  }
8346
8457
  if (unitSaving) {
8347
- return "save $" + formatCurrency(unitSaving) + " per item";
8458
+ return getPerQuantitySaveLabel(unitSaving, coupon).toLowerCase();
8348
8459
  }
8349
8460
  return null;
8350
8461
  };
@@ -8364,6 +8475,23 @@ var getSavingsBadge = function getSavingsBadge(coupon, productPrice) {
8364
8475
  bottom: 'GIFT'
8365
8476
  };
8366
8477
  }
8478
+ if (isBuyXGetDiscount(coupon)) {
8479
+ if (coupon !== null && coupon !== void 0 && coupon.percentage && coupon !== null && coupon !== void 0 && coupon.offPercentage) {
8480
+ return {
8481
+ variant: 'percent',
8482
+ top: coupon.offPercentage + "%",
8483
+ bottom: 'OFF'
8484
+ };
8485
+ }
8486
+ var _unitSaving = getUnitSaving(coupon, productPrice);
8487
+ if (_unitSaving) {
8488
+ return {
8489
+ variant: 'amount',
8490
+ top: "$" + formatCurrency(_unitSaving),
8491
+ bottom: 'SAVE'
8492
+ };
8493
+ }
8494
+ }
8367
8495
  if ((coupon === null || coupon === void 0 ? void 0 : coupon.quantityToBuy) > 0 && (coupon === null || coupon === void 0 ? void 0 : coupon.quantityToGet) > 0) {
8368
8496
  return {
8369
8497
  variant: 'bogo',
@@ -8408,8 +8536,29 @@ var getProgressInfo = function getProgressInfo(coupon, cartQuantity) {
8408
8536
  target: _target,
8409
8537
  percent: _percent,
8410
8538
  qualified: qualified,
8411
- unitLabel: _target === 1 ? 'Item' : 'Items',
8412
- message: qualified ? "You're eligible — apply your code at checkout!" : _remaining2 === 1 ? "Only 1 more item to unlock " + unlockLabel + "!" : "Only " + _remaining2 + " more items to unlock " + unlockLabel + "!"
8539
+ unitLabel: _target === 1 ? 'Quantity' : 'Quantities',
8540
+ message: qualified ? "You're eligible — apply your code at checkout!" : _remaining2 === 1 ? "Only 1 more quantity to unlock " + unlockLabel + "!" : "Only " + _remaining2 + " more quantities to unlock " + unlockLabel + "!"
8541
+ };
8542
+ }
8543
+ if (isBuyXGetDiscount(coupon)) {
8544
+ var _target2 = coupon.quantityToBuy || 0;
8545
+ if (!_target2) return null;
8546
+ var _current2 = Math.min(cartQuantity, _target2);
8547
+ var _percent2 = Math.min(100, _current2 / _target2 * 100);
8548
+ var _remaining3 = Math.max(0, _target2 - cartQuantity);
8549
+ var _qualified = cartQuantity >= _target2;
8550
+ var offLabel = getBuyXGetDiscountOffLabel(coupon);
8551
+ return {
8552
+ type: 'buyxgetdiscount',
8553
+ current: _current2,
8554
+ target: _target2,
8555
+ percent: _percent2,
8556
+ qualified: _qualified,
8557
+ unitLabel: _target2 === 1 ? 'Quantity' : 'Quantities',
8558
+ showTimeline: true,
8559
+ quantityToBuy: _target2,
8560
+ offLabel: offLabel,
8561
+ message: _qualified ? "You're eligible — apply your code at checkout!" : _remaining3 === 1 ? "Only 1 more quantity to unlock " + offLabel + "!" : "Only " + _remaining3 + " more quantities to unlock " + offLabel + "!"
8413
8562
  };
8414
8563
  }
8415
8564
  var hasBuyXGetY = (coupon === null || coupon === void 0 ? void 0 : coupon.quantityToBuy) > 0 && (coupon === null || coupon === void 0 ? void 0 : coupon.quantityToGet) > 0;
@@ -8427,18 +8576,18 @@ var getProgressInfo = function getProgressInfo(coupon, cartQuantity) {
8427
8576
  };
8428
8577
  }
8429
8578
  if (cartQuantity >= quantityToBuy) {
8430
- var _current2 = cartQuantity;
8431
- var _target2 = totalNeeded;
8432
- var _percent2 = Math.min(100, _current2 / _target2 * 100);
8433
- var _remaining3 = totalNeeded - cartQuantity;
8579
+ var _current3 = cartQuantity;
8580
+ var _target3 = totalNeeded;
8581
+ var _percent3 = Math.min(100, _current3 / _target3 * 100);
8582
+ var _remaining4 = totalNeeded - cartQuantity;
8434
8583
  return {
8435
8584
  type: 'quantity',
8436
- current: _current2,
8437
- target: _target2,
8438
- percent: _percent2,
8585
+ current: _current3,
8586
+ target: _target3,
8587
+ percent: _percent3,
8439
8588
  qualified: false,
8440
- unitLabel: _target2 === 1 ? 'Item' : 'Items',
8441
- message: _remaining3 === 1 ? 'Only 1 more item to apply this coupon' : "Only " + _remaining3 + " more items to apply this coupon",
8589
+ unitLabel: _target3 === 1 ? 'Quantity' : 'Quantities',
8590
+ message: _remaining4 === 1 ? 'Only 1 more quantity to apply this coupon' : "Only " + _remaining4 + " more quantities to apply this coupon",
8442
8591
  showTimeline: true,
8443
8592
  quantityToBuy: quantityToBuy,
8444
8593
  quantityToGet: quantityToGet
@@ -8454,8 +8603,8 @@ var getProgressInfo = function getProgressInfo(coupon, cartQuantity) {
8454
8603
  target: target,
8455
8604
  percent: percent,
8456
8605
  qualified: false,
8457
- unitLabel: target === 1 ? 'Item' : 'Items',
8458
- message: remaining === 1 ? 'Only 1 more item to qualify' : "Only " + remaining + " more items to qualify",
8606
+ unitLabel: target === 1 ? 'Quantity' : 'Quantities',
8607
+ message: remaining === 1 ? 'Only 1 more quantity to qualify' : "Only " + remaining + " more quantities to qualify",
8459
8608
  showTimeline: true,
8460
8609
  quantityToBuy: quantityToBuy,
8461
8610
  quantityToGet: quantityToGet
@@ -8464,17 +8613,17 @@ var getProgressInfo = function getProgressInfo(coupon, cartQuantity) {
8464
8613
  var isProgressDetailLine = function isProgressDetailLine(line) {
8465
8614
  return line === null || line === void 0 ? void 0 : line.startsWith('Add ');
8466
8615
  };
8467
- var DiscountSuggestionsModal = function DiscountSuggestionsModal(_ref3) {
8468
- var open = _ref3.open,
8469
- onClose = _ref3.onClose,
8470
- productName = _ref3.productName,
8471
- _ref3$productDiscount = _ref3.productDiscounts,
8472
- productDiscounts = _ref3$productDiscount === void 0 ? [] : _ref3$productDiscount,
8473
- primaryColor = _ref3.primaryColor,
8474
- _ref3$cartQuantity = _ref3.cartQuantity,
8475
- cartQuantity = _ref3$cartQuantity === void 0 ? 0 : _ref3$cartQuantity,
8476
- _ref3$productPrice = _ref3.productPrice,
8477
- productPrice = _ref3$productPrice === void 0 ? 0 : _ref3$productPrice;
8616
+ var DiscountSuggestionsModal = function DiscountSuggestionsModal(_ref4) {
8617
+ var open = _ref4.open,
8618
+ onClose = _ref4.onClose,
8619
+ productName = _ref4.productName,
8620
+ _ref4$productDiscount = _ref4.productDiscounts,
8621
+ productDiscounts = _ref4$productDiscount === void 0 ? [] : _ref4$productDiscount,
8622
+ primaryColor = _ref4.primaryColor,
8623
+ _ref4$cartQuantity = _ref4.cartQuantity,
8624
+ cartQuantity = _ref4$cartQuantity === void 0 ? 0 : _ref4$cartQuantity,
8625
+ _ref4$productPrice = _ref4.productPrice,
8626
+ productPrice = _ref4$productPrice === void 0 ? 0 : _ref4$productPrice;
8478
8627
  var _useState = React.useState(null),
8479
8628
  copiedCode = _useState[0],
8480
8629
  setCopiedCode = _useState[1];
@@ -8482,7 +8631,7 @@ var DiscountSuggestionsModal = function DiscountSuggestionsModal(_ref3) {
8482
8631
  var copyCouponCode = React.useCallback(function (code) {
8483
8632
  try {
8484
8633
  if (!code) return Promise.resolve();
8485
- var _temp3 = _catch(function () {
8634
+ var _temp4 = _catch(function () {
8486
8635
  var _navigator, _navigator$clipboard;
8487
8636
  return Promise.resolve((_navigator = navigator) === null || _navigator === void 0 ? void 0 : (_navigator$clipboard = _navigator.clipboard) === null || _navigator$clipboard === void 0 ? void 0 : _navigator$clipboard.writeText(code)).then(function () {
8488
8637
  var _window;
@@ -8494,7 +8643,7 @@ var DiscountSuggestionsModal = function DiscountSuggestionsModal(_ref3) {
8494
8643
  }, function (error) {
8495
8644
  console.error('Failed to copy coupon code', error);
8496
8645
  });
8497
- return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(function () {}) : void 0);
8646
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
8498
8647
  } catch (e) {
8499
8648
  return Promise.reject(e);
8500
8649
  }
@@ -8520,10 +8669,10 @@ var DiscountSuggestionsModal = function DiscountSuggestionsModal(_ref3) {
8520
8669
  };
8521
8670
  document.addEventListener('keydown', handleKeyDown);
8522
8671
  return function () {
8523
- scrollLocks.forEach(function (_ref4) {
8524
- var el = _ref4.el,
8525
- overflow = _ref4.overflow,
8526
- overscrollBehavior = _ref4.overscrollBehavior;
8672
+ scrollLocks.forEach(function (_ref5) {
8673
+ var el = _ref5.el,
8674
+ overflow = _ref5.overflow,
8675
+ overscrollBehavior = _ref5.overscrollBehavior;
8527
8676
  el.style.overflow = overflow;
8528
8677
  el.style.overscrollBehavior = overscrollBehavior;
8529
8678
  });
@@ -8588,8 +8737,9 @@ var DiscountSuggestionsModal = function DiscountSuggestionsModal(_ref3) {
8588
8737
  productPrice: productPrice,
8589
8738
  cartQuantity: cartQuantity
8590
8739
  });
8740
+ var limitMessages = getCouponLimitMessages(coupon);
8591
8741
  var benefitSummary = (benefit === null || benefit === void 0 ? void 0 : benefit[0]) || null;
8592
- var benefitDetails = (benefit === null || benefit === void 0 ? void 0 : benefit.length) > 1 ? benefit.slice(1) : [];
8742
+ var benefitDetails = [].concat((benefit === null || benefit === void 0 ? void 0 : benefit.length) > 1 ? benefit.slice(1) : [], limitMessages);
8593
8743
  var statusDetails = benefitDetails.filter(function (line) {
8594
8744
  return !isProgressDetailLine(line);
8595
8745
  });
@@ -8605,7 +8755,8 @@ var DiscountSuggestionsModal = function DiscountSuggestionsModal(_ref3) {
8605
8755
  var savingsBadge = getSavingsBadge(coupon, productPrice);
8606
8756
  var progressInfo = getProgressInfo(coupon, cartQuantity);
8607
8757
  var hasBuyXGetY = (coupon === null || coupon === void 0 ? void 0 : coupon.quantityToBuy) > 0 && (coupon === null || coupon === void 0 ? void 0 : coupon.quantityToGet) > 0;
8608
- var showTimeline = hasBuyXGetY && ((progressInfo === null || progressInfo === void 0 ? void 0 : progressInfo.showTimeline) || (progressInfo === null || progressInfo === void 0 ? void 0 : progressInfo.type) === 'buyxgety');
8758
+ var isQtyDiscount = isBuyXGetDiscount(coupon);
8759
+ var showTimeline = (hasBuyXGetY || isQtyDiscount) && ((progressInfo === null || progressInfo === void 0 ? void 0 : progressInfo.showTimeline) || (progressInfo === null || progressInfo === void 0 ? void 0 : progressInfo.type) === 'buyxgety' || (progressInfo === null || progressInfo === void 0 ? void 0 : progressInfo.type) === 'buyxgetdiscount');
8609
8760
  return /*#__PURE__*/React__default.createElement(OfferCard, {
8610
8761
  key: (_coupon$discountId = coupon === null || coupon === void 0 ? void 0 : coupon.discountId) != null ? _coupon$discountId : coupon === null || coupon === void 0 ? void 0 : coupon.couponCode,
8611
8762
  $accentColor: accentColor,
@@ -8615,7 +8766,7 @@ var DiscountSuggestionsModal = function DiscountSuggestionsModal(_ref3) {
8615
8766
  $variant: savingsBadge.variant
8616
8767
  }, /*#__PURE__*/React__default.createElement(BadgeTop, null, savingsBadge.top), /*#__PURE__*/React__default.createElement(BadgeBottom, null, savingsBadge.bottom)), /*#__PURE__*/React__default.createElement(CardHeaderCopy, null, /*#__PURE__*/React__default.createElement(CardMetaRow, null, /*#__PURE__*/React__default.createElement(TypePill, {
8617
8768
  $accentColor: accentColor
8618
- }, /*#__PURE__*/React__default.createElement(TypeIcon, null), /*#__PURE__*/React__default.createElement("span", null, isBuyXGetFreeProduct(coupon) ? isFullyFreeOffer ? 'Free Gift' : getBuyXGetFreeProductOffPercent(coupon) + "% Off" : hasBuyXGetY ? 'Buy & Get' : coupon !== null && coupon !== void 0 && coupon.offPercentage ? 'Percent Off' : 'Instant Save')), (progressInfo === null || progressInfo === void 0 ? void 0 : progressInfo.qualified) && /*#__PURE__*/React__default.createElement(QualifiedPill, {
8769
+ }, /*#__PURE__*/React__default.createElement(TypeIcon, null), /*#__PURE__*/React__default.createElement("span", null, isBuyXGetFreeProduct(coupon) ? isFullyFreeOffer ? 'Free Gift' : getBuyXGetFreeProductOffPercent(coupon) + "% Off" : isQtyDiscount ? 'Add & Save' : hasBuyXGetY ? 'Add & Get' : coupon !== null && coupon !== void 0 && coupon.offPercentage ? 'Percent Off' : 'Instant Save')), (progressInfo === null || progressInfo === void 0 ? void 0 : progressInfo.qualified) && /*#__PURE__*/React__default.createElement(QualifiedPill, {
8619
8770
  $accentColor: accentColor
8620
8771
  }, /*#__PURE__*/React__default.createElement(hi2.HiSparkles, null), "Ready")), /*#__PURE__*/React__default.createElement(TitleRow, null, /*#__PURE__*/React__default.createElement(OfferTitle, {
8621
8772
  title: coupon === null || coupon === void 0 ? void 0 : coupon.discountName
@@ -8636,36 +8787,24 @@ var DiscountSuggestionsModal = function DiscountSuggestionsModal(_ref3) {
8636
8787
  onClick: function onClick() {
8637
8788
  return copyCouponCode(coupon === null || coupon === void 0 ? void 0 : coupon.couponCode);
8638
8789
  }
8639
- }, isCopied ? /*#__PURE__*/React__default.createElement("div", {
8640
- style: {
8641
- display: 'flex',
8642
- alignItems: 'center',
8643
- gap: '4px'
8644
- }
8645
- }, /*#__PURE__*/React__default.createElement(fi.FiCheck, null), /*#__PURE__*/React__default.createElement("span", null, "Copied")) : /*#__PURE__*/React__default.createElement("div", {
8646
- style: {
8647
- display: 'flex',
8648
- alignItems: 'center',
8649
- gap: '4px'
8650
- }
8651
- }, /*#__PURE__*/React__default.createElement(fi.FiCopy, null), /*#__PURE__*/React__default.createElement("span", null, "Copy")))))))), benefitSummary && /*#__PURE__*/React__default.createElement(OfferDescription, null, benefitSummary), showTimeline && /*#__PURE__*/React__default.createElement(BuyXTimeline, {
8790
+ }, isCopied ? /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement(fi.FiCheck, null), /*#__PURE__*/React__default.createElement("span", null, "Copied")) : /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement(fi.FiCopy, null), /*#__PURE__*/React__default.createElement("span", null, "Copy")))))))), benefitSummary && /*#__PURE__*/React__default.createElement(OfferDescription, null, benefitSummary), showTimeline && /*#__PURE__*/React__default.createElement(BuyXTimeline, {
8652
8791
  $accentColor: accentColor
8653
8792
  }, /*#__PURE__*/React__default.createElement(TimelineStep, null, /*#__PURE__*/React__default.createElement(TimelineIcon, {
8654
8793
  $accentColor: accentColor
8655
- }, /*#__PURE__*/React__default.createElement(fi.FiShoppingCart, null)), /*#__PURE__*/React__default.createElement(TimelineLabel, null, "Buy ", coupon.quantityToBuy)), /*#__PURE__*/React__default.createElement(TimelineTrack, {
8794
+ }, /*#__PURE__*/React__default.createElement(fi.FiShoppingCart, null)), /*#__PURE__*/React__default.createElement(TimelineLabel, null, "Add ", coupon.quantityToBuy)), /*#__PURE__*/React__default.createElement(TimelineTrack, {
8656
8795
  $accentColor: accentColor
8657
8796
  }, /*#__PURE__*/React__default.createElement(TimelineArrow, {
8658
8797
  $accentColor: accentColor
8659
8798
  })), /*#__PURE__*/React__default.createElement(TimelineStep, null, /*#__PURE__*/React__default.createElement(TimelineIcon, {
8660
8799
  $accentColor: accentColor,
8661
8800
  $highlight: true
8662
- }, /*#__PURE__*/React__default.createElement(fi.FiGift, null)), /*#__PURE__*/React__default.createElement(TimelineLabel, null, "Get ", coupon.quantityToGet, " FREE"))), (progressInfo === null || progressInfo === void 0 ? void 0 : progressInfo.type) === 'quantity' && !progressInfo.qualified && /*#__PURE__*/React__default.createElement(ProgressBlock, null, /*#__PURE__*/React__default.createElement(ProgressTrack, {
8801
+ }, isQtyDiscount ? /*#__PURE__*/React__default.createElement(fi.FiPercent, null) : /*#__PURE__*/React__default.createElement(fi.FiGift, null)), /*#__PURE__*/React__default.createElement(TimelineLabel, null, isQtyDiscount ? "Get " + ((progressInfo === null || progressInfo === void 0 ? void 0 : progressInfo.offLabel) || getBuyXGetDiscountOffLabel(coupon, productPrice)) : "Get " + coupon.quantityToGet + " FREE"))), ((progressInfo === null || progressInfo === void 0 ? void 0 : progressInfo.type) === 'quantity' || (progressInfo === null || progressInfo === void 0 ? void 0 : progressInfo.type) === 'buyxgetdiscount') && !progressInfo.qualified && /*#__PURE__*/React__default.createElement(ProgressBlock, null, /*#__PURE__*/React__default.createElement(ProgressTrack, {
8663
8802
  $accentColor: accentColor,
8664
8803
  role: "progressbar",
8665
8804
  "aria-valuenow": progressInfo.current,
8666
8805
  "aria-valuemin": 0,
8667
8806
  "aria-valuemax": progressInfo.target,
8668
- "aria-label": progressInfo.current + " of " + progressInfo.target + " items toward eligibility"
8807
+ "aria-label": progressInfo.current + " of " + progressInfo.target + " quantities toward eligibility"
8669
8808
  }, /*#__PURE__*/React__default.createElement(ProgressFill, {
8670
8809
  $accentColor: accentColor,
8671
8810
  $percent: progressInfo.percent
@@ -8707,95 +8846,95 @@ var DialogTitle = styled__default.h2(_templateObject11$3 || (_templateObject11$3
8707
8846
  var CloseButton = styled__default.button(_templateObject12$2 || (_templateObject12$2 = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: 0.5rem;\n right: 0.5rem;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n padding: 0;\n border: none;\n border-radius: 50%;\n background: transparent;\n color: rgba(0, 0, 0, 0.54);\n cursor: pointer;\n transition: background-color 0.2s ease;\n\n svg {\n font-size: 1.25rem;\n }\n\n &:hover {\n background-color: rgba(0, 0, 0, 0.04);\n }\n\n &:focus-visible {\n outline: 2px solid #437c0f;\n outline-offset: 1px;\n }\n"])));
8708
8847
  var ScrollableBody = styled__default.div(_templateObject13$2 || (_templateObject13$2 = _taggedTemplateLiteralLoose(["\n flex: 1 1 auto;\n min-height: 0;\n overflow-y: auto;\n overscroll-behavior: contain;\n -webkit-overflow-scrolling: touch;\n padding: 0.85rem;\n"])));
8709
8848
  var EmptyState$1 = styled__default.p(_templateObject14$2 || (_templateObject14$2 = _taggedTemplateLiteralLoose(["\n margin: 0;\n padding: 1.5rem 0.5rem;\n text-align: center;\n font-size: 0.9rem;\n font-weight: 600;\n color: #5a6354;\n"])));
8710
- var SavingsCenter = styled__default.section(_templateObject15$2 || (_templateObject15$2 = _taggedTemplateLiteralLoose(["\n --accent: ", ";\n position: relative;\n width: 100%;\n border-radius: 0.85rem;\n border: 1px solid ", ";\n background: linear-gradient(165deg, #ffffff 0%, #fafcf7 45%, #f6f9f2 100%);\n overflow: hidden;\n box-shadow: 0 1px 2px rgba(16, 22, 10, 0.04),\n 0 8px 24px ", ";\n animation: ", " 0.45s cubic-bezier(0.22, 1, 0.36, 1) both;\n font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI',\n 'Inter', Roboto, sans-serif;\n ", "\n"])), function (_ref5) {
8711
- var $accentColor = _ref5.$accentColor;
8712
- return $accentColor;
8713
- }, function (_ref6) {
8849
+ var SavingsCenter = styled__default.section(_templateObject15$2 || (_templateObject15$2 = _taggedTemplateLiteralLoose(["\n --accent: ", ";\n position: relative;\n width: 100%;\n border-radius: 0.85rem;\n border: 1px solid ", ";\n background: linear-gradient(165deg, #ffffff 0%, #fafcf7 45%, #f6f9f2 100%);\n overflow: hidden;\n box-shadow: 0 1px 2px rgba(16, 22, 10, 0.04),\n 0 8px 24px ", ";\n animation: ", " 0.45s cubic-bezier(0.22, 1, 0.36, 1) both;\n font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI',\n 'Inter', Roboto, sans-serif;\n ", "\n"])), function (_ref6) {
8714
8850
  var $accentColor = _ref6.$accentColor;
8715
- return $accentColor + "20";
8851
+ return $accentColor;
8716
8852
  }, function (_ref7) {
8717
8853
  var $accentColor = _ref7.$accentColor;
8854
+ return $accentColor + "20";
8855
+ }, function (_ref8) {
8856
+ var $accentColor = _ref8.$accentColor;
8718
8857
  return $accentColor + "10";
8719
8858
  }, fadeSlideUp, reducedMotion);
8720
- var AmbientGlow = styled__default.div(_templateObject16$2 || (_templateObject16$2 = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: -40%;\n right: -15%;\n width: 55%;\n height: 80%;\n background: radial-gradient(\n circle,\n ", " 0%,\n transparent 70%\n );\n pointer-events: none;\n"])), function (_ref8) {
8721
- var $accentColor = _ref8.$accentColor;
8859
+ var AmbientGlow = styled__default.div(_templateObject16$2 || (_templateObject16$2 = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: -40%;\n right: -15%;\n width: 55%;\n height: 80%;\n background: radial-gradient(\n circle,\n ", " 0%,\n transparent 70%\n );\n pointer-events: none;\n"])), function (_ref9) {
8860
+ var $accentColor = _ref9.$accentColor;
8722
8861
  return $accentColor + "18";
8723
8862
  });
8724
- var Sparkle = styled__default.span(_templateObject17$2 || (_templateObject17$2 = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: ", ";\n left: ", ";\n width: ", ";\n height: ", ";\n border-radius: 50%;\n background: ", ";\n box-shadow: 0 0 12px ", ";\n animation: ", " 4s ease-in-out infinite;\n animation-delay: ", ";\n pointer-events: none;\n opacity: 0.3;\n\n ", "\n"])), function (_ref9) {
8725
- var $top = _ref9.$top;
8863
+ var Sparkle = styled__default.span(_templateObject17$2 || (_templateObject17$2 = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: ", ";\n left: ", ";\n width: ", ";\n height: ", ";\n border-radius: 50%;\n background: ", ";\n box-shadow: 0 0 12px ", ";\n animation: ", " 4s ease-in-out infinite;\n animation-delay: ", ";\n pointer-events: none;\n opacity: 0.3;\n\n ", "\n"])), function (_ref10) {
8864
+ var $top = _ref10.$top;
8726
8865
  return $top;
8727
- }, function (_ref10) {
8728
- var $left = _ref10.$left;
8729
- return $left;
8730
8866
  }, function (_ref11) {
8731
- var $size = _ref11.$size;
8732
- return $size === 'sm' ? '4px' : '6px';
8867
+ var $left = _ref11.$left;
8868
+ return $left;
8733
8869
  }, function (_ref12) {
8734
8870
  var $size = _ref12.$size;
8735
8871
  return $size === 'sm' ? '4px' : '6px';
8736
8872
  }, function (_ref13) {
8737
- var $accentColor = _ref13.$accentColor;
8738
- return $accentColor;
8873
+ var $size = _ref13.$size;
8874
+ return $size === 'sm' ? '4px' : '6px';
8739
8875
  }, function (_ref14) {
8740
8876
  var $accentColor = _ref14.$accentColor;
8877
+ return $accentColor;
8878
+ }, function (_ref15) {
8879
+ var $accentColor = _ref15.$accentColor;
8741
8880
  return $accentColor + "80";
8742
- }, sparkleFloat, function (_ref15) {
8743
- var $delay = _ref15.$delay;
8881
+ }, sparkleFloat, function (_ref16) {
8882
+ var $delay = _ref16.$delay;
8744
8883
  return $delay;
8745
8884
  }, reducedMotion);
8746
- var SectionHeader = styled__default.header(_templateObject18$2 || (_templateObject18$2 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n gap: 0.6rem;\n padding: 0.65rem 0.8rem;\n background: linear-gradient(\n 135deg,\n ", " 0%,\n ", " 55%,\n transparent 100%\n );\n border-bottom: 1px solid ", ";\n position: relative;\n overflow: hidden;\n\n &::after {\n content: '';\n position: absolute;\n inset: 0;\n background: linear-gradient(\n 105deg,\n transparent 38%,\n rgba(255, 255, 255, 0.45) 50%,\n transparent 62%\n );\n background-size: 200% 100%;\n animation: ", " 6s ease-in-out infinite;\n pointer-events: none;\n }\n\n ", "\n"])), function (_ref16) {
8747
- var $accentColor = _ref16.$accentColor;
8748
- return $accentColor + "16";
8749
- }, function (_ref17) {
8885
+ var SectionHeader = styled__default.header(_templateObject18$2 || (_templateObject18$2 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n gap: 0.6rem;\n padding: 0.65rem 0.8rem;\n background: linear-gradient(\n 135deg,\n ", " 0%,\n ", " 55%,\n transparent 100%\n );\n border-bottom: 1px solid ", ";\n position: relative;\n overflow: hidden;\n\n &::after {\n content: '';\n position: absolute;\n inset: 0;\n background: linear-gradient(\n 105deg,\n transparent 38%,\n rgba(255, 255, 255, 0.45) 50%,\n transparent 62%\n );\n background-size: 200% 100%;\n animation: ", " 6s ease-in-out infinite;\n pointer-events: none;\n }\n\n ", "\n"])), function (_ref17) {
8750
8886
  var $accentColor = _ref17.$accentColor;
8751
- return $accentColor + "05";
8887
+ return $accentColor + "16";
8752
8888
  }, function (_ref18) {
8753
8889
  var $accentColor = _ref18.$accentColor;
8890
+ return $accentColor + "05";
8891
+ }, function (_ref19) {
8892
+ var $accentColor = _ref19.$accentColor;
8754
8893
  return $accentColor + "12";
8755
8894
  }, shimmer, reducedMotion);
8756
- var HeaderIconWrap = styled__default.div(_templateObject19$2 || (_templateObject19$2 = _taggedTemplateLiteralLoose(["\n --icon-shadow: ", ";\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n border-radius: 0.55rem;\n flex-shrink: 0;\n color: #fff;\n background: linear-gradient(\n 145deg,\n ", " 0%,\n ", " 100%\n );\n box-shadow: 0 4px 12px var(--icon-shadow);\n z-index: 1;\n\n svg {\n font-size: 1.05rem;\n }\n"])), function (_ref19) {
8757
- var $accentColor = _ref19.$accentColor;
8758
- return $accentColor + "40";
8759
- }, function (_ref20) {
8895
+ var HeaderIconWrap = styled__default.div(_templateObject19$2 || (_templateObject19$2 = _taggedTemplateLiteralLoose(["\n --icon-shadow: ", ";\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n border-radius: 0.55rem;\n flex-shrink: 0;\n color: #fff;\n background: linear-gradient(\n 145deg,\n ", " 0%,\n ", " 100%\n );\n box-shadow: 0 4px 12px var(--icon-shadow);\n z-index: 1;\n\n svg {\n font-size: 1.05rem;\n }\n"])), function (_ref20) {
8760
8896
  var $accentColor = _ref20.$accentColor;
8761
- return $accentColor;
8897
+ return $accentColor + "40";
8762
8898
  }, function (_ref21) {
8763
8899
  var $accentColor = _ref21.$accentColor;
8900
+ return $accentColor;
8901
+ }, function (_ref22) {
8902
+ var $accentColor = _ref22.$accentColor;
8764
8903
  return $accentColor + "cc";
8765
8904
  });
8766
8905
  var HeaderCopy = styled__default.div(_templateObject20$1 || (_templateObject20$1 = _taggedTemplateLiteralLoose(["\n flex: 1;\n min-width: 0;\n z-index: 1;\n"])));
8767
- var Eyebrow = styled__default.span(_templateObject21$1 || (_templateObject21$1 = _taggedTemplateLiteralLoose(["\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n font-size: 0.6rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n color: ", ";\n\n svg {\n font-size: 0.65rem;\n }\n"])), function (_ref22) {
8768
- var $accentColor = _ref22.$accentColor;
8906
+ var Eyebrow = styled__default.span(_templateObject21$1 || (_templateObject21$1 = _taggedTemplateLiteralLoose(["\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n font-size: 0.6rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n color: ", ";\n\n svg {\n font-size: 0.65rem;\n }\n"])), function (_ref23) {
8907
+ var $accentColor = _ref23.$accentColor;
8769
8908
  return $accentColor;
8770
8909
  });
8771
8910
  var SectionHeading = styled__default.h3(_templateObject22$1 || (_templateObject22$1 = _taggedTemplateLiteralLoose(["\n margin: 0.1rem 0 0;\n font-size: 0.95rem;\n font-weight: 800;\n letter-spacing: -0.02em;\n color: #12180d;\n line-height: 1.2;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n"])));
8772
- var OfferCountBadge = styled__default.div(_templateObject23$1 || (_templateObject23$1 = _taggedTemplateLiteralLoose(["\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n gap: 0.28rem;\n padding: 0.28rem 0.55rem;\n border-radius: 999px;\n background: rgba(18, 24, 13, 0.92);\n color: #f8fff0;\n font-size: 0.65rem;\n font-weight: 600;\n z-index: 1;\n\n strong {\n font-size: 0.82rem;\n font-weight: 800;\n line-height: 1;\n }\n\n svg {\n font-size: 0.72rem;\n color: ", ";\n }\n"])), function (_ref23) {
8773
- var $accentColor = _ref23.$accentColor;
8911
+ var OfferCountBadge = styled__default.div(_templateObject23$1 || (_templateObject23$1 = _taggedTemplateLiteralLoose(["\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n gap: 0.28rem;\n padding: 0.28rem 0.55rem;\n border-radius: 999px;\n background: rgba(18, 24, 13, 0.92);\n color: #f8fff0;\n font-size: 0.65rem;\n font-weight: 600;\n z-index: 1;\n\n strong {\n font-size: 0.82rem;\n font-weight: 800;\n line-height: 1;\n }\n\n svg {\n font-size: 0.72rem;\n color: ", ";\n }\n"])), function (_ref24) {
8912
+ var $accentColor = _ref24.$accentColor;
8774
8913
  return $accentColor;
8775
8914
  });
8776
8915
  var OfferStack = styled__default.div(_templateObject24$1 || (_templateObject24$1 = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n padding: 0.55rem;\n"])));
8777
- var OfferCard = styled__default.article(_templateObject25$1 || (_templateObject25$1 = _taggedTemplateLiteralLoose(["\n border-radius: 0.7rem;\n border: 1px solid ", ";\n background: #fff;\n box-shadow: 0 1px 4px rgba(16, 20, 12, 0.04);\n opacity: 0;\n animation: ", " 0.38s cubic-bezier(0.22, 1, 0.36, 1) forwards;\n animation-delay: ", "s;\n transition: box-shadow 0.2s ease, border-color 0.2s ease;\n overflow: hidden;\n\n &:hover {\n border-color: ", ";\n box-shadow: 0 4px 14px ", ";\n }\n\n &:focus-within {\n outline: 2px solid ", ";\n outline-offset: 1px;\n }\n\n ", "\n"])), function (_ref24) {
8778
- var $accentColor = _ref24.$accentColor;
8916
+ var OfferCard = styled__default.article(_templateObject25$1 || (_templateObject25$1 = _taggedTemplateLiteralLoose(["\n border-radius: 0.7rem;\n border: 1px solid ", ";\n background: #fff;\n box-shadow: 0 1px 4px rgba(16, 20, 12, 0.04);\n opacity: 0;\n animation: ", " 0.38s cubic-bezier(0.22, 1, 0.36, 1) forwards;\n animation-delay: ", "s;\n transition: box-shadow 0.2s ease, border-color 0.2s ease;\n overflow: hidden;\n\n &:hover {\n border-color: ", ";\n box-shadow: 0 4px 14px ", ";\n }\n\n &:focus-within {\n outline: 2px solid ", ";\n outline-offset: 1px;\n }\n\n ", "\n"])), function (_ref25) {
8917
+ var $accentColor = _ref25.$accentColor;
8779
8918
  return $accentColor + "20";
8780
- }, fadeSlideUp, function (_ref25) {
8781
- var $index = _ref25.$index;
8919
+ }, fadeSlideUp, function (_ref26) {
8920
+ var $index = _ref26.$index;
8782
8921
  return 0.06 + $index * 0.04;
8783
- }, function (_ref26) {
8784
- var $accentColor = _ref26.$accentColor;
8785
- return $accentColor + "45";
8786
8922
  }, function (_ref27) {
8787
8923
  var $accentColor = _ref27.$accentColor;
8788
- return $accentColor + "12";
8924
+ return $accentColor + "45";
8789
8925
  }, function (_ref28) {
8790
8926
  var $accentColor = _ref28.$accentColor;
8927
+ return $accentColor + "12";
8928
+ }, function (_ref29) {
8929
+ var $accentColor = _ref29.$accentColor;
8791
8930
  return $accentColor + "50";
8792
8931
  }, reducedMotion);
8793
8932
  var CardBody = styled__default.div(_templateObject26$1 || (_templateObject26$1 = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-direction: column;\n gap: 0.35rem;\n padding: 0.6rem 0.65rem;\n"])));
8794
8933
  var CardHeader = styled__default.div(_templateObject27$1 || (_templateObject27$1 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: flex-start;\n gap: 0.55rem;\n"])));
8795
8934
  var CardHeaderCopy = styled__default.div(_templateObject28$1 || (_templateObject28$1 = _taggedTemplateLiteralLoose(["\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 0.15rem;\n"])));
8796
- var SavingsBadge = styled__default.div(_templateObject29$1 || (_templateObject29$1 = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-width: 3.1rem;\n padding: 0.3rem 0.35rem;\n border-radius: 0.5rem;\n flex-shrink: 0;\n text-align: center;\n color: #fff;\n line-height: 1;\n background: ", ";\n box-shadow: 0 3px 10px ", ";\n"])), function (_ref29) {
8797
- var $accentColor = _ref29.$accentColor,
8798
- $variant = _ref29.$variant;
8935
+ var SavingsBadge = styled__default.div(_templateObject29$1 || (_templateObject29$1 = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-width: 3.1rem;\n padding: 0.3rem 0.35rem;\n border-radius: 0.5rem;\n flex-shrink: 0;\n text-align: center;\n color: #fff;\n line-height: 1;\n background: ", ";\n box-shadow: 0 3px 10px ", ";\n"])), function (_ref30) {
8936
+ var $accentColor = _ref30.$accentColor,
8937
+ $variant = _ref30.$variant;
8799
8938
  if ($variant === 'gift') {
8800
8939
  return "linear-gradient(145deg, #e8a317 0%, #c47d0a 100%)";
8801
8940
  }
@@ -8803,152 +8942,152 @@ var SavingsBadge = styled__default.div(_templateObject29$1 || (_templateObject29
8803
8942
  return "linear-gradient(145deg, " + $accentColor + " 0%, #2d5f0a 100%)";
8804
8943
  }
8805
8944
  return "linear-gradient(145deg, " + $accentColor + " 0%, " + $accentColor + "cc 100%)";
8806
- }, function (_ref30) {
8807
- var $accentColor = _ref30.$accentColor;
8945
+ }, function (_ref31) {
8946
+ var $accentColor = _ref31.$accentColor;
8808
8947
  return $accentColor + "28";
8809
8948
  });
8810
8949
  var BadgeTop = styled__default.span(_templateObject30$1 || (_templateObject30$1 = _taggedTemplateLiteralLoose(["\n font-size: 0.82rem;\n font-weight: 900;\n letter-spacing: -0.02em;\n"])));
8811
8950
  var BadgeBottom = styled__default.span(_templateObject31$1 || (_templateObject31$1 = _taggedTemplateLiteralLoose(["\n margin-top: 0.1rem;\n font-size: 0.52rem;\n font-weight: 800;\n letter-spacing: 0.08em;\n opacity: 0.92;\n"])));
8812
8951
  var CardMetaRow = styled__default.div(_templateObject32$1 || (_templateObject32$1 = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.28rem;\n"])));
8813
- var TypePill = styled__default.span(_templateObject33$1 || (_templateObject33$1 = _taggedTemplateLiteralLoose(["\n display: inline-flex;\n align-items: center;\n gap: 0.22rem;\n padding: 0.12rem 0.4rem;\n border-radius: 999px;\n font-size: 0.6rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: ", ";\n background: ", ";\n border: 1px solid ", ";\n\n svg {\n font-size: 0.65rem;\n }\n"])), function (_ref31) {
8814
- var $accentColor = _ref31.$accentColor;
8815
- return $accentColor;
8816
- }, function (_ref32) {
8952
+ var TypePill = styled__default.span(_templateObject33$1 || (_templateObject33$1 = _taggedTemplateLiteralLoose(["\n display: inline-flex;\n align-items: center;\n gap: 0.22rem;\n padding: 0.12rem 0.4rem;\n border-radius: 999px;\n font-size: 0.6rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: ", ";\n background: ", ";\n border: 1px solid ", ";\n\n svg {\n font-size: 0.65rem;\n }\n"])), function (_ref32) {
8817
8953
  var $accentColor = _ref32.$accentColor;
8818
- return $accentColor + "10";
8954
+ return $accentColor;
8819
8955
  }, function (_ref33) {
8820
8956
  var $accentColor = _ref33.$accentColor;
8957
+ return $accentColor + "10";
8958
+ }, function (_ref34) {
8959
+ var $accentColor = _ref34.$accentColor;
8821
8960
  return $accentColor + "22";
8822
8961
  });
8823
- var QualifiedPill = styled__default.span(_templateObject34$1 || (_templateObject34$1 = _taggedTemplateLiteralLoose(["\n display: inline-flex;\n align-items: center;\n gap: 0.2rem;\n padding: 0.12rem 0.4rem;\n border-radius: 999px;\n font-size: 0.6rem;\n font-weight: 700;\n color: ", ";\n background: ", ";\n border: 1px solid ", ";\n\n svg {\n font-size: 0.62rem;\n }\n"])), function (_ref34) {
8824
- var $accentColor = _ref34.$accentColor;
8825
- return $accentColor;
8826
- }, function (_ref35) {
8962
+ var QualifiedPill = styled__default.span(_templateObject34$1 || (_templateObject34$1 = _taggedTemplateLiteralLoose(["\n display: inline-flex;\n align-items: center;\n gap: 0.2rem;\n padding: 0.12rem 0.4rem;\n border-radius: 999px;\n font-size: 0.6rem;\n font-weight: 700;\n color: ", ";\n background: ", ";\n border: 1px solid ", ";\n\n svg {\n font-size: 0.62rem;\n }\n"])), function (_ref35) {
8827
8963
  var $accentColor = _ref35.$accentColor;
8828
- return $accentColor + "12";
8964
+ return $accentColor;
8829
8965
  }, function (_ref36) {
8830
8966
  var $accentColor = _ref36.$accentColor;
8967
+ return $accentColor + "12";
8968
+ }, function (_ref37) {
8969
+ var $accentColor = _ref37.$accentColor;
8831
8970
  return $accentColor + "30";
8832
8971
  });
8833
8972
  var TitleRow = styled__default.div(_templateObject35 || (_templateObject35 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.45rem;\n min-width: 0;\n flex-wrap: wrap;\n"])));
8834
8973
  var OfferTitle = styled__default.h4(_templateObject36 || (_templateObject36 = _taggedTemplateLiteralLoose(["\n margin: 0;\n flex: 1;\n min-width: 0;\n font-size: 0.88rem;\n font-weight: 800;\n letter-spacing: -0.015em;\n color: #141a10;\n line-height: 1.25;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n"])));
8835
8974
  var OfferDescription = styled__default.p(_templateObject37 || (_templateObject37 = _taggedTemplateLiteralLoose(["\n margin: 0;\n font-size: 0.74rem;\n font-weight: 500;\n color: #4a5540;\n line-height: 1.35;\n"])));
8836
- var BuyXTimeline = styled__default.div(_templateObject38 || (_templateObject38 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n gap: 0.35rem;\n padding: 0.4rem 0.55rem;\n border-radius: 0.5rem;\n background: ", ";\n border: 1px solid ", ";\n"])), function (_ref37) {
8837
- var $accentColor = _ref37.$accentColor;
8838
- return $accentColor + "07";
8839
- }, function (_ref38) {
8975
+ var BuyXTimeline = styled__default.div(_templateObject38 || (_templateObject38 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n gap: 0.35rem;\n padding: 0.4rem 0.55rem;\n border-radius: 0.5rem;\n background: ", ";\n border: 1px solid ", ";\n"])), function (_ref38) {
8840
8976
  var $accentColor = _ref38.$accentColor;
8977
+ return $accentColor + "07";
8978
+ }, function (_ref39) {
8979
+ var $accentColor = _ref39.$accentColor;
8841
8980
  return $accentColor + "14";
8842
8981
  });
8843
8982
  var TimelineStep = styled__default.div(_templateObject39 || (_templateObject39 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n gap: 0.25rem;\n min-width: 0;\n"])));
8844
- var TimelineIcon = styled__default.div(_templateObject40 || (_templateObject40 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1.45rem;\n height: 1.45rem;\n border-radius: 0.35rem;\n color: ", ";\n background: ", ";\n\n svg {\n font-size: 0.72rem;\n }\n"])), function (_ref39) {
8845
- var $accentColor = _ref39.$accentColor,
8846
- $highlight = _ref39.$highlight;
8847
- return $highlight ? '#fff' : $accentColor;
8848
- }, function (_ref40) {
8983
+ var TimelineIcon = styled__default.div(_templateObject40 || (_templateObject40 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1.45rem;\n height: 1.45rem;\n border-radius: 0.35rem;\n color: ", ";\n background: ", ";\n\n svg {\n font-size: 0.72rem;\n }\n"])), function (_ref40) {
8849
8984
  var $accentColor = _ref40.$accentColor,
8850
8985
  $highlight = _ref40.$highlight;
8986
+ return $highlight ? '#fff' : $accentColor;
8987
+ }, function (_ref41) {
8988
+ var $accentColor = _ref41.$accentColor,
8989
+ $highlight = _ref41.$highlight;
8851
8990
  return $highlight ? $accentColor : $accentColor + "14";
8852
8991
  });
8853
8992
  var TimelineLabel = styled__default.span(_templateObject41 || (_templateObject41 = _taggedTemplateLiteralLoose(["\n font-size: 0.65rem;\n font-weight: 700;\n color: #3a4334;\n white-space: nowrap;\n"])));
8854
8993
  var TimelineTrack = styled__default.div(_templateObject42 || (_templateObject42 = _taggedTemplateLiteralLoose(["\n flex: 1;\n display: flex;\n align-items: center;\n min-width: 2rem;\n padding: 0 0.15rem;\n"])));
8855
- var TimelineArrow = styled__default.div(_templateObject43 || (_templateObject43 = _taggedTemplateLiteralLoose(["\n width: 100%;\n height: 2px;\n border-radius: 999px;\n background: linear-gradient(\n 90deg,\n ", ",\n ", "\n );\n position: relative;\n\n &::after {\n content: '';\n position: absolute;\n right: -1px;\n top: 50%;\n transform: translateY(-50%);\n border: 5px solid transparent;\n border-left-color: ", ";\n }\n"])), function (_ref41) {
8856
- var $accentColor = _ref41.$accentColor;
8857
- return $accentColor + "44";
8858
- }, function (_ref42) {
8994
+ var TimelineArrow = styled__default.div(_templateObject43 || (_templateObject43 = _taggedTemplateLiteralLoose(["\n width: 100%;\n height: 2px;\n border-radius: 999px;\n background: linear-gradient(\n 90deg,\n ", ",\n ", "\n );\n position: relative;\n\n &::after {\n content: '';\n position: absolute;\n right: -1px;\n top: 50%;\n transform: translateY(-50%);\n border: 5px solid transparent;\n border-left-color: ", ";\n }\n"])), function (_ref42) {
8859
8995
  var $accentColor = _ref42.$accentColor;
8860
- return $accentColor;
8996
+ return $accentColor + "44";
8861
8997
  }, function (_ref43) {
8862
8998
  var $accentColor = _ref43.$accentColor;
8863
8999
  return $accentColor;
9000
+ }, function (_ref44) {
9001
+ var $accentColor = _ref44.$accentColor;
9002
+ return $accentColor;
8864
9003
  });
8865
9004
  var ProgressBlock = styled__default.div(_templateObject44 || (_templateObject44 = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n"])));
8866
9005
  var ProgressTrack = styled__default.div(_templateObject45 || (_templateObject45 = _taggedTemplateLiteralLoose(["\n width: 100%;\n height: 0.35rem;\n border-radius: 999px;\n background: #e8ede3;\n overflow: hidden;\n"])));
8867
- var ProgressFill = styled__default.div(_templateObject46 || (_templateObject46 = _taggedTemplateLiteralLoose(["\n height: 100%;\n width: ", "%;\n border-radius: 999px;\n background: linear-gradient(\n 90deg,\n ", " 0%,\n ", " 100%\n );\n animation: ", " 0.6s cubic-bezier(0.22, 1, 0.36, 1) both;\n transition: width 0.4s ease;\n\n ", "\n"])), function (_ref44) {
8868
- var $percent = _ref44.$percent;
9006
+ var ProgressFill = styled__default.div(_templateObject46 || (_templateObject46 = _taggedTemplateLiteralLoose(["\n height: 100%;\n width: ", "%;\n border-radius: 999px;\n background: linear-gradient(\n 90deg,\n ", " 0%,\n ", " 100%\n );\n animation: ", " 0.6s cubic-bezier(0.22, 1, 0.36, 1) both;\n transition: width 0.4s ease;\n\n ", "\n"])), function (_ref45) {
9007
+ var $percent = _ref45.$percent;
8869
9008
  return $percent;
8870
- }, function (_ref45) {
8871
- var $accentColor = _ref45.$accentColor;
8872
- return $accentColor + "cc";
8873
9009
  }, function (_ref46) {
8874
9010
  var $accentColor = _ref46.$accentColor;
9011
+ return $accentColor + "cc";
9012
+ }, function (_ref47) {
9013
+ var $accentColor = _ref47.$accentColor;
8875
9014
  return $accentColor;
8876
9015
  }, progressGrow, reducedMotion);
8877
9016
  var ProgressMeta = styled__default.div(_templateObject47 || (_templateObject47 = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: 0.2rem 0.5rem;\n"])));
8878
9017
  var ProgressCount = styled__default.div(_templateObject48 || (_templateObject48 = _taggedTemplateLiteralLoose(["\n font-size: 0.7rem;\n font-weight: 600;\n color: #2f3829;\n\n strong {\n font-size: 0.78rem;\n font-weight: 800;\n }\n\n span {\n color: #6a7364;\n }\n"])));
8879
9018
  var ProgressHint = styled__default.span(_templateObject49 || (_templateObject49 = _taggedTemplateLiteralLoose(["\n font-size: 0.68rem;\n font-weight: 600;\n color: #7a5e12;\n line-height: 1.3;\n"])));
8880
- var SuccessBanner = styled__default.div(_templateObject50 || (_templateObject50 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n gap: 0.3rem;\n padding: 0.32rem 0.5rem;\n border-radius: 0.45rem;\n font-size: 0.7rem;\n font-weight: 600;\n color: ", ";\n background: ", ";\n border: 1px solid ", ";\n\n svg {\n flex-shrink: 0;\n font-size: 0.75rem;\n }\n"])), function (_ref47) {
8881
- var $accentColor = _ref47.$accentColor;
8882
- return $accentColor;
8883
- }, function (_ref48) {
9019
+ var SuccessBanner = styled__default.div(_templateObject50 || (_templateObject50 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n gap: 0.3rem;\n padding: 0.32rem 0.5rem;\n border-radius: 0.45rem;\n font-size: 0.7rem;\n font-weight: 600;\n color: ", ";\n background: ", ";\n border: 1px solid ", ";\n\n svg {\n flex-shrink: 0;\n font-size: 0.75rem;\n }\n"])), function (_ref48) {
8884
9020
  var $accentColor = _ref48.$accentColor;
8885
- return $accentColor + "10";
9021
+ return $accentColor;
8886
9022
  }, function (_ref49) {
8887
9023
  var $accentColor = _ref49.$accentColor;
9024
+ return $accentColor + "10";
9025
+ }, function (_ref50) {
9026
+ var $accentColor = _ref50.$accentColor;
8888
9027
  return $accentColor + "25";
8889
9028
  });
8890
9029
  var StatusList = styled__default.div(_templateObject51 || (_templateObject51 = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n"])));
8891
- var StatusItem = styled__default.div(_templateObject52 || (_templateObject52 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: flex-start;\n gap: 0.3rem;\n padding: 0.28rem 0.45rem;\n border-radius: 0.45rem;\n font-size: 0.7rem;\n font-weight: 600;\n line-height: 1.35;\n opacity: 0;\n animation: ", " 0.28s ease forwards;\n animation-delay: ", "s;\n\n background-color: ", ";\n\n color: ", ";\n\n border: 1px solid\n ", ";\n\n svg {\n flex-shrink: 0;\n margin-top: 0.1rem;\n font-size: 0.82rem;\n }\n\n ", "\n"])), chipIn, function (_ref50) {
8892
- var $chipIndex = _ref50.$chipIndex;
9030
+ var StatusItem = styled__default.div(_templateObject52 || (_templateObject52 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: flex-start;\n gap: 0.3rem;\n padding: 0.28rem 0.45rem;\n border-radius: 0.45rem;\n font-size: 0.7rem;\n font-weight: 600;\n line-height: 1.35;\n opacity: 0;\n animation: ", " 0.28s ease forwards;\n animation-delay: ", "s;\n\n background-color: ", ";\n\n color: ", ";\n\n border: 1px solid\n ", ";\n\n svg {\n flex-shrink: 0;\n margin-top: 0.1rem;\n font-size: 0.82rem;\n }\n\n ", "\n"])), chipIn, function (_ref51) {
9031
+ var $chipIndex = _ref51.$chipIndex;
8893
9032
  return 0.1 + $chipIndex * 0.05;
8894
- }, function (_ref51) {
8895
- var $accentColor = _ref51.$accentColor,
8896
- $tone = _ref51.$tone;
8897
- if ($tone === 'warning') return '#fff8eb';
8898
- if ($tone === 'success') return $accentColor + "10";
8899
- return '#f4f6f1';
8900
9033
  }, function (_ref52) {
8901
9034
  var $accentColor = _ref52.$accentColor,
8902
9035
  $tone = _ref52.$tone;
8903
- if ($tone === 'warning') return '#8a6400';
8904
- if ($tone === 'success') return $accentColor;
8905
- return '#45503c';
9036
+ if ($tone === 'warning') return '#fff8eb';
9037
+ if ($tone === 'success') return $accentColor + "10";
9038
+ return '#f4f6f1';
8906
9039
  }, function (_ref53) {
8907
9040
  var $accentColor = _ref53.$accentColor,
8908
9041
  $tone = _ref53.$tone;
9042
+ if ($tone === 'warning') return '#8a6400';
9043
+ if ($tone === 'success') return $accentColor;
9044
+ return '#45503c';
9045
+ }, function (_ref54) {
9046
+ var $accentColor = _ref54.$accentColor,
9047
+ $tone = _ref54.$tone;
8909
9048
  if ($tone === 'warning') return '#f0d48a';
8910
9049
  if ($tone === 'success') return $accentColor + "28";
8911
9050
  return '#e0e5da';
8912
9051
  }, reducedMotion);
8913
9052
  var GiftSection = styled__default.div(_templateObject53 || (_templateObject53 = _taggedTemplateLiteralLoose(["\n padding-top: 0.35rem;\n border-top: 1px solid #eef1e9;\n"])));
8914
- var GiftSectionHeader = styled__default.div(_templateObject54 || (_templateObject54 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n gap: 0.28rem;\n margin-bottom: 0.3rem;\n font-size: 0.62rem;\n font-weight: 800;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n color: ", ";\n\n svg {\n font-size: 0.72rem;\n }\n"])), function (_ref54) {
8915
- var $accentColor = _ref54.$accentColor;
9053
+ var GiftSectionHeader = styled__default.div(_templateObject54 || (_templateObject54 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n gap: 0.28rem;\n margin-bottom: 0.3rem;\n font-size: 0.62rem;\n font-weight: 800;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n color: ", ";\n\n svg {\n font-size: 0.72rem;\n }\n"])), function (_ref55) {
9054
+ var $accentColor = _ref55.$accentColor;
8916
9055
  return $accentColor;
8917
9056
  });
8918
9057
  var GiftList = styled__default.div(_templateObject55 || (_templateObject55 = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-direction: column;\n gap: 0.22rem;\n"])));
8919
- var GiftLink = styled__default.a(_templateObject56 || (_templateObject56 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.35rem;\n padding: 0.32rem 0.45rem;\n border-radius: 0.4rem;\n border: 1px solid ", ";\n background: #fafcf8;\n color: #2a3325;\n font-size: 0.72rem;\n font-weight: 600;\n line-height: 1.3;\n text-decoration: none;\n cursor: pointer;\n transition: background-color 0.18s ease, border-color 0.18s ease;\n\n span {\n flex: 1;\n min-width: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n svg {\n flex-shrink: 0;\n font-size: 0.72rem;\n color: ", ";\n transition: transform 0.18s ease;\n }\n\n &:hover {\n border-color: ", ";\n background: ", ";\n\n svg {\n transform: translateX(2px);\n }\n }\n\n &:focus-visible {\n outline: 2px solid ", ";\n outline-offset: 1px;\n }\n\n ", "\n"])), function (_ref55) {
8920
- var $accentColor = _ref55.$accentColor;
8921
- return $accentColor + "1e";
8922
- }, function (_ref56) {
9058
+ var GiftLink = styled__default.a(_templateObject56 || (_templateObject56 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.35rem;\n padding: 0.32rem 0.45rem;\n border-radius: 0.4rem;\n border: 1px solid ", ";\n background: #fafcf8;\n color: #2a3325;\n font-size: 0.72rem;\n font-weight: 600;\n line-height: 1.3;\n text-decoration: none;\n cursor: pointer;\n transition: background-color 0.18s ease, border-color 0.18s ease;\n\n span {\n flex: 1;\n min-width: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n svg {\n flex-shrink: 0;\n font-size: 0.72rem;\n color: ", ";\n transition: transform 0.18s ease;\n }\n\n &:hover {\n border-color: ", ";\n background: ", ";\n\n svg {\n transform: translateX(2px);\n }\n }\n\n &:focus-visible {\n outline: 2px solid ", ";\n outline-offset: 1px;\n }\n\n ", "\n"])), function (_ref56) {
8923
9059
  var $accentColor = _ref56.$accentColor;
8924
- return $accentColor;
9060
+ return $accentColor + "1e";
8925
9061
  }, function (_ref57) {
8926
9062
  var $accentColor = _ref57.$accentColor;
8927
9063
  return $accentColor;
8928
9064
  }, function (_ref58) {
8929
9065
  var $accentColor = _ref58.$accentColor;
8930
- return $accentColor + "08";
9066
+ return $accentColor;
8931
9067
  }, function (_ref59) {
8932
9068
  var $accentColor = _ref59.$accentColor;
9069
+ return $accentColor + "08";
9070
+ }, function (_ref60) {
9071
+ var $accentColor = _ref60.$accentColor;
8933
9072
  return $accentColor;
8934
9073
  }, reducedMotion);
8935
9074
  var CodeRow = styled__default.div(_templateObject57 || (_templateObject57 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n gap: 0.3rem;\n flex-shrink: 0;\n"])));
8936
- var CodeValue = styled__default.code(_templateObject58 || (_templateObject58 = _taggedTemplateLiteralLoose(["\n min-width: 0;\n max-width: 8.5rem;\n padding: 0.28rem 0.45rem;\n border-radius: 0.4rem;\n border: 1.5px dashed ", ";\n background: #fff;\n font-family: 'SF Mono', 'JetBrains Mono', Menlo, Consolas, monospace;\n font-size: 0.68rem;\n font-weight: 800;\n letter-spacing: 0.04em;\n color: #141a10;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n"])), function (_ref60) {
8937
- var $accentColor = _ref60.$accentColor;
9075
+ var CodeValue = styled__default.code(_templateObject58 || (_templateObject58 = _taggedTemplateLiteralLoose(["\n min-width: 0;\n max-width: 8.5rem;\n padding: 0.28rem 0.45rem;\n border-radius: 0.4rem;\n border: 1.5px dashed ", ";\n background: #fff;\n font-family: 'SF Mono', 'JetBrains Mono', Menlo, Consolas, monospace;\n font-size: 0.68rem;\n font-weight: 800;\n letter-spacing: 0.04em;\n color: #141a10;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n"])), function (_ref61) {
9076
+ var $accentColor = _ref61.$accentColor;
8938
9077
  return $accentColor;
8939
9078
  });
8940
- var PrimaryCopyButton = styled__default.button(_templateObject59 || (_templateObject59 = _taggedTemplateLiteralLoose(["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.22rem;\n flex-shrink: 0;\n height: 1.7rem;\n padding: 0 0.55rem;\n border: none;\n border-radius: 0.4rem;\n font-size: 0.68rem;\n font-weight: 800;\n color: #fff;\n cursor: pointer;\n background: ", ";\n box-shadow: 0 2px 8px ", ";\n transition: transform 0.15s ease, background 0.2s ease;\n animation: ", " 0.35s ease;\n\n svg {\n font-size: 0.72rem;\n }\n\n &:hover {\n transform: translateY(-1px);\n }\n\n &:active {\n transform: scale(0.98);\n }\n\n &:focus-visible {\n outline: 2px solid ", ";\n outline-offset: 2px;\n }\n\n ", "\n"])), function (_ref61) {
8941
- var $accentColor = _ref61.$accentColor,
8942
- $copied = _ref61.$copied;
9079
+ var PrimaryCopyButton = styled__default.button(_templateObject59 || (_templateObject59 = _taggedTemplateLiteralLoose(["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.22rem;\n flex-shrink: 0;\n height: 1.7rem;\n padding: 0 0.55rem;\n border: none;\n border-radius: 0.4rem;\n font-size: 0.68rem;\n font-weight: 800;\n color: #fff;\n cursor: pointer;\n background: ", ";\n box-shadow: 0 2px 8px ", ";\n transition: transform 0.15s ease, background 0.2s ease;\n animation: ", " 0.35s ease;\n\n svg {\n font-size: 0.72rem;\n }\n\n &:hover {\n transform: translateY(-1px);\n }\n\n &:active {\n transform: scale(0.98);\n }\n\n &:focus-visible {\n outline: 2px solid ", ";\n outline-offset: 2px;\n }\n\n ", "\n"])), function (_ref62) {
9080
+ var $accentColor = _ref62.$accentColor,
9081
+ $copied = _ref62.$copied;
8943
9082
  return $copied ? "linear-gradient(145deg, " + $accentColor + " 0%, " + $accentColor + "dd 100%)" : 'linear-gradient(145deg, #1a2114 0%, #0f140c 100%)';
8944
- }, function (_ref62) {
8945
- var $accentColor = _ref62.$accentColor;
8946
- return $accentColor + "28";
8947
9083
  }, function (_ref63) {
8948
- var $copied = _ref63.$copied;
8949
- return $copied ? copyPop : 'none';
9084
+ var $accentColor = _ref63.$accentColor;
9085
+ return $accentColor + "28";
8950
9086
  }, function (_ref64) {
8951
- var $accentColor = _ref64.$accentColor;
9087
+ var $copied = _ref64.$copied;
9088
+ return $copied ? copyPop : 'none';
9089
+ }, function (_ref65) {
9090
+ var $accentColor = _ref65.$accentColor;
8952
9091
  return $accentColor;
8953
9092
  }, reducedMotion);
8954
9093
 
@@ -9196,7 +9335,7 @@ var CardRow = function CardRow(_ref3) {
9196
9335
  discountName: row === null || row === void 0 ? void 0 : row.couponCode
9197
9336
  }), showDiscountSuggestions && showDiscountButton && firstSuggestion && /*#__PURE__*/React__default.createElement(DiscountSuggestionPreview, {
9198
9337
  coupon: firstSuggestion,
9199
- productPrice: (row === null || row === void 0 ? void 0 : row.standardPrice) || 0,
9338
+ productPrice: (row === null || row === void 0 ? void 0 : row.tierPrice) || (row === null || row === void 0 ? void 0 : row.standardPrice) || 0,
9200
9339
  cartQuantity: (row === null || row === void 0 ? void 0 : row.quantity) || 0,
9201
9340
  primaryColor: accentColor,
9202
9341
  loading: loading,
@@ -9300,7 +9439,7 @@ var CardRow = function CardRow(_ref3) {
9300
9439
  productDiscounts: productDiscounts,
9301
9440
  primaryColor: accentColor,
9302
9441
  cartQuantity: (row === null || row === void 0 ? void 0 : row.quantity) || 0,
9303
- productPrice: (row === null || row === void 0 ? void 0 : row.standardPrice) || 0
9442
+ productPrice: (row === null || row === void 0 ? void 0 : row.tierPrice) || (row === null || row === void 0 ? void 0 : row.standardPrice) || 0
9304
9443
  })));
9305
9444
  };
9306
9445
 
@@ -9754,7 +9893,7 @@ var CartPageProductCard = function CartPageProductCard(_ref3) {
9754
9893
  discountAmount: item === null || item === void 0 ? void 0 : item.discountAmount
9755
9894
  }))), showDiscountSuggestions && showDiscountButton && firstSuggestion && /*#__PURE__*/React__default.createElement(DiscountSuggestionPreview, {
9756
9895
  coupon: firstSuggestion,
9757
- productPrice: (item === null || item === void 0 ? void 0 : item.standardPrice) || 0,
9896
+ productPrice: (item === null || item === void 0 ? void 0 : item.tierPrice) || (item === null || item === void 0 ? void 0 : item.standardPrice) || 0,
9758
9897
  cartQuantity: (item === null || item === void 0 ? void 0 : item.quantity) || 0,
9759
9898
  primaryColor: accentColor,
9760
9899
  loading: loading,
@@ -9818,7 +9957,7 @@ var CartPageProductCard = function CartPageProductCard(_ref3) {
9818
9957
  productDiscounts: productDiscounts,
9819
9958
  primaryColor: accentColor,
9820
9959
  cartQuantity: (item === null || item === void 0 ? void 0 : item.quantity) || 0,
9821
- productPrice: (item === null || item === void 0 ? void 0 : item.standardPrice) || 0
9960
+ productPrice: (item === null || item === void 0 ? void 0 : item.tierPrice) || (item === null || item === void 0 ? void 0 : item.standardPrice) || 0
9822
9961
  }));
9823
9962
  };
9824
9963
 
@@ -13635,7 +13774,7 @@ var Step2 = function Step2(_ref) {
13635
13774
  icon: /*#__PURE__*/React__default.createElement(fi.FiTruck, {
13636
13775
  className: "icon"
13637
13776
  })
13638
- }), /*#__PURE__*/React__default.createElement(StepsContent, null, showShipping && /*#__PURE__*/React__default.createElement(React.Fragment, null, /*#__PURE__*/React__default.createElement(material.Grid, {
13777
+ }), /*#__PURE__*/React__default.createElement(StepsContent, null, showShipping && /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement(material.Grid, {
13639
13778
  container: true
13640
13779
  }, /*#__PURE__*/React__default.createElement(material.Grid, {
13641
13780
  item: true,