the-foxy-library 1.0.19 → 1.0.21

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.
Files changed (185) hide show
  1. package/dist/cjs/{app-globals-DRVRI1ik.js → app-globals-CoHtVZOa.js} +4 -3
  2. package/dist/cjs/app-globals-CoHtVZOa.js.map +1 -0
  3. package/dist/cjs/{factory-CC4cUyGl.js → factory-NSOuLE3E.js} +7 -4
  4. package/dist/cjs/factory-NSOuLE3E.js.map +1 -0
  5. package/dist/cjs/{index-77WT2UXf.js → index-LRS48Qt3.js} +3 -2
  6. package/dist/cjs/index-LRS48Qt3.js.map +1 -0
  7. package/dist/cjs/intravenous.cjs.js +2 -2
  8. package/dist/cjs/ion-icon_12.cjs.entry.js +2 -2
  9. package/dist/cjs/iv-banner.cjs.entry.js +1 -1
  10. package/dist/cjs/iv-card_3.cjs.entry.js +2 -2
  11. package/dist/cjs/iv-carousel.cjs.entry.js +1 -1
  12. package/dist/cjs/iv-compare-product.cjs.entry.js +1 -1
  13. package/dist/cjs/iv-dynamic-products-carousel.cjs.entry.js +2 -2
  14. package/dist/cjs/iv-dynamic-products.cjs.entry.js +2 -2
  15. package/dist/cjs/iv-filters.cjs.entry.js +1 -1
  16. package/dist/cjs/iv-predictive-search.cjs.entry.js +1 -1
  17. package/dist/cjs/iv-product-pin.cjs.entry.js +1 -1
  18. package/dist/cjs/iv-product-upsell.cjs.entry.js +1 -1
  19. package/dist/cjs/iv-recently-viewed.cjs.entry.js +2 -2
  20. package/dist/cjs/iv-shop-the-look.cjs.entry.js +1 -1
  21. package/dist/cjs/iv-suggest.cjs.entry.js +1 -1
  22. package/dist/cjs/iv-tabs.cjs.entry.js +1 -1
  23. package/dist/cjs/iv-toast-container.cjs.entry.js +1 -1
  24. package/dist/cjs/iv-toast.cjs.entry.js +1 -1
  25. package/dist/cjs/iv-wishlist.cjs.entry.js +1 -1
  26. package/dist/cjs/loader.cjs.js +2 -2
  27. package/dist/cjs/sw-in-grid-content.cjs.entry.js +1 -1
  28. package/dist/cjs/sw-size-guide.cjs.entry.js +1 -1
  29. package/dist/collection/global/app.js +1 -0
  30. package/dist/collection/global/app.js.map +1 -1
  31. package/dist/collection/utils/config/factory.js +1 -0
  32. package/dist/collection/utils/config/factory.js.map +1 -1
  33. package/dist/collection/utils/storefront_api/factory.js +4 -1
  34. package/dist/collection/utils/storefront_api/factory.js.map +1 -1
  35. package/dist/components/index.js +3 -2
  36. package/dist/components/index.js.map +1 -1
  37. package/dist/components/ion-icon.js +1 -1
  38. package/dist/components/iv-accordion.js +2 -2
  39. package/dist/components/iv-banner.js +1 -1
  40. package/dist/components/iv-button.js +1 -1
  41. package/dist/components/iv-card.js +1 -1
  42. package/dist/components/iv-carousel.js +1 -1
  43. package/dist/components/iv-compare-product.js +1 -1
  44. package/dist/components/iv-dynamic-products-carousel.js +6 -6
  45. package/dist/components/iv-dynamic-products.js +7 -7
  46. package/dist/components/iv-event-button.js +1 -1
  47. package/dist/components/iv-filters.js +1 -1
  48. package/dist/components/iv-footer.js +1 -1
  49. package/dist/components/iv-layout.js +1 -1
  50. package/dist/components/iv-link-list.js +2 -2
  51. package/dist/components/iv-link.js +1 -1
  52. package/dist/components/iv-modal.js +3 -3
  53. package/dist/components/iv-newsletter.js +2 -2
  54. package/dist/components/iv-predictive-search.js +5 -5
  55. package/dist/components/iv-product-pin.js +1 -1
  56. package/dist/components/iv-product-upsell.js +1 -1
  57. package/dist/components/iv-recently-viewed.js +6 -6
  58. package/dist/components/iv-shop-the-look.js +2 -2
  59. package/dist/components/iv-sidebar.js +3 -3
  60. package/dist/components/iv-spinner.js +1 -1
  61. package/dist/components/iv-suggest.js +6 -6
  62. package/dist/components/iv-tabs.js +1 -1
  63. package/dist/components/iv-toast-container.js +2 -2
  64. package/dist/components/iv-toast.js +1 -1
  65. package/dist/components/iv-two-col-media.js +1 -1
  66. package/dist/components/iv-wishlist-view.js +1 -1
  67. package/dist/components/iv-wishlist.js +2 -2
  68. package/dist/components/{p-CvO-bCed.js → p-B-4VoGV_.js} +3 -3
  69. package/dist/components/{p-CvO-bCed.js.map → p-B-4VoGV_.js.map} +1 -1
  70. package/dist/components/{p-Blz-LJSV.js → p-B4yIesaL.js} +3 -3
  71. package/dist/components/{p-Blz-LJSV.js.map → p-B4yIesaL.js.map} +1 -1
  72. package/dist/components/{p-3lSW4-ii.js → p-BMsgAmDZ.js} +3 -3
  73. package/dist/components/{p-3lSW4-ii.js.map → p-BMsgAmDZ.js.map} +1 -1
  74. package/dist/components/{p-kuABA_Tv.js → p-BVAxyx8A.js} +3 -3
  75. package/dist/components/{p-kuABA_Tv.js.map → p-BVAxyx8A.js.map} +1 -1
  76. package/dist/components/{p-Cmnclx4w.js → p-BVL7DqEj.js} +7 -4
  77. package/dist/components/p-BVL7DqEj.js.map +1 -0
  78. package/dist/components/{p-CmetOj56.js → p-BpdXCMak.js} +3 -3
  79. package/dist/components/{p-CmetOj56.js.map → p-BpdXCMak.js.map} +1 -1
  80. package/dist/components/{p-DV16vkcI.js → p-CUI6hRMI.js} +3 -3
  81. package/dist/components/{p-DV16vkcI.js.map → p-CUI6hRMI.js.map} +1 -1
  82. package/dist/components/{p-HxD8ZMcb.js → p-D8GfK9z_.js} +3 -3
  83. package/dist/components/{p-HxD8ZMcb.js.map → p-D8GfK9z_.js.map} +1 -1
  84. package/dist/components/{p-3YQcGgfQ.js → p-DE0H3IbO.js} +5 -5
  85. package/dist/components/{p-3YQcGgfQ.js.map → p-DE0H3IbO.js.map} +1 -1
  86. package/dist/components/{p-D2SCT3Sb.js → p-DVvBorxR.js} +3 -3
  87. package/dist/components/{p-D2SCT3Sb.js.map → p-DVvBorxR.js.map} +1 -1
  88. package/dist/components/{p-haFsiJTQ.js → p-IJUHvLzw.js} +6 -6
  89. package/dist/components/{p-haFsiJTQ.js.map → p-IJUHvLzw.js.map} +1 -1
  90. package/dist/components/{p-DH3wWIxr.js → p-XXtzVg2d.js} +3 -2
  91. package/dist/components/p-XXtzVg2d.js.map +1 -0
  92. package/dist/components/{p-Dfh8X_q_.js → p-dpzz67iI.js} +3 -3
  93. package/dist/components/{p-Dfh8X_q_.js.map → p-dpzz67iI.js.map} +1 -1
  94. package/dist/components/sw-in-grid-content.js +1 -1
  95. package/dist/components/sw-size-guide.js +1 -1
  96. package/dist/esm/{app-globals-BRJyMwss.js → app-globals-D2HG9z1r.js} +4 -3
  97. package/dist/esm/app-globals-D2HG9z1r.js.map +1 -0
  98. package/dist/esm/{factory-nzeOUOp1.js → factory-Bf2IW1Vz.js} +7 -4
  99. package/dist/esm/factory-Bf2IW1Vz.js.map +1 -0
  100. package/dist/esm/{index-BW0IzFf8.js → index-Cb3Nnjkn.js} +3 -2
  101. package/dist/esm/index-Cb3Nnjkn.js.map +1 -0
  102. package/dist/esm/intravenous.js +3 -3
  103. package/dist/esm/ion-icon_12.entry.js +2 -2
  104. package/dist/esm/iv-banner.entry.js +1 -1
  105. package/dist/esm/iv-card_3.entry.js +2 -2
  106. package/dist/esm/iv-carousel.entry.js +1 -1
  107. package/dist/esm/iv-compare-product.entry.js +1 -1
  108. package/dist/esm/iv-dynamic-products-carousel.entry.js +2 -2
  109. package/dist/esm/iv-dynamic-products.entry.js +2 -2
  110. package/dist/esm/iv-filters.entry.js +1 -1
  111. package/dist/esm/iv-predictive-search.entry.js +1 -1
  112. package/dist/esm/iv-product-pin.entry.js +1 -1
  113. package/dist/esm/iv-product-upsell.entry.js +1 -1
  114. package/dist/esm/iv-recently-viewed.entry.js +2 -2
  115. package/dist/esm/iv-shop-the-look.entry.js +1 -1
  116. package/dist/esm/iv-suggest.entry.js +1 -1
  117. package/dist/esm/iv-tabs.entry.js +1 -1
  118. package/dist/esm/iv-toast-container.entry.js +1 -1
  119. package/dist/esm/iv-toast.entry.js +1 -1
  120. package/dist/esm/iv-wishlist.entry.js +1 -1
  121. package/dist/esm/loader.js +3 -3
  122. package/dist/esm/sw-in-grid-content.entry.js +1 -1
  123. package/dist/esm/sw-size-guide.entry.js +1 -1
  124. package/dist/intravenous/intravenous.esm.js +1 -1
  125. package/dist/intravenous/{p-c1d875cf.entry.js → p-0f07e69c.entry.js} +2 -2
  126. package/dist/intravenous/{p-a35de10b.entry.js → p-1394ddc3.entry.js} +2 -2
  127. package/dist/intravenous/{p-ec7b539d.entry.js → p-19185e49.entry.js} +2 -2
  128. package/dist/intravenous/p-1d169085.entry.js +2 -0
  129. package/dist/intravenous/{p-50008fa6.entry.js → p-28d83a02.entry.js} +2 -2
  130. package/dist/intravenous/{p-45c70b13.entry.js → p-3a43aff3.entry.js} +2 -2
  131. package/dist/intravenous/{p-a617d9d0.entry.js → p-3ad476a3.entry.js} +2 -2
  132. package/dist/intravenous/{p-2c191fe7.entry.js → p-40d5f2dd.entry.js} +2 -2
  133. package/dist/intravenous/{p-78e8d319.entry.js → p-51f91c3c.entry.js} +2 -2
  134. package/dist/intravenous/p-6yYowr-X.js +2 -0
  135. package/dist/intravenous/p-6yYowr-X.js.map +1 -0
  136. package/dist/intravenous/{p-21d5f405.entry.js → p-7a73eb94.entry.js} +2 -2
  137. package/dist/intravenous/{p-55f43ae2.entry.js → p-7e46d5b9.entry.js} +2 -2
  138. package/dist/intravenous/{p-dc8d0b9e.entry.js → p-8d726fec.entry.js} +2 -2
  139. package/dist/intravenous/{p-BW0IzFf8.js → p-Cb3Nnjkn.js} +2 -2
  140. package/dist/intravenous/p-Cb3Nnjkn.js.map +1 -0
  141. package/dist/intravenous/p-DujflZ2b.js +2 -0
  142. package/dist/intravenous/p-DujflZ2b.js.map +1 -0
  143. package/dist/intravenous/{p-145798b2.entry.js → p-a28bd4eb.entry.js} +2 -2
  144. package/dist/intravenous/{p-256a765e.entry.js → p-a66c7492.entry.js} +2 -2
  145. package/dist/intravenous/{p-a7b3baf0.entry.js → p-a7d8309c.entry.js} +2 -2
  146. package/dist/intravenous/{p-aebd8d4b.entry.js → p-affde66d.entry.js} +2 -2
  147. package/dist/intravenous/{p-19cf30b1.entry.js → p-b2e8bb5f.entry.js} +2 -2
  148. package/dist/intravenous/{p-331983d1.entry.js → p-bfe01a14.entry.js} +2 -2
  149. package/dist/intravenous/{p-13ce40ae.entry.js → p-ca10d662.entry.js} +2 -2
  150. package/dist/intravenous/{p-cbf8e7b8.entry.js → p-ff2b5ad8.entry.js} +2 -2
  151. package/package.json +1 -1
  152. package/dist/cjs/app-globals-DRVRI1ik.js.map +0 -1
  153. package/dist/cjs/factory-CC4cUyGl.js.map +0 -1
  154. package/dist/cjs/index-77WT2UXf.js.map +0 -1
  155. package/dist/components/p-Cmnclx4w.js.map +0 -1
  156. package/dist/components/p-DH3wWIxr.js.map +0 -1
  157. package/dist/esm/app-globals-BRJyMwss.js.map +0 -1
  158. package/dist/esm/factory-nzeOUOp1.js.map +0 -1
  159. package/dist/esm/index-BW0IzFf8.js.map +0 -1
  160. package/dist/intravenous/p-BAss6u3X.js +0 -2
  161. package/dist/intravenous/p-BAss6u3X.js.map +0 -1
  162. package/dist/intravenous/p-BW0IzFf8.js.map +0 -1
  163. package/dist/intravenous/p-DHfJNZjh.js +0 -2
  164. package/dist/intravenous/p-DHfJNZjh.js.map +0 -1
  165. package/dist/intravenous/p-e7109ec4.entry.js +0 -2
  166. /package/dist/intravenous/{p-c1d875cf.entry.js.map → p-0f07e69c.entry.js.map} +0 -0
  167. /package/dist/intravenous/{p-a35de10b.entry.js.map → p-1394ddc3.entry.js.map} +0 -0
  168. /package/dist/intravenous/{p-ec7b539d.entry.js.map → p-19185e49.entry.js.map} +0 -0
  169. /package/dist/intravenous/{p-e7109ec4.entry.js.map → p-1d169085.entry.js.map} +0 -0
  170. /package/dist/intravenous/{p-50008fa6.entry.js.map → p-28d83a02.entry.js.map} +0 -0
  171. /package/dist/intravenous/{p-45c70b13.entry.js.map → p-3a43aff3.entry.js.map} +0 -0
  172. /package/dist/intravenous/{p-a617d9d0.entry.js.map → p-3ad476a3.entry.js.map} +0 -0
  173. /package/dist/intravenous/{p-2c191fe7.entry.js.map → p-40d5f2dd.entry.js.map} +0 -0
  174. /package/dist/intravenous/{p-78e8d319.entry.js.map → p-51f91c3c.entry.js.map} +0 -0
  175. /package/dist/intravenous/{p-21d5f405.entry.js.map → p-7a73eb94.entry.js.map} +0 -0
  176. /package/dist/intravenous/{p-55f43ae2.entry.js.map → p-7e46d5b9.entry.js.map} +0 -0
  177. /package/dist/intravenous/{p-dc8d0b9e.entry.js.map → p-8d726fec.entry.js.map} +0 -0
  178. /package/dist/intravenous/{p-145798b2.entry.js.map → p-a28bd4eb.entry.js.map} +0 -0
  179. /package/dist/intravenous/{p-256a765e.entry.js.map → p-a66c7492.entry.js.map} +0 -0
  180. /package/dist/intravenous/{p-a7b3baf0.entry.js.map → p-a7d8309c.entry.js.map} +0 -0
  181. /package/dist/intravenous/{p-aebd8d4b.entry.js.map → p-affde66d.entry.js.map} +0 -0
  182. /package/dist/intravenous/{p-19cf30b1.entry.js.map → p-b2e8bb5f.entry.js.map} +0 -0
  183. /package/dist/intravenous/{p-331983d1.entry.js.map → p-bfe01a14.entry.js.map} +0 -0
  184. /package/dist/intravenous/{p-13ce40ae.entry.js.map → p-ca10d662.entry.js.map} +0 -0
  185. /package/dist/intravenous/{p-cbf8e7b8.entry.js.map → p-ff2b5ad8.entry.js.map} +0 -0
@@ -0,0 +1,2 @@
1
+ import{k as n,a as t}from"./p-Cb3Nnjkn.js";async function o(n,o={}){try{if(!t.shopDomainApi||!t.storefrontToken)throw new Error("Missing Shopify configuration (shopDomain/storefrontToken)");const r="https://craftnberry-co-uk.myshopify.com/api/2025-07/graphql.json";console.log("[IV] Shopify Fetch to",r);const e=t.storefrontToken;console.log("[IV] Using storefront token",e);const s=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json","X-Shopify-Storefront-Access-Token":e},body:JSON.stringify({query:n,variables:o})});const c=await s.json();if(c.errors)throw new Error(c.errors.map((n=>n.message)).join(", "));return c.data}catch(n){console.error("Shopify Fetch Error:",n);throw n}}async function r(n){const t=`\n query ($handle: String!) {\n product(handle: $handle) {\n id\n }\n }`;try{const r=await o(t,{handle:n});return r?.product?.id||null}catch(n){console.error("getIdFromHandle error:",n);return null}}const e=["id","handle","title"];const s=["id","title","price { amount currencyCode }"];function c(n,t){const o=(Array.isArray(n)?n:n.split(",")).map((n=>n.trim())).filter(Boolean);const r=new Set;const e=[];for(const n of o){if(!r.has(n)){r.add(n);e.push(n)}}for(const n of t){if(!r.has(n)){r.add(n);e.push(n)}}return e}function i(n){return n.filter((n=>n!=="price")).map((n=>{if(n==="images")return"images(first: 10) { nodes { url altText } }";return n})).join("\n")}function a(n=s){return n.join("\n")}function d(n,t){const o=t||n.variants?.edges?.[0]?.node||{};let r=null;let e=null;if(n.images?.nodes&&n.images.nodes.length>0){r=n.images.nodes[0].url||null;e=n.images.nodes[0].altText||null}const{id:s,price:c}=o;return{id:n.id,...Object.fromEntries(Object.entries(n).filter((([n])=>n!=="variants"))),variantId:s,price:c?.amount||null,imageUrl:r,imageAlt:e}}function l(n,t){return`\n query ($limit: Int!, $sortKey: ProductSortKeys!, $reverse: Boolean) {\n products(first: $limit, sortKey: $sortKey, reverse: $reverse) {\n edges {\n node {\n ${n}\n variants(first: 1) { edges { node { ${t} } } }\n }\n }\n }\n }`}function u(n,t){return`\n query ($handle: String!, $limit: Int!, $sortKey: ProductCollectionSortKeys!, $reverse: Boolean) {\n collection(handle: $handle) {\n products(first: $limit, sortKey: $sortKey, reverse: $reverse) {\n edges {\n node {\n ${n}\n variants(first: 1) { edges { node { ${t} } } }\n }\n }\n }\n }\n }`}function f(n,t){return`\n query ($id: ID!) {\n product(id: $id) {\n ${n}\n variants(first: 1) { edges { node { ${t} } } }\n }\n }`}async function h(n,t,r,s,f=false){try{const h=c(s,e);const y=i(h);const p=a();const $=!t||t==="all";const w=$?l(y,p):u(y,p);const m=!!f;const g=$?{limit:n,sortKey:r,reverse:m}:{handle:t,limit:n,sortKey:r,reverse:m};const v=await o(w,g);const S=v.products?.edges||v.collection?.products?.edges||[];return S.map((n=>d(n.node)))}catch(n){console.error("Fetch Products Error:",n);throw n}}async function y(n,t,r){try{const r=c(t,e);const s=i(r);const l=a();const u=f(s,l);const h=await o(u,{id:n});const y=h?.product;if(!y)return null;return d(y)}catch(n){console.error("Fetch Product By ID Error:",n);throw n}}async function p(t){try{console.log("IV add to cart called");if(!t.id)throw new Error("No variant id provided for addToCart");const o=t.quantity||1;const r=t.properties||{};const e={items:[{id:t.id,quantity:o,properties:r}]};const s="/cart/add.js";const c=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json","X-Requested-With":"XMLHttpRequest"},body:JSON.stringify(e)});if(!c.ok){const n=await c.text();throw new Error(n)}const i=await c.json();n("Added to cart!","success",3e3);return i}catch(t){n("Error adding to cart","error",5e3);throw t}}export{p as a,y as b,h as f,r as g};
2
+ //# sourceMappingURL=p-DujflZ2b.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"p-DujflZ2b.js","sources":["src/utils/storefront_api/factory.ts"],"sourcesContent":["import { state, showToast } from \"../store/store\";\r\nasync function shopifyFetch(query: string, variables: Record<string, any> = {}): Promise<any> {\r\n try {\r\n if(!state.shopDomainApi || !state.storefrontToken) throw new Error('Missing Shopify configuration (shopDomain/storefrontToken)');\r\n // const endpoint = `https://${state.shopDomainApi}/api/2025-07/graphql.json`;\r\n const endpoint = 'https://craftnberry-co-uk.myshopify.com/api/2025-07/graphql.json';\r\n console.log('[IV] Shopify Fetch to', endpoint);\r\n const token = state.storefrontToken;\r\n console.log('[IV] Using storefront token', token);\r\n const res = await fetch(endpoint, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-Shopify-Storefront-Access-Token': token\r\n },\r\n body: JSON.stringify({ query, variables })\r\n });\r\n const json = await res.json();\r\n if(json.errors) throw new Error(json.errors.map((e: any) => e.message).join(', '));\r\n return json.data;\r\n } catch(error) {\r\n console.error('Shopify Fetch Error:', error);\r\n throw error; \r\n };\r\n};\r\n\r\nexport async function getIdFromHandle(handle: string): Promise<string | null> {\r\n const query = `\r\n query ($handle: String!) {\r\n product(handle: $handle) {\r\n id\r\n }\r\n }`;\r\n try {\r\n const data = await shopifyFetch(query, { handle });\r\n return data?.product?.id || null;\r\n } catch (error) {\r\n console.error('getIdFromHandle error:', error);\r\n return null;\r\n };\r\n};\r\n\r\n// Field + normalization helpers\r\nconst BASE_PRODUCT_FIELDS = ['id','handle','title'];\r\nconst DEFAULT_VARIANT_FIELDS = ['id','title','price { amount currencyCode }'];\r\n\r\nfunction mergeFields(requested: string[] | string, defaults: string[]): string[] {\r\n const req = (Array.isArray(requested) ? requested : requested.split(','))\r\n .map(f => f.trim())\r\n .filter(Boolean);\r\n const seen = new Set<string>();\r\n const ordered: string[] = [];\r\n for(const f of req) { \r\n if(!seen.has(f)) { \r\n seen.add(f); ordered.push(f); \r\n }; \r\n };\r\n for(const d of defaults) { \r\n if(!seen.has(d)) { \r\n seen.add(d); \r\n ordered.push(d); \r\n }; \r\n };\r\n return ordered;\r\n};\r\n\r\nfunction expandProductFields(fields: string[]): string {\r\n return fields\r\n .filter(f => f !== 'price')\r\n .map(f => {\r\n if(f === 'images') return 'images(first: 10) { nodes { url altText } }';\r\n return f;\r\n })\r\n .join('\\n');\r\n};\r\n\r\nfunction variantSelection(fields: string[] = DEFAULT_VARIANT_FIELDS): string {\r\n return fields.join('\\n');\r\n};\r\n\r\ninterface NormalizedProduct {\r\n id: string;\r\n handle?: string;\r\n title?: string;\r\n variantId?: string;\r\n price?: string | null;\r\n imageUrl?: string | null;\r\n imageAlt?: string | null;\r\n // index signature for dynamic requested fields\r\n [key: string]: any;\r\n};\r\n\r\nfunction normalizeProduct(product: any, selectedVariant?: any): NormalizedProduct {\r\n const variant = selectedVariant || product.variants?.edges?.[0]?.node || {};\r\n let imageUrl = null;\r\n let imageAlt = null;\r\n if(product.images?.nodes && product.images.nodes.length > 0) {\r\n imageUrl = product.images.nodes[0].url || null;\r\n imageAlt = product.images.nodes[0].altText || null;\r\n };\r\n const { id: variantId, price } = variant;\r\n return {\r\n id: product.id,\r\n ...Object.fromEntries(Object.entries(product).filter(([key]) => key !== 'variants')),\r\n variantId,\r\n price: price?.amount || null,\r\n imageUrl,\r\n imageAlt,\r\n };\r\n};\r\n\r\n// Query builders\r\nfunction buildProductsQuery(fieldsString: string, variantFieldsString: string) {\r\n return `\r\n query ($limit: Int!, $sortKey: ProductSortKeys!, $reverse: Boolean) {\r\n products(first: $limit, sortKey: $sortKey, reverse: $reverse) {\r\n edges {\r\n node {\r\n ${fieldsString}\r\n variants(first: 1) { edges { node { ${variantFieldsString} } } }\r\n }\r\n }\r\n }\r\n }`;\r\n};\r\n\r\nfunction buildCollectionProductsQuery(fieldsString: string, variantFieldsString: string) {\r\n return `\r\n query ($handle: String!, $limit: Int!, $sortKey: ProductCollectionSortKeys!, $reverse: Boolean) {\r\n collection(handle: $handle) {\r\n products(first: $limit, sortKey: $sortKey, reverse: $reverse) {\r\n edges {\r\n node {\r\n ${fieldsString}\r\n variants(first: 1) { edges { node { ${variantFieldsString} } } }\r\n }\r\n }\r\n }\r\n }\r\n }`;\r\n};\r\n\r\nfunction buildSingleProductQuery(fieldsString: string, variantFieldsString: string) {\r\n return `\r\n query ($id: ID!) {\r\n product(id: $id) {\r\n ${fieldsString}\r\n variants(first: 1) { edges { node { ${variantFieldsString} } } }\r\n }\r\n }`;\r\n};\r\n\r\nfunction buildVariantProductQuery(productFieldsString: string, variantFieldsString: string) {\r\n return `\r\n query ($id: ID!) {\r\n productVariant(id: $id) {\r\n ${variantFieldsString}\r\n product {\r\n ${productFieldsString}\r\n variants(first: 1) { edges { node { ${variantFieldsString} } } }\r\n }\r\n }\r\n }`;\r\n};\r\n\r\n// Public API\r\nexport async function fetchProducts(limit: number, collectionHandle: string, sortKey: string, fields: string[] | string, reversed: boolean = false) {\r\n try {\r\n const merged = mergeFields(fields, BASE_PRODUCT_FIELDS);\r\n const fieldsString = expandProductFields(merged);\r\n const variantFieldsString = variantSelection();\r\n const isAll = !collectionHandle || collectionHandle === 'all';\r\n const query = isAll ? buildProductsQuery(fieldsString, variantFieldsString) : buildCollectionProductsQuery(fieldsString, variantFieldsString);\r\n const reverse = !!reversed;\r\n const variables: Record<string, any> = isAll ? { limit, sortKey, reverse } : { handle: collectionHandle, limit, sortKey, reverse };\r\n const data = await shopifyFetch(query, variables);\r\n const productEdges = data.products?.edges || data.collection?.products?.edges || [];\r\n return productEdges.map((edge: any) => normalizeProduct(edge.node));\r\n } catch(error) { \r\n console.error('Fetch Products Error:', error); throw error;\r\n };\r\n};\r\n\r\nexport async function fetchProductByID(id: string, fields: string[] | string, options?: { variantId?: string }): Promise<NormalizedProduct | null> {\r\n try {\r\n if(options?.variantId) return await getVariantProduct(options.variantId, fields);\r\n const merged = mergeFields(fields, BASE_PRODUCT_FIELDS);\r\n const fieldsString = expandProductFields(merged);\r\n const variantFieldsString = variantSelection();\r\n const query = buildSingleProductQuery(fieldsString, variantFieldsString);\r\n const data = await shopifyFetch(query, { id });\r\n const product = data?.product;\r\n if(!product) return null;\r\n return normalizeProduct(product);\r\n } catch(error) { console.error('Fetch Product By ID Error:', error); throw error; };\r\n};\r\n\r\nexport async function getVariantProduct(variantId: string, fields: string[] | string): Promise<NormalizedProduct | null> {\r\n try {\r\n const merged = mergeFields(fields, BASE_PRODUCT_FIELDS);\r\n const productFieldsString = expandProductFields(merged);\r\n const variantFieldsString = variantSelection();\r\n const query = buildVariantProductQuery(productFieldsString, variantFieldsString);\r\n const data = await shopifyFetch(query, { id: variantId });\r\n const variantNode = data?.productVariant;\r\n if(!variantNode) return null;\r\n const product = variantNode.product;\r\n if(!product) return null;\r\n return normalizeProduct(product, variantNode); \r\n } catch(error) { console.error('Get Variant Product Error:', error); throw error; };\r\n};\r\n\r\nexport async function addToCart(options: {\r\n id: number;\r\n quantity?: number;\r\n properties?: Record<string, any>;\r\n}) {\r\n try {\r\n console.log('IV add to cart called');\r\n if(!options.id) throw new Error('No variant id provided for addToCart');\r\n const quantity = options.quantity || 1;\r\n const properties = options.properties || {};\r\n const payload = {\r\n items: [\r\n {\r\n id: options.id,\r\n quantity,\r\n properties\r\n }\r\n ]\r\n };\r\n const url = '/cart/add.js';\r\n const res = await fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json',\r\n 'X-Requested-With': 'XMLHttpRequest'\r\n },\r\n body: JSON.stringify(payload)\r\n });\r\n if(!res.ok) {\r\n const errorText = await res.text();\r\n throw new Error(errorText);\r\n };\r\n const cartItem = await res.json();\r\n showToast('Added to cart!', 'success', 3000);\r\n return cartItem;\r\n } catch (error) {\r\n showToast('Error adding to cart', 'error', 5000);\r\n throw error;\r\n };\r\n};"],"names":[],"mappings":";;AACA,eAAe,YAAY,CAAC,KAAa,EAAE,YAAiC,EAAE,EAAA;AAC5E,IAAA,IAAI;QACF,IAAG,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,eAAe;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC;;QAEhI,MAAM,QAAQ,GAAG,kEAAkE;AACnF,QAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,QAAQ,CAAC;AAC9C,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,eAAe;AACnC,QAAA,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,KAAK,CAAC;AACjD,QAAA,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;AAChC,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,OAAO,EAAE;AACP,gBAAA,cAAc,EAAE,kBAAkB;AAClC,gBAAA,mCAAmC,EAAE;AACtC,aAAA;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;AAC1C,SAAA,CAAC;AACF,QAAA,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE;QAC7B,IAAG,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC,IAAI;;IAChB,OAAM,KAAK,EAAE;AACb,QAAA,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC;AAC5C,QAAA,MAAM,KAAK;;AAEf;AAEO,eAAe,eAAe,CAAC,MAAc,EAAA;AAClD,IAAA,MAAM,KAAK,GAAG,CAAA;;;;;MAKV;AACJ,IAAA,IAAI;QACF,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC;AAClD,QAAA,OAAO,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,IAAI;;IAChC,OAAO,KAAK,EAAE;AACd,QAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC;AAC9C,QAAA,OAAO,IAAI;;AAEf;AAEA;AACA,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,CAAC;AACnD,MAAM,sBAAsB,GAAG,CAAC,IAAI,EAAC,OAAO,EAAC,+BAA+B,CAAC;AAE7E,SAAS,WAAW,CAAC,SAA4B,EAAE,QAAkB,EAAA;IACnE,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;SACrE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;SACjB,MAAM,CAAC,OAAO,CAAC;AAClB,IAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU;IAC9B,MAAM,OAAO,GAAa,EAAE;AAC5B,IAAA,KAAI,MAAM,CAAC,IAAI,GAAG,EAAE;QAClB,IAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACf,YAAA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;;;AAGhC,IAAA,KAAI,MAAM,CAAC,IAAI,QAAQ,EAAE;QACvB,IAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACf,YAAA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACX,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;;;AAGnB,IAAA,OAAO,OAAO;AAChB;AAEA,SAAS,mBAAmB,CAAC,MAAgB,EAAA;AAC3C,IAAA,OAAO;SACJ,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,OAAO;SACzB,GAAG,CAAC,CAAC,IAAG;QACP,IAAG,CAAC,KAAK,QAAQ;AAAE,YAAA,OAAO,6CAA6C;AACvE,QAAA,OAAO,CAAC;AACV,KAAC;SACA,IAAI,CAAC,IAAI,CAAC;AACf;AAEA,SAAS,gBAAgB,CAAC,MAAA,GAAmB,sBAAsB,EAAA;AACjE,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B;AAcA,SAAS,gBAAgB,CAAC,OAAY,EAAE,eAAqB,EAAA;AAC3D,IAAA,MAAM,OAAO,GAAG,eAAe,IAAI,OAAO,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE;IAC3E,IAAI,QAAQ,GAAG,IAAI;IACnB,IAAI,QAAQ,GAAG,IAAI;AACnB,IAAA,IAAG,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3D,QAAA,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI;AAC9C,QAAA,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI;;IAEpD,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,OAAO;IACxC,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,UAAU,CAAC,CAAC;QACpF,SAAS;AACT,QAAA,KAAK,EAAE,KAAK,EAAE,MAAM,IAAI,IAAI;QAC5B,QAAQ;QACR,QAAQ;KACT;AACH;AAEA;AACA,SAAS,kBAAkB,CAAC,YAAoB,EAAE,mBAA2B,EAAA;IAC3E,OAAO,CAAA;;;;;cAKK,YAAY,CAAA;kDACwB,mBAAmB,CAAA;;;;MAI/D;AACN;AAEA,SAAS,4BAA4B,CAAC,YAAoB,EAAE,mBAA2B,EAAA;IACrF,OAAO,CAAA;;;;;;gBAMO,YAAY,CAAA;oDACwB,mBAAmB,CAAA;;;;;MAKjE;AACN;AAEA,SAAS,uBAAuB,CAAC,YAAoB,EAAE,mBAA2B,EAAA;IAChF,OAAO,CAAA;;;UAGC,YAAY,CAAA;8CACwB,mBAAmB,CAAA;;MAE3D;AACN;AAeA;AACO,eAAe,aAAa,CAAC,KAAa,EAAE,gBAAwB,EAAE,OAAe,EAAE,MAAyB,EAAE,WAAoB,KAAK,EAAA;AAChJ,IAAA,IAAI;QACF,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC;AACvD,QAAA,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC;AAChD,QAAA,MAAM,mBAAmB,GAAG,gBAAgB,EAAE;QAC9C,MAAM,KAAK,GAAG,CAAC,gBAAgB,IAAI,gBAAgB,KAAK,KAAK;QAC7D,MAAM,KAAK,GAAG,KAAK,GAAG,kBAAkB,CAAC,YAAY,EAAE,mBAAmB,CAAC,GAAG,4BAA4B,CAAC,YAAY,EAAE,mBAAmB,CAAC;AAC7I,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ;QAC1B,MAAM,SAAS,GAAwB,KAAK,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;QAClI,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;AACjD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE;AACnF,QAAA,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,IAAS,KAAK,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;IACnE,OAAM,KAAK,EAAE;AACb,QAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC;AAAE,QAAA,MAAM,KAAK;;AAE9D;AAEO,eAAe,gBAAgB,CAAC,EAAU,EAAE,MAAyB,EAAE,OAAgC,EAAA;AAC5G,IAAA,IAAI;QAEF,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC;AACvD,QAAA,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC;AAChD,QAAA,MAAM,mBAAmB,GAAG,gBAAgB,EAAE;QAC9C,MAAM,KAAK,GAAG,uBAAuB,CAAC,YAAY,EAAE,mBAAmB,CAAC;QACxE,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC;AAC9C,QAAA,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO;AAC7B,QAAA,IAAG,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI;AACxB,QAAA,OAAO,gBAAgB,CAAC,OAAO,CAAC;;IAChC,OAAM,KAAK,EAAE;AAAE,QAAA,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC;AAAE,QAAA,MAAM,KAAK;;AAClF;AAiBO,eAAe,SAAS,CAAC,OAI/B,EAAA;AACC,IAAA,IAAI;AACF,QAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;QACpC,IAAG,CAAC,OAAO,CAAC,EAAE;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;AACvE,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC;AACtC,QAAA,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,KAAK,EAAE;AACL,gBAAA;oBACE,EAAE,EAAE,OAAO,CAAC,EAAE;oBACd,QAAQ;oBACR;AACD;AACF;SACF;QACD,MAAM,GAAG,GAAG,cAAc;AAC1B,QAAA,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;AAC3B,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,OAAO,EAAE;AACP,gBAAA,cAAc,EAAE,kBAAkB;AAClC,gBAAA,QAAQ,EAAE,kBAAkB;AAC5B,gBAAA,kBAAkB,EAAE;AACrB,aAAA;AACD,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO;AAC7B,SAAA,CAAC;AACF,QAAA,IAAG,CAAC,GAAG,CAAC,EAAE,EAAE;AACV,YAAA,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE;AAClC,YAAA,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC;;AAE5B,QAAA,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE;AACjC,QAAA,SAAS,CAAC,gBAAgB,EAAE,SAAS,EAAE,IAAI,CAAC;AAC5C,QAAA,OAAO,QAAQ;;IACf,OAAO,KAAK,EAAE;AACd,QAAA,SAAS,CAAC,sBAAsB,EAAE,OAAO,EAAE,IAAI,CAAC;AAChD,QAAA,MAAM,KAAK;;AAEf;;;;"}
@@ -1,2 +1,2 @@
1
- import{r as t,j as e,a as i,h as s}from"./p-BW0IzFf8.js";import{f as a}from"./p-DHfJNZjh.js";import{p as r}from"./p-C9YXddZh.js";const o=":host{display:block}.iv-dynamic-products-carousel{position:relative}.iv-dynamic-products-carousel-carousel{position:relative}.iv-dynamic-products-carousel-viewport{overflow:hidden;width:100%}.iv-dynamic-products-carousel-track{display:flex;width:100%;transition:transform 0.55s cubic-bezier(0.4, 0.7, 0.2, 1);will-change:transform}.iv-dynamic-products-carousel-slide{flex:0 0 100%;box-sizing:border-box;padding:0.25rem 0.5rem;display:grid;grid-template-columns:repeat(6, minmax(0, 1fr));gap:1rem;align-items:stretch;grid-auto-rows:1fr}@media (max-width: 1200px){.iv-dynamic-products-carousel-slide{grid-template-columns:repeat(4, minmax(0, 1fr))}}@media (max-width: 900px){.iv-dynamic-products-carousel-slide{grid-template-columns:repeat(3, minmax(0, 1fr))}}@media (max-width: 640px){.iv-dynamic-products-carousel-slide{grid-template-columns:repeat(2, minmax(0, 1fr));gap:0.75rem}}.iv-dynamic-products-carousel-card{height:100%;display:flex;flex-direction:column;background:#fff;padding:0.75rem 0.75rem 0.9rem;box-shadow:0 2px 6px rgba(0, 0, 0, 0.08);transition:box-shadow 0.2s ease, transform 0.2s ease}.iv-dynamic-products-carousel-card .iv-card-title{line-height:1.2;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;min-height:2.4em}.iv-dynamic-products-carousel-card .iv-card-controls{margin-top:auto;}.iv-dynamic-products-carousel-card:hover{box-shadow:0 4px 14px rgba(0, 0, 0, 0.15);transform:translateY(-2px)}.iv-dynamic-products-carousel-card:active{transform:translateY(0);box-shadow:0 2px 6px rgba(0, 0, 0, 0.12)}.iv-dynamic-products-carousel-card img,.iv-dynamic-products-carousel-card picture,.iv-dynamic-products-carousel-card .media{width:100%;aspect-ratio:1/1;object-fit:contain;display:flex;align-items:center;justify-content:center;margin:0 0 0.65rem}.iv-dynamic-products-carousel-nav{position:absolute;top:50%;transform:translateY(-50%);background:var(--iv-carousel-nav-bg, rgba(0, 0, 0, 0.55));color:#fff;border:none;width:2.75rem;height:2.75rem;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;backdrop-filter:blur(6px);box-shadow:0 4px 12px rgba(0, 0, 0, 0.25);transition:background 0.2s ease, transform 0.2s ease;outline:none;z-index:10}.iv-dynamic-products-carousel-nav:focus-visible{outline:2px solid #fff;outline-offset:3px}.iv-dynamic-products-carousel-nav:hover:not(:disabled){background:var(--iv-carousel-nav-bg-hover, rgba(0, 0, 0, 0.75));transform:translateY(-50%) scale(1.05);box-shadow:0 6px 18px rgba(0, 0, 0, 0.35)}.iv-dynamic-products-carousel-nav:disabled{opacity:0.4;cursor:default}.iv-dynamic-products-carousel-nav-prev{left:0.25rem}.iv-dynamic-products-carousel-nav-next{right:0.25rem}.iv-dynamic-products-carousel-status{margin-top:0.75rem;font-size:0.875rem;text-align:center;color:var(--iv-carousel-status-color, #555)}.iv-dynamic-products-carousel-viewport::-webkit-scrollbar{display:none}.iv-dynamic-products-carousel-viewport{-ms-overflow-style:none;scrollbar-width:none}";const c="iv-dynamic-products-carousel";const d=class{constructor(e){t(this,e)}type="CREATED_AT";limit=24;reversed=false;componenttitle;titletag="h2";collectionhandle="all";requestedfields;calltoaction=false;buttontext;addtocarttext;emptystring="No products found";cachettl;stale=true;excluse;products=[];errorMsg;staleData=false;page=0;itemsPerPage=6;errors=e({component:"iv-dynamic-products-carousel"});handlePropChange(){this.loadProducts(true)}async componentWillLoad(){await this.loadProducts(false)}buildParams(){return{handle:this.collectionhandle,sort:this.type,fields:this.requestedfields,limit:36,currency:i.currencyCode,reversed:this.reversed}}ensureProductTypeField(t){if(!t)return"productType";const e=t.split(",").map((t=>t.trim()));if(!e.includes("productType"))e.push("productType");return e.join(",")}filterAndSliceProducts(t){if(!this.excluse)return t.slice(0,this.limit);if(!this.requestedfields||!this.requestedfields.includes("productType")){this.requestedfields=this.ensureProductTypeField(this.requestedfields)}const e=t.filter((t=>t.productType!==this.excluse));return e.slice(0,this.limit)}async loadProducts(t){const e=this.buildParams();const s=this.cachettl||1e3*60*5;i.loading=!t;try{const t=await r.getOrSetData(e,(async()=>{const t=await a(36,this.collectionhandle,this.type,this.requestedfields,this.reversed);return t}),{ttl:s,staleWhileRevalidate:this.stale,transform:t=>t});const i=r.getData(e);this.staleData=i.isExpired&&i.isStale;this.products=Array.isArray(t)?this.filterAndSliceProducts(t):[];this.page=0}catch(t){this.errorMsg="Failed to load products";this.errors.handle({error:t,scope:"loadProducts",userMessage:"Unable to load products right now.",devMessage:"fetchProducts failed in iv-dynamic-products",severity:"error"})}finally{i.loading=false}}pagedProducts(){const t=[];for(let e=0;e<this.products.length;e+=this.itemsPerPage){t.push(this.products.slice(e,e+this.itemsPerPage))}return t}next=()=>{const t=this.pagedProducts().length;if(this.page<t-1)this.page++};prev=()=>{if(this.page>0)this.page--};render(){const t=this.titletag;return s("div",{key:"f9c5d95902865ca95a6094f0075269f2c8540698",class:c,"data-stale":this.staleData?"true":"false"},this.componenttitle&&s(t,{key:"718efc1f0e555ccbc6352dae5a78381b13b64cdf",class:`${c}-title`},this.componenttitle),i.loading?s("iv-spinner",null):this.errorMsg?s("div",{class:`${c}-error`},this.errorMsg):this.products.length===0?s("div",{class:`${c}-empty`},this.emptystring):s("div",{class:`${c}-carousel`,"aria-roledescription":"carousel"},s("button",{class:`${c}-nav ${c}-nav-prev`,onClick:this.prev,disabled:this.page===0,"aria-label":"Previous",type:"button"},"‹"),s("div",{class:`${c}-viewport`},s("div",{class:`${c}-track`,style:{transform:`translateX(-${this.page*100}%)`}},this.pagedProducts().map(((t,e)=>s("div",{class:`${c}-slide`,role:"group","aria-label":`Slide ${e+1} of ${this.pagedProducts().length}`},t.map((t=>s("iv-card",{cardtype:"products",calltoaction:this.calltoaction,buttontext:this.buttontext,addtocarttext:this.addtocarttext,data:t,classmodifier:`${c}-card`})))))))),s("button",{class:`${c}-nav ${c}-nav-next`,onClick:this.next,disabled:this.page===this.pagedProducts().length-1,"aria-label":"Next",type:"button"},"›"),s("div",{class:`${c}-status`,"aria-live":"polite"},this.pagedProducts().length>1?`Slide ${this.page+1} of ${this.pagedProducts().length}`:""),this.staleData&&s("div",{class:`${c}-stale-indicator`,"aria-live":"polite"},"Refreshing…")))}static get watchers(){return{type:["handlePropChange"],limit:["handlePropChange"],collectionhandle:["handlePropChange"],requestedfields:["handlePropChange"]}}};d.style=o;export{d as iv_dynamic_products_carousel};
2
- //# sourceMappingURL=p-145798b2.entry.js.map
1
+ import{r as t,j as e,a as i,h as s}from"./p-Cb3Nnjkn.js";import{f as a}from"./p-DujflZ2b.js";import{p as r}from"./p-C9YXddZh.js";const o=":host{display:block}.iv-dynamic-products-carousel{position:relative}.iv-dynamic-products-carousel-carousel{position:relative}.iv-dynamic-products-carousel-viewport{overflow:hidden;width:100%}.iv-dynamic-products-carousel-track{display:flex;width:100%;transition:transform 0.55s cubic-bezier(0.4, 0.7, 0.2, 1);will-change:transform}.iv-dynamic-products-carousel-slide{flex:0 0 100%;box-sizing:border-box;padding:0.25rem 0.5rem;display:grid;grid-template-columns:repeat(6, minmax(0, 1fr));gap:1rem;align-items:stretch;grid-auto-rows:1fr}@media (max-width: 1200px){.iv-dynamic-products-carousel-slide{grid-template-columns:repeat(4, minmax(0, 1fr))}}@media (max-width: 900px){.iv-dynamic-products-carousel-slide{grid-template-columns:repeat(3, minmax(0, 1fr))}}@media (max-width: 640px){.iv-dynamic-products-carousel-slide{grid-template-columns:repeat(2, minmax(0, 1fr));gap:0.75rem}}.iv-dynamic-products-carousel-card{height:100%;display:flex;flex-direction:column;background:#fff;padding:0.75rem 0.75rem 0.9rem;box-shadow:0 2px 6px rgba(0, 0, 0, 0.08);transition:box-shadow 0.2s ease, transform 0.2s ease}.iv-dynamic-products-carousel-card .iv-card-title{line-height:1.2;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;min-height:2.4em}.iv-dynamic-products-carousel-card .iv-card-controls{margin-top:auto;}.iv-dynamic-products-carousel-card:hover{box-shadow:0 4px 14px rgba(0, 0, 0, 0.15);transform:translateY(-2px)}.iv-dynamic-products-carousel-card:active{transform:translateY(0);box-shadow:0 2px 6px rgba(0, 0, 0, 0.12)}.iv-dynamic-products-carousel-card img,.iv-dynamic-products-carousel-card picture,.iv-dynamic-products-carousel-card .media{width:100%;aspect-ratio:1/1;object-fit:contain;display:flex;align-items:center;justify-content:center;margin:0 0 0.65rem}.iv-dynamic-products-carousel-nav{position:absolute;top:50%;transform:translateY(-50%);background:var(--iv-carousel-nav-bg, rgba(0, 0, 0, 0.55));color:#fff;border:none;width:2.75rem;height:2.75rem;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;backdrop-filter:blur(6px);box-shadow:0 4px 12px rgba(0, 0, 0, 0.25);transition:background 0.2s ease, transform 0.2s ease;outline:none;z-index:10}.iv-dynamic-products-carousel-nav:focus-visible{outline:2px solid #fff;outline-offset:3px}.iv-dynamic-products-carousel-nav:hover:not(:disabled){background:var(--iv-carousel-nav-bg-hover, rgba(0, 0, 0, 0.75));transform:translateY(-50%) scale(1.05);box-shadow:0 6px 18px rgba(0, 0, 0, 0.35)}.iv-dynamic-products-carousel-nav:disabled{opacity:0.4;cursor:default}.iv-dynamic-products-carousel-nav-prev{left:0.25rem}.iv-dynamic-products-carousel-nav-next{right:0.25rem}.iv-dynamic-products-carousel-status{margin-top:0.75rem;font-size:0.875rem;text-align:center;color:var(--iv-carousel-status-color, #555)}.iv-dynamic-products-carousel-viewport::-webkit-scrollbar{display:none}.iv-dynamic-products-carousel-viewport{-ms-overflow-style:none;scrollbar-width:none}";const c="iv-dynamic-products-carousel";const d=class{constructor(e){t(this,e)}type="CREATED_AT";limit=24;reversed=false;componenttitle;titletag="h2";collectionhandle="all";requestedfields;calltoaction=false;buttontext;addtocarttext;emptystring="No products found";cachettl;stale=true;excluse;products=[];errorMsg;staleData=false;page=0;itemsPerPage=6;errors=e({component:"iv-dynamic-products-carousel"});handlePropChange(){this.loadProducts(true)}async componentWillLoad(){await this.loadProducts(false)}buildParams(){return{handle:this.collectionhandle,sort:this.type,fields:this.requestedfields,limit:36,currency:i.currencyCode,reversed:this.reversed}}ensureProductTypeField(t){if(!t)return"productType";const e=t.split(",").map((t=>t.trim()));if(!e.includes("productType"))e.push("productType");return e.join(",")}filterAndSliceProducts(t){if(!this.excluse)return t.slice(0,this.limit);if(!this.requestedfields||!this.requestedfields.includes("productType")){this.requestedfields=this.ensureProductTypeField(this.requestedfields)}const e=t.filter((t=>t.productType!==this.excluse));return e.slice(0,this.limit)}async loadProducts(t){const e=this.buildParams();const s=this.cachettl||1e3*60*5;i.loading=!t;try{const t=await r.getOrSetData(e,(async()=>{const t=await a(36,this.collectionhandle,this.type,this.requestedfields,this.reversed);return t}),{ttl:s,staleWhileRevalidate:this.stale,transform:t=>t});const i=r.getData(e);this.staleData=i.isExpired&&i.isStale;this.products=Array.isArray(t)?this.filterAndSliceProducts(t):[];this.page=0}catch(t){this.errorMsg="Failed to load products";this.errors.handle({error:t,scope:"loadProducts",userMessage:"Unable to load products right now.",devMessage:"fetchProducts failed in iv-dynamic-products",severity:"error"})}finally{i.loading=false}}pagedProducts(){const t=[];for(let e=0;e<this.products.length;e+=this.itemsPerPage){t.push(this.products.slice(e,e+this.itemsPerPage))}return t}next=()=>{const t=this.pagedProducts().length;if(this.page<t-1)this.page++};prev=()=>{if(this.page>0)this.page--};render(){const t=this.titletag;return s("div",{key:"f9c5d95902865ca95a6094f0075269f2c8540698",class:c,"data-stale":this.staleData?"true":"false"},this.componenttitle&&s(t,{key:"718efc1f0e555ccbc6352dae5a78381b13b64cdf",class:`${c}-title`},this.componenttitle),i.loading?s("iv-spinner",null):this.errorMsg?s("div",{class:`${c}-error`},this.errorMsg):this.products.length===0?s("div",{class:`${c}-empty`},this.emptystring):s("div",{class:`${c}-carousel`,"aria-roledescription":"carousel"},s("button",{class:`${c}-nav ${c}-nav-prev`,onClick:this.prev,disabled:this.page===0,"aria-label":"Previous",type:"button"},"‹"),s("div",{class:`${c}-viewport`},s("div",{class:`${c}-track`,style:{transform:`translateX(-${this.page*100}%)`}},this.pagedProducts().map(((t,e)=>s("div",{class:`${c}-slide`,role:"group","aria-label":`Slide ${e+1} of ${this.pagedProducts().length}`},t.map((t=>s("iv-card",{cardtype:"products",calltoaction:this.calltoaction,buttontext:this.buttontext,addtocarttext:this.addtocarttext,data:t,classmodifier:`${c}-card`})))))))),s("button",{class:`${c}-nav ${c}-nav-next`,onClick:this.next,disabled:this.page===this.pagedProducts().length-1,"aria-label":"Next",type:"button"},"›"),s("div",{class:`${c}-status`,"aria-live":"polite"},this.pagedProducts().length>1?`Slide ${this.page+1} of ${this.pagedProducts().length}`:""),this.staleData&&s("div",{class:`${c}-stale-indicator`,"aria-live":"polite"},"Refreshing…")))}static get watchers(){return{type:["handlePropChange"],limit:["handlePropChange"],collectionhandle:["handlePropChange"],requestedfields:["handlePropChange"]}}};d.style=o;export{d as iv_dynamic_products_carousel};
2
+ //# sourceMappingURL=p-a28bd4eb.entry.js.map
@@ -1,2 +1,2 @@
1
- import{r as e,h as s,H as r}from"./p-BW0IzFf8.js";const f="";const o=class{constructor(s){e(this,s)}render(){return s(r,{key:"86211800f9f1820858a0e214d3703355510999ce"},s("slot",{key:"518e199b47310ffe696cdd5bf2afe48ff726b1a5"}))}};o.style=f;export{o as iv_carousel};
2
- //# sourceMappingURL=p-256a765e.entry.js.map
1
+ import{r as e,h as s,H as r}from"./p-Cb3Nnjkn.js";const f="";const o=class{constructor(s){e(this,s)}render(){return s(r,{key:"86211800f9f1820858a0e214d3703355510999ce"},s("slot",{key:"518e199b47310ffe696cdd5bf2afe48ff726b1a5"}))}};o.style=f;export{o as iv_carousel};
2
+ //# sourceMappingURL=p-a66c7492.entry.js.map
@@ -1,2 +1,2 @@
1
- import{r as t,a as s,k as i,h as e,t as a,l as d,e as l}from"./p-BW0IzFf8.js";const o=":host{display:block}";const r="iv-wishlist";const c=class{constructor(s){t(this,s)}buttonaddvalue="Add to wishlist";buttonremovevalue="Remove from wishlist";wishlistempty="Your wishlist is empty";buttonaddtocartvalue="Add to cart";viewwishlistvalue="View wishlist";productdata={};usefields="id,title,price,image,url";previewtype="modal";componentWillLoad(){const t=localStorage.getItem("wishlist");if(t)s.wishlist=JSON.parse(t);s.wishlistLabels={removeLabel:this.buttonremovevalue,addToCartLabel:this.buttonaddtocartvalue,emptyMessage:this.wishlistempty}}get itemFromWishlist(){return s.wishlist.some((t=>t.id===this.productdata["id"]))||s.wishlist.length>0}get buttonLabel(){if(this.itemFromWishlist)return this.buttonremovevalue||this.buttonaddvalue;return this.buttonaddvalue}get requestedFields(){let t=this.usefields.split(",").map((t=>t.trim()));if(!t.includes("id"))t.push("id");if(!t.includes("title"))t.push("title");return t}addToWishlist(){s.loading=true;const t={};this.requestedFields.forEach((s=>{if(this.productdata.hasOwnProperty(s))t[s]=this.productdata[s]}));s.wishlist=[...s.wishlist,t];localStorage.setItem("wishlist",JSON.stringify(s.wishlist));s.loading=false;i(`${t["title"]} added to wishlist`,"success",5e3)}render(){return e("div",{key:"7de2957dbc0de550306a84ec9ffc1094dad6aa58",class:`${r}`},e("iv-button",{key:"634d342ef3ab75d8cfc21975d41b56cdd3edd577",classmodifier:`${r}-add ${this.itemFromWishlist?"remove":"add"}`,onClick:()=>this.itemFromWishlist?l(this.productdata["id"]):this.addToWishlist()},e("span",{key:"559210e76a9ca2e04ae79ab9650bf36fdfb8d01f",class:"inner-button",innerHTML:this.buttonLabel})),s.wishlist.length>0&&e("iv-button",{key:"0077fb40a119880871437f6d31410431a7bcd2d2",classmodifier:`${r}-view`,onClick:()=>this.previewtype==="modal"?a("wishlist"):d("wishlist")},e("span",{key:"80c36c456710bc51df1909172cd0e3cbf9580cbc",class:"inner-button",innerHTML:this.viewwishlistvalue})))}};c.style=o;export{c as iv_wishlist};
2
- //# sourceMappingURL=p-a7b3baf0.entry.js.map
1
+ import{r as t,a as s,k as i,h as e,t as a,l as d,e as l}from"./p-Cb3Nnjkn.js";const o=":host{display:block}";const r="iv-wishlist";const c=class{constructor(s){t(this,s)}buttonaddvalue="Add to wishlist";buttonremovevalue="Remove from wishlist";wishlistempty="Your wishlist is empty";buttonaddtocartvalue="Add to cart";viewwishlistvalue="View wishlist";productdata={};usefields="id,title,price,image,url";previewtype="modal";componentWillLoad(){const t=localStorage.getItem("wishlist");if(t)s.wishlist=JSON.parse(t);s.wishlistLabels={removeLabel:this.buttonremovevalue,addToCartLabel:this.buttonaddtocartvalue,emptyMessage:this.wishlistempty}}get itemFromWishlist(){return s.wishlist.some((t=>t.id===this.productdata["id"]))||s.wishlist.length>0}get buttonLabel(){if(this.itemFromWishlist)return this.buttonremovevalue||this.buttonaddvalue;return this.buttonaddvalue}get requestedFields(){let t=this.usefields.split(",").map((t=>t.trim()));if(!t.includes("id"))t.push("id");if(!t.includes("title"))t.push("title");return t}addToWishlist(){s.loading=true;const t={};this.requestedFields.forEach((s=>{if(this.productdata.hasOwnProperty(s))t[s]=this.productdata[s]}));s.wishlist=[...s.wishlist,t];localStorage.setItem("wishlist",JSON.stringify(s.wishlist));s.loading=false;i(`${t["title"]} added to wishlist`,"success",5e3)}render(){return e("div",{key:"7de2957dbc0de550306a84ec9ffc1094dad6aa58",class:`${r}`},e("iv-button",{key:"634d342ef3ab75d8cfc21975d41b56cdd3edd577",classmodifier:`${r}-add ${this.itemFromWishlist?"remove":"add"}`,onClick:()=>this.itemFromWishlist?l(this.productdata["id"]):this.addToWishlist()},e("span",{key:"559210e76a9ca2e04ae79ab9650bf36fdfb8d01f",class:"inner-button",innerHTML:this.buttonLabel})),s.wishlist.length>0&&e("iv-button",{key:"0077fb40a119880871437f6d31410431a7bcd2d2",classmodifier:`${r}-view`,onClick:()=>this.previewtype==="modal"?a("wishlist"):d("wishlist")},e("span",{key:"80c36c456710bc51df1909172cd0e3cbf9580cbc",class:"inner-button",innerHTML:this.viewwishlistvalue})))}};c.style=o;export{c as iv_wishlist};
2
+ //# sourceMappingURL=p-a7d8309c.entry.js.map
@@ -1,2 +1,2 @@
1
- import{r as t,h as a}from"./p-BW0IzFf8.js";const s=":host{display:block}";const e=class{constructor(a){t(this,a)}labels=[];classModifier;tabLayout="horizontal";activeTab=0;render(){return a("div",{key:"7ba263cb01e67081c17217462da7400acacf40fe",class:`iv-tabs iv-tabs--${this.classModifier} iv-tabs--${this.tabLayout}`},a("div",{key:"885c5a17a0d955be8b81690bd6e0636f1565ed13",class:"iv-tabs__header",role:"tablist"},this.labels.map(((t,s)=>a("button",{id:`tab-button-${s}`,class:`iv-tab ${this.activeTab===s?"active":""}`,onClick:()=>this.activeTab=s,"aria-selected":this.activeTab===s?"true":"false","aria-controls":`tab-panel-${s}`,role:"tab",type:"button",tabindex:this.activeTab===s?"0":"-1"},t)))),a("div",{key:"d8431e4c831f2c52930be9997a4bef803513ff01",class:"iv-tabs__content"},this.labels.map(((t,s)=>a("div",{id:`tab-panel-${s}`,role:"tabpanel","aria-labelledby":`tab-button-${s}`,hidden:this.activeTab!==s},a("slot",{name:`tab-content-${s}`}))))))}};e.style=s;export{e as iv_tabs};
2
- //# sourceMappingURL=p-aebd8d4b.entry.js.map
1
+ import{r as t,h as a}from"./p-Cb3Nnjkn.js";const s=":host{display:block}";const e=class{constructor(a){t(this,a)}labels=[];classModifier;tabLayout="horizontal";activeTab=0;render(){return a("div",{key:"7ba263cb01e67081c17217462da7400acacf40fe",class:`iv-tabs iv-tabs--${this.classModifier} iv-tabs--${this.tabLayout}`},a("div",{key:"885c5a17a0d955be8b81690bd6e0636f1565ed13",class:"iv-tabs__header",role:"tablist"},this.labels.map(((t,s)=>a("button",{id:`tab-button-${s}`,class:`iv-tab ${this.activeTab===s?"active":""}`,onClick:()=>this.activeTab=s,"aria-selected":this.activeTab===s?"true":"false","aria-controls":`tab-panel-${s}`,role:"tab",type:"button",tabindex:this.activeTab===s?"0":"-1"},t)))),a("div",{key:"d8431e4c831f2c52930be9997a4bef803513ff01",class:"iv-tabs__content"},this.labels.map(((t,s)=>a("div",{id:`tab-panel-${s}`,role:"tabpanel","aria-labelledby":`tab-button-${s}`,hidden:this.activeTab!==s},a("slot",{name:`tab-content-${s}`}))))))}};e.style=s;export{e as iv_tabs};
2
+ //# sourceMappingURL=p-affde66d.entry.js.map
@@ -1,2 +1,2 @@
1
- import{r as c,h as e}from"./p-BW0IzFf8.js";const o=":host{display:block}";const r="iv-compare-product";const s=class{constructor(e){c(this,e)}render(){return e("div",{key:"5ce9309dece130e79e77ee4552214d35857e8c9a",class:r})}};s.style=o;export{s as iv_compare_product};
2
- //# sourceMappingURL=p-19cf30b1.entry.js.map
1
+ import{r as c,h as e}from"./p-Cb3Nnjkn.js";const o=":host{display:block}";const r="iv-compare-product";const s=class{constructor(e){c(this,e)}render(){return e("div",{key:"5ce9309dece130e79e77ee4552214d35857e8c9a",class:r})}};s.style=o;export{s as iv_compare_product};
2
+ //# sourceMappingURL=p-b2e8bb5f.entry.js.map
@@ -1,2 +1,2 @@
1
- import{r as t,h as o}from"./p-BW0IzFf8.js";const r=".iv-product-pin{position:absolute;width:32px;height:32px;background:#e74c3c;border-radius:50%;border:2px solid #fff;box-shadow:0 2px 8px rgba(0, 0, 0, 0.1);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:bold;cursor:pointer;transition:transform 0.1s}.iv-product-pin:hover{transform:scale(1.1)}";const i="iv-product-pin";const s=class{constructor(o){t(this,o)}pinProduct;pinKey;pinCords;pinBehaviour;render(){return o("div",{key:"986c3cf113579be209b30645d296bab6292eccf8",id:`product-pin-${this.pinKey}`,class:i,style:{left:`${this.pinCords.x}%`,top:`${this.pinCords.y}%`}},this.pinProduct)}};s.style=r;export{s as iv_product_pin};
2
- //# sourceMappingURL=p-331983d1.entry.js.map
1
+ import{r as t,h as o}from"./p-Cb3Nnjkn.js";const r=".iv-product-pin{position:absolute;width:32px;height:32px;background:#e74c3c;border-radius:50%;border:2px solid #fff;box-shadow:0 2px 8px rgba(0, 0, 0, 0.1);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:bold;cursor:pointer;transition:transform 0.1s}.iv-product-pin:hover{transform:scale(1.1)}";const i="iv-product-pin";const s=class{constructor(o){t(this,o)}pinProduct;pinKey;pinCords;pinBehaviour;render(){return o("div",{key:"986c3cf113579be209b30645d296bab6292eccf8",id:`product-pin-${this.pinKey}`,class:i,style:{left:`${this.pinCords.x}%`,top:`${this.pinCords.y}%`}},this.pinProduct)}};s.style=r;export{s as iv_product_pin};
2
+ //# sourceMappingURL=p-bfe01a14.entry.js.map
@@ -1,2 +1,2 @@
1
- import{r as t,h as o,H as i}from"./p-BW0IzFf8.js";const r='sw-in-grid-content{grid-column:span 2;grid-row:span 2}@media (max-width: 1024px){sw-in-grid-content{grid-row:span unset;aspect-ratio:4/5}}sw-in-grid-content .promo-card{position:relative;width:100%;height:100%;min-height:250px;padding:var(--promo-tile-padding) !important}@media (max-width: 1024px){sw-in-grid-content .promo-card{padding:calc(var(--promo-tile-padding) * var(--promo-tile-responsive-modifier))}}sw-in-grid-content .promo-card [slot=media]>img,sw-in-grid-content .promo-card [slot=media]>video{object-fit:cover;width:100%;height:100%;position:absolute;top:0;left:0;z-index:1}sw-in-grid-content .promo-card [slot=text]{position:absolute;bottom:var(--promo-tile-padding);left:var(--promo-tile-padding);z-index:2;display:flex;flex-direction:column;justify-content:flex-end;align-items:flex-start;height:100%;width:100%}@media (max-width: 1024px){sw-in-grid-content .promo-card [slot=text]{bottom:calc(var(--promo-tile-padding) * var(--promo-tile-responsive-modifier));left:calc(var(--promo-tile-padding) * var(--promo-tile-responsive-modifier));width:unset}}sw-in-grid-content .promo-card [slot=text].light-infill a,sw-in-grid-content .promo-card [slot=text].light-infill h3,sw-in-grid-content .promo-card [slot=text].light-infill h5,sw-in-grid-content .promo-card [slot=text].light-infill p{color:white}sw-in-grid-content .promo-card [slot=text].light-infill a::before{background:white}sw-in-grid-content .promo-card [slot=text].dark-infill a,sw-in-grid-content .promo-card [slot=text].dark-infill h3,sw-in-grid-content .promo-card [slot=text].dark-infill h5,sw-in-grid-content .promo-card [slot=text].dark-infill p{color:black}sw-in-grid-content .promo-card [slot=text].dark-infill a::before{background:black}sw-in-grid-content .promo-card [slot=text] a{position:relative;transition:all 0.5s}sw-in-grid-content .promo-card [slot=text] a::before{content:"";position:absolute;height:2px;width:0;bottom:-4px;left:0;transition:all 0.5s}sw-in-grid-content .promo-card [slot=text] a:hover{transition:all 0.5s}sw-in-grid-content .promo-card [slot=text] a:hover::before{transition:all 0.5s;width:100%}sw-in-grid-content .promo-card [slot=text] h3,sw-in-grid-content .promo-card [slot=text] h5,sw-in-grid-content .promo-card [slot=text] a,sw-in-grid-content .promo-card [slot=text] p{padding:0;margin:0 0 var(--promo-tile-item-spacing) 0;font-family:var(--font-base)}@media (max-width: 1024px){sw-in-grid-content .promo-card [slot=text] h3,sw-in-grid-content .promo-card [slot=text] h5,sw-in-grid-content .promo-card [slot=text] a,sw-in-grid-content .promo-card [slot=text] p{margin:0 0 calc(var(--promo-tile-item-spacing) * var(--promo-tile-responsive-modifier)) 0}}sw-in-grid-content .promo-card [slot=text] h5{font-size:var(--promo-tile-secondary-title-size)}@media (max-width: 1024px){sw-in-grid-content .promo-card [slot=text] h5{font-size:calc(var(--promo-tile-secondary-title-size) * var(--promo-tile-responsive-modifier))}}sw-in-grid-content .promo-card [slot=text] h3{font-size:var(--promo-tile-primary-title-size)}@media (max-width: 1024px){sw-in-grid-content .promo-card [slot=text] h3{font-size:calc(var(--promo-tile-primary-title-size) * var(--promo-tile-responsive-modifier))}}sw-in-grid-content .promo-card [slot=text] p,sw-in-grid-content .promo-card [slot=text] a{font-size:var(--promo-tile-text-size)}@media (max-width: 1024px){sw-in-grid-content .promo-card [slot=text] p,sw-in-grid-content .promo-card [slot=text] a{font-size:calc(var(--promo-tile-text-size) * var(--promo-tile-responsive-modifier))}}';const e=class{constructor(o){t(this,o)}render(){return o(i,{key:"137bf9a3764ff6fbefa71359c53e46388b46a7e1"},o("div",{key:"af72c50c79747e465ed8a0ffbd03a152fb4ec476",class:"promo-card dark-infill"},o("slot",{key:"042f54522835ae46584190d073669104d7477621",name:"media"}),o("slot",{key:"28ebaf42dfeb569afb1f7cdedb753df5e88f9d83",name:"text"})))}};e.style=r;export{e as sw_in_grid_content};
2
- //# sourceMappingURL=p-13ce40ae.entry.js.map
1
+ import{r as t,h as o,H as i}from"./p-Cb3Nnjkn.js";const r='sw-in-grid-content{grid-column:span 2;grid-row:span 2}@media (max-width: 1024px){sw-in-grid-content{grid-row:span unset;aspect-ratio:4/5}}sw-in-grid-content .promo-card{position:relative;width:100%;height:100%;min-height:250px;padding:var(--promo-tile-padding) !important}@media (max-width: 1024px){sw-in-grid-content .promo-card{padding:calc(var(--promo-tile-padding) * var(--promo-tile-responsive-modifier))}}sw-in-grid-content .promo-card [slot=media]>img,sw-in-grid-content .promo-card [slot=media]>video{object-fit:cover;width:100%;height:100%;position:absolute;top:0;left:0;z-index:1}sw-in-grid-content .promo-card [slot=text]{position:absolute;bottom:var(--promo-tile-padding);left:var(--promo-tile-padding);z-index:2;display:flex;flex-direction:column;justify-content:flex-end;align-items:flex-start;height:100%;width:100%}@media (max-width: 1024px){sw-in-grid-content .promo-card [slot=text]{bottom:calc(var(--promo-tile-padding) * var(--promo-tile-responsive-modifier));left:calc(var(--promo-tile-padding) * var(--promo-tile-responsive-modifier));width:unset}}sw-in-grid-content .promo-card [slot=text].light-infill a,sw-in-grid-content .promo-card [slot=text].light-infill h3,sw-in-grid-content .promo-card [slot=text].light-infill h5,sw-in-grid-content .promo-card [slot=text].light-infill p{color:white}sw-in-grid-content .promo-card [slot=text].light-infill a::before{background:white}sw-in-grid-content .promo-card [slot=text].dark-infill a,sw-in-grid-content .promo-card [slot=text].dark-infill h3,sw-in-grid-content .promo-card [slot=text].dark-infill h5,sw-in-grid-content .promo-card [slot=text].dark-infill p{color:black}sw-in-grid-content .promo-card [slot=text].dark-infill a::before{background:black}sw-in-grid-content .promo-card [slot=text] a{position:relative;transition:all 0.5s}sw-in-grid-content .promo-card [slot=text] a::before{content:"";position:absolute;height:2px;width:0;bottom:-4px;left:0;transition:all 0.5s}sw-in-grid-content .promo-card [slot=text] a:hover{transition:all 0.5s}sw-in-grid-content .promo-card [slot=text] a:hover::before{transition:all 0.5s;width:100%}sw-in-grid-content .promo-card [slot=text] h3,sw-in-grid-content .promo-card [slot=text] h5,sw-in-grid-content .promo-card [slot=text] a,sw-in-grid-content .promo-card [slot=text] p{padding:0;margin:0 0 var(--promo-tile-item-spacing) 0;font-family:var(--font-base)}@media (max-width: 1024px){sw-in-grid-content .promo-card [slot=text] h3,sw-in-grid-content .promo-card [slot=text] h5,sw-in-grid-content .promo-card [slot=text] a,sw-in-grid-content .promo-card [slot=text] p{margin:0 0 calc(var(--promo-tile-item-spacing) * var(--promo-tile-responsive-modifier)) 0}}sw-in-grid-content .promo-card [slot=text] h5{font-size:var(--promo-tile-secondary-title-size)}@media (max-width: 1024px){sw-in-grid-content .promo-card [slot=text] h5{font-size:calc(var(--promo-tile-secondary-title-size) * var(--promo-tile-responsive-modifier))}}sw-in-grid-content .promo-card [slot=text] h3{font-size:var(--promo-tile-primary-title-size)}@media (max-width: 1024px){sw-in-grid-content .promo-card [slot=text] h3{font-size:calc(var(--promo-tile-primary-title-size) * var(--promo-tile-responsive-modifier))}}sw-in-grid-content .promo-card [slot=text] p,sw-in-grid-content .promo-card [slot=text] a{font-size:var(--promo-tile-text-size)}@media (max-width: 1024px){sw-in-grid-content .promo-card [slot=text] p,sw-in-grid-content .promo-card [slot=text] a{font-size:calc(var(--promo-tile-text-size) * var(--promo-tile-responsive-modifier))}}';const e=class{constructor(o){t(this,o)}render(){return o(i,{key:"137bf9a3764ff6fbefa71359c53e46388b46a7e1"},o("div",{key:"af72c50c79747e465ed8a0ffbd03a152fb4ec476",class:"promo-card dark-infill"},o("slot",{key:"042f54522835ae46584190d073669104d7477621",name:"media"}),o("slot",{key:"28ebaf42dfeb569afb1f7cdedb753df5e88f9d83",name:"text"})))}};e.style=r;export{e as sw_in_grid_content};
2
+ //# sourceMappingURL=p-ca10d662.entry.js.map
@@ -1,2 +1,2 @@
1
- import{r as i,h as r,a}from"./p-BW0IzFf8.js";import{r as t,g as e,f as o}from"./p-CL9gCgzW.js";import{a as n}from"./p-DHfJNZjh.js";const d=".iv-card{display:var(--iv-card-display, block);box-sizing:border-box;padding:var(--iv-card-padding, 0);margin:var(--iv-card-margin, 0);background:var(--iv-card-bg, transparent);color:var(--iv-card-color, inherit);border:var(--iv-card-border, none);border-radius:var(--iv-card-border-radius, 0);box-shadow:var(--iv-card-shadow, none);font-size:var(--iv-card-font-size, inherit);line-height:var(--iv-card-line-height, 1.4);position:relative;text-decoration:none;transition:var(--iv-card-transition, background-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease);gap:var(--iv-card-gap, 0.75rem);display:var(--iv-card-layout, flex);flex-direction:var(--iv-card-flex-direction, column)}.iv-card a,.iv-card a:visited,.iv-card a:hover,.iv-card a:focus{text-decoration:var(--iv-card-link-text-decoration, none);color:var(--iv-card-link-color, inherit)}.iv-card[href],.iv-card.is-interactive{cursor:pointer}.iv-card[href]:hover,.iv-card[href]:focus-visible,.iv-card.is-interactive:hover,.iv-card.is-interactive:focus-visible{background:var(--iv-card-hover-bg, var(--iv-card-bg, transparent));border:var(--iv-card-hover-border, var(--iv-card-border, none));box-shadow:var(--iv-card-hover-shadow, var(--iv-card-shadow, none));outline:var(--iv-card-focus-outline, none);box-shadow:var(--iv-card-focus-ring, var(--iv-card-hover-shadow, var(--iv-card-shadow, none)))}.iv-card-link-wrapper{display:var(--iv-card-link-wrapper-display, contents);text-decoration:none;color:inherit;cursor:pointer}.iv-card-field{display:block;margin:0;padding:0;font-weight:var(--iv-card-field-font-weight, inherit);color:var(--iv-card-field-color, inherit);word-break:break-word;text-decoration:none}.iv-card .iv-card-add-to-cart-btn{position:relative;z-index:2}.iv-card-link-wrapper:hover .iv-card-field,.iv-card-link-wrapper:focus-visible .iv-card-field{text-decoration:none}.iv-card-link-wrapper:hover,.iv-card-link-wrapper:focus-visible{background:var(--iv-card-link-hover-bg, var(--iv-card-hover-bg, transparent))}.iv-card-image{display:block;width:100%;height:auto;aspect-ratio:var(--iv-card-image-aspect-ratio, auto);object-fit:var(--iv-card-image-object-fit, cover);border-radius:var(--iv-card-image-border-radius, var(--iv-card-border-radius, 0));background:var(--iv-card-image-bg, transparent)}.iv-card-title{font-weight:var(--iv-card-heading-font-weight, 600);font-size:var(--iv-card-title-font-size, 1em);line-height:var(--iv-card-title-line-height, 1.2)}.iv-card-price{color:var(--iv-card-price-color, inherit);font-weight:var(--iv-card-price-weight, 500)}.iv-card-controls{display:flex;flex-wrap:wrap;gap:var(--iv-card-control-gap, 0.5rem);align-items:center;margin-top:var(--iv-card-controls-margin-top, var(--iv-card-gap, 0.75rem))}.iv-card-add-to-cart-btn{--iv-button-variant:var(--iv-card-button-variant, primary)}.iv-card-inner{width:100%;display:contents}@media (prefers-reduced-motion: reduce){.iv-card{transition:none}}";const s="iv-card";const l=new Set(["id","handle","url","productUrl","imageUrl","imageAlt","variantId","images"]);const v=class{constructor(r){i(this,r)}data;fields;cardtype;classmodifier;buttontext;calltoaction=false;addtocarttext;allowedFields=null;componentWillLoad(){if(this.fields)this.allowedFields=t(this.fields)}generateImage(i,a){return r("img",{src:i,alt:a||"Product image",class:`${s}-image`})}appendAddToCartButton(i,a){const t=e(i);return r("iv-button",{classmodifier:`${s}-add-to-cart-btn`,onClick:i=>{i.preventDefault();i.stopPropagation();n({id:t,quantity:a})}},r("span",{class:"inner-button",innerHTML:this.addtocarttext}))}buildProductHref(){const i=this.data?.handle;if(!i)return null;const r=this.cardtype||"products";return`/${r}/${i}`.replace(/\\+/g,"/")}render(){let i=this.data?Object.entries(this.data):[];if(this.allowedFields&&this.allowedFields.length>0)i=i.filter((([i])=>this.allowedFields.includes(i)));const t=this.data?.imageUrl;const e=this.data?.imageAlt;const n=!this.allowedFields||this.allowedFields.includes("imageUrl")||this.allowedFields.includes("images");const d=n&&!!t;const v=this.buildProductHref();const c=[d?this.generateImage(t,e):null,...i.map((([i,t])=>{if(l.has(i))return null;if(t===undefined||t===null||t==="")return null;return r("span",{key:i,class:`${s}-field ${s}-${i}`},i.includes("price")?o(t,a.currencyCode):t)}))];if(this.calltoaction&&v){return r("div",{class:`${s} ${this.classmodifier||""}`.trim()},r("iv-link",{classmodifier:`${s}-link-wrapper`,linktype:"wrapper",linkhref:v},c),r("div",{class:`${s}-controls`},this.buttontext&&r("iv-link",{linktype:"button",classmodifier:`${s}-cta-btn`,linkhref:v},this.buttontext),this.addtocarttext&&this.data?.variantId&&this.appendAddToCartButton(this.data.variantId,1)))}return r("div",{class:`${s} ${this.classmodifier||""}`.trim()},c,r("div",{class:`${s}-controls`},this.buttontext&&v&&r("iv-link",{linktype:"button",classmodifier:`${s}-cta-btn`,linkhref:v},this.buttontext),this.addtocarttext&&this.data?.variantId&&this.appendAddToCartButton(this.data.variantId,1)))}};v.style=d;const c=".iv-layout{box-sizing:border-box;width:var(--iv-layout-width, 100%);max-width:var(--iv-layout-max-width, 100%);margin:var(--iv-layout-margin, 0);padding:var(--iv-layout-padding, 0);gap:var(--iv-layout-gap, 1rem);align-items:var(--iv-layout-align, stretch);justify-content:var(--iv-layout-justify, flex-start);flex-wrap:var(--iv-layout-flex-wrap, wrap);grid-auto-rows:var(--iv-layout-grid-auto-rows, auto);grid-auto-columns:var(--iv-layout-grid-auto-columns, auto);grid-auto-flow:var(--iv-layout-grid-auto-flow, row);grid-template-columns:var(--iv-layout-grid-template-columns, none);grid-template-rows:var(--iv-layout-grid-template-rows, none);background:var(--iv-layout-bg, transparent);border:var(--iv-layout-border, none);border-radius:var(--iv-layout-radius, 0);box-shadow:var(--iv-layout-shadow, none)}.iv-layout>*{flex:var(--iv-layout-flex-child, 1 1 0);min-width:var(--iv-layout-child-min-width, 0);max-width:var(--iv-layout-child-max-width, 100%);box-sizing:border-box}.iv-layout--tight{--iv-layout-gap:var(--iv-layout-tight-gap, 0.5rem)}.iv-layout--relaxed{--iv-layout-gap:var(--iv-layout-relaxed-gap, 2rem)}.iv-layout--scroll-x{display:flex !important;overflow-x:auto;scrollbar-width:var(--iv-layout-scrollbar-width, thin);-webkit-overflow-scrolling:touch}.iv-layout--scroll-x>*{flex:0 0 var(--iv-layout-scroll-item-width, 80%)}.iv-layout--debug>*{outline:1px dashed var(--iv-layout-debug-color, magenta)}@media (min-width: 40rem){.iv-layout{--iv-layout-gap:var(--iv-layout-gap-md, var(--iv-layout-gap, 1rem))}}@media (min-width: 64rem){.iv-layout{--iv-layout-gap:var(--iv-layout-gap-lg, var(--iv-layout-gap, 1rem))}}@media (prefers-reduced-motion: reduce){.iv-layout{scroll-behavior:auto}}";const h=class{constructor(r){i(this,r)}sectionId;gridTemplateAreas;gap="2rem";verticalAlign="center";horizontalAlign="center";wrapperTag="div";classModifier;handleNamedSlots(){const i=[];if(this.gridTemplateAreas){const r=this.gridTemplateAreas.replace(/"/g,"").split(/\s+/).filter(Boolean);r.forEach((r=>{if(!i.includes(r))i.push(r)}))}return i}generateGridStyes(){let i={};if(this.gridTemplateAreas){i={display:"grid",gridTemplateAreas:this.gridTemplateAreas,gap:this.gap}}else{i={display:"flex",gap:this.gap,alignItems:this.verticalAlign,justifyContent:this.horizontalAlign}}return i}render(){const i=this.wrapperTag;return r(i,{key:"96af1136543f8b5680f1687f74cd37c21acef125",id:this.sectionId?this.sectionId:undefined,class:`iv-layout${this.classModifier?` iv-layout--${this.classModifier}`:""}`,style:this.generateGridStyes()},this.gridTemplateAreas?this.handleNamedSlots().map((i=>r("div",{style:{gridArea:i}},r("slot",{name:i})))):r("slot",null))}};h.style=c;const u="";const g="iv-link";const p=class{constructor(r){i(this,r)}classmodifier;linktype="inline";linkhref;linktarget="_self";linkrel="noopener noreferrer";linkariaLabel;render(){return r("a",{key:"e2d3df743af308cc928e50ba80652258ff61974d",class:`${g} ${this.classmodifier||undefined} ${this.linktype}`,href:this.linkhref,target:this.linktarget,rel:this.linkrel,"aria-label":this.linkariaLabel},r("slot",{key:"7580e2b01cfc3d86631323882bfbbce663eba912"}))}};p.style=u;export{v as iv_card,h as iv_layout,p as iv_link};
2
- //# sourceMappingURL=p-cbf8e7b8.entry.js.map
1
+ import{r as i,h as r,a}from"./p-Cb3Nnjkn.js";import{r as t,g as e,f as o}from"./p-CL9gCgzW.js";import{a as n}from"./p-DujflZ2b.js";const d=".iv-card{display:var(--iv-card-display, block);box-sizing:border-box;padding:var(--iv-card-padding, 0);margin:var(--iv-card-margin, 0);background:var(--iv-card-bg, transparent);color:var(--iv-card-color, inherit);border:var(--iv-card-border, none);border-radius:var(--iv-card-border-radius, 0);box-shadow:var(--iv-card-shadow, none);font-size:var(--iv-card-font-size, inherit);line-height:var(--iv-card-line-height, 1.4);position:relative;text-decoration:none;transition:var(--iv-card-transition, background-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease);gap:var(--iv-card-gap, 0.75rem);display:var(--iv-card-layout, flex);flex-direction:var(--iv-card-flex-direction, column)}.iv-card a,.iv-card a:visited,.iv-card a:hover,.iv-card a:focus{text-decoration:var(--iv-card-link-text-decoration, none);color:var(--iv-card-link-color, inherit)}.iv-card[href],.iv-card.is-interactive{cursor:pointer}.iv-card[href]:hover,.iv-card[href]:focus-visible,.iv-card.is-interactive:hover,.iv-card.is-interactive:focus-visible{background:var(--iv-card-hover-bg, var(--iv-card-bg, transparent));border:var(--iv-card-hover-border, var(--iv-card-border, none));box-shadow:var(--iv-card-hover-shadow, var(--iv-card-shadow, none));outline:var(--iv-card-focus-outline, none);box-shadow:var(--iv-card-focus-ring, var(--iv-card-hover-shadow, var(--iv-card-shadow, none)))}.iv-card-link-wrapper{display:var(--iv-card-link-wrapper-display, contents);text-decoration:none;color:inherit;cursor:pointer}.iv-card-field{display:block;margin:0;padding:0;font-weight:var(--iv-card-field-font-weight, inherit);color:var(--iv-card-field-color, inherit);word-break:break-word;text-decoration:none}.iv-card .iv-card-add-to-cart-btn{position:relative;z-index:2}.iv-card-link-wrapper:hover .iv-card-field,.iv-card-link-wrapper:focus-visible .iv-card-field{text-decoration:none}.iv-card-link-wrapper:hover,.iv-card-link-wrapper:focus-visible{background:var(--iv-card-link-hover-bg, var(--iv-card-hover-bg, transparent))}.iv-card-image{display:block;width:100%;height:auto;aspect-ratio:var(--iv-card-image-aspect-ratio, auto);object-fit:var(--iv-card-image-object-fit, cover);border-radius:var(--iv-card-image-border-radius, var(--iv-card-border-radius, 0));background:var(--iv-card-image-bg, transparent)}.iv-card-title{font-weight:var(--iv-card-heading-font-weight, 600);font-size:var(--iv-card-title-font-size, 1em);line-height:var(--iv-card-title-line-height, 1.2)}.iv-card-price{color:var(--iv-card-price-color, inherit);font-weight:var(--iv-card-price-weight, 500)}.iv-card-controls{display:flex;flex-wrap:wrap;gap:var(--iv-card-control-gap, 0.5rem);align-items:center;margin-top:var(--iv-card-controls-margin-top, var(--iv-card-gap, 0.75rem))}.iv-card-add-to-cart-btn{--iv-button-variant:var(--iv-card-button-variant, primary)}.iv-card-inner{width:100%;display:contents}@media (prefers-reduced-motion: reduce){.iv-card{transition:none}}";const s="iv-card";const l=new Set(["id","handle","url","productUrl","imageUrl","imageAlt","variantId","images"]);const v=class{constructor(r){i(this,r)}data;fields;cardtype;classmodifier;buttontext;calltoaction=false;addtocarttext;allowedFields=null;componentWillLoad(){if(this.fields)this.allowedFields=t(this.fields)}generateImage(i,a){return r("img",{src:i,alt:a||"Product image",class:`${s}-image`})}appendAddToCartButton(i,a){const t=e(i);return r("iv-button",{classmodifier:`${s}-add-to-cart-btn`,onClick:i=>{i.preventDefault();i.stopPropagation();n({id:t,quantity:a})}},r("span",{class:"inner-button",innerHTML:this.addtocarttext}))}buildProductHref(){const i=this.data?.handle;if(!i)return null;const r=this.cardtype||"products";return`/${r}/${i}`.replace(/\\+/g,"/")}render(){let i=this.data?Object.entries(this.data):[];if(this.allowedFields&&this.allowedFields.length>0)i=i.filter((([i])=>this.allowedFields.includes(i)));const t=this.data?.imageUrl;const e=this.data?.imageAlt;const n=!this.allowedFields||this.allowedFields.includes("imageUrl")||this.allowedFields.includes("images");const d=n&&!!t;const v=this.buildProductHref();const c=[d?this.generateImage(t,e):null,...i.map((([i,t])=>{if(l.has(i))return null;if(t===undefined||t===null||t==="")return null;return r("span",{key:i,class:`${s}-field ${s}-${i}`},i.includes("price")?o(t,a.currencyCode):t)}))];if(this.calltoaction&&v){return r("div",{class:`${s} ${this.classmodifier||""}`.trim()},r("iv-link",{classmodifier:`${s}-link-wrapper`,linktype:"wrapper",linkhref:v},c),r("div",{class:`${s}-controls`},this.buttontext&&r("iv-link",{linktype:"button",classmodifier:`${s}-cta-btn`,linkhref:v},this.buttontext),this.addtocarttext&&this.data?.variantId&&this.appendAddToCartButton(this.data.variantId,1)))}return r("div",{class:`${s} ${this.classmodifier||""}`.trim()},c,r("div",{class:`${s}-controls`},this.buttontext&&v&&r("iv-link",{linktype:"button",classmodifier:`${s}-cta-btn`,linkhref:v},this.buttontext),this.addtocarttext&&this.data?.variantId&&this.appendAddToCartButton(this.data.variantId,1)))}};v.style=d;const c=".iv-layout{box-sizing:border-box;width:var(--iv-layout-width, 100%);max-width:var(--iv-layout-max-width, 100%);margin:var(--iv-layout-margin, 0);padding:var(--iv-layout-padding, 0);gap:var(--iv-layout-gap, 1rem);align-items:var(--iv-layout-align, stretch);justify-content:var(--iv-layout-justify, flex-start);flex-wrap:var(--iv-layout-flex-wrap, wrap);grid-auto-rows:var(--iv-layout-grid-auto-rows, auto);grid-auto-columns:var(--iv-layout-grid-auto-columns, auto);grid-auto-flow:var(--iv-layout-grid-auto-flow, row);grid-template-columns:var(--iv-layout-grid-template-columns, none);grid-template-rows:var(--iv-layout-grid-template-rows, none);background:var(--iv-layout-bg, transparent);border:var(--iv-layout-border, none);border-radius:var(--iv-layout-radius, 0);box-shadow:var(--iv-layout-shadow, none)}.iv-layout>*{flex:var(--iv-layout-flex-child, 1 1 0);min-width:var(--iv-layout-child-min-width, 0);max-width:var(--iv-layout-child-max-width, 100%);box-sizing:border-box}.iv-layout--tight{--iv-layout-gap:var(--iv-layout-tight-gap, 0.5rem)}.iv-layout--relaxed{--iv-layout-gap:var(--iv-layout-relaxed-gap, 2rem)}.iv-layout--scroll-x{display:flex !important;overflow-x:auto;scrollbar-width:var(--iv-layout-scrollbar-width, thin);-webkit-overflow-scrolling:touch}.iv-layout--scroll-x>*{flex:0 0 var(--iv-layout-scroll-item-width, 80%)}.iv-layout--debug>*{outline:1px dashed var(--iv-layout-debug-color, magenta)}@media (min-width: 40rem){.iv-layout{--iv-layout-gap:var(--iv-layout-gap-md, var(--iv-layout-gap, 1rem))}}@media (min-width: 64rem){.iv-layout{--iv-layout-gap:var(--iv-layout-gap-lg, var(--iv-layout-gap, 1rem))}}@media (prefers-reduced-motion: reduce){.iv-layout{scroll-behavior:auto}}";const u=class{constructor(r){i(this,r)}sectionId;gridTemplateAreas;gap="2rem";verticalAlign="center";horizontalAlign="center";wrapperTag="div";classModifier;handleNamedSlots(){const i=[];if(this.gridTemplateAreas){const r=this.gridTemplateAreas.replace(/"/g,"").split(/\s+/).filter(Boolean);r.forEach((r=>{if(!i.includes(r))i.push(r)}))}return i}generateGridStyes(){let i={};if(this.gridTemplateAreas){i={display:"grid",gridTemplateAreas:this.gridTemplateAreas,gap:this.gap}}else{i={display:"flex",gap:this.gap,alignItems:this.verticalAlign,justifyContent:this.horizontalAlign}}return i}render(){const i=this.wrapperTag;return r(i,{key:"96af1136543f8b5680f1687f74cd37c21acef125",id:this.sectionId?this.sectionId:undefined,class:`iv-layout${this.classModifier?` iv-layout--${this.classModifier}`:""}`,style:this.generateGridStyes()},this.gridTemplateAreas?this.handleNamedSlots().map((i=>r("div",{style:{gridArea:i}},r("slot",{name:i})))):r("slot",null))}};u.style=c;const h="";const g="iv-link";const p=class{constructor(r){i(this,r)}classmodifier;linktype="inline";linkhref;linktarget="_self";linkrel="noopener noreferrer";linkariaLabel;render(){return r("a",{key:"e2d3df743af308cc928e50ba80652258ff61974d",class:`${g} ${this.classmodifier||undefined} ${this.linktype}`,href:this.linkhref,target:this.linktarget,rel:this.linkrel,"aria-label":this.linkariaLabel},r("slot",{key:"7580e2b01cfc3d86631323882bfbbce663eba912"}))}};p.style=h;export{v as iv_card,u as iv_layout,p as iv_link};
2
+ //# sourceMappingURL=p-ff2b5ad8.entry.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "the-foxy-library",
3
- "version": "1.0.19",
3
+ "version": "1.0.21",
4
4
  "description": "A ui library designed for Shopify themes.",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.js",
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-globals-DRVRI1ik.js","sources":["src/global/app.ts","@stencil/core/internal/app-globals"],"sourcesContent":["import { ignition, fetchShopifyCurrencyCode } from '../utils/config/factory';\r\nimport { state } from '../utils/store/store';\r\n\r\n// Idempotent global init (prevents double execution if script loaded twice)\r\n// Also resolves Stencil v update expecting a default export from globalScript.\r\n// Flags kept minimal to avoid polluting window.\r\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n// @ts-ignore\r\nconst w: any = (typeof window !== 'undefined') ? window : {};\r\n\r\nexport default async function intravenousGlobalInit() {\r\n try {\r\n if(!w.__IV_API_SETUP_DONE) {\r\n await ignition();\r\n w.__IV_API_SETUP_DONE = true;\r\n }\r\n if(!w.__IV_CURRENCY_FETCH_DONE) {\r\n try {\r\n const code = await fetchShopifyCurrencyCode();\r\n if(code) state.setCurrencyCode(code);\r\n } catch (err) {\r\n console.debug('[IV] currency fetch skipped', err);\r\n }\r\n w.__IV_CURRENCY_FETCH_DONE = true;\r\n }\r\n } catch(err) {\r\n console.error('[IV] Global init failed', err);\r\n }\r\n}","import appGlobalScript from 'C:/Users/BeauBuxton/OneDrive - Herd Agency Limited/Documents/junk/The-Foxy-Library/src/global/app.ts';\nexport const globalScripts = appGlobalScript;\nexport const globalStyles = \"\";\n"],"names":["ignition","fetchShopifyCurrencyCode","state","appGlobalScript"],"mappings":";;;;AAGA;AACA;AACA;AACA;AACA;AACA,MAAM,CAAC,GAAQ,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,GAAG,EAAE;AAE7C,eAAe,qBAAqB,GAAA;AACjD,IAAA,IAAI;AACF,QAAA,IAAG,CAAC,CAAC,CAAC,mBAAmB,EAAE;YACzB,MAAMA,cAAQ,EAAE;AAChB,YAAA,CAAC,CAAC,mBAAmB,GAAG,IAAI;;AAE9B,QAAA,IAAG,CAAC,CAAC,CAAC,wBAAwB,EAAE;AAC9B,YAAA,IAAI;AACF,gBAAA,MAAM,IAAI,GAAG,MAAMC,8BAAwB,EAAE;AAC7C,gBAAA,IAAG,IAAI;AAAE,oBAAAC,WAAK,CAAC,eAAe,CAAC,IAAI,CAAC;;YACpC,OAAO,GAAG,EAAE;AACZ,gBAAA,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC;;AAEnD,YAAA,CAAC,CAAC,wBAAwB,GAAG,IAAI;;;IAEnC,OAAM,GAAG,EAAE;AACX,QAAA,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC;;AAEjD;;AC3BY,MAAC,aAAa,GAAGC;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"factory-CC4cUyGl.js","sources":["src/utils/storefront_api/factory.ts"],"sourcesContent":["import { state, showToast } from \"../store/store\";\r\n\r\nasync function shopifyFetch(query: string, variables: Record<string, any> = {}): Promise<any> {\r\n try {\r\n if(!state.shopDomainApi || !state.storefrontToken) throw new Error('Missing Shopify configuration (shopDomain/storefrontToken)');\r\n const endpoint = `https://${state.shopDomainApi}/api/2025-07/graphql.json`;\r\n const token = state.storefrontToken;\r\n const res = await fetch(endpoint, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'X-Shopify-Storefront-Access-Token': token\r\n },\r\n body: JSON.stringify({ query, variables })\r\n });\r\n const json = await res.json();\r\n if(json.errors) throw new Error(json.errors.map((e: any) => e.message).join(', '));\r\n return json.data;\r\n } catch(error) {\r\n console.error('Shopify Fetch Error:', error);\r\n throw error; \r\n };\r\n};\r\n\r\nexport async function getIdFromHandle(handle: string): Promise<string | null> {\r\n const query = `\r\n query ($handle: String!) {\r\n product(handle: $handle) {\r\n id\r\n }\r\n }`;\r\n try {\r\n const data = await shopifyFetch(query, { handle });\r\n return data?.product?.id || null;\r\n } catch (error) {\r\n console.error('getIdFromHandle error:', error);\r\n return null;\r\n };\r\n};\r\n\r\n// Field + normalization helpers\r\nconst BASE_PRODUCT_FIELDS = ['id','handle','title'];\r\nconst DEFAULT_VARIANT_FIELDS = ['id','title','price { amount currencyCode }'];\r\n\r\nfunction mergeFields(requested: string[] | string, defaults: string[]): string[] {\r\n const req = (Array.isArray(requested) ? requested : requested.split(','))\r\n .map(f => f.trim())\r\n .filter(Boolean);\r\n const seen = new Set<string>();\r\n const ordered: string[] = [];\r\n for(const f of req) { \r\n if(!seen.has(f)) { \r\n seen.add(f); ordered.push(f); \r\n }; \r\n };\r\n for(const d of defaults) { \r\n if(!seen.has(d)) { \r\n seen.add(d); \r\n ordered.push(d); \r\n }; \r\n };\r\n return ordered;\r\n};\r\n\r\nfunction expandProductFields(fields: string[]): string {\r\n return fields\r\n .filter(f => f !== 'price')\r\n .map(f => {\r\n if(f === 'images') return 'images(first: 10) { nodes { url altText } }';\r\n return f;\r\n })\r\n .join('\\n');\r\n};\r\n\r\nfunction variantSelection(fields: string[] = DEFAULT_VARIANT_FIELDS): string {\r\n return fields.join('\\n');\r\n};\r\n\r\ninterface NormalizedProduct {\r\n id: string;\r\n handle?: string;\r\n title?: string;\r\n variantId?: string;\r\n price?: string | null;\r\n imageUrl?: string | null;\r\n imageAlt?: string | null;\r\n // index signature for dynamic requested fields\r\n [key: string]: any;\r\n};\r\n\r\nfunction normalizeProduct(product: any, selectedVariant?: any): NormalizedProduct {\r\n const variant = selectedVariant || product.variants?.edges?.[0]?.node || {};\r\n let imageUrl = null;\r\n let imageAlt = null;\r\n if(product.images?.nodes && product.images.nodes.length > 0) {\r\n imageUrl = product.images.nodes[0].url || null;\r\n imageAlt = product.images.nodes[0].altText || null;\r\n };\r\n const { id: variantId, price } = variant;\r\n return {\r\n id: product.id,\r\n ...Object.fromEntries(Object.entries(product).filter(([key]) => key !== 'variants')),\r\n variantId,\r\n price: price?.amount || null,\r\n imageUrl,\r\n imageAlt,\r\n };\r\n};\r\n\r\n// Query builders\r\nfunction buildProductsQuery(fieldsString: string, variantFieldsString: string) {\r\n return `\r\n query ($limit: Int!, $sortKey: ProductSortKeys!, $reverse: Boolean) {\r\n products(first: $limit, sortKey: $sortKey, reverse: $reverse) {\r\n edges {\r\n node {\r\n ${fieldsString}\r\n variants(first: 1) { edges { node { ${variantFieldsString} } } }\r\n }\r\n }\r\n }\r\n }`;\r\n};\r\n\r\nfunction buildCollectionProductsQuery(fieldsString: string, variantFieldsString: string) {\r\n return `\r\n query ($handle: String!, $limit: Int!, $sortKey: ProductCollectionSortKeys!, $reverse: Boolean) {\r\n collection(handle: $handle) {\r\n products(first: $limit, sortKey: $sortKey, reverse: $reverse) {\r\n edges {\r\n node {\r\n ${fieldsString}\r\n variants(first: 1) { edges { node { ${variantFieldsString} } } }\r\n }\r\n }\r\n }\r\n }\r\n }`;\r\n};\r\n\r\nfunction buildSingleProductQuery(fieldsString: string, variantFieldsString: string) {\r\n return `\r\n query ($id: ID!) {\r\n product(id: $id) {\r\n ${fieldsString}\r\n variants(first: 1) { edges { node { ${variantFieldsString} } } }\r\n }\r\n }`;\r\n};\r\n\r\nfunction buildVariantProductQuery(productFieldsString: string, variantFieldsString: string) {\r\n return `\r\n query ($id: ID!) {\r\n productVariant(id: $id) {\r\n ${variantFieldsString}\r\n product {\r\n ${productFieldsString}\r\n variants(first: 1) { edges { node { ${variantFieldsString} } } }\r\n }\r\n }\r\n }`;\r\n};\r\n\r\n// Public API\r\nexport async function fetchProducts(limit: number, collectionHandle: string, sortKey: string, fields: string[] | string, reversed: boolean = false) {\r\n try {\r\n const merged = mergeFields(fields, BASE_PRODUCT_FIELDS);\r\n const fieldsString = expandProductFields(merged);\r\n const variantFieldsString = variantSelection();\r\n const isAll = !collectionHandle || collectionHandle === 'all';\r\n const query = isAll ? buildProductsQuery(fieldsString, variantFieldsString) : buildCollectionProductsQuery(fieldsString, variantFieldsString);\r\n const reverse = !!reversed;\r\n const variables: Record<string, any> = isAll ? { limit, sortKey, reverse } : { handle: collectionHandle, limit, sortKey, reverse };\r\n const data = await shopifyFetch(query, variables);\r\n const productEdges = data.products?.edges || data.collection?.products?.edges || [];\r\n return productEdges.map((edge: any) => normalizeProduct(edge.node));\r\n } catch(error) { \r\n console.error('Fetch Products Error:', error); throw error;\r\n };\r\n};\r\n\r\nexport async function fetchProductByID(id: string, fields: string[] | string, options?: { variantId?: string }): Promise<NormalizedProduct | null> {\r\n try {\r\n if(options?.variantId) return await getVariantProduct(options.variantId, fields);\r\n const merged = mergeFields(fields, BASE_PRODUCT_FIELDS);\r\n const fieldsString = expandProductFields(merged);\r\n const variantFieldsString = variantSelection();\r\n const query = buildSingleProductQuery(fieldsString, variantFieldsString);\r\n const data = await shopifyFetch(query, { id });\r\n const product = data?.product;\r\n if(!product) return null;\r\n return normalizeProduct(product);\r\n } catch(error) { console.error('Fetch Product By ID Error:', error); throw error; };\r\n};\r\n\r\nexport async function getVariantProduct(variantId: string, fields: string[] | string): Promise<NormalizedProduct | null> {\r\n try {\r\n const merged = mergeFields(fields, BASE_PRODUCT_FIELDS);\r\n const productFieldsString = expandProductFields(merged);\r\n const variantFieldsString = variantSelection();\r\n const query = buildVariantProductQuery(productFieldsString, variantFieldsString);\r\n const data = await shopifyFetch(query, { id: variantId });\r\n const variantNode = data?.productVariant;\r\n if(!variantNode) return null;\r\n const product = variantNode.product;\r\n if(!product) return null;\r\n return normalizeProduct(product, variantNode); \r\n } catch(error) { console.error('Get Variant Product Error:', error); throw error; };\r\n};\r\n\r\nexport async function addToCart(options: {\r\n id: number;\r\n quantity?: number;\r\n properties?: Record<string, any>;\r\n}) {\r\n try {\r\n console.log('IV add to cart called');\r\n if(!options.id) throw new Error('No variant id provided for addToCart');\r\n const quantity = options.quantity || 1;\r\n const properties = options.properties || {};\r\n const payload = {\r\n items: [\r\n {\r\n id: options.id,\r\n quantity,\r\n properties\r\n }\r\n ]\r\n };\r\n const url = '/cart/add.js';\r\n const res = await fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json',\r\n 'X-Requested-With': 'XMLHttpRequest'\r\n },\r\n body: JSON.stringify(payload)\r\n });\r\n if(!res.ok) {\r\n const errorText = await res.text();\r\n throw new Error(errorText);\r\n };\r\n const cartItem = await res.json();\r\n showToast('Added to cart!', 'success', 3000);\r\n return cartItem;\r\n } catch (error) {\r\n showToast('Error adding to cart', 'error', 5000);\r\n throw error;\r\n };\r\n};"],"names":["state","showToast"],"mappings":"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"}