@lime-bundles/widget 2.2.0 → 2.3.0

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.
@@ -1,4 +1,4 @@
1
- "use strict";var LimeBundles=(()=>{var Y=Object.defineProperty;var He=Object.getOwnPropertyDescriptor;var $e=Object.getOwnPropertyNames;var We=Object.prototype.hasOwnProperty;var qe=(e,t)=>{for(var n in t)Y(e,n,{get:t[n],enumerable:!0})},Ne=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of $e(t))!We.call(e,r)&&r!==n&&Y(e,r,{get:()=>t[r],enumerable:!(i=He(t,r))||i.enumerable});return e};var ze=e=>Ne(Y({},"__esModule",{value:!0}),e);var zt={};qe(zt,{LimeBundleElement:()=>j});var ne=class extends Error{constructor(e){super(e.map(t=>t.message).join("; ")),this.errors=e,this.name="StorefrontApiError"}},je="2025-10";function K(e){let t=e.apiVersion??je,n=`https://${e.shopDomain}/api/${t}/graphql.json`;return{async query(i,r,a){let o={"Content-Type":"application/json","X-Shopify-Storefront-Access-Token":e.accessToken};e.buyerIp&&(o["Shopify-Storefront-Buyer-IP"]=e.buyerIp);let d=await fetch(n,{method:"POST",headers:o,body:JSON.stringify({query:i,variables:r}),signal:a?.signal});if(!d.ok)throw new ne([{message:`Storefront API error: ${d.status} ${d.statusText}`}]);let l=await d.json();if(l.errors?.length)throw new ne(l.errors);return l.data}}}var se=`#graphql
1
+ "use strict";var LimeBundles=(()=>{var Y=Object.defineProperty;var We=Object.getOwnPropertyDescriptor;var qe=Object.getOwnPropertyNames;var ze=Object.prototype.hasOwnProperty;var je=(e,t)=>{for(var r in t)Y(e,r,{get:t[r],enumerable:!0})},Ge=(e,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of qe(t))!ze.call(e,n)&&n!==r&&Y(e,n,{get:()=>t[n],enumerable:!(i=We(t,n))||i.enumerable});return e};var Qe=e=>Ge(Y({},"__esModule",{value:!0}),e);var Yt={};je(Yt,{LimeBundleElement:()=>G});var ae=class extends Error{constructor(e){super(e.map(t=>t.message).join("; ")),this.errors=e,this.name="StorefrontApiError"}},Ke="2025-10";function X(e){let t=e.apiVersion??Ke,r=`https://${e.shopDomain}/api/${t}/graphql.json`;return{async query(i,n,a){let o={"Content-Type":"application/json","X-Shopify-Storefront-Access-Token":e.accessToken};e.buyerIp&&(o["Shopify-Storefront-Buyer-IP"]=e.buyerIp);let d=await fetch(r,{method:"POST",headers:o,body:JSON.stringify({query:i,variables:n}),signal:a?.signal});if(!d.ok)throw new ae([{message:`Storefront API error: ${d.status} ${d.statusText}`}]);let l=await d.json();if(l.errors?.length)throw new ae(l.errors);return l.data}}}var pe=`#graphql
2
2
  query BundleMetaobject($id: ID!) {
3
3
  metaobject(id: $id) {
4
4
  id
@@ -23,6 +23,8 @@
23
23
  availableForSale
24
24
  price { amount currencyCode }
25
25
  compareAtPrice { amount currencyCode }
26
+ unitPrice { amount currencyCode }
27
+ unitPriceMeasurement { referenceValue referenceUnit }
26
28
  selectedOptions { name value }
27
29
  }
28
30
  }
@@ -46,6 +48,8 @@
46
48
  availableForSale
47
49
  price { amount currencyCode }
48
50
  compareAtPrice { amount currencyCode }
51
+ unitPrice { amount currencyCode }
52
+ unitPriceMeasurement { referenceValue referenceUnit }
49
53
  selectedOptions { name value }
50
54
  }
51
55
  }
@@ -71,6 +75,8 @@
71
75
  availableForSale
72
76
  price { amount currencyCode }
73
77
  compareAtPrice { amount currencyCode }
78
+ unitPrice { amount currencyCode }
79
+ unitPriceMeasurement { referenceValue referenceUnit }
74
80
  selectedOptions { name value }
75
81
  }
76
82
  }
@@ -82,7 +88,7 @@
82
88
  }
83
89
  }
84
90
  }
85
- `,ce=`#graphql
91
+ `,be=`#graphql
86
92
  query ShopCustomCss {
87
93
  shop {
88
94
  metafield(namespace: "$app", key: "custom_css") {
@@ -90,7 +96,7 @@
90
96
  }
91
97
  }
92
98
  }
93
- `,ue=`#graphql
99
+ `,he=`#graphql
94
100
  query BundlesForProduct($handle: String!) {
95
101
  product(handle: $handle) {
96
102
  id
@@ -122,6 +128,8 @@
122
128
  availableForSale
123
129
  price { amount currencyCode }
124
130
  compareAtPrice { amount currencyCode }
131
+ unitPrice { amount currencyCode }
132
+ unitPriceMeasurement { referenceValue referenceUnit }
125
133
  selectedOptions { name value }
126
134
  }
127
135
  }
@@ -145,6 +153,8 @@
145
153
  availableForSale
146
154
  price { amount currencyCode }
147
155
  compareAtPrice { amount currencyCode }
156
+ unitPrice { amount currencyCode }
157
+ unitPriceMeasurement { referenceValue referenceUnit }
148
158
  selectedOptions { name value }
149
159
  }
150
160
  }
@@ -170,6 +180,8 @@
170
180
  availableForSale
171
181
  price { amount currencyCode }
172
182
  compareAtPrice { amount currencyCode }
183
+ unitPrice { amount currencyCode }
184
+ unitPriceMeasurement { referenceValue referenceUnit }
173
185
  selectedOptions { name value }
174
186
  }
175
187
  }
@@ -185,42 +197,42 @@
185
197
  }
186
198
  }
187
199
  }
188
- `,pe=`#graphql
200
+ `,me=`#graphql
189
201
  mutation CartCreate($input: CartInput!) {
190
202
  cartCreate(input: $input) {
191
203
  cart { id checkoutUrl }
192
204
  userErrors { field message }
193
205
  }
194
206
  }
195
- `,be=`#graphql
207
+ `,ge=`#graphql
196
208
  mutation CartLinesAdd($cartId: ID!, $lines: [CartLineInput!]!) {
197
209
  cartLinesAdd(cartId: $cartId, lines: $lines) {
198
210
  cart { id checkoutUrl }
199
211
  userErrors { field message }
200
212
  }
201
213
  }
202
- `,U=class extends Error{constructor(e,t){super(e),this.reason=t,this.name="BundleParseError"}},D={header:{textColor:"#FFFFFF",headerStyle:"gradient",gradientStart:"#C62828",gradientEnd:"#AD1457",saveBadgeBgColor:"#FFFFFF",saveBadgeTextColor:"#AD1457",saveBadgeBorderColor:"#FFFFFF",saveBadgeBorderWidth:0,saveBadgeBorderRadius:8,countdownBgColor:"#FFF0F3",countdownTextColor:"#C62828"},layout:{backgroundColor:"#FFFFFF",borderColor:"#E5E5E5",borderWidth:1,borderRadius:12},productList:{textColor:"#1A1A1A",imageBorderWidth:0,imageBorderColor:"#E5E5E5",imageBorderRadius:8,variantBorderWidth:1,variantBorderColor:"#E5E5E5",variantBorderRadius:8,showPrice:!0,showCompareAtPrice:!0,showCountBubble:!0,countBubbleBgColor:"#1A1A1A",countBubbleTextColor:"#FFFFFF"},pricing:{showSaveBadge:!0,showComparePrice:!0,showPerUnitPrice:!0,showItemCount:!0,showCompareAtPrice:!0},cta:{ctaText:"Add to cart",primaryColor:"#1A1A1A",buttonTextColor:"#FFFFFF",borderWidth:0,borderColor:"#1A1A1A",borderRadius:12},savingsBar:{visible:!0,bgColor:"#EDFBF1",textColor:"#2DB554",borderWidth:0,borderColor:"#2DB554",borderRadius:8},countdown:{showCountdown:!0},popularBadge:{visible:!0,text:"Most Popular",bgColor:"#1A1A1A",textColor:"#FFFFFF",borderWidth:0,borderColor:"#1A1A1A",borderRadius:12},outOfStockBehavior:"show_greyed_out",showSearch:!0,pickerBgColor:"#FFFFFF",pickerTextColor:"#1A1A1A",pickerBorderWidth:0,pickerBorderColor:"#E5E5E5",pickerBorderRadius:16,pickerSearchBorderWidth:1,pickerSearchBorderColor:"#E5E5E5",pickerSearchBorderRadius:8,pickerProductBorderWidth:0,pickerProductBorderColor:"#E5E5E5",pickerProductBorderRadius:8,pickerShowCountBubble:!0,pickerCountBubbleBgColor:"#1A1A1A",pickerCountBubbleTextColor:"#FFFFFF",pickerAddBgColor:"#1A1A1A",pickerAddLabelColor:"#FFFFFF",pickerAddBorderWidth:0,pickerAddBorderColor:"#1A1A1A",pickerAddBorderRadius:8,pickerVariantBorderWidth:1,pickerVariantBorderColor:"#1A1A1A",pickerVariantBorderRadius:8,tierBorderColor:"#E5E5E5",tierBorderWidth:1,tierBorderRadius:12,tierSelectedBorderColor:"#1A1A1A",tierSelectedBorderWidth:2,defaultTier:"first"};function Ge(e){if(!e||typeof e!="object")return D;let t=e;return{...D,...t,defaultTier:Qe(t.defaultTier),header:{...D.header,...t.header??{}},layout:{...D.layout,...t.layout??{}},productList:{...D.productList,...t.productList??{}},pricing:{...D.pricing,...t.pricing??{}},cta:{...D.cta,...t.cta??{}},savingsBar:{...D.savingsBar,...t.savingsBar??{}},countdown:{...D.countdown,...t.countdown??{}},popularBadge:{...D.popularBadge,...t.popularBadge??{}}}}function Qe(e){return e==="first"||e==="best_value"||typeof e=="number"&&Number.isInteger(e)&&e>=0?e:D.defaultTier}function Ye(e){return{primaryColor:e.cta.primaryColor,backgroundColor:e.layout.backgroundColor,textColor:e.productList.textColor,borderColor:e.layout.borderColor,borderWidth:e.layout.borderWidth,buttonTextColor:e.cta.buttonTextColor,ctaBorderWidth:e.cta.borderWidth,ctaBorderColor:e.cta.borderColor,ctaBorderRadius:e.cta.borderRadius,savingsBarBgColor:e.savingsBar.bgColor,savingsBarTextColor:e.savingsBar.textColor,savingsBarBorderWidth:e.savingsBar.borderWidth,savingsBarBorderColor:e.savingsBar.borderColor,savingsBarBorderRadius:e.savingsBar.borderRadius,borderRadius:e.layout.borderRadius,headerTextColor:e.header.textColor,saveBadgeBgColor:e.header.saveBadgeBgColor,saveBadgeTextColor:e.header.saveBadgeTextColor,saveBadgeBorderColor:e.header.saveBadgeBorderColor,saveBadgeBorderWidth:e.header.saveBadgeBorderWidth,saveBadgeBorderRadius:e.header.saveBadgeBorderRadius,countdownBgColor:e.header.countdownBgColor,countdownTextColor:e.header.countdownTextColor,headerStyle:e.header.headerStyle,headerGradientStart:e.header.gradientStart,headerGradientEnd:e.header.gradientEnd,showSaveBadge:e.pricing.showSaveBadge,imageBorderWidth:e.productList.imageBorderWidth,imageBorderColor:e.productList.imageBorderColor,imageBorderRadius:e.productList.imageBorderRadius,variantBorderWidth:e.productList.variantBorderWidth,variantBorderColor:e.productList.variantBorderColor,variantBorderRadius:e.productList.variantBorderRadius,countBubbleBgColor:e.productList.countBubbleBgColor,countBubbleTextColor:e.productList.countBubbleTextColor,showProductPrice:e.productList.showPrice,showProductCompareAtPrice:e.productList.showCompareAtPrice,showCountBubble:e.productList.showCountBubble,showCountdown:e.countdown.showCountdown,ctaText:e.cta.ctaText,outOfStockBehavior:e.outOfStockBehavior,showComparePrice:e.pricing.showComparePrice,showPerUnitPrice:e.pricing.showPerUnitPrice,showItemCount:e.pricing.showItemCount,showCompareAtPrice:e.pricing.showCompareAtPrice,showMostPopular:e.popularBadge.visible,popularBadgeText:e.popularBadge.text,popularBadgeBgColor:e.popularBadge.bgColor,popularBadgeTextColor:e.popularBadge.textColor,popularBadgeBorderWidth:e.popularBadge.borderWidth,popularBadgeBorderColor:e.popularBadge.borderColor,popularBadgeBorderRadius:e.popularBadge.borderRadius,showSearch:e.showSearch,pickerBgColor:e.pickerBgColor,pickerTextColor:e.pickerTextColor,pickerBorderWidth:e.pickerBorderWidth,pickerBorderColor:e.pickerBorderColor,pickerBorderRadius:e.pickerBorderRadius,pickerSearchBorderWidth:e.pickerSearchBorderWidth,pickerSearchBorderColor:e.pickerSearchBorderColor,pickerSearchBorderRadius:e.pickerSearchBorderRadius,pickerProductBorderWidth:e.pickerProductBorderWidth,pickerProductBorderColor:e.pickerProductBorderColor,pickerProductBorderRadius:e.pickerProductBorderRadius,pickerShowCountBubble:e.pickerShowCountBubble,pickerCountBubbleBgColor:e.pickerCountBubbleBgColor,pickerCountBubbleTextColor:e.pickerCountBubbleTextColor,pickerAddBgColor:e.pickerAddBgColor,pickerAddLabelColor:e.pickerAddLabelColor,pickerAddBorderWidth:e.pickerAddBorderWidth,pickerAddBorderColor:e.pickerAddBorderColor,pickerAddBorderRadius:e.pickerAddBorderRadius,pickerVariantBorderWidth:e.pickerVariantBorderWidth,pickerVariantBorderColor:e.pickerVariantBorderColor,pickerVariantBorderRadius:e.pickerVariantBorderRadius,tierBorderColor:e.tierBorderColor,tierBorderWidth:e.tierBorderWidth,tierBorderRadius:e.tierBorderRadius,tierSelectedBorderColor:e.tierSelectedBorderColor,tierSelectedBorderWidth:e.tierSelectedBorderWidth,defaultTier:e.defaultTier,...e.popularBadge.tierIndex!==void 0&&{mostPopularTierIndex:e.popularBadge.tierIndex}}}var Ke={primaryColor:"--lb-primary-color",backgroundColor:"--lb-bg",textColor:"--lb-text",imageBorderWidth:"--lb-image-border-width",imageBorderColor:"--lb-image-border-color",imageBorderRadius:"--lb-image-border-radius",variantBorderWidth:"--lb-variant-border-width",variantBorderColor:"--lb-variant-border-color",variantBorderRadius:"--lb-variant-radius",countBubbleBgColor:"--lb-qty-badge-bg",countBubbleTextColor:"--lb-qty-badge-color",borderColor:"--lb-border",borderWidth:"--lb-border-width",buttonTextColor:"--lb-btn-text",borderRadius:"--lb-radius",headerTextColor:"--lb-header-text",saveBadgeBgColor:"--lb-save-badge-bg",saveBadgeTextColor:"--lb-save-badge-text",saveBadgeBorderColor:"--lb-save-badge-border-color",saveBadgeBorderWidth:"--lb-save-badge-border-width",saveBadgeBorderRadius:"--lb-save-badge-radius",countdownBgColor:"--lb-countdown-bg",countdownTextColor:"--lb-countdown-text",ctaBorderWidth:"--lb-cta-border-width",ctaBorderColor:"--lb-cta-border-color",ctaBorderRadius:"--lb-cta-radius",savingsBarBgColor:"--lb-savings-bar-bg",savingsBarTextColor:"--lb-savings-bar-text",savingsBarBorderWidth:"--lb-savings-bar-border-width",savingsBarBorderColor:"--lb-savings-bar-border-color",savingsBarBorderRadius:"--lb-savings-bar-radius",tierBorderColor:"--lb-tier-border-color",tierBorderWidth:"--lb-tier-border-width",tierBorderRadius:"--lb-tier-radius",tierSelectedBorderColor:"--lb-tier-selected-border-color",tierSelectedBorderWidth:"--lb-tier-selected-border-width",popularBadgeBgColor:"--lb-popular-badge-bg",popularBadgeTextColor:"--lb-popular-badge-text",popularBadgeBorderWidth:"--lb-popular-badge-border-width",popularBadgeBorderColor:"--lb-popular-badge-border-color",popularBadgeBorderRadius:"--lb-popular-badge-radius",headerGradientStart:"--lb-header-start",headerGradientEnd:"--lb-header-end",pickerBgColor:"--lb-picker-bg",pickerTextColor:"--lb-picker-text",pickerBorderWidth:"--lb-picker-border-width",pickerBorderColor:"--lb-picker-border-color",pickerBorderRadius:"--lb-picker-radius",pickerSearchBorderWidth:"--lb-picker-search-border-width",pickerSearchBorderColor:"--lb-picker-search-border-color",pickerSearchBorderRadius:"--lb-picker-search-radius",pickerProductBorderWidth:"--lb-picker-product-border-width",pickerProductBorderColor:"--lb-picker-product-border-color",pickerProductBorderRadius:"--lb-picker-product-radius",pickerCountBubbleBgColor:"--lb-picker-qty-badge-bg",pickerCountBubbleTextColor:"--lb-picker-qty-badge-color",pickerAddBgColor:"--lb-picker-add-bg",pickerAddLabelColor:"--lb-picker-add-label",pickerAddBorderWidth:"--lb-picker-add-border-width",pickerAddBorderColor:"--lb-picker-add-border-color",pickerAddBorderRadius:"--lb-picker-add-radius",pickerVariantBorderWidth:"--lb-picker-variant-border-width",pickerVariantBorderColor:"--lb-picker-variant-border-color",pickerVariantBorderRadius:"--lb-picker-variant-radius"},Xe=new Set(["borderRadius","borderWidth","saveBadgeBorderWidth","saveBadgeBorderRadius","tierBorderWidth","tierBorderRadius","tierSelectedBorderWidth","savingsBarBorderWidth","savingsBarBorderRadius","ctaBorderWidth","ctaBorderRadius","popularBadgeBorderWidth","popularBadgeBorderRadius","imageBorderWidth","imageBorderRadius","variantBorderWidth","variantBorderRadius","pickerBorderWidth","pickerBorderRadius","pickerSearchBorderWidth","pickerSearchBorderRadius","pickerProductBorderWidth","pickerProductBorderRadius","pickerAddBorderWidth","pickerAddBorderRadius","pickerVariantBorderWidth","pickerVariantBorderRadius"]);function he(e,t){let n=Ye(t);for(let[i,r]of Object.entries(Ke)){let a=n[i];if(a==null)continue;let o=Xe.has(i)?`${a}px`:String(a);e.style.setProperty(r,o)}e.style.setProperty("--lb-product-price-display",t.productList.showPrice?"block":"none"),e.style.setProperty("--lb-product-compare-display",t.productList.showCompareAtPrice?"inline":"none"),e.style.setProperty("--lb-qty-badge-display",t.productList.showCountBubble?"flex":"none"),e.style.setProperty("--lb-picker-qty-badge-display",t.pickerShowCountBubble?"flex":"none"),t.header.headerStyle==="solid"?e.style.setProperty("--lb-header-bg",t.header.gradientStart):e.style.setProperty("--lb-header-bg",`linear-gradient(135deg, ${t.header.gradientStart}, ${t.header.gradientEnd})`)}var Je=new Set(["fixed","mix_match","volume"]),Ze=new Set(["active"]);function X(e,t){try{return et(e,t)}catch(n){if(n instanceof U)return null;throw n}}function et(e,t){let n=new Map(t.map(v=>[v.key,v])),i=n.get("title")?.value??"Bundle",r=n.get("bundle_type")?.value,a=n.get("status")?.value;if(!r||!Je.has(r))throw new U(`Invalid or missing bundle_type: ${r??"null"}`,"invalid_type");let o=r;if(!a||!Ze.has(a))throw new U(`Bundle is not active: status=${a??"null"}`,"inactive");let d=a,l=n.get("starts_at")?.value??null,u=n.get("ends_at")?.value??null,c=new Date;if(l){let v=new Date(l);if(Number.isNaN(v.getTime()))throw new U(`Invalid starts_at: ${l}`,"invalid_type");if(v>c)throw new U(`Bundle not yet started: starts_at=${l}`,"not_started")}if(u){let v=new Date(u);if(Number.isNaN(v.getTime()))throw new U(`Invalid ends_at: ${u}`,"invalid_type");if(v<c)throw new U(`Bundle has expired: ends_at=${u}`,"expired")}let p=tt(n),f=rt(n),h=nt(n),m={id:e,title:i,description:n.get("description")?.value||null,status:d,products:p,discountConfig:f,widgetConfig:h,startsAt:l,endsAt:u,discountLabel:n.get("discount_label")?.value??null,selectedVariantIds:it(n),productQuantities:ie(n,"product_quantities"),variantQuantities:ie(n,"variant_quantities"),abTestId:n.get("ab_test_id")?.value??null,abVariantB:ot(n)};switch(o){case"fixed":return{...m,bundleType:"fixed"};case"volume":return{...m,bundleType:"volume",volumeTiers:at(n)};case"mix_match":return{...m,bundleType:"mix_match",minQuantity:oe(n,"min_quantity",{min:1}),maxQuantity:oe(n,"max_quantity",{min:1})}}}function tt(e){let t=[],n=e.get("products");if(n?.reference&&"variants"in n.reference&&t.push(n.reference),n?.references?.nodes)for(let r of n.references.nodes)"variants"in r?t.push(r):"products"in r&&r.products?.nodes&&t.push(...r.products.nodes);let i=e.get("collection");if(i?.references?.nodes)for(let r of i.references.nodes)"products"in r&&r.products?.nodes&&t.push(...r.products.nodes);return t}function rt(e){return{discountType:e.get("discount_type")?.value??"percentage",discountValue:parseFloat(e.get("discount_value")?.value??"0"),allowStacking:e.get("allow_stacking")?.value==="true"}}function nt(e){return Ge(z(e,"widget_config"))}function it(e){let t=z(e,"selected_variant_ids");if(!Array.isArray(t))return null;let n=[];for(let i of t)Array.isArray(i)?n.push(i.filter(r=>typeof r=="string")):n.push([]);return n}function ie(e,t){let n=z(e,t);if(!n||typeof n!="object"||Array.isArray(n))return{};let i={};for(let[r,a]of Object.entries(n)){let o=typeof a=="number"?a:Number(a);Number.isFinite(o)&&o>=0&&(i[r]=o)}return i}function ot(e){if(!e.get("ab_test_id")?.value)return null;let n={},i=e.get("ab_title")?.value;i&&(n.title=i);let r=e.get("ab_description")?.value;r&&(n.description=r);let a=e.get("ab_discount_type")?.value,o=e.get("ab_discount_value")?.value;if(a&&(a==="percentage"||a==="fixed_amount")&&o){let l=parseFloat(o);Number.isFinite(l)&&(n.discountConfig={discountType:a,discountValue:l,allowStacking:e.get("allow_stacking")?.value==="true"})}let d=z(e,"ab_volume_tiers");return Array.isArray(d)&&(n.volumeTiers=d.filter(l=>typeof l=="object"&&l!==null).map(me)),Object.keys(n).length===0?null:n}function at(e){let t=z(e,"volume_tiers");return Array.isArray(t)?t.filter(n=>typeof n=="object"&&n!==null).map(me):[]}function me(e){let t=Number(e.minQuantity??0),n={minQuantity:Number.isFinite(t)&&t>=0?t:0};return typeof e.percentage=="number"&&Number.isFinite(e.percentage)&&(n.percentage=e.percentage),typeof e.amount=="number"&&Number.isFinite(e.amount)&&(n.amount=e.amount),n}function z(e,t){let n=e.get(t)?.value;if(!n)return null;try{return JSON.parse(n)}catch{return null}}function oe(e,t,n={}){let i=e.get(t)?.value;if(!i)return null;let r=parseInt(i,10);return isNaN(r)||n.min!==void 0&&r<n.min?null:r}function ge(e){let t=e.abVariantB;if(!t)return e;let n=t.title??e.title,i=t.description!==void 0?t.description:e.description,r=t.discountConfig??e.discountConfig;switch(e.bundleType){case"volume":return{...e,title:n,description:i,discountConfig:r,volumeTiers:t.volumeTiers??e.volumeTiers};case"mix_match":return{...e,title:n,description:i,discountConfig:r};case"fixed":return{...e,title:n,description:i,discountConfig:r}}}async function fe(e,t){await Ce(e,{shopDomain:e.shopDomain,eventType:"bundle_impression",bundleGid:t.bundleGid,bundleType:t.bundleType,productId:t.productId,abTestId:t.abTestId,abVariant:t.abVariant,occurredAt:new Date().toISOString()})}async function ve(e,t){await Ce(e,{shopDomain:e.shopDomain,eventType:"bundle_add_to_cart",...t,occurredAt:new Date().toISOString()})}function xe(e,t){if(typeof IntersectionObserver>"u")return t(),()=>{};let n=new IntersectionObserver(i=>{for(let r of i)r.isIntersecting&&(t(),n.unobserve(r.target))},{threshold:.5});return n.observe(e),()=>n.disconnect()}async function Ce(e,t){let n=`${e.appUrl}/api/analytics`,i=JSON.stringify(t);try{(await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:i})).ok||(await new Promise(a=>setTimeout(a,2e3)),await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:i}))}catch{try{typeof navigator<"u"&&navigator.sendBeacon&&navigator.sendBeacon(n,i)}catch{}}}var lt=!1;function dt(){if(lt)return!0;if(typeof window>"u")return!1;let e=window.Shopify;try{return e?.customerPrivacy?.analyticsProcessingAllowed?.()===!0}catch{return!1}}var ae="lb_session",st=720*60*60,ct=720*60*60;function ye(e){return`__Host-_lb_ab_${e}`}async function we(e,t,n,i){if(typeof document>"u")return null;let r=ut(i);if(r&&r.testId===n)return{variant:r.variant,testId:n,persisted:!0};if(!dt())return{variant:"A",testId:n,persisted:!1};let a=bt(),o=ht(a,n);pt(i,n,o);try{fetch(`${e}/api/ab-assign`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({shopDomain:t,testId:n,sessionId:a,variant:o})}).catch(()=>{})}catch{}return{variant:o,testId:n,persisted:!0}}function ut(e){if(typeof document>"u")return null;let n=`${ye(e)}=`,r=document.cookie.split(";").map(l=>l.trim()).find(l=>l.startsWith(n));if(!r)return null;let a=r.substring(n.length),[o,d]=a.split("|");return o!=="A"&&o!=="B"||!d?null:{testId:d,variant:o}}function pt(e,t,n){if(typeof document>"u")return;let i=ye(e),r=`${n}|${t}|${Date.now()}`;document.cookie=`${i}=${r}; Path=/; Max-Age=${ct}; SameSite=Lax; Secure`}function bt(){if(typeof document>"u")return le();let t=document.cookie.split(";").map(i=>i.trim()).find(i=>i.startsWith(`${ae}=`))?.split("=")[1];if(t)return t;let n=le();return document.cookie=`${ae}=${n}; path=/; max-age=${st}; SameSite=Lax; Secure`,n}function le(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}function ht(e,t){let n=e+":"+t,i=2166136261;for(let r=0;r<n.length;r++)i^=n.charCodeAt(r),i=Math.imul(i,16777619);return(i>>>0)%2===0?"A":"B"}var de=1e4,mt=[[/@import/i,"@import rules"],[/@charset/i,"@charset declarations"],[/expression\s*\(/i,"CSS expressions"],[/-moz-binding/i,"-moz-binding"],[/-webkit-binding/i,"-webkit-binding"],[/behavior\s*:/i,"behavior property"]],gt=/^(https:|\/[^/]|\.\/|\.\.\/|#)/;function J(e){if(e.length>de)return{ok:!1,error:`CSS exceeds ${de.toLocaleString("en-US")} character limit`};let t=e.replace(/\/\*[\s\S]*?\*\//g,"");try{t=t.replace(/\\([0-9a-fA-F]{1,6})[ \t\n\f]?/g,(r,a)=>{let o=parseInt(a,16);return o<0||o>1114111?"\uFFFD":String.fromCodePoint(o)}),t=t.replace(/\\\r?\n/g,""),t=t.replace(/\\([^\n\r\f0-9a-fA-F])/g,"$1")}catch{return{ok:!1,error:"CSS contains invalid unicode escape sequences"}}t=t.replace(/</g,"").replace(/>/g,"");for(let[r,a]of mt)if(r.test(t))return{ok:!1,error:`CSS contains blocked pattern: ${a}`};let n=/url\s*\(\s*([\s\S]*?)\s*\)/gi,i;for(;(i=n.exec(t))!==null;){let r=i[1].trim();if((r.startsWith("'")||r.startsWith('"'))&&(r=r.slice(1)),(r.endsWith("'")||r.endsWith('"'))&&(r=r.slice(0,-1)),r=r.trim(),r&&!gt.test(r))return{ok:!1,error:"CSS url() values must use https:// or relative paths"}}return{ok:!0,css:t}}var ft="lb-custom-css-";function _e(e,t){if(typeof document>"u"||!t)return!1;let n=J(t);if(!n.ok||!n.css.trim())return!1;let i=ft+vt(e),r=document.getElementById(i);return r||(r=document.createElement("style"),r.id=i,r.setAttribute("data-lime-bundles","custom-css"),document.head.appendChild(r)),r.textContent!==n.css&&(r.textContent=n.css),!0}function vt(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(16)}function P(e){if(e==null)return 0;let t=typeof e=="string"?parseFloat(e):e;return Number.isFinite(t)?Math.round(t*100):0}function _(e,t){try{return new Intl.NumberFormat(void 0,{style:"currency",currency:t}).format(e/100)}catch{return`${t} ${(e/100).toFixed(2)}`}}function Be(e,t){return Math.max(0,e-Math.floor(e*t/100))}function Z(e,t=e.productQuantities,n=e.widgetConfig.pricing.showSaveBadge){let{discountType:i,discountValue:r}=e.discountConfig,a=[],o=0,d=0;for(let p of e.products){let f=p.variants.nodes.find(C=>C.availableForSale)??p.variants.nodes[0];if(!f)continue;let h=P(f.price.amount),m=t[p.id]??1,v=h*m,A=f.compareAtPrice?P(f.compareAtPrice.amount):null;if(a.push({unitCents:h,qty:m,lineCents:v,compareCents:A}),o+=v,i==="percentage"){let C=Be(h,r);d+=C*m}else d+=v}i==="fixed_amount"&&(d=Math.max(0,o-Math.round(r*100)));let l=Math.max(0,o-d),u=e.products[0]?.priceRange.minVariantPrice.currencyCode??"USD",c="";return n&&l>0&&(i==="percentage"&&r>0?c=`-${Math.round(r)}%`:i==="fixed_amount"&&r>0&&(c=`-${_(Math.round(r*100),u)}`)),{rows:a,totalCents:o,saleCents:d,savingsCents:l,headerBadge:c,currency:u}}function Q(e,t){if(t.discountType==="percentage"){let n=Math.floor(e*t.discountValue/100);return Math.max(0,e-n)}return Math.max(0,e-Math.round(t.discountValue*100))}var L=152;function O(e,t={}){if(!e)return"";try{let n=new URL(e);return t.width!==void 0&&n.searchParams.set("width",String(t.width)),t.height!==void 0&&n.searchParams.set("height",String(t.height)),t.crop&&n.searchParams.set("crop",t.crop),n.toString()}catch{return e}}function ke(e){if(!Number.isFinite(e)||e<=0)return"";let t=Math.floor(e/1e3),n=Math.floor(t/86400),i=Math.floor(t%86400/3600),r=Math.floor(t%3600/60),a=t%60,o=d=>String(d).padStart(2,"0");return n>0?`${n}d ${o(i)}h ${o(r)}m ${o(a)}s`:`${o(i)}h ${o(r)}m ${o(a)}s`}function H(e){let t=xt(e);if(t===null||t<=Date.now())return null;let n=t,i=document.createElement("div");i.className="lb-bundle-countdown",i.setAttribute("data-countdown","");let r=document.createElement("div");r.className="lb-bundle-countdown__label";let a=document.createElement("span");a.textContent="Ends in",r.appendChild(a),i.appendChild(r);let o=document.createElement("span");o.className="lb-bundle-countdown__timer",o.setAttribute("data-countdown-timer",""),i.appendChild(o);let d=null;function l(){let c=n-Date.now();if(c<=0){i.style.display="none",u();return}o.textContent=ke(c)}function u(){d!==null&&(clearInterval(d),d=null)}return l(),d=setInterval(l,1e3),{el:i,stop:u}}function xt(e){let t=Date.parse(e);return Number.isFinite(t)?t:null}function $(e){let t=document.createElement("button");t.type="button",t.className="lb-bundle-cta",t.setAttribute("data-add-bundle","");let n=document.createElement("span");n.className="lb-cta-label",n.setAttribute("data-cta-label",""),n.textContent=e,t.appendChild(n);let i=document.createElement("span");return i.className="lb-cta-spinner",i.setAttribute("data-cta-spinner",""),i.setAttribute("aria-hidden","true"),i.innerHTML='<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"><path d="M12 2a10 10 0 0 1 10 10" /></svg>',t.appendChild(i),t}function ee(e,t){let n=e.querySelector("[data-cta-label]");n&&(n.textContent=t)}function s(e,t,n={}){let i=document.createElement(e);t&&(i.className=t);for(let[r,a]of Object.entries(n))i.setAttribute(r,a);return i}var Ct=`
214
+ `,V=class extends Error{constructor(e,t){super(e),this.reason=t,this.name="BundleParseError"}},D={header:{textColor:"#FFFFFF",headerStyle:"gradient",gradientStart:"#C62828",gradientEnd:"#AD1457",saveBadgeBgColor:"#FFFFFF",saveBadgeTextColor:"#AD1457",saveBadgeBorderColor:"#FFFFFF",saveBadgeBorderWidth:0,saveBadgeBorderRadius:8,countdownBgColor:"#FFF0F3",countdownTextColor:"#C62828"},layout:{backgroundColor:"#FFFFFF",borderColor:"#E5E5E5",borderWidth:1,borderRadius:12},productList:{textColor:"#1A1A1A",imageBorderWidth:0,imageBorderColor:"#E5E5E5",imageBorderRadius:8,variantBorderWidth:1,variantBorderColor:"#E5E5E5",variantBorderRadius:8,showPrice:!0,showCompareAtPrice:!0,showCountBubble:!0,countBubbleBgColor:"#1A1A1A",countBubbleTextColor:"#FFFFFF"},pricing:{showSaveBadge:!0,showComparePrice:!0,showPerUnitPrice:!0,showItemCount:!0,showCompareAtPrice:!0},cta:{ctaText:"Add to cart",primaryColor:"#1A1A1A",buttonTextColor:"#FFFFFF",borderWidth:0,borderColor:"#1A1A1A",borderRadius:12},savingsBar:{visible:!0,bgColor:"#EDFBF1",textColor:"#2DB554",borderWidth:0,borderColor:"#2DB554",borderRadius:8},countdown:{showCountdown:!0},popularBadge:{visible:!0,text:"Most Popular",bgColor:"#1A1A1A",textColor:"#FFFFFF",borderWidth:0,borderColor:"#1A1A1A",borderRadius:12},outOfStockBehavior:"show_greyed_out",showSearch:!0,pickerBgColor:"#FFFFFF",pickerTextColor:"#1A1A1A",pickerBorderWidth:0,pickerBorderColor:"#E5E5E5",pickerBorderRadius:16,pickerSearchBorderWidth:1,pickerSearchBorderColor:"#E5E5E5",pickerSearchBorderRadius:8,pickerProductBorderWidth:0,pickerProductBorderColor:"#E5E5E5",pickerProductBorderRadius:8,pickerShowCountBubble:!0,pickerCountBubbleBgColor:"#1A1A1A",pickerCountBubbleTextColor:"#FFFFFF",pickerAddBgColor:"#1A1A1A",pickerAddLabelColor:"#FFFFFF",pickerAddBorderWidth:0,pickerAddBorderColor:"#1A1A1A",pickerAddBorderRadius:8,pickerVariantBorderWidth:1,pickerVariantBorderColor:"#1A1A1A",pickerVariantBorderRadius:8,tierBorderColor:"#E5E5E5",tierBorderWidth:1,tierBorderRadius:12,tierSelectedBorderColor:"#1A1A1A",tierSelectedBorderWidth:2,defaultTier:"first"};function Ye(e){if(!e||typeof e!="object")return D;let t=e;return{...D,...t,defaultTier:Xe(t.defaultTier),header:{...D.header,...t.header??{}},layout:{...D.layout,...t.layout??{}},productList:{...D.productList,...t.productList??{}},pricing:{...D.pricing,...t.pricing??{}},cta:{...D.cta,...t.cta??{}},savingsBar:{...D.savingsBar,...t.savingsBar??{}},countdown:{...D.countdown,...t.countdown??{}},popularBadge:{...D.popularBadge,...t.popularBadge??{}}}}function Xe(e){return e==="first"||e==="best_value"||typeof e=="number"&&Number.isInteger(e)&&e>=0?e:D.defaultTier}function Je(e){return{primaryColor:e.cta.primaryColor,backgroundColor:e.layout.backgroundColor,textColor:e.productList.textColor,borderColor:e.layout.borderColor,borderWidth:e.layout.borderWidth,buttonTextColor:e.cta.buttonTextColor,ctaBorderWidth:e.cta.borderWidth,ctaBorderColor:e.cta.borderColor,ctaBorderRadius:e.cta.borderRadius,savingsBarBgColor:e.savingsBar.bgColor,savingsBarTextColor:e.savingsBar.textColor,savingsBarBorderWidth:e.savingsBar.borderWidth,savingsBarBorderColor:e.savingsBar.borderColor,savingsBarBorderRadius:e.savingsBar.borderRadius,borderRadius:e.layout.borderRadius,headerTextColor:e.header.textColor,saveBadgeBgColor:e.header.saveBadgeBgColor,saveBadgeTextColor:e.header.saveBadgeTextColor,saveBadgeBorderColor:e.header.saveBadgeBorderColor,saveBadgeBorderWidth:e.header.saveBadgeBorderWidth,saveBadgeBorderRadius:e.header.saveBadgeBorderRadius,countdownBgColor:e.header.countdownBgColor,countdownTextColor:e.header.countdownTextColor,headerStyle:e.header.headerStyle,headerGradientStart:e.header.gradientStart,headerGradientEnd:e.header.gradientEnd,showSaveBadge:e.pricing.showSaveBadge,imageBorderWidth:e.productList.imageBorderWidth,imageBorderColor:e.productList.imageBorderColor,imageBorderRadius:e.productList.imageBorderRadius,variantBorderWidth:e.productList.variantBorderWidth,variantBorderColor:e.productList.variantBorderColor,variantBorderRadius:e.productList.variantBorderRadius,countBubbleBgColor:e.productList.countBubbleBgColor,countBubbleTextColor:e.productList.countBubbleTextColor,showProductPrice:e.productList.showPrice,showProductCompareAtPrice:e.productList.showCompareAtPrice,showCountBubble:e.productList.showCountBubble,showCountdown:e.countdown.showCountdown,ctaText:e.cta.ctaText,outOfStockBehavior:e.outOfStockBehavior,showComparePrice:e.pricing.showComparePrice,showPerUnitPrice:e.pricing.showPerUnitPrice,showItemCount:e.pricing.showItemCount,showCompareAtPrice:e.pricing.showCompareAtPrice,showMostPopular:e.popularBadge.visible,popularBadgeText:e.popularBadge.text,popularBadgeBgColor:e.popularBadge.bgColor,popularBadgeTextColor:e.popularBadge.textColor,popularBadgeBorderWidth:e.popularBadge.borderWidth,popularBadgeBorderColor:e.popularBadge.borderColor,popularBadgeBorderRadius:e.popularBadge.borderRadius,showSearch:e.showSearch,pickerBgColor:e.pickerBgColor,pickerTextColor:e.pickerTextColor,pickerBorderWidth:e.pickerBorderWidth,pickerBorderColor:e.pickerBorderColor,pickerBorderRadius:e.pickerBorderRadius,pickerSearchBorderWidth:e.pickerSearchBorderWidth,pickerSearchBorderColor:e.pickerSearchBorderColor,pickerSearchBorderRadius:e.pickerSearchBorderRadius,pickerProductBorderWidth:e.pickerProductBorderWidth,pickerProductBorderColor:e.pickerProductBorderColor,pickerProductBorderRadius:e.pickerProductBorderRadius,pickerShowCountBubble:e.pickerShowCountBubble,pickerCountBubbleBgColor:e.pickerCountBubbleBgColor,pickerCountBubbleTextColor:e.pickerCountBubbleTextColor,pickerAddBgColor:e.pickerAddBgColor,pickerAddLabelColor:e.pickerAddLabelColor,pickerAddBorderWidth:e.pickerAddBorderWidth,pickerAddBorderColor:e.pickerAddBorderColor,pickerAddBorderRadius:e.pickerAddBorderRadius,pickerVariantBorderWidth:e.pickerVariantBorderWidth,pickerVariantBorderColor:e.pickerVariantBorderColor,pickerVariantBorderRadius:e.pickerVariantBorderRadius,tierBorderColor:e.tierBorderColor,tierBorderWidth:e.tierBorderWidth,tierBorderRadius:e.tierBorderRadius,tierSelectedBorderColor:e.tierSelectedBorderColor,tierSelectedBorderWidth:e.tierSelectedBorderWidth,defaultTier:e.defaultTier,...e.popularBadge.tierIndex!==void 0&&{mostPopularTierIndex:e.popularBadge.tierIndex}}}var Ze={primaryColor:"--lb-primary-color",backgroundColor:"--lb-bg",textColor:"--lb-text",imageBorderWidth:"--lb-image-border-width",imageBorderColor:"--lb-image-border-color",imageBorderRadius:"--lb-image-border-radius",variantBorderWidth:"--lb-variant-border-width",variantBorderColor:"--lb-variant-border-color",variantBorderRadius:"--lb-variant-radius",countBubbleBgColor:"--lb-qty-badge-bg",countBubbleTextColor:"--lb-qty-badge-color",borderColor:"--lb-border",borderWidth:"--lb-border-width",buttonTextColor:"--lb-btn-text",borderRadius:"--lb-radius",headerTextColor:"--lb-header-text",saveBadgeBgColor:"--lb-save-badge-bg",saveBadgeTextColor:"--lb-save-badge-text",saveBadgeBorderColor:"--lb-save-badge-border-color",saveBadgeBorderWidth:"--lb-save-badge-border-width",saveBadgeBorderRadius:"--lb-save-badge-radius",countdownBgColor:"--lb-countdown-bg",countdownTextColor:"--lb-countdown-text",ctaBorderWidth:"--lb-cta-border-width",ctaBorderColor:"--lb-cta-border-color",ctaBorderRadius:"--lb-cta-radius",savingsBarBgColor:"--lb-savings-bar-bg",savingsBarTextColor:"--lb-savings-bar-text",savingsBarBorderWidth:"--lb-savings-bar-border-width",savingsBarBorderColor:"--lb-savings-bar-border-color",savingsBarBorderRadius:"--lb-savings-bar-radius",tierBorderColor:"--lb-tier-border-color",tierBorderWidth:"--lb-tier-border-width",tierBorderRadius:"--lb-tier-radius",tierSelectedBorderColor:"--lb-tier-selected-border-color",tierSelectedBorderWidth:"--lb-tier-selected-border-width",popularBadgeBgColor:"--lb-popular-badge-bg",popularBadgeTextColor:"--lb-popular-badge-text",popularBadgeBorderWidth:"--lb-popular-badge-border-width",popularBadgeBorderColor:"--lb-popular-badge-border-color",popularBadgeBorderRadius:"--lb-popular-badge-radius",headerGradientStart:"--lb-header-start",headerGradientEnd:"--lb-header-end",pickerBgColor:"--lb-picker-bg",pickerTextColor:"--lb-picker-text",pickerBorderWidth:"--lb-picker-border-width",pickerBorderColor:"--lb-picker-border-color",pickerBorderRadius:"--lb-picker-radius",pickerSearchBorderWidth:"--lb-picker-search-border-width",pickerSearchBorderColor:"--lb-picker-search-border-color",pickerSearchBorderRadius:"--lb-picker-search-radius",pickerProductBorderWidth:"--lb-picker-product-border-width",pickerProductBorderColor:"--lb-picker-product-border-color",pickerProductBorderRadius:"--lb-picker-product-radius",pickerCountBubbleBgColor:"--lb-picker-qty-badge-bg",pickerCountBubbleTextColor:"--lb-picker-qty-badge-color",pickerAddBgColor:"--lb-picker-add-bg",pickerAddLabelColor:"--lb-picker-add-label",pickerAddBorderWidth:"--lb-picker-add-border-width",pickerAddBorderColor:"--lb-picker-add-border-color",pickerAddBorderRadius:"--lb-picker-add-radius",pickerVariantBorderWidth:"--lb-picker-variant-border-width",pickerVariantBorderColor:"--lb-picker-variant-border-color",pickerVariantBorderRadius:"--lb-picker-variant-radius"},et=new Set(["borderRadius","borderWidth","saveBadgeBorderWidth","saveBadgeBorderRadius","tierBorderWidth","tierBorderRadius","tierSelectedBorderWidth","savingsBarBorderWidth","savingsBarBorderRadius","ctaBorderWidth","ctaBorderRadius","popularBadgeBorderWidth","popularBadgeBorderRadius","imageBorderWidth","imageBorderRadius","variantBorderWidth","variantBorderRadius","pickerBorderWidth","pickerBorderRadius","pickerSearchBorderWidth","pickerSearchBorderRadius","pickerProductBorderWidth","pickerProductBorderRadius","pickerAddBorderWidth","pickerAddBorderRadius","pickerVariantBorderWidth","pickerVariantBorderRadius"]);function fe(e,t){let r=Je(t);for(let[i,n]of Object.entries(Ze)){let a=r[i];if(a==null)continue;let o=et.has(i)?`${a}px`:String(a);e.style.setProperty(n,o)}e.style.setProperty("--lb-product-price-display",t.productList.showPrice?"block":"none"),e.style.setProperty("--lb-product-compare-display",t.productList.showCompareAtPrice?"inline":"none"),e.style.setProperty("--lb-qty-badge-display",t.productList.showCountBubble?"flex":"none"),e.style.setProperty("--lb-picker-qty-badge-display",t.pickerShowCountBubble?"flex":"none"),t.header.headerStyle==="solid"?e.style.setProperty("--lb-header-bg",t.header.gradientStart):e.style.setProperty("--lb-header-bg",`linear-gradient(135deg, ${t.header.gradientStart}, ${t.header.gradientEnd})`)}var tt=new Set(["fixed","mix_match","volume"]),rt=new Set(["active"]);function J(e,t){try{return nt(e,t)}catch(r){if(r instanceof V)return null;throw r}}function nt(e,t){let r=new Map(t.map(f=>[f.key,f])),i=r.get("title")?.value??"Bundle",n=r.get("bundle_type")?.value,a=r.get("status")?.value;if(!n||!tt.has(n))throw new V(`Invalid or missing bundle_type: ${n??"null"}`,"invalid_type");let o=n;if(!a||!rt.has(a))throw new V(`Bundle is not active: status=${a??"null"}`,"inactive");let d=a,l=r.get("starts_at")?.value??null,u=r.get("ends_at")?.value??null,c=new Date;if(l){let f=new Date(l);if(Number.isNaN(f.getTime()))throw new V(`Invalid starts_at: ${l}`,"invalid_type");if(f>c)throw new V(`Bundle not yet started: starts_at=${l}`,"not_started")}if(u){let f=new Date(u);if(Number.isNaN(f.getTime()))throw new V(`Invalid ends_at: ${u}`,"invalid_type");if(f<c)throw new V(`Bundle has expired: ends_at=${u}`,"expired")}let p=it(r),m=ot(r),C=at(r),b={id:e,title:i,description:r.get("description")?.value||null,status:d,products:p,discountConfig:m,widgetConfig:C,startsAt:l,endsAt:u,discountLabel:r.get("discount_label")?.value??null,selectedVariantIds:lt(r),productQuantities:le(r,"product_quantities"),variantQuantities:le(r,"variant_quantities"),abTestId:r.get("ab_test_id")?.value??null,abVariantB:dt(r)};switch(o){case"fixed":return{...b,bundleType:"fixed"};case"volume":return{...b,bundleType:"volume",volumeTiers:st(r)};case"mix_match":return{...b,bundleType:"mix_match",minQuantity:de(r,"min_quantity",{min:1}),maxQuantity:de(r,"max_quantity",{min:1})}}}function it(e){let t=[],r=e.get("products");if(r?.reference&&"variants"in r.reference&&t.push(r.reference),r?.references?.nodes)for(let n of r.references.nodes)"variants"in n?t.push(n):"products"in n&&n.products?.nodes&&t.push(...n.products.nodes);let i=e.get("collection");if(i?.references?.nodes)for(let n of i.references.nodes)"products"in n&&n.products?.nodes&&t.push(...n.products.nodes);return t}function ot(e){return{discountType:e.get("discount_type")?.value??"percentage",discountValue:parseFloat(e.get("discount_value")?.value??"0"),allowStacking:e.get("allow_stacking")?.value==="true"}}function at(e){return Ye(z(e,"widget_config"))}function lt(e){let t=z(e,"selected_variant_ids");if(!Array.isArray(t))return null;let r=[];for(let i of t)Array.isArray(i)?r.push(i.filter(n=>typeof n=="string")):r.push([]);return r}function le(e,t){let r=z(e,t);if(!r||typeof r!="object"||Array.isArray(r))return{};let i={};for(let[n,a]of Object.entries(r)){let o=typeof a=="number"?a:Number(a);Number.isFinite(o)&&o>=0&&o<=99&&(i[n]=Math.floor(o))}return i}function dt(e){if(!e.get("ab_test_id")?.value)return null;let r={},i=e.get("ab_title")?.value;i&&(r.title=i);let n=e.get("ab_description")?.value;n&&(r.description=n);let a=e.get("ab_discount_type")?.value,o=e.get("ab_discount_value")?.value;if(a&&(a==="percentage"||a==="fixed_amount")&&o){let l=parseFloat(o);Number.isFinite(l)&&(r.discountConfig={discountType:a,discountValue:l,allowStacking:e.get("allow_stacking")?.value==="true"})}let d=z(e,"ab_volume_tiers");return Array.isArray(d)&&(r.volumeTiers=d.filter(l=>typeof l=="object"&&l!==null).map(ve)),Object.keys(r).length===0?null:r}function st(e){let t=z(e,"volume_tiers");return Array.isArray(t)?t.filter(r=>typeof r=="object"&&r!==null).map(ve):[]}function ve(e){let t=Number(e.minQuantity??0),r={minQuantity:Number.isFinite(t)&&t>=0?t:0};return typeof e.percentage=="number"&&Number.isFinite(e.percentage)&&(r.percentage=e.percentage),typeof e.amount=="number"&&Number.isFinite(e.amount)&&(r.amount=e.amount),r}function z(e,t){let r=e.get(t)?.value;if(!r)return null;try{return JSON.parse(r)}catch{return null}}function de(e,t,r={}){let i=e.get(t)?.value;if(!i)return null;let n=parseInt(i,10);return isNaN(n)||r.min!==void 0&&n<r.min?null:n}function Z(e,t,r){let i=e.variantQuantities[r];return i!==void 0?i:e.productQuantities[t]??1}function xe(e){let t=e.abVariantB;if(!t)return e;let r=t.title??e.title,i=t.description!==void 0?t.description:e.description,n=t.discountConfig??e.discountConfig;switch(e.bundleType){case"volume":return{...e,title:r,description:i,discountConfig:n,volumeTiers:t.volumeTiers??e.volumeTiers};case"mix_match":return{...e,title:r,description:i,discountConfig:n};case"fixed":return{...e,title:r,description:i,discountConfig:n}}}async function Ce(e,t){await _e(e,{shopDomain:e.shopDomain,eventType:"bundle_impression",bundleGid:t.bundleGid,bundleType:t.bundleType,productId:t.productId,abTestId:t.abTestId,abVariant:t.abVariant,occurredAt:new Date().toISOString()})}async function ye(e,t){await _e(e,{shopDomain:e.shopDomain,eventType:"bundle_add_to_cart",...t,occurredAt:new Date().toISOString()})}function we(e,t){if(typeof IntersectionObserver>"u")return t(),()=>{};let r=new IntersectionObserver(i=>{for(let n of i)n.isIntersecting&&(t(),r.unobserve(n.target))},{threshold:.5});return r.observe(e),()=>r.disconnect()}async function _e(e,t){let r=`${e.appUrl}/api/analytics`,i=JSON.stringify(t);try{(await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:i})).ok||(await new Promise(a=>setTimeout(a,2e3)),await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:i}))}catch{try{typeof navigator<"u"&&navigator.sendBeacon&&navigator.sendBeacon(r,i)}catch{}}}var ct=!1;function ut(){if(ct)return!0;if(typeof window>"u")return!1;let e=window.Shopify;try{return e?.customerPrivacy?.analyticsProcessingAllowed?.()===!0}catch{return!1}}var se="lb_session",pt=720*60*60,bt=720*60*60;function Be(e){return`__Host-_lb_ab_${e}`}async function ke(e,t,r,i){if(typeof document>"u")return null;let n=ht(i);if(n&&n.testId===r)return{variant:n.variant,testId:r,persisted:!0};if(!ut())return{variant:"A",testId:r,persisted:!1};let a=gt(),o=ft(a,r);mt(i,r,o);try{fetch(`${e}/api/ab-assign`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({shopDomain:t,testId:r,sessionId:a,variant:o})}).catch(()=>{})}catch{}return{variant:o,testId:r,persisted:!0}}function ht(e){if(typeof document>"u")return null;let r=`${Be(e)}=`,n=document.cookie.split(";").map(l=>l.trim()).find(l=>l.startsWith(r));if(!n)return null;let a=n.substring(r.length),[o,d]=a.split("|");return o!=="A"&&o!=="B"||!d?null:{testId:d,variant:o}}function mt(e,t,r){if(typeof document>"u")return;let i=Be(e),n=`${r}|${t}|${Date.now()}`;document.cookie=`${i}=${n}; Path=/; Max-Age=${bt}; SameSite=Lax; Secure`}function gt(){if(typeof document>"u")return ce();let t=document.cookie.split(";").map(i=>i.trim()).find(i=>i.startsWith(`${se}=`))?.split("=")[1];if(t)return t;let r=ce();return document.cookie=`${se}=${r}; path=/; max-age=${pt}; SameSite=Lax; Secure`,r}function ce(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}function ft(e,t){let r=e+":"+t,i=2166136261;for(let n=0;n<r.length;n++)i^=r.charCodeAt(n),i=Math.imul(i,16777619);return(i>>>0)%2===0?"A":"B"}var ue=1e4,vt=[[/@import/i,"@import rules"],[/@charset/i,"@charset declarations"],[/expression\s*\(/i,"CSS expressions"],[/-moz-binding/i,"-moz-binding"],[/-webkit-binding/i,"-webkit-binding"],[/behavior\s*:/i,"behavior property"]],xt=/^(https:|\/[^/]|\.\/|\.\.\/|#)/;function ee(e){if(e.length>ue)return{ok:!1,error:`CSS exceeds ${ue.toLocaleString("en-US")} character limit`};let t=e.replace(/\/\*[\s\S]*?\*\//g,"");try{t=t.replace(/\\([0-9a-fA-F]{1,6})[ \t\n\f]?/g,(n,a)=>{let o=parseInt(a,16);return o<0||o>1114111?"\uFFFD":String.fromCodePoint(o)}),t=t.replace(/\\\r?\n/g,""),t=t.replace(/\\([^\n\r\f0-9a-fA-F])/g,"$1")}catch{return{ok:!1,error:"CSS contains invalid unicode escape sequences"}}t=t.replace(/</g,"").replace(/>/g,"");for(let[n,a]of vt)if(n.test(t))return{ok:!1,error:`CSS contains blocked pattern: ${a}`};let r=/url\s*\(\s*([\s\S]*?)\s*\)/gi,i;for(;(i=r.exec(t))!==null;){let n=i[1].trim();if((n.startsWith("'")||n.startsWith('"'))&&(n=n.slice(1)),(n.endsWith("'")||n.endsWith('"'))&&(n=n.slice(0,-1)),n=n.trim(),n&&!xt.test(n))return{ok:!1,error:"CSS url() values must use https:// or relative paths"}}return{ok:!0,css:t}}var Ct="lb-custom-css-";function Se(e,t){if(typeof document>"u"||!t)return!1;let r=ee(t);if(!r.ok||!r.css.trim())return!1;let i=Ct+yt(e),n=document.getElementById(i);return n||(n=document.createElement("style"),n.id=i,n.setAttribute("data-lime-bundles","custom-css"),document.head.appendChild(n)),n.textContent!==r.css&&(n.textContent=r.css),!0}function yt(e){let t=2166136261;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return(t>>>0).toString(16)}function wt(e,t){let r=typeof e=="string"?parseFloat(e):e;try{return new Intl.NumberFormat(void 0,{style:"currency",currency:t}).format(r)}catch{return`${t} ${r.toFixed(2)}`}}var _t={CL:"cl",CM:"cm",FLOZ:"fl oz",FT:"ft",FT2:"ft\xB2",G:"g",GAL:"gal",IN:"in",ITEM:"each",KG:"kg",L:"l",LB:"lb",M:"m",M2:"m\xB2",M3:"m\xB3",MG:"mg",ML:"ml",MM:"mm",OZ:"oz",PT:"pt",QT:"qt",UNKNOWN:"",YD:"yd"};function j(e,t,r){if(!e||!t||t.referenceUnit==="UNKNOWN")return null;let i=parseFloat(e.amount);if(!Number.isFinite(i))return null;let n=_t[t.referenceUnit]??"";if(!n)return null;let a=e.currencyCode||r||"USD",o=wt(i,a),d=t.referenceValue,l=d===1?n:`${d}${n}`;return`${o}/${l}`}function P(e){if(e==null)return 0;let t=typeof e=="string"?parseFloat(e):e;return Number.isFinite(t)?Math.round(t*100):0}function B(e,t){try{return new Intl.NumberFormat(void 0,{style:"currency",currency:t}).format(e/100)}catch{return`${t} ${(e/100).toFixed(2)}`}}function Te(e,t){return Math.max(0,e-Math.floor(e*t/100))}function te(e,t=e.productQuantities,r=e.widgetConfig.pricing.showSaveBadge){let{discountType:i,discountValue:n}=e.discountConfig,a=[],o=0,d=0;for(let p of e.products){let m=p.variants.nodes.find(x=>x.availableForSale)??p.variants.nodes[0];if(!m)continue;let C=P(m.price.amount),b=t[p.id]??1,f=C*b,w=m.compareAtPrice?P(m.compareAtPrice.amount):null;if(a.push({unitCents:C,qty:b,lineCents:f,compareCents:w}),o+=f,i==="percentage"){let x=Te(C,n);d+=x*b}else d+=f}i==="fixed_amount"&&(d=Math.max(0,o-Math.round(n*100)));let l=Math.max(0,o-d),u=e.products[0]?.priceRange.minVariantPrice.currencyCode??"USD",c="";return r&&l>0&&(i==="percentage"&&n>0?c=`-${Math.round(n)}%`:i==="fixed_amount"&&n>0&&(c=`-${B(Math.round(n*100),u)}`)),{rows:a,totalCents:o,saleCents:d,savingsCents:l,headerBadge:c,currency:u}}function K(e,t){if(t.discountType==="percentage"){let r=Math.floor(e*t.discountValue/100);return Math.max(0,e-r)}return Math.max(0,e-Math.round(t.discountValue*100))}var L=152;function O(e,t={}){if(!e)return"";try{let r=new URL(e);return t.width!==void 0&&r.searchParams.set("width",String(t.width)),t.height!==void 0&&r.searchParams.set("height",String(t.height)),t.crop&&r.searchParams.set("crop",t.crop),r.toString()}catch{return e}}function Ae(e){if(!Number.isFinite(e)||e<=0)return"";let t=Math.floor(e/1e3),r=Math.floor(t/86400),i=Math.floor(t%86400/3600),n=Math.floor(t%3600/60),a=t%60,o=d=>String(d).padStart(2,"0");return r>0?`${r}d ${o(i)}h ${o(n)}m ${o(a)}s`:`${o(i)}h ${o(n)}m ${o(a)}s`}function H(e){let t=Bt(e);if(t===null||t<=Date.now())return null;let r=t,i=document.createElement("div");i.className="lb-bundle-countdown",i.setAttribute("data-countdown","");let n=document.createElement("div");n.className="lb-bundle-countdown__label";let a=document.createElement("span");a.textContent="Ends in",n.appendChild(a),i.appendChild(n);let o=document.createElement("span");o.className="lb-bundle-countdown__timer",o.setAttribute("data-countdown-timer",""),i.appendChild(o);let d=null;function l(){let c=r-Date.now();if(c<=0){i.style.display="none",u();return}o.textContent=Ae(c)}function u(){d!==null&&(clearInterval(d),d=null)}return l(),d=setInterval(l,1e3),{el:i,stop:u}}function Bt(e){let t=Date.parse(e);return Number.isFinite(t)?t:null}function $(e){let t=document.createElement("button");t.type="button",t.className="lb-bundle-cta",t.setAttribute("data-add-bundle","");let r=document.createElement("span");r.className="lb-cta-label",r.setAttribute("data-cta-label",""),r.textContent=e,t.appendChild(r);let i=document.createElement("span");return i.className="lb-cta-spinner",i.setAttribute("data-cta-spinner",""),i.setAttribute("aria-hidden","true"),i.innerHTML='<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"><path d="M12 2a10 10 0 0 1 10 10" /></svg>',t.appendChild(i),t}function re(e,t){let r=e.querySelector("[data-cta-label]");r&&(r.textContent=t)}function s(e,t,r={}){let i=document.createElement(e);t&&(i.className=t);for(let[n,a]of Object.entries(r))i.setAttribute(n,a);return i}var kt=`
203
215
  <svg class="lb-bundle-placeholder-icon" viewBox="0 0 28 28" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
204
216
  <rect x="4" y="4" width="20" height="20" rx="3"></rect>
205
217
  <line x1="4" y1="20" x2="24" y2="20"></line>
206
218
  <circle cx="10" cy="12" r="2"></circle>
207
- </svg>`;function Se(e,t,n,i){let r=t.widgetConfig,a=(C,k)=>{let S=t.variantQuantities[k];return S!==void 0?S:t.productQuantities[C]??1},o=[],d=0;if(t.products.forEach((C,k)=>{let S=yt(t,C,k);S.qty!==0&&(S.isOos&&(d++,r.outOfStockBehavior==="hide")||o.push(S))}),o.length===0)return;let l=t.products[0]?.priceRange.minVariantPrice.currencyCode??"USD",u=s("div","lb-fixed",{"data-discount-type":t.discountConfig.discountType,"data-discount-value":String(t.discountConfig.discountValue)}),c=wt(t,l);if(u.appendChild(c.el),r.countdown.showCountdown&&t.endsAt){let C=H(t.endsAt);C&&(u.appendChild(C.el),i?.(C.stop))}let p=s("div","lb-fixed__products"),f=[];o.forEach(C=>{let k=Bt(C,l,a,()=>{A()});f.push(k),p.appendChild(k.el)}),u.appendChild(p),u.appendChild(s("div","lb-bundle-divider"));let h=kt(t);u.appendChild(h.el);let m=r.savingsBar.visible?St():null;m&&u.appendChild(m.el);let v=Tt(t,d,()=>{let C=o.filter(k=>k.selected).map(k=>({merchandiseId:k.selected.id,quantity:k.qty,attributes:[{key:"_lime_bundle_gid",value:t.id},{key:"_lime_bundle_type",value:t.bundleType}]}));C.length!==0&&n(C)});u.appendChild(v),u.appendChild(s("p","lb-bundle-error",{"data-error":"","aria-live":"polite"})),u.appendChild(s("span","lb-visually-hidden",{"data-status":"","aria-live":"polite"})),e.appendChild(u),A();function A(){let C=o.reduce((b,B)=>{if(!B.selected)return b;let y=P(B.selected.price.amount);return b+y*B.qty},0),k=At(C,t.discountConfig,o),S=Math.max(0,C-k);h.update({totalCents:C,saleCents:k,savingsCents:S,currency:l}),m&&m.update({savingsCents:S,currency:l}),c.refresh(_t(t,C,k,l))}}function yt(e,t,n){let i=e.selectedVariantIds?.[n]??null,r=t.variants.nodes.filter(p=>p.availableForSale),a=i&&i.length>0?r.filter(p=>i.includes(p.id)):r,o=a.length===0,d=a[0]??null,l=e.productQuantities[t.id]??1,c=(d?e.variantQuantities[d.id]:void 0)??l;return{product:t,eligibleVariants:a,selected:d,qty:c,isOos:o}}function wt(e,t){let n=e.widgetConfig,i=s("div","lb-bundle-header"),r=s("div","lb-bundle-header__content"),a=s("h3","lb-bundle-title");if(a.textContent=e.title,r.appendChild(a),e.description){let l=s("p","lb-bundle-subtitle");l.textContent=e.description,r.appendChild(l)}i.appendChild(r);let o=s("span","lb-bundle-header__badge",{"data-header-badge":""});i.appendChild(o);let d=Z(e,e.productQuantities,n.pricing.showSaveBadge);return d.headerBadge?o.textContent=d.headerBadge:o.style.display="none",{el:i,refresh(l){if(!n.pricing.showSaveBadge){o.style.display="none";return}l?(o.textContent=l,o.style.display=""):o.style.display="none"}}}function _t(e,t,n,i){if(!e.widgetConfig.pricing.showSaveBadge)return"";let r=t-n;if(r<=0)return"";let a=e.discountConfig;return a.discountType==="percentage"&&a.discountValue>0?`-${Math.round(a.discountValue)}%`:a.discountType==="fixed_amount"&&a.discountValue>0?`-${_(Math.round(a.discountValue*100),i)}`:`-${_(r,i)}`}function Bt(e,t,n,i){let r=s("div",e.isOos?"lb-bundle-product-row lb-bundle-product-row--oos":"lb-bundle-product-row",{"data-product-id":e.product.id.replace(/^.*\//,""),...e.isOos?{"aria-disabled":"true"}:{}}),a=s("div","lb-bundle-thumbnail",{"data-thumbnail":""});if(e.product.featuredImage){let u=document.createElement("img");u.src=O(e.product.featuredImage.url,{width:L,height:L,crop:"center"}),u.alt=e.product.featuredImage.altText??e.product.title,u.width=L,u.height=L,u.loading="lazy",a.appendChild(u)}else a.insertAdjacentHTML("beforeend",Ct);let o=null;e.isOos||(o=s("span","lb-bundle-qty-badge",{"data-qty-badge":""}),o.textContent=String(e.qty),a.appendChild(o)),r.appendChild(a);let d=s("div","lb-bundle-product-info"),l=document.createElement("a");if(l.className="lb-bundle-product-name",l.href=`/products/${e.product.handle}`,l.textContent=e.product.title,d.appendChild(l),e.isOos){let u=s("span","lb-bundle-oos-label");u.textContent="Out of stock",d.appendChild(u)}else if(e.selected){let u=s("span","lb-bundle-product-prices"),c=s("span","lb-bundle-product-compare-price",{"data-product-compare-price":""}),p=s("span","lb-bundle-product-price",{"data-product-price":""});u.appendChild(c),u.appendChild(p),d.appendChild(u);let f=h=>{let m=P(h.price.amount);if(p.textContent=_(m,t),h.compareAtPrice){let v=P(h.compareAtPrice.amount);v>m?(c.textContent=_(v,t),c.removeAttribute("hidden")):c.setAttribute("hidden","")}else c.setAttribute("hidden","")};if(f(e.selected),e.eligibleVariants.length>1){let h=document.createElement("select");h.className="lb-bundle-variant-select",h.setAttribute("data-variant-select",""),h.setAttribute("aria-label",`Select variant for ${e.product.title}`),e.eligibleVariants.forEach(m=>{let v=document.createElement("option");v.value=m.id,v.textContent=m.title,m.id===e.selected?.id&&(v.selected=!0),h.appendChild(v)}),h.addEventListener("change",()=>{let m=e.eligibleVariants.find(v=>v.id===h.value);m&&(e.selected=m,e.qty=n(e.product.id,m.id),o&&(o.textContent=String(e.qty)),f(m),i())}),d.appendChild(h)}else if(e.eligibleVariants.length===1&&e.product.variants.nodes.length>1){let h=s("span","lb-bundle-variant-badge");h.textContent=e.eligibleVariants[0].title,d.appendChild(h)}}return r.appendChild(d),{el:r,state:e}}function kt(e){let t=s("div","lb-bundle-pricing"),n=s("span","lb-bundle-pricing__label");n.textContent="Bundle price",t.appendChild(n);let i=s("span","lb-bundle-pricing__prices"),r=s("span","lb-bundle-compare-price",{"data-compare-price":""});r.style.display="none",i.appendChild(r);let a=s("span","lb-bundle-sale-price",{"data-sale-price":""});return i.appendChild(a),t.appendChild(i),{el:t,update({totalCents:o,saleCents:d,savingsCents:l,currency:u}){a.textContent=_(d,u),e.widgetConfig.pricing.showCompareAtPrice&&l>0?(r.textContent=_(o,u),r.style.display=""):r.style.display="none"}}}function St(){let e=s("div","lb-bundle-savings-bar",{"data-savings-bar":""}),t=document.createElement("span");t.textContent="You save",e.appendChild(t);let n=s("span","",{"data-savings-amount":""});return e.appendChild(n),{el:e,update({savingsCents:i,currency:r}){if(i<=0){e.style.display="none";return}e.style.display="",n.textContent=_(i,r)}}}function Tt(e,t,n){let i=t>0?`${t} item${t===1?"":"s"} out of stock`:e.widgetConfig.cta.ctaText||"Add to cart",r=$(i);return t>0?r.disabled=!0:r.addEventListener("click",()=>{r.disabled||n()}),r}function At(e,t,n){if(t.discountType==="percentage"){let i=0;for(let r of n){if(!r.selected)continue;let a=P(r.selected.price.amount),o=Math.floor(a*t.discountValue/100),d=Math.max(0,a-o);i+=d*r.qty}return i}return Math.max(0,e-Math.round(t.discountValue*100))}var Ae=`
219
+ </svg>`;function Ee(e,t,r,i){let n=t.widgetConfig,a=(x,S)=>Z(t,x,S),o=[],d=0;if(t.products.forEach((x,S)=>{let E=St(t,x,S);E.qty!==0&&(E.isOos&&(d++,n.outOfStockBehavior==="hide")||o.push(E))}),o.length===0)return;let l=t.products[0]?.priceRange.minVariantPrice.currencyCode??"USD",u=s("div","lb-fixed",{"data-discount-type":t.discountConfig.discountType,"data-discount-value":String(t.discountConfig.discountValue)}),c=Tt(t,l);if(u.appendChild(c.el),n.countdown.showCountdown&&t.endsAt){let x=H(t.endsAt);x&&(u.appendChild(x.el),i?.(x.stop))}let p=s("div","lb-fixed__products"),m=[];o.forEach(x=>{let S=Et(x,l,a,()=>{w()});m.push(S),p.appendChild(S.el)}),u.appendChild(p),u.appendChild(s("div","lb-bundle-divider"));let C=Pt(t);u.appendChild(C.el);let b=n.savingsBar.visible?Lt():null;b&&u.appendChild(b.el);let f=Mt(t,d,()=>{let x=o.filter(S=>S.selected).map(S=>({merchandiseId:S.selected.id,quantity:S.qty,attributes:[{key:"_lime_bundle_gid",value:t.id},{key:"_lime_bundle_type",value:t.bundleType}]}));x.length!==0&&r(x)});u.appendChild(f),u.appendChild(s("p","lb-bundle-error",{"data-error":"","aria-live":"polite"})),u.appendChild(s("span","lb-visually-hidden",{"data-status":"","aria-live":"polite"})),e.appendChild(u),w();function w(){let x=o.reduce((h,k)=>{if(!k.selected)return h;let y=P(k.selected.price.amount);return h+y*k.qty},0),S=Rt(x,t.discountConfig,o),E=Math.max(0,x-S);C.update({totalCents:x,saleCents:S,savingsCents:E,currency:l}),b&&b.update({savingsCents:E,currency:l}),c.refresh(At(t,x,S,l))}}function St(e,t,r){let i=e.selectedVariantIds?.[r]??null,n=t.variants.nodes.filter(u=>u.availableForSale),a=i&&i.length>0?n.filter(u=>i.includes(u.id)):n,o=a.length===0,d=a[0]??null,l=d?Z(e,t.id,d.id):1;return{product:t,eligibleVariants:a,selected:d,qty:l,isOos:o}}function Tt(e,t){let r=e.widgetConfig,i=s("div","lb-bundle-header"),n=s("div","lb-bundle-header__content"),a=s("h3","lb-bundle-title");if(a.textContent=e.title,n.appendChild(a),e.description){let l=s("p","lb-bundle-subtitle");l.textContent=e.description,n.appendChild(l)}i.appendChild(n);let o=s("span","lb-bundle-header__badge",{"data-header-badge":""});i.appendChild(o);let d=te(e,e.productQuantities,r.pricing.showSaveBadge);return d.headerBadge?o.textContent=d.headerBadge:o.style.display="none",{el:i,refresh(l){if(!r.pricing.showSaveBadge){o.style.display="none";return}l?(o.textContent=l,o.style.display=""):o.style.display="none"}}}function At(e,t,r,i){if(!e.widgetConfig.pricing.showSaveBadge)return"";let n=t-r;if(n<=0)return"";let a=e.discountConfig;return a.discountType==="percentage"&&a.discountValue>0?`-${Math.round(a.discountValue)}%`:a.discountType==="fixed_amount"&&a.discountValue>0?`-${B(Math.round(a.discountValue*100),i)}`:`-${B(n,i)}`}function Et(e,t,r,i){let n=s("div",e.isOos?"lb-bundle-product-row lb-bundle-product-row--oos":"lb-bundle-product-row",{"data-product-id":e.product.id.replace(/^.*\//,""),...e.isOos?{"aria-disabled":"true"}:{}}),a=s("div","lb-bundle-thumbnail",{"data-thumbnail":""});if(e.product.featuredImage){let u=document.createElement("img");u.src=O(e.product.featuredImage.url,{width:L,height:L,crop:"center"}),u.alt=e.product.featuredImage.altText??e.product.title,u.width=L,u.height=L,u.loading="lazy",a.appendChild(u)}else a.insertAdjacentHTML("beforeend",kt);let o=null;e.isOos||(o=s("span","lb-bundle-qty-badge",{"data-qty-badge":""}),o.textContent=String(e.qty),a.appendChild(o)),n.appendChild(a);let d=s("div","lb-bundle-product-info"),l=document.createElement("a");if(l.className="lb-bundle-product-name",l.href=`/products/${e.product.handle}`,l.textContent=e.product.title,d.appendChild(l),e.isOos){let u=s("span","lb-bundle-oos-label");u.textContent="Out of stock",d.appendChild(u)}else if(e.selected){let u=s("span","lb-bundle-product-prices"),c=s("span","lb-bundle-product-compare-price",{"data-product-compare-price":""}),p=s("span","lb-bundle-product-price",{"data-product-price":""});u.appendChild(c),u.appendChild(p),d.appendChild(u);let m=s("span","lb-bundle-product-unit-price",{"data-product-unit-price":""});m.setAttribute("hidden",""),d.appendChild(m);let C=b=>{let f=P(b.price.amount);if(p.textContent=B(f,t),b.compareAtPrice){let x=P(b.compareAtPrice.amount);x>f?(c.textContent=B(x,t),c.removeAttribute("hidden")):c.setAttribute("hidden","")}else c.setAttribute("hidden","");let w=j(b.unitPrice,b.unitPriceMeasurement,t);w?(m.textContent=w,m.removeAttribute("hidden")):m.setAttribute("hidden","")};if(C(e.selected),e.eligibleVariants.length>1){let b=document.createElement("select");b.className="lb-bundle-variant-select",b.setAttribute("data-variant-select",""),b.setAttribute("aria-label",`Select variant for ${e.product.title}`),e.eligibleVariants.forEach(f=>{let w=document.createElement("option");w.value=f.id,w.textContent=f.title,f.id===e.selected?.id&&(w.selected=!0),b.appendChild(w)}),b.addEventListener("change",()=>{let f=e.eligibleVariants.find(w=>w.id===b.value);f&&(e.selected=f,e.qty=r(e.product.id,f.id),o&&(o.textContent=String(e.qty)),C(f),i())}),d.appendChild(b)}else if(e.eligibleVariants.length===1&&e.product.variants.nodes.length>1){let b=s("span","lb-bundle-variant-badge");b.textContent=e.eligibleVariants[0].title,d.appendChild(b)}}return n.appendChild(d),{el:n,state:e}}function Pt(e){let t=s("div","lb-bundle-pricing"),r=s("span","lb-bundle-pricing__label");r.textContent="Bundle price",t.appendChild(r);let i=s("span","lb-bundle-pricing__prices"),n=s("span","lb-bundle-compare-price",{"data-compare-price":""});n.style.display="none",i.appendChild(n);let a=s("span","lb-bundle-sale-price",{"data-sale-price":""});return i.appendChild(a),t.appendChild(i),{el:t,update({totalCents:o,saleCents:d,savingsCents:l,currency:u}){a.textContent=B(d,u),e.widgetConfig.pricing.showCompareAtPrice&&l>0?(n.textContent=B(o,u),n.style.display=""):n.style.display="none"}}}function Lt(){let e=s("div","lb-bundle-savings-bar",{"data-savings-bar":""}),t=document.createElement("span");t.textContent="You save",e.appendChild(t);let r=s("span","",{"data-savings-amount":""});return e.appendChild(r),{el:e,update({savingsCents:i,currency:n}){if(i<=0){e.style.display="none";return}e.style.display="",r.textContent=B(i,n)}}}function Mt(e,t,r){let i=t>0?`${t} item${t===1?"":"s"} out of stock`:e.widgetConfig.cta.ctaText||"Add to cart",n=$(i);return t>0?n.disabled=!0:n.addEventListener("click",()=>{n.disabled||r()}),n}function Rt(e,t,r){if(t.discountType==="percentage"){let i=0;for(let n of r){if(!n.selected)continue;let a=P(n.selected.price.amount),o=Math.floor(a*t.discountValue/100),d=Math.max(0,a-o);i+=d*n.qty}return i}return Math.max(0,e-Math.round(t.discountValue*100))}var Le=`
208
220
  <svg class="lb-bundle-placeholder-icon" viewBox="0 0 28 28" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
209
221
  <rect x="4" y="4" width="20" height="20" rx="3"></rect>
210
222
  <line x1="4" y1="20" x2="24" y2="20"></line>
211
223
  <circle cx="10" cy="12" r="2"></circle>
212
- </svg>`,Ee=`
224
+ </svg>`,Me=`
213
225
  <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
214
226
  <line x1="9" y1="3" x2="9" y2="15" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
215
227
  <line x1="3" y1="9" x2="15" y2="9" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
216
- </svg>`,te=`
228
+ </svg>`,ne=`
217
229
  <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
218
230
  <line x1="5" y1="5" x2="15" y2="15" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
219
231
  <line x1="15" y1="5" x2="5" y2="15" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
220
- </svg>`,Et=`
232
+ </svg>`,It=`
221
233
  <svg width="16" height="16" viewBox="0 0 20 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
222
234
  <path d="M14.348 5.652a.5.5 0 0 0-.707 0L10 9.293 6.36 5.652a.5.5 0 1 0-.708.707L9.293 10l-3.641 3.641a.5.5 0 0 0 .708.707L10 10.707l3.641 3.641a.5.5 0 0 0 .707-.707L10.707 10l3.641-3.641a.5.5 0 0 0 0-.707z"/>
223
- </svg>`;function Pe(e,t,n,i){let r=t.widgetConfig,a=t.products[0]?.priceRange.minVariantPrice.currencyCode??"USD",o=t.minQuantity??1,d=t.maxQuantity??o,l=Vt(t,r.outOfStockBehavior);if(l.filter(x=>!x.isOos).length<o)return;let c=[],p=s("div","lb-mix-match",{"data-required-quantity":String(o),"data-max-quantity":String(d)}),f=Pt(t);if(p.appendChild(f),r.countdown.showCountdown&&t.endsAt){let x=H(t.endsAt);x&&(p.appendChild(x.el),i?.(x.stop))}let h=Lt(o);p.appendChild(h.el);let m=s("div","lb-mix-match__slots",{"data-selection-slots":""});p.appendChild(m),p.appendChild(s("div","lb-bundle-divider"));let v=It(r.pricing.showCompareAtPrice);p.appendChild(v.el);let A=r.savingsBar.visible?Ft():null;A&&p.appendChild(A.el);let C=s("div","lb-mix-match__price-placeholder",{"data-price-placeholder":""}),k=s("span","lb-mix-match__price-placeholder-text");k.textContent=`Select ${o} items to see price`,C.appendChild(k),p.appendChild(C);let S=Dt(t,l,a,{showSearch:r.showSearch,onAdd:(x,w)=>T(x,w),onRemove:(x,w)=>M(x,w),countFor:(x,w)=>c.filter(F=>F.productId===x&&F.variantId===w).length,isOverMax:()=>c.length>=d});p.appendChild(S.el);let b=$(`Select ${o} items to unlock`);b.disabled=!0,b.addEventListener("click",()=>{if(b.disabled)return;let x=c.map(w=>({merchandiseId:w.variantId,quantity:1,attributes:[{key:"_lime_bundle_gid",value:t.id},{key:"_lime_bundle_type",value:t.bundleType}]}));n(x)}),p.appendChild(b),p.appendChild(s("p","lb-bundle-error",{"data-error":"","aria-live":"polite"})),p.appendChild(s("span","lb-visually-hidden",{"data-status":"","aria-live":"polite"})),e.appendChild(p);let B=l.find(x=>!x.isOos),y=B?.firstAvailableVariant??B?.variants[0];B&&y&&c.push({productId:B.product.id,productTitle:B.product.title,variantId:y.id,variantTitle:y.title,imageUrl:B.product.featuredImage?.url??null,priceCents:P(y.price.amount),compareCents:y.compareAtPrice?P(y.compareAtPrice.amount):null}),g();function T(x,w){c.length>=d||(c.push({productId:x.id,productTitle:x.title,variantId:w.id,variantTitle:w.title,imageUrl:x.featuredImage?.url??null,priceCents:P(w.price.amount),compareCents:w.compareAtPrice?P(w.compareAtPrice.amount):null}),g())}function M(x,w){let F=c.findIndex(q=>q.productId===x&&q.variantId===w);F!==-1&&(c.splice(F,1),g())}function W(x){x<0||x>=c.length||(c.splice(x,1),g())}function g(){R(),h.update(c.length),v.update(c,t,a),A&&A.update(c,t,a),C.style.display=c.length===0?"":"none",S.refreshCounts(),I()}function R(){m.innerHTML="";let x=Math.max(o,c.length);for(let w=0;w<x;w++){let F=c[w];F?m.appendChild(Rt(F,w,a,()=>W(w))):m.appendChild(Mt(w,()=>S.open()))}}function I(){let x=c.length;x<o?(b.disabled=!0,ee(b,`Select ${o-x} more to unlock`)):(b.disabled=!1,ee(b,r.cta.ctaText||"Add to cart"))}}function Pt(e){let t=e.widgetConfig,n=s("div","lb-bundle-header"),i=s("div","lb-bundle-header__content"),r=s("h3","lb-bundle-title");if(r.textContent=e.title,i.appendChild(r),n.appendChild(i),t.pricing.showSaveBadge){let{discountType:a,discountValue:o}=e.discountConfig,d=null;if(a==="percentage"&&o>0?d=`-${Math.round(o)}%`:a==="fixed_amount"&&o>0&&(d=`-${_(Math.round(o*100),e.products[0]?.priceRange.minVariantPrice.currencyCode??"USD")}`),d){let l=s("span","lb-bundle-header__badge");l.textContent=d,n.appendChild(l)}}return n}function Lt(e){let t=s("div","lb-mix-match__progress"),n=s("div","lb-mix-match__progress-labels"),i=s("span","lb-mix-match__progress-count",{"data-progress-count":""});i.textContent=`0 of ${e} selected`,n.appendChild(i);let r=s("span","lb-mix-match__progress-remaining",{"data-progress-remaining":""});r.textContent=`${e} more to go`,n.appendChild(r),t.appendChild(n);let a=s("div","lb-mix-match__progress-track",{role:"progressbar","aria-valuenow":"0","aria-valuemin":"0","aria-valuemax":String(e)}),o=s("div","lb-mix-match__progress-fill",{"data-progress-fill":""});o.style.width="0%",a.appendChild(o),t.appendChild(a);function d(l){let u=Math.min(100,l/e*100);i.textContent=`${l} of ${e} selected`,l>=e?r.textContent="Complete":r.textContent=`${e-l} more to go`,o.style.width=`${u}%`,a.setAttribute("aria-valuenow",String(Math.min(l,e)))}return{el:t,update:d}}function Mt(e,t){let n=s("div","lb-bundle-product-row lb-mix-match__slot lb-mix-match__slot--empty",{"data-slot":String(e+1),tabindex:"0",role:"button","aria-label":"Add a product to the bundle"}),i=s("div","lb-mix-match__empty-thumb");i.innerHTML=Ee,n.appendChild(i);let r=s("span","lb-mix-match__empty-text");return r.textContent="Choose an item",n.appendChild(r),n.addEventListener("click",t),n.addEventListener("keydown",a=>{(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),t())}),n}function Rt(e,t,n,i){let r=s("div","lb-bundle-product-row lb-mix-match__slot lb-mix-match__slot--filled",{"data-slot":String(t+1)}),a=s("div","lb-bundle-thumbnail",{"data-thumbnail":""});if(e.imageUrl){let p=document.createElement("img");p.src=O(e.imageUrl,{width:L,height:L,crop:"center"}),p.alt=e.productTitle,p.width=L,p.height=L,p.loading="lazy",a.appendChild(p)}else a.insertAdjacentHTML("beforeend",Ae);r.appendChild(a);let o=s("div","lb-mix-match__filled-info"),d=s("span","lb-mix-match__filled-title");if(d.textContent=e.productTitle,o.appendChild(d),e.variantTitle&&e.variantTitle!=="Default Title"){let p=s("span","lb-mix-match__filled-variant");p.textContent=e.variantTitle,o.appendChild(p)}let l=s("span","lb-mix-match__filled-price");if(e.compareCents&&e.compareCents>e.priceCents){let p=s("span","lb-mix-match__filled-compare");p.textContent=_(e.compareCents,n),l.appendChild(p)}let u=document.createElement("span");u.textContent=_(e.priceCents,n),l.appendChild(u),o.appendChild(l),r.appendChild(o);let c=document.createElement("button");return c.type="button",c.className="lb-mix-match__slot-remove",c.setAttribute("aria-label",`Remove ${e.productTitle}`),c.innerHTML=te,c.addEventListener("click",p=>{p.stopPropagation(),i()}),r.appendChild(c),r}function It(e){let t=s("div","lb-bundle-pricing",{"data-pricing-section":""});t.style.display="none";let n=s("span","lb-bundle-pricing__label");n.textContent="Bundle price",t.appendChild(n);let i=s("span","lb-bundle-pricing__prices"),r=s("span","lb-bundle-compare-price",{"data-compare-price":""});e&&i.appendChild(r);let a=s("span","lb-bundle-sale-price",{"data-sale-price":""});i.appendChild(a),t.appendChild(i);function o(d,l,u){if(d.length===0){t.style.display="none";return}t.style.display="";let c=d.reduce((f,h)=>f+h.priceCents,0),p=Q(c,l.discountConfig);e&&c>p?(r.textContent=_(c,u),r.style.display=""):r.style.display="none",a.textContent=_(p,u)}return{el:t,update:o}}function Ft(){let e=s("div","lb-bundle-savings-bar",{"data-savings-bar":""});e.style.display="none";let t=document.createElement("span");t.textContent="You save",e.appendChild(t);let n=s("span","",{"data-savings-amount":""});e.appendChild(n);function i(r,a,o){if(r.length===0){e.style.display="none";return}let d=r.reduce((c,p)=>c+p.priceCents,0),l=Q(d,a.discountConfig),u=Math.max(0,d-l);if(u<=0){e.style.display="none";return}e.style.display="",n.textContent=_(u,o)}return{el:e,update:i}}function Dt(e,t,n,i){let r=s("div","lb-mix-match__modal-overlay",{"data-modal-overlay":"","data-bundle-gid":e.id});r.style.display="none";let a=s("div","lb-mix-match__modal",{role:"dialog","aria-modal":"true","aria-labelledby":`lb-modal-title-${Te(e.id)}`,tabindex:"-1"}),o=s("div","lb-mix-match__modal-header"),d=s("h4","lb-mix-match__modal-title",{id:`lb-modal-title-${Te(e.id)}`});d.textContent="Pick an item",o.appendChild(d);let l=document.createElement("button");l.type="button",l.className="lb-mix-match__modal-close",l.setAttribute("data-modal-close",""),l.setAttribute("aria-label","Close"),l.innerHTML=te,l.addEventListener("click",T),o.appendChild(l),a.appendChild(o);let u=null,c=null;if(i.showSearch){let g=s("div","lb-mix-match__modal-search");u=document.createElement("input"),u.type="text",u.className="lb-mix-match__modal-search-input",u.setAttribute("data-modal-search",""),u.setAttribute("role","searchbox"),u.setAttribute("aria-label","Search products"),u.setAttribute("placeholder","Search products"),u.autocomplete="off",u.addEventListener("input",()=>k()),g.appendChild(u),c=document.createElement("button"),c.type="button",c.className="lb-mix-match__modal-search-clear",c.setAttribute("data-modal-search-clear",""),c.setAttribute("aria-label","Clear search"),c.style.display="none",c.innerHTML=Et,c.addEventListener("click",()=>{u&&(u.value="",k(),u.focus())}),g.appendChild(c),a.appendChild(g)}let p=s("div","lb-mix-match__modal-list",{"data-modal-list":""});a.appendChild(p);let f=s("div","lb-mix-match__modal-empty",{"data-modal-empty":""});f.style.display="none";let h=document.createElement("p");h.textContent="No products match your search.",f.appendChild(h),a.appendChild(f);let m=s("span","lb-visually-hidden",{"data-modal-live":"","aria-live":"polite"});a.appendChild(m),r.appendChild(a);let v=!1,A=[];function C(){v||(v=!0,p.innerHTML="",t.forEach(g=>{let R=g.firstAvailableVariant??g.variants[0];if(!R)return;let I=s("div",g.isOos?"lb-mix-match__modal-product lb-mix-match__modal-product--sold-out":"lb-mix-match__modal-product",{"data-product-id":g.product.id.replace(/^.*\//,"")}),x=s("div","lb-mix-match__modal-product-thumb");if(g.product.featuredImage){let E=document.createElement("img");E.src=O(g.product.featuredImage.url,{width:L,height:L,crop:"center"}),E.alt=g.product.featuredImage.altText??g.product.title,E.width=L,E.height=L,E.loading="lazy",x.appendChild(E)}else x.insertAdjacentHTML("beforeend",Ae);I.appendChild(x);let w=s("div","lb-mix-match__modal-product-info"),F=s("span","lb-mix-match__modal-product-title");F.textContent=g.product.title,w.appendChild(F);let q=s("span","lb-mix-match__modal-product-price");if(q.textContent=_(P(R.price.amount),n),w.appendChild(q),g.isOos){let E=s("span","lb-mix-match__modal-sold-out-label");E.textContent="Sold out",w.appendChild(E)}if(I.appendChild(w),g.isOos)A.push({el:I,product:g.product,variant:R,updateCount:()=>{}});else{let E=document.createElement("button");E.type="button",E.className="lb-mix-match__modal-add",E.setAttribute("aria-label",`Add ${g.product.title}`),E.innerHTML=Ee;let N=s("span","lb-bundle-qty-badge");N.style.display="none",E.appendChild(N),E.addEventListener("click",()=>{i.isOverMax()||i.onAdd(g.product,R)}),I.appendChild(E);let V=document.createElement("button");V.type="button",V.className="lb-mix-match__slot-remove",V.setAttribute("aria-label",`Remove one ${g.product.title}`),V.style.display="none",V.innerHTML=te,V.addEventListener("click",G=>{G.stopPropagation(),i.onRemove(g.product.id,R.id)}),I.appendChild(V),A.push({el:I,product:g.product,variant:R,updateCount:()=>{let G=i.countFor(g.product.id,R.id);G>0?(N.textContent=String(G),N.style.display="",V.style.display=""):(N.style.display="none",V.style.display="none")}})}p.appendChild(I)}),W())}function k(){if(!u)return;let g=u.value.trim().toLowerCase();c&&(c.style.display=g?"":"none");let R=0;A.forEach(I=>{let x=!g||I.product.title.toLowerCase().includes(g);I.el.style.display=x?"":"none",x&&R++}),f.style.display=R===0&&g?"":"none"}let S=null;function b(g){if(g.key==="Escape"){g.preventDefault(),T();return}g.key==="Tab"&&Ut(g,a)}let B=!1;function y(){B||i.isOverMax()||(B=!0,C(),S=r.getRootNode().activeElement,r.style.display="",r.classList.add("lb-mix-match__modal-overlay--open"),a.focus(),document.addEventListener("keydown",b),r.addEventListener("click",M))}function T(){B&&(B=!1,r.classList.remove("lb-mix-match__modal-overlay--open"),r.style.display="none",document.removeEventListener("keydown",b),r.removeEventListener("click",M),S instanceof HTMLElement&&S.focus())}function M(g){g.target===r&&T()}function W(){A.forEach(g=>g.updateCount())}return{el:r,open:y,close:T,refreshCounts:W}}function Vt(e,t){let n=[],i=new Set;for(let r of e.products){if(i.has(r.id))continue;i.add(r.id);let a=r.variants.nodes.filter(d=>d.availableForSale),o=a.length===0;o&&t==="hide"||n.push({product:r,variants:r.variants.nodes,firstAvailableVariant:a[0]??null,isOos:o})}return n}function Ut(e,t){let n=t.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');if(n.length===0)return;let i=n[0],r=n[n.length-1],a=t.getRootNode().activeElement;e.shiftKey&&a===i?(e.preventDefault(),r.focus()):!e.shiftKey&&a===r&&(e.preventDefault(),i.focus())}function Te(e){return e.replace(/[^a-zA-Z0-9_-]/g,"-")}function Ie(e,t,n,i){let r=t.widgetConfig,o=t.products[0]?.variants.nodes.find(b=>b.availableForSale);if(!o&&r.outOfStockBehavior==="hide")return;let d=o?P(o.price.amount):0,l=o?.price.currencyCode??"USD",u=t.discountConfig.discountType,c=t.volumeTiers.map((b,B)=>{let y;if(u==="fixed_amount"){let T=Math.round((b.amount??0)*100);y=Math.max(0,d-T)}else{let T=b.percentage??0,M=Math.floor(d*T/100);y=Math.max(0,d-M)}return{tier:b,index:B,qty:b.minQuantity,pricePerUnitCents:y,basePricePerUnitCents:d}}),p=Wt(c),f=r.defaultTier==="best_value"?p:0;typeof r.defaultTier=="number"&&(f=Re(r.defaultTier,0,c.length-1));let h=r.popularBadge.tierIndex!==void 0?Re(r.popularBadge.tierIndex,0,c.length-1):p,m=s("div","lb-volume");if(m.appendChild(Ot(t,c,f,l,u)),r.countdown.showCountdown&&t.endsAt){let b=H(t.endsAt);b&&(m.appendChild(b.el),i?.(b.stop))}let v=s("div","lb-volume__tiers",{role:"radiogroup","aria-label":"Quantity tiers","data-tier-group":""});c.forEach(b=>{let B=Ht(b,b.index===f,l,r.popularBadge.visible&&b.index===h?r.popularBadge.text:null,r.pricing.showComparePrice,r.pricing.showPerUnitPrice);B.addEventListener("click",()=>S(b.index)),B.addEventListener("keydown",y=>{if(y.key==="Enter"||y.key===" "){y.preventDefault(),S(b.index);return}if(y.key==="ArrowDown"||y.key==="ArrowRight"||y.key==="ArrowUp"||y.key==="ArrowLeft"){y.preventDefault();let T=y.key==="ArrowDown"||y.key==="ArrowRight"?1:-1,M=(b.index+T+c.length)%c.length;S(M),v.children[M]?.focus()}}),v.appendChild(B)}),m.appendChild(v),m.appendChild(s("div","lb-bundle-divider"));let A=Le(c,f,l,r.pricing.showItemCount,r.pricing.showCompareAtPrice);m.appendChild(A);let C=r.savingsBar.visible?Me(c,f,l):null;C&&m.appendChild(C);let k=$t(t,()=>{if(!o)return;let b=c[f];b&&n([{merchandiseId:o.id,quantity:b.qty,attributes:[{key:"_lime_bundle_gid",value:t.id},{key:"_lime_bundle_type",value:t.bundleType}]}])});m.appendChild(k),m.appendChild(s("p","lb-bundle-error",{"data-error":"","aria-live":"polite"})),m.appendChild(s("span","lb-visually-hidden",{"data-status":"","aria-live":"polite"})),e.appendChild(m);function S(b){if(b===f||b<0||b>=c.length)return;f=b,Array.from(v.children).forEach((T,M)=>{T.setAttribute("aria-checked",String(M===b)),T.tabIndex=M===b?0:-1});let B=Le(c,b,l,r.pricing.showItemCount,r.pricing.showCompareAtPrice);if(A.replaceWith(B),A=B,C){let T=Me(c,b,l);C.replaceWith(T),C=T}let y=m.querySelector("[data-header-badge]");if(y){let T=Fe(c[b],l,u);T?(y.textContent=T,y.style.display=""):y.style.display="none"}}}function Ot(e,t,n,i,r){let a=e.widgetConfig,o=s("div","lb-bundle-header"),d=s("div","lb-bundle-header__content"),l=s("h3","lb-bundle-title");if(l.textContent=e.title,d.appendChild(l),o.appendChild(d),a.pricing.showSaveBadge){let u=Fe(t[n],i,r);if(u){let c=s("span","lb-bundle-header__badge",{"data-header-badge":""});c.textContent=u,o.appendChild(c)}}return o}function Ht(e,t,n,i,r,a){let o=s("div","lb-volume__tier",{role:"radio","aria-checked":String(t),tabindex:t?"0":"-1","data-tier-index":String(e.index),"data-tier-qty":String(e.qty)}),d=s("span","lb-volume__radio");d.appendChild(s("span","lb-volume__radio-dot")),o.appendChild(d);let l=s("span","lb-volume__tier-grid"),u=s("span","lb-volume__tier-label");u.textContent=`Buy ${e.qty}`,l.appendChild(u);let c=s("span","lb-volume__tier-price");if(r&&e.pricePerUnitCents<e.basePricePerUnitCents){let f=s("span","lb-volume__tier-compare");f.textContent=_(e.basePricePerUnitCents,n),c.appendChild(f)}if(a){let f=document.createElement("span");f.setAttribute("data-tier-price-each",""),f.textContent=_(e.pricePerUnitCents,n),c.appendChild(f);let h=s("span","lb-volume__tier-unit");h.textContent=" each",c.appendChild(h)}l.appendChild(c),o.appendChild(l);let p=s("span","lb-volume__tier-badge");return i?p.textContent=i:p.style.display="none",o.appendChild(p),o}function Le(e,t,n,i,r){let a=e[t],o=a?a.pricePerUnitCents*a.qty:0,d=a?a.basePricePerUnitCents*a.qty:0,l=Math.max(0,d-o),u=s("div","lb-bundle-pricing"),c=s("span","lb-bundle-pricing__label",{"data-total-label":""});if(c.textContent="Total",i&&a){let h=document.createElement("span");h.setAttribute("data-item-count",""),h.textContent=` (${a.qty} item${a.qty===1?"":"s"})`,c.appendChild(h)}u.appendChild(c);let p=s("span","lb-bundle-pricing__prices");if(r&&l>0){let h=s("span","lb-bundle-compare-price",{"data-compare-price":""});h.textContent=_(d,n),p.appendChild(h)}let f=s("span","lb-bundle-sale-price",{"data-total-price":""});return f.textContent=_(o,n),p.appendChild(f),u.appendChild(p),u}function Me(e,t,n){let i=e[t],r=i?i.pricePerUnitCents*i.qty:0,a=i?i.basePricePerUnitCents*i.qty:0,o=Math.max(0,a-r),d=s("div","lb-bundle-savings-bar",{"data-savings-bar":""});o<=0&&(d.style.display="none");let l=document.createElement("span");l.textContent="You save",d.appendChild(l);let u=s("span","",{"data-savings-amount":""});return u.textContent=_(o,n),d.appendChild(u),d}function $t(e,t){let i=e.products[0]?.variants.nodes.some(o=>o.availableForSale),r=i?e.widgetConfig.cta.ctaText||"Add to cart":"Sold out",a=$(r);return i||(a.disabled=!0),a.addEventListener("click",()=>{a.disabled||t()}),a}function Fe(e,t,n){if(!e)return null;let{tier:i}=e;if(n==="fixed_amount"){let r=i.amount??0;return r>0?`-${_(Math.round(r*100),t)}`:null}if(n==="percentage"){let r=i.percentage??0;return r>0?`-${Math.round(r)}%`:null}return null}function Wt(e){let t=0,n=0;return e.forEach((i,r)=>{let a=i.basePricePerUnitCents-i.pricePerUnitCents;a>t&&(t=a,n=r)}),n}function Re(e,t,n){return Math.max(t,Math.min(n,e))}var re=`/* Lime Bundles \u2014 shared base styles for all bundle widget types */
235
+ </svg>`;function Re(e,t,r,i){let n=t.widgetConfig,a=t.products[0]?.priceRange.minVariantPrice.currencyCode??"USD",o=t.minQuantity??1,d=t.maxQuantity??o,l=Nt(t,n.outOfStockBehavior);if(l.filter(v=>!v.isOos).length<o)return;let c=[],p=s("div","lb-mix-match",{"data-required-quantity":String(o),"data-max-quantity":String(d)}),m=Ft(t);if(p.appendChild(m),n.countdown.showCountdown&&t.endsAt){let v=H(t.endsAt);v&&(p.appendChild(v.el),i?.(v.stop))}let C=Dt(o);p.appendChild(C.el);let b=s("div","lb-mix-match__slots",{"data-selection-slots":""});p.appendChild(b),p.appendChild(s("div","lb-bundle-divider"));let f=Ot(n.pricing.showCompareAtPrice);p.appendChild(f.el);let w=n.savingsBar.visible?Ht():null;w&&p.appendChild(w.el);let x=s("div","lb-mix-match__price-placeholder",{"data-price-placeholder":""}),S=s("span","lb-mix-match__price-placeholder-text");S.textContent=`Select ${o} items to see price`,x.appendChild(S),p.appendChild(x);let E=$t(t,l,a,{showSearch:n.showSearch,onAdd:(v,_)=>T(v,_),onRemove:(v,_)=>R(v,_),countFor:(v,_)=>c.filter(F=>F.productId===v&&F.variantId===_).length,isOverMax:()=>c.length>=d});p.appendChild(E.el);let h=$(`Select ${o} items to unlock`);h.disabled=!0,h.addEventListener("click",()=>{if(h.disabled)return;let v=c.map(_=>({merchandiseId:_.variantId,quantity:1,attributes:[{key:"_lime_bundle_gid",value:t.id},{key:"_lime_bundle_type",value:t.bundleType}]}));r(v)}),p.appendChild(h),p.appendChild(s("p","lb-bundle-error",{"data-error":"","aria-live":"polite"})),p.appendChild(s("span","lb-visually-hidden",{"data-status":"","aria-live":"polite"})),e.appendChild(p);let k=l.find(v=>!v.isOos),y=k?.firstAvailableVariant??k?.variants[0];k&&y&&c.push({productId:k.product.id,productTitle:k.product.title,variantId:y.id,variantTitle:y.title,imageUrl:k.product.featuredImage?.url??null,priceCents:P(y.price.amount),compareCents:y.compareAtPrice?P(y.compareAtPrice.amount):null}),g();function T(v,_){c.length>=d||(c.push({productId:v.id,productTitle:v.title,variantId:_.id,variantTitle:_.title,imageUrl:v.featuredImage?.url??null,priceCents:P(_.price.amount),compareCents:_.compareAtPrice?P(_.compareAtPrice.amount):null}),g())}function R(v,_){let F=c.findIndex(W=>W.productId===v&&W.variantId===_);F!==-1&&(c.splice(F,1),g())}function N(v){v<0||v>=c.length||(c.splice(v,1),g())}function g(){M(),C.update(c.length),f.update(c,t,a),w&&w.update(c,t,a),x.style.display=c.length===0?"":"none",E.refreshCounts(),I()}function M(){b.innerHTML="";let v=Math.max(o,c.length);for(let _=0;_<v;_++){let F=c[_];F?b.appendChild(Vt(F,_,a,()=>N(_))):b.appendChild(Ut(_,()=>E.open()))}}function I(){let v=c.length;v<o?(h.disabled=!0,re(h,`Select ${o-v} more to unlock`)):(h.disabled=!1,re(h,n.cta.ctaText||"Add to cart"))}}function Ft(e){let t=e.widgetConfig,r=s("div","lb-bundle-header"),i=s("div","lb-bundle-header__content"),n=s("h3","lb-bundle-title");if(n.textContent=e.title,i.appendChild(n),r.appendChild(i),t.pricing.showSaveBadge){let{discountType:a,discountValue:o}=e.discountConfig,d=null;if(a==="percentage"&&o>0?d=`-${Math.round(o)}%`:a==="fixed_amount"&&o>0&&(d=`-${B(Math.round(o*100),e.products[0]?.priceRange.minVariantPrice.currencyCode??"USD")}`),d){let l=s("span","lb-bundle-header__badge");l.textContent=d,r.appendChild(l)}}return r}function Dt(e){let t=s("div","lb-mix-match__progress"),r=s("div","lb-mix-match__progress-labels"),i=s("span","lb-mix-match__progress-count",{"data-progress-count":""});i.textContent=`0 of ${e} selected`,r.appendChild(i);let n=s("span","lb-mix-match__progress-remaining",{"data-progress-remaining":""});n.textContent=`${e} more to go`,r.appendChild(n),t.appendChild(r);let a=s("div","lb-mix-match__progress-track",{role:"progressbar","aria-valuenow":"0","aria-valuemin":"0","aria-valuemax":String(e)}),o=s("div","lb-mix-match__progress-fill",{"data-progress-fill":""});o.style.width="0%",a.appendChild(o),t.appendChild(a);function d(l){let u=Math.min(100,l/e*100);i.textContent=`${l} of ${e} selected`,l>=e?n.textContent="Complete":n.textContent=`${e-l} more to go`,o.style.width=`${u}%`,a.setAttribute("aria-valuenow",String(Math.min(l,e)))}return{el:t,update:d}}function Ut(e,t){let r=s("div","lb-bundle-product-row lb-mix-match__slot lb-mix-match__slot--empty",{"data-slot":String(e+1),tabindex:"0",role:"button","aria-label":"Add a product to the bundle"}),i=s("div","lb-mix-match__empty-thumb");i.innerHTML=Me,r.appendChild(i);let n=s("span","lb-mix-match__empty-text");return n.textContent="Choose an item",r.appendChild(n),r.addEventListener("click",t),r.addEventListener("keydown",a=>{(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),t())}),r}function Vt(e,t,r,i){let n=s("div","lb-bundle-product-row lb-mix-match__slot lb-mix-match__slot--filled",{"data-slot":String(t+1)}),a=s("div","lb-bundle-thumbnail",{"data-thumbnail":""});if(e.imageUrl){let p=document.createElement("img");p.src=O(e.imageUrl,{width:L,height:L,crop:"center"}),p.alt=e.productTitle,p.width=L,p.height=L,p.loading="lazy",a.appendChild(p)}else a.insertAdjacentHTML("beforeend",Le);n.appendChild(a);let o=s("div","lb-mix-match__filled-info"),d=s("span","lb-mix-match__filled-title");if(d.textContent=e.productTitle,o.appendChild(d),e.variantTitle&&e.variantTitle!=="Default Title"){let p=s("span","lb-mix-match__filled-variant");p.textContent=e.variantTitle,o.appendChild(p)}let l=s("span","lb-mix-match__filled-price");if(e.compareCents&&e.compareCents>e.priceCents){let p=s("span","lb-mix-match__filled-compare");p.textContent=B(e.compareCents,r),l.appendChild(p)}let u=document.createElement("span");u.textContent=B(e.priceCents,r),l.appendChild(u),o.appendChild(l),n.appendChild(o);let c=document.createElement("button");return c.type="button",c.className="lb-mix-match__slot-remove",c.setAttribute("aria-label",`Remove ${e.productTitle}`),c.innerHTML=ne,c.addEventListener("click",p=>{p.stopPropagation(),i()}),n.appendChild(c),n}function Ot(e){let t=s("div","lb-bundle-pricing",{"data-pricing-section":""});t.style.display="none";let r=s("span","lb-bundle-pricing__label");r.textContent="Bundle price",t.appendChild(r);let i=s("span","lb-bundle-pricing__prices"),n=s("span","lb-bundle-compare-price",{"data-compare-price":""});e&&i.appendChild(n);let a=s("span","lb-bundle-sale-price",{"data-sale-price":""});i.appendChild(a),t.appendChild(i);function o(d,l,u){if(d.length===0){t.style.display="none";return}t.style.display="";let c=d.reduce((m,C)=>m+C.priceCents,0),p=K(c,l.discountConfig);e&&c>p?(n.textContent=B(c,u),n.style.display=""):n.style.display="none",a.textContent=B(p,u)}return{el:t,update:o}}function Ht(){let e=s("div","lb-bundle-savings-bar",{"data-savings-bar":""});e.style.display="none";let t=document.createElement("span");t.textContent="You save",e.appendChild(t);let r=s("span","",{"data-savings-amount":""});e.appendChild(r);function i(n,a,o){if(n.length===0){e.style.display="none";return}let d=n.reduce((c,p)=>c+p.priceCents,0),l=K(d,a.discountConfig),u=Math.max(0,d-l);if(u<=0){e.style.display="none";return}e.style.display="",r.textContent=B(u,o)}return{el:e,update:i}}function $t(e,t,r,i){let n=s("div","lb-mix-match__modal-overlay",{"data-modal-overlay":"","data-bundle-gid":e.id});n.style.display="none";let a=s("div","lb-mix-match__modal",{role:"dialog","aria-modal":"true","aria-labelledby":`lb-modal-title-${Pe(e.id)}`,tabindex:"-1"}),o=s("div","lb-mix-match__modal-header"),d=s("h4","lb-mix-match__modal-title",{id:`lb-modal-title-${Pe(e.id)}`});d.textContent="Pick an item",o.appendChild(d);let l=document.createElement("button");l.type="button",l.className="lb-mix-match__modal-close",l.setAttribute("data-modal-close",""),l.setAttribute("aria-label","Close"),l.innerHTML=ne,l.addEventListener("click",T),o.appendChild(l),a.appendChild(o);let u=null,c=null;if(i.showSearch){let g=s("div","lb-mix-match__modal-search");u=document.createElement("input"),u.type="text",u.className="lb-mix-match__modal-search-input",u.setAttribute("data-modal-search",""),u.setAttribute("role","searchbox"),u.setAttribute("aria-label","Search products"),u.setAttribute("placeholder","Search products"),u.autocomplete="off",u.addEventListener("input",()=>S()),g.appendChild(u),c=document.createElement("button"),c.type="button",c.className="lb-mix-match__modal-search-clear",c.setAttribute("data-modal-search-clear",""),c.setAttribute("aria-label","Clear search"),c.style.display="none",c.innerHTML=It,c.addEventListener("click",()=>{u&&(u.value="",S(),u.focus())}),g.appendChild(c),a.appendChild(g)}let p=s("div","lb-mix-match__modal-list",{"data-modal-list":""});a.appendChild(p);let m=s("div","lb-mix-match__modal-empty",{"data-modal-empty":""});m.style.display="none";let C=document.createElement("p");C.textContent="No products match your search.",m.appendChild(C),a.appendChild(m);let b=s("span","lb-visually-hidden",{"data-modal-live":"","aria-live":"polite"});a.appendChild(b),n.appendChild(a);let f=!1,w=[];function x(){f||(f=!0,p.innerHTML="",t.forEach(g=>{let M=g.firstAvailableVariant??g.variants[0];if(!M)return;let I=s("div",g.isOos?"lb-mix-match__modal-product lb-mix-match__modal-product--sold-out":"lb-mix-match__modal-product",{"data-product-id":g.product.id.replace(/^.*\//,"")}),v=s("div","lb-mix-match__modal-product-thumb");if(g.product.featuredImage){let A=document.createElement("img");A.src=O(g.product.featuredImage.url,{width:L,height:L,crop:"center"}),A.alt=g.product.featuredImage.altText??g.product.title,A.width=L,A.height=L,A.loading="lazy",v.appendChild(A)}else v.insertAdjacentHTML("beforeend",Le);I.appendChild(v);let _=s("div","lb-mix-match__modal-product-info"),F=s("span","lb-mix-match__modal-product-title");F.textContent=g.product.title,_.appendChild(F);let W=s("span","lb-mix-match__modal-product-price");W.textContent=B(P(M.price.amount),r),_.appendChild(W);let oe=j(M.unitPrice,M.unitPriceMeasurement,r);if(oe){let A=s("span","lb-mix-match__modal-product-unit-price lb-bundle-product-unit-price");A.textContent=oe,_.appendChild(A)}if(g.isOos){let A=s("span","lb-mix-match__modal-sold-out-label");A.textContent="Sold out",_.appendChild(A)}if(I.appendChild(_),g.isOos)w.push({el:I,product:g.product,variant:M,updateCount:()=>{}});else{let A=document.createElement("button");A.type="button",A.className="lb-mix-match__modal-add",A.setAttribute("aria-label",`Add ${g.product.title}`),A.innerHTML=Me;let q=s("span","lb-bundle-qty-badge");q.style.display="none",A.appendChild(q),A.addEventListener("click",()=>{i.isOverMax()||i.onAdd(g.product,M)}),I.appendChild(A);let U=document.createElement("button");U.type="button",U.className="lb-mix-match__slot-remove",U.setAttribute("aria-label",`Remove one ${g.product.title}`),U.style.display="none",U.innerHTML=ne,U.addEventListener("click",Q=>{Q.stopPropagation(),i.onRemove(g.product.id,M.id)}),I.appendChild(U),w.push({el:I,product:g.product,variant:M,updateCount:()=>{let Q=i.countFor(g.product.id,M.id);Q>0?(q.textContent=String(Q),q.style.display="",U.style.display=""):(q.style.display="none",U.style.display="none")}})}p.appendChild(I)}),N())}function S(){if(!u)return;let g=u.value.trim().toLowerCase();c&&(c.style.display=g?"":"none");let M=0;w.forEach(I=>{let v=!g||I.product.title.toLowerCase().includes(g);I.el.style.display=v?"":"none",v&&M++}),m.style.display=M===0&&g?"":"none"}let E=null;function h(g){if(g.key==="Escape"){g.preventDefault(),T();return}g.key==="Tab"&&Wt(g,a)}let k=!1;function y(){k||i.isOverMax()||(k=!0,x(),E=n.getRootNode().activeElement,n.style.display="",n.classList.add("lb-mix-match__modal-overlay--open"),a.focus(),document.addEventListener("keydown",h),n.addEventListener("click",R))}function T(){k&&(k=!1,n.classList.remove("lb-mix-match__modal-overlay--open"),n.style.display="none",document.removeEventListener("keydown",h),n.removeEventListener("click",R),E instanceof HTMLElement&&E.focus())}function R(g){g.target===n&&T()}function N(){w.forEach(g=>g.updateCount())}return{el:n,open:y,close:T,refreshCounts:N}}function Nt(e,t){let r=[],i=new Set;for(let n of e.products){if(i.has(n.id))continue;i.add(n.id);let a=n.variants.nodes.filter(d=>d.availableForSale),o=a.length===0;o&&t==="hide"||r.push({product:n,variants:n.variants.nodes,firstAvailableVariant:a[0]??null,isOos:o})}return r}function Wt(e,t){let r=t.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');if(r.length===0)return;let i=r[0],n=r[r.length-1],a=t.getRootNode().activeElement;e.shiftKey&&a===i?(e.preventDefault(),n.focus()):!e.shiftKey&&a===n&&(e.preventDefault(),i.focus())}function Pe(e){return e.replace(/[^a-zA-Z0-9_-]/g,"-")}function Ue(e,t,r,i){let n=t.widgetConfig,o=t.products[0]?.variants.nodes.find(h=>h.availableForSale);if(!o&&n.outOfStockBehavior==="hide")return;let d=o?P(o.price.amount):0,l=o?.price.currencyCode??"USD",u=t.discountConfig.discountType,c=t.volumeTiers.map((h,k)=>{let y;if(u==="fixed_amount"){let T=Math.round((h.amount??0)*100);y=Math.max(0,d-T)}else{let T=h.percentage??0,R=Math.floor(d*T/100);y=Math.max(0,d-R)}return{tier:h,index:k,qty:h.minQuantity,pricePerUnitCents:y,basePricePerUnitCents:d}}),p=Gt(c),m=n.defaultTier==="best_value"?p:0;typeof n.defaultTier=="number"&&(m=De(n.defaultTier,0,c.length-1));let C=n.popularBadge.tierIndex!==void 0?De(n.popularBadge.tierIndex,0,c.length-1):p,b=s("div","lb-volume");if(b.appendChild(qt(t,c,m,l,u)),n.countdown.showCountdown&&t.endsAt){let h=H(t.endsAt);h&&(b.appendChild(h.el),i?.(h.stop))}let f=s("div","lb-volume__tiers",{role:"radiogroup","aria-label":"Quantity tiers","data-tier-group":""});c.forEach(h=>{let k=zt(h,h.index===m,l,n.popularBadge.visible&&h.index===C?n.popularBadge.text:null,n.pricing.showComparePrice,n.pricing.showPerUnitPrice);k.addEventListener("click",()=>E(h.index)),k.addEventListener("keydown",y=>{if(y.key==="Enter"||y.key===" "){y.preventDefault(),E(h.index);return}if(y.key==="ArrowDown"||y.key==="ArrowRight"||y.key==="ArrowUp"||y.key==="ArrowLeft"){y.preventDefault();let T=y.key==="ArrowDown"||y.key==="ArrowRight"?1:-1,R=(h.index+T+c.length)%c.length;E(R),f.children[R]?.focus()}}),f.appendChild(k)}),b.appendChild(f),b.appendChild(s("div","lb-bundle-divider"));let w=Ie(c,m,l,n.pricing.showItemCount,n.pricing.showCompareAtPrice);b.appendChild(w);let x=n.savingsBar.visible?Fe(c,m,l):null;x&&b.appendChild(x);let S=jt(t,()=>{if(!o)return;let h=c[m];h&&r([{merchandiseId:o.id,quantity:h.qty,attributes:[{key:"_lime_bundle_gid",value:t.id},{key:"_lime_bundle_type",value:t.bundleType}]}])});b.appendChild(S),b.appendChild(s("p","lb-bundle-error",{"data-error":"","aria-live":"polite"})),b.appendChild(s("span","lb-visually-hidden",{"data-status":"","aria-live":"polite"})),e.appendChild(b);function E(h){if(h===m||h<0||h>=c.length)return;m=h,Array.from(f.children).forEach((T,R)=>{T.setAttribute("aria-checked",String(R===h)),T.tabIndex=R===h?0:-1});let k=Ie(c,h,l,n.pricing.showItemCount,n.pricing.showCompareAtPrice);if(w.replaceWith(k),w=k,x){let T=Fe(c,h,l);x.replaceWith(T),x=T}let y=b.querySelector("[data-header-badge]");if(y){let T=Ve(c[h],l,u);T?(y.textContent=T,y.style.display=""):y.style.display="none"}}}function qt(e,t,r,i,n){let a=e.widgetConfig,o=s("div","lb-bundle-header"),d=s("div","lb-bundle-header__content"),l=s("h3","lb-bundle-title");if(l.textContent=e.title,d.appendChild(l),o.appendChild(d),a.pricing.showSaveBadge){let u=Ve(t[r],i,n);if(u){let c=s("span","lb-bundle-header__badge",{"data-header-badge":""});c.textContent=u,o.appendChild(c)}}return o}function zt(e,t,r,i,n,a){let o=s("div","lb-volume__tier",{role:"radio","aria-checked":String(t),tabindex:t?"0":"-1","data-tier-index":String(e.index),"data-tier-qty":String(e.qty)}),d=s("span","lb-volume__radio");d.appendChild(s("span","lb-volume__radio-dot")),o.appendChild(d);let l=s("span","lb-volume__tier-grid"),u=s("span","lb-volume__tier-label");u.textContent=`Buy ${e.qty}`,l.appendChild(u);let c=s("span","lb-volume__tier-price");if(n&&e.pricePerUnitCents<e.basePricePerUnitCents){let m=s("span","lb-volume__tier-compare");m.textContent=B(e.basePricePerUnitCents,r),c.appendChild(m)}if(a){let m=document.createElement("span");m.setAttribute("data-tier-price-each",""),m.textContent=B(e.pricePerUnitCents,r),c.appendChild(m);let C=s("span","lb-volume__tier-unit");C.textContent=" each",c.appendChild(C)}l.appendChild(c),o.appendChild(l);let p=s("span","lb-volume__tier-badge");return i?p.textContent=i:p.style.display="none",o.appendChild(p),o}function Ie(e,t,r,i,n){let a=e[t],o=a?a.pricePerUnitCents*a.qty:0,d=a?a.basePricePerUnitCents*a.qty:0,l=Math.max(0,d-o),u=s("div","lb-bundle-pricing"),c=s("span","lb-bundle-pricing__label",{"data-total-label":""});if(c.textContent="Total",i&&a){let C=document.createElement("span");C.setAttribute("data-item-count",""),C.textContent=` (${a.qty} item${a.qty===1?"":"s"})`,c.appendChild(C)}u.appendChild(c);let p=s("span","lb-bundle-pricing__prices");if(n&&l>0){let C=s("span","lb-bundle-compare-price",{"data-compare-price":""});C.textContent=B(d,r),p.appendChild(C)}let m=s("span","lb-bundle-sale-price",{"data-total-price":""});return m.textContent=B(o,r),p.appendChild(m),u.appendChild(p),u}function Fe(e,t,r){let i=e[t],n=i?i.pricePerUnitCents*i.qty:0,a=i?i.basePricePerUnitCents*i.qty:0,o=Math.max(0,a-n),d=s("div","lb-bundle-savings-bar",{"data-savings-bar":""});o<=0&&(d.style.display="none");let l=document.createElement("span");l.textContent="You save",d.appendChild(l);let u=s("span","",{"data-savings-amount":""});return u.textContent=B(o,r),d.appendChild(u),d}function jt(e,t){let i=e.products[0]?.variants.nodes.some(o=>o.availableForSale),n=i?e.widgetConfig.cta.ctaText||"Add to cart":"Sold out",a=$(n);return i||(a.disabled=!0),a.addEventListener("click",()=>{a.disabled||t()}),a}function Ve(e,t,r){if(!e)return null;let{tier:i}=e;if(r==="fixed_amount"){let n=i.amount??0;return n>0?`-${B(Math.round(n*100),t)}`:null}if(r==="percentage"){let n=i.percentage??0;return n>0?`-${Math.round(n)}%`:null}return null}function Gt(e){let t=0,r=0;return e.forEach((i,n)=>{let a=i.basePricePerUnitCents-i.pricePerUnitCents;a>t&&(t=a,r=n)}),r}function De(e,t,r){return Math.max(t,Math.min(r,e))}var ie=`/* Lime Bundles \u2014 shared base styles for all bundle widget types */
224
236
 
225
237
  .lb-bundle-widget.lb-bundle-widget,
226
238
  .lb-bundle-widget.lb-bundle-widget * {
@@ -229,7 +241,6 @@
229
241
 
230
242
  .lb-bundle-widget {
231
243
  /* Internal CSS-only vars (not merchant-configurable). */
232
- --lb-text-muted: #666666;
233
244
  --lb-thumbnail-bg: #F0F0F0;
234
245
  --lb-widget-pad: 20px;
235
246
  --lb-progress-color: var(--lb-primary-color);
@@ -252,7 +263,7 @@
252
263
  margin: 0 calc(-1 * var(--lb-widget-pad)) 20px;
253
264
  padding: 12px 20px;
254
265
  background: var(--lb-countdown-bg);
255
- border-top: 1px solid rgba(0, 0, 0, 0.06);
266
+ border-top: 1px solid color-mix(in srgb, var(--lb-text) 6%, transparent);
256
267
  display: flex;
257
268
  align-items: center;
258
269
  justify-content: space-between;
@@ -292,11 +303,20 @@
292
303
  display: none;
293
304
  }
294
305
 
295
- /* Adjacent widget spacing \u2014 separates multiple bundles on the same product page */
296
- .lb-bundle-widget + .lb-bundle-widget {
306
+ /* Sibling widget spacing \u2014 separates multiple bundles on the same product page.
307
+ Uses \`~\` (general sibling) rather than \`+\` (adjacent) because each Liquid
308
+ loop iteration emits a {% style %} block before its widget div, so the
309
+ rendered DOM alternates <style><widget><style><widget>. The \`+\` combinator
310
+ requires immediate adjacency and would match nothing; \`~\` matches every
311
+ widget after the first regardless of elements between. Single-widget pages
312
+ stay unaffected (no prior \`.lb-bundle-widget\` sibling to match against).
313
+ Only \`margin-top\` \u2014 do NOT override \`padding-top\` here. The gradient header
314
+ uses \`margin-top: calc(-1 * var(--lb-widget-pad))\` to reach the widget's
315
+ inner border edge, assuming padding-top == --lb-widget-pad. Changing
316
+ padding-top on the subsequent widget breaks that math and leaves a visible
317
+ gap above the header. */
318
+ .lb-bundle-widget ~ .lb-bundle-widget {
297
319
  margin-top: 24px;
298
- padding-top: 24px;
299
- border-top: 1px solid var(--lb-border);
300
320
  }
301
321
 
302
322
  /* Header \u2014 gradient banner with title + savings badge */
@@ -339,7 +359,7 @@
339
359
  font-size: 16px;
340
360
  font-weight: 400;
341
361
  line-height: 20px;
342
- color: var(--lb-text-muted);
362
+ color: color-mix(in srgb, var(--lb-text) 60%, transparent);
343
363
  margin: 4px 0 0;
344
364
  }
345
365
 
@@ -408,7 +428,7 @@
408
428
  .lb-bundle-thumbnail svg {
409
429
  width: 28px;
410
430
  height: 28px;
411
- color: #BBBBBB;
431
+ color: color-mix(in srgb, var(--lb-text) 35%, transparent);
412
432
  }
413
433
 
414
434
  .lb-bundle-product-info {
@@ -463,6 +483,22 @@
463
483
  display: none;
464
484
  }
465
485
 
486
+ /* Unit price (e.g. "$0.50/100ml") \u2014 only rendered when the merchant has
487
+ configured unit pricing on the variant in the Shopify admin. No merchant
488
+ toggle: present in admin \u2192 shown; absent \u2192 hidden. Styled as muted
489
+ secondary text beneath the price row so it doesn't compete visually. */
490
+ .lb-bundle-product-unit-price {
491
+ display: block;
492
+ font-size: 11px;
493
+ line-height: 16px;
494
+ color: color-mix(in srgb, var(--lb-text) 60%, transparent);
495
+ margin-top: 2px;
496
+ }
497
+
498
+ .lb-bundle-product-unit-price[hidden] {
499
+ display: none;
500
+ }
501
+
466
502
  .lb-bundle-variant-badge {
467
503
  display: inline-block;
468
504
  border: var(--lb-variant-border-width) solid var(--lb-variant-border-color);
@@ -470,14 +506,14 @@
470
506
  padding: 8px 12px;
471
507
  font-size: 12px;
472
508
  line-height: 16px;
473
- color: var(--lb-text-muted);
509
+ color: color-mix(in srgb, var(--lb-text) 60%, transparent);
474
510
  margin-top: 8px;
475
511
  }
476
512
 
477
513
  .lb-bundle-quantity {
478
514
  font-size: 12px;
479
515
  line-height: 16px;
480
- color: var(--lb-text-muted);
516
+ color: color-mix(in srgb, var(--lb-text) 60%, transparent);
481
517
  margin-left: 8px;
482
518
  white-space: nowrap;
483
519
  }
@@ -532,7 +568,7 @@
532
568
  font-size: 16px;
533
569
  font-weight: 600;
534
570
  line-height: 20px;
535
- padding: 12px 16px;
571
+ padding: 8px 12px;
536
572
  border-radius: var(--lb-savings-bar-radius);
537
573
  margin-bottom: 12px;
538
574
  }
@@ -677,7 +713,7 @@
677
713
  .lb-bundle-placeholder-icon {
678
714
  width: 28px;
679
715
  height: 28px;
680
- stroke: #BBBBBB;
716
+ stroke: color-mix(in srgb, var(--lb-text) 35%, transparent);
681
717
  stroke-width: 1.5;
682
718
  fill: none;
683
719
  }
@@ -699,7 +735,7 @@
699
735
  .lb-ab-pending {
700
736
  visibility: hidden;
701
737
  }
702
- `,De=`/* Lime Bundles \u2014 Fixed bundle styles */
738
+ `,Oe=`/* Lime Bundles \u2014 Fixed bundle styles */
703
739
 
704
740
  .lb-fixed__products {
705
741
  display: flex;
@@ -756,7 +792,7 @@
756
792
  outline: 2px solid var(--lb-primary-color);
757
793
  outline-offset: 2px;
758
794
  }
759
- `,Ve=`/* Lime Bundles \u2014 Mix & Match styles */
795
+ `,He=`/* Lime Bundles \u2014 Mix & Match styles */
760
796
 
761
797
  /* === Progress Bar === */
762
798
  .lb-mix-match__progress {
@@ -1092,7 +1128,7 @@
1092
1128
  border: var(--lb-picker-product-border-width) solid var(--lb-picker-product-border-color);
1093
1129
  box-sizing: border-box;
1094
1130
  overflow: visible;
1095
- background: #F0F0F0;
1131
+ background: var(--lb-thumbnail-bg);
1096
1132
  }
1097
1133
 
1098
1134
  /* Qty badge inside the picker modal inherits picker-product border (width + color) plus
@@ -1133,6 +1169,17 @@
1133
1169
  margin: 4px 0 0;
1134
1170
  }
1135
1171
 
1172
+ .lb-mix-match__modal-product-unit-price {
1173
+ font-size: 11px;
1174
+ line-height: 16px;
1175
+ color: color-mix(in srgb, var(--lb-text) 60%, transparent);
1176
+ margin: 2px 0 0;
1177
+ }
1178
+
1179
+ .lb-mix-match__modal-product-unit-price[hidden] {
1180
+ display: none;
1181
+ }
1182
+
1136
1183
  .lb-mix-match__variant-select {
1137
1184
  font-size: 12px;
1138
1185
  margin: 4px 0 0;
@@ -1242,7 +1289,7 @@
1242
1289
  transition: none;
1243
1290
  }
1244
1291
  }
1245
- `,Ue=`/* Lime Bundles \u2014 Volume / Quantity Breaks styles */
1292
+ `,$e=`/* Lime Bundles \u2014 Volume / Quantity Breaks styles */
1246
1293
 
1247
1294
  .lb-volume__tiers {
1248
1295
  display: flex;
@@ -1352,7 +1399,7 @@
1352
1399
  }
1353
1400
 
1354
1401
 
1355
- `,Oe=`/* Lime Bundles \u2014 web-component loading skeleton (not mirrored to theme assets) */
1402
+ `,Ne=`/* Lime Bundles \u2014 web-component loading skeleton (not mirrored to theme assets) */
1356
1403
 
1357
1404
  .lb-bundle-widget--loading {
1358
1405
  display: block;
@@ -1448,10 +1495,10 @@
1448
1495
  animation: none;
1449
1496
  }
1450
1497
  }
1451
- `;var qt=e=>`lb_cart_id:${e}`;function Nt(e){if(e)return e.trim()||null;if(typeof document<"u"){let t=document.querySelector('meta[name="shopify:product-handle"]');if(t?.content)return t.content.trim()||null}if(typeof window<"u"){let t=window.location.pathname.match(/\/products\/([^/?#]+)/);if(t?.[1])return decodeURIComponent(t[1])}return null}var j=class extends HTMLElement{static observedAttributes=["shop-domain","storefront-token","bundle-gid","product-handle","app-url","analytics","locale"];shadow;bundles=[];abortController=null;impressionCleanups=[];renderCleanups=[];shopCustomCss=null;constructor(){super(),this.shadow=this.attachShadow({mode:"open"})}connectedCallback(){this.fetchBundle()}disconnectedCallback(){this.abortController?.abort(),this.teardownImpressions(),this.teardownRenderers()}teardownImpressions(){for(let t of this.impressionCleanups)t();this.impressionCleanups=[]}teardownRenderers(){for(let t of this.renderCleanups)t();this.renderCleanups=[]}attributeChangedCallback(t,n,i){n===i||!this.isConnected||(t==="bundle-gid"||t==="product-handle"||t==="shop-domain"||t==="storefront-token")&&this.shopDomain&&this.storefrontToken&&this.fetchBundle()}get shopDomain(){return this.getAttribute("shop-domain")??""}get storefrontToken(){return this.getAttribute("storefront-token")??""}get bundleGid(){return this.getAttribute("bundle-gid")??""}get productHandleAttr(){return this.getAttribute("product-handle")??""}get appUrl(){return this.getAttribute("app-url")??""}get analyticsEnabled(){return this.getAttribute("analytics")!=="false"}async fetchBundle(){if(!this.shopDomain||!this.storefrontToken){this.renderError("Missing required attributes: shop-domain, storefront-token");return}this.abortController?.abort();let t=new AbortController;this.abortController=t,this.renderLoading();let n=K({shopDomain:this.shopDomain,accessToken:this.storefrontToken});try{let i,r=!1;if(this.bundleGid)r=!0,i=this.fetchSingleBundle(n,t.signal);else{let d=Nt(this.productHandleAttr);if(!d){this.teardownImpressions(),this.renderError("No bundle-gid or product-handle provided, and the current URL doesn't match /products/<handle>.");return}i=this.fetchProductBundles(n,t.signal,d)}let a=n.query(ce,void 0,{signal:t.signal}).catch(()=>null);if(await i,t.signal.aborted)return;if(r&&this.bundles.length===0){this.teardownImpressions(),this.renderError("Bundle not found");return}let o=await a;if(o?.shop?.metafield?.value){_e(this.shopDomain,o.shop.metafield.value);let d=J(o.shop.metafield.value);d.ok&&(this.shopCustomCss=d.css)}await this.applyABVariants(),this.renderBundles()}catch(i){if(t.signal.aborted)return;this.bundles=[],this.teardownImpressions(),this.renderError(i instanceof Error?i.message:"Failed to load bundle")}}async applyABVariants(){if(!this.appUrl||this.bundles.length===0)return;let t=await Promise.all(this.bundles.map(async n=>{if(!n.abTestId||!n.abVariantB)return n;try{if((await we(this.appUrl,this.shopDomain,n.abTestId,n.id))?.variant==="B")return ge(n)}catch(i){console.warn(`[lime-bundle] A/B assignment failed for bundle ${n.id}; falling back to Variant A.`,i)}return n}));this.bundles=t}async fetchSingleBundle(t,n){let i=await t.query(se,{id:this.bundleGid},{signal:n});if(!i.metaobject){this.bundles=[];return}let r=X(i.metaobject.id,i.metaobject.fields);this.bundles=r?[r]:[]}async fetchProductBundles(t,n,i){let r=await t.query(ue,{handle:i},{signal:n});if(!r.product){this.bundles=[];return}let a=r.product.metafield?.references?.nodes??[],o=[];for(let d of a){let l=X(d.id,d.fields);l&&o.push(l)}this.bundles=o}handleAddToCart=async(t,n)=>{let i=new CustomEvent("lime-bundle:add-to-cart",{detail:{lines:n},bubbles:!0,composed:!0,cancelable:!0}),r=this.dispatchEvent(i);this.reportAddToCartEvent(t,n),r&&await this.defaultAddToCart(n)};async defaultAddToCart(t){if(typeof window>"u")return;let n=K({shopDomain:this.shopDomain,accessToken:this.storefrontToken}),i=window.localStorage,r=qt(this.shopDomain),a=i?.getItem(r)??null;try{let o=null;if(a){let l=(await n.query(be,{cartId:a,lines:t})).cartLinesAdd;l?.userErrors?.length?i?.removeItem(r):l?.cart&&(o=l.cart.checkoutUrl)}if(!o){let l=(await n.query(pe,{input:{lines:t}})).cartCreate;l?.cart&&(i?.setItem(r,l.cart.id),o=l.cart.checkoutUrl)}o?window.location.assign(o):this.dispatchEvent(new CustomEvent("lime-bundle:error",{detail:{message:"Cart creation failed",code:"CART_ERROR"},bubbles:!0,composed:!0}))}catch(o){this.dispatchEvent(new CustomEvent("lime-bundle:error",{detail:{message:o instanceof Error?o.message:"Cart mutation failed",code:"CART_ERROR"},bubbles:!0,composed:!0}))}}reportAddToCartEvent(t,n){if(!this.analyticsEnabled||!this.appUrl)return;let i=n.reduce((a,o)=>a+o.quantity,0),r=n.reduce((a,o)=>{let l=t.products.find(c=>c.variants.nodes.some(p=>p.id===o.merchandiseId))?.variants.nodes.find(c=>c.id===o.merchandiseId),u=l?parseFloat(l.price.amount):0;return a+u*o.quantity},0);ve({shopDomain:this.shopDomain,appUrl:this.appUrl},{bundleGid:t.id,bundleType:t.bundleType,productId:t.products[0]?.id??"",quantity:i,totalPrice:Math.round(r*100)/100})}renderBundles(){this.teardownImpressions(),this.teardownRenderers(),this.shadow.innerHTML="";let t=document.createElement("style");if(t.textContent=[re,De,Ve,Ue].join(`
1452
- `),this.shadow.appendChild(t),this.shopCustomCss){let i=document.createElement("style");i.setAttribute("data-lime-bundles","shop-custom-css"),i.textContent=this.shopCustomCss,this.shadow.appendChild(i)}for(let i of this.bundles){let r=document.createElement("div");r.className="lb-bundle-widget",r.setAttribute("role","region"),r.setAttribute("aria-label",i.title),r.setAttribute("data-bundle-type",i.bundleType),r.setAttribute("data-bundle-gid",i.id),he(r,i.widgetConfig);let a=d=>this.handleAddToCart(i,d),o=d=>this.renderCleanups.push(d);switch(i.bundleType){case"fixed":Se(r,i,a,o);break;case"mix_match":Pe(r,i,a,o);break;case"volume":Ie(r,i,a,o);break}this.shadow.appendChild(r),this.setupImpressionFor(i,r)}let n=this.bundles[0];this.dispatchEvent(new CustomEvent("lime-bundle:loaded",{detail:{bundleCount:this.bundles.length,bundleTypes:this.bundles.map(i=>i.bundleType),bundleType:n?.bundleType,title:n?.title},bubbles:!0,composed:!0}))}setupImpressionFor(t,n){if(!this.analyticsEnabled||!this.appUrl)return;let i=xe(n,()=>{fe({shopDomain:this.shopDomain,appUrl:this.appUrl},{bundleGid:t.id,bundleType:t.bundleType})});this.impressionCleanups.push(i)}renderLoading(){this.shadow.innerHTML=`
1453
- <style>${re}</style>
1454
- <style>${Oe}</style>
1498
+ `;var Qt=e=>`lb_cart_id:${e}`;function Kt(e){if(e)return e.trim()||null;if(typeof document<"u"){let t=document.querySelector('meta[name="shopify:product-handle"]');if(t?.content)return t.content.trim()||null}if(typeof window<"u"){let t=window.location.pathname.match(/\/products\/([^/?#]+)/);if(t?.[1])return decodeURIComponent(t[1])}return null}var G=class extends HTMLElement{static observedAttributes=["shop-domain","storefront-token","bundle-gid","product-handle","app-url","analytics","locale"];shadow;bundles=[];abortController=null;impressionCleanups=[];renderCleanups=[];shopCustomCss=null;constructor(){super(),this.shadow=this.attachShadow({mode:"open"})}connectedCallback(){this.fetchBundle()}disconnectedCallback(){this.abortController?.abort(),this.teardownImpressions(),this.teardownRenderers()}teardownImpressions(){for(let t of this.impressionCleanups)t();this.impressionCleanups=[]}teardownRenderers(){for(let t of this.renderCleanups)t();this.renderCleanups=[]}attributeChangedCallback(t,r,i){r===i||!this.isConnected||(t==="bundle-gid"||t==="product-handle"||t==="shop-domain"||t==="storefront-token")&&this.shopDomain&&this.storefrontToken&&this.fetchBundle()}get shopDomain(){return this.getAttribute("shop-domain")??""}get storefrontToken(){return this.getAttribute("storefront-token")??""}get bundleGid(){return this.getAttribute("bundle-gid")??""}get productHandleAttr(){return this.getAttribute("product-handle")??""}get appUrl(){return this.getAttribute("app-url")??""}get analyticsEnabled(){return this.getAttribute("analytics")!=="false"}async fetchBundle(){if(!this.shopDomain||!this.storefrontToken){this.renderError("Missing required attributes: shop-domain, storefront-token");return}this.abortController?.abort();let t=new AbortController;this.abortController=t,this.renderLoading();let r=X({shopDomain:this.shopDomain,accessToken:this.storefrontToken});try{let i,n=!1;if(this.bundleGid)n=!0,i=this.fetchSingleBundle(r,t.signal);else{let d=Kt(this.productHandleAttr);if(!d){this.teardownImpressions(),this.renderError("No bundle-gid or product-handle provided, and the current URL doesn't match /products/<handle>.");return}i=this.fetchProductBundles(r,t.signal,d)}let a=r.query(be,void 0,{signal:t.signal}).catch(()=>null);if(await i,t.signal.aborted)return;if(n&&this.bundles.length===0){this.teardownImpressions(),this.renderError("Bundle not found");return}let o=await a;if(o?.shop?.metafield?.value){Se(this.shopDomain,o.shop.metafield.value);let d=ee(o.shop.metafield.value);d.ok&&(this.shopCustomCss=d.css)}await this.applyABVariants(),this.renderBundles()}catch(i){if(t.signal.aborted)return;this.bundles=[],this.teardownImpressions(),this.renderError(i instanceof Error?i.message:"Failed to load bundle")}}async applyABVariants(){if(!this.appUrl||this.bundles.length===0)return;let t=await Promise.all(this.bundles.map(async r=>{if(!r.abTestId||!r.abVariantB)return r;try{if((await ke(this.appUrl,this.shopDomain,r.abTestId,r.id))?.variant==="B")return xe(r)}catch(i){console.warn(`[lime-bundle] A/B assignment failed for bundle ${r.id}; falling back to Variant A.`,i)}return r}));this.bundles=t}async fetchSingleBundle(t,r){let i=await t.query(pe,{id:this.bundleGid},{signal:r});if(!i.metaobject){this.bundles=[];return}let n=J(i.metaobject.id,i.metaobject.fields);this.bundles=n?[n]:[]}async fetchProductBundles(t,r,i){let n=await t.query(he,{handle:i},{signal:r});if(!n.product){this.bundles=[];return}let a=n.product.metafield?.references?.nodes??[],o=[];for(let d of a){let l=J(d.id,d.fields);l&&o.push(l)}this.bundles=o}handleAddToCart=async(t,r)=>{let i=new CustomEvent("lime-bundle:add-to-cart",{detail:{lines:r},bubbles:!0,composed:!0,cancelable:!0}),n=this.dispatchEvent(i);this.reportAddToCartEvent(t,r),n&&await this.defaultAddToCart(r)};async defaultAddToCart(t){if(typeof window>"u")return;let r=X({shopDomain:this.shopDomain,accessToken:this.storefrontToken}),i=window.localStorage,n=Qt(this.shopDomain),a=i?.getItem(n)??null;try{let o=null;if(a){let l=(await r.query(ge,{cartId:a,lines:t})).cartLinesAdd;l?.userErrors?.length?i?.removeItem(n):l?.cart&&(o=l.cart.checkoutUrl)}if(!o){let l=(await r.query(me,{input:{lines:t}})).cartCreate;l?.cart&&(i?.setItem(n,l.cart.id),o=l.cart.checkoutUrl)}o?window.location.assign(o):this.dispatchEvent(new CustomEvent("lime-bundle:error",{detail:{message:"Cart creation failed",code:"CART_ERROR"},bubbles:!0,composed:!0}))}catch(o){this.dispatchEvent(new CustomEvent("lime-bundle:error",{detail:{message:o instanceof Error?o.message:"Cart mutation failed",code:"CART_ERROR"},bubbles:!0,composed:!0}))}}reportAddToCartEvent(t,r){if(!this.analyticsEnabled||!this.appUrl)return;let i=r.reduce((a,o)=>a+o.quantity,0),n=r.reduce((a,o)=>{let l=t.products.find(c=>c.variants.nodes.some(p=>p.id===o.merchandiseId))?.variants.nodes.find(c=>c.id===o.merchandiseId),u=l?parseFloat(l.price.amount):0;return a+u*o.quantity},0);ye({shopDomain:this.shopDomain,appUrl:this.appUrl},{bundleGid:t.id,bundleType:t.bundleType,productId:t.products[0]?.id??"",quantity:i,totalPrice:Math.round(n*100)/100})}renderBundles(){this.teardownImpressions(),this.teardownRenderers(),this.shadow.innerHTML="";let t=document.createElement("style");if(t.textContent=[ie,Oe,He,$e].join(`
1499
+ `),this.shadow.appendChild(t),this.shopCustomCss){let i=document.createElement("style");i.setAttribute("data-lime-bundles","shop-custom-css"),i.textContent=this.shopCustomCss,this.shadow.appendChild(i)}for(let i of this.bundles){let n=document.createElement("div");n.className="lb-bundle-widget",n.setAttribute("role","region"),n.setAttribute("aria-label",i.title),n.setAttribute("data-bundle-type",i.bundleType),n.setAttribute("data-bundle-gid",i.id),fe(n,i.widgetConfig);let a=d=>this.handleAddToCart(i,d),o=d=>this.renderCleanups.push(d);switch(i.bundleType){case"fixed":Ee(n,i,a,o);break;case"mix_match":Re(n,i,a,o);break;case"volume":Ue(n,i,a,o);break}this.shadow.appendChild(n),this.setupImpressionFor(i,n)}let r=this.bundles[0];this.dispatchEvent(new CustomEvent("lime-bundle:loaded",{detail:{bundleCount:this.bundles.length,bundleTypes:this.bundles.map(i=>i.bundleType),bundleType:r?.bundleType,title:r?.title},bubbles:!0,composed:!0}))}setupImpressionFor(t,r){if(!this.analyticsEnabled||!this.appUrl)return;let i=we(r,()=>{Ce({shopDomain:this.shopDomain,appUrl:this.appUrl},{bundleGid:t.id,bundleType:t.bundleType})});this.impressionCleanups.push(i)}renderLoading(){this.shadow.innerHTML=`
1500
+ <style>${ie}</style>
1501
+ <style>${Ne}</style>
1455
1502
  <div class="lb-bundle-widget lb-bundle-widget--loading" aria-busy="true" aria-label="Loading bundle">
1456
1503
  <div class="lb-skeleton lb-skeleton--title"></div>
1457
1504
  <div class="lb-skeleton--products">
@@ -1485,5 +1532,5 @@
1485
1532
  <div class="lb-skeleton lb-skeleton--cta"></div>
1486
1533
  </div>
1487
1534
  </div>
1488
- `}renderError(t){this.shadow.innerHTML="",this.dispatchEvent(new CustomEvent("lime-bundle:error",{detail:{message:t,code:"LOAD_ERROR"},bubbles:!0,composed:!0}))}};typeof customElements<"u"&&!customElements.get("lime-bundle")&&customElements.define("lime-bundle",j);return ze(zt);})();
1535
+ `}renderError(t){this.shadow.innerHTML="",this.dispatchEvent(new CustomEvent("lime-bundle:error",{detail:{message:t,code:"LOAD_ERROR"},bubbles:!0,composed:!0}))}};typeof customElements<"u"&&!customElements.get("lime-bundle")&&customElements.define("lime-bundle",G);return Qe(Yt);})();
1489
1536
  //# sourceMappingURL=lime-bundle.global.js.map