the-foxy-library 1.0.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.
Files changed (125) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +111 -0
  3. package/dist/components/index.d.ts +33 -0
  4. package/dist/components/iv-accordion.d.ts +11 -0
  5. package/dist/components/iv-banner.d.ts +11 -0
  6. package/dist/components/iv-button.d.ts +11 -0
  7. package/dist/components/iv-card.d.ts +11 -0
  8. package/dist/components/iv-carousel.d.ts +11 -0
  9. package/dist/components/iv-dynamic-products-carousel.d.ts +11 -0
  10. package/dist/components/iv-dynamic-products.d.ts +11 -0
  11. package/dist/components/iv-filters.d.ts +11 -0
  12. package/dist/components/iv-layout.d.ts +11 -0
  13. package/dist/components/iv-link.d.ts +11 -0
  14. package/dist/components/iv-modal.d.ts +11 -0
  15. package/dist/components/iv-predictive-search.d.ts +11 -0
  16. package/dist/components/iv-recently-viewed.d.ts +11 -0
  17. package/dist/components/iv-sidebar.d.ts +11 -0
  18. package/dist/components/iv-spinner.d.ts +11 -0
  19. package/dist/components/iv-suggest.d.ts +11 -0
  20. package/dist/components/iv-tabs.d.ts +11 -0
  21. package/dist/components/iv-toast-container.d.ts +11 -0
  22. package/dist/components/iv-toast.d.ts +11 -0
  23. package/dist/components/iv-wishlist-view.d.ts +11 -0
  24. package/dist/components/iv-wishlist.d.ts +11 -0
  25. package/dist/components/sw-in-grid-content.d.ts +11 -0
  26. package/dist/components/sw-size-guide.d.ts +11 -0
  27. package/dist/intravenous/factory-1QinX-o0.js +275 -0
  28. package/dist/intravenous/factory-1QinX-o0.js.map +1 -0
  29. package/dist/intravenous/factory-JClanx-E.js +596 -0
  30. package/dist/intravenous/factory-JClanx-E.js.map +1 -0
  31. package/dist/intravenous/factory-mrqy6XUM.js +36 -0
  32. package/dist/intravenous/factory-mrqy6XUM.js.map +1 -0
  33. package/dist/intravenous/index-Py50VI8u.js +4761 -0
  34. package/dist/intravenous/index-Py50VI8u.js.map +1 -0
  35. package/dist/intravenous/index.esm.js +17 -0
  36. package/dist/intravenous/index.esm.js.map +1 -0
  37. package/dist/intravenous/intravenous.esm.js +48 -0
  38. package/dist/intravenous/intravenous.esm.js.map +1 -0
  39. package/dist/intravenous/iv-accordion.entry.esm.js.map +1 -0
  40. package/dist/intravenous/iv-accordion.entry.js +35 -0
  41. package/dist/intravenous/iv-banner.entry.esm.js.map +1 -0
  42. package/dist/intravenous/iv-banner.entry.js +28 -0
  43. package/dist/intravenous/iv-button.entry.esm.js.map +1 -0
  44. package/dist/intravenous/iv-button.entry.js +40 -0
  45. package/dist/intravenous/iv-card.entry.esm.js.map +1 -0
  46. package/dist/intravenous/iv-card.entry.js +82 -0
  47. package/dist/intravenous/iv-carousel.entry.esm.js.map +1 -0
  48. package/dist/intravenous/iv-carousel.entry.js +16 -0
  49. package/dist/intravenous/iv-dynamic-products-carousel.entry.esm.js.map +1 -0
  50. package/dist/intravenous/iv-dynamic-products-carousel.entry.js +114 -0
  51. package/dist/intravenous/iv-dynamic-products.entry.esm.js.map +1 -0
  52. package/dist/intravenous/iv-dynamic-products.entry.js +97 -0
  53. package/dist/intravenous/iv-filters.entry.esm.js.map +1 -0
  54. package/dist/intravenous/iv-filters.entry.js +19 -0
  55. package/dist/intravenous/iv-layout.entry.esm.js.map +1 -0
  56. package/dist/intravenous/iv-layout.entry.js +60 -0
  57. package/dist/intravenous/iv-link.entry.esm.js.map +1 -0
  58. package/dist/intravenous/iv-link.entry.js +25 -0
  59. package/dist/intravenous/iv-modal.entry.esm.js.map +1 -0
  60. package/dist/intravenous/iv-modal.entry.js +19 -0
  61. package/dist/intravenous/iv-predictive-search.entry.esm.js.map +1 -0
  62. package/dist/intravenous/iv-predictive-search.entry.js +311 -0
  63. package/dist/intravenous/iv-recently-viewed.entry.esm.js.map +1 -0
  64. package/dist/intravenous/iv-recently-viewed.entry.js +101 -0
  65. package/dist/intravenous/iv-sidebar.entry.esm.js.map +1 -0
  66. package/dist/intravenous/iv-sidebar.entry.js +24 -0
  67. package/dist/intravenous/iv-spinner.entry.esm.js.map +1 -0
  68. package/dist/intravenous/iv-spinner.entry.js +19 -0
  69. package/dist/intravenous/iv-suggest.entry.esm.js.map +1 -0
  70. package/dist/intravenous/iv-suggest.entry.js +72 -0
  71. package/dist/intravenous/iv-tabs.entry.esm.js.map +1 -0
  72. package/dist/intravenous/iv-tabs.entry.js +22 -0
  73. package/dist/intravenous/iv-toast-container.entry.esm.js.map +1 -0
  74. package/dist/intravenous/iv-toast-container.entry.js +44 -0
  75. package/dist/intravenous/iv-toast.entry.esm.js.map +1 -0
  76. package/dist/intravenous/iv-toast.entry.js +23 -0
  77. package/dist/intravenous/iv-wishlist-view.entry.esm.js.map +1 -0
  78. package/dist/intravenous/iv-wishlist-view.entry.js +21 -0
  79. package/dist/intravenous/iv-wishlist.entry.esm.js.map +1 -0
  80. package/dist/intravenous/iv-wishlist.entry.js +73 -0
  81. package/dist/intravenous/loader.esm.js.map +1 -0
  82. package/dist/intravenous/sw-in-grid-content.entry.esm.js.map +1 -0
  83. package/dist/intravenous/sw-in-grid-content.entry.js +18 -0
  84. package/dist/intravenous/sw-size-guide.entry.esm.js.map +1 -0
  85. package/dist/intravenous/sw-size-guide.entry.js +111 -0
  86. package/dist/types/components/iv-accordion/iv-accordion.d.ts +12 -0
  87. package/dist/types/components/iv-banner/iv-banner.d.ts +7 -0
  88. package/dist/types/components/iv-button/iv-button.d.ts +12 -0
  89. package/dist/types/components/iv-card/iv-card.d.ts +15 -0
  90. package/dist/types/components/iv-carousel/iv-carousel.d.ts +3 -0
  91. package/dist/types/components/iv-dynamic-products/iv-dynamic-products.d.ts +26 -0
  92. package/dist/types/components/iv-dynamic-products-carousel/iv-dynamic-products-carousel.d.ts +29 -0
  93. package/dist/types/components/iv-filters/iv-filters.d.ts +3 -0
  94. package/dist/types/components/iv-layout/iv-layout.d.ts +12 -0
  95. package/dist/types/components/iv-link/iv-link.d.ts +9 -0
  96. package/dist/types/components/iv-modal/iv-modal.d.ts +3 -0
  97. package/dist/types/components/iv-predictive-search/iv-predictive-search.d.ts +44 -0
  98. package/dist/types/components/iv-recently-viewed/iv-recently-viewed.d.ts +17 -0
  99. package/dist/types/components/iv-sidebar/iv-sidebar.d.ts +5 -0
  100. package/dist/types/components/iv-spinner/iv-spinner.d.ts +4 -0
  101. package/dist/types/components/iv-suggest/iv-suggest.d.ts +21 -0
  102. package/dist/types/components/iv-tabs/iv-tabs.d.ts +7 -0
  103. package/dist/types/components/iv-toast/iv-toast.d.ts +7 -0
  104. package/dist/types/components/iv-toast-container/iv-toast-container.d.ts +8 -0
  105. package/dist/types/components/iv-wishlist/iv-wishlist.d.ts +16 -0
  106. package/dist/types/components/iv-wishlist-view/iv-wishlist-view.d.ts +3 -0
  107. package/dist/types/components/sw-in-grid-content/sw-in-grid-content.d.ts +3 -0
  108. package/dist/types/components/sw-size-guide/sw-size-guide.d.ts +14 -0
  109. package/dist/types/components.d.ts +943 -0
  110. package/dist/types/global/app.d.ts +1 -0
  111. package/dist/types/index.d.ts +11 -0
  112. package/dist/types/stencil-public-runtime.d.ts +1746 -0
  113. package/dist/types/utils/caching/factory.d.ts +72 -0
  114. package/dist/types/utils/config/factory.d.ts +2 -0
  115. package/dist/types/utils/error_handling/factory.d.ts +58 -0
  116. package/dist/types/utils/helpers/factory.d.ts +6 -0
  117. package/dist/types/utils/store/store.d.ts +21 -0
  118. package/dist/types/utils/storefront_api/factory.d.ts +22 -0
  119. package/dist/types/utils/utils.d.ts +1 -0
  120. package/loader/cdn.js +1 -0
  121. package/loader/index.cjs.js +1 -0
  122. package/loader/index.d.ts +24 -0
  123. package/loader/index.es2017.js +1 -0
  124. package/loader/index.js +2 -0
  125. package/package.json +54 -0
@@ -0,0 +1,22 @@
1
+ import { r as registerInstance, h } from './index-Py50VI8u.js';
2
+
3
+ const ivTabsCss = ":host{display:block}";
4
+
5
+ const IvTabs = class {
6
+ constructor(hostRef) {
7
+ registerInstance(this, hostRef);
8
+ }
9
+ labels = [];
10
+ classModifier;
11
+ tabLayout = 'horizontal';
12
+ activeTab = 0;
13
+ render() {
14
+ return (h("div", { key: 'e4bce1b91f2f0a1f1eb70932fe9f95e25c150f3f', class: `iv-tabs iv-tabs--${this.classModifier} iv-tabs--${this.tabLayout}` }, h("div", { key: 'e40af1bc65b179e3ac51fcf439840036d8add906', class: "iv-tabs__header", role: "tablist" }, this.labels.map((label, index) => (h("button", { id: `tab-button-${index}`, class: `iv-tab ${this.activeTab === index ? 'active' : ''}`, onClick: () => this.activeTab = index, "aria-selected": this.activeTab === index ? 'true' : 'false', "aria-controls": `tab-panel-${index}`, role: "tab", type: "button", tabindex: this.activeTab === index ? '0' : '-1' }, label)))), h("div", { key: '2b597bcf10fde6c1c291f47ffc47c442922db9ac', class: "iv-tabs__content" }, this.labels.map((_, index) => (h("div", { id: `tab-panel-${index}`, role: 'tabpanel', "aria-labelledby": `tab-button-${index}`, hidden: this.activeTab !== index }, h("slot", { name: `tab-content-${index}` })))))));
15
+ }
16
+ ;
17
+ };
18
+ ;
19
+ IvTabs.style = ivTabsCss;
20
+
21
+ export { IvTabs as iv_tabs };
22
+ //# sourceMappingURL=iv-tabs.entry.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iv-toast-container.entry.esm.js","sources":["src/components/iv-toast-container/iv-toast-container.scss?tag=iv-toast-container","src/components/iv-toast-container/iv-toast-container.tsx"],"sourcesContent":[".iv-toast-container {\n position: fixed;\n top: 1rem;\n left: 1rem;\n display: flex;\n flex-direction: column;\n gap: 1rem;\n z-index: 10000;\n pointer-events: none;\n}","import { Component, h, State } from '@stencil/core';\nimport { state, onStoreChange, ToastItem } from '../../utils/store/store';\n\nconst BLOCK = 'iv-toast-container';\n\n@Component({\n tag: 'iv-toast-container',\n styleUrl: 'iv-toast-container.scss',\n shadow: false,\n})\nexport class IvToastContainer {\n @State() _bump: number = 0; // force re-render marker\n\n private unsub?: () => void;\n\n private onToastEvent = (e: Event) => {\n const detail = (e as CustomEvent).detail as ToastItem;\n if(!detail || typeof detail.id === 'undefined') return;\n if(!state.toasts.some(t => t.id === detail.id)) {\n console.debug('[iv-toast-container] consumed iv:toast event', { receivedId: detail.id, storeInstance: state._instanceId });\n state.toasts = [...state.toasts, detail];\n setTimeout(() => { state.toasts = state.toasts.filter(t => t.id !== detail.id); }, detail.duration || 3000);\n }\n };\n\n connectedCallback() {\n document.addEventListener('iv:toast', this.onToastEvent as any);\n // Explicit subscription (defensive) – bump state when toasts array mutates\n try {\n this.unsub = onStoreChange('toasts', () => { this._bump++; console.debug('[iv-toast-container] onStoreChange bump', this._bump, 'length=', state.toasts.length); });\n } catch(e) { console.warn('[iv-toast-container] onStoreChange not available', e); }\n console.debug('[iv-toast-container] connected storeInstance=', state._instanceId);\n }\n\n disconnectedCallback() {\n document.removeEventListener('iv:toast', this.onToastEvent as any);\n this.unsub && this.unsub();\n }\n\n render() {\n return (\n <div class={BLOCK} data-bump={this._bump}>\n {state.toasts.map(t => (\n <iv-toast\n key={t.id}\n toastId={t.id}\n message={t.message}\n type={t.type}\n duration={t.duration}\n />\n ))}\n </div>\n );\n }\n}"],"names":[],"mappings":";;AAAA,MAAM,mBAAmB,GAAG,sIAAsI;;ACGlK,MAAM,KAAK,GAAG,oBAAoB;MAOrB,gBAAgB,GAAA,MAAA;;;;AAClB,IAAA,KAAK,GAAW,CAAC,CAAC;AAEnB,IAAA,KAAK;AAEL,IAAA,YAAY,GAAG,CAAC,CAAQ,KAAI;AAClC,QAAA,MAAM,MAAM,GAAI,CAAiB,CAAC,MAAmB;QACrD,IAAG,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,EAAE,KAAK,WAAW;YAAE;QAChD,IAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,EAAE;AAC9C,YAAA,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;YAC1H,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC;AACxC,YAAA,UAAU,CAAC,MAAQ,EAAA,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC;;AAE/G,KAAC;IAED,iBAAiB,GAAA;QACf,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,YAAmB,CAAC;;AAE/D,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,QAAQ,EAAE,MAAK,EAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;;QACnK,OAAM,CAAC,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,kDAAkD,EAAE,CAAC,CAAC;;QAChF,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC,WAAW,CAAC;;IAGnF,oBAAoB,GAAA;QAClB,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,YAAmB,CAAC;AAClE,QAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;;IAG5B,MAAM,GAAA;AACJ,QAAA,QACE,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,KAAK,EAAa,WAAA,EAAA,IAAI,CAAC,KAAK,EACrC,EAAA,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KACjB,CAAA,CAAA,UAAA,EAAA,EACE,GAAG,EAAE,CAAC,CAAC,EAAE,EACT,OAAO,EAAE,CAAC,CAAC,EAAE,EACb,OAAO,EAAE,CAAC,CAAC,OAAO,EAClB,IAAI,EAAE,CAAC,CAAC,IAAI,EACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAA,CACpB,CACH,CAAC,CACE;;;;;;;"}
@@ -0,0 +1,44 @@
1
+ import { r as registerInstance, d as state, o as onStoreChange, h } from './index-Py50VI8u.js';
2
+
3
+ const ivToastContainerCss = ".iv-toast-container{position:fixed;top:1rem;left:1rem;display:flex;flex-direction:column;gap:1rem;z-index:10000;pointer-events:none}";
4
+
5
+ const BLOCK = 'iv-toast-container';
6
+ const IvToastContainer = class {
7
+ constructor(hostRef) {
8
+ registerInstance(this, hostRef);
9
+ }
10
+ _bump = 0; // force re-render marker
11
+ unsub;
12
+ onToastEvent = (e) => {
13
+ const detail = e.detail;
14
+ if (!detail || typeof detail.id === 'undefined')
15
+ return;
16
+ if (!state.toasts.some(t => t.id === detail.id)) {
17
+ console.debug('[iv-toast-container] consumed iv:toast event', { receivedId: detail.id, storeInstance: state._instanceId });
18
+ state.toasts = [...state.toasts, detail];
19
+ setTimeout(() => { state.toasts = state.toasts.filter(t => t.id !== detail.id); }, detail.duration || 3000);
20
+ }
21
+ };
22
+ connectedCallback() {
23
+ document.addEventListener('iv:toast', this.onToastEvent);
24
+ // Explicit subscription (defensive) – bump state when toasts array mutates
25
+ try {
26
+ this.unsub = onStoreChange('toasts', () => { this._bump++; console.debug('[iv-toast-container] onStoreChange bump', this._bump, 'length=', state.toasts.length); });
27
+ }
28
+ catch (e) {
29
+ console.warn('[iv-toast-container] onStoreChange not available', e);
30
+ }
31
+ console.debug('[iv-toast-container] connected storeInstance=', state._instanceId);
32
+ }
33
+ disconnectedCallback() {
34
+ document.removeEventListener('iv:toast', this.onToastEvent);
35
+ this.unsub && this.unsub();
36
+ }
37
+ render() {
38
+ return (h("div", { key: 'c7959b29748282d04912878d3b9dee5066ff8473', class: BLOCK, "data-bump": this._bump }, state.toasts.map(t => (h("iv-toast", { key: t.id, toastId: t.id, message: t.message, type: t.type, duration: t.duration })))));
39
+ }
40
+ };
41
+ IvToastContainer.style = ivToastContainerCss;
42
+
43
+ export { IvToastContainer as iv_toast_container };
44
+ //# sourceMappingURL=iv-toast-container.entry.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iv-toast.entry.esm.js","sources":["src/components/iv-toast/iv-toast.scss?tag=iv-toast","src/components/iv-toast/iv-toast.tsx"],"sourcesContent":[".iv-toast {\n position: relative;\n display: flex;\n align-items: flex-start;\n gap: 0.75rem;\n line-height: 1.4;\n min-width: 26rem; // slightly wider for readability\n max-width: 36rem;\n padding: 1.1rem 1.5rem 1.1rem 1.75rem; // extra left space for accent bar\n border-radius: 0.5rem;\n font-size: var(--iv-toast-font-size, 1.05rem);\n font-weight: 500;\n opacity: 0;\n transform: translateY(2rem) scale(0.95);\n box-shadow: 0 8px 32px rgba(0,0,0,.18), 0 2px 6px rgba(0,0,0,.12);\n border: 1px solid var(--iv-toast-border, rgba(0,0,0,.12));\n background-clip: padding-box;\n backdrop-filter: var(--iv-toast-backdrop-filter, none);\n -webkit-font-smoothing: antialiased;\n animation: toast-in .5s cubic-bezier(.4, 1.4, .6, 1) forwards, toast-out .5s cubic-bezier(.4, 1.4, .6, 1) forwards;\n animation-delay: 0s, calc(var(--iv-toast-duration, 5s) - 0.5s);\n pointer-events: all;\n transition: box-shadow .25s ease, transform .25s ease;\n\n &::before {\n content: \"\";\n position: absolute;\n inset: 0 auto 0 0;\n width: 0.4rem;\n border-radius: 0.5rem 0 0 0.5rem;\n background: var(--iv-toast-accent, #6366f1);\n }\n\n &:hover {\n box-shadow: 0 10px 42px rgba(0,0,0,.22), 0 3px 10px rgba(0,0,0,.18);\n transform: translateY(-2px);\n }\n\n &.info {\n background-color: var(--iv-toast-info-background, black);\n color: var(--iv-toast-info-color, white);\n --iv-toast-accent: var(--iv-toast-info-accent, #6366f1);\n }\n\n &.success {\n background-color: var(--iv-toast-success-background, #d1fadf);\n color: var(--iv-toast-success-color, #065f46);\n --iv-toast-accent: var(--iv-toast-success-accent, #12b76a);\n }\n\n &.warning {\n background-color: var(--iv-toast-warning-background, #ffe8c7);\n color: var(--iv-toast-warning-color, #7c2d12);\n --iv-toast-accent: var(--iv-toast-warning-accent, #f59e0b);\n }\n\n &.error {\n background-color: var(--iv-toast-error-background, #ffe2e2);\n color: var(--iv-toast-error-color, #7f1d1d);\n --iv-toast-accent: var(--iv-toast-error-accent, #ef4444);\n }\n\n .iv-toast-message {\n margin: 0;\n line-height: 1.4;\n word-break: break-word;\n font-weight: 600;\n }\n}\n\n@keyframes toast-in {\n 0% { opacity: 0; transform: translateY(1.25rem) scale(.92); }\n 55% { opacity: 1; transform: translateY(-3px) scale(1.03); }\n 75% { transform: translateY(2px) scale(.997); }\n 100% { opacity: 1; transform: translateY(0) scale(1); }\n}\n\n@keyframes toast-out {\n 0% { opacity: 1; transform: translateY(0) scale(1); }\n 100% { opacity: 0; transform: translateY(1rem) scale(.94); }\n}","import { Component, h, Prop } from '@stencil/core';\n\nconst BLOCK = 'iv-toast';\n\n@Component({\n tag: 'iv-toast',\n styleUrl: 'iv-toast.scss',\n shadow: false\n})\n\nexport class IvToast {\n\n @Prop() message: string;\n @Prop() toastId: number;\n @Prop() duration: number = 3000;\n @Prop() type: 'info' | 'success' | 'error' | 'warning' = 'info';\n\n render() {\n\n return (\n\n <div class={`${BLOCK} ${this.type}`} role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n <span class={`${BLOCK}-message`}>\n {this.message}\n </span>\n </div>\n \n );\n\n };\n\n};"],"names":[],"mappings":";;AAAA,MAAM,UAAU,GAAG,kqEAAkqE;;ACErrE,MAAM,KAAK,GAAG,UAAU;MAQX,OAAO,GAAA,MAAA;;;;AAEV,IAAA,OAAO;AACP,IAAA,OAAO;IACP,QAAQ,GAAW,IAAI;IACvB,IAAI,GAA6C,MAAM;IAE/D,MAAM,GAAA;QAEJ,QAEE,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,GAAG,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,CAAA,CAAE,EAAE,IAAI,EAAC,OAAO,EAAW,WAAA,EAAA,WAAW,iBAAa,MAAM,EAAA,EACxF,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,KAAK,EAAE,CAAA,EAAG,KAAK,CAAA,QAAA,CAAU,EAAA,EAC5B,IAAI,CAAC,OAAO,CACR,CACH;;;;AAMX;;;;;"}
@@ -0,0 +1,23 @@
1
+ import { r as registerInstance, h } from './index-Py50VI8u.js';
2
+
3
+ const ivToastCss = ".iv-toast{position:relative;display:flex;align-items:flex-start;gap:0.75rem;line-height:1.4;min-width:26rem;max-width:36rem;padding:1.1rem 1.5rem 1.1rem 1.75rem;border-radius:0.5rem;font-size:var(--iv-toast-font-size, 1.05rem);font-weight:500;opacity:0;transform:translateY(2rem) scale(0.95);box-shadow:0 8px 32px rgba(0, 0, 0, 0.18), 0 2px 6px rgba(0, 0, 0, 0.12);border:1px solid var(--iv-toast-border, rgba(0, 0, 0, 0.12));background-clip:padding-box;backdrop-filter:var(--iv-toast-backdrop-filter, none);-webkit-font-smoothing:antialiased;animation:toast-in 0.5s cubic-bezier(0.4, 1.4, 0.6, 1) forwards, toast-out 0.5s cubic-bezier(0.4, 1.4, 0.6, 1) forwards;animation-delay:0s, calc(var(--iv-toast-duration, 5s) - 0.5s);pointer-events:all;transition:box-shadow 0.25s ease, transform 0.25s ease}.iv-toast::before{content:\"\";position:absolute;inset:0 auto 0 0;width:0.4rem;border-radius:0.5rem 0 0 0.5rem;background:var(--iv-toast-accent, #6366f1)}.iv-toast:hover{box-shadow:0 10px 42px rgba(0, 0, 0, 0.22), 0 3px 10px rgba(0, 0, 0, 0.18);transform:translateY(-2px)}.iv-toast.info{background-color:var(--iv-toast-info-background, black);color:var(--iv-toast-info-color, white);--iv-toast-accent:var(--iv-toast-info-accent, #6366f1)}.iv-toast.success{background-color:var(--iv-toast-success-background, #d1fadf);color:var(--iv-toast-success-color, #065f46);--iv-toast-accent:var(--iv-toast-success-accent, #12b76a)}.iv-toast.warning{background-color:var(--iv-toast-warning-background, #ffe8c7);color:var(--iv-toast-warning-color, #7c2d12);--iv-toast-accent:var(--iv-toast-warning-accent, #f59e0b)}.iv-toast.error{background-color:var(--iv-toast-error-background, #ffe2e2);color:var(--iv-toast-error-color, #7f1d1d);--iv-toast-accent:var(--iv-toast-error-accent, #ef4444)}.iv-toast .iv-toast-message{margin:0;line-height:1.4;word-break:break-word;font-weight:600}@keyframes toast-in{0%{opacity:0;transform:translateY(1.25rem) scale(0.92)}55%{opacity:1;transform:translateY(-3px) scale(1.03)}75%{transform:translateY(2px) scale(0.997)}100%{opacity:1;transform:translateY(0) scale(1)}}@keyframes toast-out{0%{opacity:1;transform:translateY(0) scale(1)}100%{opacity:0;transform:translateY(1rem) scale(0.94)}}";
4
+
5
+ const BLOCK = 'iv-toast';
6
+ const IvToast = class {
7
+ constructor(hostRef) {
8
+ registerInstance(this, hostRef);
9
+ }
10
+ message;
11
+ toastId;
12
+ duration = 3000;
13
+ type = 'info';
14
+ render() {
15
+ return (h("div", { key: 'ddc8ae7060e52b0090b5cfd2d2073692a62e71c2', class: `${BLOCK} ${this.type}`, role: "alert", "aria-live": "assertive", "aria-atomic": "true" }, h("span", { key: 'edb6d29d375a88fa03e406be19792cb2e920886d', class: `${BLOCK}-message` }, this.message)));
16
+ }
17
+ ;
18
+ };
19
+ ;
20
+ IvToast.style = ivToastCss;
21
+
22
+ export { IvToast as iv_toast };
23
+ //# sourceMappingURL=iv-toast.entry.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iv-wishlist-view.entry.esm.js","sources":["src/components/iv-wishlist-view/iv-wishlist-view.scss?tag=iv-wishlist-view","src/components/iv-wishlist-view/iv-wishlist-view.tsx"],"sourcesContent":[":host {\n display: block;\n}\n","import { Component, h } from '@stencil/core';\nimport { state, removeFromWishlist } from '../../utils/store/store';\nimport { getProductIDFromGid } from '../../utils/helpers/factory';\nimport { addToCart } from '../../utils/storefront_api/factory';\n\nconst BLOCK = 'iv-wishlist-view';\n\n@Component({\n tag: 'iv-wishlist-view',\n styleUrl: 'iv-wishlist-view.scss',\n shadow: false\n})\n\nexport class IvWishlistView {\n\n render() {\n\n return (\n \n <div class={BLOCK}>\n <ul class={`${BLOCK}-list`}>\n {state.wishlist.length === 0 ? (\n <li class={`${BLOCK}-empty`}>{state.wishlistLabels.emptyMessage}</li>\n ) : (\n state.wishlist.map((item, idx) => (\n <li class={`${BLOCK}-item`} key={item.id || idx}>\n <div class={`${BLOCK}-fields`}>\n {Object.entries(item).map(([key, value]) => (\n <div class={`${BLOCK}-field ${BLOCK}-field-${key}`}>{value}</div>\n ))}\n </div>\n <div class={`${BLOCK}-actions`}>\n <iv-button\n classmodifier={`${BLOCK}-remove`}\n onClick={() => removeFromWishlist(item.id)}>\n <span class=\"inner-button\" innerHTML={state.wishlistLabels.removeLabel}></span>\n </iv-button>\n <iv-button\n classmodifier={`${BLOCK}-add-to-cart`}\n onClick={() => addToCart({ id: getProductIDFromGid(item.id) })}> \n {/* the getProductID() above may not be needed, can't remember the format here. */}\n <span class=\"inner-button\" innerHTML={state.wishlistLabels.addToCartLabel}></span>\n </iv-button>\n </div>\n </li>\n ))\n )}\n </ul>\n </div>\n \n );\n\n };\n\n};"],"names":[],"mappings":";;;;AAAA,MAAM,iBAAiB,GAAG,sBAAsB;;ACKhD,MAAM,KAAK,GAAG,kBAAkB;MAQnB,cAAc,GAAA,MAAA;;;;IAEzB,MAAM,GAAA;AAEJ,QAAA,QAEE,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,KAAK,EAAA,EACf,CAAA,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAI,KAAK,EAAE,CAAG,EAAA,KAAK,OAAO,EAAA,EACvB,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAC1B,CAAA,CAAA,IAAA,EAAA,EAAI,KAAK,EAAE,CAAA,EAAG,KAAK,CAAA,MAAA,CAAQ,EAAA,EAAG,KAAK,CAAC,cAAc,CAAC,YAAY,CAAM,KAErE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,MAC3B,CAAI,CAAA,IAAA,EAAA,EAAA,KAAK,EAAE,CAAG,EAAA,KAAK,CAAO,KAAA,CAAA,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAA,EAC7C,CAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,CAAA,EAAG,KAAK,CAAA,OAAA,CAAS,EAAA,EAC1B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,MACrC,WAAK,KAAK,EAAE,CAAG,EAAA,KAAK,CAAU,OAAA,EAAA,KAAK,CAAU,OAAA,EAAA,GAAG,CAAE,CAAA,EAAA,EAAG,KAAK,CAAO,CAClE,CAAC,CACE,EACN,CAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,CAAG,EAAA,KAAK,CAAU,QAAA,CAAA,EAAA,EAC5B,CAAA,CAAA,WAAA,EAAA,EACE,aAAa,EAAE,CAAA,EAAG,KAAK,CAAA,OAAA,CAAS,EAChC,OAAO,EAAE,MAAM,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAA,EACxC,CAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAC,cAAc,EAAC,SAAS,EAAE,KAAK,CAAC,cAAc,CAAC,WAAW,EAAA,CAAS,CACvE,EACZ,CACE,CAAA,WAAA,EAAA,EAAA,aAAa,EAAE,CAAG,EAAA,KAAK,CAAc,YAAA,CAAA,EACrC,OAAO,EAAE,MAAM,SAAS,CAAC,EAAE,EAAE,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAA,EAE5D,CAAM,CAAA,MAAA,EAAA,EAAA,KAAK,EAAC,cAAc,EAAC,SAAS,EAAE,KAAK,CAAC,cAAc,CAAC,cAAc,EAAS,CAAA,CAC1E,CACR,CACH,CACJ,CAAC,CACH,CACA,CACD;;;;AAMX;;;;;"}
@@ -0,0 +1,21 @@
1
+ import { r as registerInstance, h, d as state, j as removeFromWishlist } from './index-Py50VI8u.js';
2
+ import { b as getProductIDFromGid } from './factory-mrqy6XUM.js';
3
+ import { b as addToCart } from './factory-1QinX-o0.js';
4
+
5
+ const ivWishlistViewCss = ":host{display:block}";
6
+
7
+ const BLOCK = 'iv-wishlist-view';
8
+ const IvWishlistView = class {
9
+ constructor(hostRef) {
10
+ registerInstance(this, hostRef);
11
+ }
12
+ render() {
13
+ return (h("div", { key: 'c94ffc243064b1a671c34d78a4b590192b34c6a7', class: BLOCK }, h("ul", { key: 'f135f807e188d312169ae2fa998b2f211ce404a4', class: `${BLOCK}-list` }, state.wishlist.length === 0 ? (h("li", { class: `${BLOCK}-empty` }, state.wishlistLabels.emptyMessage)) : (state.wishlist.map((item, idx) => (h("li", { class: `${BLOCK}-item`, key: item.id || idx }, h("div", { class: `${BLOCK}-fields` }, Object.entries(item).map(([key, value]) => (h("div", { class: `${BLOCK}-field ${BLOCK}-field-${key}` }, value)))), h("div", { class: `${BLOCK}-actions` }, h("iv-button", { classmodifier: `${BLOCK}-remove`, onClick: () => removeFromWishlist(item.id) }, h("span", { class: "inner-button", innerHTML: state.wishlistLabels.removeLabel })), h("iv-button", { classmodifier: `${BLOCK}-add-to-cart`, onClick: () => addToCart({ id: getProductIDFromGid(item.id) }) }, h("span", { class: "inner-button", innerHTML: state.wishlistLabels.addToCartLabel }))))))))));
14
+ }
15
+ ;
16
+ };
17
+ ;
18
+ IvWishlistView.style = ivWishlistViewCss;
19
+
20
+ export { IvWishlistView as iv_wishlist_view };
21
+ //# sourceMappingURL=iv-wishlist-view.entry.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iv-wishlist.entry.esm.js","sources":["src/components/iv-wishlist/iv-wishlist.scss?tag=iv-wishlist","src/components/iv-wishlist/iv-wishlist.tsx"],"sourcesContent":[":host {\n display: block;\n}\n","import { Component, h, Prop } from '@stencil/core';\nimport { \n state, toggleModal, togglePullout, \n showToast, removeFromWishlist } from '../../utils/store/store';\n\nconst BLOCK = 'iv-wishlist';\n\n@Component({\n tag: 'iv-wishlist',\n styleUrl: 'iv-wishlist.scss',\n shadow: false\n})\n\nexport class IvWishlist {\n\n @Prop() buttonaddvalue: string = 'Add to wishlist';\n @Prop() buttonremovevalue: string = 'Remove from wishlist';\n @Prop() wishlistempty: string = 'Your wishlist is empty';\n @Prop() buttonaddtocartvalue: string = 'Add to cart';\n @Prop() viewwishlistvalue: string = 'View wishlist';\n @Prop() productdata: Record<string, any> | string = {};\n @Prop() usefields: string = 'id,title,price,image,url';\n @Prop() previewtype: 'modal' | 'pullout' = 'modal';\n\n // Lifecycle hooks\n componentWillLoad() {\n const stored = localStorage.getItem('wishlist');\n if(stored) state.wishlist = JSON.parse(stored);\n state.wishlistLabels = {\n removeLabel: this.buttonremovevalue,\n addToCartLabel: this.buttonaddtocartvalue,\n emptyMessage: this.wishlistempty\n };\n };\n\n // Getters\n private get itemFromWishlist() {\n return state.wishlist.some(item => item.id === this.productdata['id']) || state.wishlist.length > 0;\n };\n\n private get buttonLabel() {\n if(this.itemFromWishlist) return this.buttonremovevalue || this.buttonaddvalue;\n return this.buttonaddvalue;\n };\n \n private get requestedFields() {\n let requestedFields = this.usefields.split(',').map(field => field.trim());\n if(!requestedFields.includes('id')) requestedFields.push('id');\n if(!requestedFields.includes('title')) requestedFields.push('title');\n return requestedFields;\n };\n\n // Methods\n private addToWishlist() {\n state.loading = true;\n const product = {};\n this.requestedFields.forEach(field => {\n if(this.productdata.hasOwnProperty(field)) product[field] = this.productdata[field];\n });\n state.wishlist = [...state.wishlist, product];\n localStorage.setItem('wishlist', JSON.stringify(state.wishlist));\n state.loading = false;\n showToast(`${product['title']} added to wishlist`, 'success', 5000);\n };\n\n render() {\n\n return (\n\n <div class={`${BLOCK}`}>\n <iv-button \n classmodifier={`${BLOCK}-add ${this.itemFromWishlist ? 'remove' : 'add'}`} \n onClick={() => this.itemFromWishlist ? removeFromWishlist(this.productdata['id']) : this.addToWishlist()}>\n <span class=\"inner-button\" innerHTML={this.buttonLabel}></span>\n </iv-button>\n {state.wishlist.length > 0 && (\n <iv-button \n classmodifier={`${BLOCK}-view`} \n onClick={() => this.previewtype === 'modal' ? toggleModal('wishlist') : togglePullout('wishlist')}>\n <span class=\"inner-button\" innerHTML={this.viewwishlistvalue}></span>\n </iv-button> \n )}\n </div>\n\n );\n\n };\n\n};"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import { r as registerInstance, d as state, e as showToast, h, j as removeFromWishlist, t as toggleModal, i as togglePullout } from './index-Py50VI8u.js';
2
+
3
+ const ivWishlistCss = ":host{display:block}";
4
+
5
+ const BLOCK = 'iv-wishlist';
6
+ const IvWishlist = class {
7
+ constructor(hostRef) {
8
+ registerInstance(this, hostRef);
9
+ }
10
+ buttonaddvalue = 'Add to wishlist';
11
+ buttonremovevalue = 'Remove from wishlist';
12
+ wishlistempty = 'Your wishlist is empty';
13
+ buttonaddtocartvalue = 'Add to cart';
14
+ viewwishlistvalue = 'View wishlist';
15
+ productdata = {};
16
+ usefields = 'id,title,price,image,url';
17
+ previewtype = 'modal';
18
+ // Lifecycle hooks
19
+ componentWillLoad() {
20
+ const stored = localStorage.getItem('wishlist');
21
+ if (stored)
22
+ state.wishlist = JSON.parse(stored);
23
+ state.wishlistLabels = {
24
+ removeLabel: this.buttonremovevalue,
25
+ addToCartLabel: this.buttonaddtocartvalue,
26
+ emptyMessage: this.wishlistempty
27
+ };
28
+ }
29
+ ;
30
+ // Getters
31
+ get itemFromWishlist() {
32
+ return state.wishlist.some(item => item.id === this.productdata['id']) || state.wishlist.length > 0;
33
+ }
34
+ ;
35
+ get buttonLabel() {
36
+ if (this.itemFromWishlist)
37
+ return this.buttonremovevalue || this.buttonaddvalue;
38
+ return this.buttonaddvalue;
39
+ }
40
+ ;
41
+ get requestedFields() {
42
+ let requestedFields = this.usefields.split(',').map(field => field.trim());
43
+ if (!requestedFields.includes('id'))
44
+ requestedFields.push('id');
45
+ if (!requestedFields.includes('title'))
46
+ requestedFields.push('title');
47
+ return requestedFields;
48
+ }
49
+ ;
50
+ // Methods
51
+ addToWishlist() {
52
+ state.loading = true;
53
+ const product = {};
54
+ this.requestedFields.forEach(field => {
55
+ if (this.productdata.hasOwnProperty(field))
56
+ product[field] = this.productdata[field];
57
+ });
58
+ state.wishlist = [...state.wishlist, product];
59
+ localStorage.setItem('wishlist', JSON.stringify(state.wishlist));
60
+ state.loading = false;
61
+ showToast(`${product['title']} added to wishlist`, 'success', 5000);
62
+ }
63
+ ;
64
+ render() {
65
+ return (h("div", { key: '5d8a44e136f2d457741f37a26fa36c7dc7f4d3b3', class: `${BLOCK}` }, h("iv-button", { key: 'a63ebbe9728a4a09118ead714e41146104e178e4', classmodifier: `${BLOCK}-add ${this.itemFromWishlist ? 'remove' : 'add'}`, onClick: () => this.itemFromWishlist ? removeFromWishlist(this.productdata['id']) : this.addToWishlist() }, h("span", { key: '131119d780844827b57ef9707fc29cd8bbab24bc', class: "inner-button", innerHTML: this.buttonLabel })), state.wishlist.length > 0 && (h("iv-button", { key: '33d2e98e7bd6d7eb5e18e05d77b25374742a5249', classmodifier: `${BLOCK}-view`, onClick: () => this.previewtype === 'modal' ? toggleModal('wishlist') : togglePullout('wishlist') }, h("span", { key: '71cb89109a52e53451d32740fc22fb0e2df623fa', class: "inner-button", innerHTML: this.viewwishlistvalue })))));
66
+ }
67
+ ;
68
+ };
69
+ ;
70
+ IvWishlist.style = ivWishlistCss;
71
+
72
+ export { IvWishlist as iv_wishlist };
73
+ //# sourceMappingURL=iv-wishlist.entry.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.esm.js","sources":["@lazy-external-entrypoint?app-data=conditional"],"sourcesContent":["export { setNonce } from '@stencil/core';\nimport { bootstrapLazy } from '@stencil/core';\nimport { globalScripts } from '@stencil/core/internal/app-globals';\nexport const defineCustomElements = async (win, options) => {\n if (typeof window === 'undefined') return undefined;\n await globalScripts();\n return bootstrapLazy([/*!__STENCIL_LAZY_DATA__*/], options);\n};\n"],"names":[],"mappings":";;;AAGY,MAAC,oBAAoB,GAAG,OAAO,GAAG,EAAE,OAAO,KAAK;AAC5D,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,OAAO,SAAS;AACrD,EAAE,MAAM,aAAa,EAAE;AACvB,EAAE,OAAO,aAAa,CAAC,4BAA4B,EAAE,OAAO,CAAC;AAC7D;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sw-in-grid-content.entry.esm.js","sources":["src/components/sw-in-grid-content/sw-in-grid-content.scss?tag=sw-in-grid-content","src/components/sw-in-grid-content/sw-in-grid-content.tsx"],"sourcesContent":["sw-in-grid-content {\n grid-column: span 2;\n grid-row: span 2;\n \n @media (max-width: 1024px) {\n grid-row: span unset;\n aspect-ratio: 4 / 5;\n }\n\n .promo-card {\n position: relative; \n width: 100%; \n height: 100%; \n min-height: 250px; \n padding: var(--promo-tile-padding)!important;\n \n @media (max-width: 1024px) {\n padding: calc(var(--promo-tile-padding) * var(--promo-tile-responsive-modifier));\n }\n\n [slot=\"media\"] {\n \n > img, > video {\n object-fit: cover;\n width: 100%; \n height: 100%; \n position: absolute; \n top: 0; \n left: 0; \n z-index: 1;\n }\n\n }\n\n [slot=\"text\"] {\n position: absolute; \n bottom: var(--promo-tile-padding);\n left: var(--promo-tile-padding);\n z-index: 2; \n display: flex; \n flex-direction: column; \n justify-content: flex-end;\n align-items: flex-start;\n height: 100%;\n width: 100%;\n \n @media (max-width: 1024px) {\n bottom: calc(var(--promo-tile-padding) * var(--promo-tile-responsive-modifier));\n left: calc(var(--promo-tile-padding) * var(--promo-tile-responsive-modifier));\n width: unset;\n }\n\n &.light-infill {\n \n a, h3, h5, p {\n color: white;\n }\n\n a::before {\n background: white;\n }\n\n }\n \n &.dark-infill {\n \n a, h3, h5, p {\n color: black;\n }\n\n a::before {\n background: black;\n }\n \n }\n \n a {\n position: relative;\n transition: all .5s;\n \n &::before {\n content: '';\n position: absolute;\n height: 2px;\n width: 0;\n bottom: -4px;\n left: 0;\n transition: all .5s;\n }\n \n &:hover {\n transition: all .5s;\n \n &::before {\n transition: all .5s;\n width: 100%;\n }\n\n }\n\n }\n\n h3, h5, a, p {\n padding: 0;\n margin: 0 0 var(--promo-tile-item-spacing) 0;\n font-family: var(--font-base);\n \n @media (max-width: 1024px) {\n margin: 0 0 calc(var(--promo-tile-item-spacing) * var(--promo-tile-responsive-modifier)) 0;\n }\n\n }\n\n h5 {\n font-size: var(--promo-tile-secondary-title-size);\n \n @media (max-width: 1024px) {\n font-size: calc(var(--promo-tile-secondary-title-size) * var(--promo-tile-responsive-modifier));\n }\n\n }\n\n h3 {\n font-size: var(--promo-tile-primary-title-size);\n \n @media (max-width: 1024px) {\n font-size: calc(var(--promo-tile-primary-title-size) * var(--promo-tile-responsive-modifier));\n }\n\n }\n\n p, a {\n font-size: var(--promo-tile-text-size);\n \n @media (max-width: 1024px) {\n font-size: calc(var(--promo-tile-text-size) * var(--promo-tile-responsive-modifier));\n }\n\n }\n \n }\n\n }\n\n}","import { Component, Host, h } from '@stencil/core';\n\n@Component({\n tag: 'sw-in-grid-content',\n styleUrl: 'sw-in-grid-content.scss',\n shadow: false,\n})\nexport class SwInGridContent {\n\n render() {\n \n return (\n <Host>\n <div class=\"promo-card dark-infill\">\n <slot name=\"media\"></slot>\n <slot name=\"text\"></slot>\n </div>\n </Host>\n );\n\n };\n\n};"],"names":[],"mappings":";;AAAA,MAAM,kBAAkB,GAAG,08GAA08G;;MCOx9G,eAAe,GAAA,MAAA;;;;IAE1B,MAAM,GAAA;QAEJ,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,wBAAwB,EAAA,EACjC,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,OAAO,EAAQ,CAAA,EAC1B,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,IAAI,EAAC,MAAM,GAAQ,CACrB,CACD;;;;AAKZ;;;;;"}
@@ -0,0 +1,18 @@
1
+ import { r as registerInstance, h, a as Host } from './index-Py50VI8u.js';
2
+
3
+ const swInGridContentCss = "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))}}";
4
+
5
+ const SwInGridContent = class {
6
+ constructor(hostRef) {
7
+ registerInstance(this, hostRef);
8
+ }
9
+ render() {
10
+ return (h(Host, { key: 'e7064f2a787e8ec86d6103a7e7441dbe2a22a42b' }, h("div", { key: 'a467852f7bfa451d5ea7880977a00c291e0c17cf', class: "promo-card dark-infill" }, h("slot", { key: '01c1e631948b41de1a5dce175e5870efad5c1879', name: "media" }), h("slot", { key: 'b503f909de51140d7976f32083b40882ad5d03a8', name: "text" }))));
11
+ }
12
+ ;
13
+ };
14
+ ;
15
+ SwInGridContent.style = swInGridContentCss;
16
+
17
+ export { SwInGridContent as sw_in_grid_content };
18
+ //# sourceMappingURL=sw-in-grid-content.entry.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sw-size-guide.entry.esm.js","sources":["src/components/sw-size-guide/sw-size-guide.scss?tag=sw-size-guide","src/components/sw-size-guide/sw-size-guide.tsx"],"sourcesContent":[".iv-sw-button {\n margin-bottom: 2.5rem;\n background: black;\n color: white;\n border: 1px solid transparent;\n outline: none;\n padding: 0.75rem 1.5rem;\n text-transform: uppercase;\n font-weight: 400;\n border-radius: unset;\n font-size: 1rem;\n cursor: pointer;\n transition: all .5s;\n \n &:hover {\n transition: all .5s;\n border-color: black;\n background: white;\n color: black;\n }\n\n}\n\n.table-wrapper {\n max-height: 420px;\n overflow-y: auto;\n background: #fff;\n border-radius: 0.5rem;\n box-shadow: 0 2px 8px rgba(0,0,0,0.03);\n scrollbar-color: #111 #fff;\n scrollbar-width: thin;\n\n &::-webkit-scrollbar {\n width: 10px;\n background: #fff;\n }\n\n &::-webkit-scrollbar-thumb {\n background: #111;\n border-radius: 0;\n }\n\n &::-webkit-scrollbar-track {\n background: #fff;\n border-radius: 0;\n }\n\n > table {\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n border-spacing: 0;\n color: #222;\n background: #fff;\n border-radius: 0.5rem;\n\n th, td {\n text-align: center;\n vertical-align: middle;\n padding: 1.25rem 0.75rem;\n border-bottom: 1px solid #ececec;\n color: #222;\n background: #fafafa;\n }\n\n th {\n position: sticky;\n top: 0;\n font-weight: 600;\n background: #f5f5f5;\n color: #111;\n\n > select {\n outline: 0;\n border-radius: 0;\n border: 0;\n position: relative;\n font-size: inherit;\n background-color: transparent;\n padding: .75em 1em;\n }\n\n }\n\n tr:last-child td {\n border-bottom: none;\n }\n\n tbody tr {\n transition: background 0.2s;\n &:hover {\n background: #f0f0f0;\n }\n }\n\n }\n \n} ","import { Component, h, Host, State, Element } from '@stencil/core';\n\n@Component({\n tag: 'sw-size-guide',\n styleUrl: 'sw-size-guide.scss',\n shadow: false,\n})\n\nexport class SwSizeGuide {\n\n @Element() el: HTMLElement;\n @State() sizeUnits: 'mm' | 'inches' = 'mm';\n\n\n private countryDataSets: { [country: string]: string[] } = {\n \"UK + Australia\": [\n \"F 1/2\", \"G\", \"G 1/2\", \"H\", \"H 1/2\", \"I\", \"I 1/2\", \"J\", \"J 1/2\", \"K\", \"K 1/2\", \"L\", \"L 1/2\", \"M\", \"M 1/2\", \"N\", \"N 1/2\", \"O\", \"O 1/2\", \"P\", \"P 1/2\", \"Q\", \"Q 1/2\", \"R\", \"R 1/2\", \"S\", \"S 1/2\", \"T\", \"T 1/2\", \"U\", \"U 1/2\", \"V\", \"V 1/2\", \"W\", \"W 1/2\", \"X\", \"x 1/2\", \"Y\", \"Z\", \"z 1/2\", \"-\"\n ],\n \"USA + Canada\": [\n \"3\", \"-\", \"3.5\", \"-\", \"4\", \"-\", \"4.5\", \"-\", \"5\", \"-\", \"5.5\", \"-\", \"6\", \"-\", \"6.5\", \"-\", \"7\", \"-\", \"7.5\", \"-\", \"8\", \"-\", \"8.5\", \"-\", \"9\", \"-\", \"9.5\", \"-\", \"10\", \"-\", \"10.5\", \"-\", \"11\", \"-\", \"11.5\", \"-\", \"12\", \"-\", \"12.5\", \"-\", \"13\"\n ],\n \"Europe\": [\n \"44\", \"45\", \"-\", \"46\", \"47\", \"-\", \"48\", \"-\", \"49\", \"50\", \"-\", \"51\", \"52\", \"-\", \"53\", \"-\", \"54\", \"55\", \"-\", \"56\", \"57\", \"-\", \"58\", \"59\", \"-\", \"60\", \"61\", \"-\", \"62\", \"-\", \"63\", \"64\", \"-\", \"65\", \"66\", \"-\", \"67\", \"-\", \"68\", \"69\", \"70\"\n ],\n \"China\": [\n \"6\", \"-\", \"7\", \"-\", \"8\", \"9\", \"-\", \"10\", \"-\", \"11\", \"12\", \"13\", \"-\", \"14\", \"-\", \"15\", \"-\", \"16\", \"17\", \"-\", \"18\", \"-\", \"19\", \"20\", \"-\", \"21\", \"-\", \"22\", \"-\", \"23\", \"-\", \"24\", \"25\", \"-\", \"26\", \"-\", \"-\", \"-\", \"-\"\n ],\n \"Singapore + Japan\": [\n \"4\", \"5\", \"-\", \"6\", \"7\", \"-\", \"8\", \"9\", \"-\", \"10\", \"11\", \"12\", \"-\", \"13\", \"-\", \"14\", \"-\", \"15\", \"16\", \"-\", \"17\", \"-\", \"18\", \"19\", \"-\", \"20\", \"-\", \"21\", \"22\", \"-\", \"23\", \"24\", \"-\", \"25\", \"-\", \"26\", \"-\", \"27\"\n ],\n \"Hong Kong\": [\n \"6\", \"-\", \"7.5\", \"-\", \"9\", \"-\", \"10\", \"-\", \"11\", \"12\", \"13\", \"-\", \"14\", \"-\", \"15\", \"-\", \"16\", \"-\", \"17\", \"-\", \"18\", \"19\", \"-\", \"20.5\", \"-\", \"22\", \"23\", \"-\", \"24\", \"25\", \"-\", \"26\", \"27.75\", \"-\", \"-\", \"-\", \"30\"\n ],\n \"Switzerland\": [\n \"4\", \"5.25\", \"-\", \"6.5\", \"-\", \"7.75\", \"-\", \"9\", \"-\", \"10\", \"-\", \"11.75\", \"12.75\", \"-\", \"14\", \"-\", \"15.25\", \"16.5\", \"-\", \"17.75\", \"-\", \"19\", \"20.5\", \"-\", \"22\", \"-\", \"23\", \"-\", \"25\", \"-\", \"27.75\", \"-\", \"-\", \"-\", \"30\"\n ]\n };\n\n componentDidLoad() {\n this.el.addEventListener('change', this.handleCountrySelectChange);\n };\n\n private get table(): HTMLTableElement | null {\n return this.el.querySelector('table');\n }\n\n private updateCountryData(e) {\n const country = e.target.value;\n const countryData = this.countryDataSets[country];\n if(this.table) {\n const tds = this.table.querySelectorAll('tbody td');\n for(let i = 2, j = 0; i < tds.length; i += 3, j++) {\n if(countryData && countryData[j] !== undefined) {\n tds[i].textContent = countryData[j];\n };\n };\n };\n };\n\n private handleCountrySelectChange = (event: Event) => {\n const target = event.target as HTMLSelectElement;\n if(target && target.id === 'country-select') this.updateCountryData(event);\n };\n\n private toggleSizeUnits = () => {\n this.sizeUnits = this.sizeUnits === 'mm' ? 'inches' : 'mm';\n };\n\n private convertToInches = (mm: string) => {\n const num = parseFloat(mm);\n return isNaN(num) ? mm : (num / 25.4).toFixed(2);\n };\n\n private convertTableUnits = () => {\n if(!this.table) return;\n const rows = this.table.querySelectorAll('tbody tr');\n rows.forEach(row => {\n const cells = row.querySelectorAll('td');\n if(cells.length >= 2) {\n if(this.sizeUnits === 'inches') {\n if(!cells[1].dataset.mm) cells[1].dataset.mm = cells[1].textContent || '';\n let [diameter, circumference] = (cells[1].dataset.mm || '').split('/').map(s => s.trim());\n if(circumference === undefined) {\n [diameter, circumference] = (cells[1].dataset.mm || '').split(' ').map(s => s.trim());\n }\n const dInch = this.convertToInches(diameter);\n const cInch = this.convertToInches(circumference);\n cells[1].textContent = `${dInch} / ${cInch}`;\n } else {\n if(cells[1].dataset.mm) {\n cells[1].textContent = cells[1].dataset.mm;\n };\n };\n };\n });\n };\n\n componentDidRender() {\n this.convertTableUnits();\n };\n\n render() {\n return (\n <Host>\n <button class=\"iv-sw-button\" onClick={this.toggleSizeUnits}>\n Showing Sizes In {this.sizeUnits}\n </button>\n <slot></slot>\n </Host>\n );\n };\n\n};"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ import { r as registerInstance, k as getElement, h, a as Host } from './index-Py50VI8u.js';
2
+
3
+ const swSizeGuideCss = ".iv-sw-button{margin-bottom:2.5rem;background:black;color:white;border:1px solid transparent;outline:none;padding:0.75rem 1.5rem;text-transform:uppercase;font-weight:400;border-radius:unset;font-size:1rem;cursor:pointer;transition:all 0.5s}.iv-sw-button:hover{transition:all 0.5s;border-color:black;background:white;color:black}.table-wrapper{max-height:420px;overflow-y:auto;background:#fff;border-radius:0.5rem;box-shadow:0 2px 8px rgba(0, 0, 0, 0.03);scrollbar-color:#111 #fff;scrollbar-width:thin}.table-wrapper::-webkit-scrollbar{width:10px;background:#fff}.table-wrapper::-webkit-scrollbar-thumb{background:#111;border-radius:0}.table-wrapper::-webkit-scrollbar-track{background:#fff;border-radius:0}.table-wrapper>table{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:0;color:#222;background:#fff;border-radius:0.5rem}.table-wrapper>table th,.table-wrapper>table td{text-align:center;vertical-align:middle;padding:1.25rem 0.75rem;border-bottom:1px solid #ececec;color:#222;background:#fafafa}.table-wrapper>table th{position:sticky;top:0;font-weight:600;background:#f5f5f5;color:#111}.table-wrapper>table th>select{outline:0;border-radius:0;border:0;position:relative;font-size:inherit;background-color:transparent;padding:0.75em 1em}.table-wrapper>table tr:last-child td{border-bottom:none}.table-wrapper>table tbody tr{transition:background 0.2s}.table-wrapper>table tbody tr:hover{background:#f0f0f0}";
4
+
5
+ const SwSizeGuide = class {
6
+ constructor(hostRef) {
7
+ registerInstance(this, hostRef);
8
+ }
9
+ get el() { return getElement(this); }
10
+ sizeUnits = 'mm';
11
+ countryDataSets = {
12
+ "UK + Australia": [
13
+ "F 1/2", "G", "G 1/2", "H", "H 1/2", "I", "I 1/2", "J", "J 1/2", "K", "K 1/2", "L", "L 1/2", "M", "M 1/2", "N", "N 1/2", "O", "O 1/2", "P", "P 1/2", "Q", "Q 1/2", "R", "R 1/2", "S", "S 1/2", "T", "T 1/2", "U", "U 1/2", "V", "V 1/2", "W", "W 1/2", "X", "x 1/2", "Y", "Z", "z 1/2", "-"
14
+ ],
15
+ "USA + Canada": [
16
+ "3", "-", "3.5", "-", "4", "-", "4.5", "-", "5", "-", "5.5", "-", "6", "-", "6.5", "-", "7", "-", "7.5", "-", "8", "-", "8.5", "-", "9", "-", "9.5", "-", "10", "-", "10.5", "-", "11", "-", "11.5", "-", "12", "-", "12.5", "-", "13"
17
+ ],
18
+ "Europe": [
19
+ "44", "45", "-", "46", "47", "-", "48", "-", "49", "50", "-", "51", "52", "-", "53", "-", "54", "55", "-", "56", "57", "-", "58", "59", "-", "60", "61", "-", "62", "-", "63", "64", "-", "65", "66", "-", "67", "-", "68", "69", "70"
20
+ ],
21
+ "China": [
22
+ "6", "-", "7", "-", "8", "9", "-", "10", "-", "11", "12", "13", "-", "14", "-", "15", "-", "16", "17", "-", "18", "-", "19", "20", "-", "21", "-", "22", "-", "23", "-", "24", "25", "-", "26", "-", "-", "-", "-"
23
+ ],
24
+ "Singapore + Japan": [
25
+ "4", "5", "-", "6", "7", "-", "8", "9", "-", "10", "11", "12", "-", "13", "-", "14", "-", "15", "16", "-", "17", "-", "18", "19", "-", "20", "-", "21", "22", "-", "23", "24", "-", "25", "-", "26", "-", "27"
26
+ ],
27
+ "Hong Kong": [
28
+ "6", "-", "7.5", "-", "9", "-", "10", "-", "11", "12", "13", "-", "14", "-", "15", "-", "16", "-", "17", "-", "18", "19", "-", "20.5", "-", "22", "23", "-", "24", "25", "-", "26", "27.75", "-", "-", "-", "30"
29
+ ],
30
+ "Switzerland": [
31
+ "4", "5.25", "-", "6.5", "-", "7.75", "-", "9", "-", "10", "-", "11.75", "12.75", "-", "14", "-", "15.25", "16.5", "-", "17.75", "-", "19", "20.5", "-", "22", "-", "23", "-", "25", "-", "27.75", "-", "-", "-", "30"
32
+ ]
33
+ };
34
+ componentDidLoad() {
35
+ this.el.addEventListener('change', this.handleCountrySelectChange);
36
+ }
37
+ ;
38
+ get table() {
39
+ return this.el.querySelector('table');
40
+ }
41
+ updateCountryData(e) {
42
+ const country = e.target.value;
43
+ const countryData = this.countryDataSets[country];
44
+ if (this.table) {
45
+ const tds = this.table.querySelectorAll('tbody td');
46
+ for (let i = 2, j = 0; i < tds.length; i += 3, j++) {
47
+ if (countryData && countryData[j] !== undefined) {
48
+ tds[i].textContent = countryData[j];
49
+ }
50
+ ;
51
+ }
52
+ ;
53
+ }
54
+ ;
55
+ }
56
+ ;
57
+ handleCountrySelectChange = (event) => {
58
+ const target = event.target;
59
+ if (target && target.id === 'country-select')
60
+ this.updateCountryData(event);
61
+ };
62
+ toggleSizeUnits = () => {
63
+ this.sizeUnits = this.sizeUnits === 'mm' ? 'inches' : 'mm';
64
+ };
65
+ convertToInches = (mm) => {
66
+ const num = parseFloat(mm);
67
+ return isNaN(num) ? mm : (num / 25.4).toFixed(2);
68
+ };
69
+ convertTableUnits = () => {
70
+ if (!this.table)
71
+ return;
72
+ const rows = this.table.querySelectorAll('tbody tr');
73
+ rows.forEach(row => {
74
+ const cells = row.querySelectorAll('td');
75
+ if (cells.length >= 2) {
76
+ if (this.sizeUnits === 'inches') {
77
+ if (!cells[1].dataset.mm)
78
+ cells[1].dataset.mm = cells[1].textContent || '';
79
+ let [diameter, circumference] = (cells[1].dataset.mm || '').split('/').map(s => s.trim());
80
+ if (circumference === undefined) {
81
+ [diameter, circumference] = (cells[1].dataset.mm || '').split(' ').map(s => s.trim());
82
+ }
83
+ const dInch = this.convertToInches(diameter);
84
+ const cInch = this.convertToInches(circumference);
85
+ cells[1].textContent = `${dInch} / ${cInch}`;
86
+ }
87
+ else {
88
+ if (cells[1].dataset.mm) {
89
+ cells[1].textContent = cells[1].dataset.mm;
90
+ }
91
+ ;
92
+ }
93
+ ;
94
+ }
95
+ ;
96
+ });
97
+ };
98
+ componentDidRender() {
99
+ this.convertTableUnits();
100
+ }
101
+ ;
102
+ render() {
103
+ return (h(Host, { key: 'd2d6cd4348287e2586d04d91cbd297844029881e' }, h("button", { key: '06daf7e683155850a4b922ca7595ef95b067005a', class: "iv-sw-button", onClick: this.toggleSizeUnits }, "Showing Sizes In ", this.sizeUnits), h("slot", { key: '0c2b287b5b1efe39b39ff89669f1884a4f2125bd' })));
104
+ }
105
+ ;
106
+ };
107
+ ;
108
+ SwSizeGuide.style = swSizeGuideCss;
109
+
110
+ export { SwSizeGuide as sw_size_guide };
111
+ //# sourceMappingURL=sw-size-guide.entry.esm.js.map
@@ -0,0 +1,12 @@
1
+ export declare class IvAccordion {
2
+ classmodifier?: string;
3
+ accordiontype: 'div' | 'section' | 'article';
4
+ accordionlabels: string;
5
+ showmultiple: boolean;
6
+ showfirst: boolean;
7
+ startingpanel: number;
8
+ layout: 'vertical' | 'horizontal';
9
+ activePanel: string;
10
+ private interimLabels;
11
+ render(): any;
12
+ }
@@ -0,0 +1,7 @@
1
+ export declare class IvBanner {
2
+ classmodifier?: string;
3
+ bannerurl?: string;
4
+ bannerbuttontext?: string;
5
+ bannertype: 'div' | 'section' | 'article';
6
+ render(): any;
7
+ }
@@ -0,0 +1,12 @@
1
+ import { EventEmitter } from '../../stencil-public-runtime';
2
+ export declare class IvButton {
3
+ type: string;
4
+ classmodifier?: string;
5
+ eventname?: string;
6
+ eventdetail?: string;
7
+ buttonClick?: (e?: MouseEvent) => void;
8
+ action: EventEmitter<any>;
9
+ el: HTMLElement;
10
+ handleClick: (e: MouseEvent) => void;
11
+ render(): any;
12
+ }
@@ -0,0 +1,15 @@
1
+ export declare class IvCard {
2
+ data: Record<string, any>;
3
+ fields?: string;
4
+ cardtype?: string;
5
+ classmodifier?: string;
6
+ buttontext?: string;
7
+ calltoaction: boolean;
8
+ addtocarttext?: string;
9
+ private allowedFields;
10
+ componentWillLoad(): void;
11
+ private generateImage;
12
+ private appendAddToCartButton;
13
+ private buildProductHref;
14
+ render(): any;
15
+ }
@@ -0,0 +1,3 @@
1
+ export declare class IvCarousel {
2
+ render(): any;
3
+ }
@@ -0,0 +1,26 @@
1
+ export declare class IvDynamicProducts {
2
+ type: 'CREATED' | 'BEST_SELLING' | 'PRICE' | 'TITLE' | 'RELEVANCE';
3
+ limit: number;
4
+ reversed: boolean;
5
+ componenttitle?: string;
6
+ titletag: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
7
+ collectionhandle: string;
8
+ carousel: boolean;
9
+ requestedfields: string;
10
+ calltoaction: boolean;
11
+ buttontext?: string;
12
+ addtocarttext?: string;
13
+ emptystring: string;
14
+ gridlayout?: string;
15
+ cachettl?: number;
16
+ stale?: boolean;
17
+ products: any[];
18
+ errorMsg: string;
19
+ staleData: boolean;
20
+ private errors;
21
+ handlePropChange(): void;
22
+ componentWillLoad(): Promise<void>;
23
+ private buildParams;
24
+ private loadProducts;
25
+ render(): any;
26
+ }
@@ -0,0 +1,29 @@
1
+ export declare class IvDynamicProductsCarousel {
2
+ type: 'CREATED' | 'BEST_SELLING' | 'PRICE' | 'TITLE' | 'RELEVANCE';
3
+ limit: number;
4
+ reversed: boolean;
5
+ componenttitle?: string;
6
+ titletag: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
7
+ collectionhandle: string;
8
+ requestedfields: string;
9
+ calltoaction: boolean;
10
+ buttontext?: string;
11
+ addtocarttext?: string;
12
+ emptystring: string;
13
+ cachettl?: number;
14
+ stale?: boolean;
15
+ products: any[];
16
+ errorMsg: string;
17
+ staleData: boolean;
18
+ page: number;
19
+ private readonly itemsPerPage;
20
+ private errors;
21
+ handlePropChange(): void;
22
+ componentWillLoad(): Promise<void>;
23
+ private buildParams;
24
+ private loadProducts;
25
+ private pagedProducts;
26
+ private next;
27
+ private prev;
28
+ render(): any;
29
+ }
@@ -0,0 +1,3 @@
1
+ export declare class IvFilters {
2
+ render(): any;
3
+ }
@@ -0,0 +1,12 @@
1
+ export declare class IvLayout {
2
+ sectionId?: string;
3
+ gridTemplateAreas?: string;
4
+ gap: string;
5
+ verticalAlign: string;
6
+ horizontalAlign: string;
7
+ wrapperTag: string;
8
+ classModifier?: string;
9
+ private handleNamedSlots;
10
+ private generateGridStyes;
11
+ render(): any;
12
+ }
@@ -0,0 +1,9 @@
1
+ export declare class IvLink {
2
+ classmodifier?: string;
3
+ linktype: 'inline' | 'wrapper' | 'nav' | 'button';
4
+ linkhref?: string;
5
+ linktarget: '_self' | '_blank' | '_parent' | '_top';
6
+ linkrel: string;
7
+ linkariaLabel?: string;
8
+ render(): any;
9
+ }
@@ -0,0 +1,3 @@
1
+ export declare class IvModal {
2
+ render(): any;
3
+ }