{"version":3,"names":["bannerSlottedCss","scopedStylesheet","addSlottedStyles","hostElement","styleSheet","componentTag","tagName","toLowerCase","styleElementId","document","getElementById","styleElement","createElement","id","innerHTML","replace","head","appendChild","setAttributesToSlottedElement","slotName","slottedElementTag","attributes","slotElement","shadowRoot","querySelector","removeEventListener","handleSlotChange","addEventListener","assignedNodes","flatten","length","targetElement","find","node","nodeName","forEach","attribute","setAttribute","name","value","bannerCss","AppLaunchBannerStyle0","Banner","this","mediaQueryObject","window","matchMedia","matches","dismiss","open","dismissed","emit","connectedCallback","isTabletOrMobile","slottedLinkDesktop","render","h","key","size","type","icon","CloseIcon","accessibleName","onClick","href","textContent","isLink","iconDx","DownloadIcon","targetBlank","ctaClicked","buttonCss","AppLaunchButtonStyle0","Button","Fragment","class","variant","target","rel","label","iconButtonCss","AppLaunchIconButtonStyle0","IconButton","modalCss","AppLaunchModalStyle0","ModalState","Breakpoint","Modal","Initial","innerWidth","Mobile","Tablet","Desktop","isOpen","handleWindowResize","bind","modalState","SliderFinished","breakpoint","handleRefresh","closeModal","close","handleAnimationStart","Started","handleSliderEndStart","SliderFinishing","sliderEnded","handleSliderEnd","handleRefreshStart","Refreshing","sliderRefreshed","Refreshed","slider","refreshSlider","AlleanzaLogo","mainTitle","subtitle","onAnimationEnd","iconSx","slides","onAnimationReady","onSlideChanged","event","slideChanged","detail","onSliderEndStart","onSliderEnd","ctaPrimary","ctaSecondary","ctaPrimaryTargetUrl","ctaSecondaryTargetUrl","ctaTertiaryTargetUrl","ctaTertiary","playStoreImageSrc","playStoreUrl","appStoreImageSrc","appStoreUrl","qrCodeSrc","qrCodeCta","onCtaPrimaryClicked","ctaPrimaryClicked","onCtaSecondaryClicked","ctaSecondaryClicked","onCtaTertiaryClicked","ctaTertiaryClicked","onPlayStoreClicked","playStoreClicked","onAppStoreClicked","appStoreClicked","RefreshIcon","jumpToLastSlide","sliderCss","AppLaunchSliderStyle0","Slider","sliderEndStart","currentItem","componentWillRender","animationReady","handleSlideChange","direction","handleSlideOut","currentTarget","sliderEnd","getSlideClass","slideIndex","currentIndex","disabled","ChevronIcon","style","transform","map","slide","index","title","paragraph","ArrowIcon","imageSrc","src","alt","imageAlt","item","appStoreButtonCss","AppLaunchStoreButtonStyle0","AppStoreButton","textButtonCss","AppLaunchTextButtonStyle0","TextButton","componentDidLoad","setTargetBlankToSlottedAnchor"],"sources":["src/components/banner/banner-slotted.css","src/utils/utils.ts","src/components/banner/banner.css?tag=app-launch-banner&encapsulation=shadow","src/components/banner/banner.tsx","src/components/button/button.css?tag=app-launch-button&encapsulation=shadow","src/components/button/button.tsx","src/components/button/icon-button/icon-button.css?tag=app-launch-icon-button&encapsulation=shadow","src/components/button/icon-button/icon-button.tsx","src/components/modal/modal.css?tag=app-launch-modal&encapsulation=shadow","src/components/modal/modal.tsx","src/components/slider/slider.css?tag=app-launch-slider&encapsulation=shadow","src/components/slider/slider.tsx","src/components/button/app-store-button/app-store-button.css?tag=app-launch-store-button&encapsulation=shadow","src/components/button/app-store-button/app-store-button.tsx","src/components/button/text-button/text-button.css?tag=app-launch-text-button&encapsulation=shadow","src/components/button/text-button/text-button.tsx"],"sourcesContent":["[slot='body-desktop'] a,\n[slot='body-mobile'] a {\n color: var(--grid-action-text-button-primary);\n text-decoration: underline;\n}\n[slot='body-desktop'] a:hover,\n[slot='body-mobile'] a:hover {\n color: var(--grid-action-text-button-primary-hover);\n}\n","export function addSlottedStyles(hostElement: HTMLElement, styleSheet: string) {\n const componentTag = hostElement.tagName.toLowerCase();\n const styleElementId = `${componentTag}-style`;\n\n if (document.getElementById(styleElementId)) {\n return;\n }\n\n const styleElement = document.createElement('style');\n styleElement.id = styleElementId;\n styleElement.innerHTML = styleSheet.replace(/\\[/g, `${componentTag} [`);\n document.head.appendChild(styleElement);\n}\n\nexport function setAttributesToSlottedElement({\n hostElement,\n slotName,\n slottedElementTag,\n attributes,\n}: {\n hostElement: HTMLElement;\n slotName?: string;\n slottedElementTag: string;\n attributes: { name: string; value: string }[];\n}) {\n let slotElement: HTMLSlotElement;\n if (slotName) {\n slotElement = hostElement.shadowRoot.querySelector(`[name=\"${slotName}\"]`);\n } else {\n slotElement = hostElement.shadowRoot.querySelector('slot');\n }\n if (slotElement) {\n slotElement.removeEventListener('slotchange', handleSlotChange);\n slotElement.addEventListener('slotchange', handleSlotChange);\n }\n\n function handleSlotChange() {\n const assignedNodes = slotElement.assignedNodes({ flatten: true });\n if (!assignedNodes || assignedNodes.length < 1) return;\n const targetElement = assignedNodes.find(node => {\n return node.nodeName.toLowerCase() === slottedElementTag;\n });\n if (!targetElement) return;\n attributes.forEach(attribute => {\n (targetElement as HTMLElement).setAttribute(attribute.name, attribute.value);\n });\n }\n}\n",":host,\n:host * {\n box-sizing: border-box;\n}\n\n:host {\n position: relative;\n z-index: 91;\n}\n\n:host(:not([open])) {\n display: none;\n}\n\n#banner {\n display: flex;\n justify-content: center;\n min-height: 56px;\n padding: 0px 120px;\n position: relative;\n overflow: hidden;\n background: var(--grid-background-color-01);\n}\n\n#banner::before,\n#banner::after {\n content: '';\n display: block;\n position: absolute;\n border-radius: 50%;\n z-index: 0;\n}\n\n#banner::before {\n width: 380px;\n aspect-ratio: 1;\n background: var(--grid-background-product-04);\n top: 0;\n left: -244px;\n}\n\n#banner::after {\n width: 112px;\n aspect-ratio: 1;\n background: var(--grid-background-color-09);\n right: -36px;\n top: -45px;\n}\n\n#content-wrapper {\n display: flex;\n align-items: center;\n gap: 24px;\n width: 100%;\n z-index: 1;\n position: relative;\n}\n\n::slotted([slot='title']) {\n color: var(--grid-content-primary) !important;\n font: var(--label-3) !important;\n max-width: 180px;\n padding: 8px 0 !important;\n}\n\n#body {\n flex: 1;\n padding-right: 40px;\n}\n\n::slotted([slot='body-desktop']),\n::slotted([slot='body-mobile']) {\n color: var(--grid-content-primary) !important;\n font: var(--body-3) !important;\n padding: 8px 0 !important;\n}\n\n#close {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 1;\n}\n\n@media screen and (max-width: 1439px) {\n #banner {\n padding-left: 30px;\n padding-right: 88px;\n }\n}\n\n@media screen and (max-width: 989px) {\n #banner {\n padding-right: 72px;\n }\n\n ::slotted([slot='title']) {\n max-width: 148px;\n font: var(--label-5) !important;\n }\n\n ::slotted([slot='body-desktop']),\n ::slotted([slot='body-mobile']) {\n font-size: 12px;\n }\n}\n\n@media screen and (max-width: 767px) {\n #banner {\n padding-left: 16px;\n padding-right: 64px;\n }\n\n #content-wrapper {\n flex-direction: column;\n align-items: flex-start;\n gap: 0;\n }\n\n ::slotted([slot='title']) {\n max-width: 100%;\n padding-bottom: 4px !important;\n }\n\n #body {\n padding-right: 0;\n }\n\n ::slotted([slot='body-desktop']),\n ::slotted([slot='body-mobile']) {\n padding: 0 !important;\n font: var(--body-4) !important;\n }\n}\n","import { Component, h, Method, Prop, Event, EventEmitter, Element, State } from '@stencil/core';\nimport CloseIcon from '../../assets/icons/close.svg';\nimport DownloadIcon from '../../assets/icons/download-outline.svg';\nimport scopedStylesheet from './banner-slotted.css';\nimport { addSlottedStyles } from '../../utils/utils';\n\n/**\n * @slot title - Slot for the title, must be a heading element\n * @slot body-desktop - Slot for the body content on desktop screen sizes, can be one or multiple
elements\n * @slot body-mobile - Slot for the body content on mobile screen sizes, can be one or multiple
elements\n * @slot cta-desktop - Slot for the link to be rendered on desktop, must be a valid tag\n * @slot cta-mobile - Slot for the link to be rendered on mobile, must be a valid tag\n */\n\n@Component({\n tag: 'app-launch-banner',\n styleUrl: 'banner.css',\n shadow: true,\n})\nexport class Banner {\n private mediaQueryObject = window.matchMedia('(max-width: 989px)');\n private slottedLinkDesktop: HTMLElement;\n\n @Prop({ reflect: true, mutable: true }) open: boolean = false;\n\n @State() isTabletOrMobile = this.mediaQueryObject.matches;\n\n @Method() async dismiss() {\n this.open = false;\n this.dismissed.emit();\n }\n\n @Event() dismissed: EventEmitter Non sei ancora nostro Cliente? Non sei ancora nostro Cliente?\n {this.mainTitle}\n
\n \n Scopri questi e molti altri contenuti scaricando l'app Alleanza.\n
\n {this.qrCodeCta}
\n \n
\n \n );\n }\n}\n",":host,\n:host *,\n:host *::after,\n:host *::before {\n box-sizing: border-box;\n}\n\n#button {\n min-height: 48px;\n padding: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: none;\n cursor: pointer;\n position: relative;\n}\n\n#button:hover #label,\n#button:hover ::slotted(*) {\n color: var(--grid-action-text-button-primary-hover) !important;\n}\n\n::slotted(a)::before {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n}\n\n#label {\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n#label,\n::slotted(*) {\n color: var(--grid-action-text-button-primary) !important;\n font: var(--text-link-underline) !important;\n text-decoration: underline;\n}\n\n.icon {\n width: 24px;\n height: 24px;\n display: block;\n}\n\n.icon svg {\n width: 24px;\n height: 24px;\n}\n\n.icon svg * {\n fill: var(--grid-action-text-button-primary);\n}\n\n#button:hover .icon svg * {\n fill: var(--grid-action-text-button-primary-hover);\n}\n","import { Component, Fragment, h, Prop, Element } from '@stencil/core';\nimport { setAttributesToSlottedElement } from '../../../utils/utils';\n\n@Component({\n tag: 'app-launch-text-button',\n styleUrl: 'text-button.css',\n shadow: true,\n})\nexport class TextButton {\n @Prop() label: string;\n @Prop() isLink?: boolean;\n @Prop() href?: string;\n @Prop() iconDx?: string;\n @Prop() iconSx?: string;\n @Prop() targetBlank?: boolean;\n\n @Element() hostElement: HTMLElement;\n\n componentDidLoad() {\n if (this.isLink && this.targetBlank) {\n this.setTargetBlankToSlottedAnchor();\n }\n }\n\n private setTargetBlankToSlottedAnchor() {\n setAttributesToSlottedElement({\n hostElement: this.hostElement,\n slottedElementTag: 'a',\n attributes: [\n { name: 'target', value: '_blank' },\n { name: 'rel', value: 'noreferrer noopener' },\n ],\n });\n }\n\n render() {\n return (\n