@best-bundles/bundle-ui 0.0.26 → 0.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +240 -240
- package/dist/liquid/bundle-ui.iife.css +1 -1
- package/dist/liquid/bundle-ui.iife.js +11 -11
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode('._button_18rtl_1{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:var(--bb-font-family, inherit);border:1px solid var(--bb-button-border, rgba(0, 0, 0, .12));background:var(--bb-button-bg, #111827);color:var(--bb-button-text, #ffffff);font:inherit;line-height:1;padding:10px 14px;border-radius:var(--bb-button-radius, 10px);cursor:pointer;transition:transform .12s ease,background .12s ease,border-color .12s ease,opacity .12s ease}._button_18rtl_1:hover{background:var(--bb-button-bg-hover, #0b1220)}._button_18rtl_1:active{transform:translateY(1px)}._button_18rtl_1:disabled{opacity:.6;cursor:not-allowed}._button_18rtl_1:focus-visible{outline:2px solid var(--bb-focus-ring, #2563eb);outline-offset:2px}._backdrop_227w4_1{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--bb-backdrop-z-index, 9999);display:flex;justify-content:flex-end;background:var(--bb-backdrop-bg, rgba(0, 0, 0, .5));-webkit-backdrop-filter:blur(var(--bb-backdrop-blur, 2px));backdrop-filter:blur(var(--bb-backdrop-blur, 2px));padding:var(--bb-backdrop-padding, 12px);opacity:0;transition:opacity var(--bb-drawer-transition-duration, .22s) ease}._celebrationOverlay_227w4_14{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;pointer-events:none;z-index:50}._celebrationChip_227w4_23{font-family:var(--bb-font-family-body, "Cabin", system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif);letter-spacing:.03em;font-size:18px;line-height:1;padding:12px 16px;border-radius:999px;color:var(--bb-celebration-text, #0b1b44);background:linear-gradient(180deg,var(--bb-celebration-bg-top, #ffffff),var(--bb-celebration-bg-bottom, #bae6fd));border:2px solid var(--bb-celebration-border, rgba(37, 99, 235, .28));box-shadow:0 18px 55px #0006,0 10px 28px #2563eb33,inset 0 1px #ffffffbf;transform-origin:50% 60%;will-change:transform,opacity,filter;animation:_bbCelebrationPop_227w4_1 2.8s cubic-bezier(.16,1,.3,1) forwards;filter:saturate(1.05)}@keyframes _bbCelebrationPop_227w4_1{0%{opacity:0;transform:translateY(10px) scale(.6);filter:blur(1px) saturate(1.1)}12%{opacity:1;transform:translateY(0) scale(1.12);filter:blur(0px) saturate(1.1)}22%{opacity:1;transform:translateY(0) scale(1)}80%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-10px) scale(.98)}}._backdropOpen_227w4_74{opacity:1}._backdropClosed_227w4_78{opacity:0}._panel_227w4_82{width:440px;max-width:100%;height:100%;background:var(--bb-surface-bg, #ffffff);color:var(--bb-text-color, #111827);font-family:var(--bb-font-family-body, "Cabin", system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif);border-radius:var(--bb-panel-radius, 16px);box-shadow:0 20px 60px #00000059;display:grid;grid-template-rows:auto 1fr auto;overflow:hidden;outline:none;position:relative;top:unset;right:unset;bottom:unset;left:unset}._panelOpen_227w4_102{animation:_bbSlideInFromRight_227w4_1 var(--bb-drawer-transition-duration, .22s) ease forwards}._panelClosed_227w4_106{animation:_bbSlideOutToRight_227w4_1 var(--bb-drawer-transition-duration, .22s) ease forwards}@keyframes _bbSlideInFromRight_227w4_1{0%{transform:translate(110%)}to{transform:translate(0)}}@keyframes _bbSlideOutToRight_227w4_1{0%{transform:translate(0)}to{transform:translate(110%)}}@media(prefers-reduced-motion:reduce){._backdrop_227w4_1{transition:none}._celebrationChip_227w4_23,._panelOpen_227w4_102,._panelClosed_227w4_106{animation:none}}._header_227w4_145{display:grid;grid-template-columns:36px 1fr 36px;align-items:center;column-gap:12px;padding:var(--bb-header-padding, 16px 16px 12px 16px);border-bottom:1px solid var(--bb-border-color, rgba(17, 24, 39, .08))}._headerCenter_227w4_154{position:relative;min-width:0;display:flex;justify-content:center;align-items:center}._title_227w4_162{font-size:24px;margin:0;line-height:1.2;font-family:var(--bb-font-family-title, "Bebas Neue", "Cabin", system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif);letter-spacing:.02em;color:var(--bb-title-color, var(--bb-text-color, #111827))}._searchIconButton_227w4_171{width:36px;height:36px;border-radius:10px;border:1px solid var(--bb-border-strong-color, rgba(17, 24, 39, .12));background:var(--bb-surface-bg, #ffffff);color:var(--bb-text-color, #111827);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}._searchIconButton_227w4_171:hover{background:var(--bb-control-bg-hover, rgba(17, 24, 39, .04))}._searchIconButton_227w4_171:focus-visible{outline:2px solid var(--bb-focus-ring, #2563eb);outline-offset:2px}._headerTitleWrap_227w4_193{transition:opacity .18s ease,transform .22s ease}._headerSearchWrap_227w4_197{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;pointer-events:none;opacity:0;transform:translateY(-2px);transition:opacity .18s ease,transform .22s ease}._headerSearchOpen_227w4_209 ._headerTitleWrap_227w4_193{opacity:0;transform:translateY(2px);pointer-events:none}._headerSearchOpen_227w4_209 ._headerSearchWrap_227w4_197{opacity:1;transform:translateY(0);pointer-events:auto}._searchBar_227w4_221{width:min(320px,100%);height:36px;display:flex;align-items:center;gap:8px;background:var(--bb-surface-bg, #ffffff);border:1px solid var(--bb-border-strong-color, rgba(17, 24, 39, .12));border-radius:10px;padding:0 8px}._searchInput_227w4_233{width:100%;border:none;outline:none;background:transparent;font:inherit;font-size:14px;min-width:0;height:100%;line-height:36px;padding:0}._searchInput_227w4_233::-webkit-search-cancel-button,._searchInput_227w4_233::-webkit-search-decoration,._searchInput_227w4_233::-webkit-search-results-button,._searchInput_227w4_233::-webkit-search-results-decoration{-webkit-appearance:none;-moz-appearance:none;appearance:none}._searchClearButton_227w4_254{border:none;background:transparent;color:var(--bb-text-color, #111827);font:inherit;font-size:13px;font-weight:700;cursor:pointer;padding:6px;border-radius:10px;line-height:1}._searchClearButton_227w4_254:hover{background:var(--bb-control-bg-hover, rgba(17, 24, 39, .04))}._searchClearButton_227w4_254:focus-visible{outline:2px solid var(--bb-focus-ring, #2563eb);outline-offset:2px}._closeButton_227w4_276{border:1px solid var(--bb-border-strong-color, rgba(17, 24, 39, .12));background:var(--bb-surface-bg, #ffffff);color:var(--bb-text-color, #111827);width:36px;height:36px;border-radius:10px;cursor:pointer;flex:0 0 auto}._closeButton_227w4_276:hover{background:var(--bb-control-bg-hover, rgba(17, 24, 39, .04))}._closeButton_227w4_276:disabled{opacity:.6;cursor:not-allowed}._closeButton_227w4_276:focus-visible{outline:2px solid var(--bb-focus-ring, #2563eb);outline-offset:2px}@media(prefers-reduced-motion:reduce){._headerTitleWrap_227w4_193,._headerSearchWrap_227w4_197{transition:none}}._body_227w4_309{padding:var(--bb-body-padding, 8px 16px);overflow:auto}._muted_227w4_314{color:var(--bb-muted-strong-color, rgba(17, 24, 39, .65));margin:0 0 12px}._error_227w4_319{color:var(--bb-error-color, #b91c1c);margin:0 0 12px}._variants_227w4_324{margin-top:4px}._variantList_227w4_328{list-style:none;padding:0;margin:0;display:grid;gap:10px}._variantRow_227w4_336{display:grid;grid-template-columns:1fr auto;gap:0px;align-items:stretch;padding:5px}._variantLeft_227w4_344{min-width:0;display:flex;gap:12px;align-items:center}._addToBundleButton_227w4_351{height:100%;align-self:stretch;border-radius:12px;border:none;background:var(--bb-cta-bg, #91aae5);color:var(--bb-cta-text, #ffffff);font:inherit;font-weight:800;padding:0 16px;cursor:pointer;white-space:nowrap}._addToBundleButton_227w4_351:hover{background:var(--bb-cta-bg-hover, #1d4ed8)}._addToBundleButton_227w4_351:disabled{opacity:.6;cursor:not-allowed}._addToBundleButton_227w4_351:focus-visible{outline:2px solid var(--bb-focus-ring, #2563eb);outline-offset:2px}._variantThumb_227w4_379{width:60px;height:60px;border-radius:12px;overflow:hidden;border:1px solid var(--bb-border-color, rgba(17, 24, 39, .08));background:var(--bb-surface-subtle-bg, rgba(17, 24, 39, .02));flex:0 0 auto}._variantThumbImg_227w4_389{width:100%;height:100%;object-fit:cover;display:block}._variantThumbFallback_227w4_396{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-weight:800;color:var(--bb-text-color, #111827)}._variantInfo_227w4_406{min-width:0}._variantName_227w4_410{font-size:14px;font-weight:600;margin-bottom:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._variantMeta_227w4_419{font-size:12px;color:var(--bb-muted-color, rgba(17, 24, 39, .6));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._variantPriceRow_227w4_427{display:flex;align-items:baseline;gap:8px;margin-top:4px}._variantCompareAt_227w4_434{font-size:12px;color:var(--bb-muted-color, rgba(17, 24, 39, .6));text-decoration:line-through}._variantPrice_227w4_427{font-size:13px;font-weight:800}._qtyControls_227w4_445{display:inline-flex;align-items:center;gap:6px}._qtyButton_227w4_451{width:34px;height:34px;border-radius:10px;border:1px solid var(--bb-border-strong-color, rgba(17, 24, 39, .12));background:var(--bb-surface-bg, #ffffff);cursor:pointer;line-height:1;font-size:16px}._qtyButton_227w4_451:hover{background:var(--bb-control-bg-hover, rgba(17, 24, 39, .04))}._qtyButton_227w4_451:disabled{opacity:.6;cursor:not-allowed}._qtyButton_227w4_451:focus-visible{outline:2px solid var(--bb-focus-ring, #2563eb);outline-offset:2px}._qtyValue_227w4_476{min-width:18px;text-align:center;font-variant-numeric:tabular-nums;font-weight:700}._footer_227w4_483{padding:var(--bb-footer-padding, 12px 16px 16px 16px);border-top:1px solid var(--bb-border-color, rgba(17, 24, 39, .08));background:var(--bb-surface-bg, #ffffff);position:relative}._poweredBy_227w4_490{font-size:10px;color:var(rgba(17, 24, 39, .6));text-align:center;margin-top:10px}._poweredBy_227w4_490 a{color:inherit;text-decoration:none}._boxSummaryWindow_227w4_502{margin-bottom:6px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;padding-bottom:6px;scrollbar-width:none;-ms-overflow-style:none}._boxSummaryWindow_227w4_502::-webkit-scrollbar{display:none}._boxSummaryRow_227w4_519{--bb-box-gap: 10px;display:flex;align-items:flex-start;gap:var(--bb-box-gap);width:100%}._boxSlot_227w4_527{flex:0 0 calc((100% - (4 * var(--bb-box-gap))) / 5);display:flex;flex-direction:column;align-items:stretch;gap:6px}._boxItem_227w4_535{width:100%;aspect-ratio:1 / 1;border-radius:12px;position:relative;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;box-sizing:border-box}._boxItemClickable_227w4_547{cursor:pointer}._boxItemClickable_227w4_547:focus-visible{outline:2px solid var(--bb-focus-ring, #2563eb);outline-offset:2px}._boxThresholdLabel_227w4_556{font-size:11px;line-height:1.15;font-weight:700;color:var(--bb-muted-strong-color, rgba(17, 24, 39, .65));text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._boxItemPlaceholder_227w4_567{border:1px dashed var(--bb-border-strong-color, rgba(17, 24, 39, .18));background:var(--bb-surface-subtle-bg, rgba(17, 24, 39, .02));color:var(--bb-muted-color, rgba(17, 24, 39, .6))}._boxItemFilled_227w4_573{border:1px solid var(--bb-border-color, rgba(17, 24, 39, .08));background:var(--bb-surface-bg, #ffffff);overflow:hidden}._boxItemThreshold_227w4_579{border-style:solid;border-width:2px;border-color:var(--bb-tier-border, rgba(37, 99, 235, .55));background:var(--bb-tier-bg, rgba(37, 99, 235, .08));color:var(--bb-tier-text, rgba(29, 78, 216, .95))}._boxItemDiscountText_227w4_587{font-size:12px;font-weight:800;text-align:center;line-height:1.1;padding:6px}._boxItemPlus_227w4_595{font-size:22px;font-weight:700;opacity:.5;line-height:1}._boxItemImage_227w4_602{width:100%;height:100%;object-fit:cover;display:block}._boxItemFallback_227w4_609{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--bb-surface-subtle-bg, rgba(17, 24, 39, .04));color:var(--bb-text-color, #111827);font-weight:800}._ctaButtonGroup_227w4_620{display:flex;gap:8px;width:100%;transition:gap .3s cubic-bezier(.4,0,.2,1)}._ctaButtonGroupAnimating_227w4_627{gap:0}._cta_227w4_620{width:100%;border:1px solid var(--bb-cta-border, rgba(0, 0, 0, .12));background:var(--bb-cta-bg, #2563eb);color:var(--bb-cta-text, #ffffff);font:inherit;font-weight:700;padding:12px 14px;border-radius:12px;cursor:pointer}._ctaSecondary_227w4_643{width:100%;border:2px solid var(--bb-cta-bg, #2563eb);background:transparent;color:var(--bb-cta-bg, #2563eb);font:inherit;font-weight:700;padding:10px 14px;border-radius:12px;cursor:pointer}._ctaDualLeft_227w4_655{width:100%;border:2px solid var(--bb-cta-bg, #2563eb);background:transparent;color:var(--bb-cta-bg, #2563eb);font:inherit;font-weight:700;padding:10px 14px;border-radius:12px;cursor:pointer;transition:border-radius .3s cubic-bezier(.4,0,.2,1),background .3s cubic-bezier(.4,0,.2,1),color .3s cubic-bezier(.4,0,.2,1),border-right-width .3s cubic-bezier(.4,0,.2,1),opacity .3s cubic-bezier(.4,0,.2,1)}._ctaDualLeftAnimating_227w4_673{border-top-right-radius:0;border-bottom-right-radius:0;border-right-width:0;background:var(--bb-cta-bg, #2563eb);opacity:.6;color:var(--bb-cta-text, #ffffff)}._ctaDualLeftAnimating_227w4_673>span{opacity:0}._ctaDualRight_227w4_686{width:100%;border:1px solid var(--bb-cta-border, rgba(0, 0, 0, .12));background:var(--bb-cta-bg, #2563eb);color:var(--bb-cta-text, #ffffff);font:inherit;font-weight:700;padding:12px 14px;border-radius:12px;cursor:pointer;transition:border-radius .3s cubic-bezier(.4,0,.2,1),border-left-width .3s cubic-bezier(.4,0,.2,1),opacity .3s cubic-bezier(.4,0,.2,1)}._ctaDualRightAnimating_227w4_702{border-top-left-radius:0;border-bottom-left-radius:0;border-left-width:0;opacity:.6}._ctaDualRightAnimating_227w4_702>span{opacity:0}._ctaTotals_227w4_713{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-variant-numeric:tabular-nums}._ctaDiscountBadge_227w4_721{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;font-size:12px;font-weight:800;background:linear-gradient(180deg,#2563eb24,#2563eb0f);border:1px solid rgba(37,99,235,.3);color:#1d4ed8f2;white-space:nowrap}._ctaTotalsWrap_227w4_735{overflow:hidden;max-height:0;opacity:0;transform:translateY(4px);margin-bottom:0;transition:max-height .22s ease,opacity .16s ease,transform .22s ease,margin-bottom .22s ease}._ctaTotalsWrapVisible_227w4_748{max-height:40px;opacity:1;transform:translateY(0);margin-bottom:8px}._ctaTotalsStrike_227w4_755{opacity:.85;text-decoration:line-through;font-weight:700;color:var(--bb-muted-strong-color, rgba(17, 24, 39, .65))}._ctaTotalsPrice_227w4_762{font-weight:900;color:var(--bb-text-color, #111827)}@media(prefers-reduced-motion:reduce){._ctaTotalsWrap_227w4_735{transition:none}}._cta_227w4_620:hover{background:var(--bb-cta-bg-hover, #1d4ed8)}._cta_227w4_620:disabled{opacity:.6;cursor:not-allowed}._cta_227w4_620:focus-visible{outline:2px solid var(--bb-cta-focus-ring, var(--bb-text-color, #111827));outline-offset:2px}._ctaSecondary_227w4_643:hover{background:var(--bb-cta-bg, #2563eb);color:var(--bb-cta-text, #ffffff)}._ctaSecondary_227w4_643:disabled{opacity:.6;cursor:not-allowed}._ctaSecondary_227w4_643:focus-visible{outline:2px solid var(--bb-cta-focus-ring, var(--bb-text-color, #111827));outline-offset:2px}._ctaDualLeft_227w4_655:hover{background:var(--bb-cta-bg, #2563eb);color:var(--bb-cta-text, #ffffff)}._ctaDualLeft_227w4_655:disabled{opacity:.6;cursor:not-allowed}._ctaDualLeft_227w4_655:focus-visible{outline:2px solid var(--bb-cta-focus-ring, var(--bb-text-color, #111827));outline-offset:2px}._ctaDualRight_227w4_686:hover{background:var(--bb-cta-bg-hover, #1d4ed8)}._ctaDualRight_227w4_686:disabled{opacity:.6;cursor:not-allowed}._ctaDualRight_227w4_686:focus-visible{outline:2px solid var(--bb-cta-focus-ring, var(--bb-text-color, #111827));outline-offset:2px}._helperText_227w4_831{margin-top:8px;font-size:12px;color:var(--bb-muted-strong-color, rgba(17, 24, 39, .65));text-align:center}@media(max-width:767px){._backdrop_227w4_1{padding:0;justify-content:stretch}._panel_227w4_82{width:100%;height:100%;border-radius:0}}')),document.head.appendChild(e)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})();
|
|
1
|
+
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode('._button_18rtl_1{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:var(--bb-font-family, inherit);border:1px solid var(--bb-button-border, rgba(0, 0, 0, .12));background:var(--bb-button-bg, #111827);color:var(--bb-button-text, #ffffff);font:inherit;line-height:1;padding:10px 14px;border-radius:var(--bb-button-radius, 10px);cursor:pointer;transition:transform .12s ease,background .12s ease,border-color .12s ease,opacity .12s ease}._button_18rtl_1:hover{background:var(--bb-button-bg-hover, #0b1220)}._button_18rtl_1:active{transform:translateY(1px)}._button_18rtl_1:disabled{opacity:.6;cursor:not-allowed}._button_18rtl_1:focus-visible{outline:2px solid var(--bb-focus-ring, #2563eb);outline-offset:2px}._backdrop_s2uuj_1{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--bb-backdrop-z-index, 2147483647);display:flex;justify-content:flex-end;background:var(--bb-backdrop-bg, rgba(0, 0, 0, .5));-webkit-backdrop-filter:blur(var(--bb-backdrop-blur, 2px));backdrop-filter:blur(var(--bb-backdrop-blur, 2px));padding:var(--bb-backdrop-padding, 12px);opacity:0;transition:opacity var(--bb-drawer-transition-duration, .22s) ease}._celebrationOverlay_s2uuj_14{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;pointer-events:none;z-index:50}._celebrationChip_s2uuj_23{font-family:var(--bb-font-family-body, "Cabin", system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif);letter-spacing:.03em;font-size:18px;line-height:1;padding:12px 16px;border-radius:999px;color:var(--bb-celebration-text, #0b1b44);background:linear-gradient(180deg,var(--bb-celebration-bg-top, #ffffff),var(--bb-celebration-bg-bottom, #bae6fd));border:2px solid var(--bb-celebration-border, rgba(37, 99, 235, .28));box-shadow:0 18px 55px #0006,0 10px 28px #2563eb33,inset 0 1px #ffffffbf;transform-origin:50% 60%;will-change:transform,opacity,filter;animation:_bbCelebrationPop_s2uuj_1 2.8s cubic-bezier(.16,1,.3,1) forwards;filter:saturate(1.05)}@keyframes _bbCelebrationPop_s2uuj_1{0%{opacity:0;transform:translateY(10px) scale(.6);filter:blur(1px) saturate(1.1)}12%{opacity:1;transform:translateY(0) scale(1.12);filter:blur(0px) saturate(1.1)}22%{opacity:1;transform:translateY(0) scale(1)}80%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-10px) scale(.98)}}._backdropOpen_s2uuj_74{opacity:1}._backdropClosed_s2uuj_78{opacity:0}._panel_s2uuj_82{width:440px;max-width:100%;height:100%;background:var(--bb-surface-bg, #ffffff);color:var(--bb-text-color, #111827);font-family:var(--bb-font-family-body, "Cabin", system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif);border-radius:var(--bb-panel-radius, 16px);box-shadow:0 20px 60px #00000059;display:grid;grid-template-rows:auto 1fr auto;overflow:hidden;outline:none;position:relative;top:unset;right:unset;bottom:unset;left:unset}._panelOpen_s2uuj_102{animation:_bbSlideInFromRight_s2uuj_1 var(--bb-drawer-transition-duration, .22s) ease forwards}._panelClosed_s2uuj_106{animation:_bbSlideOutToRight_s2uuj_1 var(--bb-drawer-transition-duration, .22s) ease forwards}@keyframes _bbSlideInFromRight_s2uuj_1{0%{transform:translate(110%)}to{transform:translate(0)}}@keyframes _bbSlideOutToRight_s2uuj_1{0%{transform:translate(0)}to{transform:translate(110%)}}@media(prefers-reduced-motion:reduce){._backdrop_s2uuj_1{transition:none}._celebrationChip_s2uuj_23,._panelOpen_s2uuj_102,._panelClosed_s2uuj_106{animation:none}}._header_s2uuj_145{display:grid;grid-template-columns:36px 1fr 36px;align-items:center;column-gap:12px;padding:var(--bb-header-padding, 16px 16px 12px 16px);border-bottom:1px solid var(--bb-border-color, rgba(17, 24, 39, .08))}._headerCenter_s2uuj_154{position:relative;min-width:0;display:flex;justify-content:center;align-items:center}._title_s2uuj_162{font-size:24px;margin:0;line-height:1.2;font-family:var(--bb-font-family-title, "Bebas Neue", "Cabin", system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif);letter-spacing:.02em;color:var(--bb-title-color, var(--bb-text-color, #111827))}._searchIconButton_s2uuj_171{width:36px;height:36px;border-radius:10px;border:1px solid var(--bb-border-strong-color, rgba(17, 24, 39, .12));background:var(--bb-surface-bg, #ffffff);color:var(--bb-text-color, #111827);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}._searchIconButton_s2uuj_171:hover{background:var(--bb-control-bg-hover, rgba(17, 24, 39, .04))}._searchIconButton_s2uuj_171:focus-visible{outline:2px solid var(--bb-focus-ring, #2563eb);outline-offset:2px}._headerTitleWrap_s2uuj_193{transition:opacity .18s ease,transform .22s ease}._headerSearchWrap_s2uuj_197{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;pointer-events:none;opacity:0;transform:translateY(-2px);transition:opacity .18s ease,transform .22s ease}._headerSearchOpen_s2uuj_209 ._headerTitleWrap_s2uuj_193{opacity:0;transform:translateY(2px);pointer-events:none}._headerSearchOpen_s2uuj_209 ._headerSearchWrap_s2uuj_197{opacity:1;transform:translateY(0);pointer-events:auto}._searchBar_s2uuj_221{width:min(320px,100%);height:36px;display:flex;align-items:center;gap:8px;background:var(--bb-surface-bg, #ffffff);border:1px solid var(--bb-border-strong-color, rgba(17, 24, 39, .12));border-radius:10px;padding:0 8px}._searchInput_s2uuj_233{width:100%;border:none;outline:none;background:transparent;font:inherit;font-size:14px;min-width:0;height:100%;line-height:36px;padding:0}._searchInput_s2uuj_233::-webkit-search-cancel-button,._searchInput_s2uuj_233::-webkit-search-decoration,._searchInput_s2uuj_233::-webkit-search-results-button,._searchInput_s2uuj_233::-webkit-search-results-decoration{-webkit-appearance:none;-moz-appearance:none;appearance:none}._searchClearButton_s2uuj_254{border:none;background:transparent;color:var(--bb-text-color, #111827);font:inherit;font-size:13px;font-weight:700;cursor:pointer;padding:6px;border-radius:10px;line-height:1}._searchClearButton_s2uuj_254:hover{background:var(--bb-control-bg-hover, rgba(17, 24, 39, .04))}._searchClearButton_s2uuj_254:focus-visible{outline:2px solid var(--bb-focus-ring, #2563eb);outline-offset:2px}._closeButton_s2uuj_276{border:1px solid var(--bb-border-strong-color, rgba(17, 24, 39, .12));background:var(--bb-surface-bg, #ffffff);color:var(--bb-text-color, #111827);width:36px;height:36px;border-radius:10px;cursor:pointer;flex:0 0 auto}._closeButton_s2uuj_276:hover{background:var(--bb-control-bg-hover, rgba(17, 24, 39, .04))}._closeButton_s2uuj_276:disabled{opacity:.6;cursor:not-allowed}._closeButton_s2uuj_276:focus-visible{outline:2px solid var(--bb-focus-ring, #2563eb);outline-offset:2px}@media(prefers-reduced-motion:reduce){._headerTitleWrap_s2uuj_193,._headerSearchWrap_s2uuj_197{transition:none}}._body_s2uuj_309{padding:var(--bb-body-padding, 8px 16px);overflow:auto}._muted_s2uuj_314{color:var(--bb-muted-strong-color, rgba(17, 24, 39, .65));margin:0 0 12px}._error_s2uuj_319{color:var(--bb-error-color, #b91c1c);margin:0 0 12px}._variants_s2uuj_324{margin-top:4px}._variantList_s2uuj_328{list-style:none;padding:0;margin:0;display:grid;gap:10px}._variantRow_s2uuj_336{display:grid;grid-template-columns:1fr auto;gap:0px;align-items:stretch;padding:5px}._variantLeft_s2uuj_344{min-width:0;display:flex;gap:12px;align-items:center}._addToBundleButton_s2uuj_351{height:100%;align-self:stretch;border-radius:12px;border:none;background:var(--bb-cta-bg, #91aae5);color:var(--bb-cta-text, #ffffff);font:inherit;font-weight:800;padding:0 16px;cursor:pointer;white-space:nowrap}._addToBundleButton_s2uuj_351:hover{background:var(--bb-cta-bg-hover, #1d4ed8)}._addToBundleButton_s2uuj_351:disabled{opacity:.6;cursor:not-allowed}._addToBundleButton_s2uuj_351:focus-visible{outline:2px solid var(--bb-focus-ring, #2563eb);outline-offset:2px}._variantThumb_s2uuj_379{width:60px;height:60px;border-radius:12px;overflow:hidden;border:1px solid var(--bb-border-color, rgba(17, 24, 39, .08));background:var(--bb-surface-subtle-bg, rgba(17, 24, 39, .02));flex:0 0 auto}._variantThumbImg_s2uuj_389{width:100%;height:100%;object-fit:cover;display:block}._variantThumbFallback_s2uuj_396{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-weight:800;color:var(--bb-text-color, #111827)}._variantInfo_s2uuj_406{min-width:0}._variantName_s2uuj_410{font-size:14px;font-weight:600;margin-bottom:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._variantMeta_s2uuj_419{font-size:12px;color:var(--bb-muted-color, rgba(17, 24, 39, .6));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._variantPriceRow_s2uuj_427{display:flex;align-items:baseline;gap:8px;margin-top:4px}._variantCompareAt_s2uuj_434{font-size:12px;color:var(--bb-muted-color, rgba(17, 24, 39, .6));text-decoration:line-through}._variantPrice_s2uuj_427{font-size:13px;font-weight:800}._qtyControls_s2uuj_445{display:inline-flex;align-items:center;gap:6px}._qtyButton_s2uuj_451{width:34px;height:34px;border-radius:10px;border:1px solid var(--bb-border-strong-color, rgba(17, 24, 39, .12));background:var(--bb-surface-bg, #ffffff);cursor:pointer;line-height:1;font-size:16px}._qtyButton_s2uuj_451:hover{background:var(--bb-control-bg-hover, rgba(17, 24, 39, .04))}._qtyButton_s2uuj_451:disabled{opacity:.6;cursor:not-allowed}._qtyButton_s2uuj_451:focus-visible{outline:2px solid var(--bb-focus-ring, #2563eb);outline-offset:2px}._qtyValue_s2uuj_476{min-width:18px;text-align:center;font-variant-numeric:tabular-nums;font-weight:700}._footer_s2uuj_483{padding:var(--bb-footer-padding, 12px 16px 16px 16px);border-top:1px solid var(--bb-border-color, rgba(17, 24, 39, .08));background:var(--bb-surface-bg, #ffffff);position:relative}._poweredBy_s2uuj_490{font-size:10px;color:var(rgba(17, 24, 39, .6));text-align:center;margin-top:10px}._poweredBy_s2uuj_490 a{color:inherit;text-decoration:none}._boxSummaryWindow_s2uuj_502{margin-bottom:6px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;padding-bottom:6px;scrollbar-width:none;-ms-overflow-style:none}._boxSummaryWindow_s2uuj_502::-webkit-scrollbar{display:none}._boxSummaryRow_s2uuj_519{--bb-box-gap: 10px;display:flex;align-items:flex-start;gap:var(--bb-box-gap);width:100%}._boxSlot_s2uuj_527{flex:0 0 calc((100% - (4 * var(--bb-box-gap))) / 5);max-width:calc((100% - (4 * var(--bb-box-gap))) / 5);display:flex;flex-direction:column;align-items:stretch;gap:6px}._boxItem_s2uuj_536{width:100%;aspect-ratio:1 / 1;border-radius:12px;position:relative;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;box-sizing:border-box}._boxItemClickable_s2uuj_548{cursor:pointer}._boxItemClickable_s2uuj_548:focus-visible{outline:2px solid var(--bb-focus-ring, #2563eb);outline-offset:2px}._boxThresholdLabel_s2uuj_557{font-size:11px;line-height:1.15;font-weight:700;color:var(--bb-muted-strong-color, rgba(17, 24, 39, .65));text-align:center;white-space:wrap;overflow:hidden;text-overflow:ellipsis}._boxItemPlaceholder_s2uuj_568{border:1px dashed var(--bb-border-strong-color, rgba(17, 24, 39, .18));background:var(--bb-surface-subtle-bg, rgba(17, 24, 39, .02));color:var(--bb-muted-color, rgba(17, 24, 39, .6))}._boxItemFilled_s2uuj_574{border:1px solid var(--bb-border-color, rgba(17, 24, 39, .08));background:var(--bb-surface-bg, #ffffff);overflow:hidden}._boxItemThreshold_s2uuj_580{border-style:solid;border-width:2px;border-color:var(--bb-tier-border, rgba(37, 99, 235, .55));background:var(--bb-tier-bg, rgba(37, 99, 235, .08));color:var(--bb-tier-text, rgba(29, 78, 216, .95))}._boxItemDiscountText_s2uuj_588{font-size:12px;font-weight:800;text-align:center;line-height:1.1;padding:6px}._boxItemPlus_s2uuj_596{font-size:22px;font-weight:700;opacity:.5;line-height:1}._boxItemImage_s2uuj_603{width:100%;height:100%;object-fit:cover;display:block}._boxItemFallback_s2uuj_610{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--bb-surface-subtle-bg, rgba(17, 24, 39, .04));color:var(--bb-text-color, #111827);font-weight:800}._ctaButtonGroup_s2uuj_621{display:flex;gap:8px;width:100%;transition:gap .3s cubic-bezier(.4,0,.2,1)}._ctaButtonGroupAnimating_s2uuj_628{gap:0}._cta_s2uuj_621{width:100%;border:1px solid var(--bb-cta-border, rgba(0, 0, 0, .12));background:var(--bb-cta-bg, #2563eb);color:var(--bb-cta-text, #ffffff);font:inherit;font-weight:700;padding:12px 14px;border-radius:12px;cursor:pointer}._ctaSecondary_s2uuj_644{width:100%;border:2px solid var(--bb-cta-bg, #2563eb);background:transparent;color:var(--bb-cta-bg, #2563eb);font:inherit;font-weight:700;padding:10px 14px;border-radius:12px;cursor:pointer}._ctaDualLeft_s2uuj_656{width:100%;border:2px solid var(--bb-cta-bg, #2563eb);background:transparent;color:var(--bb-cta-bg, #2563eb);font:inherit;font-weight:700;padding:10px 14px;border-radius:12px;cursor:pointer;transition:border-radius .3s cubic-bezier(.4,0,.2,1),background .3s cubic-bezier(.4,0,.2,1),color .3s cubic-bezier(.4,0,.2,1),border-right-width .3s cubic-bezier(.4,0,.2,1),opacity .3s cubic-bezier(.4,0,.2,1)}._ctaDualLeftAnimating_s2uuj_674{border-top-right-radius:0;border-bottom-right-radius:0;border-right-width:0;background:var(--bb-cta-bg, #2563eb);opacity:.6;color:var(--bb-cta-text, #ffffff)}._ctaDualLeftAnimating_s2uuj_674>span{opacity:0}._ctaDualRight_s2uuj_687{width:100%;border:1px solid var(--bb-cta-border, rgba(0, 0, 0, .12));background:var(--bb-cta-bg, #2563eb);color:var(--bb-cta-text, #ffffff);font:inherit;font-weight:700;padding:12px 14px;border-radius:12px;cursor:pointer;transition:border-radius .3s cubic-bezier(.4,0,.2,1),border-left-width .3s cubic-bezier(.4,0,.2,1),opacity .3s cubic-bezier(.4,0,.2,1)}._ctaDualRightAnimating_s2uuj_703{border-top-left-radius:0;border-bottom-left-radius:0;border-left-width:0;opacity:.6}._ctaDualRightAnimating_s2uuj_703>span{opacity:0}._ctaTotals_s2uuj_714{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-variant-numeric:tabular-nums}._ctaDiscountBadge_s2uuj_722{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;font-size:12px;font-weight:800;background:linear-gradient(180deg,#2563eb24,#2563eb0f);border:1px solid rgba(37,99,235,.3);color:#1d4ed8f2;white-space:nowrap}._ctaTotalsWrap_s2uuj_736{overflow:hidden;max-height:0;opacity:0;transform:translateY(4px);margin-bottom:0;transition:max-height .22s ease,opacity .16s ease,transform .22s ease,margin-bottom .22s ease}._ctaTotalsWrapVisible_s2uuj_749{max-height:40px;opacity:1;transform:translateY(0);margin-bottom:8px}._ctaTotalsStrike_s2uuj_756{opacity:.85;text-decoration:line-through;font-weight:700;color:var(--bb-muted-strong-color, rgba(17, 24, 39, .65))}._ctaTotalsPrice_s2uuj_763{font-weight:900;color:var(--bb-text-color, #111827)}@media(prefers-reduced-motion:reduce){._ctaTotalsWrap_s2uuj_736{transition:none}}._cta_s2uuj_621:hover{background:var(--bb-cta-bg-hover, #1d4ed8)}._cta_s2uuj_621:disabled{opacity:.6;cursor:not-allowed}._cta_s2uuj_621:focus-visible{outline:2px solid var(--bb-cta-focus-ring, var(--bb-text-color, #111827));outline-offset:2px}._ctaSecondary_s2uuj_644:hover{background:var(--bb-cta-bg, #2563eb);color:var(--bb-cta-text, #ffffff)}._ctaSecondary_s2uuj_644:disabled{opacity:.6;cursor:not-allowed}._ctaSecondary_s2uuj_644:focus-visible{outline:2px solid var(--bb-cta-focus-ring, var(--bb-text-color, #111827));outline-offset:2px}._ctaDualLeft_s2uuj_656:hover{background:var(--bb-cta-bg, #2563eb);color:var(--bb-cta-text, #ffffff)}._ctaDualLeft_s2uuj_656:disabled{opacity:.6;cursor:not-allowed}._ctaDualLeft_s2uuj_656:focus-visible{outline:2px solid var(--bb-cta-focus-ring, var(--bb-text-color, #111827));outline-offset:2px}._ctaDualRight_s2uuj_687:hover{background:var(--bb-cta-bg-hover, #1d4ed8)}._ctaDualRight_s2uuj_687:disabled{opacity:.6;cursor:not-allowed}._ctaDualRight_s2uuj_687:focus-visible{outline:2px solid var(--bb-cta-focus-ring, var(--bb-text-color, #111827));outline-offset:2px}._helperText_s2uuj_832{margin-top:8px;font-size:12px;color:var(--bb-muted-strong-color, rgba(17, 24, 39, .65));text-align:center}@media(max-width:767px){._backdrop_s2uuj_1{padding:0;justify-content:stretch}._panel_s2uuj_82{width:100%;height:100%;border-radius:0}}')),document.head.appendChild(e)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})();
|
|
2
2
|
import { jsx as f, jsxs as P, Fragment as gt } from "react/jsx-runtime";
|
|
3
|
-
import
|
|
4
|
-
const
|
|
3
|
+
import Ee, { useState as k, useRef as V, useEffect as D, useCallback as le, useMemo as T, createContext as vt, useContext as xt, forwardRef as mt, createElement as Qe } from "react";
|
|
4
|
+
const Fe = {
|
|
5
5
|
bundleId: "_bundle_id",
|
|
6
6
|
bundleConfig: "_bundle_config",
|
|
7
7
|
bundleSource: "_bundle_source",
|
|
@@ -40,7 +40,7 @@ function ke() {
|
|
|
40
40
|
return `bb_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`;
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
async function
|
|
43
|
+
async function _e(i, e, t) {
|
|
44
44
|
if (!(typeof window > "u"))
|
|
45
45
|
try {
|
|
46
46
|
const o = new URL(i, window.location.origin);
|
|
@@ -117,32 +117,32 @@ function ur(i) {
|
|
|
117
117
|
configFetcher: l,
|
|
118
118
|
analyticsEndpoint: s,
|
|
119
119
|
children: p
|
|
120
|
-
} = i,
|
|
120
|
+
} = i, w = s ?? `${e}/api/public/bundle-analytics`, [j, A] = k(!1), [C, te] = k(!n), [$, X] = k(!1), [U, N] = k(null), [R, Q] = k((n == null ? void 0 : n.currencyCode) ?? null), [y, de] = k((n == null ? void 0 : n.config) ?? null), [ie, we] = k(
|
|
121
121
|
(n == null ? void 0 : n.eligibleVariants) ?? []
|
|
122
122
|
), [he, Me] = k(
|
|
123
123
|
() => ({ selections: {}, order: [] })
|
|
124
124
|
), Pe = V(null);
|
|
125
|
-
|
|
126
|
-
var
|
|
125
|
+
D(() => {
|
|
126
|
+
var z;
|
|
127
127
|
if (n) return;
|
|
128
|
-
(
|
|
128
|
+
(z = Pe.current) == null || z.abort();
|
|
129
129
|
const d = new AbortController();
|
|
130
130
|
Pe.current = d;
|
|
131
131
|
const x = l ?? Ct;
|
|
132
132
|
return te(!0), N(null), x({ apiBaseUrl: e, shop: t, signal: d.signal }).then((g) => {
|
|
133
133
|
if (!g.ok) {
|
|
134
|
-
N(g.error || "Failed to load bundle config."), de(null),
|
|
134
|
+
N(g.error || "Failed to load bundle config."), de(null), we([]), Q(null);
|
|
135
135
|
return;
|
|
136
136
|
}
|
|
137
|
-
Q(g.currencyCode ?? null), de(g.config),
|
|
137
|
+
Q(g.currencyCode ?? null), de(g.config), we(g.eligibleVariants ?? []);
|
|
138
138
|
}).catch((g) => {
|
|
139
139
|
const J = g instanceof Error ? g.message : "Failed to load bundle config.";
|
|
140
|
-
N(J), de(null),
|
|
140
|
+
N(J), de(null), we([]), Q(null);
|
|
141
141
|
}).finally(() => te(!1)), () => d.abort();
|
|
142
|
-
}, [e, t, n, l]),
|
|
142
|
+
}, [e, t, n, l]), D(() => {
|
|
143
143
|
const d = lt(y == null ? void 0 : y.styleSettings);
|
|
144
144
|
d && ct(d);
|
|
145
|
-
}, [y == null ? void 0 : y.styleSettings]),
|
|
145
|
+
}, [y == null ? void 0 : y.styleSettings]), D(() => {
|
|
146
146
|
if (typeof window > "u") return;
|
|
147
147
|
const d = () => {
|
|
148
148
|
const x = lt(void 0);
|
|
@@ -151,10 +151,10 @@ function ur(i) {
|
|
|
151
151
|
return window.addEventListener("bundle-preview-styles-updated", d), () => window.removeEventListener("bundle-preview-styles-updated", d);
|
|
152
152
|
}, []);
|
|
153
153
|
const ye = le(() => {
|
|
154
|
-
if (
|
|
154
|
+
if (A(!0), w)
|
|
155
155
|
try {
|
|
156
156
|
const d = ke();
|
|
157
|
-
|
|
157
|
+
_e(w, t, {
|
|
158
158
|
eventType: "DRAWER_OPENED",
|
|
159
159
|
shop: t,
|
|
160
160
|
anonymousUserId: d,
|
|
@@ -166,11 +166,11 @@ function ur(i) {
|
|
|
166
166
|
} catch (d) {
|
|
167
167
|
console.warn("[Bundle Analytics] Error in open() callback:", d);
|
|
168
168
|
}
|
|
169
|
-
}, [
|
|
170
|
-
if (
|
|
169
|
+
}, [w, t]), ne = le(() => {
|
|
170
|
+
if (w)
|
|
171
171
|
try {
|
|
172
172
|
const d = ke();
|
|
173
|
-
|
|
173
|
+
_e(w, t, {
|
|
174
174
|
eventType: "DRAWER_CLOSED",
|
|
175
175
|
shop: t,
|
|
176
176
|
anonymousUserId: d,
|
|
@@ -182,140 +182,140 @@ function ur(i) {
|
|
|
182
182
|
} catch (d) {
|
|
183
183
|
console.warn("[Bundle Analytics] Error in close() callback:", d);
|
|
184
184
|
}
|
|
185
|
-
|
|
186
|
-
}, [
|
|
187
|
-
|
|
185
|
+
A(!1), typeof window < "u" && window.location.hash === st && window.history.replaceState(null, "", window.location.pathname + window.location.search);
|
|
186
|
+
}, [w, t]);
|
|
187
|
+
D(() => {
|
|
188
188
|
if (typeof window > "u") return;
|
|
189
189
|
const d = () => {
|
|
190
190
|
window.location.hash === st && ye();
|
|
191
191
|
};
|
|
192
192
|
return d(), window.addEventListener("hashchange", d), () => window.removeEventListener("hashchange", d);
|
|
193
193
|
}, [ye]);
|
|
194
|
-
const
|
|
195
|
-
|
|
194
|
+
const je = le(() => {
|
|
195
|
+
A((d) => {
|
|
196
196
|
if (d)
|
|
197
197
|
ne();
|
|
198
|
-
else if (
|
|
198
|
+
else if (w)
|
|
199
199
|
try {
|
|
200
200
|
const x = ke();
|
|
201
|
-
|
|
201
|
+
_e(w, t, {
|
|
202
202
|
eventType: "DRAWER_OPENED",
|
|
203
203
|
shop: t,
|
|
204
204
|
anonymousUserId: x,
|
|
205
205
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
206
206
|
mixpanelEvent: "bundle_opened"
|
|
207
|
-
}).catch((
|
|
208
|
-
console.warn("[Bundle Analytics] Failed to track drawer opened:",
|
|
207
|
+
}).catch((z) => {
|
|
208
|
+
console.warn("[Bundle Analytics] Failed to track drawer opened:", z);
|
|
209
209
|
});
|
|
210
210
|
} catch (x) {
|
|
211
211
|
console.warn("[Bundle Analytics] Error in toggle() callback:", x);
|
|
212
212
|
}
|
|
213
213
|
return !d;
|
|
214
214
|
});
|
|
215
|
-
}, [
|
|
215
|
+
}, [w, t, ne]), Ae = T(() => {
|
|
216
216
|
const d = Number((y == null ? void 0 : y.maxBundleSize) ?? NaN), x = Number.isFinite(d) ? Math.floor(d) : 100;
|
|
217
217
|
return Math.max(2, Math.min(100, x));
|
|
218
|
-
}, [y == null ? void 0 : y.maxBundleSize]), fe = T(() => new Set(ie.map((d) => d.id)), [ie]),
|
|
219
|
-
const d = (y == null ? void 0 : y.rules) ?? [], x = d.length ? Math.min(...d.map((
|
|
218
|
+
}, [y == null ? void 0 : y.maxBundleSize]), fe = T(() => new Set(ie.map((d) => d.id)), [ie]), q = T(() => {
|
|
219
|
+
const d = (y == null ? void 0 : y.rules) ?? [], x = d.length ? Math.min(...d.map((z) => z.minBundleSize)) : 2;
|
|
220
220
|
return Number.isFinite(x) && x > 0 ? x : 2;
|
|
221
221
|
}, [y]), Ie = le((d, x) => {
|
|
222
222
|
if (!fe.has(d))
|
|
223
223
|
return;
|
|
224
|
-
const
|
|
224
|
+
const z = ut(x);
|
|
225
225
|
Me((g) => {
|
|
226
|
-
const J = g.selections[d] ?? 0,
|
|
227
|
-
let
|
|
228
|
-
if (
|
|
229
|
-
const { [d]:
|
|
230
|
-
|
|
231
|
-
} else J ===
|
|
226
|
+
const J = g.selections[d] ?? 0, W = z - J, ve = Object.values(g.selections).reduce((L, M) => L + (M || 0), 0), O = W > 0 ? Math.min(W, Math.max(0, Ae - ve)) : W, E = J + O;
|
|
227
|
+
let F;
|
|
228
|
+
if (E <= 0) {
|
|
229
|
+
const { [d]: L, ...M } = g.selections;
|
|
230
|
+
F = M;
|
|
231
|
+
} else J === E ? F = g.selections : F = { ...g.selections, [d]: E };
|
|
232
232
|
let se = g.order;
|
|
233
233
|
if (O > 0)
|
|
234
234
|
se = [...g.order, ...Array.from({ length: O }, () => d)];
|
|
235
235
|
else if (O < 0) {
|
|
236
|
-
let
|
|
236
|
+
let L = -O;
|
|
237
237
|
const M = [];
|
|
238
238
|
for (let S = g.order.length - 1; S >= 0; S--) {
|
|
239
239
|
const m = g.order[S];
|
|
240
|
-
if (m === d &&
|
|
241
|
-
|
|
240
|
+
if (m === d && L > 0) {
|
|
241
|
+
L--;
|
|
242
242
|
continue;
|
|
243
243
|
}
|
|
244
244
|
M.push(m);
|
|
245
245
|
}
|
|
246
246
|
M.reverse(), se = M;
|
|
247
247
|
}
|
|
248
|
-
if (
|
|
249
|
-
const xe = ve, pe = Object.values(
|
|
250
|
-
if (
|
|
248
|
+
if (F === g.selections && se === g.order) return g;
|
|
249
|
+
const xe = ve, pe = Object.values(F).reduce((L, M) => L + (M || 0), 0);
|
|
250
|
+
if (w)
|
|
251
251
|
try {
|
|
252
|
-
const
|
|
252
|
+
const L = ke(), M = {
|
|
253
253
|
eventType: "VARIANT_SELECTION_CHANGED",
|
|
254
254
|
shop: t,
|
|
255
|
-
anonymousUserId:
|
|
255
|
+
anonymousUserId: L,
|
|
256
256
|
before: { ...g.selections },
|
|
257
|
-
after: { ...
|
|
257
|
+
after: { ...F },
|
|
258
258
|
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
259
259
|
};
|
|
260
|
-
|
|
260
|
+
_e(w, t, M), xe === 0 && pe >= 1 && _e(w, t, {
|
|
261
261
|
...M,
|
|
262
262
|
mixpanelEvent: "bundle_started"
|
|
263
|
-
}), xe <
|
|
263
|
+
}), xe < q && pe >= q && _e(w, t, {
|
|
264
264
|
...M,
|
|
265
265
|
mixpanelEvent: "bundle_completed"
|
|
266
266
|
});
|
|
267
267
|
} catch {
|
|
268
268
|
}
|
|
269
|
-
return { selections:
|
|
269
|
+
return { selections: F, order: se };
|
|
270
270
|
});
|
|
271
|
-
}, [
|
|
271
|
+
}, [Ae, q, fe, w, t]), me = le(() => Me({ selections: {}, order: [] }), []), Z = he.selections, Re = he.order, K = T(() => Object.values(Z).reduce((d, x) => d + (x || 0), 0), [Z]), ge = T(() => !(C || $ || U || !(y != null && y.isActive) || K < q), [K, y == null ? void 0 : y.isActive, U, C, q, $]), ae = le(async (d) => {
|
|
272
272
|
var M, S;
|
|
273
273
|
if (!ge || !y) return;
|
|
274
|
-
const x = St(),
|
|
274
|
+
const x = St(), z = (y.title ?? "").trim().slice(0, 255), g = Object.entries(Z).map(([m, Y]) => ({ merchandiseId: m, quantity: ut(Y) })).filter((m) => m.quantity > 0).filter((m) => fe.has(m.merchandiseId)).map((m) => ({
|
|
275
275
|
merchandiseId: m.merchandiseId,
|
|
276
276
|
quantity: m.quantity,
|
|
277
277
|
attributes: [
|
|
278
|
-
{ key:
|
|
279
|
-
{ key:
|
|
280
|
-
{ key:
|
|
281
|
-
...
|
|
278
|
+
{ key: Fe.bundleId, value: x },
|
|
279
|
+
{ key: Fe.bundleConfig, value: r },
|
|
280
|
+
{ key: Fe.bundleSource, value: "bundle_builder" },
|
|
281
|
+
...z ? [{ key: Fe.bundleTitle, value: z }] : []
|
|
282
282
|
]
|
|
283
283
|
}));
|
|
284
284
|
if (!g.length) return;
|
|
285
285
|
const J = new Map(ie.map((m) => [m.id, m]));
|
|
286
|
-
let
|
|
286
|
+
let W = 0;
|
|
287
287
|
for (const [m, Y] of Object.entries(Z)) {
|
|
288
288
|
const ce = Y ?? 0;
|
|
289
289
|
if (ce <= 0) continue;
|
|
290
290
|
const Be = J.get(m), Ce = Number(Be == null ? void 0 : Be.price);
|
|
291
|
-
Number.isFinite(Ce) && (
|
|
291
|
+
Number.isFinite(Ce) && (W += Ce * ce);
|
|
292
292
|
}
|
|
293
|
-
|
|
293
|
+
W = Math.round(W * 100) / 100;
|
|
294
294
|
const ve = [...y.rules ?? []].sort((m, Y) => m.minBundleSize - Y.minBundleSize);
|
|
295
295
|
let O = null;
|
|
296
296
|
for (const m of ve)
|
|
297
297
|
K >= m.minBundleSize && (O = m);
|
|
298
|
-
const
|
|
298
|
+
const E = O ? (() => {
|
|
299
299
|
const m = Number.parseFloat(O.discountPercent);
|
|
300
300
|
return Number.isFinite(m) && m > 0 ? m : null;
|
|
301
|
-
})() : null,
|
|
301
|
+
})() : null, F = E ? Math.round(W * (1 - E / 100) * 100) / 100 : W, se = W - F, xe = g.map((m) => m.merchandiseId), pe = (O == null ? void 0 : O.handle) ?? "", L = ((M = O == null ? void 0 : O.label) == null ? void 0 : M.trim()) || "";
|
|
302
302
|
X(!0);
|
|
303
303
|
try {
|
|
304
|
-
if (d != null && d.checkout ? await o.linesAddForCheckout(g) : await o.linesAdd(g),
|
|
304
|
+
if (d != null && d.checkout ? await o.linesAddForCheckout(g) : await o.linesAdd(g), w)
|
|
305
305
|
try {
|
|
306
306
|
const m = ke(), Y = !!(d != null && d.checkout);
|
|
307
|
-
|
|
307
|
+
_e(w, t, {
|
|
308
308
|
eventType: "BUNDLE_ADDED_TO_BASKET",
|
|
309
309
|
shop: t,
|
|
310
310
|
anonymousUserId: m,
|
|
311
311
|
bundleId: x,
|
|
312
312
|
productVariantIds: xe,
|
|
313
|
-
grossPrice:
|
|
314
|
-
discountedPrice:
|
|
315
|
-
currency:
|
|
313
|
+
grossPrice: W,
|
|
314
|
+
discountedPrice: F,
|
|
315
|
+
currency: R ?? void 0,
|
|
316
316
|
discountThresholdIdentifier: pe,
|
|
317
|
-
discountLabel:
|
|
318
|
-
discountPercentage:
|
|
317
|
+
discountLabel: L,
|
|
318
|
+
discountPercentage: E,
|
|
319
319
|
discountedAmount: se,
|
|
320
320
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
321
321
|
checkout: Y,
|
|
@@ -334,12 +334,12 @@ function ur(i) {
|
|
|
334
334
|
ne,
|
|
335
335
|
y,
|
|
336
336
|
r,
|
|
337
|
-
|
|
337
|
+
R,
|
|
338
338
|
Z,
|
|
339
339
|
fe,
|
|
340
340
|
ie,
|
|
341
341
|
K,
|
|
342
|
-
|
|
342
|
+
w,
|
|
343
343
|
t
|
|
344
344
|
]), Se = le(async () => {
|
|
345
345
|
await ae(
|
|
@@ -360,51 +360,51 @@ function ur(i) {
|
|
|
360
360
|
}
|
|
361
361
|
}
|
|
362
362
|
);
|
|
363
|
-
}, [ae, o]),
|
|
363
|
+
}, [ae, o]), Le = T(
|
|
364
364
|
() => ({
|
|
365
|
-
isOpen:
|
|
365
|
+
isOpen: j,
|
|
366
366
|
open: ye,
|
|
367
367
|
close: ne,
|
|
368
|
-
toggle:
|
|
368
|
+
toggle: je,
|
|
369
369
|
loading: C,
|
|
370
|
-
submitting:
|
|
371
|
-
error:
|
|
372
|
-
currencyCode:
|
|
370
|
+
submitting: $,
|
|
371
|
+
error: U,
|
|
372
|
+
currencyCode: R,
|
|
373
373
|
config: y,
|
|
374
374
|
eligibleVariants: ie,
|
|
375
375
|
selections: Z,
|
|
376
|
-
selectionOrder:
|
|
376
|
+
selectionOrder: Re,
|
|
377
377
|
setQuantity: Ie,
|
|
378
378
|
clearSelections: me,
|
|
379
379
|
bundleSize: K,
|
|
380
|
-
minRequired:
|
|
380
|
+
minRequired: q,
|
|
381
381
|
canSubmit: ge,
|
|
382
382
|
submit: Se,
|
|
383
383
|
submitAndCheckout: re
|
|
384
384
|
}),
|
|
385
385
|
[
|
|
386
|
-
|
|
386
|
+
j,
|
|
387
387
|
ye,
|
|
388
388
|
ne,
|
|
389
|
-
|
|
389
|
+
je,
|
|
390
390
|
C,
|
|
391
|
+
$,
|
|
391
392
|
U,
|
|
392
|
-
|
|
393
|
-
F,
|
|
393
|
+
R,
|
|
394
394
|
y,
|
|
395
395
|
ie,
|
|
396
396
|
Z,
|
|
397
|
-
|
|
397
|
+
Re,
|
|
398
398
|
Ie,
|
|
399
399
|
me,
|
|
400
400
|
K,
|
|
401
|
-
|
|
401
|
+
q,
|
|
402
402
|
ge,
|
|
403
403
|
Se,
|
|
404
404
|
re
|
|
405
405
|
]
|
|
406
406
|
);
|
|
407
|
-
return /* @__PURE__ */ f(pt.Provider, { value:
|
|
407
|
+
return /* @__PURE__ */ f(pt.Provider, { value: Le, children: p });
|
|
408
408
|
}
|
|
409
409
|
function Ye() {
|
|
410
410
|
const i = xt(pt);
|
|
@@ -431,9 +431,9 @@ function hr(i) {
|
|
|
431
431
|
}
|
|
432
432
|
);
|
|
433
433
|
}
|
|
434
|
-
var
|
|
434
|
+
var We, dt;
|
|
435
435
|
function Nt() {
|
|
436
|
-
if (dt) return
|
|
436
|
+
if (dt) return We;
|
|
437
437
|
dt = 1;
|
|
438
438
|
var i = {
|
|
439
439
|
linear: function(e, t, o, r) {
|
|
@@ -561,7 +561,7 @@ function Nt() {
|
|
|
561
561
|
return e < r / 2 ? (l = i.easeInBounce(e * 2, 0, n, r), l * 0.5 + t) : (l = i.easeOutBounce(e * 2 - r, 0, n, r), l * 0.5 + n * 0.5 + t);
|
|
562
562
|
}
|
|
563
563
|
};
|
|
564
|
-
return
|
|
564
|
+
return We = i, We;
|
|
565
565
|
}
|
|
566
566
|
var kt = Nt();
|
|
567
567
|
function Ot(i) {
|
|
@@ -582,7 +582,7 @@ var ue;
|
|
|
582
582
|
i[i.Positive = 1] = "Positive", i[i.Negative = -1] = "Negative";
|
|
583
583
|
})(ue || (ue = {}));
|
|
584
584
|
const Pt = 1e3 / 60;
|
|
585
|
-
class
|
|
585
|
+
class jt {
|
|
586
586
|
constructor(e, t, o, r) {
|
|
587
587
|
this.getOptions = t;
|
|
588
588
|
const { colors: n, initialVelocityX: l, initialVelocityY: s } = this.getOptions();
|
|
@@ -612,31 +612,31 @@ class At {
|
|
|
612
612
|
this.context.closePath(), this.context.restore();
|
|
613
613
|
}
|
|
614
614
|
}
|
|
615
|
-
class
|
|
615
|
+
class At {
|
|
616
616
|
constructor(e, t) {
|
|
617
617
|
this.x = 0, this.y = 0, this.w = 0, this.h = 0, this.lastNumberOfPieces = 0, this.tweenProgress = 0, this.tweenFrom = 0, this.particles = [], this.particlesGenerated = 0, this.removeParticleAt = (r) => {
|
|
618
618
|
this.particles.splice(r, 1);
|
|
619
619
|
}, this.getParticle = () => {
|
|
620
620
|
const r = G(this.x, this.w + this.x), n = G(this.y, this.h + this.y);
|
|
621
|
-
return new
|
|
621
|
+
return new jt(this.context, this.getOptions, r, n);
|
|
622
622
|
}, this.animate = (r) => {
|
|
623
|
-
const { canvas: n, context: l, particlesGenerated: s, lastNumberOfPieces: p } = this, { run:
|
|
624
|
-
if (!
|
|
623
|
+
const { canvas: n, context: l, particlesGenerated: s, lastNumberOfPieces: p } = this, { run: w, recycle: j, numberOfPieces: A, debug: C, tweenFunction: te, tweenDuration: $ } = this.getOptions();
|
|
624
|
+
if (!w)
|
|
625
625
|
return !1;
|
|
626
|
-
const X = this.particles.length,
|
|
627
|
-
if (
|
|
628
|
-
p !==
|
|
629
|
-
const N = te(this.tweenProgress, this.tweenFrom,
|
|
630
|
-
for (let Q = 0; Q <
|
|
626
|
+
const X = this.particles.length, U = j ? X : s;
|
|
627
|
+
if (U < A) {
|
|
628
|
+
p !== A && (this.tweenProgress = 0, this.tweenFrom = U, this.lastNumberOfPieces = A), this.tweenProgress = Math.min($, Math.max(0, this.tweenProgress + r));
|
|
629
|
+
const N = te(this.tweenProgress, this.tweenFrom, A, $), R = Math.round(N - U);
|
|
630
|
+
for (let Q = 0; Q < R; Q++)
|
|
631
631
|
this.particles.push(this.getParticle());
|
|
632
|
-
this.particlesGenerated +=
|
|
632
|
+
this.particlesGenerated += R;
|
|
633
633
|
}
|
|
634
634
|
C && (l.font = "12px sans-serif", l.fillStyle = "#333", l.textAlign = "right", l.fillText(`Particles: ${X}`, n.width - 10, n.height - 20));
|
|
635
635
|
for (let N = this.particles.length - 1; N >= 0; N--) {
|
|
636
|
-
const
|
|
637
|
-
|
|
636
|
+
const R = this.particles[N];
|
|
637
|
+
R.update(r), (R.y > n.height || R.y < -100 || R.x > n.width + 100 || R.x < -100) && (j && U <= A ? this.particles[N] = this.getParticle() : this.removeParticleAt(N));
|
|
638
638
|
}
|
|
639
|
-
return X > 0 ||
|
|
639
|
+
return X > 0 || U < A;
|
|
640
640
|
}, this.canvas = e;
|
|
641
641
|
const o = this.canvas.getContext("2d");
|
|
642
642
|
if (!o)
|
|
@@ -679,7 +679,7 @@ const He = {
|
|
|
679
679
|
recycle: !0,
|
|
680
680
|
run: !0
|
|
681
681
|
};
|
|
682
|
-
class
|
|
682
|
+
class Rt {
|
|
683
683
|
constructor(e, t) {
|
|
684
684
|
this.lastFrameTime = 0, this.setOptionsWithDefaults = (r) => {
|
|
685
685
|
const n = {
|
|
@@ -696,12 +696,12 @@ class Ft {
|
|
|
696
696
|
...r
|
|
697
697
|
}, Object.assign(this, r.confettiSource);
|
|
698
698
|
}, this.update = (r = 0) => {
|
|
699
|
-
const { options: { run: n, onConfettiComplete: l, frameRate: s }, canvas: p, context:
|
|
700
|
-
if (s &&
|
|
699
|
+
const { options: { run: n, onConfettiComplete: l, frameRate: s }, canvas: p, context: w } = this, j = Math.min(r - this.lastFrameTime, 50);
|
|
700
|
+
if (s && j < 1e3 / s) {
|
|
701
701
|
this.rafId = requestAnimationFrame(this.update);
|
|
702
702
|
return;
|
|
703
703
|
}
|
|
704
|
-
this.lastFrameTime = r - (s ?
|
|
704
|
+
this.lastFrameTime = r - (s ? j % s : 0), n && (w.fillStyle = "white", w.clearRect(0, 0, p.width, p.height)), this.generator.animate(j) ? this.rafId = requestAnimationFrame(this.update) : (l && typeof l == "function" && this.generator.particlesGenerated > 0 && l.call(this, this), this._options.run = !1);
|
|
705
705
|
}, this.reset = () => {
|
|
706
706
|
this.generator && this.generator.particlesGenerated > 0 && (this.generator.particlesGenerated = 0, this.generator.particles = [], this.generator.lastNumberOfPieces = 0);
|
|
707
707
|
}, this.stop = () => {
|
|
@@ -710,7 +710,7 @@ class Ft {
|
|
|
710
710
|
const o = this.canvas.getContext("2d");
|
|
711
711
|
if (!o)
|
|
712
712
|
throw new Error("Could not get canvas context");
|
|
713
|
-
this.context = o, this.generator = new
|
|
713
|
+
this.context = o, this.generator = new At(this.canvas, () => this.options), this.options = t, this.update();
|
|
714
714
|
}
|
|
715
715
|
get options() {
|
|
716
716
|
return this._options;
|
|
@@ -721,15 +721,15 @@ class Ft {
|
|
|
721
721
|
this.setOptionsWithDefaults(e), this.generator && (Object.assign(this.generator, this.options.confettiSource), typeof e.recycle == "boolean" && e.recycle && o === !1 && (this.generator.lastNumberOfPieces = this.generator.particles.length)), typeof e.run == "boolean" && e.run && t === !1 && this.update();
|
|
722
722
|
}
|
|
723
723
|
}
|
|
724
|
-
const
|
|
725
|
-
class Ke extends
|
|
724
|
+
const Ft = Ee.createRef();
|
|
725
|
+
class Ke extends Ee.Component {
|
|
726
726
|
constructor(e) {
|
|
727
|
-
super(e), this.canvas =
|
|
727
|
+
super(e), this.canvas = Ee.createRef(), this.canvas = e.canvasRef || Ft;
|
|
728
728
|
}
|
|
729
729
|
componentDidMount() {
|
|
730
730
|
if (this.canvas.current) {
|
|
731
731
|
const e = Ve(this.props)[0];
|
|
732
|
-
this.confetti = new
|
|
732
|
+
this.confetti = new Rt(this.canvas.current, e);
|
|
733
733
|
}
|
|
734
734
|
}
|
|
735
735
|
componentDidUpdate() {
|
|
@@ -771,20 +771,20 @@ function Ve(i) {
|
|
|
771
771
|
}
|
|
772
772
|
return [e, o, t];
|
|
773
773
|
}
|
|
774
|
-
const
|
|
774
|
+
const Dt = Ee.forwardRef((i, e) => f(Ke, { canvasRef: e, ...i }));
|
|
775
775
|
/**
|
|
776
776
|
* @license lucide-react v0.515.0 - ISC
|
|
777
777
|
*
|
|
778
778
|
* This source code is licensed under the ISC license.
|
|
779
779
|
* See the LICENSE file in the root directory of this source tree.
|
|
780
780
|
*/
|
|
781
|
-
const
|
|
781
|
+
const Et = (i) => i.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), Lt = (i) => i.replace(
|
|
782
782
|
/^([A-Z])|[\s-_]+(\w)/g,
|
|
783
783
|
(e, t, o) => o ? o.toUpperCase() : t.toLowerCase()
|
|
784
784
|
), ht = (i) => {
|
|
785
|
-
const e =
|
|
785
|
+
const e = Lt(i);
|
|
786
786
|
return e.charAt(0).toUpperCase() + e.slice(1);
|
|
787
|
-
}, bt = (...i) => i.filter((e, t, o) => !!e && e.trim() !== "" && o.indexOf(e) === t).join(" ").trim(),
|
|
787
|
+
}, bt = (...i) => i.filter((e, t, o) => !!e && e.trim() !== "" && o.indexOf(e) === t).join(" ").trim(), qt = (i) => {
|
|
788
788
|
for (const e in i)
|
|
789
789
|
if (e.startsWith("aria-") || e === "role" || e === "title")
|
|
790
790
|
return !0;
|
|
@@ -795,7 +795,7 @@ const Lt = (i) => i.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), qt = (
|
|
|
795
795
|
* This source code is licensed under the ISC license.
|
|
796
796
|
* See the LICENSE file in the root directory of this source tree.
|
|
797
797
|
*/
|
|
798
|
-
var
|
|
798
|
+
var $t = {
|
|
799
799
|
xmlns: "http://www.w3.org/2000/svg",
|
|
800
800
|
width: 24,
|
|
801
801
|
height: 24,
|
|
@@ -812,7 +812,7 @@ var Ut = {
|
|
|
812
812
|
* This source code is licensed under the ISC license.
|
|
813
813
|
* See the LICENSE file in the root directory of this source tree.
|
|
814
814
|
*/
|
|
815
|
-
const
|
|
815
|
+
const Ut = mt(
|
|
816
816
|
({
|
|
817
817
|
color: i = "currentColor",
|
|
818
818
|
size: e = 24,
|
|
@@ -826,17 +826,17 @@ const zt = mt(
|
|
|
826
826
|
"svg",
|
|
827
827
|
{
|
|
828
828
|
ref: p,
|
|
829
|
-
|
|
829
|
+
...$t,
|
|
830
830
|
width: e,
|
|
831
831
|
height: e,
|
|
832
832
|
stroke: i,
|
|
833
833
|
strokeWidth: o ? Number(t) * 24 / Number(e) : t,
|
|
834
834
|
className: bt("lucide", r),
|
|
835
|
-
...!n &&
|
|
835
|
+
...!n && !qt(s) && { "aria-hidden": "true" },
|
|
836
836
|
...s
|
|
837
837
|
},
|
|
838
838
|
[
|
|
839
|
-
...l.map(([
|
|
839
|
+
...l.map(([w, j]) => Qe(w, j)),
|
|
840
840
|
...Array.isArray(n) ? n : [n]
|
|
841
841
|
]
|
|
842
842
|
)
|
|
@@ -847,13 +847,13 @@ const zt = mt(
|
|
|
847
847
|
* This source code is licensed under the ISC license.
|
|
848
848
|
* See the LICENSE file in the root directory of this source tree.
|
|
849
849
|
*/
|
|
850
|
-
const
|
|
850
|
+
const zt = (i, e) => {
|
|
851
851
|
const t = mt(
|
|
852
|
-
({ className: o, ...r }, n) => Qe(
|
|
852
|
+
({ className: o, ...r }, n) => Qe(Ut, {
|
|
853
853
|
ref: n,
|
|
854
854
|
iconNode: e,
|
|
855
855
|
className: bt(
|
|
856
|
-
`lucide-${
|
|
856
|
+
`lucide-${Et(ht(i))}`,
|
|
857
857
|
`lucide-${i}`,
|
|
858
858
|
o
|
|
859
859
|
),
|
|
@@ -868,10 +868,10 @@ const Wt = (i, e) => {
|
|
|
868
868
|
* This source code is licensed under the ISC license.
|
|
869
869
|
* See the LICENSE file in the root directory of this source tree.
|
|
870
870
|
*/
|
|
871
|
-
const
|
|
871
|
+
const Wt = [
|
|
872
872
|
["path", { d: "m21 21-4.34-4.34", key: "14j7rj" }],
|
|
873
873
|
["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }]
|
|
874
|
-
], Vt =
|
|
874
|
+
], Vt = zt("search", Wt), Gt = "_backdrop_s2uuj_1", Qt = "_celebrationOverlay_s2uuj_14", Yt = "_celebrationChip_s2uuj_23", Ht = "_backdropOpen_s2uuj_74", Kt = "_backdropClosed_s2uuj_78", Xt = "_panel_s2uuj_82", Zt = "_panelOpen_s2uuj_102", Jt = "_panelClosed_s2uuj_106", en = "_header_s2uuj_145", tn = "_headerCenter_s2uuj_154", nn = "_title_s2uuj_162", rn = "_searchIconButton_s2uuj_171", on = "_headerTitleWrap_s2uuj_193", an = "_headerSearchWrap_s2uuj_197", sn = "_headerSearchOpen_s2uuj_209", cn = "_searchBar_s2uuj_221", ln = "_searchInput_s2uuj_233", un = "_searchClearButton_s2uuj_254", dn = "_closeButton_s2uuj_276", hn = "_body_s2uuj_309", fn = "_muted_s2uuj_314", mn = "_error_s2uuj_319", pn = "_variants_s2uuj_324", bn = "_variantList_s2uuj_328", _n = "_variantRow_s2uuj_336", wn = "_variantLeft_s2uuj_344", yn = "_addToBundleButton_s2uuj_351", gn = "_variantThumb_s2uuj_379", vn = "_variantThumbImg_s2uuj_389", xn = "_variantThumbFallback_s2uuj_396", Cn = "_variantInfo_s2uuj_406", In = "_variantName_s2uuj_410", Sn = "_variantMeta_s2uuj_419", Bn = "_variantPriceRow_s2uuj_427", Tn = "_variantCompareAt_s2uuj_434", Nn = "_variantPrice_s2uuj_427", kn = "_qtyControls_s2uuj_445", On = "_qtyButton_s2uuj_451", Mn = "_qtyValue_s2uuj_476", Pn = "_footer_s2uuj_483", jn = "_poweredBy_s2uuj_490", An = "_boxSummaryWindow_s2uuj_502", Rn = "_boxSummaryRow_s2uuj_519", Fn = "_boxSlot_s2uuj_527", Dn = "_boxItem_s2uuj_536", En = "_boxItemClickable_s2uuj_548", Ln = "_boxThresholdLabel_s2uuj_557", qn = "_boxItemPlaceholder_s2uuj_568", $n = "_boxItemFilled_s2uuj_574", Un = "_boxItemThreshold_s2uuj_580", zn = "_boxItemDiscountText_s2uuj_588", Wn = "_boxItemPlus_s2uuj_596", Vn = "_boxItemImage_s2uuj_603", Gn = "_boxItemFallback_s2uuj_610", Qn = "_ctaButtonGroup_s2uuj_621", Yn = "_ctaButtonGroupAnimating_s2uuj_628", Hn = "_cta_s2uuj_621", Kn = "_ctaDualLeft_s2uuj_656", Xn = "_ctaDualLeftAnimating_s2uuj_674", Zn = "_ctaDualRight_s2uuj_687", Jn = "_ctaDualRightAnimating_s2uuj_703", er = "_ctaTotals_s2uuj_714", tr = "_ctaDiscountBadge_s2uuj_722", nr = "_ctaTotalsWrap_s2uuj_736", rr = "_ctaTotalsWrapVisible_s2uuj_749", or = "_ctaTotalsStrike_s2uuj_756", ir = "_ctaTotalsPrice_s2uuj_763", u = {
|
|
875
875
|
backdrop: Gt,
|
|
876
876
|
celebrationOverlay: Qt,
|
|
877
877
|
celebrationChip: Yt,
|
|
@@ -896,8 +896,8 @@ const jt = [
|
|
|
896
896
|
error: mn,
|
|
897
897
|
variants: pn,
|
|
898
898
|
variantList: bn,
|
|
899
|
-
variantRow:
|
|
900
|
-
variantLeft:
|
|
899
|
+
variantRow: _n,
|
|
900
|
+
variantLeft: wn,
|
|
901
901
|
addToBundleButton: yn,
|
|
902
902
|
variantThumb: gn,
|
|
903
903
|
variantThumbImg: vn,
|
|
@@ -912,18 +912,18 @@ const jt = [
|
|
|
912
912
|
qtyButton: On,
|
|
913
913
|
qtyValue: Mn,
|
|
914
914
|
footer: Pn,
|
|
915
|
-
poweredBy:
|
|
916
|
-
boxSummaryWindow:
|
|
917
|
-
boxSummaryRow:
|
|
918
|
-
boxSlot:
|
|
919
|
-
boxItem:
|
|
920
|
-
boxItemClickable:
|
|
921
|
-
boxThresholdLabel:
|
|
922
|
-
boxItemPlaceholder:
|
|
923
|
-
boxItemFilled:
|
|
924
|
-
boxItemThreshold:
|
|
925
|
-
boxItemDiscountText:
|
|
926
|
-
boxItemPlus:
|
|
915
|
+
poweredBy: jn,
|
|
916
|
+
boxSummaryWindow: An,
|
|
917
|
+
boxSummaryRow: Rn,
|
|
918
|
+
boxSlot: Fn,
|
|
919
|
+
boxItem: Dn,
|
|
920
|
+
boxItemClickable: En,
|
|
921
|
+
boxThresholdLabel: Ln,
|
|
922
|
+
boxItemPlaceholder: qn,
|
|
923
|
+
boxItemFilled: $n,
|
|
924
|
+
boxItemThreshold: Un,
|
|
925
|
+
boxItemDiscountText: zn,
|
|
926
|
+
boxItemPlus: Wn,
|
|
927
927
|
boxItemImage: Vn,
|
|
928
928
|
boxItemFallback: Gn,
|
|
929
929
|
ctaButtonGroup: Qn,
|
|
@@ -951,15 +951,15 @@ function fr(i) {
|
|
|
951
951
|
currencyCode: l,
|
|
952
952
|
config: s,
|
|
953
953
|
eligibleVariants: p,
|
|
954
|
-
selections:
|
|
955
|
-
selectionOrder:
|
|
956
|
-
setQuantity:
|
|
954
|
+
selections: w,
|
|
955
|
+
selectionOrder: j,
|
|
956
|
+
setQuantity: A,
|
|
957
957
|
bundleSize: C,
|
|
958
958
|
minRequired: te,
|
|
959
|
-
canSubmit:
|
|
959
|
+
canSubmit: $,
|
|
960
960
|
submit: X,
|
|
961
|
-
submitAndCheckout:
|
|
962
|
-
} = Ye(), [N,
|
|
961
|
+
submitAndCheckout: U
|
|
962
|
+
} = Ye(), [N, R] = k(!1), [Q, y] = k(""), de = V(null), ie = V(null), we = V(null), [he, Me] = k(() => typeof window > "u" ? { width: 0, height: 0 } : { width: window.innerWidth, height: window.innerHeight }), [Pe, ye] = k(0), [ne, je] = k(null), [Ae, fe] = k(!1), q = V(null), Ie = V(C), me = 7e3, [Z, Re] = k(0), [K, ge] = k(null), [ae, Se] = k(!1), re = V(null), Le = 2800, d = [
|
|
963
963
|
"#2563eb",
|
|
964
964
|
"#3b82f6",
|
|
965
965
|
"#60a5fa",
|
|
@@ -972,23 +972,23 @@ function fr(i) {
|
|
|
972
972
|
return Array.isArray(a) && a.length >= 6 ? a.slice(0, 6).map(
|
|
973
973
|
(h, b) => typeof h == "string" && h.trim() ? h : d[b]
|
|
974
974
|
) : [...d];
|
|
975
|
-
}, [(ot = s == null ? void 0 : s.styleSettings) == null ? void 0 : ot.confettiColors]),
|
|
975
|
+
}, [(ot = s == null ? void 0 : s.styleSettings) == null ? void 0 : ot.confettiColors]), z = (a) => {
|
|
976
976
|
const c = Number.parseFloat(a);
|
|
977
977
|
return Number.isFinite(c) ? String(Math.round(c)) : a;
|
|
978
978
|
}, g = (a) => {
|
|
979
979
|
const c = (a ?? []).filter((h) => {
|
|
980
980
|
var I, v;
|
|
981
|
-
const b = (I = h == null ? void 0 : h.name) == null ? void 0 : I.trim(),
|
|
982
|
-
return !(!b || !
|
|
981
|
+
const b = (I = h == null ? void 0 : h.name) == null ? void 0 : I.trim(), _ = (v = h == null ? void 0 : h.value) == null ? void 0 : v.trim();
|
|
982
|
+
return !(!b || !_ || b.toLowerCase() === "title");
|
|
983
983
|
});
|
|
984
984
|
return c.length ? c.map((h) => `${h.name}: ${h.value}`).join(" · ") : null;
|
|
985
985
|
}, J = (a) => {
|
|
986
986
|
var c;
|
|
987
987
|
return ((c = a.product) == null ? void 0 : c.title) ?? a.displayName ?? a.title;
|
|
988
|
-
},
|
|
988
|
+
}, W = (a) => {
|
|
989
989
|
const c = J(a), h = g(a.selectedOptions);
|
|
990
990
|
return [c, h].filter(Boolean).join(" — ");
|
|
991
|
-
}, [ve, O] = k(e),
|
|
991
|
+
}, [ve, O] = k(e), E = V(null), F = (a) => {
|
|
992
992
|
const c = Number(a);
|
|
993
993
|
if (!Number.isFinite(c)) return a;
|
|
994
994
|
if (l)
|
|
@@ -1000,20 +1000,20 @@ function fr(i) {
|
|
|
1000
1000
|
}, se = ((it = s == null ? void 0 : s.title) == null ? void 0 : it.trim()) || "Build your bundle", xe = T(() => {
|
|
1001
1001
|
const a = Number((s == null ? void 0 : s.maxBundleSize) ?? NaN), c = Number.isFinite(a) ? Math.floor(a) : 100;
|
|
1002
1002
|
return Math.max(2, Math.min(100, c));
|
|
1003
|
-
}, [s == null ? void 0 : s.maxBundleSize]), pe = C >= xe,
|
|
1003
|
+
}, [s == null ? void 0 : s.maxBundleSize]), pe = C >= xe, L = T(() => [...p].sort((a, c) => a.displayName.localeCompare(c.displayName)), [p]), M = T(() => {
|
|
1004
1004
|
const a = Q.trim().toLowerCase();
|
|
1005
|
-
if (!a) return
|
|
1005
|
+
if (!a) return L;
|
|
1006
1006
|
const c = a.split(/\s+/).filter(Boolean), h = (b) => {
|
|
1007
1007
|
var v;
|
|
1008
|
-
const
|
|
1009
|
-
|
|
1008
|
+
const _ = [];
|
|
1009
|
+
_.push(b.displayName), (v = b.product) != null && v.title && _.push(b.product.title);
|
|
1010
1010
|
for (const B of b.selectedOptions ?? [])
|
|
1011
|
-
|
|
1012
|
-
const I =
|
|
1011
|
+
_.push(B.name), _.push(B.value);
|
|
1012
|
+
const I = _.join(" ").toLowerCase();
|
|
1013
1013
|
return c.every((B) => I.includes(B));
|
|
1014
1014
|
};
|
|
1015
|
-
return
|
|
1016
|
-
}, [Q,
|
|
1015
|
+
return L.filter(h);
|
|
1016
|
+
}, [Q, L]), S = T(() => [...(s == null ? void 0 : s.rules) ?? []].sort((a, c) => a.minBundleSize - c.minBundleSize), [s == null ? void 0 : s.rules]), m = T(() => Math.max(0, te - C), [C, te]), Y = T(() => {
|
|
1017
1017
|
let a = null;
|
|
1018
1018
|
for (const c of S)
|
|
1019
1019
|
C >= c.minBundleSize && (a = c);
|
|
@@ -1030,21 +1030,21 @@ function fr(i) {
|
|
|
1030
1030
|
}, [S]), Ce = ce ?? Be, Te = T(() => {
|
|
1031
1031
|
const a = new Map(p.map((h) => [h.id, h]));
|
|
1032
1032
|
let c = 0;
|
|
1033
|
-
for (const [h, b] of Object.entries(
|
|
1034
|
-
const
|
|
1035
|
-
if (
|
|
1033
|
+
for (const [h, b] of Object.entries(w)) {
|
|
1034
|
+
const _ = b ?? 0;
|
|
1035
|
+
if (_ <= 0) continue;
|
|
1036
1036
|
const I = a.get(h), v = Number(I == null ? void 0 : I.price);
|
|
1037
|
-
Number.isFinite(v) && (c += v *
|
|
1037
|
+
Number.isFinite(v) && (c += v * _);
|
|
1038
1038
|
}
|
|
1039
1039
|
return Math.round(c * 100) / 100;
|
|
1040
|
-
}, [p,
|
|
1040
|
+
}, [p, w]), _t = T(() => {
|
|
1041
1041
|
if (!ce) return Te;
|
|
1042
1042
|
const a = Te * (1 - ce / 100);
|
|
1043
1043
|
return Math.round(a * 100) / 100;
|
|
1044
|
-
}, [ce, Te]), Xe = T(() => S.length ? Math.max(...S.map((a) => a.minBundleSize)) : 0, [S]),
|
|
1044
|
+
}, [ce, Te]), Xe = T(() => S.length ? Math.max(...S.map((a) => a.minBundleSize)) : 0, [S]), qe = T(() => {
|
|
1045
1045
|
const a = new Map(p.map((c) => [c.id, c]));
|
|
1046
|
-
return
|
|
1047
|
-
}, [p,
|
|
1046
|
+
return j.map((c) => a.get(c)).filter((c) => !!c);
|
|
1047
|
+
}, [p, j]), wt = T(() => {
|
|
1048
1048
|
var c;
|
|
1049
1049
|
const a = /* @__PURE__ */ new Map();
|
|
1050
1050
|
for (const h of S) {
|
|
@@ -1056,64 +1056,64 @@ function fr(i) {
|
|
|
1056
1056
|
});
|
|
1057
1057
|
}
|
|
1058
1058
|
return a;
|
|
1059
|
-
}, [S]), yt = T(() => Math.max(Xe || te,
|
|
1060
|
-
|
|
1059
|
+
}, [S]), yt = T(() => Math.max(Xe || te, qe.length), [qe.length, Xe, te]), [$e, Ze] = k(!0), Je = V(m);
|
|
1060
|
+
D(() => {
|
|
1061
1061
|
if (((s == null ? void 0 : s.ctaButtonMode) || "add_to_cart") === "add_to_cart_checkout") {
|
|
1062
1062
|
const c = Je.current > 0;
|
|
1063
1063
|
Ze(!(c && m === 0));
|
|
1064
1064
|
}
|
|
1065
1065
|
Je.current = m;
|
|
1066
1066
|
}, [m, s == null ? void 0 : s.ctaButtonMode]);
|
|
1067
|
-
const
|
|
1067
|
+
const Ue = V(null), et = V(null), tt = V(null), nt = V(C), rt = (a) => {
|
|
1068
1068
|
const c = et.current;
|
|
1069
1069
|
if (!c) return;
|
|
1070
1070
|
const h = c.querySelector(`[data-variant-row="${a}"]`);
|
|
1071
1071
|
if (!h) return;
|
|
1072
|
-
const b = c.getBoundingClientRect(),
|
|
1073
|
-
if (
|
|
1074
|
-
const B = Math.max(0, c.scrollHeight - c.clientHeight), H =
|
|
1072
|
+
const b = c.getBoundingClientRect(), _ = h.getBoundingClientRect(), I = 8;
|
|
1073
|
+
if (_.top >= b.top + I && _.bottom <= b.bottom - I) return;
|
|
1074
|
+
const B = Math.max(0, c.scrollHeight - c.clientHeight), H = _.top - b.top + _.height / 2, ee = c.scrollTop + H - c.clientHeight / 2, oe = Math.min(B, Math.max(0, ee));
|
|
1075
1075
|
c.scrollTo({ top: oe, behavior: "smooth" });
|
|
1076
1076
|
};
|
|
1077
|
-
return
|
|
1077
|
+
return D(() => {
|
|
1078
1078
|
if (!e) return;
|
|
1079
1079
|
const a = (c) => {
|
|
1080
1080
|
c.key === "Escape" && t();
|
|
1081
1081
|
};
|
|
1082
1082
|
return window.addEventListener("keydown", a), () => window.removeEventListener("keydown", a);
|
|
1083
|
-
}, [t, e]),
|
|
1083
|
+
}, [t, e]), D(() => {
|
|
1084
1084
|
if (typeof window > "u") return;
|
|
1085
1085
|
const a = () => Me({ width: window.innerWidth, height: window.innerHeight });
|
|
1086
1086
|
return a(), window.addEventListener("resize", a), () => window.removeEventListener("resize", a);
|
|
1087
|
-
}, []),
|
|
1088
|
-
if (
|
|
1087
|
+
}, []), D(() => {
|
|
1088
|
+
if (E.current != null && (window.clearTimeout(E.current), E.current = null), e) {
|
|
1089
1089
|
O(!0);
|
|
1090
1090
|
return;
|
|
1091
1091
|
}
|
|
1092
|
-
|
|
1093
|
-
O(!1),
|
|
1092
|
+
E.current = window.setTimeout(() => {
|
|
1093
|
+
O(!1), E.current = null;
|
|
1094
1094
|
}, 220);
|
|
1095
|
-
}, [e]),
|
|
1096
|
-
|
|
1097
|
-
}, []),
|
|
1098
|
-
|
|
1099
|
-
}, []),
|
|
1095
|
+
}, [e]), D(() => () => {
|
|
1096
|
+
E.current != null && window.clearTimeout(E.current);
|
|
1097
|
+
}, []), D(() => () => {
|
|
1098
|
+
q.current != null && window.clearTimeout(q.current);
|
|
1099
|
+
}, []), D(() => () => {
|
|
1100
1100
|
re.current != null && window.clearTimeout(re.current);
|
|
1101
|
-
}, []),
|
|
1101
|
+
}, []), D(() => {
|
|
1102
1102
|
if (!e || !N) return;
|
|
1103
1103
|
const a = requestAnimationFrame(() => {
|
|
1104
1104
|
var c;
|
|
1105
1105
|
return (c = de.current) == null ? void 0 : c.focus();
|
|
1106
1106
|
});
|
|
1107
1107
|
return () => cancelAnimationFrame(a);
|
|
1108
|
-
}, [e, N]),
|
|
1108
|
+
}, [e, N]), D(() => {
|
|
1109
1109
|
const a = nt.current;
|
|
1110
1110
|
if (nt.current = C, C <= a) return;
|
|
1111
1111
|
const c = tt.current;
|
|
1112
1112
|
if (!c) return;
|
|
1113
|
-
const h = S.some((v) => v.minBundleSize === C), b = S.find((v) => v.minBundleSize > C),
|
|
1114
|
-
if (
|
|
1113
|
+
const h = S.some((v) => v.minBundleSize === C), b = S.find((v) => v.minBundleSize > C), _ = b && h ? b.minBundleSize - 1 : b ? null : C - 1;
|
|
1114
|
+
if (_ == null || _ < 0) return;
|
|
1115
1115
|
const I = requestAnimationFrame(() => {
|
|
1116
|
-
const v = c.querySelector(`[data-box-slot="${
|
|
1116
|
+
const v = c.querySelector(`[data-box-slot="${_}"]`);
|
|
1117
1117
|
if (!v) return;
|
|
1118
1118
|
const B = c.getBoundingClientRect(), ee = v.getBoundingClientRect().right - B.right;
|
|
1119
1119
|
if (ee <= 1) return;
|
|
@@ -1121,32 +1121,32 @@ function fr(i) {
|
|
|
1121
1121
|
c.scrollTo({ left: be, behavior: "smooth" });
|
|
1122
1122
|
});
|
|
1123
1123
|
return () => cancelAnimationFrame(I);
|
|
1124
|
-
}, [C, S]),
|
|
1124
|
+
}, [C, S]), D(() => {
|
|
1125
1125
|
if (!e) return;
|
|
1126
1126
|
const a = Ie.current;
|
|
1127
1127
|
if (Ie.current = C, C <= a) return;
|
|
1128
1128
|
const c = S.find((h) => h.minBundleSize === C);
|
|
1129
|
-
c && (ge(`You received a ${
|
|
1129
|
+
c && (ge(`You received a ${z(c.discountPercent)}% discount!`), Re((h) => h + 1), Se(!0), re.current != null && window.clearTimeout(re.current), re.current = window.setTimeout(() => {
|
|
1130
1130
|
Se(!1), re.current = null;
|
|
1131
|
-
},
|
|
1132
|
-
}, [C, e, S]),
|
|
1131
|
+
}, Le));
|
|
1132
|
+
}, [C, e, S]), D(() => {
|
|
1133
1133
|
if (!e || !ae || !K) return;
|
|
1134
1134
|
const a = requestAnimationFrame(() => {
|
|
1135
1135
|
var B;
|
|
1136
|
-
const c =
|
|
1137
|
-
x:
|
|
1136
|
+
const c = we.current, h = c == null ? void 0 : c.getBoundingClientRect(), b = (B = Ue.current) == null ? void 0 : B.getBoundingClientRect(), _ = h ? h.left + h.width / 2 : b ? b.left + b.width / 2 : window.innerWidth / 2, I = h ? h.top + h.height / 2 : b ? b.top + b.height / 2 : window.innerHeight / 2, v = {
|
|
1137
|
+
x: _ - 2,
|
|
1138
1138
|
y: I - 2,
|
|
1139
1139
|
w: 4,
|
|
1140
1140
|
h: 4
|
|
1141
1141
|
};
|
|
1142
|
-
|
|
1143
|
-
fe(!1),
|
|
1142
|
+
je(v), ye((H) => H + 1), fe(!0), q.current != null && window.clearTimeout(q.current), q.current = window.setTimeout(() => {
|
|
1143
|
+
fe(!1), q.current = null;
|
|
1144
1144
|
}, me);
|
|
1145
1145
|
});
|
|
1146
1146
|
return () => cancelAnimationFrame(a);
|
|
1147
|
-
}, [Z, K, me, ae, e]),
|
|
1147
|
+
}, [Z, K, me, ae, e]), D(() => {
|
|
1148
1148
|
var a;
|
|
1149
|
-
e && ((a =
|
|
1149
|
+
e && ((a = Ue.current) == null || a.focus());
|
|
1150
1150
|
}, [e]), ve ? /* @__PURE__ */ P(
|
|
1151
1151
|
"div",
|
|
1152
1152
|
{
|
|
@@ -1158,8 +1158,8 @@ function fr(i) {
|
|
|
1158
1158
|
a.target === a.currentTarget && t();
|
|
1159
1159
|
},
|
|
1160
1160
|
children: [
|
|
1161
|
-
|
|
1162
|
-
|
|
1161
|
+
Ae && ne && he.width > 0 && he.height > 0 ? /* @__PURE__ */ f(
|
|
1162
|
+
Dt,
|
|
1163
1163
|
{
|
|
1164
1164
|
width: he.width,
|
|
1165
1165
|
height: he.height,
|
|
@@ -1175,8 +1175,8 @@ function fr(i) {
|
|
|
1175
1175
|
},
|
|
1176
1176
|
Pe
|
|
1177
1177
|
) : null,
|
|
1178
|
-
/* @__PURE__ */ P("aside", { ref:
|
|
1179
|
-
ae && K ? /* @__PURE__ */ f("div", { className: u.celebrationOverlay, "aria-hidden": "true", children: /* @__PURE__ */ f("div", { ref:
|
|
1178
|
+
/* @__PURE__ */ P("aside", { ref: Ue, className: [u.panel, e ? u.panelOpen : u.panelClosed].filter(Boolean).join(" "), tabIndex: -1, children: [
|
|
1179
|
+
ae && K ? /* @__PURE__ */ f("div", { className: u.celebrationOverlay, "aria-hidden": "true", children: /* @__PURE__ */ f("div", { ref: we, className: u.celebrationChip, children: K }, Z) }) : null,
|
|
1180
1180
|
/* @__PURE__ */ P("header", { className: [u.header, N ? u.headerSearchOpen : null].filter(Boolean).join(" "), children: [
|
|
1181
1181
|
/* @__PURE__ */ f(
|
|
1182
1182
|
"button",
|
|
@@ -1186,7 +1186,7 @@ function fr(i) {
|
|
|
1186
1186
|
"aria-label": N ? "Search (expanded)" : "Search",
|
|
1187
1187
|
"aria-expanded": N,
|
|
1188
1188
|
onClick: () => {
|
|
1189
|
-
|
|
1189
|
+
R(!0);
|
|
1190
1190
|
},
|
|
1191
1191
|
children: /* @__PURE__ */ f(Vt, { size: 18, "aria-hidden": "true" })
|
|
1192
1192
|
}
|
|
@@ -1204,7 +1204,7 @@ function fr(i) {
|
|
|
1204
1204
|
placeholder: "Search",
|
|
1205
1205
|
onChange: (a) => y(a.target.value),
|
|
1206
1206
|
onBlur: () => {
|
|
1207
|
-
Q.trim() === "" &&
|
|
1207
|
+
Q.trim() === "" && R(!1);
|
|
1208
1208
|
}
|
|
1209
1209
|
}
|
|
1210
1210
|
),
|
|
@@ -1234,7 +1234,7 @@ function fr(i) {
|
|
|
1234
1234
|
!o && s && !s.isActive ? /* @__PURE__ */ f("p", { className: u.error, children: "Bundles are not active." }) : null,
|
|
1235
1235
|
/* @__PURE__ */ f("div", { className: u.variants, children: /* @__PURE__ */ f("ul", { className: u.variantList, children: M.map((a) => {
|
|
1236
1236
|
var ee, oe, be, Ne;
|
|
1237
|
-
const c =
|
|
1237
|
+
const c = w[a.id] ?? 0, h = J(a), b = g(a.selectedOptions), _ = W(a), I = Ce, v = Number(a.price), B = I != null && Number.isFinite(I) && I > 0 && Number.isFinite(v), H = B ? Math.round(v * (1 - I / 100) * 100) / 100 : null;
|
|
1238
1238
|
return /* @__PURE__ */ P("li", { className: u.variantRow, "data-variant-row": a.id, children: [
|
|
1239
1239
|
/* @__PURE__ */ P("div", { className: u.variantLeft, children: [
|
|
1240
1240
|
/* @__PURE__ */ f("div", { className: u.variantThumb, "aria-hidden": "true", children: (ee = a.image) != null && ee.url ? /* @__PURE__ */ f(
|
|
@@ -1242,7 +1242,7 @@ function fr(i) {
|
|
|
1242
1242
|
{
|
|
1243
1243
|
className: u.variantThumbImg,
|
|
1244
1244
|
src: a.image.url,
|
|
1245
|
-
alt: a.image.altText ??
|
|
1245
|
+
alt: a.image.altText ?? _,
|
|
1246
1246
|
loading: "lazy"
|
|
1247
1247
|
}
|
|
1248
1248
|
) : /* @__PURE__ */ f("div", { className: u.variantThumbFallback, children: ((Ne = (be = (oe = a.product) == null ? void 0 : oe.title) == null ? void 0 : be.slice(0, 1)) == null ? void 0 : Ne.toUpperCase()) ?? "•" }) }),
|
|
@@ -1250,8 +1250,8 @@ function fr(i) {
|
|
|
1250
1250
|
/* @__PURE__ */ f("div", { className: u.variantName, children: h }),
|
|
1251
1251
|
b ? /* @__PURE__ */ f("div", { className: u.variantMeta, children: b }) : null,
|
|
1252
1252
|
/* @__PURE__ */ P("div", { className: u.variantPriceRow, children: [
|
|
1253
|
-
B ? /* @__PURE__ */ f("span", { className: u.variantCompareAt, children:
|
|
1254
|
-
/* @__PURE__ */ f("span", { className: u.variantPrice, children:
|
|
1253
|
+
B ? /* @__PURE__ */ f("span", { className: u.variantCompareAt, children: F(Number.isFinite(v) ? v.toFixed(2) : a.price) }) : null,
|
|
1254
|
+
/* @__PURE__ */ f("span", { className: u.variantPrice, children: F(
|
|
1255
1255
|
H != null ? H.toFixed(2) : Number.isFinite(v) ? v.toFixed(2) : a.price
|
|
1256
1256
|
) })
|
|
1257
1257
|
] })
|
|
@@ -1261,10 +1261,10 @@ function fr(i) {
|
|
|
1261
1261
|
"button",
|
|
1262
1262
|
{
|
|
1263
1263
|
type: "button",
|
|
1264
|
-
onClick: () =>
|
|
1264
|
+
onClick: () => A(a.id, 1),
|
|
1265
1265
|
disabled: r || pe,
|
|
1266
1266
|
className: u.addToBundleButton,
|
|
1267
|
-
"aria-label": `Add ${
|
|
1267
|
+
"aria-label": `Add ${_} to bundle`,
|
|
1268
1268
|
children: "Add"
|
|
1269
1269
|
}
|
|
1270
1270
|
) : /* @__PURE__ */ P("div", { className: u.qtyControls, children: [
|
|
@@ -1272,10 +1272,10 @@ function fr(i) {
|
|
|
1272
1272
|
"button",
|
|
1273
1273
|
{
|
|
1274
1274
|
type: "button",
|
|
1275
|
-
onClick: () =>
|
|
1275
|
+
onClick: () => A(a.id, c - 1),
|
|
1276
1276
|
disabled: r || c <= 0,
|
|
1277
1277
|
className: u.qtyButton,
|
|
1278
|
-
"aria-label": `Decrease ${
|
|
1278
|
+
"aria-label": `Decrease ${_}`,
|
|
1279
1279
|
children: "−"
|
|
1280
1280
|
}
|
|
1281
1281
|
),
|
|
@@ -1284,10 +1284,10 @@ function fr(i) {
|
|
|
1284
1284
|
"button",
|
|
1285
1285
|
{
|
|
1286
1286
|
type: "button",
|
|
1287
|
-
onClick: () =>
|
|
1287
|
+
onClick: () => A(a.id, c + 1),
|
|
1288
1288
|
disabled: r || pe,
|
|
1289
1289
|
className: u.qtyButton,
|
|
1290
|
-
"aria-label": `Increase ${
|
|
1290
|
+
"aria-label": `Increase ${_}`,
|
|
1291
1291
|
children: "+"
|
|
1292
1292
|
}
|
|
1293
1293
|
)
|
|
@@ -1298,26 +1298,26 @@ function fr(i) {
|
|
|
1298
1298
|
/* @__PURE__ */ P("footer", { className: u.footer, ref: ie, children: [
|
|
1299
1299
|
/* @__PURE__ */ f("div", { className: u.boxSummaryWindow, ref: tt, children: /* @__PURE__ */ f("div", { className: u.boxSummaryRow, "aria-label": "Bundle box summary", children: Array.from({ length: yt }).map((a, c) => {
|
|
1300
1300
|
var ee, oe, be, Ne;
|
|
1301
|
-
const h =
|
|
1301
|
+
const h = qe[c], b = wt.get(c), _ = !!h, I = !!b, v = I && !_, B = b ? `${b.discountPercent}% off` : null, H = _ ? h.displayName : `Slot ${c + 1}`;
|
|
1302
1302
|
return /* @__PURE__ */ P("div", { "data-box-slot": c, className: u.boxSlot, children: [
|
|
1303
1303
|
/* @__PURE__ */ f(
|
|
1304
1304
|
"div",
|
|
1305
1305
|
{
|
|
1306
1306
|
className: [
|
|
1307
1307
|
u.boxItem,
|
|
1308
|
-
|
|
1308
|
+
_ ? u.boxItemFilled : u.boxItemPlaceholder,
|
|
1309
1309
|
I ? u.boxItemThreshold : null,
|
|
1310
|
-
|
|
1310
|
+
_ ? u.boxItemClickable : null
|
|
1311
1311
|
].filter(Boolean).join(" "),
|
|
1312
|
-
role:
|
|
1313
|
-
tabIndex:
|
|
1314
|
-
onClick:
|
|
1315
|
-
onKeyDown:
|
|
1316
|
-
(
|
|
1312
|
+
role: _ ? "button" : void 0,
|
|
1313
|
+
tabIndex: _ ? 0 : void 0,
|
|
1314
|
+
onClick: _ ? () => rt(h.id) : void 0,
|
|
1315
|
+
onKeyDown: _ ? (ze) => {
|
|
1316
|
+
(ze.key === "Enter" || ze.key === " ") && (ze.preventDefault(), rt(h.id));
|
|
1317
1317
|
} : void 0,
|
|
1318
1318
|
"aria-label": v && B ? `${H}. Unlocks ${B}.` : H,
|
|
1319
1319
|
title: v && B ? `${H} • Unlocks ${B}` : H,
|
|
1320
|
-
children:
|
|
1320
|
+
children: _ ? (ee = h.image) != null && ee.url ? /* @__PURE__ */ f(
|
|
1321
1321
|
"img",
|
|
1322
1322
|
{
|
|
1323
1323
|
className: u.boxItemImage,
|
|
@@ -1342,23 +1342,23 @@ function fr(i) {
|
|
|
1342
1342
|
"% Discount"
|
|
1343
1343
|
] }) : /* @__PURE__ */ f("span", {}),
|
|
1344
1344
|
/* @__PURE__ */ f("span", { children: ce ? /* @__PURE__ */ P(gt, { children: [
|
|
1345
|
-
/* @__PURE__ */ f("span", { className: u.ctaTotalsStrike, children:
|
|
1345
|
+
/* @__PURE__ */ f("span", { className: u.ctaTotalsStrike, children: F(Te.toFixed(2)) }),
|
|
1346
1346
|
" ",
|
|
1347
|
-
/* @__PURE__ */ f("span", { className: u.ctaTotalsPrice, children:
|
|
1348
|
-
] }) : /* @__PURE__ */ f("span", { className: u.ctaTotalsPrice, children:
|
|
1347
|
+
/* @__PURE__ */ f("span", { className: u.ctaTotalsPrice, children: F(_t.toFixed(2)) })
|
|
1348
|
+
] }) : /* @__PURE__ */ f("span", { className: u.ctaTotalsPrice, children: F(Te.toFixed(2)) }) })
|
|
1349
1349
|
] })
|
|
1350
1350
|
}
|
|
1351
1351
|
),
|
|
1352
1352
|
(() => {
|
|
1353
1353
|
const a = (s == null ? void 0 : s.ctaButtonMode) || "add_to_cart";
|
|
1354
|
-
return a === "add_to_cart_checkout" ? m > 0 ? /* @__PURE__ */ f("button", { type: "button", onClick: X, disabled:
|
|
1354
|
+
return a === "add_to_cart_checkout" ? m > 0 ? /* @__PURE__ */ f("button", { type: "button", onClick: X, disabled: !$, className: u.cta, children: r ? "Adding…" : `Add ${m} more product${m === 1 ? "" : "s"}` }) : /* @__PURE__ */ P("div", { className: `${u.ctaButtonGroup} ${$e ? u.ctaButtonGroupAnimating : ""}`, children: [
|
|
1355
1355
|
/* @__PURE__ */ f(
|
|
1356
1356
|
"button",
|
|
1357
1357
|
{
|
|
1358
1358
|
type: "button",
|
|
1359
1359
|
onClick: X,
|
|
1360
|
-
disabled:
|
|
1361
|
-
className: `${u.ctaDualLeft} ${
|
|
1360
|
+
disabled: !$,
|
|
1361
|
+
className: `${u.ctaDualLeft} ${$e ? u.ctaDualLeftAnimating : ""}`,
|
|
1362
1362
|
children: /* @__PURE__ */ f("span", { children: r ? "Adding…" : "Add to Basket" })
|
|
1363
1363
|
}
|
|
1364
1364
|
),
|
|
@@ -1366,13 +1366,13 @@ function fr(i) {
|
|
|
1366
1366
|
"button",
|
|
1367
1367
|
{
|
|
1368
1368
|
type: "button",
|
|
1369
|
-
onClick:
|
|
1370
|
-
disabled:
|
|
1371
|
-
className: `${u.ctaDualRight} ${
|
|
1369
|
+
onClick: U,
|
|
1370
|
+
disabled: !$,
|
|
1371
|
+
className: `${u.ctaDualRight} ${$e ? u.ctaDualRightAnimating : ""}`,
|
|
1372
1372
|
children: /* @__PURE__ */ f("span", { children: r ? "Processing…" : "Checkout" })
|
|
1373
1373
|
}
|
|
1374
1374
|
)
|
|
1375
|
-
] }) : a === "checkout" ? /* @__PURE__ */ f("button", { type: "button", onClick:
|
|
1375
|
+
] }) : a === "checkout" ? /* @__PURE__ */ f("button", { type: "button", onClick: U, disabled: !$, className: u.cta, children: r ? "Processing…" : m > 0 ? `Add ${m} more product${m === 1 ? "" : "s"}` : "Checkout" }) : /* @__PURE__ */ f("button", { type: "button", onClick: X, disabled: !$, className: u.cta, children: r ? "Adding…" : m > 0 ? `Add ${m} more product${m === 1 ? "" : "s"}` : "Add to Basket" });
|
|
1376
1376
|
})(),
|
|
1377
1377
|
/* @__PURE__ */ P("div", { className: u.poweredBy, children: [
|
|
1378
1378
|
"powered by ",
|
|
@@ -1406,8 +1406,8 @@ async function sr() {
|
|
|
1406
1406
|
for (const s of r) {
|
|
1407
1407
|
const p = o[s];
|
|
1408
1408
|
if (!p) continue;
|
|
1409
|
-
const
|
|
1410
|
-
|
|
1409
|
+
const w = new DOMParser().parseFromString(p, "text/html"), j = w.getElementById(s) || w.querySelector(s), A = document.getElementById(s) || document.querySelector(s);
|
|
1410
|
+
A && j && A.replaceWith(j);
|
|
1411
1411
|
}
|
|
1412
1412
|
const n = document.querySelector("cart-drawer");
|
|
1413
1413
|
if (n && typeof n.open == "function") {
|
|
@@ -1420,7 +1420,7 @@ async function sr() {
|
|
|
1420
1420
|
} catch {
|
|
1421
1421
|
}
|
|
1422
1422
|
}
|
|
1423
|
-
async function
|
|
1423
|
+
async function De(i, e) {
|
|
1424
1424
|
const t = await fetch(i, {
|
|
1425
1425
|
method: "POST",
|
|
1426
1426
|
headers: {
|
|
@@ -1443,7 +1443,7 @@ function mr() {
|
|
|
1443
1443
|
quantity: t.quantity,
|
|
1444
1444
|
properties: Ge(t.attributes)
|
|
1445
1445
|
}));
|
|
1446
|
-
await
|
|
1446
|
+
await De("/cart/add.js", { items: e });
|
|
1447
1447
|
},
|
|
1448
1448
|
async linesAddForCheckout(i) {
|
|
1449
1449
|
const e = i.map((t) => ({
|
|
@@ -1451,11 +1451,11 @@ function mr() {
|
|
|
1451
1451
|
quantity: t.quantity,
|
|
1452
1452
|
properties: Ge(t.attributes)
|
|
1453
1453
|
}));
|
|
1454
|
-
await
|
|
1454
|
+
await De("/cart/add.js", { items: e });
|
|
1455
1455
|
},
|
|
1456
1456
|
async linesUpdate(i) {
|
|
1457
1457
|
for (const e of i)
|
|
1458
|
-
await
|
|
1458
|
+
await De("/cart/change.js", {
|
|
1459
1459
|
id: e.id,
|
|
1460
1460
|
quantity: e.quantity,
|
|
1461
1461
|
properties: Ge(e.attributes)
|
|
@@ -1463,7 +1463,7 @@ function mr() {
|
|
|
1463
1463
|
},
|
|
1464
1464
|
async linesRemove(i) {
|
|
1465
1465
|
for (const e of i)
|
|
1466
|
-
await
|
|
1466
|
+
await De("/cart/change.js", { id: e, quantity: 0 });
|
|
1467
1467
|
},
|
|
1468
1468
|
openCartUI() {
|
|
1469
1469
|
window.setTimeout(() => {
|
|
@@ -1478,7 +1478,7 @@ function mr() {
|
|
|
1478
1478
|
export {
|
|
1479
1479
|
fr as BundleBuilderDrawer,
|
|
1480
1480
|
hr as BundleButton,
|
|
1481
|
-
|
|
1481
|
+
Fe as BundleLineAttributeKeys,
|
|
1482
1482
|
ur as BundleProvider,
|
|
1483
1483
|
mr as createLiquidCartAdapter,
|
|
1484
1484
|
Ye as useBundleBuilder,
|