@lime-bundles/react 7.5.0 → 7.5.1
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.cjs +426 -374
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +426 -374
- package/dist/index.js.map +1 -1
- package/dist/styles.css +28 -0
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -34,6 +34,7 @@ __export(index_exports, {
|
|
|
34
34
|
VolumeBundle: () => VolumeBundle,
|
|
35
35
|
WIDGET_CONFIG_DEFAULTS: () => import_core17.WIDGET_CONFIG_DEFAULTS,
|
|
36
36
|
applyWidgetConfigVars: () => import_core17.applyWidgetConfigVars,
|
|
37
|
+
bundleSaleCents: () => import_core17.bundleSaleCents,
|
|
37
38
|
calculateDiscount: () => import_core17.calculateDiscount,
|
|
38
39
|
calculateTierSavings: () => import_core17.calculateTierSavings,
|
|
39
40
|
computeBundleSaleCents: () => import_core17.computeBundleSaleCents,
|
|
@@ -750,8 +751,34 @@ function BundleCountdown({
|
|
|
750
751
|
] });
|
|
751
752
|
}
|
|
752
753
|
|
|
753
|
-
// src/components/
|
|
754
|
+
// src/components/ThumbnailPlaceholder.tsx
|
|
754
755
|
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
756
|
+
function PlaceholderMark() {
|
|
757
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
758
|
+
"svg",
|
|
759
|
+
{
|
|
760
|
+
className: "lb-bundle-placeholder-icon",
|
|
761
|
+
viewBox: "0 0 48 48",
|
|
762
|
+
"data-lb-placeholder": "",
|
|
763
|
+
"aria-hidden": "true",
|
|
764
|
+
focusable: "false",
|
|
765
|
+
children: [
|
|
766
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("rect", { x: "15", y: "15", width: "18", height: "18", rx: "2" }),
|
|
767
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("circle", { cx: "20.5", cy: "20.5", r: "1.5" }),
|
|
768
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M33 27l-5-5L17 33" })
|
|
769
|
+
]
|
|
770
|
+
}
|
|
771
|
+
);
|
|
772
|
+
}
|
|
773
|
+
function placeholderBoxClass(boxClass) {
|
|
774
|
+
return `${boxClass} lb-thumb--placeholder`;
|
|
775
|
+
}
|
|
776
|
+
function ThumbnailPlaceholder({ className }) {
|
|
777
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: placeholderBoxClass(className), children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(PlaceholderMark, {}) });
|
|
778
|
+
}
|
|
779
|
+
|
|
780
|
+
// src/components/FixedBundle.tsx
|
|
781
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
755
782
|
function FixedBundle(props) {
|
|
756
783
|
const {
|
|
757
784
|
shopDomain,
|
|
@@ -878,9 +905,9 @@ function FixedBundle(props) {
|
|
|
878
905
|
}
|
|
879
906
|
}, [bundle, onAddToCart, onError, trackAddToCart, selectedVariants]);
|
|
880
907
|
if (result.status === "loading") {
|
|
881
|
-
return /* @__PURE__ */ (0,
|
|
882
|
-
/* @__PURE__ */ (0,
|
|
883
|
-
/* @__PURE__ */ (0,
|
|
908
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: `lb-bundle lb-bundle--loading ${className ?? ""}`, children: [
|
|
909
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "lb-skeleton lb-skeleton--title" }),
|
|
910
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "lb-skeleton lb-skeleton--products" })
|
|
884
911
|
] });
|
|
885
912
|
}
|
|
886
913
|
if (result.status === "error") return null;
|
|
@@ -907,7 +934,7 @@ function FixedBundle(props) {
|
|
|
907
934
|
const savingsPercent = comparePrice > 0 && savings > 0 ? Math.round(savings / comparePrice * 100) : 0;
|
|
908
935
|
const showCompare = bundle.widgetConfig.pricing.showComparePrice && savings > 0;
|
|
909
936
|
const showSavings = bundle.widgetConfig.savingsBar.visible && savings > 0;
|
|
910
|
-
return /* @__PURE__ */ (0,
|
|
937
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
911
938
|
"div",
|
|
912
939
|
{
|
|
913
940
|
ref: (el) => {
|
|
@@ -918,18 +945,18 @@ function FixedBundle(props) {
|
|
|
918
945
|
role: "region",
|
|
919
946
|
"aria-label": bundle.title,
|
|
920
947
|
children: [
|
|
921
|
-
/* @__PURE__ */ (0,
|
|
922
|
-
/* @__PURE__ */ (0,
|
|
923
|
-
bundle.description && /* @__PURE__ */ (0,
|
|
948
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "lb-bundle-header", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "lb-bundle-header__content", children: [
|
|
949
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h3", { className: "lb-bundle-title", children: bundle.title }),
|
|
950
|
+
bundle.description && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("p", { className: "lb-bundle-subtitle", children: bundle.description })
|
|
924
951
|
] }) }),
|
|
925
|
-
/* @__PURE__ */ (0,
|
|
952
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
926
953
|
BundleCountdown,
|
|
927
954
|
{
|
|
928
955
|
endsAt: bundle.endsAt,
|
|
929
956
|
widgetConfig: bundle.widgetConfig
|
|
930
957
|
}
|
|
931
958
|
),
|
|
932
|
-
/* @__PURE__ */ (0,
|
|
959
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "lb-bundle__products lb-edge-fade", ref: productsEdgeFadeRef, children: bundle.products.map((product) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
933
960
|
FixedProductRow,
|
|
934
961
|
{
|
|
935
962
|
bundle,
|
|
@@ -940,29 +967,29 @@ function FixedBundle(props) {
|
|
|
940
967
|
},
|
|
941
968
|
product.id
|
|
942
969
|
)) }),
|
|
943
|
-
/* @__PURE__ */ (0,
|
|
944
|
-
/* @__PURE__ */ (0,
|
|
945
|
-
/* @__PURE__ */ (0,
|
|
946
|
-
/* @__PURE__ */ (0,
|
|
947
|
-
showSavings && /* @__PURE__ */ (0,
|
|
970
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "lb-bundle-divider" }),
|
|
971
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "lb-bundle-summary", children: [
|
|
972
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "lb-bundle-summary__text", children: [
|
|
973
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "lb-bundle-summary__label", children: "Bundle total" }),
|
|
974
|
+
showSavings && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("p", { className: "lb-bundle-savings-line", "data-savings-bar": true, children: [
|
|
948
975
|
"You save",
|
|
949
976
|
" ",
|
|
950
|
-
/* @__PURE__ */ (0,
|
|
977
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { "data-savings-amount": true, children: (0, import_core8.formatMoney)(savings, currency) }),
|
|
951
978
|
" ",
|
|
952
|
-
/* @__PURE__ */ (0,
|
|
979
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { "data-savings-percent": true, children: [
|
|
953
980
|
"(",
|
|
954
981
|
savingsPercent,
|
|
955
982
|
"%)"
|
|
956
983
|
] })
|
|
957
984
|
] })
|
|
958
985
|
] }),
|
|
959
|
-
/* @__PURE__ */ (0,
|
|
960
|
-
showCompare && /* @__PURE__ */ (0,
|
|
961
|
-
/* @__PURE__ */ (0,
|
|
986
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { className: "lb-bundle-summary__prices", children: [
|
|
987
|
+
showCompare && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "lb-bundle-compare-price", "data-compare-price": true, children: (0, import_core8.formatMoney)(comparePrice, currency) }),
|
|
988
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "lb-bundle-sale-price", "data-sale-price": true, children: (0, import_core8.formatMoney)(salePrice, currency) })
|
|
962
989
|
] })
|
|
963
990
|
] }),
|
|
964
|
-
cartError && /* @__PURE__ */ (0,
|
|
965
|
-
/* @__PURE__ */ (0,
|
|
991
|
+
cartError && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("p", { className: "lb-bundle__error", role: "alert", children: cartError }),
|
|
992
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
966
993
|
"button",
|
|
967
994
|
{
|
|
968
995
|
className: "lb-bundle__cta",
|
|
@@ -1012,15 +1039,15 @@ function FixedProductRow({ bundle, product, currency, isOos, onVariantChange })
|
|
|
1012
1039
|
bundle.widgetConfig.lowStockThreshold,
|
|
1013
1040
|
bundle.widgetConfig.showLowStockBadge
|
|
1014
1041
|
);
|
|
1015
|
-
return /* @__PURE__ */ (0,
|
|
1042
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
1016
1043
|
"div",
|
|
1017
1044
|
{
|
|
1018
1045
|
className: isOos ? "lb-bundle-product-row lb-bundle-product-row--oos" : "lb-bundle-product-row",
|
|
1019
1046
|
"aria-disabled": isOos || void 0,
|
|
1020
1047
|
part: "product",
|
|
1021
1048
|
children: [
|
|
1022
|
-
isOos && /* @__PURE__ */ (0,
|
|
1023
|
-
thumbImage
|
|
1049
|
+
isOos && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "lb-bundle-product-row__oos", children: "Out of stock" }),
|
|
1050
|
+
thumbImage ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1024
1051
|
"img",
|
|
1025
1052
|
{
|
|
1026
1053
|
src: thumbImage.url,
|
|
@@ -1030,12 +1057,12 @@ function FixedProductRow({ bundle, product, currency, isOos, onVariantChange })
|
|
|
1030
1057
|
width: thumbImage.width ?? void 0,
|
|
1031
1058
|
height: thumbImage.height ?? void 0
|
|
1032
1059
|
}
|
|
1033
|
-
),
|
|
1034
|
-
/* @__PURE__ */ (0,
|
|
1035
|
-
/* @__PURE__ */ (0,
|
|
1036
|
-
!showPicker && displayVariant && variants.length > 1 && /* @__PURE__ */ (0,
|
|
1037
|
-
/* @__PURE__ */ (0,
|
|
1038
|
-
compareAt && /* @__PURE__ */ (0,
|
|
1060
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(ThumbnailPlaceholder, { className: "lb-bundle__product-image" }),
|
|
1061
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "lb-bundle__product-info", children: [
|
|
1062
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("p", { className: "lb-bundle__product-title", children: product.title }),
|
|
1063
|
+
!showPicker && displayVariant && variants.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "lb-bundle-variant-badge", children: displayVariant.title }),
|
|
1064
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { className: "lb-bundle-product-prices", children: [
|
|
1065
|
+
compareAt && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1039
1066
|
"span",
|
|
1040
1067
|
{
|
|
1041
1068
|
className: "lb-bundle-product-compare-price",
|
|
@@ -1043,9 +1070,9 @@ function FixedProductRow({ bundle, product, currency, isOos, onVariantChange })
|
|
|
1043
1070
|
children: compareAt
|
|
1044
1071
|
}
|
|
1045
1072
|
),
|
|
1046
|
-
/* @__PURE__ */ (0,
|
|
1073
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "lb-bundle__product-price", "data-product-price": true, children: priceText })
|
|
1047
1074
|
] }),
|
|
1048
|
-
unitPriceText && /* @__PURE__ */ (0,
|
|
1075
|
+
unitPriceText && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1049
1076
|
"span",
|
|
1050
1077
|
{
|
|
1051
1078
|
className: "lb-bundle__product-unit-price",
|
|
@@ -1053,18 +1080,18 @@ function FixedProductRow({ bundle, product, currency, isOos, onVariantChange })
|
|
|
1053
1080
|
children: unitPriceText
|
|
1054
1081
|
}
|
|
1055
1082
|
),
|
|
1056
|
-
showLowStock && /* @__PURE__ */ (0,
|
|
1083
|
+
showLowStock && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { className: "lb-bundle-low-stock-badge", children: [
|
|
1057
1084
|
"Only ",
|
|
1058
1085
|
displayVariant.quantityAvailable,
|
|
1059
1086
|
" left"
|
|
1060
1087
|
] }),
|
|
1061
|
-
showPicker && /* @__PURE__ */ (0,
|
|
1088
|
+
showPicker && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "lb-bundle__product-variant-pickers", children: optionNames.map((optionName, optionIndex) => {
|
|
1062
1089
|
const dropdownOptions = optionsFor(optionIndex).map((o) => ({
|
|
1063
1090
|
value: o.value,
|
|
1064
1091
|
label: o.value,
|
|
1065
1092
|
disabled: o.disabled
|
|
1066
1093
|
}));
|
|
1067
|
-
return /* @__PURE__ */ (0,
|
|
1094
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1068
1095
|
VariantDropdown,
|
|
1069
1096
|
{
|
|
1070
1097
|
options: dropdownOptions,
|
|
@@ -1076,7 +1103,7 @@ function FixedProductRow({ bundle, product, currency, isOos, onVariantChange })
|
|
|
1076
1103
|
);
|
|
1077
1104
|
}) })
|
|
1078
1105
|
] }),
|
|
1079
|
-
displayVariant && /* @__PURE__ */ (0,
|
|
1106
|
+
displayVariant && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { className: "lb-bundle-qty-chip", "data-qty-inline": true, children: [
|
|
1080
1107
|
"\xD7",
|
|
1081
1108
|
displayQty
|
|
1082
1109
|
] })
|
|
@@ -1202,7 +1229,7 @@ function useFocusTrap({
|
|
|
1202
1229
|
}
|
|
1203
1230
|
|
|
1204
1231
|
// src/components/MixMatchPicker.tsx
|
|
1205
|
-
var
|
|
1232
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
1206
1233
|
function ruleFor(bundle, productId, variantId) {
|
|
1207
1234
|
if (variantId) {
|
|
1208
1235
|
const vRule = bundle.variantRules[variantId];
|
|
@@ -1336,7 +1363,7 @@ function MixMatchPicker({
|
|
|
1336
1363
|
// inside carries the interactive role + focus trap. So the static-element
|
|
1337
1364
|
// interaction lint does not apply to this backdrop.
|
|
1338
1365
|
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
1339
|
-
/* @__PURE__ */ (0,
|
|
1366
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1340
1367
|
"div",
|
|
1341
1368
|
{
|
|
1342
1369
|
ref: (el) => {
|
|
@@ -1348,7 +1375,7 @@ function MixMatchPicker({
|
|
|
1348
1375
|
"data-bundle-gid": bundle.id,
|
|
1349
1376
|
onMouseDown: onOverlayMouseDown,
|
|
1350
1377
|
onMouseUp: onOverlayMouseUp,
|
|
1351
|
-
children: /* @__PURE__ */ (0,
|
|
1378
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
1352
1379
|
"div",
|
|
1353
1380
|
{
|
|
1354
1381
|
ref: dialogRef,
|
|
@@ -1358,13 +1385,13 @@ function MixMatchPicker({
|
|
|
1358
1385
|
"aria-labelledby": titleId,
|
|
1359
1386
|
tabIndex: -1,
|
|
1360
1387
|
children: [
|
|
1361
|
-
/* @__PURE__ */ (0,
|
|
1362
|
-
/* @__PURE__ */ (0,
|
|
1363
|
-
/* @__PURE__ */ (0,
|
|
1364
|
-
/* @__PURE__ */ (0,
|
|
1365
|
-
/* @__PURE__ */ (0,
|
|
1388
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "lb-mix-match__modal-header", children: [
|
|
1389
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "lb-mix-match__modal-header-top", children: [
|
|
1390
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "lb-mix-match__modal-heading", children: [
|
|
1391
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("h4", { className: "lb-mix-match__modal-title", id: titleId, children: "Add to your bundle" }),
|
|
1392
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "lb-mix-match__modal-subtitle", "data-modal-subtitle": true, children: subtitle })
|
|
1366
1393
|
] }),
|
|
1367
|
-
/* @__PURE__ */ (0,
|
|
1394
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1368
1395
|
"button",
|
|
1369
1396
|
{
|
|
1370
1397
|
ref: closeBtnRef,
|
|
@@ -1373,16 +1400,16 @@ function MixMatchPicker({
|
|
|
1373
1400
|
"data-modal-close": true,
|
|
1374
1401
|
"aria-label": "Close",
|
|
1375
1402
|
onClick: onClose,
|
|
1376
|
-
children: /* @__PURE__ */ (0,
|
|
1403
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(CloseIcon, {})
|
|
1377
1404
|
}
|
|
1378
1405
|
)
|
|
1379
1406
|
] }),
|
|
1380
|
-
/* @__PURE__ */ (0,
|
|
1407
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1381
1408
|
"div",
|
|
1382
1409
|
{
|
|
1383
1410
|
className: "lb-mix-match__progress lb-mix-match__modal-progress",
|
|
1384
1411
|
"data-progress": true,
|
|
1385
|
-
children: /* @__PURE__ */ (0,
|
|
1412
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1386
1413
|
"div",
|
|
1387
1414
|
{
|
|
1388
1415
|
className: "lb-mix-match__progress-segments",
|
|
@@ -1390,7 +1417,7 @@ function MixMatchPicker({
|
|
|
1390
1417
|
"aria-valuenow": shownUnits,
|
|
1391
1418
|
"aria-valuemin": 0,
|
|
1392
1419
|
"aria-valuemax": requiredQty,
|
|
1393
|
-
children: Array.from({ length: requiredQty }).map((_, i) => /* @__PURE__ */ (0,
|
|
1420
|
+
children: Array.from({ length: requiredQty }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1394
1421
|
"span",
|
|
1395
1422
|
{
|
|
1396
1423
|
className: `lb-mix-match__progress-segment${i < shownUnits ? " lb-mix-match__progress-segment--filled" : ""}`,
|
|
@@ -1403,8 +1430,8 @@ function MixMatchPicker({
|
|
|
1403
1430
|
}
|
|
1404
1431
|
)
|
|
1405
1432
|
] }),
|
|
1406
|
-
wc.showSearch && /* @__PURE__ */ (0,
|
|
1407
|
-
/* @__PURE__ */ (0,
|
|
1433
|
+
wc.showSearch && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "lb-mix-match__modal-search", children: [
|
|
1434
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1408
1435
|
"input",
|
|
1409
1436
|
{
|
|
1410
1437
|
type: "text",
|
|
@@ -1418,7 +1445,7 @@ function MixMatchPicker({
|
|
|
1418
1445
|
onChange: (e) => setQuery(e.target.value)
|
|
1419
1446
|
}
|
|
1420
1447
|
),
|
|
1421
|
-
query.length > 0 && /* @__PURE__ */ (0,
|
|
1448
|
+
query.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1422
1449
|
"button",
|
|
1423
1450
|
{
|
|
1424
1451
|
type: "button",
|
|
@@ -1426,11 +1453,11 @@ function MixMatchPicker({
|
|
|
1426
1453
|
"data-modal-search-clear": true,
|
|
1427
1454
|
"aria-label": "Clear search",
|
|
1428
1455
|
onClick: () => setQuery(""),
|
|
1429
|
-
children: /* @__PURE__ */ (0,
|
|
1456
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(SearchClearIcon, {})
|
|
1430
1457
|
}
|
|
1431
1458
|
)
|
|
1432
1459
|
] }),
|
|
1433
|
-
showFilters && /* @__PURE__ */ (0,
|
|
1460
|
+
showFilters && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1434
1461
|
"div",
|
|
1435
1462
|
{
|
|
1436
1463
|
className: "lb-mix-match__filters",
|
|
@@ -1439,7 +1466,7 @@ function MixMatchPicker({
|
|
|
1439
1466
|
"aria-label": "Filter by product type",
|
|
1440
1467
|
children: [FILTERS_ALL, ...productTypes].map((value) => {
|
|
1441
1468
|
const isActive = value === activeType;
|
|
1442
|
-
return /* @__PURE__ */ (0,
|
|
1469
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1443
1470
|
"button",
|
|
1444
1471
|
{
|
|
1445
1472
|
type: "button",
|
|
@@ -1454,7 +1481,7 @@ function MixMatchPicker({
|
|
|
1454
1481
|
})
|
|
1455
1482
|
}
|
|
1456
1483
|
),
|
|
1457
|
-
/* @__PURE__ */ (0,
|
|
1484
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "lb-mix-match__modal-list", "data-modal-list": true, children: filtered.map((ep) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1458
1485
|
MixMatchPickerRow,
|
|
1459
1486
|
{
|
|
1460
1487
|
bundle,
|
|
@@ -1473,10 +1500,10 @@ function MixMatchPicker({
|
|
|
1473
1500
|
},
|
|
1474
1501
|
ep.product.id
|
|
1475
1502
|
)) }),
|
|
1476
|
-
showEmpty && /* @__PURE__ */ (0,
|
|
1477
|
-
/* @__PURE__ */ (0,
|
|
1478
|
-
/* @__PURE__ */ (0,
|
|
1479
|
-
/* @__PURE__ */ (0,
|
|
1503
|
+
showEmpty && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "lb-mix-match__modal-empty", "data-modal-empty": true, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { children: "No products match your search" }) }),
|
|
1504
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { "data-modal-live": true, "aria-live": "polite", className: "lb-visually-hidden", children: `${filtered.length} products shown` }),
|
|
1505
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "lb-mix-match__modal-footer", children: [
|
|
1506
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1480
1507
|
"span",
|
|
1481
1508
|
{
|
|
1482
1509
|
className: "lb-mix-match__modal-footer-count",
|
|
@@ -1485,7 +1512,7 @@ function MixMatchPicker({
|
|
|
1485
1512
|
children: `${shownUnits} of ${requiredQty} added`
|
|
1486
1513
|
}
|
|
1487
1514
|
),
|
|
1488
|
-
/* @__PURE__ */ (0,
|
|
1515
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1489
1516
|
"button",
|
|
1490
1517
|
{
|
|
1491
1518
|
type: "button",
|
|
@@ -1619,7 +1646,7 @@ function MixMatchPickerRow({
|
|
|
1619
1646
|
}
|
|
1620
1647
|
const priceCents = parseFloat(currentVariant.price.amount);
|
|
1621
1648
|
const compareCents = currentVariant.compareAtPrice ? parseFloat(currentVariant.compareAtPrice.amount) : null;
|
|
1622
|
-
return /* @__PURE__ */ (0,
|
|
1649
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
1623
1650
|
"div",
|
|
1624
1651
|
{
|
|
1625
1652
|
className: `lb-mix-match__modal-product${isOos ? " lb-mix-match__modal-product--sold-out" : ""}${variantInBundle ? " lb-mix-match__modal-product--in-bundle" : ""}`,
|
|
@@ -1628,21 +1655,27 @@ function MixMatchPickerRow({
|
|
|
1628
1655
|
"data-type": product.productType ?? "",
|
|
1629
1656
|
"aria-disabled": isOos || void 0,
|
|
1630
1657
|
children: [
|
|
1631
|
-
/* @__PURE__ */ (0,
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1658
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
1659
|
+
"div",
|
|
1660
|
+
{
|
|
1661
|
+
className: thumbImage ? "lb-mix-match__modal-product-thumb" : placeholderBoxClass("lb-mix-match__modal-product-thumb"),
|
|
1662
|
+
children: [
|
|
1663
|
+
thumbImage ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1664
|
+
"img",
|
|
1665
|
+
{
|
|
1666
|
+
src: thumbImage.url,
|
|
1667
|
+
alt: thumbImage.altText ?? product.title,
|
|
1668
|
+
loading: "lazy",
|
|
1669
|
+
width: thumbImage.width ?? void 0,
|
|
1670
|
+
height: thumbImage.height ?? void 0
|
|
1671
|
+
}
|
|
1672
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(PlaceholderMark, {}),
|
|
1673
|
+
variantInBundle && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "lb-mix-match__modal-added-badge", children: "Added" })
|
|
1674
|
+
]
|
|
1675
|
+
}
|
|
1676
|
+
),
|
|
1677
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "lb-mix-match__modal-product-info", children: [
|
|
1678
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "lb-mix-match__modal-product-title", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1646
1679
|
"a",
|
|
1647
1680
|
{
|
|
1648
1681
|
href: `/products/${product.handle}`,
|
|
@@ -1651,24 +1684,24 @@ function MixMatchPickerRow({
|
|
|
1651
1684
|
children: product.title
|
|
1652
1685
|
}
|
|
1653
1686
|
) }),
|
|
1654
|
-
/* @__PURE__ */ (0,
|
|
1655
|
-
/* @__PURE__ */ (0,
|
|
1656
|
-
compareCents !== null && compareCents > priceCents && /* @__PURE__ */ (0,
|
|
1687
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("p", { className: "lb-mix-match__modal-product-price", children: [
|
|
1688
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { "data-row-price-sale": true, children: (0, import_core9.formatMoney)(priceCents, currency) }),
|
|
1689
|
+
compareCents !== null && compareCents > priceCents && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("s", { className: "lb-mix-match__modal-product-compare", "data-row-compare": true, children: (0, import_core9.formatMoney)(compareCents, currency) })
|
|
1657
1690
|
] }),
|
|
1658
|
-
unitPriceText && /* @__PURE__ */ (0,
|
|
1659
|
-
showPicker && /* @__PURE__ */ (0,
|
|
1691
|
+
unitPriceText && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "lb-mix-match__modal-product-unit-price lb-bundle-product-unit-price", children: unitPriceText }),
|
|
1692
|
+
showPicker && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "lb-bundle-variant-option-groups", children: optionNames.map((optionName, optionIndex) => {
|
|
1660
1693
|
const dropdownOptions = optionsFor(optionIndex).map((o) => ({
|
|
1661
1694
|
value: o.value,
|
|
1662
1695
|
label: o.value,
|
|
1663
1696
|
disabled: o.disabled
|
|
1664
1697
|
}));
|
|
1665
|
-
return /* @__PURE__ */ (0,
|
|
1698
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
1666
1699
|
"div",
|
|
1667
1700
|
{
|
|
1668
1701
|
className: "lb-bundle-variant-option-group",
|
|
1669
1702
|
children: [
|
|
1670
|
-
/* @__PURE__ */ (0,
|
|
1671
|
-
/* @__PURE__ */ (0,
|
|
1703
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "lb-bundle-variant-option-label", children: optionName }),
|
|
1704
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1672
1705
|
VariantDropdown,
|
|
1673
1706
|
{
|
|
1674
1707
|
className: "lb-mix-match__variant-select-dropdown",
|
|
@@ -1683,17 +1716,17 @@ function MixMatchPickerRow({
|
|
|
1683
1716
|
optionName
|
|
1684
1717
|
);
|
|
1685
1718
|
}) }),
|
|
1686
|
-
!showPicker && variants.length === 1 && currentVariant.title !== "Default Title" && /* @__PURE__ */ (0,
|
|
1687
|
-
!isOos && needsMoreSpots && remainingUnits > 0 && /* @__PURE__ */ (0,
|
|
1688
|
-
isOos ? /* @__PURE__ */ (0,
|
|
1689
|
-
showStepper && /* @__PURE__ */ (0,
|
|
1719
|
+
!showPicker && variants.length === 1 && currentVariant.title !== "Default Title" && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "lb-mix-match__filled-variant", children: currentVariant.title }),
|
|
1720
|
+
!isOos && needsMoreSpots && remainingUnits > 0 && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "lb-mix-match__modal-needs-spots", children: rule.min === 1 ? "Needs 1 spot" : `Needs ${rule.min} spots` }),
|
|
1721
|
+
isOos ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "lb-mix-match__modal-sold-out-label", children: "Sold out" }) : /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "lb-mix-match__modal-product-actions", children: [
|
|
1722
|
+
showStepper && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "lb-bundle-variant-option-group lb-mix-match__qty-stepper-group", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
1690
1723
|
"div",
|
|
1691
1724
|
{
|
|
1692
1725
|
className: "lb-mix-match__qty-stepper",
|
|
1693
1726
|
role: "group",
|
|
1694
1727
|
"aria-label": "Quantity",
|
|
1695
1728
|
children: [
|
|
1696
|
-
/* @__PURE__ */ (0,
|
|
1729
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1697
1730
|
"button",
|
|
1698
1731
|
{
|
|
1699
1732
|
type: "button",
|
|
@@ -1714,7 +1747,7 @@ function MixMatchPickerRow({
|
|
|
1714
1747
|
children: "\u2212"
|
|
1715
1748
|
}
|
|
1716
1749
|
),
|
|
1717
|
-
/* @__PURE__ */ (0,
|
|
1750
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1718
1751
|
"span",
|
|
1719
1752
|
{
|
|
1720
1753
|
className: "lb-mix-match__qty-stepper-value",
|
|
@@ -1723,7 +1756,7 @@ function MixMatchPickerRow({
|
|
|
1723
1756
|
children: shownQty
|
|
1724
1757
|
}
|
|
1725
1758
|
),
|
|
1726
|
-
/* @__PURE__ */ (0,
|
|
1759
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1727
1760
|
"button",
|
|
1728
1761
|
{
|
|
1729
1762
|
type: "button",
|
|
@@ -1747,7 +1780,7 @@ function MixMatchPickerRow({
|
|
|
1747
1780
|
]
|
|
1748
1781
|
}
|
|
1749
1782
|
) }),
|
|
1750
|
-
/* @__PURE__ */ (0,
|
|
1783
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1751
1784
|
"button",
|
|
1752
1785
|
{
|
|
1753
1786
|
type: "button",
|
|
@@ -1766,7 +1799,7 @@ function MixMatchPickerRow({
|
|
|
1766
1799
|
);
|
|
1767
1800
|
}
|
|
1768
1801
|
function CloseIcon() {
|
|
1769
|
-
return /* @__PURE__ */ (0,
|
|
1802
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
1770
1803
|
"svg",
|
|
1771
1804
|
{
|
|
1772
1805
|
width: "20",
|
|
@@ -1776,14 +1809,14 @@ function CloseIcon() {
|
|
|
1776
1809
|
xmlns: "http://www.w3.org/2000/svg",
|
|
1777
1810
|
"aria-hidden": "true",
|
|
1778
1811
|
children: [
|
|
1779
|
-
/* @__PURE__ */ (0,
|
|
1780
|
-
/* @__PURE__ */ (0,
|
|
1812
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("line", { x1: "5", y1: "5", x2: "15", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
|
|
1813
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("line", { x1: "15", y1: "5", x2: "5", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })
|
|
1781
1814
|
]
|
|
1782
1815
|
}
|
|
1783
1816
|
);
|
|
1784
1817
|
}
|
|
1785
1818
|
function SearchClearIcon() {
|
|
1786
|
-
return /* @__PURE__ */ (0,
|
|
1819
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1787
1820
|
"svg",
|
|
1788
1821
|
{
|
|
1789
1822
|
width: "16",
|
|
@@ -1792,13 +1825,13 @@ function SearchClearIcon() {
|
|
|
1792
1825
|
fill: "currentColor",
|
|
1793
1826
|
xmlns: "http://www.w3.org/2000/svg",
|
|
1794
1827
|
"aria-hidden": "true",
|
|
1795
|
-
children: /* @__PURE__ */ (0,
|
|
1828
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("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" })
|
|
1796
1829
|
}
|
|
1797
1830
|
);
|
|
1798
1831
|
}
|
|
1799
1832
|
|
|
1800
1833
|
// src/components/MixMatchBundle.tsx
|
|
1801
|
-
var
|
|
1834
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
1802
1835
|
function ruleFor2(bundle, productId, variantId) {
|
|
1803
1836
|
if (variantId) {
|
|
1804
1837
|
const vRule = bundle.variantRules[variantId];
|
|
@@ -2095,9 +2128,9 @@ function MixMatchBundle(props) {
|
|
|
2095
2128
|
}
|
|
2096
2129
|
}, [bundle, selections, valid, onAddToCart, onError, trackAddToCart, totalQuantity]);
|
|
2097
2130
|
if (result.status === "loading") {
|
|
2098
|
-
return /* @__PURE__ */ (0,
|
|
2099
|
-
/* @__PURE__ */ (0,
|
|
2100
|
-
/* @__PURE__ */ (0,
|
|
2131
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: `lb-bundle lb-bundle--loading ${className ?? ""}`, children: [
|
|
2132
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "lb-skeleton lb-skeleton--title" }),
|
|
2133
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "lb-skeleton lb-skeleton--products" })
|
|
2101
2134
|
] });
|
|
2102
2135
|
}
|
|
2103
2136
|
if (result.status === "error") return null;
|
|
@@ -2116,7 +2149,7 @@ function MixMatchBundle(props) {
|
|
|
2116
2149
|
if (requiredBlocked) return null;
|
|
2117
2150
|
const currency = bundle.products[0]?.priceRange.minVariantPrice.currencyCode ?? "USD";
|
|
2118
2151
|
const ctaLabel = addingToCart ? "Adding..." : bundle.widgetConfig.cta.ctaText || "Add to cart";
|
|
2119
|
-
return /* @__PURE__ */ (0,
|
|
2152
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
2120
2153
|
"div",
|
|
2121
2154
|
{
|
|
2122
2155
|
ref: (el) => {
|
|
@@ -2128,19 +2161,19 @@ function MixMatchBundle(props) {
|
|
|
2128
2161
|
"aria-label": bundle.title,
|
|
2129
2162
|
"data-required-quantity": requiredUnits,
|
|
2130
2163
|
children: [
|
|
2131
|
-
/* @__PURE__ */ (0,
|
|
2132
|
-
/* @__PURE__ */ (0,
|
|
2133
|
-
bundle.description && /* @__PURE__ */ (0,
|
|
2164
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "lb-bundle-header", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "lb-bundle-header__content", children: [
|
|
2165
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("h3", { className: "lb-bundle-title", children: bundle.title }),
|
|
2166
|
+
bundle.description && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "lb-bundle-subtitle", children: bundle.description })
|
|
2134
2167
|
] }) }),
|
|
2135
|
-
/* @__PURE__ */ (0,
|
|
2168
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
2136
2169
|
BundleCountdown,
|
|
2137
2170
|
{
|
|
2138
2171
|
endsAt: bundle.endsAt,
|
|
2139
2172
|
widgetConfig: bundle.widgetConfig
|
|
2140
2173
|
}
|
|
2141
2174
|
),
|
|
2142
|
-
/* @__PURE__ */ (0,
|
|
2143
|
-
/* @__PURE__ */ (0,
|
|
2175
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "lb-mix-match__progress", "data-progress": true, children: [
|
|
2176
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
2144
2177
|
"div",
|
|
2145
2178
|
{
|
|
2146
2179
|
className: "lb-mix-match__progress-segments",
|
|
@@ -2148,7 +2181,7 @@ function MixMatchBundle(props) {
|
|
|
2148
2181
|
"aria-valuenow": shownUnits,
|
|
2149
2182
|
"aria-valuemin": 0,
|
|
2150
2183
|
"aria-valuemax": requiredUnits,
|
|
2151
|
-
children: Array.from({ length: requiredUnits }).map((_, i) => /* @__PURE__ */ (0,
|
|
2184
|
+
children: Array.from({ length: requiredUnits }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
2152
2185
|
"span",
|
|
2153
2186
|
{
|
|
2154
2187
|
className: `lb-mix-match__progress-segment${i < shownUnits ? " lb-mix-match__progress-segment--filled" : ""}`,
|
|
@@ -2158,8 +2191,8 @@ function MixMatchBundle(props) {
|
|
|
2158
2191
|
))
|
|
2159
2192
|
}
|
|
2160
2193
|
),
|
|
2161
|
-
/* @__PURE__ */ (0,
|
|
2162
|
-
/* @__PURE__ */ (0,
|
|
2194
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "lb-mix-match__progress-labels", children: [
|
|
2195
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
2163
2196
|
"span",
|
|
2164
2197
|
{
|
|
2165
2198
|
className: "lb-mix-match__progress-count",
|
|
@@ -2168,7 +2201,7 @@ function MixMatchBundle(props) {
|
|
|
2168
2201
|
children: `${shownUnits} of ${requiredUnits} added`
|
|
2169
2202
|
}
|
|
2170
2203
|
),
|
|
2171
|
-
/* @__PURE__ */ (0,
|
|
2204
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
2172
2205
|
"span",
|
|
2173
2206
|
{
|
|
2174
2207
|
className: "lb-mix-match__progress-remaining",
|
|
@@ -2179,7 +2212,7 @@ function MixMatchBundle(props) {
|
|
|
2179
2212
|
)
|
|
2180
2213
|
] })
|
|
2181
2214
|
] }),
|
|
2182
|
-
/* @__PURE__ */ (0,
|
|
2215
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
2183
2216
|
"div",
|
|
2184
2217
|
{
|
|
2185
2218
|
className: "lb-mix-match__slots lb-edge-fade",
|
|
@@ -2190,15 +2223,21 @@ function MixMatchBundle(props) {
|
|
|
2190
2223
|
button provides the keyboard/AT path (its activation bubbles
|
|
2191
2224
|
here); × stops propagation. */
|
|
2192
2225
|
// 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
|
|
2193
|
-
/* @__PURE__ */ (0,
|
|
2226
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
2194
2227
|
"div",
|
|
2195
2228
|
{
|
|
2196
2229
|
className: "lb-mix-match__slot lb-mix-match__slot--filled",
|
|
2197
2230
|
onClick: () => setPickerOpen(true),
|
|
2198
2231
|
children: [
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2232
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
2233
|
+
"div",
|
|
2234
|
+
{
|
|
2235
|
+
className: item.featuredImage ? "lb-bundle-thumbnail" : placeholderBoxClass("lb-bundle-thumbnail"),
|
|
2236
|
+
children: item.featuredImage ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("img", { src: item.featuredImage, alt: item.title, loading: "lazy" }) : /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(PlaceholderMark, {})
|
|
2237
|
+
}
|
|
2238
|
+
),
|
|
2239
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "lb-mix-match__filled-info", children: [
|
|
2240
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
2202
2241
|
"button",
|
|
2203
2242
|
{
|
|
2204
2243
|
type: "button",
|
|
@@ -2207,15 +2246,15 @@ function MixMatchBundle(props) {
|
|
|
2207
2246
|
children: item.title
|
|
2208
2247
|
}
|
|
2209
2248
|
),
|
|
2210
|
-
item.variantTitle && item.variantTitle !== "Default Title" && /* @__PURE__ */ (0,
|
|
2211
|
-
/* @__PURE__ */ (0,
|
|
2212
|
-
item.compareAtPrice !== null && item.compareAtPrice > item.price && /* @__PURE__ */ (0,
|
|
2213
|
-
/* @__PURE__ */ (0,
|
|
2214
|
-
/* @__PURE__ */ (0,
|
|
2249
|
+
item.variantTitle && item.variantTitle !== "Default Title" && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "lb-mix-match__filled-variant", children: item.variantTitle }),
|
|
2250
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { className: "lb-mix-match__filled-price", children: [
|
|
2251
|
+
item.compareAtPrice !== null && item.compareAtPrice > item.price && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("s", { className: "lb-mix-match__filled-compare", children: (0, import_core10.formatMoney)(item.compareAtPrice, currency) }),
|
|
2252
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "lb-bundle-product-price", children: (0, import_core10.formatMoney)(item.price, currency) }),
|
|
2253
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "lb-bundle-qty-inline", children: `\xD7${item.quantity}` })
|
|
2215
2254
|
] }),
|
|
2216
|
-
item.unitPrice && /* @__PURE__ */ (0,
|
|
2255
|
+
item.unitPrice && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "lb-bundle-product-unit-price", children: item.unitPrice })
|
|
2217
2256
|
] }),
|
|
2218
|
-
canRemoveItem(bundle, selections, item) ? /* @__PURE__ */ (0,
|
|
2257
|
+
canRemoveItem(bundle, selections, item) ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
2219
2258
|
"button",
|
|
2220
2259
|
{
|
|
2221
2260
|
type: "button",
|
|
@@ -2225,13 +2264,13 @@ function MixMatchBundle(props) {
|
|
|
2225
2264
|
e.stopPropagation();
|
|
2226
2265
|
removeSlot(index);
|
|
2227
2266
|
},
|
|
2228
|
-
children: /* @__PURE__ */ (0,
|
|
2267
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(CloseIcon2, {})
|
|
2229
2268
|
}
|
|
2230
2269
|
) : (
|
|
2231
2270
|
/* Required pick at its floor — quiet state chip instead of
|
|
2232
2271
|
the ×; removal returns once another slot covers the
|
|
2233
2272
|
product's minimum (variant swap flow). */
|
|
2234
|
-
/* @__PURE__ */ (0,
|
|
2273
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "lb-mix-match__slot-required", children: "Required" })
|
|
2235
2274
|
)
|
|
2236
2275
|
]
|
|
2237
2276
|
},
|
|
@@ -2240,7 +2279,7 @@ function MixMatchBundle(props) {
|
|
|
2240
2279
|
))
|
|
2241
2280
|
}
|
|
2242
2281
|
),
|
|
2243
|
-
totalQuantity < requiredUnits && /* @__PURE__ */ (0,
|
|
2282
|
+
totalQuantity < requiredUnits && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
2244
2283
|
"button",
|
|
2245
2284
|
{
|
|
2246
2285
|
type: "button",
|
|
@@ -2248,34 +2287,34 @@ function MixMatchBundle(props) {
|
|
|
2248
2287
|
"data-add-product-trigger": true,
|
|
2249
2288
|
onClick: () => setPickerOpen(true),
|
|
2250
2289
|
children: [
|
|
2251
|
-
/* @__PURE__ */ (0,
|
|
2252
|
-
/* @__PURE__ */ (0,
|
|
2290
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "lb-mix-match__add-product-icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(PlusIcon, {}) }),
|
|
2291
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "lb-mix-match__add-product-label", children: "Add a product" })
|
|
2253
2292
|
]
|
|
2254
2293
|
}
|
|
2255
2294
|
),
|
|
2256
|
-
/* @__PURE__ */ (0,
|
|
2257
|
-
selections.length > 0 && /* @__PURE__ */ (0,
|
|
2258
|
-
/* @__PURE__ */ (0,
|
|
2259
|
-
/* @__PURE__ */ (0,
|
|
2260
|
-
bundle.widgetConfig.savingsBar.visible && summary.savings > 0 && /* @__PURE__ */ (0,
|
|
2295
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "lb-bundle-divider" }),
|
|
2296
|
+
selections.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "lb-bundle-summary", "data-pricing-section": true, children: [
|
|
2297
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "lb-bundle-summary__text", children: [
|
|
2298
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "lb-bundle-summary__label", children: "Bundle total" }),
|
|
2299
|
+
bundle.widgetConfig.savingsBar.visible && summary.savings > 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("p", { className: "lb-bundle-savings-line", "data-savings-bar": true, children: [
|
|
2261
2300
|
"You save",
|
|
2262
2301
|
" ",
|
|
2263
|
-
/* @__PURE__ */ (0,
|
|
2302
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { "data-savings-amount": true, children: (0, import_core10.formatMoney)(summary.savings, currency) }),
|
|
2264
2303
|
" ",
|
|
2265
|
-
/* @__PURE__ */ (0,
|
|
2304
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { "data-savings-percent": true, children: [
|
|
2266
2305
|
"(",
|
|
2267
2306
|
summary.savingsPercent,
|
|
2268
2307
|
"%)"
|
|
2269
2308
|
] })
|
|
2270
2309
|
] })
|
|
2271
2310
|
] }),
|
|
2272
|
-
/* @__PURE__ */ (0,
|
|
2273
|
-
bundle.widgetConfig.pricing.showComparePrice && summary.savings > 0 && /* @__PURE__ */ (0,
|
|
2274
|
-
/* @__PURE__ */ (0,
|
|
2311
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { className: "lb-bundle-summary__prices", children: [
|
|
2312
|
+
bundle.widgetConfig.pricing.showComparePrice && summary.savings > 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "lb-bundle-compare-price", "data-compare-price": true, children: (0, import_core10.formatMoney)(summary.comparePrice, currency) }),
|
|
2313
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "lb-bundle-sale-price", "data-sale-price": true, children: (0, import_core10.formatMoney)(summary.salePrice, currency) })
|
|
2275
2314
|
] })
|
|
2276
2315
|
] }),
|
|
2277
|
-
cartError && /* @__PURE__ */ (0,
|
|
2278
|
-
/* @__PURE__ */ (0,
|
|
2316
|
+
cartError && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "lb-bundle__error", role: "alert", children: cartError }),
|
|
2317
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
2279
2318
|
"button",
|
|
2280
2319
|
{
|
|
2281
2320
|
className: "lb-bundle__cta",
|
|
@@ -2285,7 +2324,7 @@ function MixMatchBundle(props) {
|
|
|
2285
2324
|
children: ctaLabel
|
|
2286
2325
|
}
|
|
2287
2326
|
),
|
|
2288
|
-
pickerOpen && /* @__PURE__ */ (0,
|
|
2327
|
+
pickerOpen && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
2289
2328
|
MixMatchPicker,
|
|
2290
2329
|
{
|
|
2291
2330
|
bundle,
|
|
@@ -2325,7 +2364,7 @@ function countInStockProducts(bundle) {
|
|
|
2325
2364
|
return count;
|
|
2326
2365
|
}
|
|
2327
2366
|
function PlusIcon() {
|
|
2328
|
-
return /* @__PURE__ */ (0,
|
|
2367
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
2329
2368
|
"svg",
|
|
2330
2369
|
{
|
|
2331
2370
|
width: "18",
|
|
@@ -2335,14 +2374,14 @@ function PlusIcon() {
|
|
|
2335
2374
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2336
2375
|
"aria-hidden": "true",
|
|
2337
2376
|
children: [
|
|
2338
|
-
/* @__PURE__ */ (0,
|
|
2339
|
-
/* @__PURE__ */ (0,
|
|
2377
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "9", y1: "3", x2: "9", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
|
|
2378
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "3", y1: "9", x2: "15", y2: "9", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })
|
|
2340
2379
|
]
|
|
2341
2380
|
}
|
|
2342
2381
|
);
|
|
2343
2382
|
}
|
|
2344
2383
|
function CloseIcon2() {
|
|
2345
|
-
return /* @__PURE__ */ (0,
|
|
2384
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
2346
2385
|
"svg",
|
|
2347
2386
|
{
|
|
2348
2387
|
width: "16",
|
|
@@ -2352,8 +2391,8 @@ function CloseIcon2() {
|
|
|
2352
2391
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2353
2392
|
"aria-hidden": "true",
|
|
2354
2393
|
children: [
|
|
2355
|
-
/* @__PURE__ */ (0,
|
|
2356
|
-
/* @__PURE__ */ (0,
|
|
2394
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "5", y1: "5", x2: "15", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
|
|
2395
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "15", y1: "5", x2: "5", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })
|
|
2357
2396
|
]
|
|
2358
2397
|
}
|
|
2359
2398
|
);
|
|
@@ -2362,7 +2401,7 @@ function CloseIcon2() {
|
|
|
2362
2401
|
// src/components/VolumeBundle.tsx
|
|
2363
2402
|
var import_react13 = require("react");
|
|
2364
2403
|
var import_core11 = require("@lime-bundles/core");
|
|
2365
|
-
var
|
|
2404
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
2366
2405
|
function VolumeBundle(props) {
|
|
2367
2406
|
const {
|
|
2368
2407
|
shopDomain,
|
|
@@ -2529,15 +2568,15 @@ function VolumeBundle(props) {
|
|
|
2529
2568
|
tierSavings
|
|
2530
2569
|
]);
|
|
2531
2570
|
if (result.status === "loading") {
|
|
2532
|
-
return /* @__PURE__ */ (0,
|
|
2533
|
-
/* @__PURE__ */ (0,
|
|
2534
|
-
/* @__PURE__ */ (0,
|
|
2571
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: `lb-bundle lb-bundle--loading ${className ?? ""}`, children: [
|
|
2572
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "lb-skeleton lb-skeleton--title" }),
|
|
2573
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "lb-skeleton lb-skeleton--tiers" })
|
|
2535
2574
|
] });
|
|
2536
2575
|
}
|
|
2537
2576
|
if (result.status === "error") return null;
|
|
2538
2577
|
if (!bundle) return null;
|
|
2539
2578
|
if (!product) return null;
|
|
2540
|
-
return /* @__PURE__ */ (0,
|
|
2579
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
2541
2580
|
"div",
|
|
2542
2581
|
{
|
|
2543
2582
|
ref: (el) => {
|
|
@@ -2548,19 +2587,19 @@ function VolumeBundle(props) {
|
|
|
2548
2587
|
role: "region",
|
|
2549
2588
|
"aria-label": bundle.title,
|
|
2550
2589
|
children: [
|
|
2551
|
-
/* @__PURE__ */ (0,
|
|
2552
|
-
/* @__PURE__ */ (0,
|
|
2553
|
-
bundle.description && /* @__PURE__ */ (0,
|
|
2590
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "lb-bundle-header", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "lb-bundle-header__content", children: [
|
|
2591
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("h3", { className: "lb-bundle-title", children: bundle.title }),
|
|
2592
|
+
bundle.description && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "lb-bundle-subtitle", children: bundle.description })
|
|
2554
2593
|
] }) }),
|
|
2555
|
-
/* @__PURE__ */ (0,
|
|
2594
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
2556
2595
|
BundleCountdown,
|
|
2557
2596
|
{
|
|
2558
2597
|
endsAt: bundle.endsAt,
|
|
2559
2598
|
widgetConfig: bundle.widgetConfig
|
|
2560
2599
|
}
|
|
2561
2600
|
),
|
|
2562
|
-
/* @__PURE__ */ (0,
|
|
2563
|
-
thumbImage
|
|
2601
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "lb-bundle-product-row lb-bundle-product-row--volume", children: [
|
|
2602
|
+
thumbImage ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
2564
2603
|
"img",
|
|
2565
2604
|
{
|
|
2566
2605
|
src: thumbImage.url,
|
|
@@ -2570,21 +2609,21 @@ function VolumeBundle(props) {
|
|
|
2570
2609
|
width: thumbImage.width ?? void 0,
|
|
2571
2610
|
height: thumbImage.height ?? void 0
|
|
2572
2611
|
}
|
|
2573
|
-
),
|
|
2574
|
-
/* @__PURE__ */ (0,
|
|
2575
|
-
/* @__PURE__ */ (0,
|
|
2576
|
-
/* @__PURE__ */ (0,
|
|
2612
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ThumbnailPlaceholder, { className: "lb-bundle__product-image" }),
|
|
2613
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "lb-bundle__product-info", children: [
|
|
2614
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "lb-bundle__product-title", children: product.title }),
|
|
2615
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("p", { className: "lb-bundle__product-price", children: [
|
|
2577
2616
|
(0, import_core11.formatMoney)(basePrice, currency),
|
|
2578
2617
|
" each"
|
|
2579
2618
|
] }),
|
|
2580
|
-
unitPriceText && /* @__PURE__ */ (0,
|
|
2581
|
-
showPicker && /* @__PURE__ */ (0,
|
|
2619
|
+
unitPriceText && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "lb-bundle__product-unit-price", children: unitPriceText }),
|
|
2620
|
+
showPicker && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "lb-bundle__product-variant-pickers", children: optionNames.map((optionName, optionIndex) => {
|
|
2582
2621
|
const dropdownOptions = optionsFor(optionIndex).map((o) => ({
|
|
2583
2622
|
value: o.value,
|
|
2584
2623
|
label: o.value,
|
|
2585
2624
|
disabled: o.disabled
|
|
2586
2625
|
}));
|
|
2587
|
-
return /* @__PURE__ */ (0,
|
|
2626
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
2588
2627
|
VariantDropdown,
|
|
2589
2628
|
{
|
|
2590
2629
|
options: dropdownOptions,
|
|
@@ -2597,7 +2636,7 @@ function VolumeBundle(props) {
|
|
|
2597
2636
|
}) })
|
|
2598
2637
|
] })
|
|
2599
2638
|
] }),
|
|
2600
|
-
/* @__PURE__ */ (0,
|
|
2639
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
2601
2640
|
"div",
|
|
2602
2641
|
{
|
|
2603
2642
|
className: "lb-bundle__tiers lb-edge-fade",
|
|
@@ -2609,7 +2648,7 @@ function VolumeBundle(props) {
|
|
|
2609
2648
|
const showCompare = bundle.widgetConfig.pricing.showComparePrice && ts.savings > 0;
|
|
2610
2649
|
const isChecked = activeTier === ts.tier;
|
|
2611
2650
|
const available = tierAvailable(ts.tier.minQuantity);
|
|
2612
|
-
return /* @__PURE__ */ (0,
|
|
2651
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
2613
2652
|
"div",
|
|
2614
2653
|
{
|
|
2615
2654
|
className: `lb-bundle__tier ${ts.isActive ? "lb-bundle__tier--active" : ""} ${available ? "" : "lb-bundle__tier--oos"}`,
|
|
@@ -2627,21 +2666,21 @@ function VolumeBundle(props) {
|
|
|
2627
2666
|
}
|
|
2628
2667
|
},
|
|
2629
2668
|
children: [
|
|
2630
|
-
/* @__PURE__ */ (0,
|
|
2631
|
-
/* @__PURE__ */ (0,
|
|
2632
|
-
/* @__PURE__ */ (0,
|
|
2669
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "lb-bundle__tier-radio", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "lb-bundle__tier-radio-dot" }) }),
|
|
2670
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: "lb-bundle__tier-info", children: [
|
|
2671
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: "lb-bundle__tier-label", children: [
|
|
2633
2672
|
"Buy ",
|
|
2634
2673
|
ts.tier.minQuantity
|
|
2635
2674
|
] }),
|
|
2636
|
-
/* @__PURE__ */ (0,
|
|
2637
|
-
showCompare && /* @__PURE__ */ (0,
|
|
2638
|
-
/* @__PURE__ */ (0,
|
|
2639
|
-
/* @__PURE__ */ (0,
|
|
2675
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: "lb-bundle__tier-price", children: [
|
|
2676
|
+
showCompare && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "lb-bundle__tier-compare", children: (0, import_core11.formatMoney)(basePrice, currency) }),
|
|
2677
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { children: (0, import_core11.formatMoney)(ts.unitPrice, currency) }),
|
|
2678
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "lb-bundle__tier-unit", children: "each" })
|
|
2640
2679
|
] })
|
|
2641
2680
|
] }),
|
|
2642
|
-
(tierIndex === popularTierIndex || savingsPercent > 0) && /* @__PURE__ */ (0,
|
|
2643
|
-
tierIndex === popularTierIndex && /* @__PURE__ */ (0,
|
|
2644
|
-
savingsPercent > 0 && /* @__PURE__ */ (0,
|
|
2681
|
+
(tierIndex === popularTierIndex || savingsPercent > 0) && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: "lb-bundle__tier-right", children: [
|
|
2682
|
+
tierIndex === popularTierIndex && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "lb-bundle__tier-badge", children: bundle.widgetConfig.popularBadge.text }),
|
|
2683
|
+
savingsPercent > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: "lb-bundle__tier-savings", children: [
|
|
2645
2684
|
"Save ",
|
|
2646
2685
|
savingsPercent,
|
|
2647
2686
|
"%"
|
|
@@ -2654,10 +2693,10 @@ function VolumeBundle(props) {
|
|
|
2654
2693
|
})
|
|
2655
2694
|
}
|
|
2656
2695
|
),
|
|
2657
|
-
/* @__PURE__ */ (0,
|
|
2658
|
-
/* @__PURE__ */ (0,
|
|
2659
|
-
/* @__PURE__ */ (0,
|
|
2660
|
-
/* @__PURE__ */ (0,
|
|
2696
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "lb-bundle__quantity-selector", children: [
|
|
2697
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("label", { htmlFor: `lb-qty-${bundle.id}`, children: "Quantity" }),
|
|
2698
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "lb-bundle__quantity-control", children: [
|
|
2699
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
2661
2700
|
"button",
|
|
2662
2701
|
{
|
|
2663
2702
|
"aria-label": "Decrease quantity",
|
|
@@ -2665,7 +2704,7 @@ function VolumeBundle(props) {
|
|
|
2665
2704
|
children: "\u2212"
|
|
2666
2705
|
}
|
|
2667
2706
|
),
|
|
2668
|
-
/* @__PURE__ */ (0,
|
|
2707
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
2669
2708
|
"input",
|
|
2670
2709
|
{
|
|
2671
2710
|
id: `lb-qty-${bundle.id}`,
|
|
@@ -2679,7 +2718,7 @@ function VolumeBundle(props) {
|
|
|
2679
2718
|
className: "lb-bundle__quantity-input"
|
|
2680
2719
|
}
|
|
2681
2720
|
),
|
|
2682
|
-
/* @__PURE__ */ (0,
|
|
2721
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
2683
2722
|
"button",
|
|
2684
2723
|
{
|
|
2685
2724
|
"aria-label": "Increase quantity",
|
|
@@ -2689,23 +2728,23 @@ function VolumeBundle(props) {
|
|
|
2689
2728
|
)
|
|
2690
2729
|
] })
|
|
2691
2730
|
] }),
|
|
2692
|
-
cartError && /* @__PURE__ */ (0,
|
|
2731
|
+
cartError && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "lb-bundle__error", role: "alert", children: cartError }),
|
|
2693
2732
|
bundle && displayVariant && (0, import_core11.shouldShowLowStockBadge)(
|
|
2694
2733
|
displayVariant,
|
|
2695
2734
|
minTierQty,
|
|
2696
2735
|
bundle.widgetConfig.lowStockThreshold,
|
|
2697
2736
|
bundle.widgetConfig.showLowStockBadge
|
|
2698
|
-
) && /* @__PURE__ */ (0,
|
|
2737
|
+
) && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: "lb-bundle-low-stock-badge", children: [
|
|
2699
2738
|
"Only ",
|
|
2700
2739
|
displayVariant.quantityAvailable,
|
|
2701
2740
|
" left"
|
|
2702
2741
|
] }),
|
|
2703
|
-
/* @__PURE__ */ (0,
|
|
2704
|
-
/* @__PURE__ */ (0,
|
|
2705
|
-
/* @__PURE__ */ (0,
|
|
2706
|
-
/* @__PURE__ */ (0,
|
|
2742
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "lb-bundle-divider" }),
|
|
2743
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "lb-bundle-summary", children: [
|
|
2744
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "lb-bundle-summary__text", children: [
|
|
2745
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: "lb-bundle-summary__label", "data-total-label": true, children: [
|
|
2707
2746
|
"Total",
|
|
2708
|
-
bundle.widgetConfig.pricing.showItemCount && /* @__PURE__ */ (0,
|
|
2747
|
+
bundle.widgetConfig.pricing.showItemCount && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { "data-item-count": true, children: [
|
|
2709
2748
|
" ",
|
|
2710
2749
|
"(",
|
|
2711
2750
|
quantity,
|
|
@@ -2714,24 +2753,24 @@ function VolumeBundle(props) {
|
|
|
2714
2753
|
")"
|
|
2715
2754
|
] })
|
|
2716
2755
|
] }),
|
|
2717
|
-
bundle.widgetConfig.savingsBar.visible && volumeSavings > 0 && /* @__PURE__ */ (0,
|
|
2756
|
+
bundle.widgetConfig.savingsBar.visible && volumeSavings > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("p", { className: "lb-bundle-savings-line", "data-savings-bar": true, children: [
|
|
2718
2757
|
"You save",
|
|
2719
2758
|
" ",
|
|
2720
|
-
/* @__PURE__ */ (0,
|
|
2759
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { "data-savings-amount": true, children: (0, import_core11.formatMoney)(volumeSavings, currency) }),
|
|
2721
2760
|
" ",
|
|
2722
|
-
/* @__PURE__ */ (0,
|
|
2761
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { "data-savings-percent": true, children: [
|
|
2723
2762
|
"(",
|
|
2724
2763
|
volumeSavingsPercent,
|
|
2725
2764
|
"%)"
|
|
2726
2765
|
] })
|
|
2727
2766
|
] })
|
|
2728
2767
|
] }),
|
|
2729
|
-
/* @__PURE__ */ (0,
|
|
2730
|
-
bundle.widgetConfig.pricing.showComparePrice && volumeSavings > 0 && /* @__PURE__ */ (0,
|
|
2731
|
-
/* @__PURE__ */ (0,
|
|
2768
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: "lb-bundle-summary__prices", children: [
|
|
2769
|
+
bundle.widgetConfig.pricing.showComparePrice && volumeSavings > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "lb-bundle-compare-price", "data-compare-price": true, children: (0, import_core11.formatMoney)(undiscountedTotal, currency) }),
|
|
2770
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "lb-bundle-sale-price", "data-total-price": true, children: (0, import_core11.formatMoney)(volumeTotal, currency) })
|
|
2732
2771
|
] })
|
|
2733
2772
|
] }),
|
|
2734
|
-
/* @__PURE__ */ (0,
|
|
2773
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
2735
2774
|
"button",
|
|
2736
2775
|
{
|
|
2737
2776
|
className: "lb-bundle__cta",
|
|
@@ -2749,7 +2788,7 @@ function VolumeBundle(props) {
|
|
|
2749
2788
|
// src/components/BogoBundle.tsx
|
|
2750
2789
|
var import_react14 = require("react");
|
|
2751
2790
|
var import_core12 = require("@lime-bundles/core");
|
|
2752
|
-
var
|
|
2791
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
2753
2792
|
function discountedUnit(price, percent) {
|
|
2754
2793
|
const cents = Math.round(price * 100);
|
|
2755
2794
|
const discounted = cents - Math.floor(cents * percent / 100);
|
|
@@ -2883,9 +2922,9 @@ function BogoBundle(props) {
|
|
|
2883
2922
|
}
|
|
2884
2923
|
}, [bundle, buyProduct, getProduct, selectedVariants, resolveVariant, onAddToCart, onError, trackAddToCart, percent]);
|
|
2885
2924
|
if (result.status === "loading") {
|
|
2886
|
-
return /* @__PURE__ */ (0,
|
|
2887
|
-
/* @__PURE__ */ (0,
|
|
2888
|
-
/* @__PURE__ */ (0,
|
|
2925
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: `lb-bundle lb-bundle--loading ${className ?? ""}`, children: [
|
|
2926
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "lb-skeleton lb-skeleton--title" }),
|
|
2927
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "lb-skeleton lb-skeleton--products" })
|
|
2889
2928
|
] });
|
|
2890
2929
|
}
|
|
2891
2930
|
if (result.status === "error") return null;
|
|
@@ -2902,7 +2941,7 @@ function BogoBundle(props) {
|
|
|
2902
2941
|
const showCompare = bundle.widgetConfig.pricing.showComparePrice && savings > 0;
|
|
2903
2942
|
const showSavings = bundle.widgetConfig.savingsBar.visible && savings > 0;
|
|
2904
2943
|
const badge = percent === 100 ? "Free" : `${percent}% off`;
|
|
2905
|
-
return /* @__PURE__ */ (0,
|
|
2944
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
2906
2945
|
"div",
|
|
2907
2946
|
{
|
|
2908
2947
|
ref: (el) => {
|
|
@@ -2913,19 +2952,19 @@ function BogoBundle(props) {
|
|
|
2913
2952
|
role: "region",
|
|
2914
2953
|
"aria-label": bundle.title,
|
|
2915
2954
|
children: [
|
|
2916
|
-
/* @__PURE__ */ (0,
|
|
2917
|
-
/* @__PURE__ */ (0,
|
|
2918
|
-
bundle.description && /* @__PURE__ */ (0,
|
|
2955
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "lb-bundle-header", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "lb-bundle-header__content", children: [
|
|
2956
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("h3", { className: "lb-bundle-title", children: bundle.title }),
|
|
2957
|
+
bundle.description && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: "lb-bundle-subtitle", children: bundle.description })
|
|
2919
2958
|
] }) }),
|
|
2920
|
-
/* @__PURE__ */ (0,
|
|
2959
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2921
2960
|
BundleCountdown,
|
|
2922
2961
|
{
|
|
2923
2962
|
endsAt: bundle.endsAt,
|
|
2924
2963
|
widgetConfig: bundle.widgetConfig
|
|
2925
2964
|
}
|
|
2926
2965
|
),
|
|
2927
|
-
/* @__PURE__ */ (0,
|
|
2928
|
-
/* @__PURE__ */ (0,
|
|
2966
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "lb-bundle__products", children: [
|
|
2967
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2929
2968
|
BogoProductRow,
|
|
2930
2969
|
{
|
|
2931
2970
|
side: "buy",
|
|
@@ -2937,11 +2976,11 @@ function BogoBundle(props) {
|
|
|
2937
2976
|
onVariantChange: handleVariantChange
|
|
2938
2977
|
}
|
|
2939
2978
|
),
|
|
2940
|
-
/* @__PURE__ */ (0,
|
|
2941
|
-
/* @__PURE__ */ (0,
|
|
2942
|
-
/* @__PURE__ */ (0,
|
|
2979
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "lb-bogo__plus", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("svg", { width: "12", height: "12", viewBox: "0 0 18 18", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
2980
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("line", { x1: "9", y1: "3", x2: "9", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
|
|
2981
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("line", { x1: "3", y1: "9", x2: "15", y2: "9", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })
|
|
2943
2982
|
] }) }),
|
|
2944
|
-
/* @__PURE__ */ (0,
|
|
2983
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2945
2984
|
BogoProductRow,
|
|
2946
2985
|
{
|
|
2947
2986
|
side: "get",
|
|
@@ -2954,29 +2993,29 @@ function BogoBundle(props) {
|
|
|
2954
2993
|
}
|
|
2955
2994
|
)
|
|
2956
2995
|
] }),
|
|
2957
|
-
/* @__PURE__ */ (0,
|
|
2958
|
-
/* @__PURE__ */ (0,
|
|
2959
|
-
/* @__PURE__ */ (0,
|
|
2960
|
-
/* @__PURE__ */ (0,
|
|
2961
|
-
showSavings && /* @__PURE__ */ (0,
|
|
2996
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "lb-bundle-divider" }),
|
|
2997
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "lb-bundle-summary", children: [
|
|
2998
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "lb-bundle-summary__text", children: [
|
|
2999
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "lb-bundle-summary__label", children: "Bundle total" }),
|
|
3000
|
+
showSavings && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("p", { className: "lb-bundle-savings-line", "data-savings-bar": true, children: [
|
|
2962
3001
|
"You save",
|
|
2963
3002
|
" ",
|
|
2964
|
-
/* @__PURE__ */ (0,
|
|
3003
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { "data-savings-amount": true, children: (0, import_core12.formatMoney)(savings, currency) }),
|
|
2965
3004
|
" ",
|
|
2966
|
-
/* @__PURE__ */ (0,
|
|
3005
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { "data-savings-percent": true, children: [
|
|
2967
3006
|
"(",
|
|
2968
3007
|
savingsPercent,
|
|
2969
3008
|
"%)"
|
|
2970
3009
|
] })
|
|
2971
3010
|
] })
|
|
2972
3011
|
] }),
|
|
2973
|
-
/* @__PURE__ */ (0,
|
|
2974
|
-
showCompare && /* @__PURE__ */ (0,
|
|
2975
|
-
/* @__PURE__ */ (0,
|
|
3012
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { className: "lb-bundle-summary__prices", children: [
|
|
3013
|
+
showCompare && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "lb-bundle-compare-price", "data-compare-price": true, children: (0, import_core12.formatMoney)(comparePrice, currency) }),
|
|
3014
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "lb-bundle-sale-price", "data-sale-price": true, children: (0, import_core12.formatMoney)(salePrice, currency) })
|
|
2976
3015
|
] })
|
|
2977
3016
|
] }),
|
|
2978
|
-
cartError && /* @__PURE__ */ (0,
|
|
2979
|
-
/* @__PURE__ */ (0,
|
|
3017
|
+
cartError && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: "lb-bundle__error", role: "alert", children: cartError }),
|
|
3018
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2980
3019
|
"button",
|
|
2981
3020
|
{
|
|
2982
3021
|
className: "lb-bundle__cta",
|
|
@@ -3015,8 +3054,8 @@ function BogoProductRow({ side, product, quantity, percent, badge, currency, onV
|
|
|
3015
3054
|
currency
|
|
3016
3055
|
) : null;
|
|
3017
3056
|
const thumbImage = displayVariant?.image ?? product.featuredImage;
|
|
3018
|
-
return /* @__PURE__ */ (0,
|
|
3019
|
-
thumbImage
|
|
3057
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "lb-bundle-product-row", part: "product", "data-bogo-role": side, children: [
|
|
3058
|
+
thumbImage ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
3020
3059
|
"img",
|
|
3021
3060
|
{
|
|
3022
3061
|
src: thumbImage.url,
|
|
@@ -3026,12 +3065,12 @@ function BogoProductRow({ side, product, quantity, percent, badge, currency, onV
|
|
|
3026
3065
|
width: thumbImage.width ?? void 0,
|
|
3027
3066
|
height: thumbImage.height ?? void 0
|
|
3028
3067
|
}
|
|
3029
|
-
),
|
|
3030
|
-
/* @__PURE__ */ (0,
|
|
3031
|
-
/* @__PURE__ */ (0,
|
|
3032
|
-
!showPicker && displayVariant && variants.length > 1 && /* @__PURE__ */ (0,
|
|
3033
|
-
/* @__PURE__ */ (0,
|
|
3034
|
-
compareAt && /* @__PURE__ */ (0,
|
|
3068
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(ThumbnailPlaceholder, { className: "lb-bundle__product-image" }),
|
|
3069
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "lb-bundle__product-info", children: [
|
|
3070
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: "lb-bundle__product-title", children: product.title }),
|
|
3071
|
+
!showPicker && displayVariant && variants.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "lb-bundle-variant-badge", children: displayVariant.title }),
|
|
3072
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { className: "lb-bundle-product-prices", children: [
|
|
3073
|
+
compareAt && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
3035
3074
|
"span",
|
|
3036
3075
|
{
|
|
3037
3076
|
className: "lb-bundle-product-compare-price",
|
|
@@ -3039,13 +3078,13 @@ function BogoProductRow({ side, product, quantity, percent, badge, currency, onV
|
|
|
3039
3078
|
children: compareAt
|
|
3040
3079
|
}
|
|
3041
3080
|
),
|
|
3042
|
-
/* @__PURE__ */ (0,
|
|
3043
|
-
/* @__PURE__ */ (0,
|
|
3081
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "lb-bundle__product-price", "data-product-price": true, children: priceText }),
|
|
3082
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { className: "lb-bundle-qty-inline", "data-qty-inline": true, children: [
|
|
3044
3083
|
"\xD7",
|
|
3045
3084
|
quantity
|
|
3046
3085
|
] })
|
|
3047
3086
|
] }),
|
|
3048
|
-
unitPriceText && /* @__PURE__ */ (0,
|
|
3087
|
+
unitPriceText && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
3049
3088
|
"span",
|
|
3050
3089
|
{
|
|
3051
3090
|
className: "lb-bundle__product-unit-price",
|
|
@@ -3053,13 +3092,13 @@ function BogoProductRow({ side, product, quantity, percent, badge, currency, onV
|
|
|
3053
3092
|
children: unitPriceText
|
|
3054
3093
|
}
|
|
3055
3094
|
),
|
|
3056
|
-
showPicker && /* @__PURE__ */ (0,
|
|
3095
|
+
showPicker && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "lb-bundle__product-variant-pickers", children: optionNames.map((optionName, optionIndex) => {
|
|
3057
3096
|
const dropdownOptions = optionsFor(optionIndex).map((o) => ({
|
|
3058
3097
|
value: o.value,
|
|
3059
3098
|
label: o.value,
|
|
3060
3099
|
disabled: o.disabled
|
|
3061
3100
|
}));
|
|
3062
|
-
return /* @__PURE__ */ (0,
|
|
3101
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
3063
3102
|
VariantDropdown,
|
|
3064
3103
|
{
|
|
3065
3104
|
options: dropdownOptions,
|
|
@@ -3071,7 +3110,7 @@ function BogoProductRow({ side, product, quantity, percent, badge, currency, onV
|
|
|
3071
3110
|
);
|
|
3072
3111
|
}) })
|
|
3073
3112
|
] }),
|
|
3074
|
-
badge && /* @__PURE__ */ (0,
|
|
3113
|
+
badge && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "lb-bogo__badge", children: badge })
|
|
3075
3114
|
] });
|
|
3076
3115
|
}
|
|
3077
3116
|
|
|
@@ -3083,7 +3122,7 @@ var import_core14 = require("@lime-bundles/core");
|
|
|
3083
3122
|
var import_react15 = require("react");
|
|
3084
3123
|
var import_react_dom2 = require("react-dom");
|
|
3085
3124
|
var import_core13 = require("@lime-bundles/core");
|
|
3086
|
-
var
|
|
3125
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
3087
3126
|
function ruleFor3(bundle, productId, variantId) {
|
|
3088
3127
|
if (variantId) {
|
|
3089
3128
|
const vRule = bundle.variantRules[variantId];
|
|
@@ -3284,7 +3323,7 @@ function MultiStepPicker({
|
|
|
3284
3323
|
// inside carries the interactive role + focus trap. So the static-element
|
|
3285
3324
|
// interaction lint does not apply to this backdrop.
|
|
3286
3325
|
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
3287
|
-
/* @__PURE__ */ (0,
|
|
3326
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3288
3327
|
"div",
|
|
3289
3328
|
{
|
|
3290
3329
|
ref: (el) => {
|
|
@@ -3296,7 +3335,7 @@ function MultiStepPicker({
|
|
|
3296
3335
|
"data-bundle-gid": bundle.id,
|
|
3297
3336
|
onMouseDown: onOverlayMouseDown,
|
|
3298
3337
|
onMouseUp: onOverlayMouseUp,
|
|
3299
|
-
children: /* @__PURE__ */ (0,
|
|
3338
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
3300
3339
|
"div",
|
|
3301
3340
|
{
|
|
3302
3341
|
ref: dialogRef,
|
|
@@ -3306,10 +3345,10 @@ function MultiStepPicker({
|
|
|
3306
3345
|
"aria-labelledby": titleId,
|
|
3307
3346
|
tabIndex: -1,
|
|
3308
3347
|
children: [
|
|
3309
|
-
/* @__PURE__ */ (0,
|
|
3310
|
-
/* @__PURE__ */ (0,
|
|
3311
|
-
/* @__PURE__ */ (0,
|
|
3312
|
-
/* @__PURE__ */ (0,
|
|
3348
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "lb-mix-match__modal-header", children: [
|
|
3349
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "lb-mix-match__modal-header-top", children: [
|
|
3350
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "lb-mix-match__modal-heading", children: [
|
|
3351
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3313
3352
|
"h4",
|
|
3314
3353
|
{
|
|
3315
3354
|
className: "lb-mix-match__modal-title",
|
|
@@ -3319,9 +3358,9 @@ function MultiStepPicker({
|
|
|
3319
3358
|
children: "Add to your bundle"
|
|
3320
3359
|
}
|
|
3321
3360
|
),
|
|
3322
|
-
/* @__PURE__ */ (0,
|
|
3361
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "lb-mix-match__modal-subtitle", "data-modal-subtitle": true, children: subtitle })
|
|
3323
3362
|
] }),
|
|
3324
|
-
/* @__PURE__ */ (0,
|
|
3363
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3325
3364
|
"button",
|
|
3326
3365
|
{
|
|
3327
3366
|
ref: closeBtnRef,
|
|
@@ -3330,16 +3369,16 @@ function MultiStepPicker({
|
|
|
3330
3369
|
"data-modal-close": true,
|
|
3331
3370
|
"aria-label": "Close",
|
|
3332
3371
|
onClick: onClose,
|
|
3333
|
-
children: /* @__PURE__ */ (0,
|
|
3372
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(CloseIcon3, {})
|
|
3334
3373
|
}
|
|
3335
3374
|
)
|
|
3336
3375
|
] }),
|
|
3337
|
-
/* @__PURE__ */ (0,
|
|
3376
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3338
3377
|
"div",
|
|
3339
3378
|
{
|
|
3340
3379
|
className: "lb-mix-match__progress lb-mix-match__modal-progress",
|
|
3341
3380
|
"data-progress": true,
|
|
3342
|
-
children: /* @__PURE__ */ (0,
|
|
3381
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3343
3382
|
"div",
|
|
3344
3383
|
{
|
|
3345
3384
|
className: "lb-mix-match__progress-segments",
|
|
@@ -3348,7 +3387,7 @@ function MultiStepPicker({
|
|
|
3348
3387
|
"aria-valuenow": shownUnits,
|
|
3349
3388
|
"aria-valuemin": 0,
|
|
3350
3389
|
"aria-valuemax": stepMin,
|
|
3351
|
-
children: Array.from({ length: stepMin }).map((_, i) => /* @__PURE__ */ (0,
|
|
3390
|
+
children: Array.from({ length: stepMin }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3352
3391
|
"span",
|
|
3353
3392
|
{
|
|
3354
3393
|
className: `lb-mix-match__progress-segment${i < shownUnits ? " lb-mix-match__progress-segment--filled" : ""}`,
|
|
@@ -3361,8 +3400,8 @@ function MultiStepPicker({
|
|
|
3361
3400
|
}
|
|
3362
3401
|
)
|
|
3363
3402
|
] }),
|
|
3364
|
-
wc.showSearch && /* @__PURE__ */ (0,
|
|
3365
|
-
/* @__PURE__ */ (0,
|
|
3403
|
+
wc.showSearch && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "lb-mix-match__modal-search", children: [
|
|
3404
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3366
3405
|
"input",
|
|
3367
3406
|
{
|
|
3368
3407
|
type: "text",
|
|
@@ -3376,7 +3415,7 @@ function MultiStepPicker({
|
|
|
3376
3415
|
onChange: (e) => setQuery(e.target.value)
|
|
3377
3416
|
}
|
|
3378
3417
|
),
|
|
3379
|
-
query.length > 0 && /* @__PURE__ */ (0,
|
|
3418
|
+
query.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3380
3419
|
"button",
|
|
3381
3420
|
{
|
|
3382
3421
|
type: "button",
|
|
@@ -3384,11 +3423,11 @@ function MultiStepPicker({
|
|
|
3384
3423
|
"data-modal-search-clear": true,
|
|
3385
3424
|
"aria-label": "Clear search",
|
|
3386
3425
|
onClick: () => setQuery(""),
|
|
3387
|
-
children: /* @__PURE__ */ (0,
|
|
3426
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SearchClearIcon2, {})
|
|
3388
3427
|
}
|
|
3389
3428
|
)
|
|
3390
3429
|
] }),
|
|
3391
|
-
showFilters && /* @__PURE__ */ (0,
|
|
3430
|
+
showFilters && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3392
3431
|
"div",
|
|
3393
3432
|
{
|
|
3394
3433
|
className: "lb-mix-match__filters",
|
|
@@ -3397,7 +3436,7 @@ function MultiStepPicker({
|
|
|
3397
3436
|
"aria-label": "Filter by product type",
|
|
3398
3437
|
children: [FILTERS_ALL2, ...productTypes].map((value) => {
|
|
3399
3438
|
const isActive = value === activeType;
|
|
3400
|
-
return /* @__PURE__ */ (0,
|
|
3439
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3401
3440
|
"button",
|
|
3402
3441
|
{
|
|
3403
3442
|
type: "button",
|
|
@@ -3412,7 +3451,7 @@ function MultiStepPicker({
|
|
|
3412
3451
|
})
|
|
3413
3452
|
}
|
|
3414
3453
|
),
|
|
3415
|
-
/* @__PURE__ */ (0,
|
|
3454
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "lb-mix-match__modal-list", "data-modal-list": true, ref: listRef, children: filtered.map((ep) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3416
3455
|
MultiStepPickerRow,
|
|
3417
3456
|
{
|
|
3418
3457
|
bundle,
|
|
@@ -3430,10 +3469,10 @@ function MultiStepPicker({
|
|
|
3430
3469
|
},
|
|
3431
3470
|
`${stepIndex}:${ep.product.id}`
|
|
3432
3471
|
)) }),
|
|
3433
|
-
showEmpty && /* @__PURE__ */ (0,
|
|
3434
|
-
/* @__PURE__ */ (0,
|
|
3435
|
-
/* @__PURE__ */ (0,
|
|
3436
|
-
stepIndex > 0 && /* @__PURE__ */ (0,
|
|
3472
|
+
showEmpty && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "lb-mix-match__modal-empty", "data-modal-empty": true, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { children: "No products match your search" }) }),
|
|
3473
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { "data-modal-live": true, "aria-live": "polite", className: "lb-visually-hidden", children: announcement || (query.trim() ? `${filtered.length} products shown` : "") }),
|
|
3474
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "lb-mix-match__modal-footer lb-multi-step__modal-footer", children: [
|
|
3475
|
+
stepIndex > 0 && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3437
3476
|
"button",
|
|
3438
3477
|
{
|
|
3439
3478
|
type: "button",
|
|
@@ -3443,7 +3482,7 @@ function MultiStepPicker({
|
|
|
3443
3482
|
children: "Back"
|
|
3444
3483
|
}
|
|
3445
3484
|
),
|
|
3446
|
-
/* @__PURE__ */ (0,
|
|
3485
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3447
3486
|
"span",
|
|
3448
3487
|
{
|
|
3449
3488
|
className: "lb-mix-match__modal-footer-count",
|
|
@@ -3452,7 +3491,7 @@ function MultiStepPicker({
|
|
|
3452
3491
|
children: `${shownUnits} of ${stepMin} added`
|
|
3453
3492
|
}
|
|
3454
3493
|
),
|
|
3455
|
-
!isLastStep && /* @__PURE__ */ (0,
|
|
3494
|
+
!isLastStep && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3456
3495
|
"button",
|
|
3457
3496
|
{
|
|
3458
3497
|
type: "button",
|
|
@@ -3465,7 +3504,7 @@ function MultiStepPicker({
|
|
|
3465
3504
|
children: "Next"
|
|
3466
3505
|
}
|
|
3467
3506
|
),
|
|
3468
|
-
isLastStep && /* @__PURE__ */ (0,
|
|
3507
|
+
isLastStep && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3469
3508
|
"button",
|
|
3470
3509
|
{
|
|
3471
3510
|
type: "button",
|
|
@@ -3608,7 +3647,7 @@ function MultiStepPickerRow({
|
|
|
3608
3647
|
}
|
|
3609
3648
|
const priceCents = parseFloat(currentVariant.price.amount);
|
|
3610
3649
|
const compareCents = currentVariant.compareAtPrice ? parseFloat(currentVariant.compareAtPrice.amount) : null;
|
|
3611
|
-
return /* @__PURE__ */ (0,
|
|
3650
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
3612
3651
|
"div",
|
|
3613
3652
|
{
|
|
3614
3653
|
className: `lb-mix-match__modal-product${isOos ? " lb-mix-match__modal-product--sold-out" : ""}${variantInStep ? " lb-mix-match__modal-product--in-bundle" : ""}`,
|
|
@@ -3617,21 +3656,27 @@ function MultiStepPickerRow({
|
|
|
3617
3656
|
"data-type": product.productType ?? "",
|
|
3618
3657
|
"aria-disabled": isOos || void 0,
|
|
3619
3658
|
children: [
|
|
3620
|
-
/* @__PURE__ */ (0,
|
|
3621
|
-
|
|
3622
|
-
|
|
3623
|
-
|
|
3624
|
-
|
|
3625
|
-
|
|
3626
|
-
|
|
3627
|
-
|
|
3628
|
-
|
|
3629
|
-
|
|
3630
|
-
|
|
3631
|
-
|
|
3632
|
-
|
|
3633
|
-
|
|
3634
|
-
|
|
3659
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
3660
|
+
"div",
|
|
3661
|
+
{
|
|
3662
|
+
className: thumbImage ? "lb-mix-match__modal-product-thumb" : placeholderBoxClass("lb-mix-match__modal-product-thumb"),
|
|
3663
|
+
children: [
|
|
3664
|
+
thumbImage ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3665
|
+
"img",
|
|
3666
|
+
{
|
|
3667
|
+
src: thumbImage.url,
|
|
3668
|
+
alt: thumbImage.altText ?? product.title,
|
|
3669
|
+
loading: "lazy",
|
|
3670
|
+
width: thumbImage.width ?? void 0,
|
|
3671
|
+
height: thumbImage.height ?? void 0
|
|
3672
|
+
}
|
|
3673
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(PlaceholderMark, {}),
|
|
3674
|
+
variantInStep && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "lb-mix-match__modal-added-badge", children: "Added" })
|
|
3675
|
+
]
|
|
3676
|
+
}
|
|
3677
|
+
),
|
|
3678
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "lb-mix-match__modal-product-info", children: [
|
|
3679
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "lb-mix-match__modal-product-title", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3635
3680
|
"a",
|
|
3636
3681
|
{
|
|
3637
3682
|
href: `/products/${product.handle}`,
|
|
@@ -3640,24 +3685,24 @@ function MultiStepPickerRow({
|
|
|
3640
3685
|
children: product.title
|
|
3641
3686
|
}
|
|
3642
3687
|
) }),
|
|
3643
|
-
/* @__PURE__ */ (0,
|
|
3644
|
-
/* @__PURE__ */ (0,
|
|
3645
|
-
compareCents !== null && compareCents > priceCents && /* @__PURE__ */ (0,
|
|
3688
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("p", { className: "lb-mix-match__modal-product-price", children: [
|
|
3689
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { "data-row-price-sale": true, children: (0, import_core13.formatMoney)(priceCents, currency) }),
|
|
3690
|
+
compareCents !== null && compareCents > priceCents && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("s", { className: "lb-mix-match__modal-product-compare", "data-row-compare": true, children: (0, import_core13.formatMoney)(compareCents, currency) })
|
|
3646
3691
|
] }),
|
|
3647
|
-
unitPriceText && /* @__PURE__ */ (0,
|
|
3648
|
-
showPicker && /* @__PURE__ */ (0,
|
|
3692
|
+
unitPriceText && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "lb-mix-match__modal-product-unit-price lb-bundle-product-unit-price", children: unitPriceText }),
|
|
3693
|
+
showPicker && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "lb-bundle-variant-option-groups", children: optionNames.map((optionName, optionIndex) => {
|
|
3649
3694
|
const dropdownOptions = optionsFor(optionIndex).map((o) => ({
|
|
3650
3695
|
value: o.value,
|
|
3651
3696
|
label: o.value,
|
|
3652
3697
|
disabled: o.disabled
|
|
3653
3698
|
}));
|
|
3654
|
-
return /* @__PURE__ */ (0,
|
|
3699
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
3655
3700
|
"div",
|
|
3656
3701
|
{
|
|
3657
3702
|
className: "lb-bundle-variant-option-group",
|
|
3658
3703
|
children: [
|
|
3659
|
-
/* @__PURE__ */ (0,
|
|
3660
|
-
/* @__PURE__ */ (0,
|
|
3704
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "lb-bundle-variant-option-label", children: optionName }),
|
|
3705
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3661
3706
|
VariantDropdown,
|
|
3662
3707
|
{
|
|
3663
3708
|
className: "lb-mix-match__variant-select-dropdown",
|
|
@@ -3672,17 +3717,17 @@ function MultiStepPickerRow({
|
|
|
3672
3717
|
optionName
|
|
3673
3718
|
);
|
|
3674
3719
|
}) }),
|
|
3675
|
-
!showPicker && variants.length === 1 && currentVariant.title !== "Default Title" && /* @__PURE__ */ (0,
|
|
3676
|
-
!isOos && needsMoreSpots && room > 0 && /* @__PURE__ */ (0,
|
|
3677
|
-
isOos ? /* @__PURE__ */ (0,
|
|
3678
|
-
showStepper && /* @__PURE__ */ (0,
|
|
3720
|
+
!showPicker && variants.length === 1 && currentVariant.title !== "Default Title" && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "lb-mix-match__filled-variant", children: currentVariant.title }),
|
|
3721
|
+
!isOos && needsMoreSpots && room > 0 && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "lb-mix-match__modal-needs-spots", children: vRule.min === 1 ? "Needs 1 spot" : `Needs ${vRule.min} spots` }),
|
|
3722
|
+
isOos ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "lb-mix-match__modal-sold-out-label", children: "Sold out" }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "lb-mix-match__modal-product-actions", children: [
|
|
3723
|
+
showStepper && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "lb-bundle-variant-option-group lb-mix-match__qty-stepper-group", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
3679
3724
|
"div",
|
|
3680
3725
|
{
|
|
3681
3726
|
className: "lb-mix-match__qty-stepper",
|
|
3682
3727
|
role: "group",
|
|
3683
3728
|
"aria-label": "Quantity",
|
|
3684
3729
|
children: [
|
|
3685
|
-
/* @__PURE__ */ (0,
|
|
3730
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3686
3731
|
"button",
|
|
3687
3732
|
{
|
|
3688
3733
|
type: "button",
|
|
@@ -3704,7 +3749,7 @@ function MultiStepPickerRow({
|
|
|
3704
3749
|
children: "\u2212"
|
|
3705
3750
|
}
|
|
3706
3751
|
),
|
|
3707
|
-
/* @__PURE__ */ (0,
|
|
3752
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3708
3753
|
"span",
|
|
3709
3754
|
{
|
|
3710
3755
|
className: "lb-mix-match__qty-stepper-value",
|
|
@@ -3713,7 +3758,7 @@ function MultiStepPickerRow({
|
|
|
3713
3758
|
children: shownQty
|
|
3714
3759
|
}
|
|
3715
3760
|
),
|
|
3716
|
-
/* @__PURE__ */ (0,
|
|
3761
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3717
3762
|
"button",
|
|
3718
3763
|
{
|
|
3719
3764
|
type: "button",
|
|
@@ -3738,7 +3783,7 @@ function MultiStepPickerRow({
|
|
|
3738
3783
|
]
|
|
3739
3784
|
}
|
|
3740
3785
|
) }),
|
|
3741
|
-
/* @__PURE__ */ (0,
|
|
3786
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3742
3787
|
"button",
|
|
3743
3788
|
{
|
|
3744
3789
|
type: "button",
|
|
@@ -3757,7 +3802,7 @@ function MultiStepPickerRow({
|
|
|
3757
3802
|
);
|
|
3758
3803
|
}
|
|
3759
3804
|
function CloseIcon3() {
|
|
3760
|
-
return /* @__PURE__ */ (0,
|
|
3805
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
3761
3806
|
"svg",
|
|
3762
3807
|
{
|
|
3763
3808
|
width: "20",
|
|
@@ -3767,14 +3812,14 @@ function CloseIcon3() {
|
|
|
3767
3812
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3768
3813
|
"aria-hidden": "true",
|
|
3769
3814
|
children: [
|
|
3770
|
-
/* @__PURE__ */ (0,
|
|
3771
|
-
/* @__PURE__ */ (0,
|
|
3815
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("line", { x1: "5", y1: "5", x2: "15", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
|
|
3816
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("line", { x1: "15", y1: "5", x2: "5", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })
|
|
3772
3817
|
]
|
|
3773
3818
|
}
|
|
3774
3819
|
);
|
|
3775
3820
|
}
|
|
3776
3821
|
function SearchClearIcon2() {
|
|
3777
|
-
return /* @__PURE__ */ (0,
|
|
3822
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3778
3823
|
"svg",
|
|
3779
3824
|
{
|
|
3780
3825
|
width: "16",
|
|
@@ -3783,13 +3828,13 @@ function SearchClearIcon2() {
|
|
|
3783
3828
|
fill: "currentColor",
|
|
3784
3829
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3785
3830
|
"aria-hidden": "true",
|
|
3786
|
-
children: /* @__PURE__ */ (0,
|
|
3831
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("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" })
|
|
3787
3832
|
}
|
|
3788
3833
|
);
|
|
3789
3834
|
}
|
|
3790
3835
|
|
|
3791
3836
|
// src/components/MultiStepBundle.tsx
|
|
3792
|
-
var
|
|
3837
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
3793
3838
|
function ruleFor4(bundle, productId, variantId) {
|
|
3794
3839
|
if (variantId) {
|
|
3795
3840
|
const vRule = bundle.variantRules[variantId];
|
|
@@ -4088,9 +4133,9 @@ function MultiStepBundle(props) {
|
|
|
4088
4133
|
}
|
|
4089
4134
|
}, [bundle, selections, valid, onAddToCart, onError, trackAddToCart, totalQuantity, steps]);
|
|
4090
4135
|
if (result.status === "loading") {
|
|
4091
|
-
return /* @__PURE__ */ (0,
|
|
4092
|
-
/* @__PURE__ */ (0,
|
|
4093
|
-
/* @__PURE__ */ (0,
|
|
4136
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: `lb-bundle lb-bundle--loading ${className ?? ""}`, children: [
|
|
4137
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "lb-skeleton lb-skeleton--title" }),
|
|
4138
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "lb-skeleton lb-skeleton--products" })
|
|
4094
4139
|
] });
|
|
4095
4140
|
}
|
|
4096
4141
|
if (result.status === "error") return null;
|
|
@@ -4111,7 +4156,7 @@ function MultiStepBundle(props) {
|
|
|
4111
4156
|
if (requiredBlocked) return null;
|
|
4112
4157
|
const currency = bundle.products[0]?.priceRange.minVariantPrice.currencyCode ?? "USD";
|
|
4113
4158
|
const ctaLabel = addingToCart ? "Adding..." : bundle.widgetConfig.cta.ctaText || "Add to cart";
|
|
4114
|
-
return /* @__PURE__ */ (0,
|
|
4159
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
4115
4160
|
"div",
|
|
4116
4161
|
{
|
|
4117
4162
|
ref: (el) => {
|
|
@@ -4123,19 +4168,19 @@ function MultiStepBundle(props) {
|
|
|
4123
4168
|
"aria-label": bundle.title,
|
|
4124
4169
|
"data-required-quantity": totalMin,
|
|
4125
4170
|
children: [
|
|
4126
|
-
/* @__PURE__ */ (0,
|
|
4127
|
-
/* @__PURE__ */ (0,
|
|
4128
|
-
bundle.description && /* @__PURE__ */ (0,
|
|
4171
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "lb-bundle-header", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "lb-bundle-header__content", children: [
|
|
4172
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("h3", { className: "lb-bundle-title", children: bundle.title }),
|
|
4173
|
+
bundle.description && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("p", { className: "lb-bundle-subtitle", children: bundle.description })
|
|
4129
4174
|
] }) }),
|
|
4130
|
-
/* @__PURE__ */ (0,
|
|
4175
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
4131
4176
|
BundleCountdown,
|
|
4132
4177
|
{
|
|
4133
4178
|
endsAt: bundle.endsAt,
|
|
4134
4179
|
widgetConfig: bundle.widgetConfig
|
|
4135
4180
|
}
|
|
4136
4181
|
),
|
|
4137
|
-
/* @__PURE__ */ (0,
|
|
4138
|
-
/* @__PURE__ */ (0,
|
|
4182
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "lb-mix-match__progress", "data-progress": true, children: [
|
|
4183
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
4139
4184
|
"div",
|
|
4140
4185
|
{
|
|
4141
4186
|
className: "lb-mix-match__progress-segments",
|
|
@@ -4143,7 +4188,7 @@ function MultiStepBundle(props) {
|
|
|
4143
4188
|
"aria-valuenow": completedSteps,
|
|
4144
4189
|
"aria-valuemin": 0,
|
|
4145
4190
|
"aria-valuemax": steps.length,
|
|
4146
|
-
children: Array.from({ length: steps.length }).map((_, i) => /* @__PURE__ */ (0,
|
|
4191
|
+
children: Array.from({ length: steps.length }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
4147
4192
|
"span",
|
|
4148
4193
|
{
|
|
4149
4194
|
className: `lb-mix-match__progress-segment${i < completedSteps ? " lb-mix-match__progress-segment--filled" : ""}`,
|
|
@@ -4153,8 +4198,8 @@ function MultiStepBundle(props) {
|
|
|
4153
4198
|
))
|
|
4154
4199
|
}
|
|
4155
4200
|
),
|
|
4156
|
-
/* @__PURE__ */ (0,
|
|
4157
|
-
/* @__PURE__ */ (0,
|
|
4201
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "lb-mix-match__progress-labels", children: [
|
|
4202
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
4158
4203
|
"span",
|
|
4159
4204
|
{
|
|
4160
4205
|
className: "lb-mix-match__progress-count",
|
|
@@ -4163,7 +4208,7 @@ function MultiStepBundle(props) {
|
|
|
4163
4208
|
children: `${completedSteps} of ${steps.length} steps completed`
|
|
4164
4209
|
}
|
|
4165
4210
|
),
|
|
4166
|
-
/* @__PURE__ */ (0,
|
|
4211
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
4167
4212
|
"span",
|
|
4168
4213
|
{
|
|
4169
4214
|
className: "lb-mix-match__progress-remaining",
|
|
@@ -4174,8 +4219,8 @@ function MultiStepBundle(props) {
|
|
|
4174
4219
|
)
|
|
4175
4220
|
] })
|
|
4176
4221
|
] }),
|
|
4177
|
-
/* @__PURE__ */ (0,
|
|
4178
|
-
i === firstUnsatisfied && /* @__PURE__ */ (0,
|
|
4222
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "lb-multi-step__groups", "data-step-groups": true, children: steps.map((step, i) => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_react16.Fragment, { children: [
|
|
4223
|
+
i === firstUnsatisfied && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
4179
4224
|
"button",
|
|
4180
4225
|
{
|
|
4181
4226
|
type: "button",
|
|
@@ -4184,28 +4229,28 @@ function MultiStepBundle(props) {
|
|
|
4184
4229
|
"aria-label": `${anyPicks ? "Continue building" : "Choose your products"}: ${step.name}`,
|
|
4185
4230
|
onClick: () => setPickerOpenAt(firstUnsatisfied),
|
|
4186
4231
|
children: [
|
|
4187
|
-
/* @__PURE__ */ (0,
|
|
4232
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
4188
4233
|
"span",
|
|
4189
4234
|
{
|
|
4190
4235
|
className: "lb-mix-match__add-product-icon",
|
|
4191
4236
|
"aria-hidden": "true",
|
|
4192
|
-
children: /* @__PURE__ */ (0,
|
|
4237
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(PlusIcon2, {})
|
|
4193
4238
|
}
|
|
4194
4239
|
),
|
|
4195
|
-
/* @__PURE__ */ (0,
|
|
4196
|
-
/* @__PURE__ */ (0,
|
|
4197
|
-
/* @__PURE__ */ (0,
|
|
4240
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { className: "lb-multi-step__door-copy", children: [
|
|
4241
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "lb-mix-match__add-product-label", children: anyPicks ? "Continue building" : "Choose your products" }),
|
|
4242
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "lb-multi-step__door-sub", children: anyPicks ? `${remainingSteps} ${remainingSteps === 1 ? "step" : "steps"} to go` : `${steps.length} quick ${steps.length === 1 ? "step" : "steps"}` })
|
|
4198
4243
|
] })
|
|
4199
4244
|
]
|
|
4200
4245
|
}
|
|
4201
4246
|
),
|
|
4202
|
-
(selections[i] ?? []).length === 0 ? /* @__PURE__ */ (0,
|
|
4247
|
+
(selections[i] ?? []).length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
4203
4248
|
"section",
|
|
4204
4249
|
{
|
|
4205
4250
|
className: "lb-multi-step__group",
|
|
4206
4251
|
"data-step-group": i,
|
|
4207
4252
|
"data-step-mode": "row",
|
|
4208
|
-
children: /* @__PURE__ */ (0,
|
|
4253
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
4209
4254
|
"button",
|
|
4210
4255
|
{
|
|
4211
4256
|
type: "button",
|
|
@@ -4214,7 +4259,7 @@ function MultiStepBundle(props) {
|
|
|
4214
4259
|
"aria-label": `${step.minQuantity === 1 && step.maxQuantity === 1 ? "Choose a product" : "Choose products"}: ${step.name}`,
|
|
4215
4260
|
onClick: () => setPickerOpenAt(i),
|
|
4216
4261
|
children: [
|
|
4217
|
-
/* @__PURE__ */ (0,
|
|
4262
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
4218
4263
|
"span",
|
|
4219
4264
|
{
|
|
4220
4265
|
className: "lb-multi-step__step-ix",
|
|
@@ -4222,8 +4267,8 @@ function MultiStepBundle(props) {
|
|
|
4222
4267
|
children: i + 1
|
|
4223
4268
|
}
|
|
4224
4269
|
),
|
|
4225
|
-
/* @__PURE__ */ (0,
|
|
4226
|
-
/* @__PURE__ */ (0,
|
|
4270
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "lb-multi-step__group-name", children: step.name }),
|
|
4271
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
4227
4272
|
"span",
|
|
4228
4273
|
{
|
|
4229
4274
|
className: `lb-multi-step__group-count${stepSatisfied(i) ? " lb-multi-step__group-count--met" : ""}`,
|
|
@@ -4235,16 +4280,16 @@ function MultiStepBundle(props) {
|
|
|
4235
4280
|
}
|
|
4236
4281
|
)
|
|
4237
4282
|
}
|
|
4238
|
-
) : /* @__PURE__ */ (0,
|
|
4283
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
4239
4284
|
"section",
|
|
4240
4285
|
{
|
|
4241
4286
|
className: "lb-multi-step__group",
|
|
4242
4287
|
"data-step-group": i,
|
|
4243
4288
|
"data-step-mode": "open",
|
|
4244
4289
|
children: [
|
|
4245
|
-
/* @__PURE__ */ (0,
|
|
4246
|
-
/* @__PURE__ */ (0,
|
|
4247
|
-
/* @__PURE__ */ (0,
|
|
4290
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "lb-multi-step__group-heading", children: [
|
|
4291
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "lb-multi-step__group-name", children: step.name }),
|
|
4292
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
4248
4293
|
"span",
|
|
4249
4294
|
{
|
|
4250
4295
|
className: `lb-multi-step__group-count${stepSatisfied(i) ? " lb-multi-step__group-count--met" : ""}`,
|
|
@@ -4253,7 +4298,7 @@ function MultiStepBundle(props) {
|
|
|
4253
4298
|
}
|
|
4254
4299
|
)
|
|
4255
4300
|
] }),
|
|
4256
|
-
/* @__PURE__ */ (0,
|
|
4301
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
4257
4302
|
"div",
|
|
4258
4303
|
{
|
|
4259
4304
|
className: "lb-mix-match__slots lb-edge-fade lb-multi-step__group-slots",
|
|
@@ -4263,22 +4308,28 @@ function MultiStepBundle(props) {
|
|
|
4263
4308
|
title button provides the keyboard/AT path (its
|
|
4264
4309
|
activation bubbles here); × stops propagation. */
|
|
4265
4310
|
// 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
|
|
4266
|
-
/* @__PURE__ */ (0,
|
|
4311
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
4267
4312
|
"div",
|
|
4268
4313
|
{
|
|
4269
4314
|
className: "lb-mix-match__slot lb-mix-match__slot--filled",
|
|
4270
4315
|
onClick: () => setPickerOpenAt(i),
|
|
4271
4316
|
children: [
|
|
4272
|
-
|
|
4273
|
-
"
|
|
4317
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
4318
|
+
"div",
|
|
4274
4319
|
{
|
|
4275
|
-
|
|
4276
|
-
|
|
4277
|
-
|
|
4320
|
+
className: item.featuredImage ? "lb-bundle-thumbnail" : placeholderBoxClass("lb-bundle-thumbnail"),
|
|
4321
|
+
children: item.featuredImage ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
4322
|
+
"img",
|
|
4323
|
+
{
|
|
4324
|
+
src: item.featuredImage,
|
|
4325
|
+
alt: item.title,
|
|
4326
|
+
loading: "lazy"
|
|
4327
|
+
}
|
|
4328
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(PlaceholderMark, {})
|
|
4278
4329
|
}
|
|
4279
|
-
)
|
|
4280
|
-
/* @__PURE__ */ (0,
|
|
4281
|
-
/* @__PURE__ */ (0,
|
|
4330
|
+
),
|
|
4331
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "lb-mix-match__filled-info", children: [
|
|
4332
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
4282
4333
|
"button",
|
|
4283
4334
|
{
|
|
4284
4335
|
type: "button",
|
|
@@ -4287,15 +4338,15 @@ function MultiStepBundle(props) {
|
|
|
4287
4338
|
children: item.title
|
|
4288
4339
|
}
|
|
4289
4340
|
),
|
|
4290
|
-
item.variantTitle && item.variantTitle !== "Default Title" && /* @__PURE__ */ (0,
|
|
4291
|
-
/* @__PURE__ */ (0,
|
|
4292
|
-
item.compareAtPrice !== null && item.compareAtPrice > item.price && /* @__PURE__ */ (0,
|
|
4293
|
-
/* @__PURE__ */ (0,
|
|
4294
|
-
/* @__PURE__ */ (0,
|
|
4341
|
+
item.variantTitle && item.variantTitle !== "Default Title" && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "lb-mix-match__filled-variant", children: item.variantTitle }),
|
|
4342
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { className: "lb-mix-match__filled-price", children: [
|
|
4343
|
+
item.compareAtPrice !== null && item.compareAtPrice > item.price && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("s", { className: "lb-mix-match__filled-compare", children: (0, import_core14.formatMoney)(item.compareAtPrice, currency) }),
|
|
4344
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "lb-bundle-product-price", children: (0, import_core14.formatMoney)(item.price, currency) }),
|
|
4345
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "lb-bundle-qty-inline", children: `\xD7${item.quantity}` })
|
|
4295
4346
|
] }),
|
|
4296
|
-
item.unitPrice && /* @__PURE__ */ (0,
|
|
4347
|
+
item.unitPrice && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "lb-bundle-product-unit-price", children: item.unitPrice })
|
|
4297
4348
|
] }),
|
|
4298
|
-
canRemoveItem2(bundle, selections, item) ? /* @__PURE__ */ (0,
|
|
4349
|
+
canRemoveItem2(bundle, selections, item) ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
4299
4350
|
"button",
|
|
4300
4351
|
{
|
|
4301
4352
|
type: "button",
|
|
@@ -4305,13 +4356,13 @@ function MultiStepBundle(props) {
|
|
|
4305
4356
|
e.stopPropagation();
|
|
4306
4357
|
removeSlot(i, index);
|
|
4307
4358
|
},
|
|
4308
|
-
children: /* @__PURE__ */ (0,
|
|
4359
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(CloseIcon4, {})
|
|
4309
4360
|
}
|
|
4310
4361
|
) : (
|
|
4311
4362
|
/* Required pick at its floor — quiet state chip instead
|
|
4312
4363
|
of the ×; removal returns once another slot covers
|
|
4313
4364
|
the product's minimum (variant swap flow). */
|
|
4314
|
-
/* @__PURE__ */ (0,
|
|
4365
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "lb-mix-match__slot-required", children: "Required" })
|
|
4315
4366
|
)
|
|
4316
4367
|
]
|
|
4317
4368
|
},
|
|
@@ -4324,29 +4375,29 @@ function MultiStepBundle(props) {
|
|
|
4324
4375
|
}
|
|
4325
4376
|
)
|
|
4326
4377
|
] }, i)) }),
|
|
4327
|
-
/* @__PURE__ */ (0,
|
|
4328
|
-
allSatisfied && /* @__PURE__ */ (0,
|
|
4329
|
-
/* @__PURE__ */ (0,
|
|
4330
|
-
/* @__PURE__ */ (0,
|
|
4331
|
-
bundle.widgetConfig.savingsBar.visible && summary.savings > 0 && /* @__PURE__ */ (0,
|
|
4378
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "lb-bundle-divider" }),
|
|
4379
|
+
allSatisfied && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "lb-bundle-summary", "data-pricing-section": true, children: [
|
|
4380
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "lb-bundle-summary__text", children: [
|
|
4381
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "lb-bundle-summary__label", children: "Bundle total" }),
|
|
4382
|
+
bundle.widgetConfig.savingsBar.visible && summary.savings > 0 && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("p", { className: "lb-bundle-savings-line", "data-savings-bar": true, children: [
|
|
4332
4383
|
"You save",
|
|
4333
4384
|
" ",
|
|
4334
|
-
/* @__PURE__ */ (0,
|
|
4385
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { "data-savings-amount": true, children: (0, import_core14.formatMoney)(summary.savings, currency) }),
|
|
4335
4386
|
" ",
|
|
4336
|
-
/* @__PURE__ */ (0,
|
|
4387
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { "data-savings-percent": true, children: [
|
|
4337
4388
|
"(",
|
|
4338
4389
|
summary.savingsPercent,
|
|
4339
4390
|
"%)"
|
|
4340
4391
|
] })
|
|
4341
4392
|
] })
|
|
4342
4393
|
] }),
|
|
4343
|
-
/* @__PURE__ */ (0,
|
|
4344
|
-
bundle.widgetConfig.pricing.showComparePrice && summary.savings > 0 && /* @__PURE__ */ (0,
|
|
4345
|
-
/* @__PURE__ */ (0,
|
|
4394
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { className: "lb-bundle-summary__prices", children: [
|
|
4395
|
+
bundle.widgetConfig.pricing.showComparePrice && summary.savings > 0 && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "lb-bundle-compare-price", "data-compare-price": true, children: (0, import_core14.formatMoney)(summary.comparePrice, currency) }),
|
|
4396
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "lb-bundle-sale-price", "data-sale-price": true, children: (0, import_core14.formatMoney)(summary.salePrice, currency) })
|
|
4346
4397
|
] })
|
|
4347
4398
|
] }),
|
|
4348
|
-
cartError && /* @__PURE__ */ (0,
|
|
4349
|
-
/* @__PURE__ */ (0,
|
|
4399
|
+
cartError && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("p", { className: "lb-bundle__error", role: "alert", children: cartError }),
|
|
4400
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
4350
4401
|
"button",
|
|
4351
4402
|
{
|
|
4352
4403
|
className: "lb-bundle__cta",
|
|
@@ -4356,7 +4407,7 @@ function MultiStepBundle(props) {
|
|
|
4356
4407
|
children: ctaLabel
|
|
4357
4408
|
}
|
|
4358
4409
|
),
|
|
4359
|
-
pickerOpenAt !== null && /* @__PURE__ */ (0,
|
|
4410
|
+
pickerOpenAt !== null && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
4360
4411
|
MultiStepPicker,
|
|
4361
4412
|
{
|
|
4362
4413
|
bundle,
|
|
@@ -4391,7 +4442,7 @@ function stepHasInStockProduct(bundle, stepIndex) {
|
|
|
4391
4442
|
});
|
|
4392
4443
|
}
|
|
4393
4444
|
function PlusIcon2() {
|
|
4394
|
-
return /* @__PURE__ */ (0,
|
|
4445
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
4395
4446
|
"svg",
|
|
4396
4447
|
{
|
|
4397
4448
|
width: "18",
|
|
@@ -4401,14 +4452,14 @@ function PlusIcon2() {
|
|
|
4401
4452
|
xmlns: "http://www.w3.org/2000/svg",
|
|
4402
4453
|
"aria-hidden": "true",
|
|
4403
4454
|
children: [
|
|
4404
|
-
/* @__PURE__ */ (0,
|
|
4405
|
-
/* @__PURE__ */ (0,
|
|
4455
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("line", { x1: "9", y1: "3", x2: "9", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
|
|
4456
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("line", { x1: "3", y1: "9", x2: "15", y2: "9", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })
|
|
4406
4457
|
]
|
|
4407
4458
|
}
|
|
4408
4459
|
);
|
|
4409
4460
|
}
|
|
4410
4461
|
function CloseIcon4() {
|
|
4411
|
-
return /* @__PURE__ */ (0,
|
|
4462
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
4412
4463
|
"svg",
|
|
4413
4464
|
{
|
|
4414
4465
|
width: "16",
|
|
@@ -4418,8 +4469,8 @@ function CloseIcon4() {
|
|
|
4418
4469
|
xmlns: "http://www.w3.org/2000/svg",
|
|
4419
4470
|
"aria-hidden": "true",
|
|
4420
4471
|
children: [
|
|
4421
|
-
/* @__PURE__ */ (0,
|
|
4422
|
-
/* @__PURE__ */ (0,
|
|
4472
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("line", { x1: "5", y1: "5", x2: "15", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
|
|
4473
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("line", { x1: "15", y1: "5", x2: "5", y2: "15", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })
|
|
4423
4474
|
]
|
|
4424
4475
|
}
|
|
4425
4476
|
);
|
|
@@ -4505,6 +4556,7 @@ var import_core17 = require("@lime-bundles/core");
|
|
|
4505
4556
|
VolumeBundle,
|
|
4506
4557
|
WIDGET_CONFIG_DEFAULTS,
|
|
4507
4558
|
applyWidgetConfigVars,
|
|
4559
|
+
bundleSaleCents,
|
|
4508
4560
|
calculateDiscount,
|
|
4509
4561
|
calculateTierSavings,
|
|
4510
4562
|
computeBundleSaleCents,
|