@lime-bundles/react 7.5.0 → 7.5.2

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
@@ -708,8 +708,34 @@ function BundleCountdown({
708
708
  ] });
709
709
  }
710
710
 
711
- // src/components/FixedBundle.tsx
711
+ // src/components/ThumbnailPlaceholder.tsx
712
712
  import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
713
+ function PlaceholderMark() {
714
+ return /* @__PURE__ */ jsxs3(
715
+ "svg",
716
+ {
717
+ className: "lb-bundle-placeholder-icon",
718
+ viewBox: "0 0 48 48",
719
+ "data-lb-placeholder": "",
720
+ "aria-hidden": "true",
721
+ focusable: "false",
722
+ children: [
723
+ /* @__PURE__ */ jsx3("rect", { x: "15", y: "15", width: "18", height: "18", rx: "2" }),
724
+ /* @__PURE__ */ jsx3("circle", { cx: "20.5", cy: "20.5", r: "1.5" }),
725
+ /* @__PURE__ */ jsx3("path", { d: "M33 27l-5-5L17 33" })
726
+ ]
727
+ }
728
+ );
729
+ }
730
+ function placeholderBoxClass(boxClass) {
731
+ return `${boxClass} lb-thumb--placeholder`;
732
+ }
733
+ function ThumbnailPlaceholder({ className }) {
734
+ return /* @__PURE__ */ jsx3("div", { className: placeholderBoxClass(className), children: /* @__PURE__ */ jsx3(PlaceholderMark, {}) });
735
+ }
736
+
737
+ // src/components/FixedBundle.tsx
738
+ import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
713
739
  function FixedBundle(props) {
714
740
  const {
715
741
  shopDomain,
@@ -836,9 +862,9 @@ function FixedBundle(props) {
836
862
  }
837
863
  }, [bundle, onAddToCart, onError, trackAddToCart, selectedVariants]);
838
864
  if (result.status === "loading") {
839
- return /* @__PURE__ */ jsxs3("div", { className: `lb-bundle lb-bundle--loading ${className ?? ""}`, children: [
840
- /* @__PURE__ */ jsx3("div", { className: "lb-skeleton lb-skeleton--title" }),
841
- /* @__PURE__ */ jsx3("div", { className: "lb-skeleton lb-skeleton--products" })
865
+ return /* @__PURE__ */ jsxs4("div", { className: `lb-bundle lb-bundle--loading ${className ?? ""}`, children: [
866
+ /* @__PURE__ */ jsx4("div", { className: "lb-skeleton lb-skeleton--title" }),
867
+ /* @__PURE__ */ jsx4("div", { className: "lb-skeleton lb-skeleton--products" })
842
868
  ] });
843
869
  }
844
870
  if (result.status === "error") return null;
@@ -865,7 +891,7 @@ function FixedBundle(props) {
865
891
  const savingsPercent = comparePrice > 0 && savings > 0 ? Math.round(savings / comparePrice * 100) : 0;
866
892
  const showCompare = bundle.widgetConfig.pricing.showComparePrice && savings > 0;
867
893
  const showSavings = bundle.widgetConfig.savingsBar.visible && savings > 0;
868
- return /* @__PURE__ */ jsxs3(
894
+ return /* @__PURE__ */ jsxs4(
869
895
  "div",
870
896
  {
871
897
  ref: (el) => {
@@ -876,18 +902,18 @@ function FixedBundle(props) {
876
902
  role: "region",
877
903
  "aria-label": bundle.title,
878
904
  children: [
879
- /* @__PURE__ */ jsx3("div", { className: "lb-bundle-header", children: /* @__PURE__ */ jsxs3("div", { className: "lb-bundle-header__content", children: [
880
- /* @__PURE__ */ jsx3("h3", { className: "lb-bundle-title", children: bundle.title }),
881
- bundle.description && /* @__PURE__ */ jsx3("p", { className: "lb-bundle-subtitle", children: bundle.description })
905
+ /* @__PURE__ */ jsx4("div", { className: "lb-bundle-header", children: /* @__PURE__ */ jsxs4("div", { className: "lb-bundle-header__content", children: [
906
+ /* @__PURE__ */ jsx4("h3", { className: "lb-bundle-title", children: bundle.title }),
907
+ bundle.description && /* @__PURE__ */ jsx4("p", { className: "lb-bundle-subtitle", children: bundle.description })
882
908
  ] }) }),
883
- /* @__PURE__ */ jsx3(
909
+ /* @__PURE__ */ jsx4(
884
910
  BundleCountdown,
885
911
  {
886
912
  endsAt: bundle.endsAt,
887
913
  widgetConfig: bundle.widgetConfig
888
914
  }
889
915
  ),
890
- /* @__PURE__ */ jsx3("div", { className: "lb-bundle__products lb-edge-fade", ref: productsEdgeFadeRef, children: bundle.products.map((product) => /* @__PURE__ */ jsx3(
916
+ /* @__PURE__ */ jsx4("div", { className: "lb-bundle__products lb-edge-fade", ref: productsEdgeFadeRef, children: bundle.products.map((product) => /* @__PURE__ */ jsx4(
891
917
  FixedProductRow,
892
918
  {
893
919
  bundle,
@@ -898,36 +924,36 @@ function FixedBundle(props) {
898
924
  },
899
925
  product.id
900
926
  )) }),
901
- /* @__PURE__ */ jsx3("div", { className: "lb-bundle-divider" }),
902
- /* @__PURE__ */ jsxs3("div", { className: "lb-bundle-summary", children: [
903
- /* @__PURE__ */ jsxs3("div", { className: "lb-bundle-summary__text", children: [
904
- /* @__PURE__ */ jsx3("span", { className: "lb-bundle-summary__label", children: "Bundle total" }),
905
- showSavings && /* @__PURE__ */ jsxs3("p", { className: "lb-bundle-savings-line", "data-savings-bar": true, children: [
927
+ /* @__PURE__ */ jsx4("div", { className: "lb-bundle-divider" }),
928
+ /* @__PURE__ */ jsxs4("div", { className: "lb-bundle-summary", children: [
929
+ /* @__PURE__ */ jsxs4("div", { className: "lb-bundle-summary__text", children: [
930
+ /* @__PURE__ */ jsx4("span", { className: "lb-bundle-summary__label", children: "Bundle total" }),
931
+ showSavings && /* @__PURE__ */ jsxs4("p", { className: "lb-bundle-savings-line", "data-savings-bar": true, children: [
906
932
  "You save",
907
933
  " ",
908
- /* @__PURE__ */ jsx3("span", { "data-savings-amount": true, children: formatMoney(savings, currency) }),
934
+ /* @__PURE__ */ jsx4("span", { "data-savings-amount": true, children: formatMoney(savings, currency) }),
909
935
  " ",
910
- /* @__PURE__ */ jsxs3("span", { "data-savings-percent": true, children: [
936
+ /* @__PURE__ */ jsxs4("span", { "data-savings-percent": true, children: [
911
937
  "(",
912
938
  savingsPercent,
913
939
  "%)"
914
940
  ] })
915
941
  ] })
916
942
  ] }),
917
- /* @__PURE__ */ jsxs3("span", { className: "lb-bundle-summary__prices", children: [
918
- showCompare && /* @__PURE__ */ jsx3("span", { className: "lb-bundle-compare-price", "data-compare-price": true, children: formatMoney(comparePrice, currency) }),
919
- /* @__PURE__ */ jsx3("span", { className: "lb-bundle-sale-price", "data-sale-price": true, children: formatMoney(salePrice, currency) })
943
+ /* @__PURE__ */ jsxs4("span", { className: "lb-bundle-summary__prices", children: [
944
+ showCompare && /* @__PURE__ */ jsx4("span", { className: "lb-bundle-compare-price", "data-compare-price": true, children: formatMoney(comparePrice, currency) }),
945
+ /* @__PURE__ */ jsx4("span", { className: "lb-bundle-sale-price", "data-sale-price": true, children: formatMoney(salePrice, currency) })
920
946
  ] })
921
947
  ] }),
922
- cartError && /* @__PURE__ */ jsx3("p", { className: "lb-bundle__error", role: "alert", children: cartError }),
923
- /* @__PURE__ */ jsx3(
948
+ cartError && /* @__PURE__ */ jsx4("p", { className: "lb-bundle__error", role: "alert", children: cartError }),
949
+ /* @__PURE__ */ jsx4(
924
950
  "button",
925
951
  {
926
952
  className: "lb-bundle__cta",
927
953
  onClick: handleAddToCart,
928
954
  disabled: addingToCart || oosProductIds.size > 0,
929
955
  "aria-busy": addingToCart,
930
- children: addingToCart ? "Adding..." : oosProductIds.size > 0 ? `${oosProductIds.size} item${oosProductIds.size === 1 ? "" : "s"} unavailable` : bundle.widgetConfig.cta.ctaText ?? "Add Bundle to Cart"
956
+ children: addingToCart ? "Adding to cart" : oosProductIds.size > 0 ? `${oosProductIds.size} item${oosProductIds.size === 1 ? "" : "s"} out of stock` : bundle.widgetConfig.cta.ctaText ?? "Add to cart"
931
957
  }
932
958
  )
933
959
  ]
@@ -970,15 +996,15 @@ function FixedProductRow({ bundle, product, currency, isOos, onVariantChange })
970
996
  bundle.widgetConfig.lowStockThreshold,
971
997
  bundle.widgetConfig.showLowStockBadge
972
998
  );
973
- return /* @__PURE__ */ jsxs3(
999
+ return /* @__PURE__ */ jsxs4(
974
1000
  "div",
975
1001
  {
976
1002
  className: isOos ? "lb-bundle-product-row lb-bundle-product-row--oos" : "lb-bundle-product-row",
977
1003
  "aria-disabled": isOos || void 0,
978
1004
  part: "product",
979
1005
  children: [
980
- isOos && /* @__PURE__ */ jsx3("span", { className: "lb-bundle-product-row__oos", children: "Out of stock" }),
981
- thumbImage && /* @__PURE__ */ jsx3(
1006
+ isOos && /* @__PURE__ */ jsx4("span", { className: "lb-bundle-product-row__oos", children: "Out of stock" }),
1007
+ thumbImage ? /* @__PURE__ */ jsx4(
982
1008
  "img",
983
1009
  {
984
1010
  src: thumbImage.url,
@@ -988,12 +1014,12 @@ function FixedProductRow({ bundle, product, currency, isOos, onVariantChange })
988
1014
  width: thumbImage.width ?? void 0,
989
1015
  height: thumbImage.height ?? void 0
990
1016
  }
991
- ),
992
- /* @__PURE__ */ jsxs3("div", { className: "lb-bundle__product-info", children: [
993
- /* @__PURE__ */ jsx3("p", { className: "lb-bundle__product-title", children: product.title }),
994
- !showPicker && displayVariant && variants.length > 1 && /* @__PURE__ */ jsx3("span", { className: "lb-bundle-variant-badge", children: displayVariant.title }),
995
- /* @__PURE__ */ jsxs3("span", { className: "lb-bundle-product-prices", children: [
996
- compareAt && /* @__PURE__ */ jsx3(
1017
+ ) : /* @__PURE__ */ jsx4(ThumbnailPlaceholder, { className: "lb-bundle__product-image" }),
1018
+ /* @__PURE__ */ jsxs4("div", { className: "lb-bundle__product-info", children: [
1019
+ /* @__PURE__ */ jsx4("p", { className: "lb-bundle__product-title", children: product.title }),
1020
+ !showPicker && displayVariant && variants.length > 1 && /* @__PURE__ */ jsx4("span", { className: "lb-bundle-variant-badge", children: displayVariant.title }),
1021
+ /* @__PURE__ */ jsxs4("span", { className: "lb-bundle-product-prices", children: [
1022
+ compareAt && /* @__PURE__ */ jsx4(
997
1023
  "span",
998
1024
  {
999
1025
  className: "lb-bundle-product-compare-price",
@@ -1001,9 +1027,9 @@ function FixedProductRow({ bundle, product, currency, isOos, onVariantChange })
1001
1027
  children: compareAt
1002
1028
  }
1003
1029
  ),
1004
- /* @__PURE__ */ jsx3("span", { className: "lb-bundle__product-price", "data-product-price": true, children: priceText })
1030
+ /* @__PURE__ */ jsx4("span", { className: "lb-bundle__product-price", "data-product-price": true, children: priceText })
1005
1031
  ] }),
1006
- unitPriceText && /* @__PURE__ */ jsx3(
1032
+ unitPriceText && /* @__PURE__ */ jsx4(
1007
1033
  "span",
1008
1034
  {
1009
1035
  className: "lb-bundle__product-unit-price",
@@ -1011,18 +1037,18 @@ function FixedProductRow({ bundle, product, currency, isOos, onVariantChange })
1011
1037
  children: unitPriceText
1012
1038
  }
1013
1039
  ),
1014
- showLowStock && /* @__PURE__ */ jsxs3("span", { className: "lb-bundle-low-stock-badge", children: [
1040
+ showLowStock && /* @__PURE__ */ jsxs4("span", { className: "lb-bundle-low-stock-badge", children: [
1015
1041
  "Only ",
1016
1042
  displayVariant.quantityAvailable,
1017
1043
  " left"
1018
1044
  ] }),
1019
- showPicker && /* @__PURE__ */ jsx3("div", { className: "lb-bundle__product-variant-pickers", children: optionNames.map((optionName, optionIndex) => {
1045
+ showPicker && /* @__PURE__ */ jsx4("div", { className: "lb-bundle__product-variant-pickers", children: optionNames.map((optionName, optionIndex) => {
1020
1046
  const dropdownOptions = optionsFor(optionIndex).map((o) => ({
1021
1047
  value: o.value,
1022
1048
  label: o.value,
1023
1049
  disabled: o.disabled
1024
1050
  }));
1025
- return /* @__PURE__ */ jsx3(
1051
+ return /* @__PURE__ */ jsx4(
1026
1052
  VariantDropdown,
1027
1053
  {
1028
1054
  options: dropdownOptions,
@@ -1034,7 +1060,7 @@ function FixedProductRow({ bundle, product, currency, isOos, onVariantChange })
1034
1060
  );
1035
1061
  }) })
1036
1062
  ] }),
1037
- displayVariant && /* @__PURE__ */ jsxs3("span", { className: "lb-bundle-qty-chip", "data-qty-inline": true, children: [
1063
+ displayVariant && /* @__PURE__ */ jsxs4("span", { className: "lb-bundle-qty-chip", "data-qty-inline": true, children: [
1038
1064
  "\xD7",
1039
1065
  displayQty
1040
1066
  ] })
@@ -1177,7 +1203,7 @@ function useFocusTrap({
1177
1203
  }
1178
1204
 
1179
1205
  // src/components/MixMatchPicker.tsx
1180
- import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
1206
+ import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
1181
1207
  function ruleFor(bundle, productId, variantId) {
1182
1208
  if (variantId) {
1183
1209
  const vRule = bundle.variantRules[variantId];
@@ -1311,7 +1337,7 @@ function MixMatchPicker({
1311
1337
  // inside carries the interactive role + focus trap. So the static-element
1312
1338
  // interaction lint does not apply to this backdrop.
1313
1339
  // eslint-disable-next-line jsx-a11y/no-static-element-interactions
1314
- /* @__PURE__ */ jsx4(
1340
+ /* @__PURE__ */ jsx5(
1315
1341
  "div",
1316
1342
  {
1317
1343
  ref: (el) => {
@@ -1323,7 +1349,7 @@ function MixMatchPicker({
1323
1349
  "data-bundle-gid": bundle.id,
1324
1350
  onMouseDown: onOverlayMouseDown,
1325
1351
  onMouseUp: onOverlayMouseUp,
1326
- children: /* @__PURE__ */ jsxs4(
1352
+ children: /* @__PURE__ */ jsxs5(
1327
1353
  "div",
1328
1354
  {
1329
1355
  ref: dialogRef,
@@ -1333,13 +1359,13 @@ function MixMatchPicker({
1333
1359
  "aria-labelledby": titleId,
1334
1360
  tabIndex: -1,
1335
1361
  children: [
1336
- /* @__PURE__ */ jsxs4("div", { className: "lb-mix-match__modal-header", children: [
1337
- /* @__PURE__ */ jsxs4("div", { className: "lb-mix-match__modal-header-top", children: [
1338
- /* @__PURE__ */ jsxs4("div", { className: "lb-mix-match__modal-heading", children: [
1339
- /* @__PURE__ */ jsx4("h4", { className: "lb-mix-match__modal-title", id: titleId, children: "Add to your bundle" }),
1340
- /* @__PURE__ */ jsx4("p", { className: "lb-mix-match__modal-subtitle", "data-modal-subtitle": true, children: subtitle })
1362
+ /* @__PURE__ */ jsxs5("div", { className: "lb-mix-match__modal-header", children: [
1363
+ /* @__PURE__ */ jsxs5("div", { className: "lb-mix-match__modal-header-top", children: [
1364
+ /* @__PURE__ */ jsxs5("div", { className: "lb-mix-match__modal-heading", children: [
1365
+ /* @__PURE__ */ jsx5("h4", { className: "lb-mix-match__modal-title", id: titleId, children: "Add to your bundle" }),
1366
+ /* @__PURE__ */ jsx5("p", { className: "lb-mix-match__modal-subtitle", "data-modal-subtitle": true, children: subtitle })
1341
1367
  ] }),
1342
- /* @__PURE__ */ jsx4(
1368
+ /* @__PURE__ */ jsx5(
1343
1369
  "button",
1344
1370
  {
1345
1371
  ref: closeBtnRef,
@@ -1348,16 +1374,16 @@ function MixMatchPicker({
1348
1374
  "data-modal-close": true,
1349
1375
  "aria-label": "Close",
1350
1376
  onClick: onClose,
1351
- children: /* @__PURE__ */ jsx4(CloseIcon, {})
1377
+ children: /* @__PURE__ */ jsx5(CloseIcon, {})
1352
1378
  }
1353
1379
  )
1354
1380
  ] }),
1355
- /* @__PURE__ */ jsx4(
1381
+ /* @__PURE__ */ jsx5(
1356
1382
  "div",
1357
1383
  {
1358
1384
  className: "lb-mix-match__progress lb-mix-match__modal-progress",
1359
1385
  "data-progress": true,
1360
- children: /* @__PURE__ */ jsx4(
1386
+ children: /* @__PURE__ */ jsx5(
1361
1387
  "div",
1362
1388
  {
1363
1389
  className: "lb-mix-match__progress-segments",
@@ -1365,7 +1391,7 @@ function MixMatchPicker({
1365
1391
  "aria-valuenow": shownUnits,
1366
1392
  "aria-valuemin": 0,
1367
1393
  "aria-valuemax": requiredQty,
1368
- children: Array.from({ length: requiredQty }).map((_, i) => /* @__PURE__ */ jsx4(
1394
+ children: Array.from({ length: requiredQty }).map((_, i) => /* @__PURE__ */ jsx5(
1369
1395
  "span",
1370
1396
  {
1371
1397
  className: `lb-mix-match__progress-segment${i < shownUnits ? " lb-mix-match__progress-segment--filled" : ""}`,
@@ -1378,8 +1404,8 @@ function MixMatchPicker({
1378
1404
  }
1379
1405
  )
1380
1406
  ] }),
1381
- wc.showSearch && /* @__PURE__ */ jsxs4("div", { className: "lb-mix-match__modal-search", children: [
1382
- /* @__PURE__ */ jsx4(
1407
+ wc.showSearch && /* @__PURE__ */ jsxs5("div", { className: "lb-mix-match__modal-search", children: [
1408
+ /* @__PURE__ */ jsx5(
1383
1409
  "input",
1384
1410
  {
1385
1411
  type: "text",
@@ -1393,7 +1419,7 @@ function MixMatchPicker({
1393
1419
  onChange: (e) => setQuery(e.target.value)
1394
1420
  }
1395
1421
  ),
1396
- query.length > 0 && /* @__PURE__ */ jsx4(
1422
+ query.length > 0 && /* @__PURE__ */ jsx5(
1397
1423
  "button",
1398
1424
  {
1399
1425
  type: "button",
@@ -1401,11 +1427,11 @@ function MixMatchPicker({
1401
1427
  "data-modal-search-clear": true,
1402
1428
  "aria-label": "Clear search",
1403
1429
  onClick: () => setQuery(""),
1404
- children: /* @__PURE__ */ jsx4(SearchClearIcon, {})
1430
+ children: /* @__PURE__ */ jsx5(SearchClearIcon, {})
1405
1431
  }
1406
1432
  )
1407
1433
  ] }),
1408
- showFilters && /* @__PURE__ */ jsx4(
1434
+ showFilters && /* @__PURE__ */ jsx5(
1409
1435
  "div",
1410
1436
  {
1411
1437
  className: "lb-mix-match__filters",
@@ -1414,7 +1440,7 @@ function MixMatchPicker({
1414
1440
  "aria-label": "Filter by product type",
1415
1441
  children: [FILTERS_ALL, ...productTypes].map((value) => {
1416
1442
  const isActive = value === activeType;
1417
- return /* @__PURE__ */ jsx4(
1443
+ return /* @__PURE__ */ jsx5(
1418
1444
  "button",
1419
1445
  {
1420
1446
  type: "button",
@@ -1429,7 +1455,7 @@ function MixMatchPicker({
1429
1455
  })
1430
1456
  }
1431
1457
  ),
1432
- /* @__PURE__ */ jsx4("div", { className: "lb-mix-match__modal-list", "data-modal-list": true, children: filtered.map((ep) => /* @__PURE__ */ jsx4(
1458
+ /* @__PURE__ */ jsx5("div", { className: "lb-mix-match__modal-list", "data-modal-list": true, children: filtered.map((ep) => /* @__PURE__ */ jsx5(
1433
1459
  MixMatchPickerRow,
1434
1460
  {
1435
1461
  bundle,
@@ -1448,10 +1474,10 @@ function MixMatchPicker({
1448
1474
  },
1449
1475
  ep.product.id
1450
1476
  )) }),
1451
- showEmpty && /* @__PURE__ */ jsx4("div", { className: "lb-mix-match__modal-empty", "data-modal-empty": true, children: /* @__PURE__ */ jsx4("p", { children: "No products match your search" }) }),
1452
- /* @__PURE__ */ jsx4("span", { "data-modal-live": true, "aria-live": "polite", className: "lb-visually-hidden", children: `${filtered.length} products shown` }),
1453
- /* @__PURE__ */ jsxs4("div", { className: "lb-mix-match__modal-footer", children: [
1454
- /* @__PURE__ */ jsx4(
1477
+ showEmpty && /* @__PURE__ */ jsx5("div", { className: "lb-mix-match__modal-empty", "data-modal-empty": true, children: /* @__PURE__ */ jsx5("p", { children: "No products match your search" }) }),
1478
+ /* @__PURE__ */ jsx5("span", { "data-modal-live": true, "aria-live": "polite", className: "lb-visually-hidden", children: `${filtered.length} products shown` }),
1479
+ /* @__PURE__ */ jsxs5("div", { className: "lb-mix-match__modal-footer", children: [
1480
+ /* @__PURE__ */ jsx5(
1455
1481
  "span",
1456
1482
  {
1457
1483
  className: "lb-mix-match__modal-footer-count",
@@ -1460,7 +1486,7 @@ function MixMatchPicker({
1460
1486
  children: `${shownUnits} of ${requiredQty} added`
1461
1487
  }
1462
1488
  ),
1463
- /* @__PURE__ */ jsx4(
1489
+ /* @__PURE__ */ jsx5(
1464
1490
  "button",
1465
1491
  {
1466
1492
  type: "button",
@@ -1594,7 +1620,7 @@ function MixMatchPickerRow({
1594
1620
  }
1595
1621
  const priceCents = parseFloat(currentVariant.price.amount);
1596
1622
  const compareCents = currentVariant.compareAtPrice ? parseFloat(currentVariant.compareAtPrice.amount) : null;
1597
- return /* @__PURE__ */ jsxs4(
1623
+ return /* @__PURE__ */ jsxs5(
1598
1624
  "div",
1599
1625
  {
1600
1626
  className: `lb-mix-match__modal-product${isOos ? " lb-mix-match__modal-product--sold-out" : ""}${variantInBundle ? " lb-mix-match__modal-product--in-bundle" : ""}`,
@@ -1603,21 +1629,27 @@ function MixMatchPickerRow({
1603
1629
  "data-type": product.productType ?? "",
1604
1630
  "aria-disabled": isOos || void 0,
1605
1631
  children: [
1606
- /* @__PURE__ */ jsxs4("div", { className: "lb-mix-match__modal-product-thumb", children: [
1607
- thumbImage && /* @__PURE__ */ jsx4(
1608
- "img",
1609
- {
1610
- src: thumbImage.url,
1611
- alt: thumbImage.altText ?? product.title,
1612
- loading: "lazy",
1613
- width: thumbImage.width ?? void 0,
1614
- height: thumbImage.height ?? void 0
1615
- }
1616
- ),
1617
- variantInBundle && /* @__PURE__ */ jsx4("span", { className: "lb-mix-match__modal-added-badge", children: "Added" })
1618
- ] }),
1619
- /* @__PURE__ */ jsxs4("div", { className: "lb-mix-match__modal-product-info", children: [
1620
- /* @__PURE__ */ jsx4("p", { className: "lb-mix-match__modal-product-title", children: /* @__PURE__ */ jsx4(
1632
+ /* @__PURE__ */ jsxs5(
1633
+ "div",
1634
+ {
1635
+ className: thumbImage ? "lb-mix-match__modal-product-thumb" : placeholderBoxClass("lb-mix-match__modal-product-thumb"),
1636
+ children: [
1637
+ thumbImage ? /* @__PURE__ */ jsx5(
1638
+ "img",
1639
+ {
1640
+ src: thumbImage.url,
1641
+ alt: thumbImage.altText ?? product.title,
1642
+ loading: "lazy",
1643
+ width: thumbImage.width ?? void 0,
1644
+ height: thumbImage.height ?? void 0
1645
+ }
1646
+ ) : /* @__PURE__ */ jsx5(PlaceholderMark, {}),
1647
+ variantInBundle && /* @__PURE__ */ jsx5("span", { className: "lb-mix-match__modal-added-badge", children: "Added" })
1648
+ ]
1649
+ }
1650
+ ),
1651
+ /* @__PURE__ */ jsxs5("div", { className: "lb-mix-match__modal-product-info", children: [
1652
+ /* @__PURE__ */ jsx5("p", { className: "lb-mix-match__modal-product-title", children: /* @__PURE__ */ jsx5(
1621
1653
  "a",
1622
1654
  {
1623
1655
  href: `/products/${product.handle}`,
@@ -1626,24 +1658,24 @@ function MixMatchPickerRow({
1626
1658
  children: product.title
1627
1659
  }
1628
1660
  ) }),
1629
- /* @__PURE__ */ jsxs4("p", { className: "lb-mix-match__modal-product-price", children: [
1630
- /* @__PURE__ */ jsx4("span", { "data-row-price-sale": true, children: formatMoney2(priceCents, currency) }),
1631
- compareCents !== null && compareCents > priceCents && /* @__PURE__ */ jsx4("s", { className: "lb-mix-match__modal-product-compare", "data-row-compare": true, children: formatMoney2(compareCents, currency) })
1661
+ /* @__PURE__ */ jsxs5("p", { className: "lb-mix-match__modal-product-price", children: [
1662
+ /* @__PURE__ */ jsx5("span", { "data-row-price-sale": true, children: formatMoney2(priceCents, currency) }),
1663
+ compareCents !== null && compareCents > priceCents && /* @__PURE__ */ jsx5("s", { className: "lb-mix-match__modal-product-compare", "data-row-compare": true, children: formatMoney2(compareCents, currency) })
1632
1664
  ] }),
1633
- unitPriceText && /* @__PURE__ */ jsx4("p", { className: "lb-mix-match__modal-product-unit-price lb-bundle-product-unit-price", children: unitPriceText }),
1634
- showPicker && /* @__PURE__ */ jsx4("div", { className: "lb-bundle-variant-option-groups", children: optionNames.map((optionName, optionIndex) => {
1665
+ unitPriceText && /* @__PURE__ */ jsx5("p", { className: "lb-mix-match__modal-product-unit-price lb-bundle-product-unit-price", children: unitPriceText }),
1666
+ showPicker && /* @__PURE__ */ jsx5("div", { className: "lb-bundle-variant-option-groups", children: optionNames.map((optionName, optionIndex) => {
1635
1667
  const dropdownOptions = optionsFor(optionIndex).map((o) => ({
1636
1668
  value: o.value,
1637
1669
  label: o.value,
1638
1670
  disabled: o.disabled
1639
1671
  }));
1640
- return /* @__PURE__ */ jsxs4(
1672
+ return /* @__PURE__ */ jsxs5(
1641
1673
  "div",
1642
1674
  {
1643
1675
  className: "lb-bundle-variant-option-group",
1644
1676
  children: [
1645
- /* @__PURE__ */ jsx4("span", { className: "lb-bundle-variant-option-label", children: optionName }),
1646
- /* @__PURE__ */ jsx4(
1677
+ /* @__PURE__ */ jsx5("span", { className: "lb-bundle-variant-option-label", children: optionName }),
1678
+ /* @__PURE__ */ jsx5(
1647
1679
  VariantDropdown,
1648
1680
  {
1649
1681
  className: "lb-mix-match__variant-select-dropdown",
@@ -1658,17 +1690,17 @@ function MixMatchPickerRow({
1658
1690
  optionName
1659
1691
  );
1660
1692
  }) }),
1661
- !showPicker && variants.length === 1 && currentVariant.title !== "Default Title" && /* @__PURE__ */ jsx4("span", { className: "lb-mix-match__filled-variant", children: currentVariant.title }),
1662
- !isOos && needsMoreSpots && remainingUnits > 0 && /* @__PURE__ */ jsx4("span", { className: "lb-mix-match__modal-needs-spots", children: rule.min === 1 ? "Needs 1 spot" : `Needs ${rule.min} spots` }),
1663
- isOos ? /* @__PURE__ */ jsx4("span", { className: "lb-mix-match__modal-sold-out-label", children: "Sold out" }) : /* @__PURE__ */ jsxs4("div", { className: "lb-mix-match__modal-product-actions", children: [
1664
- showStepper && /* @__PURE__ */ jsx4("div", { className: "lb-bundle-variant-option-group lb-mix-match__qty-stepper-group", children: /* @__PURE__ */ jsxs4(
1693
+ !showPicker && variants.length === 1 && currentVariant.title !== "Default Title" && /* @__PURE__ */ jsx5("span", { className: "lb-mix-match__filled-variant", children: currentVariant.title }),
1694
+ !isOos && needsMoreSpots && remainingUnits > 0 && /* @__PURE__ */ jsx5("span", { className: "lb-mix-match__modal-needs-spots", children: rule.min === 1 ? "Needs 1 spot" : `Needs ${rule.min} spots` }),
1695
+ isOos ? /* @__PURE__ */ jsx5("span", { className: "lb-mix-match__modal-sold-out-label", children: "Sold out" }) : /* @__PURE__ */ jsxs5("div", { className: "lb-mix-match__modal-product-actions", children: [
1696
+ showStepper && /* @__PURE__ */ jsx5("div", { className: "lb-bundle-variant-option-group lb-mix-match__qty-stepper-group", children: /* @__PURE__ */ jsxs5(
1665
1697
  "div",
1666
1698
  {
1667
1699
  className: "lb-mix-match__qty-stepper",
1668
1700
  role: "group",
1669
1701
  "aria-label": "Quantity",
1670
1702
  children: [
1671
- /* @__PURE__ */ jsx4(
1703
+ /* @__PURE__ */ jsx5(
1672
1704
  "button",
1673
1705
  {
1674
1706
  type: "button",
@@ -1689,7 +1721,7 @@ function MixMatchPickerRow({
1689
1721
  children: "\u2212"
1690
1722
  }
1691
1723
  ),
1692
- /* @__PURE__ */ jsx4(
1724
+ /* @__PURE__ */ jsx5(
1693
1725
  "span",
1694
1726
  {
1695
1727
  className: "lb-mix-match__qty-stepper-value",
@@ -1698,7 +1730,7 @@ function MixMatchPickerRow({
1698
1730
  children: shownQty
1699
1731
  }
1700
1732
  ),
1701
- /* @__PURE__ */ jsx4(
1733
+ /* @__PURE__ */ jsx5(
1702
1734
  "button",
1703
1735
  {
1704
1736
  type: "button",
@@ -1722,7 +1754,7 @@ function MixMatchPickerRow({
1722
1754
  ]
1723
1755
  }
1724
1756
  ) }),
1725
- /* @__PURE__ */ jsx4(
1757
+ /* @__PURE__ */ jsx5(
1726
1758
  "button",
1727
1759
  {
1728
1760
  type: "button",
@@ -1741,7 +1773,7 @@ function MixMatchPickerRow({
1741
1773
  );
1742
1774
  }
1743
1775
  function CloseIcon() {
1744
- return /* @__PURE__ */ jsxs4(
1776
+ return /* @__PURE__ */ jsxs5(
1745
1777
  "svg",
1746
1778
  {
1747
1779
  width: "20",
@@ -1751,14 +1783,14 @@ function CloseIcon() {
1751
1783
  xmlns: "http://www.w3.org/2000/svg",
1752
1784
  "aria-hidden": "true",
1753
1785
  children: [
1754
- /* @__PURE__ */ jsx4("line", { x1: "5", y1: "5", x2: "15", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
1755
- /* @__PURE__ */ jsx4("line", { x1: "15", y1: "5", x2: "5", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })
1786
+ /* @__PURE__ */ jsx5("line", { x1: "5", y1: "5", x2: "15", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
1787
+ /* @__PURE__ */ jsx5("line", { x1: "15", y1: "5", x2: "5", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })
1756
1788
  ]
1757
1789
  }
1758
1790
  );
1759
1791
  }
1760
1792
  function SearchClearIcon() {
1761
- return /* @__PURE__ */ jsx4(
1793
+ return /* @__PURE__ */ jsx5(
1762
1794
  "svg",
1763
1795
  {
1764
1796
  width: "16",
@@ -1767,13 +1799,13 @@ function SearchClearIcon() {
1767
1799
  fill: "currentColor",
1768
1800
  xmlns: "http://www.w3.org/2000/svg",
1769
1801
  "aria-hidden": "true",
1770
- children: /* @__PURE__ */ jsx4("path", { d: "M14.348 5.652a.5.5 0 0 0-.707 0L10 9.293 6.36 5.652a.5.5 0 1 0-.708.707L9.293 10l-3.641 3.641a.5.5 0 0 0 .708.707L10 10.707l3.641 3.641a.5.5 0 0 0 .707-.707L10.707 10l3.641-3.641a.5.5 0 0 0 0-.707z" })
1802
+ children: /* @__PURE__ */ jsx5("path", { d: "M14.348 5.652a.5.5 0 0 0-.707 0L10 9.293 6.36 5.652a.5.5 0 1 0-.708.707L9.293 10l-3.641 3.641a.5.5 0 0 0 .708.707L10 10.707l3.641 3.641a.5.5 0 0 0 .707-.707L10.707 10l3.641-3.641a.5.5 0 0 0 0-.707z" })
1771
1803
  }
1772
1804
  );
1773
1805
  }
1774
1806
 
1775
1807
  // src/components/MixMatchBundle.tsx
1776
- import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
1808
+ import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
1777
1809
  function ruleFor2(bundle, productId, variantId) {
1778
1810
  if (variantId) {
1779
1811
  const vRule = bundle.variantRules[variantId];
@@ -2070,9 +2102,9 @@ function MixMatchBundle(props) {
2070
2102
  }
2071
2103
  }, [bundle, selections, valid, onAddToCart, onError, trackAddToCart, totalQuantity]);
2072
2104
  if (result.status === "loading") {
2073
- return /* @__PURE__ */ jsxs5("div", { className: `lb-bundle lb-bundle--loading ${className ?? ""}`, children: [
2074
- /* @__PURE__ */ jsx5("div", { className: "lb-skeleton lb-skeleton--title" }),
2075
- /* @__PURE__ */ jsx5("div", { className: "lb-skeleton lb-skeleton--products" })
2105
+ return /* @__PURE__ */ jsxs6("div", { className: `lb-bundle lb-bundle--loading ${className ?? ""}`, children: [
2106
+ /* @__PURE__ */ jsx6("div", { className: "lb-skeleton lb-skeleton--title" }),
2107
+ /* @__PURE__ */ jsx6("div", { className: "lb-skeleton lb-skeleton--products" })
2076
2108
  ] });
2077
2109
  }
2078
2110
  if (result.status === "error") return null;
@@ -2090,8 +2122,8 @@ function MixMatchBundle(props) {
2090
2122
  );
2091
2123
  if (requiredBlocked) return null;
2092
2124
  const currency = bundle.products[0]?.priceRange.minVariantPrice.currencyCode ?? "USD";
2093
- const ctaLabel = addingToCart ? "Adding..." : bundle.widgetConfig.cta.ctaText || "Add to cart";
2094
- return /* @__PURE__ */ jsxs5(
2125
+ const ctaLabel = addingToCart ? "Adding to cart" : bundle.widgetConfig.cta.ctaText || "Add to cart";
2126
+ return /* @__PURE__ */ jsxs6(
2095
2127
  "div",
2096
2128
  {
2097
2129
  ref: (el) => {
@@ -2103,19 +2135,19 @@ function MixMatchBundle(props) {
2103
2135
  "aria-label": bundle.title,
2104
2136
  "data-required-quantity": requiredUnits,
2105
2137
  children: [
2106
- /* @__PURE__ */ jsx5("div", { className: "lb-bundle-header", children: /* @__PURE__ */ jsxs5("div", { className: "lb-bundle-header__content", children: [
2107
- /* @__PURE__ */ jsx5("h3", { className: "lb-bundle-title", children: bundle.title }),
2108
- bundle.description && /* @__PURE__ */ jsx5("p", { className: "lb-bundle-subtitle", children: bundle.description })
2138
+ /* @__PURE__ */ jsx6("div", { className: "lb-bundle-header", children: /* @__PURE__ */ jsxs6("div", { className: "lb-bundle-header__content", children: [
2139
+ /* @__PURE__ */ jsx6("h3", { className: "lb-bundle-title", children: bundle.title }),
2140
+ bundle.description && /* @__PURE__ */ jsx6("p", { className: "lb-bundle-subtitle", children: bundle.description })
2109
2141
  ] }) }),
2110
- /* @__PURE__ */ jsx5(
2142
+ /* @__PURE__ */ jsx6(
2111
2143
  BundleCountdown,
2112
2144
  {
2113
2145
  endsAt: bundle.endsAt,
2114
2146
  widgetConfig: bundle.widgetConfig
2115
2147
  }
2116
2148
  ),
2117
- /* @__PURE__ */ jsxs5("div", { className: "lb-mix-match__progress", "data-progress": true, children: [
2118
- /* @__PURE__ */ jsx5(
2149
+ /* @__PURE__ */ jsxs6("div", { className: "lb-mix-match__progress", "data-progress": true, children: [
2150
+ /* @__PURE__ */ jsx6(
2119
2151
  "div",
2120
2152
  {
2121
2153
  className: "lb-mix-match__progress-segments",
@@ -2123,7 +2155,7 @@ function MixMatchBundle(props) {
2123
2155
  "aria-valuenow": shownUnits,
2124
2156
  "aria-valuemin": 0,
2125
2157
  "aria-valuemax": requiredUnits,
2126
- children: Array.from({ length: requiredUnits }).map((_, i) => /* @__PURE__ */ jsx5(
2158
+ children: Array.from({ length: requiredUnits }).map((_, i) => /* @__PURE__ */ jsx6(
2127
2159
  "span",
2128
2160
  {
2129
2161
  className: `lb-mix-match__progress-segment${i < shownUnits ? " lb-mix-match__progress-segment--filled" : ""}`,
@@ -2133,8 +2165,8 @@ function MixMatchBundle(props) {
2133
2165
  ))
2134
2166
  }
2135
2167
  ),
2136
- /* @__PURE__ */ jsxs5("div", { className: "lb-mix-match__progress-labels", children: [
2137
- /* @__PURE__ */ jsx5(
2168
+ /* @__PURE__ */ jsxs6("div", { className: "lb-mix-match__progress-labels", children: [
2169
+ /* @__PURE__ */ jsx6(
2138
2170
  "span",
2139
2171
  {
2140
2172
  className: "lb-mix-match__progress-count",
@@ -2143,7 +2175,7 @@ function MixMatchBundle(props) {
2143
2175
  children: `${shownUnits} of ${requiredUnits} added`
2144
2176
  }
2145
2177
  ),
2146
- /* @__PURE__ */ jsx5(
2178
+ /* @__PURE__ */ jsx6(
2147
2179
  "span",
2148
2180
  {
2149
2181
  className: "lb-mix-match__progress-remaining",
@@ -2154,7 +2186,7 @@ function MixMatchBundle(props) {
2154
2186
  )
2155
2187
  ] })
2156
2188
  ] }),
2157
- /* @__PURE__ */ jsx5(
2189
+ /* @__PURE__ */ jsx6(
2158
2190
  "div",
2159
2191
  {
2160
2192
  className: "lb-mix-match__slots lb-edge-fade",
@@ -2165,15 +2197,21 @@ function MixMatchBundle(props) {
2165
2197
  button provides the keyboard/AT path (its activation bubbles
2166
2198
  here); × stops propagation. */
2167
2199
  // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions -- keyboard path is the inner "Edit selection" title button whose activation bubbles to this handler
2168
- /* @__PURE__ */ jsxs5(
2200
+ /* @__PURE__ */ jsxs6(
2169
2201
  "div",
2170
2202
  {
2171
2203
  className: "lb-mix-match__slot lb-mix-match__slot--filled",
2172
2204
  onClick: () => setPickerOpen(true),
2173
2205
  children: [
2174
- item.featuredImage && /* @__PURE__ */ jsx5("div", { className: "lb-bundle-thumbnail", children: /* @__PURE__ */ jsx5("img", { src: item.featuredImage, alt: item.title, loading: "lazy" }) }),
2175
- /* @__PURE__ */ jsxs5("div", { className: "lb-mix-match__filled-info", children: [
2176
- /* @__PURE__ */ jsx5(
2206
+ /* @__PURE__ */ jsx6(
2207
+ "div",
2208
+ {
2209
+ className: item.featuredImage ? "lb-bundle-thumbnail" : placeholderBoxClass("lb-bundle-thumbnail"),
2210
+ children: item.featuredImage ? /* @__PURE__ */ jsx6("img", { src: item.featuredImage, alt: item.title, loading: "lazy" }) : /* @__PURE__ */ jsx6(PlaceholderMark, {})
2211
+ }
2212
+ ),
2213
+ /* @__PURE__ */ jsxs6("div", { className: "lb-mix-match__filled-info", children: [
2214
+ /* @__PURE__ */ jsx6(
2177
2215
  "button",
2178
2216
  {
2179
2217
  type: "button",
@@ -2182,15 +2220,15 @@ function MixMatchBundle(props) {
2182
2220
  children: item.title
2183
2221
  }
2184
2222
  ),
2185
- item.variantTitle && item.variantTitle !== "Default Title" && /* @__PURE__ */ jsx5("span", { className: "lb-mix-match__filled-variant", children: item.variantTitle }),
2186
- /* @__PURE__ */ jsxs5("span", { className: "lb-mix-match__filled-price", children: [
2187
- item.compareAtPrice !== null && item.compareAtPrice > item.price && /* @__PURE__ */ jsx5("s", { className: "lb-mix-match__filled-compare", children: formatMoney3(item.compareAtPrice, currency) }),
2188
- /* @__PURE__ */ jsx5("span", { className: "lb-bundle-product-price", children: formatMoney3(item.price, currency) }),
2189
- /* @__PURE__ */ jsx5("span", { className: "lb-bundle-qty-inline", children: `\xD7${item.quantity}` })
2223
+ item.variantTitle && item.variantTitle !== "Default Title" && /* @__PURE__ */ jsx6("span", { className: "lb-mix-match__filled-variant", children: item.variantTitle }),
2224
+ /* @__PURE__ */ jsxs6("span", { className: "lb-mix-match__filled-price", children: [
2225
+ item.compareAtPrice !== null && item.compareAtPrice > item.price && /* @__PURE__ */ jsx6("s", { className: "lb-mix-match__filled-compare", children: formatMoney3(item.compareAtPrice, currency) }),
2226
+ /* @__PURE__ */ jsx6("span", { className: "lb-bundle-product-price", children: formatMoney3(item.price, currency) }),
2227
+ /* @__PURE__ */ jsx6("span", { className: "lb-bundle-qty-inline", children: `\xD7${item.quantity}` })
2190
2228
  ] }),
2191
- item.unitPrice && /* @__PURE__ */ jsx5("span", { className: "lb-bundle-product-unit-price", children: item.unitPrice })
2229
+ item.unitPrice && /* @__PURE__ */ jsx6("span", { className: "lb-bundle-product-unit-price", children: item.unitPrice })
2192
2230
  ] }),
2193
- canRemoveItem(bundle, selections, item) ? /* @__PURE__ */ jsx5(
2231
+ canRemoveItem(bundle, selections, item) ? /* @__PURE__ */ jsx6(
2194
2232
  "button",
2195
2233
  {
2196
2234
  type: "button",
@@ -2200,13 +2238,13 @@ function MixMatchBundle(props) {
2200
2238
  e.stopPropagation();
2201
2239
  removeSlot(index);
2202
2240
  },
2203
- children: /* @__PURE__ */ jsx5(CloseIcon2, {})
2241
+ children: /* @__PURE__ */ jsx6(CloseIcon2, {})
2204
2242
  }
2205
2243
  ) : (
2206
2244
  /* Required pick at its floor — quiet state chip instead of
2207
2245
  the ×; removal returns once another slot covers the
2208
2246
  product's minimum (variant swap flow). */
2209
- /* @__PURE__ */ jsx5("span", { className: "lb-mix-match__slot-required", children: "Required" })
2247
+ /* @__PURE__ */ jsx6("span", { className: "lb-mix-match__slot-required", children: "Required" })
2210
2248
  )
2211
2249
  ]
2212
2250
  },
@@ -2215,7 +2253,7 @@ function MixMatchBundle(props) {
2215
2253
  ))
2216
2254
  }
2217
2255
  ),
2218
- totalQuantity < requiredUnits && /* @__PURE__ */ jsxs5(
2256
+ totalQuantity < requiredUnits && /* @__PURE__ */ jsxs6(
2219
2257
  "button",
2220
2258
  {
2221
2259
  type: "button",
@@ -2223,34 +2261,34 @@ function MixMatchBundle(props) {
2223
2261
  "data-add-product-trigger": true,
2224
2262
  onClick: () => setPickerOpen(true),
2225
2263
  children: [
2226
- /* @__PURE__ */ jsx5("span", { className: "lb-mix-match__add-product-icon", "aria-hidden": "true", children: /* @__PURE__ */ jsx5(PlusIcon, {}) }),
2227
- /* @__PURE__ */ jsx5("span", { className: "lb-mix-match__add-product-label", children: "Add a product" })
2264
+ /* @__PURE__ */ jsx6("span", { className: "lb-mix-match__add-product-icon", "aria-hidden": "true", children: /* @__PURE__ */ jsx6(PlusIcon, {}) }),
2265
+ /* @__PURE__ */ jsx6("span", { className: "lb-mix-match__add-product-label", children: "Add a product" })
2228
2266
  ]
2229
2267
  }
2230
2268
  ),
2231
- /* @__PURE__ */ jsx5("div", { className: "lb-bundle-divider" }),
2232
- selections.length > 0 && /* @__PURE__ */ jsxs5("div", { className: "lb-bundle-summary", "data-pricing-section": true, children: [
2233
- /* @__PURE__ */ jsxs5("div", { className: "lb-bundle-summary__text", children: [
2234
- /* @__PURE__ */ jsx5("span", { className: "lb-bundle-summary__label", children: "Bundle total" }),
2235
- bundle.widgetConfig.savingsBar.visible && summary.savings > 0 && /* @__PURE__ */ jsxs5("p", { className: "lb-bundle-savings-line", "data-savings-bar": true, children: [
2269
+ /* @__PURE__ */ jsx6("div", { className: "lb-bundle-divider" }),
2270
+ selections.length > 0 && /* @__PURE__ */ jsxs6("div", { className: "lb-bundle-summary", "data-pricing-section": true, children: [
2271
+ /* @__PURE__ */ jsxs6("div", { className: "lb-bundle-summary__text", children: [
2272
+ /* @__PURE__ */ jsx6("span", { className: "lb-bundle-summary__label", children: "Bundle total" }),
2273
+ bundle.widgetConfig.savingsBar.visible && summary.savings > 0 && /* @__PURE__ */ jsxs6("p", { className: "lb-bundle-savings-line", "data-savings-bar": true, children: [
2236
2274
  "You save",
2237
2275
  " ",
2238
- /* @__PURE__ */ jsx5("span", { "data-savings-amount": true, children: formatMoney3(summary.savings, currency) }),
2276
+ /* @__PURE__ */ jsx6("span", { "data-savings-amount": true, children: formatMoney3(summary.savings, currency) }),
2239
2277
  " ",
2240
- /* @__PURE__ */ jsxs5("span", { "data-savings-percent": true, children: [
2278
+ /* @__PURE__ */ jsxs6("span", { "data-savings-percent": true, children: [
2241
2279
  "(",
2242
2280
  summary.savingsPercent,
2243
2281
  "%)"
2244
2282
  ] })
2245
2283
  ] })
2246
2284
  ] }),
2247
- /* @__PURE__ */ jsxs5("span", { className: "lb-bundle-summary__prices", children: [
2248
- bundle.widgetConfig.pricing.showComparePrice && summary.savings > 0 && /* @__PURE__ */ jsx5("span", { className: "lb-bundle-compare-price", "data-compare-price": true, children: formatMoney3(summary.comparePrice, currency) }),
2249
- /* @__PURE__ */ jsx5("span", { className: "lb-bundle-sale-price", "data-sale-price": true, children: formatMoney3(summary.salePrice, currency) })
2285
+ /* @__PURE__ */ jsxs6("span", { className: "lb-bundle-summary__prices", children: [
2286
+ bundle.widgetConfig.pricing.showComparePrice && summary.savings > 0 && /* @__PURE__ */ jsx6("span", { className: "lb-bundle-compare-price", "data-compare-price": true, children: formatMoney3(summary.comparePrice, currency) }),
2287
+ /* @__PURE__ */ jsx6("span", { className: "lb-bundle-sale-price", "data-sale-price": true, children: formatMoney3(summary.salePrice, currency) })
2250
2288
  ] })
2251
2289
  ] }),
2252
- cartError && /* @__PURE__ */ jsx5("p", { className: "lb-bundle__error", role: "alert", children: cartError }),
2253
- /* @__PURE__ */ jsx5(
2290
+ cartError && /* @__PURE__ */ jsx6("p", { className: "lb-bundle__error", role: "alert", children: cartError }),
2291
+ /* @__PURE__ */ jsx6(
2254
2292
  "button",
2255
2293
  {
2256
2294
  className: "lb-bundle__cta",
@@ -2260,7 +2298,7 @@ function MixMatchBundle(props) {
2260
2298
  children: ctaLabel
2261
2299
  }
2262
2300
  ),
2263
- pickerOpen && /* @__PURE__ */ jsx5(
2301
+ pickerOpen && /* @__PURE__ */ jsx6(
2264
2302
  MixMatchPicker,
2265
2303
  {
2266
2304
  bundle,
@@ -2300,7 +2338,7 @@ function countInStockProducts(bundle) {
2300
2338
  return count;
2301
2339
  }
2302
2340
  function PlusIcon() {
2303
- return /* @__PURE__ */ jsxs5(
2341
+ return /* @__PURE__ */ jsxs6(
2304
2342
  "svg",
2305
2343
  {
2306
2344
  width: "18",
@@ -2310,14 +2348,14 @@ function PlusIcon() {
2310
2348
  xmlns: "http://www.w3.org/2000/svg",
2311
2349
  "aria-hidden": "true",
2312
2350
  children: [
2313
- /* @__PURE__ */ jsx5("line", { x1: "9", y1: "3", x2: "9", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
2314
- /* @__PURE__ */ jsx5("line", { x1: "3", y1: "9", x2: "15", y2: "9", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })
2351
+ /* @__PURE__ */ jsx6("line", { x1: "9", y1: "3", x2: "9", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
2352
+ /* @__PURE__ */ jsx6("line", { x1: "3", y1: "9", x2: "15", y2: "9", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })
2315
2353
  ]
2316
2354
  }
2317
2355
  );
2318
2356
  }
2319
2357
  function CloseIcon2() {
2320
- return /* @__PURE__ */ jsxs5(
2358
+ return /* @__PURE__ */ jsxs6(
2321
2359
  "svg",
2322
2360
  {
2323
2361
  width: "16",
@@ -2327,8 +2365,8 @@ function CloseIcon2() {
2327
2365
  xmlns: "http://www.w3.org/2000/svg",
2328
2366
  "aria-hidden": "true",
2329
2367
  children: [
2330
- /* @__PURE__ */ jsx5("line", { x1: "5", y1: "5", x2: "15", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
2331
- /* @__PURE__ */ jsx5("line", { x1: "15", y1: "5", x2: "5", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })
2368
+ /* @__PURE__ */ jsx6("line", { x1: "5", y1: "5", x2: "15", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
2369
+ /* @__PURE__ */ jsx6("line", { x1: "15", y1: "5", x2: "5", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })
2332
2370
  ]
2333
2371
  }
2334
2372
  );
@@ -2349,7 +2387,7 @@ import {
2349
2387
  resolveContextProduct,
2350
2388
  shouldShowLowStockBadge as shouldShowLowStockBadge2
2351
2389
  } from "@lime-bundles/core";
2352
- import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
2390
+ import { jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
2353
2391
  function VolumeBundle(props) {
2354
2392
  const {
2355
2393
  shopDomain,
@@ -2516,15 +2554,15 @@ function VolumeBundle(props) {
2516
2554
  tierSavings
2517
2555
  ]);
2518
2556
  if (result.status === "loading") {
2519
- return /* @__PURE__ */ jsxs6("div", { className: `lb-bundle lb-bundle--loading ${className ?? ""}`, children: [
2520
- /* @__PURE__ */ jsx6("div", { className: "lb-skeleton lb-skeleton--title" }),
2521
- /* @__PURE__ */ jsx6("div", { className: "lb-skeleton lb-skeleton--tiers" })
2557
+ return /* @__PURE__ */ jsxs7("div", { className: `lb-bundle lb-bundle--loading ${className ?? ""}`, children: [
2558
+ /* @__PURE__ */ jsx7("div", { className: "lb-skeleton lb-skeleton--title" }),
2559
+ /* @__PURE__ */ jsx7("div", { className: "lb-skeleton lb-skeleton--tiers" })
2522
2560
  ] });
2523
2561
  }
2524
2562
  if (result.status === "error") return null;
2525
2563
  if (!bundle) return null;
2526
2564
  if (!product) return null;
2527
- return /* @__PURE__ */ jsxs6(
2565
+ return /* @__PURE__ */ jsxs7(
2528
2566
  "div",
2529
2567
  {
2530
2568
  ref: (el) => {
@@ -2535,19 +2573,19 @@ function VolumeBundle(props) {
2535
2573
  role: "region",
2536
2574
  "aria-label": bundle.title,
2537
2575
  children: [
2538
- /* @__PURE__ */ jsx6("div", { className: "lb-bundle-header", children: /* @__PURE__ */ jsxs6("div", { className: "lb-bundle-header__content", children: [
2539
- /* @__PURE__ */ jsx6("h3", { className: "lb-bundle-title", children: bundle.title }),
2540
- bundle.description && /* @__PURE__ */ jsx6("p", { className: "lb-bundle-subtitle", children: bundle.description })
2576
+ /* @__PURE__ */ jsx7("div", { className: "lb-bundle-header", children: /* @__PURE__ */ jsxs7("div", { className: "lb-bundle-header__content", children: [
2577
+ /* @__PURE__ */ jsx7("h3", { className: "lb-bundle-title", children: bundle.title }),
2578
+ bundle.description && /* @__PURE__ */ jsx7("p", { className: "lb-bundle-subtitle", children: bundle.description })
2541
2579
  ] }) }),
2542
- /* @__PURE__ */ jsx6(
2580
+ /* @__PURE__ */ jsx7(
2543
2581
  BundleCountdown,
2544
2582
  {
2545
2583
  endsAt: bundle.endsAt,
2546
2584
  widgetConfig: bundle.widgetConfig
2547
2585
  }
2548
2586
  ),
2549
- /* @__PURE__ */ jsxs6("div", { className: "lb-bundle-product-row lb-bundle-product-row--volume", children: [
2550
- thumbImage && /* @__PURE__ */ jsx6(
2587
+ /* @__PURE__ */ jsxs7("div", { className: "lb-bundle-product-row lb-bundle-product-row--volume", children: [
2588
+ thumbImage ? /* @__PURE__ */ jsx7(
2551
2589
  "img",
2552
2590
  {
2553
2591
  src: thumbImage.url,
@@ -2557,21 +2595,21 @@ function VolumeBundle(props) {
2557
2595
  width: thumbImage.width ?? void 0,
2558
2596
  height: thumbImage.height ?? void 0
2559
2597
  }
2560
- ),
2561
- /* @__PURE__ */ jsxs6("div", { className: "lb-bundle__product-info", children: [
2562
- /* @__PURE__ */ jsx6("p", { className: "lb-bundle__product-title", children: product.title }),
2563
- /* @__PURE__ */ jsxs6("p", { className: "lb-bundle__product-price", children: [
2598
+ ) : /* @__PURE__ */ jsx7(ThumbnailPlaceholder, { className: "lb-bundle__product-image" }),
2599
+ /* @__PURE__ */ jsxs7("div", { className: "lb-bundle__product-info", children: [
2600
+ /* @__PURE__ */ jsx7("p", { className: "lb-bundle__product-title", children: product.title }),
2601
+ /* @__PURE__ */ jsxs7("p", { className: "lb-bundle__product-price", children: [
2564
2602
  formatMoney4(basePrice, currency),
2565
2603
  " each"
2566
2604
  ] }),
2567
- unitPriceText && /* @__PURE__ */ jsx6("p", { className: "lb-bundle__product-unit-price", children: unitPriceText }),
2568
- showPicker && /* @__PURE__ */ jsx6("div", { className: "lb-bundle__product-variant-pickers", children: optionNames.map((optionName, optionIndex) => {
2605
+ unitPriceText && /* @__PURE__ */ jsx7("p", { className: "lb-bundle__product-unit-price", children: unitPriceText }),
2606
+ showPicker && /* @__PURE__ */ jsx7("div", { className: "lb-bundle__product-variant-pickers", children: optionNames.map((optionName, optionIndex) => {
2569
2607
  const dropdownOptions = optionsFor(optionIndex).map((o) => ({
2570
2608
  value: o.value,
2571
2609
  label: o.value,
2572
2610
  disabled: o.disabled
2573
2611
  }));
2574
- return /* @__PURE__ */ jsx6(
2612
+ return /* @__PURE__ */ jsx7(
2575
2613
  VariantDropdown,
2576
2614
  {
2577
2615
  options: dropdownOptions,
@@ -2584,7 +2622,7 @@ function VolumeBundle(props) {
2584
2622
  }) })
2585
2623
  ] })
2586
2624
  ] }),
2587
- /* @__PURE__ */ jsx6(
2625
+ /* @__PURE__ */ jsx7(
2588
2626
  "div",
2589
2627
  {
2590
2628
  className: "lb-bundle__tiers lb-edge-fade",
@@ -2596,7 +2634,7 @@ function VolumeBundle(props) {
2596
2634
  const showCompare = bundle.widgetConfig.pricing.showComparePrice && ts.savings > 0;
2597
2635
  const isChecked = activeTier === ts.tier;
2598
2636
  const available = tierAvailable(ts.tier.minQuantity);
2599
- return /* @__PURE__ */ jsxs6(
2637
+ return /* @__PURE__ */ jsxs7(
2600
2638
  "div",
2601
2639
  {
2602
2640
  className: `lb-bundle__tier ${ts.isActive ? "lb-bundle__tier--active" : ""} ${available ? "" : "lb-bundle__tier--oos"}`,
@@ -2614,21 +2652,21 @@ function VolumeBundle(props) {
2614
2652
  }
2615
2653
  },
2616
2654
  children: [
2617
- /* @__PURE__ */ jsx6("span", { className: "lb-bundle__tier-radio", "aria-hidden": "true", children: /* @__PURE__ */ jsx6("span", { className: "lb-bundle__tier-radio-dot" }) }),
2618
- /* @__PURE__ */ jsxs6("span", { className: "lb-bundle__tier-info", children: [
2619
- /* @__PURE__ */ jsxs6("span", { className: "lb-bundle__tier-label", children: [
2655
+ /* @__PURE__ */ jsx7("span", { className: "lb-bundle__tier-radio", "aria-hidden": "true", children: /* @__PURE__ */ jsx7("span", { className: "lb-bundle__tier-radio-dot" }) }),
2656
+ /* @__PURE__ */ jsxs7("span", { className: "lb-bundle__tier-info", children: [
2657
+ /* @__PURE__ */ jsxs7("span", { className: "lb-bundle__tier-label", children: [
2620
2658
  "Buy ",
2621
2659
  ts.tier.minQuantity
2622
2660
  ] }),
2623
- /* @__PURE__ */ jsxs6("span", { className: "lb-bundle__tier-price", children: [
2624
- showCompare && /* @__PURE__ */ jsx6("span", { className: "lb-bundle__tier-compare", children: formatMoney4(basePrice, currency) }),
2625
- /* @__PURE__ */ jsx6("span", { children: formatMoney4(ts.unitPrice, currency) }),
2626
- /* @__PURE__ */ jsx6("span", { className: "lb-bundle__tier-unit", children: "each" })
2661
+ /* @__PURE__ */ jsxs7("span", { className: "lb-bundle__tier-price", children: [
2662
+ showCompare && /* @__PURE__ */ jsx7("span", { className: "lb-bundle__tier-compare", children: formatMoney4(basePrice, currency) }),
2663
+ /* @__PURE__ */ jsx7("span", { children: formatMoney4(ts.unitPrice, currency) }),
2664
+ /* @__PURE__ */ jsx7("span", { className: "lb-bundle__tier-unit", children: "each" })
2627
2665
  ] })
2628
2666
  ] }),
2629
- (tierIndex === popularTierIndex || savingsPercent > 0) && /* @__PURE__ */ jsxs6("span", { className: "lb-bundle__tier-right", children: [
2630
- tierIndex === popularTierIndex && /* @__PURE__ */ jsx6("span", { className: "lb-bundle__tier-badge", children: bundle.widgetConfig.popularBadge.text }),
2631
- savingsPercent > 0 && /* @__PURE__ */ jsxs6("span", { className: "lb-bundle__tier-savings", children: [
2667
+ (tierIndex === popularTierIndex || savingsPercent > 0) && /* @__PURE__ */ jsxs7("span", { className: "lb-bundle__tier-right", children: [
2668
+ tierIndex === popularTierIndex && /* @__PURE__ */ jsx7("span", { className: "lb-bundle__tier-badge", children: bundle.widgetConfig.popularBadge.text }),
2669
+ savingsPercent > 0 && /* @__PURE__ */ jsxs7("span", { className: "lb-bundle__tier-savings", children: [
2632
2670
  "Save ",
2633
2671
  savingsPercent,
2634
2672
  "%"
@@ -2641,10 +2679,10 @@ function VolumeBundle(props) {
2641
2679
  })
2642
2680
  }
2643
2681
  ),
2644
- /* @__PURE__ */ jsxs6("div", { className: "lb-bundle__quantity-selector", children: [
2645
- /* @__PURE__ */ jsx6("label", { htmlFor: `lb-qty-${bundle.id}`, children: "Quantity" }),
2646
- /* @__PURE__ */ jsxs6("div", { className: "lb-bundle__quantity-control", children: [
2647
- /* @__PURE__ */ jsx6(
2682
+ /* @__PURE__ */ jsxs7("div", { className: "lb-bundle__quantity-selector", children: [
2683
+ /* @__PURE__ */ jsx7("label", { htmlFor: `lb-qty-${bundle.id}`, children: "Quantity" }),
2684
+ /* @__PURE__ */ jsxs7("div", { className: "lb-bundle__quantity-control", children: [
2685
+ /* @__PURE__ */ jsx7(
2648
2686
  "button",
2649
2687
  {
2650
2688
  "aria-label": "Decrease quantity",
@@ -2652,7 +2690,7 @@ function VolumeBundle(props) {
2652
2690
  children: "\u2212"
2653
2691
  }
2654
2692
  ),
2655
- /* @__PURE__ */ jsx6(
2693
+ /* @__PURE__ */ jsx7(
2656
2694
  "input",
2657
2695
  {
2658
2696
  id: `lb-qty-${bundle.id}`,
@@ -2666,7 +2704,7 @@ function VolumeBundle(props) {
2666
2704
  className: "lb-bundle__quantity-input"
2667
2705
  }
2668
2706
  ),
2669
- /* @__PURE__ */ jsx6(
2707
+ /* @__PURE__ */ jsx7(
2670
2708
  "button",
2671
2709
  {
2672
2710
  "aria-label": "Increase quantity",
@@ -2676,23 +2714,23 @@ function VolumeBundle(props) {
2676
2714
  )
2677
2715
  ] })
2678
2716
  ] }),
2679
- cartError && /* @__PURE__ */ jsx6("p", { className: "lb-bundle__error", role: "alert", children: cartError }),
2717
+ cartError && /* @__PURE__ */ jsx7("p", { className: "lb-bundle__error", role: "alert", children: cartError }),
2680
2718
  bundle && displayVariant && shouldShowLowStockBadge2(
2681
2719
  displayVariant,
2682
2720
  minTierQty,
2683
2721
  bundle.widgetConfig.lowStockThreshold,
2684
2722
  bundle.widgetConfig.showLowStockBadge
2685
- ) && /* @__PURE__ */ jsxs6("span", { className: "lb-bundle-low-stock-badge", children: [
2723
+ ) && /* @__PURE__ */ jsxs7("span", { className: "lb-bundle-low-stock-badge", children: [
2686
2724
  "Only ",
2687
2725
  displayVariant.quantityAvailable,
2688
2726
  " left"
2689
2727
  ] }),
2690
- /* @__PURE__ */ jsx6("div", { className: "lb-bundle-divider" }),
2691
- /* @__PURE__ */ jsxs6("div", { className: "lb-bundle-summary", children: [
2692
- /* @__PURE__ */ jsxs6("div", { className: "lb-bundle-summary__text", children: [
2693
- /* @__PURE__ */ jsxs6("span", { className: "lb-bundle-summary__label", "data-total-label": true, children: [
2728
+ /* @__PURE__ */ jsx7("div", { className: "lb-bundle-divider" }),
2729
+ /* @__PURE__ */ jsxs7("div", { className: "lb-bundle-summary", children: [
2730
+ /* @__PURE__ */ jsxs7("div", { className: "lb-bundle-summary__text", children: [
2731
+ /* @__PURE__ */ jsxs7("span", { className: "lb-bundle-summary__label", "data-total-label": true, children: [
2694
2732
  "Total",
2695
- bundle.widgetConfig.pricing.showItemCount && /* @__PURE__ */ jsxs6("span", { "data-item-count": true, children: [
2733
+ bundle.widgetConfig.pricing.showItemCount && /* @__PURE__ */ jsxs7("span", { "data-item-count": true, children: [
2696
2734
  " ",
2697
2735
  "(",
2698
2736
  quantity,
@@ -2701,31 +2739,31 @@ function VolumeBundle(props) {
2701
2739
  ")"
2702
2740
  ] })
2703
2741
  ] }),
2704
- bundle.widgetConfig.savingsBar.visible && volumeSavings > 0 && /* @__PURE__ */ jsxs6("p", { className: "lb-bundle-savings-line", "data-savings-bar": true, children: [
2742
+ bundle.widgetConfig.savingsBar.visible && volumeSavings > 0 && /* @__PURE__ */ jsxs7("p", { className: "lb-bundle-savings-line", "data-savings-bar": true, children: [
2705
2743
  "You save",
2706
2744
  " ",
2707
- /* @__PURE__ */ jsx6("span", { "data-savings-amount": true, children: formatMoney4(volumeSavings, currency) }),
2745
+ /* @__PURE__ */ jsx7("span", { "data-savings-amount": true, children: formatMoney4(volumeSavings, currency) }),
2708
2746
  " ",
2709
- /* @__PURE__ */ jsxs6("span", { "data-savings-percent": true, children: [
2747
+ /* @__PURE__ */ jsxs7("span", { "data-savings-percent": true, children: [
2710
2748
  "(",
2711
2749
  volumeSavingsPercent,
2712
2750
  "%)"
2713
2751
  ] })
2714
2752
  ] })
2715
2753
  ] }),
2716
- /* @__PURE__ */ jsxs6("span", { className: "lb-bundle-summary__prices", children: [
2717
- bundle.widgetConfig.pricing.showComparePrice && volumeSavings > 0 && /* @__PURE__ */ jsx6("span", { className: "lb-bundle-compare-price", "data-compare-price": true, children: formatMoney4(undiscountedTotal, currency) }),
2718
- /* @__PURE__ */ jsx6("span", { className: "lb-bundle-sale-price", "data-total-price": true, children: formatMoney4(volumeTotal, currency) })
2754
+ /* @__PURE__ */ jsxs7("span", { className: "lb-bundle-summary__prices", children: [
2755
+ bundle.widgetConfig.pricing.showComparePrice && volumeSavings > 0 && /* @__PURE__ */ jsx7("span", { className: "lb-bundle-compare-price", "data-compare-price": true, children: formatMoney4(undiscountedTotal, currency) }),
2756
+ /* @__PURE__ */ jsx7("span", { className: "lb-bundle-sale-price", "data-total-price": true, children: formatMoney4(volumeTotal, currency) })
2719
2757
  ] })
2720
2758
  ] }),
2721
- /* @__PURE__ */ jsx6(
2759
+ /* @__PURE__ */ jsx7(
2722
2760
  "button",
2723
2761
  {
2724
2762
  className: "lb-bundle__cta",
2725
2763
  onClick: handleAddToCart,
2726
2764
  disabled: addingToCart || isSoldOut || selectedTierUnavailable,
2727
2765
  "aria-busy": addingToCart,
2728
- children: addingToCart ? "Adding..." : isSoldOut || selectedTierUnavailable ? "Sold out" : bundle.widgetConfig.cta.ctaText ?? `Add ${quantity} to Cart`
2766
+ children: addingToCart ? "Adding to cart" : isSoldOut || selectedTierUnavailable ? "Sold out" : bundle.widgetConfig.cta.ctaText ?? "Add to cart"
2729
2767
  }
2730
2768
  )
2731
2769
  ]
@@ -2740,7 +2778,7 @@ import {
2740
2778
  formatUnitPrice as formatUnitPrice5,
2741
2779
  isVariantFulfillable as isVariantFulfillable5
2742
2780
  } from "@lime-bundles/core";
2743
- import { jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
2781
+ import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
2744
2782
  function discountedUnit(price, percent) {
2745
2783
  const cents = Math.round(price * 100);
2746
2784
  const discounted = cents - Math.floor(cents * percent / 100);
@@ -2874,9 +2912,9 @@ function BogoBundle(props) {
2874
2912
  }
2875
2913
  }, [bundle, buyProduct, getProduct, selectedVariants, resolveVariant, onAddToCart, onError, trackAddToCart, percent]);
2876
2914
  if (result.status === "loading") {
2877
- return /* @__PURE__ */ jsxs7("div", { className: `lb-bundle lb-bundle--loading ${className ?? ""}`, children: [
2878
- /* @__PURE__ */ jsx7("div", { className: "lb-skeleton lb-skeleton--title" }),
2879
- /* @__PURE__ */ jsx7("div", { className: "lb-skeleton lb-skeleton--products" })
2915
+ return /* @__PURE__ */ jsxs8("div", { className: `lb-bundle lb-bundle--loading ${className ?? ""}`, children: [
2916
+ /* @__PURE__ */ jsx8("div", { className: "lb-skeleton lb-skeleton--title" }),
2917
+ /* @__PURE__ */ jsx8("div", { className: "lb-skeleton lb-skeleton--products" })
2880
2918
  ] });
2881
2919
  }
2882
2920
  if (result.status === "error") return null;
@@ -2893,7 +2931,7 @@ function BogoBundle(props) {
2893
2931
  const showCompare = bundle.widgetConfig.pricing.showComparePrice && savings > 0;
2894
2932
  const showSavings = bundle.widgetConfig.savingsBar.visible && savings > 0;
2895
2933
  const badge = percent === 100 ? "Free" : `${percent}% off`;
2896
- return /* @__PURE__ */ jsxs7(
2934
+ return /* @__PURE__ */ jsxs8(
2897
2935
  "div",
2898
2936
  {
2899
2937
  ref: (el) => {
@@ -2904,19 +2942,19 @@ function BogoBundle(props) {
2904
2942
  role: "region",
2905
2943
  "aria-label": bundle.title,
2906
2944
  children: [
2907
- /* @__PURE__ */ jsx7("div", { className: "lb-bundle-header", children: /* @__PURE__ */ jsxs7("div", { className: "lb-bundle-header__content", children: [
2908
- /* @__PURE__ */ jsx7("h3", { className: "lb-bundle-title", children: bundle.title }),
2909
- bundle.description && /* @__PURE__ */ jsx7("p", { className: "lb-bundle-subtitle", children: bundle.description })
2945
+ /* @__PURE__ */ jsx8("div", { className: "lb-bundle-header", children: /* @__PURE__ */ jsxs8("div", { className: "lb-bundle-header__content", children: [
2946
+ /* @__PURE__ */ jsx8("h3", { className: "lb-bundle-title", children: bundle.title }),
2947
+ bundle.description && /* @__PURE__ */ jsx8("p", { className: "lb-bundle-subtitle", children: bundle.description })
2910
2948
  ] }) }),
2911
- /* @__PURE__ */ jsx7(
2949
+ /* @__PURE__ */ jsx8(
2912
2950
  BundleCountdown,
2913
2951
  {
2914
2952
  endsAt: bundle.endsAt,
2915
2953
  widgetConfig: bundle.widgetConfig
2916
2954
  }
2917
2955
  ),
2918
- /* @__PURE__ */ jsxs7("div", { className: "lb-bundle__products", children: [
2919
- /* @__PURE__ */ jsx7(
2956
+ /* @__PURE__ */ jsxs8("div", { className: "lb-bundle__products", children: [
2957
+ /* @__PURE__ */ jsx8(
2920
2958
  BogoProductRow,
2921
2959
  {
2922
2960
  side: "buy",
@@ -2928,11 +2966,11 @@ function BogoBundle(props) {
2928
2966
  onVariantChange: handleVariantChange
2929
2967
  }
2930
2968
  ),
2931
- /* @__PURE__ */ jsx7("div", { className: "lb-bogo__plus", "aria-hidden": "true", children: /* @__PURE__ */ jsxs7("svg", { width: "12", height: "12", viewBox: "0 0 18 18", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
2932
- /* @__PURE__ */ jsx7("line", { x1: "9", y1: "3", x2: "9", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
2933
- /* @__PURE__ */ jsx7("line", { x1: "3", y1: "9", x2: "15", y2: "9", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })
2969
+ /* @__PURE__ */ jsx8("div", { className: "lb-bogo__plus", "aria-hidden": "true", children: /* @__PURE__ */ jsxs8("svg", { width: "12", height: "12", viewBox: "0 0 18 18", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
2970
+ /* @__PURE__ */ jsx8("line", { x1: "9", y1: "3", x2: "9", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
2971
+ /* @__PURE__ */ jsx8("line", { x1: "3", y1: "9", x2: "15", y2: "9", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })
2934
2972
  ] }) }),
2935
- /* @__PURE__ */ jsx7(
2973
+ /* @__PURE__ */ jsx8(
2936
2974
  BogoProductRow,
2937
2975
  {
2938
2976
  side: "get",
@@ -2945,36 +2983,36 @@ function BogoBundle(props) {
2945
2983
  }
2946
2984
  )
2947
2985
  ] }),
2948
- /* @__PURE__ */ jsx7("div", { className: "lb-bundle-divider" }),
2949
- /* @__PURE__ */ jsxs7("div", { className: "lb-bundle-summary", children: [
2950
- /* @__PURE__ */ jsxs7("div", { className: "lb-bundle-summary__text", children: [
2951
- /* @__PURE__ */ jsx7("span", { className: "lb-bundle-summary__label", children: "Bundle total" }),
2952
- showSavings && /* @__PURE__ */ jsxs7("p", { className: "lb-bundle-savings-line", "data-savings-bar": true, children: [
2986
+ /* @__PURE__ */ jsx8("div", { className: "lb-bundle-divider" }),
2987
+ /* @__PURE__ */ jsxs8("div", { className: "lb-bundle-summary", children: [
2988
+ /* @__PURE__ */ jsxs8("div", { className: "lb-bundle-summary__text", children: [
2989
+ /* @__PURE__ */ jsx8("span", { className: "lb-bundle-summary__label", children: "Bundle total" }),
2990
+ showSavings && /* @__PURE__ */ jsxs8("p", { className: "lb-bundle-savings-line", "data-savings-bar": true, children: [
2953
2991
  "You save",
2954
2992
  " ",
2955
- /* @__PURE__ */ jsx7("span", { "data-savings-amount": true, children: formatMoney5(savings, currency) }),
2993
+ /* @__PURE__ */ jsx8("span", { "data-savings-amount": true, children: formatMoney5(savings, currency) }),
2956
2994
  " ",
2957
- /* @__PURE__ */ jsxs7("span", { "data-savings-percent": true, children: [
2995
+ /* @__PURE__ */ jsxs8("span", { "data-savings-percent": true, children: [
2958
2996
  "(",
2959
2997
  savingsPercent,
2960
2998
  "%)"
2961
2999
  ] })
2962
3000
  ] })
2963
3001
  ] }),
2964
- /* @__PURE__ */ jsxs7("span", { className: "lb-bundle-summary__prices", children: [
2965
- showCompare && /* @__PURE__ */ jsx7("span", { className: "lb-bundle-compare-price", "data-compare-price": true, children: formatMoney5(comparePrice, currency) }),
2966
- /* @__PURE__ */ jsx7("span", { className: "lb-bundle-sale-price", "data-sale-price": true, children: formatMoney5(salePrice, currency) })
3002
+ /* @__PURE__ */ jsxs8("span", { className: "lb-bundle-summary__prices", children: [
3003
+ showCompare && /* @__PURE__ */ jsx8("span", { className: "lb-bundle-compare-price", "data-compare-price": true, children: formatMoney5(comparePrice, currency) }),
3004
+ /* @__PURE__ */ jsx8("span", { className: "lb-bundle-sale-price", "data-sale-price": true, children: formatMoney5(salePrice, currency) })
2967
3005
  ] })
2968
3006
  ] }),
2969
- cartError && /* @__PURE__ */ jsx7("p", { className: "lb-bundle__error", role: "alert", children: cartError }),
2970
- /* @__PURE__ */ jsx7(
3007
+ cartError && /* @__PURE__ */ jsx8("p", { className: "lb-bundle__error", role: "alert", children: cartError }),
3008
+ /* @__PURE__ */ jsx8(
2971
3009
  "button",
2972
3010
  {
2973
3011
  className: "lb-bundle__cta",
2974
3012
  onClick: handleAddToCart,
2975
3013
  disabled: addingToCart || oosSides > 0,
2976
3014
  "aria-busy": addingToCart,
2977
- children: addingToCart ? "Adding..." : oosSides > 0 ? `${oosSides} item${oosSides === 1 ? "" : "s"} unavailable` : bundle.widgetConfig.cta.ctaText ?? "Add Bundle to Cart"
3015
+ children: addingToCart ? "Adding to cart" : oosSides > 0 ? `${oosSides} item${oosSides === 1 ? "" : "s"} out of stock` : bundle.widgetConfig.cta.ctaText ?? "Add to cart"
2978
3016
  }
2979
3017
  )
2980
3018
  ]
@@ -3006,8 +3044,8 @@ function BogoProductRow({ side, product, quantity, percent, badge, currency, onV
3006
3044
  currency
3007
3045
  ) : null;
3008
3046
  const thumbImage = displayVariant?.image ?? product.featuredImage;
3009
- return /* @__PURE__ */ jsxs7("div", { className: "lb-bundle-product-row", part: "product", "data-bogo-role": side, children: [
3010
- thumbImage && /* @__PURE__ */ jsx7(
3047
+ return /* @__PURE__ */ jsxs8("div", { className: "lb-bundle-product-row", part: "product", "data-bogo-role": side, children: [
3048
+ thumbImage ? /* @__PURE__ */ jsx8(
3011
3049
  "img",
3012
3050
  {
3013
3051
  src: thumbImage.url,
@@ -3017,12 +3055,12 @@ function BogoProductRow({ side, product, quantity, percent, badge, currency, onV
3017
3055
  width: thumbImage.width ?? void 0,
3018
3056
  height: thumbImage.height ?? void 0
3019
3057
  }
3020
- ),
3021
- /* @__PURE__ */ jsxs7("div", { className: "lb-bundle__product-info", children: [
3022
- /* @__PURE__ */ jsx7("p", { className: "lb-bundle__product-title", children: product.title }),
3023
- !showPicker && displayVariant && variants.length > 1 && /* @__PURE__ */ jsx7("span", { className: "lb-bundle-variant-badge", children: displayVariant.title }),
3024
- /* @__PURE__ */ jsxs7("span", { className: "lb-bundle-product-prices", children: [
3025
- compareAt && /* @__PURE__ */ jsx7(
3058
+ ) : /* @__PURE__ */ jsx8(ThumbnailPlaceholder, { className: "lb-bundle__product-image" }),
3059
+ /* @__PURE__ */ jsxs8("div", { className: "lb-bundle__product-info", children: [
3060
+ /* @__PURE__ */ jsx8("p", { className: "lb-bundle__product-title", children: product.title }),
3061
+ !showPicker && displayVariant && variants.length > 1 && /* @__PURE__ */ jsx8("span", { className: "lb-bundle-variant-badge", children: displayVariant.title }),
3062
+ /* @__PURE__ */ jsxs8("span", { className: "lb-bundle-product-prices", children: [
3063
+ compareAt && /* @__PURE__ */ jsx8(
3026
3064
  "span",
3027
3065
  {
3028
3066
  className: "lb-bundle-product-compare-price",
@@ -3030,13 +3068,13 @@ function BogoProductRow({ side, product, quantity, percent, badge, currency, onV
3030
3068
  children: compareAt
3031
3069
  }
3032
3070
  ),
3033
- /* @__PURE__ */ jsx7("span", { className: "lb-bundle__product-price", "data-product-price": true, children: priceText }),
3034
- /* @__PURE__ */ jsxs7("span", { className: "lb-bundle-qty-inline", "data-qty-inline": true, children: [
3071
+ /* @__PURE__ */ jsx8("span", { className: "lb-bundle__product-price", "data-product-price": true, children: priceText }),
3072
+ /* @__PURE__ */ jsxs8("span", { className: "lb-bundle-qty-inline", "data-qty-inline": true, children: [
3035
3073
  "\xD7",
3036
3074
  quantity
3037
3075
  ] })
3038
3076
  ] }),
3039
- unitPriceText && /* @__PURE__ */ jsx7(
3077
+ unitPriceText && /* @__PURE__ */ jsx8(
3040
3078
  "span",
3041
3079
  {
3042
3080
  className: "lb-bundle__product-unit-price",
@@ -3044,13 +3082,13 @@ function BogoProductRow({ side, product, quantity, percent, badge, currency, onV
3044
3082
  children: unitPriceText
3045
3083
  }
3046
3084
  ),
3047
- showPicker && /* @__PURE__ */ jsx7("div", { className: "lb-bundle__product-variant-pickers", children: optionNames.map((optionName, optionIndex) => {
3085
+ showPicker && /* @__PURE__ */ jsx8("div", { className: "lb-bundle__product-variant-pickers", children: optionNames.map((optionName, optionIndex) => {
3048
3086
  const dropdownOptions = optionsFor(optionIndex).map((o) => ({
3049
3087
  value: o.value,
3050
3088
  label: o.value,
3051
3089
  disabled: o.disabled
3052
3090
  }));
3053
- return /* @__PURE__ */ jsx7(
3091
+ return /* @__PURE__ */ jsx8(
3054
3092
  VariantDropdown,
3055
3093
  {
3056
3094
  options: dropdownOptions,
@@ -3062,7 +3100,7 @@ function BogoProductRow({ side, product, quantity, percent, badge, currency, onV
3062
3100
  );
3063
3101
  }) })
3064
3102
  ] }),
3065
- badge && /* @__PURE__ */ jsx7("span", { className: "lb-bogo__badge", children: badge })
3103
+ badge && /* @__PURE__ */ jsx8("span", { className: "lb-bogo__badge", children: badge })
3066
3104
  ] });
3067
3105
  }
3068
3106
 
@@ -3094,7 +3132,7 @@ import {
3094
3132
  stepHeadroom,
3095
3133
  DEFAULT_PRODUCT_RULE as DEFAULT_PRODUCT_RULE3
3096
3134
  } from "@lime-bundles/core";
3097
- import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
3135
+ import { jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
3098
3136
  function ruleFor3(bundle, productId, variantId) {
3099
3137
  if (variantId) {
3100
3138
  const vRule = bundle.variantRules[variantId];
@@ -3295,7 +3333,7 @@ function MultiStepPicker({
3295
3333
  // inside carries the interactive role + focus trap. So the static-element
3296
3334
  // interaction lint does not apply to this backdrop.
3297
3335
  // eslint-disable-next-line jsx-a11y/no-static-element-interactions
3298
- /* @__PURE__ */ jsx8(
3336
+ /* @__PURE__ */ jsx9(
3299
3337
  "div",
3300
3338
  {
3301
3339
  ref: (el) => {
@@ -3307,7 +3345,7 @@ function MultiStepPicker({
3307
3345
  "data-bundle-gid": bundle.id,
3308
3346
  onMouseDown: onOverlayMouseDown,
3309
3347
  onMouseUp: onOverlayMouseUp,
3310
- children: /* @__PURE__ */ jsxs8(
3348
+ children: /* @__PURE__ */ jsxs9(
3311
3349
  "div",
3312
3350
  {
3313
3351
  ref: dialogRef,
@@ -3317,10 +3355,10 @@ function MultiStepPicker({
3317
3355
  "aria-labelledby": titleId,
3318
3356
  tabIndex: -1,
3319
3357
  children: [
3320
- /* @__PURE__ */ jsxs8("div", { className: "lb-mix-match__modal-header", children: [
3321
- /* @__PURE__ */ jsxs8("div", { className: "lb-mix-match__modal-header-top", children: [
3322
- /* @__PURE__ */ jsxs8("div", { className: "lb-mix-match__modal-heading", children: [
3323
- /* @__PURE__ */ jsx8(
3358
+ /* @__PURE__ */ jsxs9("div", { className: "lb-mix-match__modal-header", children: [
3359
+ /* @__PURE__ */ jsxs9("div", { className: "lb-mix-match__modal-header-top", children: [
3360
+ /* @__PURE__ */ jsxs9("div", { className: "lb-mix-match__modal-heading", children: [
3361
+ /* @__PURE__ */ jsx9(
3324
3362
  "h4",
3325
3363
  {
3326
3364
  className: "lb-mix-match__modal-title",
@@ -3330,9 +3368,9 @@ function MultiStepPicker({
3330
3368
  children: "Add to your bundle"
3331
3369
  }
3332
3370
  ),
3333
- /* @__PURE__ */ jsx8("p", { className: "lb-mix-match__modal-subtitle", "data-modal-subtitle": true, children: subtitle })
3371
+ /* @__PURE__ */ jsx9("p", { className: "lb-mix-match__modal-subtitle", "data-modal-subtitle": true, children: subtitle })
3334
3372
  ] }),
3335
- /* @__PURE__ */ jsx8(
3373
+ /* @__PURE__ */ jsx9(
3336
3374
  "button",
3337
3375
  {
3338
3376
  ref: closeBtnRef,
@@ -3341,16 +3379,16 @@ function MultiStepPicker({
3341
3379
  "data-modal-close": true,
3342
3380
  "aria-label": "Close",
3343
3381
  onClick: onClose,
3344
- children: /* @__PURE__ */ jsx8(CloseIcon3, {})
3382
+ children: /* @__PURE__ */ jsx9(CloseIcon3, {})
3345
3383
  }
3346
3384
  )
3347
3385
  ] }),
3348
- /* @__PURE__ */ jsx8(
3386
+ /* @__PURE__ */ jsx9(
3349
3387
  "div",
3350
3388
  {
3351
3389
  className: "lb-mix-match__progress lb-mix-match__modal-progress",
3352
3390
  "data-progress": true,
3353
- children: /* @__PURE__ */ jsx8(
3391
+ children: /* @__PURE__ */ jsx9(
3354
3392
  "div",
3355
3393
  {
3356
3394
  className: "lb-mix-match__progress-segments",
@@ -3359,7 +3397,7 @@ function MultiStepPicker({
3359
3397
  "aria-valuenow": shownUnits,
3360
3398
  "aria-valuemin": 0,
3361
3399
  "aria-valuemax": stepMin,
3362
- children: Array.from({ length: stepMin }).map((_, i) => /* @__PURE__ */ jsx8(
3400
+ children: Array.from({ length: stepMin }).map((_, i) => /* @__PURE__ */ jsx9(
3363
3401
  "span",
3364
3402
  {
3365
3403
  className: `lb-mix-match__progress-segment${i < shownUnits ? " lb-mix-match__progress-segment--filled" : ""}`,
@@ -3372,8 +3410,8 @@ function MultiStepPicker({
3372
3410
  }
3373
3411
  )
3374
3412
  ] }),
3375
- wc.showSearch && /* @__PURE__ */ jsxs8("div", { className: "lb-mix-match__modal-search", children: [
3376
- /* @__PURE__ */ jsx8(
3413
+ wc.showSearch && /* @__PURE__ */ jsxs9("div", { className: "lb-mix-match__modal-search", children: [
3414
+ /* @__PURE__ */ jsx9(
3377
3415
  "input",
3378
3416
  {
3379
3417
  type: "text",
@@ -3387,7 +3425,7 @@ function MultiStepPicker({
3387
3425
  onChange: (e) => setQuery(e.target.value)
3388
3426
  }
3389
3427
  ),
3390
- query.length > 0 && /* @__PURE__ */ jsx8(
3428
+ query.length > 0 && /* @__PURE__ */ jsx9(
3391
3429
  "button",
3392
3430
  {
3393
3431
  type: "button",
@@ -3395,11 +3433,11 @@ function MultiStepPicker({
3395
3433
  "data-modal-search-clear": true,
3396
3434
  "aria-label": "Clear search",
3397
3435
  onClick: () => setQuery(""),
3398
- children: /* @__PURE__ */ jsx8(SearchClearIcon2, {})
3436
+ children: /* @__PURE__ */ jsx9(SearchClearIcon2, {})
3399
3437
  }
3400
3438
  )
3401
3439
  ] }),
3402
- showFilters && /* @__PURE__ */ jsx8(
3440
+ showFilters && /* @__PURE__ */ jsx9(
3403
3441
  "div",
3404
3442
  {
3405
3443
  className: "lb-mix-match__filters",
@@ -3408,7 +3446,7 @@ function MultiStepPicker({
3408
3446
  "aria-label": "Filter by product type",
3409
3447
  children: [FILTERS_ALL2, ...productTypes].map((value) => {
3410
3448
  const isActive = value === activeType;
3411
- return /* @__PURE__ */ jsx8(
3449
+ return /* @__PURE__ */ jsx9(
3412
3450
  "button",
3413
3451
  {
3414
3452
  type: "button",
@@ -3423,7 +3461,7 @@ function MultiStepPicker({
3423
3461
  })
3424
3462
  }
3425
3463
  ),
3426
- /* @__PURE__ */ jsx8("div", { className: "lb-mix-match__modal-list", "data-modal-list": true, ref: listRef, children: filtered.map((ep) => /* @__PURE__ */ jsx8(
3464
+ /* @__PURE__ */ jsx9("div", { className: "lb-mix-match__modal-list", "data-modal-list": true, ref: listRef, children: filtered.map((ep) => /* @__PURE__ */ jsx9(
3427
3465
  MultiStepPickerRow,
3428
3466
  {
3429
3467
  bundle,
@@ -3441,10 +3479,10 @@ function MultiStepPicker({
3441
3479
  },
3442
3480
  `${stepIndex}:${ep.product.id}`
3443
3481
  )) }),
3444
- showEmpty && /* @__PURE__ */ jsx8("div", { className: "lb-mix-match__modal-empty", "data-modal-empty": true, children: /* @__PURE__ */ jsx8("p", { children: "No products match your search" }) }),
3445
- /* @__PURE__ */ jsx8("span", { "data-modal-live": true, "aria-live": "polite", className: "lb-visually-hidden", children: announcement || (query.trim() ? `${filtered.length} products shown` : "") }),
3446
- /* @__PURE__ */ jsxs8("div", { className: "lb-mix-match__modal-footer lb-multi-step__modal-footer", children: [
3447
- stepIndex > 0 && /* @__PURE__ */ jsx8(
3482
+ showEmpty && /* @__PURE__ */ jsx9("div", { className: "lb-mix-match__modal-empty", "data-modal-empty": true, children: /* @__PURE__ */ jsx9("p", { children: "No products match your search" }) }),
3483
+ /* @__PURE__ */ jsx9("span", { "data-modal-live": true, "aria-live": "polite", className: "lb-visually-hidden", children: announcement || (query.trim() ? `${filtered.length} products shown` : "") }),
3484
+ /* @__PURE__ */ jsxs9("div", { className: "lb-mix-match__modal-footer lb-multi-step__modal-footer", children: [
3485
+ stepIndex > 0 && /* @__PURE__ */ jsx9(
3448
3486
  "button",
3449
3487
  {
3450
3488
  type: "button",
@@ -3454,7 +3492,7 @@ function MultiStepPicker({
3454
3492
  children: "Back"
3455
3493
  }
3456
3494
  ),
3457
- /* @__PURE__ */ jsx8(
3495
+ /* @__PURE__ */ jsx9(
3458
3496
  "span",
3459
3497
  {
3460
3498
  className: "lb-mix-match__modal-footer-count",
@@ -3463,7 +3501,7 @@ function MultiStepPicker({
3463
3501
  children: `${shownUnits} of ${stepMin} added`
3464
3502
  }
3465
3503
  ),
3466
- !isLastStep && /* @__PURE__ */ jsx8(
3504
+ !isLastStep && /* @__PURE__ */ jsx9(
3467
3505
  "button",
3468
3506
  {
3469
3507
  type: "button",
@@ -3476,7 +3514,7 @@ function MultiStepPicker({
3476
3514
  children: "Next"
3477
3515
  }
3478
3516
  ),
3479
- isLastStep && /* @__PURE__ */ jsx8(
3517
+ isLastStep && /* @__PURE__ */ jsx9(
3480
3518
  "button",
3481
3519
  {
3482
3520
  type: "button",
@@ -3619,7 +3657,7 @@ function MultiStepPickerRow({
3619
3657
  }
3620
3658
  const priceCents = parseFloat(currentVariant.price.amount);
3621
3659
  const compareCents = currentVariant.compareAtPrice ? parseFloat(currentVariant.compareAtPrice.amount) : null;
3622
- return /* @__PURE__ */ jsxs8(
3660
+ return /* @__PURE__ */ jsxs9(
3623
3661
  "div",
3624
3662
  {
3625
3663
  className: `lb-mix-match__modal-product${isOos ? " lb-mix-match__modal-product--sold-out" : ""}${variantInStep ? " lb-mix-match__modal-product--in-bundle" : ""}`,
@@ -3628,21 +3666,27 @@ function MultiStepPickerRow({
3628
3666
  "data-type": product.productType ?? "",
3629
3667
  "aria-disabled": isOos || void 0,
3630
3668
  children: [
3631
- /* @__PURE__ */ jsxs8("div", { className: "lb-mix-match__modal-product-thumb", children: [
3632
- thumbImage && /* @__PURE__ */ jsx8(
3633
- "img",
3634
- {
3635
- src: thumbImage.url,
3636
- alt: thumbImage.altText ?? product.title,
3637
- loading: "lazy",
3638
- width: thumbImage.width ?? void 0,
3639
- height: thumbImage.height ?? void 0
3640
- }
3641
- ),
3642
- variantInStep && /* @__PURE__ */ jsx8("span", { className: "lb-mix-match__modal-added-badge", children: "Added" })
3643
- ] }),
3644
- /* @__PURE__ */ jsxs8("div", { className: "lb-mix-match__modal-product-info", children: [
3645
- /* @__PURE__ */ jsx8("p", { className: "lb-mix-match__modal-product-title", children: /* @__PURE__ */ jsx8(
3669
+ /* @__PURE__ */ jsxs9(
3670
+ "div",
3671
+ {
3672
+ className: thumbImage ? "lb-mix-match__modal-product-thumb" : placeholderBoxClass("lb-mix-match__modal-product-thumb"),
3673
+ children: [
3674
+ thumbImage ? /* @__PURE__ */ jsx9(
3675
+ "img",
3676
+ {
3677
+ src: thumbImage.url,
3678
+ alt: thumbImage.altText ?? product.title,
3679
+ loading: "lazy",
3680
+ width: thumbImage.width ?? void 0,
3681
+ height: thumbImage.height ?? void 0
3682
+ }
3683
+ ) : /* @__PURE__ */ jsx9(PlaceholderMark, {}),
3684
+ variantInStep && /* @__PURE__ */ jsx9("span", { className: "lb-mix-match__modal-added-badge", children: "Added" })
3685
+ ]
3686
+ }
3687
+ ),
3688
+ /* @__PURE__ */ jsxs9("div", { className: "lb-mix-match__modal-product-info", children: [
3689
+ /* @__PURE__ */ jsx9("p", { className: "lb-mix-match__modal-product-title", children: /* @__PURE__ */ jsx9(
3646
3690
  "a",
3647
3691
  {
3648
3692
  href: `/products/${product.handle}`,
@@ -3651,24 +3695,24 @@ function MultiStepPickerRow({
3651
3695
  children: product.title
3652
3696
  }
3653
3697
  ) }),
3654
- /* @__PURE__ */ jsxs8("p", { className: "lb-mix-match__modal-product-price", children: [
3655
- /* @__PURE__ */ jsx8("span", { "data-row-price-sale": true, children: formatMoney6(priceCents, currency) }),
3656
- compareCents !== null && compareCents > priceCents && /* @__PURE__ */ jsx8("s", { className: "lb-mix-match__modal-product-compare", "data-row-compare": true, children: formatMoney6(compareCents, currency) })
3698
+ /* @__PURE__ */ jsxs9("p", { className: "lb-mix-match__modal-product-price", children: [
3699
+ /* @__PURE__ */ jsx9("span", { "data-row-price-sale": true, children: formatMoney6(priceCents, currency) }),
3700
+ compareCents !== null && compareCents > priceCents && /* @__PURE__ */ jsx9("s", { className: "lb-mix-match__modal-product-compare", "data-row-compare": true, children: formatMoney6(compareCents, currency) })
3657
3701
  ] }),
3658
- unitPriceText && /* @__PURE__ */ jsx8("p", { className: "lb-mix-match__modal-product-unit-price lb-bundle-product-unit-price", children: unitPriceText }),
3659
- showPicker && /* @__PURE__ */ jsx8("div", { className: "lb-bundle-variant-option-groups", children: optionNames.map((optionName, optionIndex) => {
3702
+ unitPriceText && /* @__PURE__ */ jsx9("p", { className: "lb-mix-match__modal-product-unit-price lb-bundle-product-unit-price", children: unitPriceText }),
3703
+ showPicker && /* @__PURE__ */ jsx9("div", { className: "lb-bundle-variant-option-groups", children: optionNames.map((optionName, optionIndex) => {
3660
3704
  const dropdownOptions = optionsFor(optionIndex).map((o) => ({
3661
3705
  value: o.value,
3662
3706
  label: o.value,
3663
3707
  disabled: o.disabled
3664
3708
  }));
3665
- return /* @__PURE__ */ jsxs8(
3709
+ return /* @__PURE__ */ jsxs9(
3666
3710
  "div",
3667
3711
  {
3668
3712
  className: "lb-bundle-variant-option-group",
3669
3713
  children: [
3670
- /* @__PURE__ */ jsx8("span", { className: "lb-bundle-variant-option-label", children: optionName }),
3671
- /* @__PURE__ */ jsx8(
3714
+ /* @__PURE__ */ jsx9("span", { className: "lb-bundle-variant-option-label", children: optionName }),
3715
+ /* @__PURE__ */ jsx9(
3672
3716
  VariantDropdown,
3673
3717
  {
3674
3718
  className: "lb-mix-match__variant-select-dropdown",
@@ -3683,17 +3727,17 @@ function MultiStepPickerRow({
3683
3727
  optionName
3684
3728
  );
3685
3729
  }) }),
3686
- !showPicker && variants.length === 1 && currentVariant.title !== "Default Title" && /* @__PURE__ */ jsx8("span", { className: "lb-mix-match__filled-variant", children: currentVariant.title }),
3687
- !isOos && needsMoreSpots && room > 0 && /* @__PURE__ */ jsx8("span", { className: "lb-mix-match__modal-needs-spots", children: vRule.min === 1 ? "Needs 1 spot" : `Needs ${vRule.min} spots` }),
3688
- isOos ? /* @__PURE__ */ jsx8("span", { className: "lb-mix-match__modal-sold-out-label", children: "Sold out" }) : /* @__PURE__ */ jsxs8("div", { className: "lb-mix-match__modal-product-actions", children: [
3689
- showStepper && /* @__PURE__ */ jsx8("div", { className: "lb-bundle-variant-option-group lb-mix-match__qty-stepper-group", children: /* @__PURE__ */ jsxs8(
3730
+ !showPicker && variants.length === 1 && currentVariant.title !== "Default Title" && /* @__PURE__ */ jsx9("span", { className: "lb-mix-match__filled-variant", children: currentVariant.title }),
3731
+ !isOos && needsMoreSpots && room > 0 && /* @__PURE__ */ jsx9("span", { className: "lb-mix-match__modal-needs-spots", children: vRule.min === 1 ? "Needs 1 spot" : `Needs ${vRule.min} spots` }),
3732
+ isOos ? /* @__PURE__ */ jsx9("span", { className: "lb-mix-match__modal-sold-out-label", children: "Sold out" }) : /* @__PURE__ */ jsxs9("div", { className: "lb-mix-match__modal-product-actions", children: [
3733
+ showStepper && /* @__PURE__ */ jsx9("div", { className: "lb-bundle-variant-option-group lb-mix-match__qty-stepper-group", children: /* @__PURE__ */ jsxs9(
3690
3734
  "div",
3691
3735
  {
3692
3736
  className: "lb-mix-match__qty-stepper",
3693
3737
  role: "group",
3694
3738
  "aria-label": "Quantity",
3695
3739
  children: [
3696
- /* @__PURE__ */ jsx8(
3740
+ /* @__PURE__ */ jsx9(
3697
3741
  "button",
3698
3742
  {
3699
3743
  type: "button",
@@ -3715,7 +3759,7 @@ function MultiStepPickerRow({
3715
3759
  children: "\u2212"
3716
3760
  }
3717
3761
  ),
3718
- /* @__PURE__ */ jsx8(
3762
+ /* @__PURE__ */ jsx9(
3719
3763
  "span",
3720
3764
  {
3721
3765
  className: "lb-mix-match__qty-stepper-value",
@@ -3724,7 +3768,7 @@ function MultiStepPickerRow({
3724
3768
  children: shownQty
3725
3769
  }
3726
3770
  ),
3727
- /* @__PURE__ */ jsx8(
3771
+ /* @__PURE__ */ jsx9(
3728
3772
  "button",
3729
3773
  {
3730
3774
  type: "button",
@@ -3749,7 +3793,7 @@ function MultiStepPickerRow({
3749
3793
  ]
3750
3794
  }
3751
3795
  ) }),
3752
- /* @__PURE__ */ jsx8(
3796
+ /* @__PURE__ */ jsx9(
3753
3797
  "button",
3754
3798
  {
3755
3799
  type: "button",
@@ -3768,7 +3812,7 @@ function MultiStepPickerRow({
3768
3812
  );
3769
3813
  }
3770
3814
  function CloseIcon3() {
3771
- return /* @__PURE__ */ jsxs8(
3815
+ return /* @__PURE__ */ jsxs9(
3772
3816
  "svg",
3773
3817
  {
3774
3818
  width: "20",
@@ -3778,14 +3822,14 @@ function CloseIcon3() {
3778
3822
  xmlns: "http://www.w3.org/2000/svg",
3779
3823
  "aria-hidden": "true",
3780
3824
  children: [
3781
- /* @__PURE__ */ jsx8("line", { x1: "5", y1: "5", x2: "15", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
3782
- /* @__PURE__ */ jsx8("line", { x1: "15", y1: "5", x2: "5", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })
3825
+ /* @__PURE__ */ jsx9("line", { x1: "5", y1: "5", x2: "15", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
3826
+ /* @__PURE__ */ jsx9("line", { x1: "15", y1: "5", x2: "5", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })
3783
3827
  ]
3784
3828
  }
3785
3829
  );
3786
3830
  }
3787
3831
  function SearchClearIcon2() {
3788
- return /* @__PURE__ */ jsx8(
3832
+ return /* @__PURE__ */ jsx9(
3789
3833
  "svg",
3790
3834
  {
3791
3835
  width: "16",
@@ -3794,13 +3838,13 @@ function SearchClearIcon2() {
3794
3838
  fill: "currentColor",
3795
3839
  xmlns: "http://www.w3.org/2000/svg",
3796
3840
  "aria-hidden": "true",
3797
- children: /* @__PURE__ */ jsx8("path", { d: "M14.348 5.652a.5.5 0 0 0-.707 0L10 9.293 6.36 5.652a.5.5 0 1 0-.708.707L9.293 10l-3.641 3.641a.5.5 0 0 0 .708.707L10 10.707l3.641 3.641a.5.5 0 0 0 .707-.707L10.707 10l3.641-3.641a.5.5 0 0 0 0-.707z" })
3841
+ children: /* @__PURE__ */ jsx9("path", { d: "M14.348 5.652a.5.5 0 0 0-.707 0L10 9.293 6.36 5.652a.5.5 0 1 0-.708.707L9.293 10l-3.641 3.641a.5.5 0 0 0 .708.707L10 10.707l3.641 3.641a.5.5 0 0 0 .707-.707L10.707 10l3.641-3.641a.5.5 0 0 0 0-.707z" })
3798
3842
  }
3799
3843
  );
3800
3844
  }
3801
3845
 
3802
3846
  // src/components/MultiStepBundle.tsx
3803
- import { jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
3847
+ import { jsx as jsx10, jsxs as jsxs10 } from "react/jsx-runtime";
3804
3848
  function ruleFor4(bundle, productId, variantId) {
3805
3849
  if (variantId) {
3806
3850
  const vRule = bundle.variantRules[variantId];
@@ -4099,9 +4143,9 @@ function MultiStepBundle(props) {
4099
4143
  }
4100
4144
  }, [bundle, selections, valid, onAddToCart, onError, trackAddToCart, totalQuantity, steps]);
4101
4145
  if (result.status === "loading") {
4102
- return /* @__PURE__ */ jsxs9("div", { className: `lb-bundle lb-bundle--loading ${className ?? ""}`, children: [
4103
- /* @__PURE__ */ jsx9("div", { className: "lb-skeleton lb-skeleton--title" }),
4104
- /* @__PURE__ */ jsx9("div", { className: "lb-skeleton lb-skeleton--products" })
4146
+ return /* @__PURE__ */ jsxs10("div", { className: `lb-bundle lb-bundle--loading ${className ?? ""}`, children: [
4147
+ /* @__PURE__ */ jsx10("div", { className: "lb-skeleton lb-skeleton--title" }),
4148
+ /* @__PURE__ */ jsx10("div", { className: "lb-skeleton lb-skeleton--products" })
4105
4149
  ] });
4106
4150
  }
4107
4151
  if (result.status === "error") return null;
@@ -4121,8 +4165,8 @@ function MultiStepBundle(props) {
4121
4165
  );
4122
4166
  if (requiredBlocked) return null;
4123
4167
  const currency = bundle.products[0]?.priceRange.minVariantPrice.currencyCode ?? "USD";
4124
- const ctaLabel = addingToCart ? "Adding..." : bundle.widgetConfig.cta.ctaText || "Add to cart";
4125
- return /* @__PURE__ */ jsxs9(
4168
+ const ctaLabel = addingToCart ? "Adding to cart" : bundle.widgetConfig.cta.ctaText || "Add to cart";
4169
+ return /* @__PURE__ */ jsxs10(
4126
4170
  "div",
4127
4171
  {
4128
4172
  ref: (el) => {
@@ -4134,19 +4178,19 @@ function MultiStepBundle(props) {
4134
4178
  "aria-label": bundle.title,
4135
4179
  "data-required-quantity": totalMin,
4136
4180
  children: [
4137
- /* @__PURE__ */ jsx9("div", { className: "lb-bundle-header", children: /* @__PURE__ */ jsxs9("div", { className: "lb-bundle-header__content", children: [
4138
- /* @__PURE__ */ jsx9("h3", { className: "lb-bundle-title", children: bundle.title }),
4139
- bundle.description && /* @__PURE__ */ jsx9("p", { className: "lb-bundle-subtitle", children: bundle.description })
4181
+ /* @__PURE__ */ jsx10("div", { className: "lb-bundle-header", children: /* @__PURE__ */ jsxs10("div", { className: "lb-bundle-header__content", children: [
4182
+ /* @__PURE__ */ jsx10("h3", { className: "lb-bundle-title", children: bundle.title }),
4183
+ bundle.description && /* @__PURE__ */ jsx10("p", { className: "lb-bundle-subtitle", children: bundle.description })
4140
4184
  ] }) }),
4141
- /* @__PURE__ */ jsx9(
4185
+ /* @__PURE__ */ jsx10(
4142
4186
  BundleCountdown,
4143
4187
  {
4144
4188
  endsAt: bundle.endsAt,
4145
4189
  widgetConfig: bundle.widgetConfig
4146
4190
  }
4147
4191
  ),
4148
- /* @__PURE__ */ jsxs9("div", { className: "lb-mix-match__progress", "data-progress": true, children: [
4149
- /* @__PURE__ */ jsx9(
4192
+ /* @__PURE__ */ jsxs10("div", { className: "lb-mix-match__progress", "data-progress": true, children: [
4193
+ /* @__PURE__ */ jsx10(
4150
4194
  "div",
4151
4195
  {
4152
4196
  className: "lb-mix-match__progress-segments",
@@ -4154,7 +4198,7 @@ function MultiStepBundle(props) {
4154
4198
  "aria-valuenow": completedSteps,
4155
4199
  "aria-valuemin": 0,
4156
4200
  "aria-valuemax": steps.length,
4157
- children: Array.from({ length: steps.length }).map((_, i) => /* @__PURE__ */ jsx9(
4201
+ children: Array.from({ length: steps.length }).map((_, i) => /* @__PURE__ */ jsx10(
4158
4202
  "span",
4159
4203
  {
4160
4204
  className: `lb-mix-match__progress-segment${i < completedSteps ? " lb-mix-match__progress-segment--filled" : ""}`,
@@ -4164,8 +4208,8 @@ function MultiStepBundle(props) {
4164
4208
  ))
4165
4209
  }
4166
4210
  ),
4167
- /* @__PURE__ */ jsxs9("div", { className: "lb-mix-match__progress-labels", children: [
4168
- /* @__PURE__ */ jsx9(
4211
+ /* @__PURE__ */ jsxs10("div", { className: "lb-mix-match__progress-labels", children: [
4212
+ /* @__PURE__ */ jsx10(
4169
4213
  "span",
4170
4214
  {
4171
4215
  className: "lb-mix-match__progress-count",
@@ -4174,7 +4218,7 @@ function MultiStepBundle(props) {
4174
4218
  children: `${completedSteps} of ${steps.length} steps completed`
4175
4219
  }
4176
4220
  ),
4177
- /* @__PURE__ */ jsx9(
4221
+ /* @__PURE__ */ jsx10(
4178
4222
  "span",
4179
4223
  {
4180
4224
  className: "lb-mix-match__progress-remaining",
@@ -4185,8 +4229,8 @@ function MultiStepBundle(props) {
4185
4229
  )
4186
4230
  ] })
4187
4231
  ] }),
4188
- /* @__PURE__ */ jsx9("div", { className: "lb-multi-step__groups", "data-step-groups": true, children: steps.map((step, i) => /* @__PURE__ */ jsxs9(Fragment, { children: [
4189
- i === firstUnsatisfied && /* @__PURE__ */ jsxs9(
4232
+ /* @__PURE__ */ jsx10("div", { className: "lb-multi-step__groups", "data-step-groups": true, children: steps.map((step, i) => /* @__PURE__ */ jsxs10(Fragment, { children: [
4233
+ i === firstUnsatisfied && /* @__PURE__ */ jsxs10(
4190
4234
  "button",
4191
4235
  {
4192
4236
  type: "button",
@@ -4195,28 +4239,28 @@ function MultiStepBundle(props) {
4195
4239
  "aria-label": `${anyPicks ? "Continue building" : "Choose your products"}: ${step.name}`,
4196
4240
  onClick: () => setPickerOpenAt(firstUnsatisfied),
4197
4241
  children: [
4198
- /* @__PURE__ */ jsx9(
4242
+ /* @__PURE__ */ jsx10(
4199
4243
  "span",
4200
4244
  {
4201
4245
  className: "lb-mix-match__add-product-icon",
4202
4246
  "aria-hidden": "true",
4203
- children: /* @__PURE__ */ jsx9(PlusIcon2, {})
4247
+ children: /* @__PURE__ */ jsx10(PlusIcon2, {})
4204
4248
  }
4205
4249
  ),
4206
- /* @__PURE__ */ jsxs9("span", { className: "lb-multi-step__door-copy", children: [
4207
- /* @__PURE__ */ jsx9("span", { className: "lb-mix-match__add-product-label", children: anyPicks ? "Continue building" : "Choose your products" }),
4208
- /* @__PURE__ */ jsx9("span", { className: "lb-multi-step__door-sub", children: anyPicks ? `${remainingSteps} ${remainingSteps === 1 ? "step" : "steps"} to go` : `${steps.length} quick ${steps.length === 1 ? "step" : "steps"}` })
4250
+ /* @__PURE__ */ jsxs10("span", { className: "lb-multi-step__door-copy", children: [
4251
+ /* @__PURE__ */ jsx10("span", { className: "lb-mix-match__add-product-label", children: anyPicks ? "Continue building" : "Choose your products" }),
4252
+ /* @__PURE__ */ jsx10("span", { className: "lb-multi-step__door-sub", children: anyPicks ? `${remainingSteps} ${remainingSteps === 1 ? "step" : "steps"} to go` : `${steps.length} quick ${steps.length === 1 ? "step" : "steps"}` })
4209
4253
  ] })
4210
4254
  ]
4211
4255
  }
4212
4256
  ),
4213
- (selections[i] ?? []).length === 0 ? /* @__PURE__ */ jsx9(
4257
+ (selections[i] ?? []).length === 0 ? /* @__PURE__ */ jsx10(
4214
4258
  "section",
4215
4259
  {
4216
4260
  className: "lb-multi-step__group",
4217
4261
  "data-step-group": i,
4218
4262
  "data-step-mode": "row",
4219
- children: /* @__PURE__ */ jsxs9(
4263
+ children: /* @__PURE__ */ jsxs10(
4220
4264
  "button",
4221
4265
  {
4222
4266
  type: "button",
@@ -4225,7 +4269,7 @@ function MultiStepBundle(props) {
4225
4269
  "aria-label": `${step.minQuantity === 1 && step.maxQuantity === 1 ? "Choose a product" : "Choose products"}: ${step.name}`,
4226
4270
  onClick: () => setPickerOpenAt(i),
4227
4271
  children: [
4228
- /* @__PURE__ */ jsx9(
4272
+ /* @__PURE__ */ jsx10(
4229
4273
  "span",
4230
4274
  {
4231
4275
  className: "lb-multi-step__step-ix",
@@ -4233,8 +4277,8 @@ function MultiStepBundle(props) {
4233
4277
  children: i + 1
4234
4278
  }
4235
4279
  ),
4236
- /* @__PURE__ */ jsx9("span", { className: "lb-multi-step__group-name", children: step.name }),
4237
- /* @__PURE__ */ jsx9(
4280
+ /* @__PURE__ */ jsx10("span", { className: "lb-multi-step__group-name", children: step.name }),
4281
+ /* @__PURE__ */ jsx10(
4238
4282
  "span",
4239
4283
  {
4240
4284
  className: `lb-multi-step__group-count${stepSatisfied(i) ? " lb-multi-step__group-count--met" : ""}`,
@@ -4246,16 +4290,16 @@ function MultiStepBundle(props) {
4246
4290
  }
4247
4291
  )
4248
4292
  }
4249
- ) : /* @__PURE__ */ jsxs9(
4293
+ ) : /* @__PURE__ */ jsxs10(
4250
4294
  "section",
4251
4295
  {
4252
4296
  className: "lb-multi-step__group",
4253
4297
  "data-step-group": i,
4254
4298
  "data-step-mode": "open",
4255
4299
  children: [
4256
- /* @__PURE__ */ jsxs9("div", { className: "lb-multi-step__group-heading", children: [
4257
- /* @__PURE__ */ jsx9("span", { className: "lb-multi-step__group-name", children: step.name }),
4258
- /* @__PURE__ */ jsx9(
4300
+ /* @__PURE__ */ jsxs10("div", { className: "lb-multi-step__group-heading", children: [
4301
+ /* @__PURE__ */ jsx10("span", { className: "lb-multi-step__group-name", children: step.name }),
4302
+ /* @__PURE__ */ jsx10(
4259
4303
  "span",
4260
4304
  {
4261
4305
  className: `lb-multi-step__group-count${stepSatisfied(i) ? " lb-multi-step__group-count--met" : ""}`,
@@ -4264,7 +4308,7 @@ function MultiStepBundle(props) {
4264
4308
  }
4265
4309
  )
4266
4310
  ] }),
4267
- /* @__PURE__ */ jsx9(
4311
+ /* @__PURE__ */ jsx10(
4268
4312
  "div",
4269
4313
  {
4270
4314
  className: "lb-mix-match__slots lb-edge-fade lb-multi-step__group-slots",
@@ -4274,22 +4318,28 @@ function MultiStepBundle(props) {
4274
4318
  title button provides the keyboard/AT path (its
4275
4319
  activation bubbles here); × stops propagation. */
4276
4320
  // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions -- keyboard path is the inner "Edit selection" title button whose activation bubbles to this handler
4277
- /* @__PURE__ */ jsxs9(
4321
+ /* @__PURE__ */ jsxs10(
4278
4322
  "div",
4279
4323
  {
4280
4324
  className: "lb-mix-match__slot lb-mix-match__slot--filled",
4281
4325
  onClick: () => setPickerOpenAt(i),
4282
4326
  children: [
4283
- item.featuredImage && /* @__PURE__ */ jsx9("div", { className: "lb-bundle-thumbnail", children: /* @__PURE__ */ jsx9(
4284
- "img",
4327
+ /* @__PURE__ */ jsx10(
4328
+ "div",
4285
4329
  {
4286
- src: item.featuredImage,
4287
- alt: item.title,
4288
- loading: "lazy"
4330
+ className: item.featuredImage ? "lb-bundle-thumbnail" : placeholderBoxClass("lb-bundle-thumbnail"),
4331
+ children: item.featuredImage ? /* @__PURE__ */ jsx10(
4332
+ "img",
4333
+ {
4334
+ src: item.featuredImage,
4335
+ alt: item.title,
4336
+ loading: "lazy"
4337
+ }
4338
+ ) : /* @__PURE__ */ jsx10(PlaceholderMark, {})
4289
4339
  }
4290
- ) }),
4291
- /* @__PURE__ */ jsxs9("div", { className: "lb-mix-match__filled-info", children: [
4292
- /* @__PURE__ */ jsx9(
4340
+ ),
4341
+ /* @__PURE__ */ jsxs10("div", { className: "lb-mix-match__filled-info", children: [
4342
+ /* @__PURE__ */ jsx10(
4293
4343
  "button",
4294
4344
  {
4295
4345
  type: "button",
@@ -4298,15 +4348,15 @@ function MultiStepBundle(props) {
4298
4348
  children: item.title
4299
4349
  }
4300
4350
  ),
4301
- item.variantTitle && item.variantTitle !== "Default Title" && /* @__PURE__ */ jsx9("span", { className: "lb-mix-match__filled-variant", children: item.variantTitle }),
4302
- /* @__PURE__ */ jsxs9("span", { className: "lb-mix-match__filled-price", children: [
4303
- item.compareAtPrice !== null && item.compareAtPrice > item.price && /* @__PURE__ */ jsx9("s", { className: "lb-mix-match__filled-compare", children: formatMoney7(item.compareAtPrice, currency) }),
4304
- /* @__PURE__ */ jsx9("span", { className: "lb-bundle-product-price", children: formatMoney7(item.price, currency) }),
4305
- /* @__PURE__ */ jsx9("span", { className: "lb-bundle-qty-inline", children: `\xD7${item.quantity}` })
4351
+ item.variantTitle && item.variantTitle !== "Default Title" && /* @__PURE__ */ jsx10("span", { className: "lb-mix-match__filled-variant", children: item.variantTitle }),
4352
+ /* @__PURE__ */ jsxs10("span", { className: "lb-mix-match__filled-price", children: [
4353
+ item.compareAtPrice !== null && item.compareAtPrice > item.price && /* @__PURE__ */ jsx10("s", { className: "lb-mix-match__filled-compare", children: formatMoney7(item.compareAtPrice, currency) }),
4354
+ /* @__PURE__ */ jsx10("span", { className: "lb-bundle-product-price", children: formatMoney7(item.price, currency) }),
4355
+ /* @__PURE__ */ jsx10("span", { className: "lb-bundle-qty-inline", children: `\xD7${item.quantity}` })
4306
4356
  ] }),
4307
- item.unitPrice && /* @__PURE__ */ jsx9("span", { className: "lb-bundle-product-unit-price", children: item.unitPrice })
4357
+ item.unitPrice && /* @__PURE__ */ jsx10("span", { className: "lb-bundle-product-unit-price", children: item.unitPrice })
4308
4358
  ] }),
4309
- canRemoveItem2(bundle, selections, item) ? /* @__PURE__ */ jsx9(
4359
+ canRemoveItem2(bundle, selections, item) ? /* @__PURE__ */ jsx10(
4310
4360
  "button",
4311
4361
  {
4312
4362
  type: "button",
@@ -4316,13 +4366,13 @@ function MultiStepBundle(props) {
4316
4366
  e.stopPropagation();
4317
4367
  removeSlot(i, index);
4318
4368
  },
4319
- children: /* @__PURE__ */ jsx9(CloseIcon4, {})
4369
+ children: /* @__PURE__ */ jsx10(CloseIcon4, {})
4320
4370
  }
4321
4371
  ) : (
4322
4372
  /* Required pick at its floor — quiet state chip instead
4323
4373
  of the ×; removal returns once another slot covers
4324
4374
  the product's minimum (variant swap flow). */
4325
- /* @__PURE__ */ jsx9("span", { className: "lb-mix-match__slot-required", children: "Required" })
4375
+ /* @__PURE__ */ jsx10("span", { className: "lb-mix-match__slot-required", children: "Required" })
4326
4376
  )
4327
4377
  ]
4328
4378
  },
@@ -4335,29 +4385,29 @@ function MultiStepBundle(props) {
4335
4385
  }
4336
4386
  )
4337
4387
  ] }, i)) }),
4338
- /* @__PURE__ */ jsx9("div", { className: "lb-bundle-divider" }),
4339
- allSatisfied && /* @__PURE__ */ jsxs9("div", { className: "lb-bundle-summary", "data-pricing-section": true, children: [
4340
- /* @__PURE__ */ jsxs9("div", { className: "lb-bundle-summary__text", children: [
4341
- /* @__PURE__ */ jsx9("span", { className: "lb-bundle-summary__label", children: "Bundle total" }),
4342
- bundle.widgetConfig.savingsBar.visible && summary.savings > 0 && /* @__PURE__ */ jsxs9("p", { className: "lb-bundle-savings-line", "data-savings-bar": true, children: [
4388
+ /* @__PURE__ */ jsx10("div", { className: "lb-bundle-divider" }),
4389
+ allSatisfied && /* @__PURE__ */ jsxs10("div", { className: "lb-bundle-summary", "data-pricing-section": true, children: [
4390
+ /* @__PURE__ */ jsxs10("div", { className: "lb-bundle-summary__text", children: [
4391
+ /* @__PURE__ */ jsx10("span", { className: "lb-bundle-summary__label", children: "Bundle total" }),
4392
+ bundle.widgetConfig.savingsBar.visible && summary.savings > 0 && /* @__PURE__ */ jsxs10("p", { className: "lb-bundle-savings-line", "data-savings-bar": true, children: [
4343
4393
  "You save",
4344
4394
  " ",
4345
- /* @__PURE__ */ jsx9("span", { "data-savings-amount": true, children: formatMoney7(summary.savings, currency) }),
4395
+ /* @__PURE__ */ jsx10("span", { "data-savings-amount": true, children: formatMoney7(summary.savings, currency) }),
4346
4396
  " ",
4347
- /* @__PURE__ */ jsxs9("span", { "data-savings-percent": true, children: [
4397
+ /* @__PURE__ */ jsxs10("span", { "data-savings-percent": true, children: [
4348
4398
  "(",
4349
4399
  summary.savingsPercent,
4350
4400
  "%)"
4351
4401
  ] })
4352
4402
  ] })
4353
4403
  ] }),
4354
- /* @__PURE__ */ jsxs9("span", { className: "lb-bundle-summary__prices", children: [
4355
- bundle.widgetConfig.pricing.showComparePrice && summary.savings > 0 && /* @__PURE__ */ jsx9("span", { className: "lb-bundle-compare-price", "data-compare-price": true, children: formatMoney7(summary.comparePrice, currency) }),
4356
- /* @__PURE__ */ jsx9("span", { className: "lb-bundle-sale-price", "data-sale-price": true, children: formatMoney7(summary.salePrice, currency) })
4404
+ /* @__PURE__ */ jsxs10("span", { className: "lb-bundle-summary__prices", children: [
4405
+ bundle.widgetConfig.pricing.showComparePrice && summary.savings > 0 && /* @__PURE__ */ jsx10("span", { className: "lb-bundle-compare-price", "data-compare-price": true, children: formatMoney7(summary.comparePrice, currency) }),
4406
+ /* @__PURE__ */ jsx10("span", { className: "lb-bundle-sale-price", "data-sale-price": true, children: formatMoney7(summary.salePrice, currency) })
4357
4407
  ] })
4358
4408
  ] }),
4359
- cartError && /* @__PURE__ */ jsx9("p", { className: "lb-bundle__error", role: "alert", children: cartError }),
4360
- /* @__PURE__ */ jsx9(
4409
+ cartError && /* @__PURE__ */ jsx10("p", { className: "lb-bundle__error", role: "alert", children: cartError }),
4410
+ /* @__PURE__ */ jsx10(
4361
4411
  "button",
4362
4412
  {
4363
4413
  className: "lb-bundle__cta",
@@ -4367,7 +4417,7 @@ function MultiStepBundle(props) {
4367
4417
  children: ctaLabel
4368
4418
  }
4369
4419
  ),
4370
- pickerOpenAt !== null && /* @__PURE__ */ jsx9(
4420
+ pickerOpenAt !== null && /* @__PURE__ */ jsx10(
4371
4421
  MultiStepPicker,
4372
4422
  {
4373
4423
  bundle,
@@ -4402,7 +4452,7 @@ function stepHasInStockProduct(bundle, stepIndex) {
4402
4452
  });
4403
4453
  }
4404
4454
  function PlusIcon2() {
4405
- return /* @__PURE__ */ jsxs9(
4455
+ return /* @__PURE__ */ jsxs10(
4406
4456
  "svg",
4407
4457
  {
4408
4458
  width: "18",
@@ -4412,14 +4462,14 @@ function PlusIcon2() {
4412
4462
  xmlns: "http://www.w3.org/2000/svg",
4413
4463
  "aria-hidden": "true",
4414
4464
  children: [
4415
- /* @__PURE__ */ jsx9("line", { x1: "9", y1: "3", x2: "9", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
4416
- /* @__PURE__ */ jsx9("line", { x1: "3", y1: "9", x2: "15", y2: "9", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })
4465
+ /* @__PURE__ */ jsx10("line", { x1: "9", y1: "3", x2: "9", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
4466
+ /* @__PURE__ */ jsx10("line", { x1: "3", y1: "9", x2: "15", y2: "9", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })
4417
4467
  ]
4418
4468
  }
4419
4469
  );
4420
4470
  }
4421
4471
  function CloseIcon4() {
4422
- return /* @__PURE__ */ jsxs9(
4472
+ return /* @__PURE__ */ jsxs10(
4423
4473
  "svg",
4424
4474
  {
4425
4475
  width: "16",
@@ -4429,8 +4479,8 @@ function CloseIcon4() {
4429
4479
  xmlns: "http://www.w3.org/2000/svg",
4430
4480
  "aria-hidden": "true",
4431
4481
  children: [
4432
- /* @__PURE__ */ jsx9("line", { x1: "5", y1: "5", x2: "15", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
4433
- /* @__PURE__ */ jsx9("line", { x1: "15", y1: "5", x2: "5", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })
4482
+ /* @__PURE__ */ jsx10("line", { x1: "5", y1: "5", x2: "15", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
4483
+ /* @__PURE__ */ jsx10("line", { x1: "15", y1: "5", x2: "5", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })
4434
4484
  ]
4435
4485
  }
4436
4486
  );
@@ -4511,6 +4561,7 @@ import {
4511
4561
  formatCents,
4512
4562
  percentageDiscountUnit,
4513
4563
  computeFixedPricing,
4564
+ bundleSaleCents,
4514
4565
  computeBundleSaleCents,
4515
4566
  calculateTierSavings as calculateTierSavings2,
4516
4567
  getActiveTier as getActiveTier2,
@@ -4550,6 +4601,7 @@ export {
4550
4601
  VolumeBundle,
4551
4602
  WIDGET_CONFIG_DEFAULTS,
4552
4603
  applyWidgetConfigVars2 as applyWidgetConfigVars,
4604
+ bundleSaleCents,
4553
4605
  calculateDiscount4 as calculateDiscount,
4554
4606
  calculateTierSavings2 as calculateTierSavings,
4555
4607
  computeBundleSaleCents,