@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 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 Le, { useState as k, useRef as V, useEffect as E, useCallback as le, useMemo as T, createContext as vt, useContext as xt, forwardRef as mt, createElement as Qe } from "react";
4
- const De = {
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 we(i, e, t) {
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, _ = s ?? `${e}/api/public/bundle-analytics`, [A, R] = k(!1), [C, te] = k(!n), [U, X] = k(!1), [z, N] = k(null), [F, Q] = k((n == null ? void 0 : n.currencyCode) ?? null), [y, de] = k((n == null ? void 0 : n.config) ?? null), [ie, _e] = k(
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
- E(() => {
126
- var W;
125
+ D(() => {
126
+ var z;
127
127
  if (n) return;
128
- (W = Pe.current) == null || W.abort();
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), _e([]), Q(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), _e(g.eligibleVariants ?? []);
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), _e([]), Q(null);
140
+ N(J), de(null), we([]), Q(null);
141
141
  }).finally(() => te(!1)), () => d.abort();
142
- }, [e, t, n, l]), E(() => {
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]), E(() => {
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 (R(!0), _)
154
+ if (A(!0), w)
155
155
  try {
156
156
  const d = ke();
157
- we(_, t, {
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
- }, [_, t]), ne = le(() => {
170
- if (_)
169
+ }, [w, t]), ne = le(() => {
170
+ if (w)
171
171
  try {
172
172
  const d = ke();
173
- we(_, t, {
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
- R(!1), typeof window < "u" && window.location.hash === st && window.history.replaceState(null, "", window.location.pathname + window.location.search);
186
- }, [_, t]);
187
- E(() => {
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 Ae = le(() => {
195
- R((d) => {
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
- we(_, t, {
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((W) => {
208
- console.warn("[Bundle Analytics] Failed to track drawer opened:", W);
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
- }, [_, t, ne]), Re = T(() => {
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]), $ = T(() => {
219
- const d = (y == null ? void 0 : y.rules) ?? [], x = d.length ? Math.min(...d.map((W) => W.minBundleSize)) : 2;
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 W = ut(x);
224
+ const z = ut(x);
225
225
  Me((g) => {
226
- const J = g.selections[d] ?? 0, j = W - J, ve = Object.values(g.selections).reduce((q, M) => q + (M || 0), 0), O = j > 0 ? Math.min(j, Math.max(0, Re - ve)) : j, L = J + O;
227
- let D;
228
- if (L <= 0) {
229
- const { [d]: q, ...M } = g.selections;
230
- D = M;
231
- } else J === L ? D = g.selections : D = { ...g.selections, [d]: L };
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 q = -O;
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 && q > 0) {
241
- q--;
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 (D === g.selections && se === g.order) return g;
249
- const xe = ve, pe = Object.values(D).reduce((q, M) => q + (M || 0), 0);
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 q = ke(), M = {
252
+ const L = ke(), M = {
253
253
  eventType: "VARIANT_SELECTION_CHANGED",
254
254
  shop: t,
255
- anonymousUserId: q,
255
+ anonymousUserId: L,
256
256
  before: { ...g.selections },
257
- after: { ...D },
257
+ after: { ...F },
258
258
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
259
259
  };
260
- we(_, t, M), xe === 0 && pe >= 1 && we(_, t, {
260
+ _e(w, t, M), xe === 0 && pe >= 1 && _e(w, t, {
261
261
  ...M,
262
262
  mixpanelEvent: "bundle_started"
263
- }), xe < $ && pe >= $ && we(_, t, {
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: D, order: se };
269
+ return { selections: F, order: se };
270
270
  });
271
- }, [Re, $, fe, _, t]), me = le(() => Me({ selections: {}, order: [] }), []), Z = he.selections, Fe = he.order, K = T(() => Object.values(Z).reduce((d, x) => d + (x || 0), 0), [Z]), ge = T(() => !(C || U || z || !(y != null && y.isActive) || K < $), [K, y == null ? void 0 : y.isActive, z, C, $, U]), ae = le(async (d) => {
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(), W = (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) => ({
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: De.bundleId, value: x },
279
- { key: De.bundleConfig, value: r },
280
- { key: De.bundleSource, value: "bundle_builder" },
281
- ...W ? [{ key: De.bundleTitle, value: W }] : []
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 j = 0;
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) && (j += Ce * ce);
291
+ Number.isFinite(Ce) && (W += Ce * ce);
292
292
  }
293
- j = Math.round(j * 100) / 100;
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 L = O ? (() => {
298
+ const E = O ? (() => {
299
299
  const m = Number.parseFloat(O.discountPercent);
300
300
  return Number.isFinite(m) && m > 0 ? m : null;
301
- })() : null, D = L ? Math.round(j * (1 - L / 100) * 100) / 100 : j, se = j - D, xe = g.map((m) => m.merchandiseId), pe = (O == null ? void 0 : O.handle) ?? "", q = ((M = O == null ? void 0 : O.label) == null ? void 0 : M.trim()) || "";
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
- we(_, t, {
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: j,
314
- discountedPrice: D,
315
- currency: F ?? void 0,
313
+ grossPrice: W,
314
+ discountedPrice: F,
315
+ currency: R ?? void 0,
316
316
  discountThresholdIdentifier: pe,
317
- discountLabel: q,
318
- discountPercentage: L,
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
- F,
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]), qe = T(
363
+ }, [ae, o]), Le = T(
364
364
  () => ({
365
- isOpen: A,
365
+ isOpen: j,
366
366
  open: ye,
367
367
  close: ne,
368
- toggle: Ae,
368
+ toggle: je,
369
369
  loading: C,
370
- submitting: U,
371
- error: z,
372
- currencyCode: F,
370
+ submitting: $,
371
+ error: U,
372
+ currencyCode: R,
373
373
  config: y,
374
374
  eligibleVariants: ie,
375
375
  selections: Z,
376
- selectionOrder: Fe,
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
- A,
386
+ j,
387
387
  ye,
388
388
  ne,
389
- Ae,
389
+ je,
390
390
  C,
391
+ $,
391
392
  U,
392
- z,
393
- F,
393
+ R,
394
394
  y,
395
395
  ie,
396
396
  Z,
397
- Fe,
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: qe, children: p });
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 je, dt;
434
+ var We, dt;
435
435
  function Nt() {
436
- if (dt) return je;
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 je = i, je;
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 At {
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 Rt {
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 At(this.context, this.getOptions, r, n);
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: _, recycle: A, numberOfPieces: R, debug: C, tweenFunction: te, tweenDuration: U } = this.getOptions();
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, z = A ? X : s;
627
- if (z < R) {
628
- p !== R && (this.tweenProgress = 0, this.tweenFrom = z, this.lastNumberOfPieces = R), this.tweenProgress = Math.min(U, Math.max(0, this.tweenProgress + r));
629
- const N = te(this.tweenProgress, this.tweenFrom, R, U), F = Math.round(N - z);
630
- for (let Q = 0; Q < F; 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 += F;
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 F = this.particles[N];
637
- F.update(r), (F.y > n.height || F.y < -100 || F.x > n.width + 100 || F.x < -100) && (A && z <= R ? this.particles[N] = this.getParticle() : this.removeParticleAt(N));
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 || z < R;
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 Ft {
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: _ } = this, A = Math.min(r - this.lastFrameTime, 50);
700
- if (s && A < 1e3 / 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 ? A % s : 0), n && (_.fillStyle = "white", _.clearRect(0, 0, p.width, p.height)), this.generator.animate(A) ? this.rafId = requestAnimationFrame(this.update) : (l && typeof l == "function" && this.generator.particlesGenerated > 0 && l.call(this, this), this._options.run = !1);
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 Rt(this.canvas, () => this.options), this.options = t, this.update();
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 Dt = Le.createRef();
725
- class Ke extends Le.Component {
724
+ const Ft = Ee.createRef();
725
+ class Ke extends Ee.Component {
726
726
  constructor(e) {
727
- super(e), this.canvas = Le.createRef(), this.canvas = e.canvasRef || Dt;
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 Ft(this.canvas.current, e);
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 Et = Le.forwardRef((i, e) => f(Ke, { canvasRef: e, ...i }));
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 Lt = (i) => i.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), qt = (i) => i.replace(
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 = qt(i);
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(), $t = (i) => {
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 Ut = {
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 zt = mt(
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
- ...Ut,
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 && !$t(s) && { "aria-hidden": "true" },
835
+ ...!n && !qt(s) && { "aria-hidden": "true" },
836
836
  ...s
837
837
  },
838
838
  [
839
- ...l.map(([_, A]) => Qe(_, A)),
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 Wt = (i, e) => {
850
+ const zt = (i, e) => {
851
851
  const t = mt(
852
- ({ className: o, ...r }, n) => Qe(zt, {
852
+ ({ className: o, ...r }, n) => Qe(Ut, {
853
853
  ref: n,
854
854
  iconNode: e,
855
855
  className: bt(
856
- `lucide-${Lt(ht(i))}`,
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 jt = [
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 = Wt("search", jt), Gt = "_backdrop_227w4_1", Qt = "_celebrationOverlay_227w4_14", Yt = "_celebrationChip_227w4_23", Ht = "_backdropOpen_227w4_74", Kt = "_backdropClosed_227w4_78", Xt = "_panel_227w4_82", Zt = "_panelOpen_227w4_102", Jt = "_panelClosed_227w4_106", en = "_header_227w4_145", tn = "_headerCenter_227w4_154", nn = "_title_227w4_162", rn = "_searchIconButton_227w4_171", on = "_headerTitleWrap_227w4_193", an = "_headerSearchWrap_227w4_197", sn = "_headerSearchOpen_227w4_209", cn = "_searchBar_227w4_221", ln = "_searchInput_227w4_233", un = "_searchClearButton_227w4_254", dn = "_closeButton_227w4_276", hn = "_body_227w4_309", fn = "_muted_227w4_314", mn = "_error_227w4_319", pn = "_variants_227w4_324", bn = "_variantList_227w4_328", wn = "_variantRow_227w4_336", _n = "_variantLeft_227w4_344", yn = "_addToBundleButton_227w4_351", gn = "_variantThumb_227w4_379", vn = "_variantThumbImg_227w4_389", xn = "_variantThumbFallback_227w4_396", Cn = "_variantInfo_227w4_406", In = "_variantName_227w4_410", Sn = "_variantMeta_227w4_419", Bn = "_variantPriceRow_227w4_427", Tn = "_variantCompareAt_227w4_434", Nn = "_variantPrice_227w4_427", kn = "_qtyControls_227w4_445", On = "_qtyButton_227w4_451", Mn = "_qtyValue_227w4_476", Pn = "_footer_227w4_483", An = "_poweredBy_227w4_490", Rn = "_boxSummaryWindow_227w4_502", Fn = "_boxSummaryRow_227w4_519", Dn = "_boxSlot_227w4_527", En = "_boxItem_227w4_535", Ln = "_boxItemClickable_227w4_547", qn = "_boxThresholdLabel_227w4_556", $n = "_boxItemPlaceholder_227w4_567", Un = "_boxItemFilled_227w4_573", zn = "_boxItemThreshold_227w4_579", Wn = "_boxItemDiscountText_227w4_587", jn = "_boxItemPlus_227w4_595", Vn = "_boxItemImage_227w4_602", Gn = "_boxItemFallback_227w4_609", Qn = "_ctaButtonGroup_227w4_620", Yn = "_ctaButtonGroupAnimating_227w4_627", Hn = "_cta_227w4_620", Kn = "_ctaDualLeft_227w4_655", Xn = "_ctaDualLeftAnimating_227w4_673", Zn = "_ctaDualRight_227w4_686", Jn = "_ctaDualRightAnimating_227w4_702", er = "_ctaTotals_227w4_713", tr = "_ctaDiscountBadge_227w4_721", nr = "_ctaTotalsWrap_227w4_735", rr = "_ctaTotalsWrapVisible_227w4_748", or = "_ctaTotalsStrike_227w4_755", ir = "_ctaTotalsPrice_227w4_762", u = {
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: wn,
900
- variantLeft: _n,
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: An,
916
- boxSummaryWindow: Rn,
917
- boxSummaryRow: Fn,
918
- boxSlot: Dn,
919
- boxItem: En,
920
- boxItemClickable: Ln,
921
- boxThresholdLabel: qn,
922
- boxItemPlaceholder: $n,
923
- boxItemFilled: Un,
924
- boxItemThreshold: zn,
925
- boxItemDiscountText: Wn,
926
- boxItemPlus: jn,
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: A,
956
- setQuantity: R,
954
+ selections: w,
955
+ selectionOrder: j,
956
+ setQuantity: A,
957
957
  bundleSize: C,
958
958
  minRequired: te,
959
- canSubmit: U,
959
+ canSubmit: $,
960
960
  submit: X,
961
- submitAndCheckout: z
962
- } = Ye(), [N, F] = k(!1), [Q, y] = k(""), de = V(null), ie = V(null), _e = V(null), [he, Me] = k(() => typeof window > "u" ? { width: 0, height: 0 } : { width: window.innerWidth, height: window.innerHeight }), [Pe, ye] = k(0), [ne, Ae] = k(null), [Re, fe] = k(!1), $ = V(null), Ie = V(C), me = 7e3, [Z, Fe] = k(0), [K, ge] = k(null), [ae, Se] = k(!1), re = V(null), qe = 2800, d = [
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]), W = (a) => {
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(), w = (v = h == null ? void 0 : h.value) == null ? void 0 : v.trim();
982
- return !(!b || !w || b.toLowerCase() === "title");
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
- }, j = (a) => {
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), L = V(null), D = (a) => {
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, q = T(() => [...p].sort((a, c) => a.displayName.localeCompare(c.displayName)), [p]), M = T(() => {
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 q;
1005
+ if (!a) return L;
1006
1006
  const c = a.split(/\s+/).filter(Boolean), h = (b) => {
1007
1007
  var v;
1008
- const w = [];
1009
- w.push(b.displayName), (v = b.product) != null && v.title && w.push(b.product.title);
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
- w.push(B.name), w.push(B.value);
1012
- const I = w.join(" ").toLowerCase();
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 q.filter(h);
1016
- }, [Q, q]), 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(() => {
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 w = b ?? 0;
1035
- if (w <= 0) continue;
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 * w);
1037
+ Number.isFinite(v) && (c += v * _);
1038
1038
  }
1039
1039
  return Math.round(c * 100) / 100;
1040
- }, [p, _]), wt = T(() => {
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]), $e = T(() => {
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 A.map((c) => a.get(c)).filter((c) => !!c);
1047
- }, [p, A]), _t = T(() => {
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, $e.length), [$e.length, Xe, te]), [Ue, Ze] = k(!0), Je = V(m);
1060
- E(() => {
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 ze = V(null), et = V(null), tt = V(null), nt = V(C), rt = (a) => {
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(), w = h.getBoundingClientRect(), I = 8;
1073
- if (w.top >= b.top + I && w.bottom <= b.bottom - I) return;
1074
- const B = Math.max(0, c.scrollHeight - c.clientHeight), H = w.top - b.top + w.height / 2, ee = c.scrollTop + H - c.clientHeight / 2, oe = Math.min(B, Math.max(0, ee));
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 E(() => {
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]), 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
- }, []), E(() => {
1088
- if (L.current != null && (window.clearTimeout(L.current), L.current = null), e) {
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
- L.current = window.setTimeout(() => {
1093
- O(!1), L.current = null;
1092
+ E.current = window.setTimeout(() => {
1093
+ O(!1), E.current = null;
1094
1094
  }, 220);
1095
- }, [e]), E(() => () => {
1096
- L.current != null && window.clearTimeout(L.current);
1097
- }, []), E(() => () => {
1098
- $.current != null && window.clearTimeout($.current);
1099
- }, []), E(() => () => {
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
- }, []), E(() => {
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]), E(() => {
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), w = b && h ? b.minBundleSize - 1 : b ? null : C - 1;
1114
- if (w == null || w < 0) return;
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="${w}"]`);
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]), E(() => {
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 ${W(c.discountPercent)}% discount!`), Fe((h) => h + 1), Se(!0), re.current != null && window.clearTimeout(re.current), re.current = window.setTimeout(() => {
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
- }, qe));
1132
- }, [C, e, S]), E(() => {
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 = _e.current, h = c == null ? void 0 : c.getBoundingClientRect(), b = (B = ze.current) == null ? void 0 : B.getBoundingClientRect(), w = 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: w - 2,
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
- Ae(v), ye((H) => H + 1), fe(!0), $.current != null && window.clearTimeout($.current), $.current = window.setTimeout(() => {
1143
- fe(!1), $.current = null;
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]), E(() => {
1147
+ }, [Z, K, me, ae, e]), D(() => {
1148
1148
  var a;
1149
- e && ((a = ze.current) == null || a.focus());
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
- Re && ne && he.width > 0 && he.height > 0 ? /* @__PURE__ */ f(
1162
- Et,
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: ze, 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: _e, className: u.celebrationChip, children: K }, Z) }) : null,
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
- F(!0);
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() === "" && F(!1);
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 = _[a.id] ?? 0, h = J(a), b = g(a.selectedOptions), w = j(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;
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 ?? w,
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: D(Number.isFinite(v) ? v.toFixed(2) : a.price) }) : null,
1254
- /* @__PURE__ */ f("span", { className: u.variantPrice, children: D(
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: () => R(a.id, 1),
1264
+ onClick: () => A(a.id, 1),
1265
1265
  disabled: r || pe,
1266
1266
  className: u.addToBundleButton,
1267
- "aria-label": `Add ${w} to bundle`,
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: () => R(a.id, c - 1),
1275
+ onClick: () => A(a.id, c - 1),
1276
1276
  disabled: r || c <= 0,
1277
1277
  className: u.qtyButton,
1278
- "aria-label": `Decrease ${w}`,
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: () => R(a.id, c + 1),
1287
+ onClick: () => A(a.id, c + 1),
1288
1288
  disabled: r || pe,
1289
1289
  className: u.qtyButton,
1290
- "aria-label": `Increase ${w}`,
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 = $e[c], b = _t.get(c), w = !!h, I = !!b, v = I && !w, B = b ? `${b.discountPercent}% off` : null, H = w ? h.displayName : `Slot ${c + 1}`;
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
- w ? u.boxItemFilled : u.boxItemPlaceholder,
1308
+ _ ? u.boxItemFilled : u.boxItemPlaceholder,
1309
1309
  I ? u.boxItemThreshold : null,
1310
- w ? u.boxItemClickable : null
1310
+ _ ? u.boxItemClickable : null
1311
1311
  ].filter(Boolean).join(" "),
1312
- role: w ? "button" : void 0,
1313
- tabIndex: w ? 0 : void 0,
1314
- onClick: w ? () => rt(h.id) : void 0,
1315
- onKeyDown: w ? (We) => {
1316
- (We.key === "Enter" || We.key === " ") && (We.preventDefault(), rt(h.id));
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: w ? (ee = h.image) != null && ee.url ? /* @__PURE__ */ f(
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: D(Te.toFixed(2)) }),
1345
+ /* @__PURE__ */ f("span", { className: u.ctaTotalsStrike, children: F(Te.toFixed(2)) }),
1346
1346
  " ",
1347
- /* @__PURE__ */ f("span", { className: u.ctaTotalsPrice, children: D(wt.toFixed(2)) })
1348
- ] }) : /* @__PURE__ */ f("span", { className: u.ctaTotalsPrice, children: D(Te.toFixed(2)) }) })
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: !U, className: u.cta, children: r ? "Adding…" : `Add ${m} more product${m === 1 ? "" : "s"}` }) : /* @__PURE__ */ P("div", { className: `${u.ctaButtonGroup} ${Ue ? u.ctaButtonGroupAnimating : ""}`, children: [
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: !U,
1361
- className: `${u.ctaDualLeft} ${Ue ? u.ctaDualLeftAnimating : ""}`,
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: z,
1370
- disabled: !U,
1371
- className: `${u.ctaDualRight} ${Ue ? u.ctaDualRightAnimating : ""}`,
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: z, disabled: !U, className: u.cta, children: r ? "Processing…" : m > 0 ? `Add ${m} more product${m === 1 ? "" : "s"}` : "Checkout" }) : /* @__PURE__ */ f("button", { type: "button", onClick: X, disabled: !U, className: u.cta, children: r ? "Adding…" : m > 0 ? `Add ${m} more product${m === 1 ? "" : "s"}` : "Add to Basket" });
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 _ = new DOMParser().parseFromString(p, "text/html"), A = _.getElementById(s) || _.querySelector(s), R = document.getElementById(s) || document.querySelector(s);
1410
- R && A && R.replaceWith(A);
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 Ee(i, e) {
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 Ee("/cart/add.js", { items: e });
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 Ee("/cart/add.js", { items: e });
1454
+ await De("/cart/add.js", { items: e });
1455
1455
  },
1456
1456
  async linesUpdate(i) {
1457
1457
  for (const e of i)
1458
- await Ee("/cart/change.js", {
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 Ee("/cart/change.js", { id: e, quantity: 0 });
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
- De as BundleLineAttributeKeys,
1481
+ Fe as BundleLineAttributeKeys,
1482
1482
  ur as BundleProvider,
1483
1483
  mr as createLiquidCartAdapter,
1484
1484
  Ye as useBundleBuilder,