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