@nuskin/react-mysite-elements 1.4.2-cx115-7829.1 → 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["/gitlab-runner-data/builds/nextgen-development/mysite/npm/react-mysite-elements/dist/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../src/index.ts","../src/common/card/NsProductCard.tsx","../src/common/card/styles/NsProductCard.Styled.tsx","../src/common/carousel/NsProductCarousel.tsx","../src/common/carousel/NsProductCarousel.styled.ts","../src/common/carousel/ProductTabCarousel.tsx","../src/common/Nav-Category-Navigation/NsCategoryNavigation.tsx","../src/common/Nav-Category-Navigation/NsCategoryNavigation.styled.tsx","../src/common/carousel/ProductTabCarousel.styled.tsx","../src/common/headers/MysiteHero.tsx","../src/common/headers/MysiteHero.styled.tsx","../src/common/icon/icons/PlaceholderImage.tsx","../src/common/icon/icons/ArrowDownIcon.tsx","../src/common/utils/gtmTracking.ts"],"names":["zt","Object","create","ee","defineProperty","Ht","getOwnPropertyDescriptor","$t","getOwnPropertyNames","Dt","getPrototypeOf","At","prototype","hasOwnProperty","se","e","t","exports","Wt","o","get","enumerable","ye","i","a","call","$","__esModule","value","_t","require_ReactPropTypesSecret","__commonJSMin","module","ReactPropTypesSecret","require_factoryWithThrowingShims","emptyFunction","emptyFunctionWithReset","Ge","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","err","Error","name","isRequired","getShim","ReactPropTypes","array","bigint","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","require_prop_types","Je","ReactIs","throwOnDirectAccess","index_exports","__export","MysiteHero","NsCategoryNavigation","NsProductCard","NsProductCard_default","ProductCarousel","ProductCardCarousel","ProductTabCarousel","ProductTabCarousel_default","__toCommonJS","import_react","require","import_foundation_ui_components","import_foundation_theme","PriceComponent","L","styled","ProductCardContainer","isMobile","ImageContainer","bgColor","DefaultImage","ProductTitle","ProductBadgeContainer","AddToCartButton","disabled","isHovered","CartIcon","import_material","import_jsx_runtime","productTitle","imageDetails","className","button","onCardClick","productStatusBadge","directSellerBadge","mySitePriceComponent","testId","Ie","useState","isButtonHovered","setIsButtonHovered","Ne","useMediaQuery","handleImageError","target","noImageFallback","fallbackImage","src","v","jsxs","onClick","tabIndex","children","jsx","onError","imageSrc","Be","NsImage","alt","imageAlt","areaLabel","width","title","showButton","buttonText","stopPropagation","onMouseEnter","onMouseLeave","height","viewBox","fill","xmlns","fillRule","clipRule","d","import_react_slick","import_useMediaQuery","import_Box","SlickContainer","w","_","Box","ScrollableContainer","CardList","ControlsContainer","ViewAllWrapper","$isMobile","ProductCountWrapper","ArrowsWrapper","$isDisabled","Scrollablewrapper","CustomTypography","Fe","NsTypography","ViewAllLink","$disabled","EmptyProductCategories","ControlsHeaderRow","ProductInfoWrapper","CategoryNameWrapper","entries","renderEntry","settings","showControlButtons","allEntryLabel","allEntryLink","categoryName","emptyProductMessage","productsCountLabel","isInitialDataLoading","history","sliderRef","Z","useRef","Ye","prev","useCallback","current","slickPrev","next","slickNext","renderProductEntry","entry","index","h","directSeller","sliderSettings","dots","infinite","speed","slidesToShow","Math","min","length","slidesToScroll","swipe","draggable","arrows","responsive","breakpoint","shouldShowNavigation","renderCarouselContent","map","Ve","Slider","ref","variant","preventDefault","push","qe","NsCarouselControl","viewAllLabel","viewAllUrl","React","import_Tabs","import_Tab","import_prop_types","et","NsCategoryNavigationContainer","tt","div","TabPanel","other","z","role","hidden","id","pe","propTypes","oe","itemArray","controlledValue","onChange","it","internalValue","setInternalValue","rt","at","Tabs","orientation","event","newValue","item","nt","Tab","label","categoryId","findIndex","content","getMinHeight","$hasCategories","ProductTabCarouselContainer","D","TabsContainer","ContentContainer","LoadingContainer","NoTabsContainer","SpinnerContainer","fetchCategories","fetchProducts","showCustomCategory","emptyProductTabs","getCategoryId","categories","mt","k","isLoadingInitialData","setIsLoadingInitialData","setCategories","isCategoriesLoaded","setIsCategoriesLoaded","selectedTab","setSelectedTab","products","setProducts","loading","setLoading","shouldShowSpinner","setShouldShowSpinner","checkForExistingSpinners","existingSpinners","document","querySelectorAll","useEffect","then","data","finally","cat","N","xt","NsSpinner","getContactTextStyles","hasWhiteBackground","fontSize","fontStyle","fontWeight","lineHeight","letterSpacing","color","textDecoration","getSocialTitleStyles","textTransform","paddingLeft","getSocialIconsStyles","display","flexDirection","gap","alignItems","getContactTextMobileStyles","paddingBottom","wordBreak","overflowWrap","getSocialTitleMobileStyles","marginBottom","transition","opacity","transform","MysiteHeroContainer","F","ae","j","bannerProps","isCircularImage","backgroundClip","background","backgroundColor","position","overflow","willChange","backfaceVisibility","top","left","right","boxShadow","paddingTop","justifyContent","fontFamily","headlineFont","padding","objectFit","objectPosition","marginLeft","marginRight","boxSizing","whiteSpace","textOverflow","paragraphFont","WebkitBoxOrient","WebkitLineClamp","MysiteHeroContainerMobile","paddingRight","maxHeight","bottom","pointerEvents","BadgeContainer","Badge","backdropFilter","borderRadius","border","minHeight","ToggleButtonMobile","cursor","margin","StyledSpan","ImgTabIndex","ContactLink","BadgeValue","PlaceholderImage","R","Pt","sx","ArrowDownIcon","xe","trackGTMEvent","eventData","window","url","href","updatedEventData","prefix","includes","dataLayer","console","error","renderImageContent","placeholderClass","n","Q","p","renderBadges","showBadges","expirationDate","totalSavings","badgeClass","renderMobileContent","isScrolled","renderSocialMediaIcons","shopTitle","socialTitleText","email","phone","Typography","trim","Fragment","renderContactLink","renderDesktopContent","shopDescription","Tooltip","arrow","checkIfImageIsCircular","Promise","resolve","reject","imageContext","Image","crossOrigin","onload","canvas","createElement","context","getContext","drawImage","isCircular","getImageData","every","corner","Array","slice","onerror","isWhiteOrNearWhite","hex","replace","toLowerCase","test","fullHex","split","char","join","r","Number","parseInt","substring","g","b","threshold","createContactClickHandler","contactType","contactValue","contact_type","contact_value","click_element","onKeyDown","key","globalThis","protocol","handlers","socialIcons","B","setIsScrolled","isDescriptionExpanded","setIsDescriptionExpanded","setHasWhiteBackground","isImageCircular","setIsImageCircular","toggleDescription","debounceTimeout","lastScrollY","scrollY","currentScrollState","isTransitioning","lastUpdateTime","updateScrollState","newState","now","Date","clearTimeout","setTimeout","scrollTo","behavior","handleScroll","currentScrollY","abs","scrollingDown","scrollDownThreshold","scrollUpThreshold","initializeState","initialScrollY","shouldStartCompact","rafId","lastRafTime","throttledScrollHandler","requestAnimationFrame","addEventListener","passive","removeEventListener","cancelAnimationFrame","useMemo","icon","social_platform","type","social_url","open","NsLink","containerClass","getCharacterLimit","innerWidth","shouldShowToggle"],"mappings":"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","sourcesContent":["\"use strict\";var zt=Object.create;var ee=Object.defineProperty;var Ht=Object.getOwnPropertyDescriptor;var $t=Object.getOwnPropertyNames;var Dt=Object.getPrototypeOf,At=Object.prototype.hasOwnProperty;var se=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Wt=(e,t)=>{for(var o in t)ee(e,o,{get:t[o],enumerable:!0})},ye=(e,t,o,i)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let a of $t(t))!At.call(e,a)&&a!==o&&ee(e,a,{get:()=>t[a],enumerable:!(i=Ht(t,a))||i.enumerable});return e};var $=(e,t,o)=>(o=e!=null?zt(Dt(e)):{},ye(t||!e||!e.__esModule?ee(o,\"default\",{value:e,enumerable:!0}):o,e)),_t=e=>ye(ee({},\"__esModule\",{value:!0}),e);var Ge=se((vo,Ze)=>{\"use strict\";var Ot=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\";Ze.exports=Ot});var Je=se((ko,Ke)=>{\"use strict\";var Vt=Ge();function Qe(){}function Ue(){}Ue.resetWarningCache=Qe;Ke.exports=function(){function e(i,a,l,r,d,s){if(s!==Vt){var c=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw c.name=\"Invariant Violation\",c}}e.isRequired=e;function t(){return e}var o={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:Ue,resetWarningCache:Qe};return o.PropTypes=o,o}});var et=se((Po,Xe)=>{\"use strict\";Xe.exports=Je()();var So,To});var Xt={};Wt(Xt,{MysiteHero:()=>he,NsCategoryNavigation:()=>ie,NsProductCard:()=>te,ProductCarousel:()=>G,ProductTabCarousel:()=>ht});module.exports=_t(Xt);var Ie=require(\"react\"),Be=require(\"@nuskin/foundation-ui-components\");var L=require(\"@nuskin/foundation-theme\"),we=(0,L.styled)(\"div\")`\n width: 200px;\n text-align: left;\n margin-bottom: 5px;\n`,Ce=(0,L.styled)(\"button\")`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n width: 240px;\n height: ${e=>e.isMobile?\"410px\":\"513px\"};\n overflow: hidden;\n cursor: pointer;\n border: 1px solid #ededed;\n background: var(--color-primary-n-10-primary-white, #fff);\n`,ve=(0,L.styled)(\"div\")`\n width: '240px';\n height: '240px';\n background: ${e=>e.bgColor??\"#f5f5f5\"};\n border-radius: 8px;\n overflow: hidden;\n margin-bottom: 0;\n display: flex;\n align-items: normal;\n justify-content: center;\n position: relative;\n @media (max-width: 560px) {\n width: 200px;\n height: 200px;\n align-items: unset;\n }\n`,ke=(0,L.styled)(\"img\")`\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 8px;\n display: block;\n`,Se=(0,L.styled)(\"div\")`\n width: 200px;\n margin-top: 16px;\n max-height: 66px;\n text-align: left;\n font-size: 16px;\n font-family: 'Inter', sans-serif;\n font-weight: 400;\n line-height: 22px;\n overflow: hidden;\n color: #666;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n text-overflow: ellipsis;\n @media (max-width: 560px) {\n font-size: 14px;\n font-style: normal;\n font-weight: 600;\n margin-top: 5px;\n max-height: 54px;\n line-height: 18px;\n }\n`,de=(0,L.styled)(\"div\")`\n width: 200px;\n text-align: left;\n margin-bottom: 12px;\n @media (max-width: 560px) {\n margin-bottom: 8px;\n }\n`,Te=(0,L.styled)(\"button\")`\n width: 200px;\n height: 40px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n gap: 10px;\n font-family: 'Inter', sans-serif;\n font-size: 14px;\n font-weight: 600;\n line-height: 20px;\n letter-spacing: 0.14px;\n text-transform: none;\n justify-content: flex-start;\n padding-left: 31px;\n overflow: hidden;\n white-space: normal;\n word-break: break-word;\n overflow-wrap: break-word;\n text-overflow: ellipsis;\n margin-top: 8px;\n margin-bottom: 10px;\n -webkit-appearance: none;\n -webkit-tap-highlight-color: transparent;\n\n color: ${e=>e.disabled?\"#999\":\"#fff\"};\n background-color: ${e=>e.disabled?\"#e0e0e0\":!e.isMobile&&e.isHovered?\"#888\":\"#000\"};\n border: ${e=>e.disabled?\"1px solid #ccc\":\"none\"};\n cursor: ${e=>e.disabled?\"not-allowed\":\"pointer\"};\n opacity: ${e=>e.disabled?.6:1};\n transition: ${e=>e.isMobile?\"none\":\"all 0.3s ease\"};\n\n @media (max-width: 560px) {\n margin: 5px 0;\n }\n`,Pe=(0,L.styled)(\"span\")`\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n display: inline-block;\n background: none;\n transition: all 0.3s ease;\n opacity: ${e=>e.disabled?.5:1};\n`;var Ne=require(\"@mui/material\"),v=require(\"react/jsx-runtime\"),jt=({productTitle:e,imageDetails:t,className:o,button:i,onCardClick:a,productStatusBadge:l,directSellerBadge:r,mySitePriceComponent:d,testId:s})=>{let[c,u]=(0,Ie.useState)(!1),b=(0,Ne.useMediaQuery)(\"(max-width: 560px)\"),m=C=>{let M=C.target,P=t?.fallbackImage;P&&M.src!==P&&(M.src=P)};return(0,v.jsxs)(Ce,{className:o,onClick:a,tabIndex:0,\"data-testid\":\"product-card\",isMobile:b,children:[(0,v.jsx)(ve,{bgColor:t?.bgColor,onError:m,children:t?.imageSrc?(0,v.jsx)(Be.NsImage,{\"data-testid\":s??\"test-product-image\",className:t.className??\"\",src:t.imageSrc,alt:t.imageAlt,\"aria-label\":t.areaLabel??t.imageAlt,width:\"100%\"}):(0,v.jsx)(ke,{alt:\"\"})}),(0,v.jsx)(Se,{title:e,\"data-testid\":\"product-title\",children:e}),r&&(0,v.jsx)(de,{children:r}),(0,v.jsx)(de,{children:l}),(0,v.jsx)(we,{children:d}),i?.showButton&&(0,v.jsxs)(Te,{tabIndex:0,\"aria-roledescription\":\":\",\"aria-label\":i.buttonText||\"ADD TO CART\",\"data-testid\":\"add-to-cart-button\",disabled:i?.disabled??!1,isMobile:b,isHovered:c,onClick:C=>{C.stopPropagation(),i?.disabled||i.onClick?.()},onMouseEnter:()=>{!b&&!i?.disabled&&u(!0)},onMouseLeave:()=>{b||u(!1)},children:[(0,v.jsx)(Pe,{className:\"cart-icon\",disabled:i?.disabled,children:(0,v.jsx)(\"svg\",{width:\"24\",height:\"22\",viewBox:\"0 0 24 22\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",children:(0,v.jsx)(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M0 1.86358C0 1.26109 0.488416 0.772675 1.09091 0.772675H3.48173C4.51054 0.772675 5.39955 1.49136 5.61511 2.49733L5.71309 2.95456H22.9091C23.245 2.95456 23.5622 3.10933 23.7689 3.37411C23.9757 3.63889 24.0489 3.98415 23.9674 4.31005L22.4053 10.5583C21.9197 12.5009 20.1743 13.8636 18.172 13.8636H8.05068L8.28444 14.9546H20.7273C21.3298 14.9546 21.8182 15.443 21.8182 16.0455C21.8182 16.648 21.3298 17.1364 20.7273 17.1364H19.6364H8.18182H7.40252C6.88811 17.1364 6.4436 16.777 6.33582 16.274L3.76449 4.27405L3.48173 2.95449H1.09091C0.488416 2.95449 0 2.46608 0 1.86358ZM8.18182 17.1364C6.97683 17.1364 6 18.1132 6 19.3182C6 20.5232 6.97683 21.5 8.18182 21.5C9.3868 21.5 10.3636 20.5232 10.3636 19.3182C10.3636 18.1132 9.3868 17.1364 8.18182 17.1364ZM19.6364 17.1364C18.4314 17.1364 17.4545 18.1132 17.4545 19.3182C17.4545 20.5232 18.4314 21.5 19.6364 21.5C20.8413 21.5 21.8182 20.5232 21.8182 19.3182C21.8182 18.1132 20.8413 17.1364 19.6364 17.1364ZM7.58317 11.6818H18.172C19.1732 11.6818 20.0459 11.0005 20.2887 10.0292L21.5119 5.13638H6.18062L7.58317 11.6818Z\",fill:i?.disabled?\"#999\":\"#ffffff\"})})}),i.buttonText||\"ADD TO CART\"]})]})},te=jt;var Z=require(\"react\"),Ve=$(require(\"react-slick\")),Ye=$(require(\"@mui/material/useMediaQuery\"));var qe=require(\"@nuskin/foundation-ui-components\");var w=require(\"@nuskin/foundation-theme\"),_=$(require(\"@mui/material/Box\")),Fe=require(\"@nuskin/foundation-ui-components\"),Re=(0,w.styled)(_.default)`\n padding: 30px 0 60px;\n width: 100%;\n margin: auto;\n margin-top: 50px;\n position: relative;\n\n .slick-list {\n padding-left: 24px;\n padding-right: 24px;\n }\n .slick-slide {\n display: flex;\n justify-content: center;\n padding: 0 12px;\n box-sizing: border-box;\n }\n .slick-prev,\n .slick-next {\n display: none !important;\n }\n\n @media (max-width: 1200px) {\n max-width: 1024px;\n .slick-list {\n padding-left: 12px;\n padding-right: 12px;\n }\n .slick-slide {\n padding: 0 6px;\n }\n }\n @media (max-width: 700px) {\n max-width: 100vw;\n padding: 10px 0 50px;\n .slick-list {\n padding-left: 4px;\n padding-right: 4px;\n }\n .slick-slide {\n padding: 0 2px;\n }\n }\n @media (max-width: 560px) {\n padding: 10px 0 10px;\n margin-top: 25px;\n }\n`,Me=(0,w.styled)(\"div\")`\n overflow-x: auto;\n display: flex;\n scroll-snap-type: x mandatory;\n -webkit-overflow-scrolling: touch;\n gap: 16px;\n padding: 0 8px 16px;\n width: 100%;\n box-sizing: border-box;\n\n &::-webkit-scrollbar {\n height: 6px;\n }\n\n &::-webkit-scrollbar-thumb {\n background: #007bff;\n border-radius: 10px;\n }\n`,Ee=(0,w.styled)(\"div\")`\n display: flex;\n scroll-snap-align: start;\n justify-content: center;\n gap: 15px;\n`,Le=(0,w.styled)(_.default)`\n position: absolute;\n bottom: calc(100% + 1px);\n right: 1px;\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n box-sizing: border-box;\n`,ze=(0,w.styled)(_.default)`\n display: flex;\n align-items: center;\n margin-left: auto;\n margin-right: ${({$isMobile:e})=>e?0:\"24px\"};\n\n @media (max-width: 560px) {\n margin-left: 0;\n order: 2;\n }\n`,He=(0,w.styled)(_.default)`\n display: none;\n\n @media (max-width: 560px) {\n color: #666666;\n font-family: Inter;\n font-size: 14px !important;\n font-style: normal;\n font-weight: 600;\n line-height: 18px;\n display: flex;\n align-items: center;\n order: 1;\n }\n`,$e=(0,w.styled)(_.default)`\n display: flex;\n align-items: center;\n opacity: ${({$isDisabled:e})=>e?.3:1};\n pointer-events: ${({$isDisabled:e})=>e?\"none\":\"auto\"};\n transition: opacity 0.3s ease;\n\n .carousal-prev-button,\n .carousal-next-button {\n transition: all 0.3s ease;\n border: 2px solid #000000;\n border-radius: 3px;\n padding: 9px;\n cursor: pointer;\n\n svg {\n transition: all 0.3s ease;\n }\n\n svg polyline {\n stroke: #000000;\n fill: none;\n }\n\n &:hover {\n background-color: #f5f5f5;\n border: 2px solid #ddd;\n\n svg {\n opacity: 0.5;\n }\n\n svg polyline {\n stroke: #000000;\n fill: none;\n }\n }\n }\n\n @media (max-width: 560px) {\n display: none;\n }\n`,go=(0,w.styled)(\"div\")`\n @media (max-width: 560px) {\n overflow-y: hidden;\n scrollbar-width: thin;\n scrollbar-color: #007bff #eee;\n &::-webkit-scrollbar {\n width: 8px;\n }\n &::-webkit-scrollbar-track {\n background: #eee;\n }\n &::-webkit-scrollbar-thumb {\n background-color: red;\n border-radius: 8px;\n border: 2px solid #eee;\n }\n }\n`,De=(0,w.styled)(Fe.NsTypography)`\n color: #666666;\n font-family: Inter;\n font-size: 16px;\n font-style: normal;\n font-weight: 600;\n line-height: 22px;\n @media (max-width: 560px) {\n margin: 0 3px;\n }\n`,Ae=(0,w.styled)(\"a\")`\n color: ${({$disabled:e})=>e?\"#999999\":\"#000000\"};\n font-family: Inter, sans-serif;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 22px;\n text-decoration: none;\n border-bottom: 1px solid ${({$disabled:e})=>e?\"#999999\":\"#000000\"};\n padding-bottom: 4px;\n transition: all 0.3s ease;\n cursor: ${({$disabled:e})=>e?\"not-allowed\":\"pointer\"};\n pointer-events: ${({$disabled:e})=>e?\"none\":\"auto\"};\n opacity: ${({$disabled:e})=>e?.5:1};\n\n @media (max-width: 560px) {\n font-size: 14px;\n line-height: 18px;\n }\n\n &:hover {\n color: ${({$disabled:e})=>e?\"#999999\":\"#666666\"};\n border-bottom: 1px solid ${({$disabled:e})=>e?\"#999999\":\"#666666\"};\n cursor: ${({$disabled:e})=>e?\"not-allowed\":\"pointer\"};\n }\n`,We=(0,w.styled)(\"div\")`\n padding-top: 20px;\n font-size: 20px;\n text-align: center;\n`,_e=(0,w.styled)(\"div\")`\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n`,je=(0,w.styled)(\"div\")`\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n`,Oe=(0,w.styled)(\"div\")`\n font-family: 'Lora';\n font-weight: 400;\n font-size: 22px;\n margin-left: 16px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-bottom: 13px;\n`;var h=require(\"react/jsx-runtime\");function G({entries:e,renderEntry:t,settings:o={},showControlButtons:i=!0,allEntryLabel:a=\"View All\",allEntryLink:l=\"\",categoryName:r,emptyProductMessage:d=\"No Products Available For The Selected Category\",productsCountLabel:s=\"Products\",isInitialDataLoading:c,history:u}){let b=(0,Z.useRef)(null),m=(0,Ye.default)(\"(max-width: 560px)\"),C=(0,Z.useCallback)(()=>{b.current?.slickPrev()},[]),M=(0,Z.useCallback)(()=>{b.current?.slickNext()},[]),P=t??((g,S)=>(0,h.jsx)(te,{productTitle:g.productTitle,imageDetails:g.imageDetails,button:g.button,onCardClick:g.onCardClick,productStatusBadge:g.productStatusBadge,directSellerBadge:g.directSeller,mySitePriceComponent:g.mySitePriceComponent},`${g.productTitle}-${S}`)),I={dots:!0,infinite:!0,speed:500,slidesToShow:Math.min(e?.length??0,4),slidesToScroll:4,swipe:!0,draggable:!0,arrows:!0,responsive:[{breakpoint:1320,settings:{slidesToShow:Math.min(e?.length??0,3),slidesToScroll:3}},{breakpoint:900,settings:{slidesToShow:Math.min(e?.length??0,2),slidesToScroll:2}},{breakpoint:600,settings:{slidesToShow:1,slidesToScroll:1,arrows:!1}}],...o},H=(e?.length??0)>I.slidesToShow,A=()=>e?.length===0&&!c?(0,h.jsx)(We,{children:d}):m?(0,h.jsx)(Me,{children:(0,h.jsx)(Ee,{children:e.map((g,S)=>g&&P(g,S))})}):(0,h.jsx)(Ve.default,{...I,ref:b,children:e.map((g,S)=>g&&P(g,S))});return(0,h.jsxs)(Re,{children:[i&&(0,h.jsxs)(Le,{children:[(0,h.jsxs)(_e,{children:[(0,h.jsxs)(je,{children:[(0,h.jsx)(He,{children:(0,h.jsxs)(De,{variant:\"body-m\",children:[e?.length??0,\" \",s]})}),!m&&r&&(0,h.jsx)(Oe,{children:r})]}),(0,h.jsx)(ze,{$isMobile:m,children:(0,h.jsx)(Ae,{$disabled:(e?.length??0)===0,onClick:g=>{g.preventDefault(),(e?.length??0)>0&&u&&u.push(l)},children:a})})]}),!m&&(0,h.jsx)($e,{$isDisabled:!H,children:(0,h.jsx)(qe.NsCarouselControl,{prev:C,next:M,viewAllLabel:\"\",viewAllUrl:\"\"})})]}),A()]})}var k=require(\"react\"),mt=require(\"@mui/material\");var it=$(require(\"react\")),at=$(require(\"@mui/material/Tabs\")),nt=$(require(\"@mui/material/Tab\")),pe=$(require(\"@mui/material/Box\")),oe=$(et());var tt=require(\"@nuskin/foundation-theme\"),ot=tt.styled.div`\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: flex-start;\n width: 100%;\n height: 100%;\n background-color: #fff;\n .tabsStyle {\n display: flex;\n padding-top: 8.533px;\n flex-direction: column;\n align-items: flex-start;\n gap: 12.8px;\n border-right: 1px;\n border-color: divider;\n width: 200px;\n & .Mui-selected {\n font-weight: 700;\n font-size: 14px;\n font-family: 'inter', sans-serif;\n font-style: normal;\n font-height: 20px;\n border-radius: 4px;\n }\n & .MuiTabs-indicator {\n left: 0;\n background-color: #5b81a5;\n color: #5b81a5;\n\n @media (max-width: 768px) {\n display: none;\n }\n }\n }\n\n .tabContainer {\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: flex-start;\n min-width: 100%;\n background-color: #fff;\n @media (max-width: 768px) {\n flex-direction: column;\n justify-content: center;\n align-items: center;\n }\n }\n\n .tabStyle {\n align-items: flex-start;\n display: flex;\n text-align: left;\n font-size: 14px;\n font-family: 'inter' sans-serif;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n min-height: 20px;\n padding: 1px;\n padding-left: 10px;\n margin-bottom: 10px;\n cursor: pointer;\n text-transform: none;\n }\n @media (max-width: 768px) {\n flex-direction: row;\n\n .tabsStyle {\n width: 100%;\n border-right: none;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding-top: 0px;\n }\n\n .tabStyle {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 14px;\n border: 1px solid #ccc;\n border-radius: 70px;\n padding: 8px 16px;\n text-align: center;\n margin: 4px;\n background-color: #fff;\n cursor: pointer;\n color: black;\n font-family: Inter;\n font-style: normal;\n font-weight: 600;\n line-height: 20px;\n }\n\n .tabStyle.Mui-selected {\n background-color: #5b81a5;\n color: #ffffff !important;\n font-weight: 700;\n border-radius: 70px;\n }\n }\n .tabPanel {\n padding: 8px;\n text-align: left;\n }\n`;var rt=require(\"@mui/material\"),z=require(\"react/jsx-runtime\");function lt(e){let{children:t,value:o,index:i,...a}=e;return(0,z.jsx)(\"div\",{role:\"tabpanel\",hidden:o!==i,id:`vertical-tabpanel-${i}`,\"aria-labelledby\":`vertical-tab-${i}`,...a,children:o===i&&(0,z.jsx)(pe.default,{className:\"tabPanel\",children:t})})}lt.propTypes={children:oe.default.node,index:oe.default.number.isRequired,value:oe.default.number.isRequired};var ie=({itemArray:e,value:t,onChange:o})=>{let[i,a]=it.useState(0),l=(0,rt.useMediaQuery)(\"(max-width:768px)\"),r=t??i;return(0,z.jsx)(ot,{children:(0,z.jsxs)(pe.default,{className:\"tabContainer\",children:[(0,z.jsx)(at.default,{orientation:l?\"horizontal\":\"vertical\",variant:\"scrollable\",value:r,onChange:(s,c)=>{o?o(s,c):a(c)},\"aria-label\":\"Vertical tabs example\",className:\"tabsStyle\",children:e.map(s=>(0,z.jsx)(nt.default,{label:s.label,className:\"tabStyle\"},s.categoryId))}),e.map(s=>(0,z.jsx)(lt,{value:r,index:e.findIndex(c=>c.categoryId===s.categoryId),children:s.content},s.categoryId))]})})};var xt=require(\"@nuskin/foundation-ui-components\");var D=require(\"@nuskin/foundation-theme\"),Yt=({isMobile:e,$hasCategories:t})=>e?\"auto\":t?\"800px\":\"auto\",st=(0,D.styled)(\"div\")`\n display: flex;\n flex-direction: ${({isMobile:e})=>e?\"column\":\"row\"};\n align-items: ${({isMobile:e})=>e?\"stretch\":\"flex-start\"};\n width: 100%;\n max-width: 1920px;\n min-height: ${Yt};\n margin: 0 auto;\n box-sizing: border-box;\n overflow: visible;\n background: #fff;\n padding: ${({isMobile:e})=>e?\"10px 16px 0px 16px\":\"50px 60px 0px 60px\"};\n\n @media (max-width: 768px) {\n padding: 10px 16px 0px 16px;\n min-height: auto;\n }\n\n @media (min-width: 769px) and (max-width: 1024px) {\n padding: 30px 40px 0px 40px;\n gap: 20px;\n }\n\n transform: translateZ(0);\n will-change: auto;\n`,dt=(0,D.styled)(\"div\")`\n min-width: ${({isMobile:e})=>e?\"100%\":\"auto\"};\n height: ${({isMobile:e})=>e?\"auto\":\"100%\"};\n flex-shrink: 0;\n\n @media (max-width: 768px) {\n width: 100%;\n height: auto;\n\n overflow-x: auto;\n overflow-y: visible;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n -ms-overflow-style: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n }\n\n @media (min-width: 769px) and (max-width: 1024px) {\n min-width: 200px;\n margin-right: 20px;\n }\n`,pt=(0,D.styled)(\"div\")`\n flex: 1;\n min-width: 0;\n height: ${({isMobile:e})=>e?\"auto\":\"100%\"};\n\n @media (max-width: 768px) {\n width: 100%;\n height: auto;\n min-height: 300px;\n\n -webkit-overflow-scrolling: touch;\n overflow-x: hidden;\n overflow-y: auto;\n }\n\n @media (min-width: 769px) and (max-width: 1024px) {\n min-height: 400px;\n }\n\n contain: layout style paint;\n transform: translateZ(0);\n`,Mo=(0,D.styled)(\"div\")`\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 200px;\n padding: 20px;\n\n @media (max-width: 768px) {\n min-height: 150px;\n padding: 16px;\n }\n`,ct=(0,D.styled)(\"div\")`\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 40px 20px;\n color: #666;\n font-size: 16px;\n\n @media (max-width: 768px) {\n padding: 20px 16px;\n font-size: 14px;\n }\n`,gt=(0,D.styled)(\"div\")`\n padding: 10px;\n display: flex;\n justify-content: center;\n`;var N=require(\"react/jsx-runtime\"),qt=({allEntryLabel:e,allEntryLink:t,renderEntry:o,settings:i,showControlButtons:a=!0,fetchCategories:l,fetchProducts:r,showCustomCategory:d=!1,emptyProductTabs:s=\"No tabs available\",emptyProductMessage:c,productsCountLabel:u,getCategoryId:b,history:m})=>{let C=(0,mt.useMediaQuery)(\"(max-width:768px)\"),[M,P]=(0,k.useState)(!0),[I,H]=(0,k.useState)([]),[A,g]=(0,k.useState)(!1),[S,le]=(0,k.useState)(0),[U,K]=(0,k.useState)([]),[W,O]=(0,k.useState)(!1),[J,y]=(0,k.useState)(!0),T=(0,k.useCallback)(()=>{let x=document.querySelectorAll('[data-testid*=\"spinner\"], .ns-spinner, [class*=\"spinner\"]');y(x.length===0)},[]);(0,k.useEffect)(()=>{W&&T()},[W,T]),(0,k.useEffect)(()=>{l().then(x=>{H(x),g(!0)})},[l]),(0,k.useEffect)(()=>{if(A)if(I.length>0){let x=I[S]?.categoryId;b&&b(x),O(!0),r(x).then(K).finally(()=>{O(!1),P(!1)})}else O(!1)},[I,S,r,A]);let E=I.map(x=>({label:x.label,content:\"\",categoryId:x.categoryId}));return(0,N.jsxs)(st,{isMobile:C,$hasCategories:I.length>0,children:[d&&(E.length>0?(0,N.jsx)(dt,{isMobile:C,children:(0,N.jsx)(ie,{itemArray:E,value:S,onChange:(x,V)=>le(V)})}):(0,N.jsx)(ct,{children:s})),(0,N.jsx)(pt,{isMobile:C,children:W?(0,N.jsx)(gt,{children:J&&(0,N.jsx)(xt.NsSpinner,{})}):(0,N.jsx)(G,{isInitialDataLoading:M,entries:U,allEntryLabel:e,allEntryLink:t,renderEntry:o?x=>o({...x,productStatusBadge:x.productStatusBadge}):void 0,settings:i,showControlButtons:a,categoryName:I[S]?.label,emptyProductMessage:c,productsCountLabel:u,history:m})})]})},ht=qt;var B=require(\"react\"),p=require(\"@mui/material\"),Q=require(\"@nuskin/foundation-ui-components\");var F=require(\"@nuskin/foundation-theme\"),j=require(\"@mui/material\"),ae=require(\"react/jsx-runtime\"),ce=e=>({fontSize:\"12px\",fontStyle:\"normal\",fontWeight:\"600\",lineHeight:\"16px\",letterSpacing:\"0.12px\",color:e?\"#000000\":\"#FFFFFF\",\"& a\":{color:\"inherit\",textDecoration:\"none\",\"&:hover\":{textDecoration:\"underline\"}}}),ft=e=>({fontSize:\"12px\",fontStyle:\"normal\",fontWeight:\"700\",lineHeight:\"16px\",letterSpacing:\"0.48px\",color:e?\"#000000\":\"#FFFFFF\",textTransform:\"uppercase\",paddingLeft:\"5px\"}),ut=()=>({display:\"flex\",flexDirection:\"row\",gap:\"10px\",alignItems:\"center\"}),bt=e=>({...ce(e),paddingBottom:\"11px\",wordBreak:\"break-all\",overflowWrap:\"break-word\",paddingLeft:\"5px\",\"& a\":{color:\"inherit\",textDecoration:\"none\"},\"@media (max-width: 420px)\":{fontSize:\"11px\",lineHeight:\"15px\",paddingBottom:\"8px\"},\"@media (max-width: 400px)\":{fontSize:\"10px\",lineHeight:\"14px\",paddingBottom:\"6px\"},\"@media (max-width: 375px)\":{fontSize:\"8px\",lineHeight:\"12px\",paddingBottom:\"4px\"}}),Zt=e=>({...ft(e),marginBottom:\"11px\",transition:\"opacity 0.3s ease-out, transform 0.3s ease-out\",opacity:1,transform:\"translateY(0)\",\"@media (max-width: 420px)\":{fontSize:\"11px\",lineHeight:\"14px\",marginBottom:\"8px\"},\"@media (max-width: 400px)\":{fontSize:\"10px\",lineHeight:\"12px\",marginBottom:\"5px\"},\"@media (max-width: 375px)\":{fontSize:\"8px\",lineHeight:\"11px\",marginBottom:\"4px\"}}),yt=(0,F.styled)(e=>(0,ae.jsx)(j.Box,{...e}))(({bannerProps:e,isCircularImage:t,hasWhiteBackground:o})=>({backgroundClip:\"border-box\",display:\"flex\",background:e?.backgroundColor??\"#383838\",position:\"relative\",overflow:\"hidden\",width:\"100%\",height:\"auto\",flexDirection:\"row\",alignItems:\"center\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",willChange:\"transform, opacity\",transform:\"translateZ(0)\",backfaceVisibility:\"hidden\",\"&.scrolled\":{top:0,left:0,right:0,boxShadow:\"0 2px 8px rgba(0,0,0,0.2)\",\".content\":{paddingTop:\"0\",justifyContent:\"center\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\"},\".body-title\":{fontSize:\"26px\",lineHeight:\"34px\",marginBottom:\"0\",fontStyle:\"normal\",fontWeight:\"400\",fontFamily:e?.headlineFont??\"Lora\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\"},\".bg-image\":{width:\"90px\",height:\"90px\",padding:t?\"2px\":\"0px\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",objectFit:\"cover\",objectPosition:\"center\"},\".placeholder-image\":{\"& > div\":{width:\"90px\",height:\"90px\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\"}}},\".content\":{width:\"70%\",height:\"100%\",marginLeft:\"2%\",marginRight:\"auto\",display:\"flex\",flexDirection:\"column\",position:\"relative\",boxSizing:\"border-box\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\"},\".bg-image\":{width:\"252px\",height:\"252px\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",willChange:\"width, height, transform\",padding:t?\"3px\":\"0px\",objectFit:\"cover\",objectPosition:\"center\"},\".placeholder-image\":{transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",willChange:\"width, height, transform\",\"& > div\":{transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\"}},\".body-title\":{fontSize:\"32px\",lineHeight:\"38px\",marginBottom:\"8px\",fontWeight:\"400\",color:o?\"#000000\":\"#FFFFFF\",overflow:\"hidden\",whiteSpace:\"nowrap\",textOverflow:\"ellipsis\",fontFamily:e?.headlineFont??\"Lora\",paddingLeft:\"5px\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\"},\".body-text\":{fontSize:\"16px\",marginBottom:\"12px\",fontStyle:\"normal\",fontWeight:\"400\",lineHeight:\"22px\",color:o?\"#000000\":\"#FFFFFF\",fontFamily:e?.paragraphFont??\"inherit\",display:\"-webkit-box\",WebkitBoxOrient:\"vertical\",overflow:\"hidden\",WebkitLineClamp:3,textOverflow:\"ellipsis\",paddingLeft:\"5px\",transition:\"opacity 0.3s ease-out, transform 0.3s ease-out\",opacity:1,transform:\"translateY(0)\"},\".social-media\":{display:\"flex\",flexDirection:\"column\",transition:\"opacity 0.3s ease-out, transform 0.3s ease-out\",opacity:1,transform:\"translateY(0)\"},\".email-text\":ce(o),\".phone-text\":ce(o),\".social-title-text\":{...ft(o),marginBottom:\"8px\"},\".social-icons\":{...ut(),paddingBottom:\"8px\"}})),wt=(0,F.styled)(e=>(0,ae.jsx)(j.Box,{...e}))(({bannerProps:e,isCircularImage:t,hasWhiteBackground:o})=>({backgroundClip:\"border-box\",display:\"flex\",background:e?.backgroundColor??\"#383838\",position:\"relative\",overflow:\"hidden\",width:\"100%\",flexDirection:\"column\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",willChange:\"transform, opacity\",transform:\"translateZ(0)\",backfaceVisibility:\"hidden\",\"&.scrolled\":{top:0,left:0,right:0,boxShadow:\"0 2px 8px rgba(0,0,0,0.2)\",\".content-mobile\":{paddingTop:\"5px\",width:\"60%\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\"},\".body-title-mobile\":{fontSize:\"18px\",lineHeight:\"28px\",marginBottom:\"0\",fontStyle:\"normal\",fontWeight:\"400\",fontFamily:e?.headlineFont??\"Lora\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\"},\".bg-image-mobile\":{width:\"75px\",height:\"75px\",padding:t?\"2px\":\"0px\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",objectFit:\"cover\",objectPosition:\"center\"},\".placeholder-image-mobile\":{\"& > div\":{width:\"75px !important\",height:\"75px !important\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\"}}},\".image-content-mobile\":{display:\"flex\",flexDirection:\"row\",width:\"100%\",justifyContent:\"center\",alignItems:\"center\"},\".content-mobile\":{width:\"55%\",height:\"100%\",paddingTop:\"10px\",paddingRight:\"10px\",marginLeft:\"8px\",marginRight:\"auto\",display:\"flex\",flexDirection:\"column\",justifyContent:\"center\",position:\"relative\",boxSizing:\"border-box\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\"@media (max-width: 420px)\":{paddingTop:\"8px\",width:\"100%\"},\"@media (max-width: 400px)\":{paddingTop:\"6px\",width:\"100%\",height:\"100%\"},\"@media (max-width: 375px)\":{paddingTop:\"4px\",width:\"100%\",height:\"100%\"}},\".bg-image-mobile\":{width:\"144px\",height:\"144px\",display:\"flex\",justifyContent:\"center\",alignItems:\"center\",objectFit:\"cover\",objectPosition:\"center\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",willChange:\"width, height, transform\",padding:t?\"2px\":\"0px\",\"@media (max-width: 420px)\":{width:\"120px\",height:\"120px\"},\"@media (max-width: 400px)\":{width:\"112px\",height:\"112px\"},\"@media (max-width: 375px)\":{width:\"90px\",height:\"90px\"}},\".placeholder-image-mobile\":{transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",willChange:\"width, height, transform\",\"& > div\":{transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",width:\"144px\",height:\"144px\",\"@media (max-width: 420px)\":{width:\"120px\",height:\"120px\"},\"@media (max-width: 400px)\":{width:\"110px !important\",height:\"110px !important\"},\"@media (max-width: 375px)\":{width:\"90px\",height:\"90px\"}}},\".body-title-mobile\":{fontSize:\"22px\",lineHeight:\"28px\",marginBottom:\"13px\",fontWeight:\"400\",color:o?\"#000000\":\"#FFFFFF\",fontStyle:\"normal\",overflow:\"hidden\",whiteSpace:\"nowrap\",textOverflow:\"ellipsis\",fontFamily:e?.headlineFont??\"Lora\",paddingLeft:\"5px\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\"@media (max-width: 420px)\":{fontSize:\"16px\",lineHeight:\"24px\",marginBottom:\"8px\"},\"@media (max-width: 400px)\":{fontSize:\"16px\",lineHeight:\"22px\",marginBottom:\"6px\"},\"@media (max-width: 375px)\":{fontSize:\"14px\",lineHeight:\"20px\",marginBottom:\"4px\"}},\".body-text-mobile\":{fontSize:\"14px\",padding:\"20px 25px 20px 25px\",fontStyle:\"normal\",fontWeight:\"400\",lineHeight:\"20px\",color:\"#252525\",backgroundColor:\"#E0E0E0\",fontFamily:e?.paragraphFont??\"inherit\",transition:\"all 0.25s cubic-bezier(0.4, 0, 0.2, 1)\",opacity:1,transform:\"translateY(0)\"},\".expandable-description-mobile\":{backgroundColor:\"#E0E0E0\",position:\"relative\"},\".description-content-mobile\":{fontSize:\"14px\",padding:\"10px 15px\",fontStyle:\"normal\",fontWeight:\"400\",lineHeight:\"20px\",color:\"#252525\",fontFamily:e?.paragraphFont??\"inherit\",transition:\"max-height 0.3s ease-in-out, opacity 0.3s ease-in-out\",overflow:\"hidden\",position:\"relative\",\"&.collapsed\":{maxHeight:\"50px\",display:\"-webkit-box\",WebkitLineClamp:2,WebkitBoxOrient:\"vertical\",\"&::after\":{content:'\"\"',position:\"absolute\",bottom:0,left:0,right:0,height:\"20px\",background:\"linear-gradient(transparent, rgba(224, 224, 224, 0.8), #E0E0E0)\",pointerEvents:\"none\"}},\"&.expanded\":{maxHeight:\"none\",whiteSpace:\"normal\",display:\"block\",\"&::after\":{display:\"none\"}}},\".email-text-mobile\":bt(o),\".phone-text-mobile\":bt(o),\".social-title-text-mobile\":Zt(o),\".social-icons-mobile\":{...ut(),paddingBottom:\"10px\",transition:\"opacity 0.3s ease-out, transform 0.3s ease-out\",opacity:1,transform:\"translateY(0)\",\"& img\":{width:\"24px\",height:\"24px\",\"@media (max-width: 400px)\":{width:\"20px\",height:\"20px\"},\"@media (max-width: 375px)\":{width:\"18px\",height:\"18px\"}},\"@media (max-width: 420px)\":{paddingBottom:\"8px\"},\"@media (max-width: 400px)\":{paddingBottom:\"4px\"},\"@media (max-width: 375px)\":{paddingBottom:\"3px\"}}})),Ct=(0,F.styled)(j.Box)({display:\"flex\",gap:\"12px\",marginBottom:\"16px\",paddingLeft:\"5px\",\"&.mobile-badges\":{flexDirection:\"column\",gap:\"8px\",marginBottom:\"12px\"},\"&.tablet-badges\":{flexDirection:\"row\",gap:\"12px\",marginBottom:\"8px\"}}),ge=(0,F.styled)(e=>(0,ae.jsx)(j.Box,{...e}))(({hasWhiteBackground:e})=>({backgroundColor:\"rgba(255, 255, 255, 0.2)\",backdropFilter:\"blur(10px)\",borderRadius:\"20px\",padding:\"8px 16px\",display:\"flex\",alignItems:\"center\",gap:\"4px\",border:\"1px solid rgba(255, 255, 255, 0.3)\",transition:\"all 0.3s ease\",\"&.mobile-badge\":{padding:\"6px 12px\",borderRadius:\"16px\",fontSize:\"12px\"},\"&.tablet-badge\":{padding:\"8px 16px\",borderRadius:\"20px\",fontSize:\"14px\"},\"&.total-savings-badge\":{backgroundColor:\"#4A6987\",border:\"none\",borderRadius:\"8px\",padding:\"8px 16px\",gap:\"4px\",minHeight:\"32px\",backdropFilter:\"none\",\".badge-value\":{color:\"#FFFFFF\"},\"&:hover\":{backgroundColor:\"#4A6987\",transform:\"none\",boxShadow:\"none\"}},\"&.expiration-badge\":{borderRadius:\"8px\",padding:\"8px 16px\",gap:\"4px\",minHeight:\"32px\"},\"&:hover\":{backgroundColor:\"rgba(255, 255, 255, 0.3)\",transform:\"translateY(-1px)\",boxShadow:\"0 4px 12px rgba(0, 0, 0, 0.1)\"},\".badge-text\":{color:e?\"#000000\":\"#FFFFFF\",fontWeight:\"400\",opacity:.9},\".badge-value\":{color:e?\"#000000\":\"#FFFFFF\",fontWeight:\"600\"}})),vt=(0,F.styled)(\"button\")({backgroundColor:\"#E0E0E0\",border:\"1px solid #252525\",borderRadius:\"10px\",cursor:\"pointer\",width:\"40px\",height:\"20px\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",margin:\"10px auto 5px auto\",transition:\"all 0.2s ease\",\"& .arrow-icon-mobile\":{transition:\"transform 0.3s ease\",\"&.expanded\":{transform:\"rotate(180deg)\"}}}),kt=(0,F.styled)(j.Box)`\n background: none;\n border: 2px solid transparent;\n cursor: pointer;\n padding: 2px;\n display: flex;\n align-items: center;\n border-radius: 8px;\n transition: all 0.3s ease;\n\n &:hover {\n transform: scale(1.1);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n }\n\n &:focus,\n &:focus-within {\n outline: none;\n border-color: #007bff;\n box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25);\n }\n\n &:hover svg {\n fill: #ffffff;\n }\n`,St=(0,F.styled)(\"span\")`\n line-height: 0.5;\n`,Tt=(0,F.styled)(\"a\")({fontSize:\"inherit\",fontFamily:\"inherit\",fontWeight:\"inherit\",lineHeight:\"inherit\",letterSpacing:\"inherit\",color:\"inherit\",textDecoration:\"none\",\"&:hover\":{textDecoration:\"underline\"}}),me=(0,F.styled)(\"span\")({});var Pt=require(\"@mui/material\"),R=require(\"react/jsx-runtime\"),It=({width:e,height:t,backgroundColor:o})=>(0,R.jsx)(Pt.Box,{sx:{width:e,height:t,display:\"flex\",justifyContent:\"center\",alignItems:\"center\",backgroundColor:o},\"data-testid\":\"placeholder-image\",children:(0,R.jsx)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"128\",height:\"129\",viewBox:\"0 0 128 129\",fill:\"none\",children:(0,R.jsxs)(\"g\",{id:\"ns_logomark\",children:[(0,R.jsx)(\"path\",{id:\"Vector\",d:\"M127.495 52.1946C125.663 47.9538 122.999 44.1171 119.661 40.9073C112.565 34.2835 102.562 31.7037 93.1175 34.0622C83.6733 36.4206 76.0882 43.3926 72.991 52.5619C71.4142 56.8414 70.6063 61.3627 70.6039 65.9196C70.6039 85.8227 70.6039 105.737 70.6039 125.662C70.6039 129.001 70.6039 129.001 66.9051 128.834C66.9051 128.2 66.9051 127.499 66.9051 126.831C66.9051 104.323 66.9051 81.8263 66.9051 59.3409C66.3415 45.3064 74.9302 32.5039 88.1888 27.6164C89.79 27.0612 91.4307 26.6259 93.0981 26.314C94.7114 25.98 96.4605 25.8465 98.0738 25.6461C96.0231 16.3291 78.9419 5.60953 65.0889 4.97504C50.3084 4.62252 36.6074 12.6365 29.7509 25.6461C31.331 25.8465 32.8779 25.9466 34.3569 26.2138C48.0999 28.544 58.7086 39.4998 60.5168 53.2298C60.8904 55.7285 61.0812 58.2508 61.0877 60.7769C61.0877 82.7507 61.0877 104.724 61.0877 126.697C61.0877 128.434 60.6842 129.169 58.8016 128.968C56.9183 128.768 57.1204 128.2 57.1204 126.965C57.1204 119.985 57.1204 113.006 57.1204 105.993C57.1204 92.1674 57.1204 78.3423 57.1204 64.5171C57.2385 56.3928 54.2457 48.5271 48.7477 42.5103C42.2429 35.5282 32.6539 32.2371 23.1959 33.7401C13.7379 35.243 5.66194 41.3411 1.67448 49.9906C1.23781 50.8254 0.867444 51.6937 0.262573 52.9293C5.79294 22.3996 32.4752 0.139867 63.7085 0.000656323C94.9411 -0.138555 121.824 21.8824 127.629 52.3616\",fill:\"#252525\"}),(0,R.jsx)(\"path\",{id:\"Vector_2\",d:\"M86.0995 124.927C86.0995 124.293 86.0995 123.858 86.0995 123.425C86.0995 111.669 86.0995 100.049 86.0995 88.1269C85.8836 82.4231 88.0775 76.89 92.1523 72.8653C97.3131 67.9567 104.984 66.7091 111.452 69.7263C117.892 72.1185 122.166 78.225 122.178 85.0541C122.372 92.1747 119.781 99.0921 114.949 104.356C107.882 113.237 98.6134 120.141 88.05 124.392C87.4217 124.616 86.782 124.805 86.1335 124.96\",fill:\"#252525\"}),(0,R.jsx)(\"path\",{id:\"Vector_3\",d:\"M41.8183 125.395C37.6149 123.224 33.6477 121.487 29.9828 119.25C21.5405 114.299 14.4778 107.331 9.43828 98.9796C6.53442 94.3985 5.34408 88.9493 6.07591 83.5852C7.056 75.2882 13.8859 68.8841 22.2829 68.3905C31.1231 67.2473 39.3527 73.0751 41.1455 81.7484C41.76 84.263 42.0762 86.8411 42.0868 89.4287C42.0868 100.516 42.0868 111.636 42.0868 122.823C42.0868 123.457 42.0867 124.059 41.8854 125.294\",fill:\"#252525\"}),(0,R.jsx)(\"path\",{id:\"Vector_4\",d:\"M51.3337 127.431C47.9713 127.431 47.6681 127.198 47.6681 124.326V76.6386C48.1096 67.937 42.9747 59.906 34.8574 56.602C25.8992 52.8557 15.5485 54.8615 8.66523 61.6779C4.28638 66.6086 1.89197 72.9696 1.94049 79.5438C1.95423 80.2444 1.78037 80.9357 1.43588 81.5476C1.06552 79.9446 0.62885 78.2081 0.426687 76.7387C-0.724024 70.4463 0.471163 63.9529 3.78906 58.472C6.09291 54.6111 9.65016 51.6434 13.8762 50.0567C22.8587 46.555 32.9393 47.1785 41.4148 51.7598C47.6592 54.8694 51.5262 61.2882 51.3337 68.2232C51.5019 87.6249 51.3337 107.027 51.3337 126.396C51.3337 126.797 51.3337 127.164 51.3337 127.532\",fill:\"#252525\"}),(0,R.jsx)(\"path\",{id:\"Vector_5\",d:\"M76.287 127.499V125.094C76.287 107.196 76.4883 89.2963 76.287 71.3966C76.0848 56.9034 84.2554 50.6588 95.7553 48.3545C101.535 47.2005 107.524 47.6393 113.071 49.6235C122.914 53.3319 128.994 63.1725 127.866 73.5672C127.631 76.2831 127.17 78.975 126.487 81.6151C125.916 78.2758 125.68 74.9364 124.772 71.597C122.808 64.3002 117.377 58.4174 110.228 55.8421C103.078 53.2668 95.1132 54.3239 88.8955 58.6734C83.0441 62.6207 79.7011 69.3237 80.086 76.3389C80.086 92.2349 80.086 108.131 80.086 124.026C80.086 127.366 80.086 127.366 76.2198 127.366\",fill:\"#252525\"})]})})});var xe=require(\"react/jsx-runtime\"),Bt=({width:e=16,height:t=16,className:o=\"\"})=>(0,xe.jsx)(\"svg\",{width:e,height:t,viewBox:\"0 0 24 24\",fill:\"currentColor\",className:o,\"data-testid\":\"arrow-down-icon\",children:(0,xe.jsx)(\"path\",{d:\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z\"})});function ne(e){if(typeof window>\"u\")return;let t=window.location.href,o={...e},i=t.includes(\"personal-offer\")?\"postorefront_\":\"mysite_\";o.event=i+e.event;try{window.dataLayer||(console.error(\"GTM dataLayer not available, but event logged\"),window.dataLayer=[]),window.dataLayer.push(o)}catch(a){console.error(\"Failed to track GTM event:\",a)}}var n=require(\"react/jsx-runtime\"),Nt=(e,t,o)=>{let i=o.includes(\"mobile\")?\"placeholder-image-mobile\":\"placeholder-image\";return e?.imageSrc?(0,n.jsx)(St,{tabIndex:0,children:(0,n.jsx)(Q.NsImage,{className:o,src:e.imageSrc,alt:e.imageAlt})}):(0,n.jsx)(p.Box,{className:i,children:(0,n.jsx)(It,{width:o.includes(\"mobile\")?\"144px\":\"246px\",height:o.includes(\"mobile\")?\"144px\":\"246px\",backgroundColor:t?.backgroundColor??\"#5F5F5F\"})})},Ft=(e,t,o,i,a)=>{if(!e||!t&&!a)return null;let l=o?\"mobile-badge\":\"tablet-badge\";return(0,n.jsxs)(Ct,{className:o?\"mobile-badges\":\"tablet-badges\",children:[a&&(0,n.jsx)(ge,{className:`${l} total-savings-badge`,hasWhiteBackground:i,tabIndex:0,children:(0,n.jsx)(me,{className:\"badge-value\",children:a})}),t&&(0,n.jsx)(ge,{className:`${l} expiration-badge`,hasWhiteBackground:i,tabIndex:0,children:(0,n.jsx)(me,{className:\"badge-value\",children:t})})]})},Gt=(e,t,o,i,a)=>{let{shopTitle:l,socialTitleText:r,email:d,showBadges:s,expirationDate:c,phone:u,totalSavings:b}=e;return(0,n.jsxs)(p.Box,{className:\"content-mobile\",children:[(0,n.jsx)(p.Typography,{tabIndex:l?.trim()?0:-1,className:\"body-title-mobile\",children:l}),!t&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(p.Typography,{tabIndex:r?.trim()?0:-1,className:\"social-title-text-mobile\",children:r}),d?.trim()&&re(\"email\",d,\"email-text-mobile\"),u?.trim()&&re(\"phone\",u,\"phone-text-mobile\"),(0,n.jsx)(p.Box,{className:\"social-icons-mobile\",children:o}),Ft(s,c??\"\",i,a,b)]})]})},Qt=(e,t,o,i,a)=>{let{shopTitle:l,shopDescription:r,socialTitleText:d,email:s,phone:c,showBadges:u,expirationDate:b,totalSavings:m}=e;return(0,n.jsxs)(p.Box,{className:\"content\",children:[(0,n.jsx)(p.Typography,{tabIndex:l?.trim()?0:-1,className:\"body-title\",children:l}),!t&&(0,n.jsxs)(n.Fragment,{children:[r?.length>480?(0,n.jsx)(p.Tooltip,{title:r,arrow:!0,children:(0,n.jsx)(p.Typography,{tabIndex:r?.trim()?0:-1,className:\"body-text\",children:r})}):(0,n.jsx)(p.Typography,{tabIndex:r?.trim()?0:-1,className:\"body-text\",children:r}),(0,n.jsxs)(p.Box,{className:\"social-media\",children:[(0,n.jsx)(p.Typography,{tabIndex:d?.trim()?0:-1,className:\"social-title-text\",children:d}),(0,n.jsxs)(p.Box,{className:\"social-icons\",children:[o,s?.trim()&&re(\"email\",s,\"email-text\"),c?.trim()&&re(\"phone\",c,\"phone-text\")]})]}),Ft(u,b??\"\",i,a,m)]})]})},Ut=e=>new Promise((t,o)=>{let i=new Image;i.crossOrigin=\"anonymous\",i.src=e,i.onload=()=>{let a=document.createElement(\"canvas\"),l=a.getContext(\"2d\");if(!l)return o(new Error(\"Canvas not supported\"));a.width=i.width,a.height=i.height,l.drawImage(i,0,0);let d=[l.getImageData(0,0,1,1).data,l.getImageData(i.width-1,0,1,1).data,l.getImageData(0,i.height-1,1,1).data,l.getImageData(i.width-1,i.height-1,1,1).data].every(s=>Array.prototype.slice.call(s)[3]<10);t(d)},i.onerror=()=>o(new Error(\"Failed to load image\"))}),Kt=e=>{if(!e)return!1;let t=e.replace(\"#\",\"\").toLowerCase();if(!/^[0-9a-f]{3,4}$|^[0-9a-f]{6}$|^[0-9a-f]{8}$/i.test(t))return!1;let o=t;(t.length===3||t.length===4)&&(o=t.split(\"\").map(d=>d+d).join(\"\"));let i=Number.parseInt(o.substring(0,2),16),a=Number.parseInt(o.substring(2,4),16),l=Number.parseInt(o.substring(4,6),16),r=220;return i>=r&&a>=r&&l>=r},Jt=(e,t)=>({onClick:()=>{ne({event:\"contact_click\",contact_type:e,contact_value:t,click_element:`${e}_link`})},onKeyDown:o=>{(o.key===\"Enter\"||o.key===\" \")&&(o.preventDefault(),ne({event:\"contact_click\",contact_type:e,contact_value:t,click_element:`${e}_link`}),globalThis.location.href=`${e===\"email\"?\"mailto\":\"tel\"}:${t}`)}}),re=(e,t,o)=>{let i=e===\"email\"?\"mailto:\":\"tel:\",a=Jt(e,t);return(0,n.jsx)(p.Typography,{className:o,children:(0,n.jsx)(Tt,{href:`${i}${t}`,...a,children:t})})};function he({className:e,shopTitle:t,shopDescription:o,socialTitleText:i,imageDetails:a,email:l,phone:r,bannerProps:d,socialIcons:s,expirationDate:c,showBadges:u=!1,totalSavings:b}){let m=(0,p.useMediaQuery)(\"(max-width: 560px)\"),[C,M]=(0,B.useState)(!1),[P,I]=(0,B.useState)(!1),[H,A]=(0,B.useState)(!1),[g,S]=(0,B.useState)(!1),le=()=>{I(!P)};(0,B.useEffect)(()=>{(async()=>{if(a?.imageSrc){let T=await Ut(a.imageSrc);S(T)}else S(!1)})()},[a?.imageSrc]),(0,B.useEffect)(()=>{A(Kt(d?.backgroundColor))},[d?.backgroundColor]),(0,B.useEffect)(()=>{let y,T=window.scrollY,E=!1,x=!1,V=0,be=f=>{let X=Date.now();if(E!==f&&!x){if(X-V<100)return;x=!0,E=f,V=X,f&&I(!1),clearTimeout(y),M(f),y=setTimeout(()=>{x=!1,f&&window.scrollY<15&&window.scrollTo({top:m?20:30,behavior:\"smooth\"})},300)}},Rt=()=>{let f=window.scrollY;if(x){T=f;return}if(Math.abs(f-T)<.5)return;let q=f>T,Et=m?15:25,Lt=m?8:12;q&&f>Et&&!E?be(!0):!q&&f<Lt&&E&&be(!1),T=f},Mt=()=>{let f=window.scrollY,q=f>(m?5:10);E=q,M(q),T=f,V=Date.now()},Y=null,fe=0,ue=()=>{Y||Date.now()-fe<16||(Y=requestAnimationFrame(()=>{Rt(),fe=Date.now(),Y=null}))};return Mt(),window.addEventListener(\"scroll\",ue,{passive:!0}),()=>{window.removeEventListener(\"scroll\",ue),Y&&cancelAnimationFrame(Y),clearTimeout(y)}},[m]);let U=(0,B.useMemo)(()=>s?.map((y,T)=>(0,n.jsx)(kt,{onClick:x=>{x.preventDefault(),ne({event:\"social_click\",social_platform:y.type,social_url:y.url,click_element:\"social_icon\"}),window.open(y.url,\"_blank\")},children:(0,n.jsx)(Q.NsLink,{href:y.url,target:\"_blank\",children:(0,n.jsx)(Q.NsImage,{src:`https://www.google.com/s2/favicons?domain=${y?.url}&sz=24`,alt:`${y.type} icon`,width:\"24\",height:\"24\"},y?.type+T)})},y?.type+T)),[s]),K=`${e} ${C?\"scrolled\":\"\"}`,W={shopTitle:t,shopDescription:o,socialTitleText:i,email:l,phone:r,showBadges:u,expirationDate:c,totalSavings:b},O=()=>window.innerWidth<=380?50:window.innerWidth<=415?56:window.innerWidth<=460?62:80,J=m&&o&&o.length>O();return m?(0,n.jsxs)(wt,{className:K,\"data-testid\":\"my-site-shop-header\",bannerProps:d,isCircularImage:g,hasWhiteBackground:H,children:[(0,n.jsxs)(p.Box,{className:\"image-content-mobile\",children:[Nt(a,d??{},\"bg-image-mobile\"),Gt(W,C,U,m,H)]}),!C&&(0,n.jsxs)(p.Box,{className:\"expandable-description-mobile\",children:[(0,n.jsx)(p.Typography,{className:`description-content-mobile ${P||!J?\"expanded\":\"collapsed\"}`,children:o}),J&&(0,n.jsx)(vt,{onClick:le,children:(0,n.jsx)(Bt,{width:16,height:16,className:`arrow-icon-mobile ${P?\"expanded\":\"\"}`})})]})]}):(0,n.jsxs)(yt,{className:K,\"data-testid\":\"my-site-shop-header\",bannerProps:d,isCircularImage:g,hasWhiteBackground:H,children:[Nt(a,d??{},\"bg-image\"),Qt(W,C,U,m,H)]})}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","export * from './common';\n","import React, { ReactElement, useState } from 'react';\nimport { NsImage } from '@nuskin/foundation-ui-components';\nimport { ProductImageType } from '../types/image';\nimport {\n PriceComponent,\n ProductCardContainer,\n ImageContainer,\n DefaultImage,\n ProductTitle,\n ProductBadgeContainer,\n AddToCartButton,\n CartIcon,\n} from './styles/NsProductCard.Styled';\nimport { useMediaQuery } from '@mui/material';\nimport { NsCardButton } from './types';\n\ntype NsProductCardProps = {\n readonly productTitle: string;\n readonly imageDetails?: ProductImageType;\n readonly className?: string;\n readonly button?: NsCardButton & { disabled?: boolean };\n readonly onCardClick?: () => void;\n readonly productStatusBadge?: React.ReactNode;\n readonly directSellerBadge?: React.ReactNode;\n readonly mySitePriceComponent?: React.ReactNode;\n readonly testId?: string;\n};\n\nconst NsProductCard = ({\n productTitle,\n imageDetails,\n className,\n button,\n onCardClick,\n productStatusBadge,\n directSellerBadge,\n mySitePriceComponent,\n testId,\n}: NsProductCardProps): ReactElement => {\n const [isButtonHovered, setIsButtonHovered] = useState(false);\n const isMobile = useMediaQuery('(max-width: 560px)');\n\n const handleImageError = (e: React.SyntheticEvent<HTMLImageElement, Event>) => {\n const target = e.target as HTMLImageElement;\n const noImageFallback = imageDetails?.fallbackImage;\n if (noImageFallback && target.src !== noImageFallback) {\n target.src = noImageFallback;\n }\n };\n\n return (\n <ProductCardContainer\n className={className}\n onClick={onCardClick}\n tabIndex={0}\n data-testid=\"product-card\"\n isMobile={isMobile}\n >\n <ImageContainer bgColor={imageDetails?.bgColor} onError={handleImageError}>\n {imageDetails?.imageSrc ? (\n <NsImage\n data-testid={testId ?? 'test-product-image'}\n className={imageDetails.className ?? ''}\n src={imageDetails.imageSrc}\n alt={imageDetails.imageAlt}\n aria-label={imageDetails.areaLabel ?? imageDetails.imageAlt}\n width={'100%'}\n />\n ) : (\n <DefaultImage alt=\"\" />\n )}\n </ImageContainer>\n <ProductTitle title={productTitle} data-testid=\"product-title\">\n {productTitle}\n </ProductTitle>\n {directSellerBadge && <ProductBadgeContainer>{directSellerBadge}</ProductBadgeContainer>}\n <ProductBadgeContainer>{productStatusBadge}</ProductBadgeContainer>\n <PriceComponent>{mySitePriceComponent}</PriceComponent>\n {button?.showButton && (\n <AddToCartButton\n tabIndex={0}\n aria-roledescription=\":\"\n aria-label={button.buttonText || 'ADD TO CART'}\n data-testid=\"add-to-cart-button\"\n disabled={button?.disabled ?? false}\n isMobile={isMobile}\n isHovered={isButtonHovered}\n onClick={(e) => {\n e.stopPropagation();\n if (!button?.disabled) {\n button.onClick?.();\n }\n }}\n onMouseEnter={() => {\n if (!isMobile && !button?.disabled) {\n setIsButtonHovered(true);\n }\n }}\n onMouseLeave={() => {\n if (!isMobile) {\n setIsButtonHovered(false);\n }\n }}\n >\n <CartIcon className=\"cart-icon\" disabled={button?.disabled}>\n <svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M0 1.86358C0 1.26109 0.488416 0.772675 1.09091 0.772675H3.48173C4.51054 0.772675 5.39955 1.49136 5.61511 2.49733L5.71309 2.95456H22.9091C23.245 2.95456 23.5622 3.10933 23.7689 3.37411C23.9757 3.63889 24.0489 3.98415 23.9674 4.31005L22.4053 10.5583C21.9197 12.5009 20.1743 13.8636 18.172 13.8636H8.05068L8.28444 14.9546H20.7273C21.3298 14.9546 21.8182 15.443 21.8182 16.0455C21.8182 16.648 21.3298 17.1364 20.7273 17.1364H19.6364H8.18182H7.40252C6.88811 17.1364 6.4436 16.777 6.33582 16.274L3.76449 4.27405L3.48173 2.95449H1.09091C0.488416 2.95449 0 2.46608 0 1.86358ZM8.18182 17.1364C6.97683 17.1364 6 18.1132 6 19.3182C6 20.5232 6.97683 21.5 8.18182 21.5C9.3868 21.5 10.3636 20.5232 10.3636 19.3182C10.3636 18.1132 9.3868 17.1364 8.18182 17.1364ZM19.6364 17.1364C18.4314 17.1364 17.4545 18.1132 17.4545 19.3182C17.4545 20.5232 18.4314 21.5 19.6364 21.5C20.8413 21.5 21.8182 20.5232 21.8182 19.3182C21.8182 18.1132 20.8413 17.1364 19.6364 17.1364ZM7.58317 11.6818H18.172C19.1732 11.6818 20.0459 11.0005 20.2887 10.0292L21.5119 5.13638H6.18062L7.58317 11.6818Z\"\n fill={button?.disabled ? '#999' : '#ffffff'}\n />\n </svg>\n </CartIcon>\n {button.buttonText || 'ADD TO CART'}\n </AddToCartButton>\n )}\n </ProductCardContainer>\n );\n};\n\nexport default NsProductCard;\n","import { styled } from '@nuskin/foundation-theme';\n\nexport const PriceComponent = styled('div')`\n width: 200px;\n text-align: left;\n margin-bottom: 5px;\n`;\n\nexport const ProductCardContainer = styled('button')<{ isMobile: boolean }>`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n width: 240px;\n height: ${(props) => (props.isMobile ? '410px' : '513px')};\n overflow: hidden;\n cursor: pointer;\n border: 1px solid #ededed;\n background: var(--color-primary-n-10-primary-white, #fff);\n`;\n\nexport const ImageContainer = styled('div')<{\n bgColor?: string;\n}>`\n width: '240px';\n height: '240px';\n background: ${(props) => props.bgColor ?? '#f5f5f5'};\n border-radius: 8px;\n overflow: hidden;\n margin-bottom: 0;\n display: flex;\n align-items: normal;\n justify-content: center;\n position: relative;\n @media (max-width: 560px) {\n width: 200px;\n height: 200px;\n align-items: unset;\n }\n`;\n\nexport const DefaultImage = styled('img')`\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 8px;\n display: block;\n`;\n\nexport const ProductTitle = styled('div')`\n width: 200px;\n margin-top: 16px;\n max-height: 66px;\n text-align: left;\n font-size: 16px;\n font-family: 'Inter', sans-serif;\n font-weight: 400;\n line-height: 22px;\n overflow: hidden;\n color: #666;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n text-overflow: ellipsis;\n @media (max-width: 560px) {\n font-size: 14px;\n font-style: normal;\n font-weight: 600;\n margin-top: 5px;\n max-height: 54px;\n line-height: 18px;\n }\n`;\n\nexport const ProductBadgeContainer = styled('div')`\n width: 200px;\n text-align: left;\n margin-bottom: 12px;\n @media (max-width: 560px) {\n margin-bottom: 8px;\n }\n`;\n\nexport const AddToCartButton = styled('button')<{\n disabled?: boolean;\n isMobile: boolean;\n isHovered: boolean;\n}>`\n width: 200px;\n height: 40px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n gap: 10px;\n font-family: 'Inter', sans-serif;\n font-size: 14px;\n font-weight: 600;\n line-height: 20px;\n letter-spacing: 0.14px;\n text-transform: none;\n justify-content: flex-start;\n padding-left: 31px;\n overflow: hidden;\n white-space: normal;\n word-break: break-word;\n overflow-wrap: break-word;\n text-overflow: ellipsis;\n margin-top: 8px;\n margin-bottom: 10px;\n -webkit-appearance: none;\n -webkit-tap-highlight-color: transparent;\n\n color: ${(props) => (props.disabled ? '#999' : '#fff')};\n background-color: ${(props) => {\n if (props.disabled) return '#e0e0e0';\n if (!props.isMobile && props.isHovered) return '#888';\n return '#000';\n }};\n border: ${(props) => (props.disabled ? '1px solid #ccc' : 'none')};\n cursor: ${(props) => (props.disabled ? 'not-allowed' : 'pointer')};\n opacity: ${(props) => (props.disabled ? 0.6 : 1)};\n transition: ${(props) => (props.isMobile ? 'none' : 'all 0.3s ease')};\n\n @media (max-width: 560px) {\n margin: 5px 0;\n }\n`;\n\nexport const CartIcon = styled('span')<{ disabled?: boolean }>`\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n display: inline-block;\n background: none;\n transition: all 0.3s ease;\n opacity: ${(props) => (props.disabled ? 0.5 : 1)};\n`;\n","import React, { ReactElement, useCallback, ReactNode, useRef } from 'react';\nimport Slider from 'react-slick';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport 'slick-carousel/slick/slick.css';\nimport { NsCardButton, NsCarouselControl } from '@nuskin/foundation-ui-components';\nimport { ProductImageType } from '../types/image';\nimport NsProductCard from '../card/NsProductCard';\nimport {\n SlickContainer,\n ControlsContainer,\n ControlsHeaderRow,\n ScrollableContainer,\n CardList,\n ViewAllWrapper,\n ProductCountWrapper,\n ArrowsWrapper,\n CustomTypography,\n ViewAllLink,\n ProductInfoWrapper,\n CategoryNameWrapper,\n EmptyProductCategories,\n} from './NsProductCarousel.styled';\n\nexport type ProductCardEntry = {\n readonly productTitle: string;\n readonly imageDetails?: ProductImageType;\n readonly button?: NsCardButton;\n readonly onCardClick?: () => void;\n readonly productStatusBadge?: React.ReactNode;\n readonly directSeller?: React.ReactNode;\n readonly mySitePriceComponent?: React.ReactNode;\n};\n\ninterface SlickSettings {\n dots?: boolean;\n infinite?: boolean;\n speed?: number;\n slidesToShow?: number;\n slidesToScroll?: number;\n swipe?: boolean;\n draggable?: boolean;\n arrows?: boolean;\n responsive?: Array<{\n breakpoint: number;\n settings: {\n slidesToShow?: number;\n slidesToScroll?: number;\n arrows?: boolean;\n };\n }>;\n}\n\ninterface ProductCardCarouselProps<T = ProductCardEntry> {\n readonly entries: T[];\n readonly settings?: SlickSettings;\n readonly showControlButtons?: boolean;\n readonly renderEntry?: (entry: T, index: number) => ReactNode;\n readonly allEntryLabel?: string;\n readonly allEntryLink?: string;\n readonly categoryName?: string;\n readonly emptyProductMessage?: string;\n readonly productsCountLabel?: string;\n readonly isInitialDataLoading?: boolean;\n readonly history?: {\n push: (path: string) => void;\n };\n}\n\nexport default function ProductCardCarousel({\n entries,\n renderEntry,\n settings = {},\n showControlButtons = true,\n allEntryLabel = 'View All',\n allEntryLink = '',\n categoryName,\n emptyProductMessage = 'No Products Available For The Selected Category',\n productsCountLabel = 'Products',\n isInitialDataLoading,\n history,\n}: ProductCardCarouselProps): ReactElement {\n const sliderRef = useRef<Slider>(null);\n const isMobile = useMediaQuery('(max-width: 560px)');\n\n const prev = useCallback(() => {\n sliderRef.current?.slickPrev();\n }, []);\n\n const next = useCallback(() => {\n sliderRef.current?.slickNext();\n }, []);\n\n const renderProductEntry =\n renderEntry ??\n ((entry: ProductCardEntry, index: number) => (\n <NsProductCard\n key={`${entry.productTitle}-${index}`}\n productTitle={entry.productTitle}\n imageDetails={entry.imageDetails}\n button={entry.button}\n onCardClick={entry.onCardClick}\n productStatusBadge={entry.productStatusBadge}\n directSellerBadge={entry.directSeller}\n mySitePriceComponent={entry.mySitePriceComponent}\n />\n ));\n\n const sliderSettings = {\n dots: true,\n infinite: true,\n speed: 500,\n slidesToShow: Math.min(entries?.length ?? 0, 4),\n slidesToScroll: 4,\n swipe: true,\n draggable: true,\n arrows: true,\n responsive: [\n {\n breakpoint: 1320,\n settings: {\n slidesToShow: Math.min(entries?.length ?? 0, 3),\n slidesToScroll: 3,\n },\n },\n {\n breakpoint: 900,\n settings: {\n slidesToShow: Math.min(entries?.length ?? 0, 2),\n slidesToScroll: 2,\n },\n },\n {\n breakpoint: 600,\n settings: {\n slidesToShow: 1,\n slidesToScroll: 1,\n arrows: false,\n },\n },\n ],\n ...settings,\n };\n\n const shouldShowNavigation = (entries?.length ?? 0) > sliderSettings.slidesToShow;\n\n const renderCarouselContent = () => {\n if (entries?.length === 0 && !isInitialDataLoading) {\n return <EmptyProductCategories>{emptyProductMessage}</EmptyProductCategories>;\n }\n\n if (isMobile) {\n return (\n <ScrollableContainer>\n <CardList>{entries.map((entry, index) => entry && renderProductEntry(entry, index))}</CardList>\n </ScrollableContainer>\n );\n }\n\n return (\n <Slider {...sliderSettings} ref={sliderRef}>\n {entries.map((entry, index) => entry && renderProductEntry(entry, index))}\n </Slider>\n );\n };\n\n return (\n <SlickContainer>\n {showControlButtons && (\n <ControlsContainer>\n <ControlsHeaderRow>\n <ProductInfoWrapper>\n <ProductCountWrapper>\n <CustomTypography variant=\"body-m\">\n {entries?.length ?? 0} {productsCountLabel}\n </CustomTypography>\n </ProductCountWrapper>\n {!isMobile && categoryName && <CategoryNameWrapper>{categoryName}</CategoryNameWrapper>}\n </ProductInfoWrapper>\n <ViewAllWrapper $isMobile={isMobile}>\n <ViewAllLink\n $disabled={(entries?.length ?? 0) === 0}\n onClick={(e) => {\n e.preventDefault();\n if ((entries?.length ?? 0) > 0 && history) {\n history.push(allEntryLink);\n }\n }}\n >\n {allEntryLabel}\n </ViewAllLink>\n </ViewAllWrapper>\n </ControlsHeaderRow>\n {!isMobile && (\n <ArrowsWrapper $isDisabled={!shouldShowNavigation}>\n <NsCarouselControl prev={prev} next={next} viewAllLabel={''} viewAllUrl={''} />\n </ArrowsWrapper>\n )}\n </ControlsContainer>\n )}\n {renderCarouselContent()}\n </SlickContainer>\n );\n}\n","import React from 'react';\nimport { styled } from '@nuskin/foundation-theme';\nimport Box, { BoxProps } from '@mui/material/Box';\nimport { NsTypography } from '@nuskin/foundation-ui-components';\n\nexport const SlickContainer: React.ComponentType<BoxProps> = styled(Box)`\n padding: 30px 0 60px;\n width: 100%;\n margin: auto;\n margin-top: 50px;\n position: relative;\n\n .slick-list {\n padding-left: 24px;\n padding-right: 24px;\n }\n .slick-slide {\n display: flex;\n justify-content: center;\n padding: 0 12px;\n box-sizing: border-box;\n }\n .slick-prev,\n .slick-next {\n display: none !important;\n }\n\n @media (max-width: 1200px) {\n max-width: 1024px;\n .slick-list {\n padding-left: 12px;\n padding-right: 12px;\n }\n .slick-slide {\n padding: 0 6px;\n }\n }\n @media (max-width: 700px) {\n max-width: 100vw;\n padding: 10px 0 50px;\n .slick-list {\n padding-left: 4px;\n padding-right: 4px;\n }\n .slick-slide {\n padding: 0 2px;\n }\n }\n @media (max-width: 560px) {\n padding: 10px 0 10px;\n margin-top: 25px;\n }\n`;\nexport const ScrollableContainer = styled('div')`\n overflow-x: auto;\n display: flex;\n scroll-snap-type: x mandatory;\n -webkit-overflow-scrolling: touch;\n gap: 16px;\n padding: 0 8px 16px;\n width: 100%;\n box-sizing: border-box;\n\n &::-webkit-scrollbar {\n height: 6px;\n }\n\n &::-webkit-scrollbar-thumb {\n background: #007bff;\n border-radius: 10px;\n }\n`;\n\nexport const CardList = styled('div')`\n display: flex;\n scroll-snap-align: start;\n justify-content: center;\n gap: 15px;\n`;\n\nexport const ControlsContainer: React.ComponentType<BoxProps> = styled(Box)`\n position: absolute;\n bottom: calc(100% + 1px);\n right: 1px;\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n box-sizing: border-box;\n`;\n\nexport const ViewAllWrapper: React.ComponentType<BoxProps & { $isMobile?: boolean }> = styled(Box)<{\n $isMobile?: boolean;\n}>`\n display: flex;\n align-items: center;\n margin-left: auto;\n margin-right: ${({ $isMobile }) => ($isMobile ? 0 : '24px')};\n\n @media (max-width: 560px) {\n margin-left: 0;\n order: 2;\n }\n`;\n\nexport const ProductCountWrapper: React.ComponentType<BoxProps> = styled(Box)`\n display: none;\n\n @media (max-width: 560px) {\n color: #666666;\n font-family: Inter;\n font-size: 14px !important;\n font-style: normal;\n font-weight: 600;\n line-height: 18px;\n display: flex;\n align-items: center;\n order: 1;\n }\n`;\n\nexport const ArrowsWrapper: React.ComponentType<BoxProps & { $isDisabled?: boolean }> = styled(Box)<{\n $isDisabled?: boolean;\n}>`\n display: flex;\n align-items: center;\n opacity: ${({ $isDisabled }) => ($isDisabled ? 0.3 : 1)};\n pointer-events: ${({ $isDisabled }) => ($isDisabled ? 'none' : 'auto')};\n transition: opacity 0.3s ease;\n\n .carousal-prev-button,\n .carousal-next-button {\n transition: all 0.3s ease;\n border: 2px solid #000000;\n border-radius: 3px;\n padding: 9px;\n cursor: pointer;\n\n svg {\n transition: all 0.3s ease;\n }\n\n svg polyline {\n stroke: #000000;\n fill: none;\n }\n\n &:hover {\n background-color: #f5f5f5;\n border: 2px solid #ddd;\n\n svg {\n opacity: 0.5;\n }\n\n svg polyline {\n stroke: #000000;\n fill: none;\n }\n }\n }\n\n @media (max-width: 560px) {\n display: none;\n }\n`;\nexport const Scrollablewrapper = styled('div')`\n @media (max-width: 560px) {\n overflow-y: hidden;\n scrollbar-width: thin;\n scrollbar-color: #007bff #eee;\n &::-webkit-scrollbar {\n width: 8px;\n }\n &::-webkit-scrollbar-track {\n background: #eee;\n }\n &::-webkit-scrollbar-thumb {\n background-color: red;\n border-radius: 8px;\n border: 2px solid #eee;\n }\n }\n`;\nexport const CustomTypography = styled(NsTypography)`\n color: #666666;\n font-family: Inter;\n font-size: 16px;\n font-style: normal;\n font-weight: 600;\n line-height: 22px;\n @media (max-width: 560px) {\n margin: 0 3px;\n }\n`;\n\nexport const ViewAllLink = styled('a')<{ $disabled?: boolean }>`\n color: ${({ $disabled }) => ($disabled ? '#999999' : '#000000')};\n font-family: Inter, sans-serif;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 22px;\n text-decoration: none;\n border-bottom: 1px solid ${({ $disabled }) => ($disabled ? '#999999' : '#000000')};\n padding-bottom: 4px;\n transition: all 0.3s ease;\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n pointer-events: ${({ $disabled }) => ($disabled ? 'none' : 'auto')};\n opacity: ${({ $disabled }) => ($disabled ? 0.5 : 1)};\n\n @media (max-width: 560px) {\n font-size: 14px;\n line-height: 18px;\n }\n\n &:hover {\n color: ${({ $disabled }) => ($disabled ? '#999999' : '#666666')};\n border-bottom: 1px solid ${({ $disabled }) => ($disabled ? '#999999' : '#666666')};\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n }\n`;\n\nexport const EmptyProductCategories = styled('div')`\n padding-top: 20px;\n font-size: 20px;\n text-align: center;\n`;\nexport const ControlsHeaderRow = styled('div')`\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n`;\n\nexport const ProductInfoWrapper = styled('div')`\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n`;\n\nexport const CategoryNameWrapper = styled('div')`\n font-family: 'Lora';\n font-weight: 400;\n font-size: 22px;\n margin-left: 16px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-bottom: 13px;\n`;\n","import React, { useState, useEffect, useCallback } from 'react';\nimport { useMediaQuery } from '@mui/material';\n\nimport { NsCategoryNavigation } from '../Nav-Category-Navigation';\nimport { NsSpinner } from '@nuskin/foundation-ui-components';\nimport ProductCardCarousel, { ProductCardEntry } from './NsProductCarousel';\nimport {\n ProductTabCarouselContainer,\n TabsContainer,\n ContentContainer,\n NoTabsContainer,\n SpinnerContainer,\n} from './ProductTabCarousel.styled';\n\ninterface Category {\n label: string;\n categoryId: string;\n}\n\ninterface SlickSettings {\n dots?: boolean;\n infinite?: boolean;\n speed?: number;\n slidesToShow?: number;\n slidesToScroll?: number;\n swipe?: boolean;\n draggable?: boolean;\n arrows?: boolean;\n responsive?: Array<{\n breakpoint: number;\n settings: {\n slidesToShow?: number;\n slidesToScroll?: number;\n arrows?: boolean;\n };\n }>;\n}\n\ninterface ProductTabCarouselProps {\n readonly allEntryLabel?: string;\n readonly allEntryLink?: string;\n readonly renderEntry?: (entry: ProductCardEntry) => React.ReactNode;\n readonly settings?: SlickSettings;\n readonly showControlButtons?: boolean;\n readonly fetchCategories: () => Promise<Category[]>;\n readonly fetchProducts: (categoryId: string) => Promise<ProductCardEntry[]>;\n readonly emptyProductTabs?: string;\n readonly emptyProductMessage?: string;\n readonly showCustomCategory?: boolean;\n readonly productsCountLabel?: string;\n readonly getCategoryId: (categoryId: string) => Promise<Category[]>;\n readonly history?: {\n push: (path: string) => void;\n };\n}\n\nconst ProductTabCarousel: React.FC<ProductTabCarouselProps> = ({\n allEntryLabel,\n allEntryLink,\n renderEntry,\n settings,\n showControlButtons = true,\n fetchCategories,\n fetchProducts,\n showCustomCategory = false,\n emptyProductTabs = 'No tabs available',\n emptyProductMessage,\n productsCountLabel,\n getCategoryId,\n history,\n}) => {\n const isMobile = useMediaQuery('(max-width:768px)');\n const [isLoadingInitialData, setIsLoadingInitialData] = useState(true);\n const [categories, setCategories] = useState<Category[]>([]);\n const [isCategoriesLoaded, setIsCategoriesLoaded] = useState(false);\n const [selectedTab, setSelectedTab] = useState(0);\n const [products, setProducts] = useState<ProductCardEntry[]>([]);\n const [loading, setLoading] = useState(false);\n const [shouldShowSpinner, setShouldShowSpinner] = useState(true);\n\n const checkForExistingSpinners = useCallback(() => {\n const existingSpinners = document.querySelectorAll('[data-testid*=\"spinner\"], .ns-spinner, [class*=\"spinner\"]');\n setShouldShowSpinner(existingSpinners.length === 0);\n }, []);\n\n useEffect(() => {\n if (loading) {\n checkForExistingSpinners();\n }\n }, [loading, checkForExistingSpinners]);\n\n useEffect(() => {\n fetchCategories().then((data) => {\n setCategories(data);\n setIsCategoriesLoaded(true);\n });\n }, [fetchCategories]);\n\n useEffect(() => {\n if (!isCategoriesLoaded) return;\n\n if (categories.length > 0) {\n const categoryId = categories[selectedTab]?.categoryId;\n if (getCategoryId) {\n getCategoryId(categoryId);\n }\n\n setLoading(true);\n fetchProducts(categoryId)\n .then(setProducts)\n .finally(() => {\n setLoading(false);\n setIsLoadingInitialData(false);\n });\n } else {\n setLoading(false);\n }\n }, [categories, selectedTab, fetchProducts, isCategoriesLoaded]);\n\n const itemArray = categories.map((cat) => ({\n label: cat.label,\n content: '',\n categoryId: cat.categoryId,\n }));\n\n return (\n <ProductTabCarouselContainer isMobile={isMobile} $hasCategories={categories.length > 0}>\n {showCustomCategory &&\n (itemArray.length > 0 ? (\n <TabsContainer isMobile={isMobile}>\n <NsCategoryNavigation\n itemArray={itemArray}\n value={selectedTab}\n onChange={(_, newValue) => setSelectedTab(newValue)}\n />\n </TabsContainer>\n ) : (\n <NoTabsContainer>{emptyProductTabs}</NoTabsContainer>\n ))}\n <ContentContainer isMobile={isMobile}>\n {loading ? (\n <SpinnerContainer>{shouldShowSpinner && <NsSpinner />}</SpinnerContainer>\n ) : (\n <ProductCardCarousel\n isInitialDataLoading={isLoadingInitialData}\n entries={products}\n allEntryLabel={allEntryLabel}\n allEntryLink={allEntryLink}\n renderEntry={\n renderEntry\n ? (entry) => renderEntry({ ...entry, productStatusBadge: entry.productStatusBadge })\n : undefined\n }\n settings={settings}\n showControlButtons={showControlButtons}\n categoryName={categories[selectedTab]?.label}\n emptyProductMessage={emptyProductMessage}\n productsCountLabel={productsCountLabel}\n history={history}\n />\n )}\n </ContentContainer>\n </ProductTabCarouselContainer>\n );\n};\n\nexport default ProductTabCarousel;\n","import * as React from 'react';\nimport Tabs from '@mui/material/Tabs';\nimport Tab from '@mui/material/Tab';\nimport Box from '@mui/material/Box';\nimport PropTypes from 'prop-types';\nimport { NsCategoryNavigationContainer } from './NsCategoryNavigation.styled';\nimport { useMediaQuery } from '@mui/material';\n\nfunction TabPanel(\n props: Readonly<{\n children?: React.ReactNode;\n value: number;\n index: number;\n [key: string]: unknown;\n }>,\n) {\n const { children, value, index, ...other } = props;\n return (\n <div\n role=\"tabpanel\"\n hidden={value !== index}\n id={`vertical-tabpanel-${index}`}\n aria-labelledby={`vertical-tab-${index}`}\n {...other}\n >\n {value === index && <Box className=\"tabPanel\">{children}</Box>}\n </div>\n );\n}\nTabPanel.propTypes = {\n children: PropTypes.node,\n index: PropTypes.number.isRequired,\n value: PropTypes.number.isRequired,\n};\n\ninterface NsCategoryNavigationProps {\n itemArray: { label: string; content: React.ReactNode; categoryId: string }[];\n value?: number;\n onChange?: (event: React.SyntheticEvent, newValue: number) => void;\n}\n\nexport const NsCategoryNavigation: React.FC<Readonly<NsCategoryNavigationProps>> = ({\n itemArray,\n value: controlledValue,\n onChange,\n}) => {\n const [internalValue, setInternalValue] = React.useState(0);\n const isMobile = useMediaQuery('(max-width:768px)');\n const value = controlledValue ?? internalValue;\n const handleChange = (event: React.SyntheticEvent, newValue: number) => {\n if (onChange) {\n onChange(event, newValue);\n } else {\n setInternalValue(newValue);\n }\n };\n\n return (\n <NsCategoryNavigationContainer>\n <Box className=\"tabContainer\">\n <Tabs\n orientation={isMobile ? 'horizontal' : 'vertical'}\n variant=\"scrollable\"\n value={value}\n onChange={handleChange}\n aria-label=\"Vertical tabs example\"\n className=\"tabsStyle\"\n >\n {itemArray.map((item) => (\n <Tab key={item.categoryId} label={item.label} className=\"tabStyle\" />\n ))}\n </Tabs>\n {itemArray.map((item) => (\n <TabPanel\n key={item.categoryId}\n value={value}\n index={itemArray.findIndex((i) => i.categoryId === item.categoryId)}\n >\n {item.content}\n </TabPanel>\n ))}\n </Box>\n </NsCategoryNavigationContainer>\n );\n};\n","import { styled } from '@nuskin/foundation-theme';\nexport const NsCategoryNavigationContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: flex-start;\n width: 100%;\n height: 100%;\n background-color: #fff;\n .tabsStyle {\n display: flex;\n padding-top: 8.533px;\n flex-direction: column;\n align-items: flex-start;\n gap: 12.8px;\n border-right: 1px;\n border-color: divider;\n width: 200px;\n & .Mui-selected {\n font-weight: 700;\n font-size: 14px;\n font-family: 'inter', sans-serif;\n font-style: normal;\n font-height: 20px;\n border-radius: 4px;\n }\n & .MuiTabs-indicator {\n left: 0;\n background-color: #5b81a5;\n color: #5b81a5;\n\n @media (max-width: 768px) {\n display: none;\n }\n }\n }\n\n .tabContainer {\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: flex-start;\n min-width: 100%;\n background-color: #fff;\n @media (max-width: 768px) {\n flex-direction: column;\n justify-content: center;\n align-items: center;\n }\n }\n\n .tabStyle {\n align-items: flex-start;\n display: flex;\n text-align: left;\n font-size: 14px;\n font-family: 'inter' sans-serif;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n min-height: 20px;\n padding: 1px;\n padding-left: 10px;\n margin-bottom: 10px;\n cursor: pointer;\n text-transform: none;\n }\n @media (max-width: 768px) {\n flex-direction: row;\n\n .tabsStyle {\n width: 100%;\n border-right: none;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding-top: 0px;\n }\n\n .tabStyle {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 14px;\n border: 1px solid #ccc;\n border-radius: 70px;\n padding: 8px 16px;\n text-align: center;\n margin: 4px;\n background-color: #fff;\n cursor: pointer;\n color: black;\n font-family: Inter;\n font-style: normal;\n font-weight: 600;\n line-height: 20px;\n }\n\n .tabStyle.Mui-selected {\n background-color: #5b81a5;\n color: #ffffff !important;\n font-weight: 700;\n border-radius: 70px;\n }\n }\n .tabPanel {\n padding: 8px;\n text-align: left;\n }\n`;\n","import { styled } from '@nuskin/foundation-theme';\n\nconst getMinHeight = ({ isMobile, $hasCategories }: { isMobile?: boolean; $hasCategories?: boolean }) => {\n if (isMobile) return 'auto';\n return $hasCategories ? '800px' : 'auto';\n};\n\nexport const ProductTabCarouselContainer = styled('div')<{ isMobile?: boolean; $hasCategories?: boolean }>`\n display: flex;\n flex-direction: ${({ isMobile }) => (isMobile ? 'column' : 'row')};\n align-items: ${({ isMobile }) => (isMobile ? 'stretch' : 'flex-start')};\n width: 100%;\n max-width: 1920px;\n min-height: ${getMinHeight};\n margin: 0 auto;\n box-sizing: border-box;\n overflow: visible;\n background: #fff;\n padding: ${({ isMobile }) => (isMobile ? '10px 16px 0px 16px' : '50px 60px 0px 60px')};\n\n @media (max-width: 768px) {\n padding: 10px 16px 0px 16px;\n min-height: auto;\n }\n\n @media (min-width: 769px) and (max-width: 1024px) {\n padding: 30px 40px 0px 40px;\n gap: 20px;\n }\n\n transform: translateZ(0);\n will-change: auto;\n`;\n\nexport const TabsContainer = styled('div')<{ isMobile?: boolean }>`\n min-width: ${({ isMobile }) => (isMobile ? '100%' : 'auto')};\n height: ${({ isMobile }) => (isMobile ? 'auto' : '100%')};\n flex-shrink: 0;\n\n @media (max-width: 768px) {\n width: 100%;\n height: auto;\n\n overflow-x: auto;\n overflow-y: visible;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n -ms-overflow-style: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n }\n\n @media (min-width: 769px) and (max-width: 1024px) {\n min-width: 200px;\n margin-right: 20px;\n }\n`;\n\nexport const ContentContainer = styled('div')<{ isMobile?: boolean }>`\n flex: 1;\n min-width: 0;\n height: ${({ isMobile }) => (isMobile ? 'auto' : '100%')};\n\n @media (max-width: 768px) {\n width: 100%;\n height: auto;\n min-height: 300px;\n\n -webkit-overflow-scrolling: touch;\n overflow-x: hidden;\n overflow-y: auto;\n }\n\n @media (min-width: 769px) and (max-width: 1024px) {\n min-height: 400px;\n }\n\n contain: layout style paint;\n transform: translateZ(0);\n`;\n\nexport const LoadingContainer = styled('div')`\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 200px;\n padding: 20px;\n\n @media (max-width: 768px) {\n min-height: 150px;\n padding: 16px;\n }\n`;\n\nexport const NoTabsContainer = styled('div')`\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 40px 20px;\n color: #666;\n font-size: 16px;\n\n @media (max-width: 768px) {\n padding: 20px 16px;\n font-size: 14px;\n }\n`;\nexport const SpinnerContainer = styled('div')`\n padding: 10px;\n display: flex;\n justify-content: center;\n`;\n","import React, { ReactElement, useState, useEffect, useMemo } from 'react';\nimport { Typography, Box, useMediaQuery, Tooltip } from '@mui/material';\nimport { NsLink, NsImage } from '@nuskin/foundation-ui-components';\nimport {\n MysiteHeroContainer,\n MysiteHeroContainerMobile,\n BadgeContainer,\n Badge,\n ToggleButtonMobile,\n StyledSpan,\n ImgTabIndex,\n ContactLink,\n BadgeValue,\n} from '@/common/headers/MysiteHero.styled';\nimport { PlaceholderImage } from '../icon/icons/PlaceholderImage';\nimport { ArrowDownIcon } from '../icon/icons/ArrowDownIcon';\nimport { trackGTMEvent } from '../utils/gtmTracking';\n\ntype MysiteHeroProps = {\n readonly imageDetails?: {\n imageSrc: string;\n imageAlt: string;\n bgColor: string;\n };\n readonly shopTitle: string;\n readonly shopDescription: string;\n readonly socialTitleText: string;\n readonly email: string;\n readonly phone: string;\n readonly className?: string;\n readonly bannerProps?: {\n backgroundColor?: string;\n headlineFont?: string;\n paragraphFont?: string;\n };\n readonly socialIcons?: {\n type: string;\n url: string;\n }[];\n readonly expirationDate?: string;\n readonly showBadges?: boolean;\n readonly totalSavings?: string;\n};\n\ntype ImageDetails = {\n imageSrc: string;\n imageAlt: string;\n bgColor: string;\n};\n\ntype BannerProps = {\n backgroundColor?: string;\n headlineFont?: string;\n paragraphFont?: string;\n};\n\ntype ContentProps = {\n shopTitle: string;\n shopDescription: string;\n socialTitleText: string;\n email: string;\n phone: string;\n showBadges: boolean;\n expirationDate?: string;\n totalSavings?: string;\n};\n\nconst renderImageContent = (imageDetails: ImageDetails | undefined, bannerProps: BannerProps, className: string) => {\n const placeholderClass = className.includes('mobile') ? 'placeholder-image-mobile' : 'placeholder-image';\n return imageDetails?.imageSrc ? (\n <ImgTabIndex tabIndex={0}>\n <NsImage className={className} src={imageDetails.imageSrc} alt={imageDetails.imageAlt} />\n </ImgTabIndex>\n ) : (\n <Box className={placeholderClass}>\n <PlaceholderImage\n width={className.includes('mobile') ? '144px' : '246px'}\n height={className.includes('mobile') ? '144px' : '246px'}\n backgroundColor={bannerProps?.backgroundColor ?? '#5F5F5F'}\n />\n </Box>\n );\n};\n\nconst renderBadges = (\n showBadges: boolean,\n expirationDate: string,\n isMobile: boolean,\n hasWhiteBackground: boolean,\n totalSavings?: string,\n) => {\n if (!showBadges || (!expirationDate && !totalSavings)) return null;\n\n const badgeClass = isMobile ? 'mobile-badge' : 'tablet-badge';\n const containerClass = isMobile ? 'mobile-badges' : 'tablet-badges';\n\n return (\n <BadgeContainer className={containerClass}>\n {totalSavings && (\n <Badge\n className={`${badgeClass} total-savings-badge`}\n hasWhiteBackground={hasWhiteBackground}\n tabIndex={0}\n >\n <BadgeValue className=\"badge-value\">{totalSavings}</BadgeValue>\n </Badge>\n )}\n {expirationDate && (\n <Badge\n className={`${badgeClass} expiration-badge`}\n hasWhiteBackground={hasWhiteBackground}\n tabIndex={0}\n >\n <BadgeValue className=\"badge-value\">{expirationDate}</BadgeValue>\n </Badge>\n )}\n </BadgeContainer>\n );\n};\n\nconst renderMobileContent = (\n props: ContentProps,\n isScrolled: boolean,\n renderSocialMediaIcons: React.ReactNode,\n isMobile: boolean,\n hasWhiteBackground: boolean,\n) => {\n const { shopTitle, socialTitleText, email, showBadges, expirationDate, phone, totalSavings } = props;\n\n return (\n <Box className=\"content-mobile\">\n <Typography tabIndex={shopTitle?.trim() ? 0 : -1} className=\"body-title-mobile\">\n {shopTitle}\n </Typography>\n {!isScrolled && (\n <>\n <Typography tabIndex={socialTitleText?.trim() ? 0 : -1} className=\"social-title-text-mobile\">\n {socialTitleText}\n </Typography>\n {email?.trim() && renderContactLink('email', email, 'email-text-mobile')}\n {phone?.trim() && renderContactLink('phone', phone, 'phone-text-mobile')}\n <Box className=\"social-icons-mobile\">{renderSocialMediaIcons}</Box>\n {renderBadges(showBadges, expirationDate ?? '', isMobile, hasWhiteBackground, totalSavings)}\n </>\n )}\n </Box>\n );\n};\n\nconst renderDesktopContent = (\n props: ContentProps,\n isScrolled: boolean,\n renderSocialMediaIcons: React.ReactNode,\n isMobile: boolean,\n hasWhiteBackground: boolean,\n) => {\n const { shopTitle, shopDescription, socialTitleText, email, phone, showBadges, expirationDate, totalSavings } =\n props;\n\n return (\n <Box className=\"content\">\n <Typography tabIndex={shopTitle?.trim() ? 0 : -1} className=\"body-title\">\n {shopTitle}\n </Typography>\n {!isScrolled && (\n <>\n {shopDescription?.length > 480 ? (\n <Tooltip title={shopDescription} arrow>\n <Typography tabIndex={shopDescription?.trim() ? 0 : -1} className=\"body-text\">\n {shopDescription}\n </Typography>\n </Tooltip>\n ) : (\n <Typography tabIndex={shopDescription?.trim() ? 0 : -1} className=\"body-text\">\n {shopDescription}\n </Typography>\n )}\n <Box className=\"social-media\">\n <Typography tabIndex={socialTitleText?.trim() ? 0 : -1} className=\"social-title-text\">\n {socialTitleText}\n </Typography>\n <Box className=\"social-icons\">\n {renderSocialMediaIcons}\n {email?.trim() && renderContactLink('email', email, 'email-text')}\n {phone?.trim() && renderContactLink('phone', phone, 'phone-text')}\n </Box>\n </Box>\n {renderBadges(showBadges, expirationDate ?? '', isMobile, hasWhiteBackground, totalSavings)}\n </>\n )}\n </Box>\n );\n};\n\nconst checkIfImageIsCircular = (url: string): Promise<boolean> => {\n return new Promise((resolve, reject) => {\n const imageContext = new Image();\n imageContext.crossOrigin = 'anonymous';\n imageContext.src = url;\n\n imageContext.onload = () => {\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n if (!context) return reject(new Error('Canvas not supported'));\n\n canvas.width = imageContext.width;\n canvas.height = imageContext.height;\n\n context.drawImage(imageContext, 0, 0);\n\n const corners = [\n context.getImageData(0, 0, 1, 1).data,\n context.getImageData(imageContext.width - 1, 0, 1, 1).data,\n context.getImageData(0, imageContext.height - 1, 1, 1).data,\n context.getImageData(imageContext.width - 1, imageContext.height - 1, 1, 1).data,\n ];\n\n const isCircular = corners.every((corner) => {\n const imageArray = Array.prototype.slice.call(corner);\n const alpha = imageArray[3];\n return alpha < 10;\n });\n resolve(isCircular);\n };\n imageContext.onerror = () => reject(new Error('Failed to load image'));\n });\n};\n\nconst isWhiteOrNearWhite = (color: string | undefined): boolean => {\n if (!color) return false;\n\n const hex = color.replace('#', '').toLowerCase();\n\n /* regex pattern for hex color format: 3 chars (#fff), 4 chars (#ffff), 6 chars (#ffffff), or 8 chars (#ffffffff)*/\n if (!/^[0-9a-f]{3,4}$|^[0-9a-f]{6}$|^[0-9a-f]{8}$/i.test(hex)) return false;\n\n let fullHex = hex;\n if (hex.length === 3 || hex.length === 4) {\n fullHex = hex\n .split('')\n .map((char) => char + char)\n .join('');\n }\n\n const r = Number.parseInt(fullHex.substring(0, 2), 16);\n const g = Number.parseInt(fullHex.substring(2, 4), 16);\n const b = Number.parseInt(fullHex.substring(4, 6), 16);\n\n const threshold = 220;\n return r >= threshold && g >= threshold && b >= threshold;\n};\n\nconst createContactClickHandler = (contactType: 'email' | 'phone', contactValue: string) => ({\n onClick: () => {\n trackGTMEvent({\n event: 'contact_click',\n contact_type: contactType,\n contact_value: contactValue,\n click_element: `${contactType}_link`,\n });\n },\n onKeyDown: (e: React.KeyboardEvent<HTMLAnchorElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n trackGTMEvent({\n event: 'contact_click',\n contact_type: contactType,\n contact_value: contactValue,\n click_element: `${contactType}_link`,\n });\n globalThis.location.href = `${contactType === 'email' ? 'mailto' : 'tel'}:${contactValue}`;\n }\n },\n});\n\nconst renderContactLink = (contactType: 'email' | 'phone', contactValue: string, className: string) => {\n const protocol = contactType === 'email' ? 'mailto:' : 'tel:';\n const handlers = createContactClickHandler(contactType, contactValue);\n\n return (\n <Typography className={className}>\n <ContactLink href={`${protocol}${contactValue}`} {...handlers}>\n {contactValue}\n </ContactLink>\n </Typography>\n );\n};\nexport default function MysiteHero({\n className,\n shopTitle,\n shopDescription,\n socialTitleText,\n imageDetails,\n email,\n phone,\n bannerProps,\n socialIcons,\n expirationDate,\n showBadges = false,\n totalSavings,\n}: MysiteHeroProps): ReactElement {\n const isMobile = useMediaQuery('(max-width: 560px)');\n const [isScrolled, setIsScrolled] = useState(false);\n const [isDescriptionExpanded, setIsDescriptionExpanded] = useState(false);\n const [hasWhiteBackground, setHasWhiteBackground] = useState(false);\n const [isImageCircular, setIsImageCircular] = useState(false);\n\n const toggleDescription = () => {\n setIsDescriptionExpanded(!isDescriptionExpanded);\n };\n\n useEffect(() => {\n const checkImage = async () => {\n if (imageDetails?.imageSrc) {\n const isCircular = await checkIfImageIsCircular(imageDetails.imageSrc);\n setIsImageCircular(isCircular);\n } else {\n setIsImageCircular(false);\n }\n };\n\n checkImage();\n }, [imageDetails?.imageSrc]);\n\n useEffect(() => {\n setHasWhiteBackground(isWhiteOrNearWhite(bannerProps?.backgroundColor));\n }, [bannerProps?.backgroundColor]);\n\n useEffect(() => {\n let debounceTimeout: ReturnType<typeof setTimeout>;\n let lastScrollY = window.scrollY;\n let currentScrollState = false;\n let isTransitioning = false;\n let lastUpdateTime = 0;\n\n const updateScrollState = (newState: boolean) => {\n const now = Date.now();\n\n if (currentScrollState !== newState && !isTransitioning) {\n if (now - lastUpdateTime < 100) {\n return;\n }\n\n isTransitioning = true;\n currentScrollState = newState;\n lastUpdateTime = now;\n\n if (newState) {\n setIsDescriptionExpanded(false);\n }\n\n clearTimeout(debounceTimeout);\n setIsScrolled(newState);\n\n debounceTimeout = setTimeout(() => {\n isTransitioning = false;\n\n if (newState && window.scrollY < 15) {\n window.scrollTo({\n top: isMobile ? 20 : 30,\n behavior: 'smooth',\n });\n }\n }, 300);\n }\n };\n\n const handleScroll = () => {\n const currentScrollY = window.scrollY;\n\n if (isTransitioning) {\n lastScrollY = currentScrollY;\n return;\n }\n\n const scrollDelta = Math.abs(currentScrollY - lastScrollY);\n\n if (scrollDelta < 0.5) {\n return;\n }\n\n const scrollingDown = currentScrollY > lastScrollY;\n\n const scrollDownThreshold = isMobile ? 15 : 25;\n const scrollUpThreshold = isMobile ? 8 : 12;\n\n if (scrollingDown && currentScrollY > scrollDownThreshold && !currentScrollState) {\n updateScrollState(true);\n } else if (!scrollingDown && currentScrollY < scrollUpThreshold && currentScrollState) {\n updateScrollState(false);\n }\n\n lastScrollY = currentScrollY;\n };\n\n const initializeState = () => {\n const initialScrollY = window.scrollY;\n const scrollThreshold = isMobile ? 5 : 10;\n const shouldStartCompact = initialScrollY > scrollThreshold;\n\n currentScrollState = shouldStartCompact;\n setIsScrolled(shouldStartCompact);\n lastScrollY = initialScrollY;\n lastUpdateTime = Date.now();\n };\n\n let rafId: number | null = null;\n let lastRafTime = 0;\n const throttledScrollHandler = () => {\n if (rafId) return;\n\n const now = Date.now();\n if (now - lastRafTime < 16) {\n return;\n }\n\n rafId = requestAnimationFrame(() => {\n handleScroll();\n lastRafTime = Date.now();\n rafId = null;\n });\n };\n\n initializeState();\n window.addEventListener('scroll', throttledScrollHandler, { passive: true });\n\n return () => {\n window.removeEventListener('scroll', throttledScrollHandler);\n if (rafId) cancelAnimationFrame(rafId);\n clearTimeout(debounceTimeout);\n };\n }, [isMobile]);\n\n const renderSocialMediaIcons = useMemo(() => {\n return socialIcons?.map((icon, index) => {\n const handleSocialClick = (e: React.MouseEvent) => {\n e.preventDefault();\n trackGTMEvent({\n event: 'social_click',\n social_platform: icon.type,\n social_url: icon.url,\n click_element: 'social_icon',\n });\n window.open(icon.url, '_blank');\n };\n\n return (\n <StyledSpan key={icon?.type + index} onClick={handleSocialClick}>\n <NsLink href={icon.url} target=\"_blank\">\n <NsImage\n key={icon?.type + index}\n src={`https://www.google.com/s2/favicons?domain=${icon?.url}&sz=24`}\n alt={`${icon.type} icon`}\n width=\"24\"\n height=\"24\"\n />\n </NsLink>\n </StyledSpan>\n );\n });\n }, [socialIcons]);\n\n const containerClass = `${className} ${isScrolled ? 'scrolled' : ''}`;\n const props = {\n shopTitle,\n shopDescription,\n socialTitleText,\n email,\n phone,\n showBadges,\n expirationDate,\n totalSavings,\n };\n\n const getCharacterLimit = () => {\n if (window.innerWidth <= 380) return 50;\n if (window.innerWidth <= 415) return 56;\n if (window.innerWidth <= 460) return 62;\n return 80;\n };\n\n const shouldShowToggle = isMobile && shopDescription && shopDescription.length > getCharacterLimit();\n\n return isMobile ? (\n <MysiteHeroContainerMobile\n className={containerClass}\n data-testid=\"my-site-shop-header\"\n bannerProps={bannerProps}\n isCircularImage={isImageCircular}\n hasWhiteBackground={hasWhiteBackground}\n >\n <Box className=\"image-content-mobile\">\n {renderImageContent(imageDetails, bannerProps ?? {}, 'bg-image-mobile')}\n {renderMobileContent(props, isScrolled, renderSocialMediaIcons, isMobile, hasWhiteBackground)}\n </Box>\n {!isScrolled && (\n <Box className=\"expandable-description-mobile\">\n <Typography\n className={`description-content-mobile ${isDescriptionExpanded || !shouldShowToggle ? 'expanded' : 'collapsed'}`}\n >\n {shopDescription}\n </Typography>\n {shouldShowToggle && (\n <ToggleButtonMobile onClick={toggleDescription}>\n <ArrowDownIcon\n width={16}\n height={16}\n className={`arrow-icon-mobile ${isDescriptionExpanded ? 'expanded' : ''}`}\n />\n </ToggleButtonMobile>\n )}\n </Box>\n )}\n </MysiteHeroContainerMobile>\n ) : (\n <MysiteHeroContainer\n className={containerClass}\n data-testid=\"my-site-shop-header\"\n bannerProps={bannerProps}\n isCircularImage={isImageCircular}\n hasWhiteBackground={hasWhiteBackground}\n >\n {renderImageContent(imageDetails, bannerProps ?? {}, 'bg-image')}\n {renderDesktopContent(props, isScrolled, renderSocialMediaIcons, isMobile, hasWhiteBackground)}\n </MysiteHeroContainer>\n );\n}\n","import React from 'react';\nimport { styled } from '@nuskin/foundation-theme';\nimport { Box, BoxProps } from '@mui/material';\n\ninterface StyledBoxProps extends BoxProps {\n bannerProps?: {\n backgroundColor?: string;\n headlineFont?: string;\n paragraphFont?: string;\n };\n isCircularImage?: boolean;\n hasWhiteBackground?: boolean;\n}\n\ninterface BadgeProps extends BoxProps {\n hasWhiteBackground?: boolean;\n}\n\nconst getContactTextStyles = (hasWhiteBackground: boolean | undefined) => ({\n fontSize: '12px',\n fontStyle: 'normal' as const,\n fontWeight: '600',\n lineHeight: '16px',\n letterSpacing: '0.12px',\n color: hasWhiteBackground ? '#000000' : '#FFFFFF',\n '& a': {\n color: 'inherit',\n textDecoration: 'none',\n '&:hover': {\n textDecoration: 'underline',\n },\n },\n});\n\nconst getSocialTitleStyles = (hasWhiteBackground: boolean | undefined) => ({\n fontSize: '12px',\n fontStyle: 'normal' as const,\n fontWeight: '700',\n lineHeight: '16px',\n letterSpacing: '0.48px',\n color: hasWhiteBackground ? '#000000' : '#FFFFFF',\n textTransform: 'uppercase' as const,\n paddingLeft: '5px',\n});\n\nconst getSocialIconsStyles = () => ({\n display: 'flex',\n flexDirection: 'row' as const,\n gap: '10px',\n alignItems: 'center',\n});\n\nconst getContactTextMobileStyles = (hasWhiteBackground: boolean | undefined) => ({\n ...getContactTextStyles(hasWhiteBackground),\n paddingBottom: '11px',\n wordBreak: 'break-all' as const,\n overflowWrap: 'break-word' as const,\n paddingLeft: '5px',\n '& a': {\n color: 'inherit',\n textDecoration: 'none',\n },\n '@media (max-width: 420px)': {\n fontSize: '11px',\n lineHeight: '15px',\n paddingBottom: '8px',\n },\n '@media (max-width: 400px)': {\n fontSize: '10px',\n lineHeight: '14px',\n paddingBottom: '6px',\n },\n '@media (max-width: 375px)': {\n fontSize: '8px',\n lineHeight: '12px',\n paddingBottom: '4px',\n },\n});\n\nconst getSocialTitleMobileStyles = (hasWhiteBackground: boolean | undefined) => ({\n ...getSocialTitleStyles(hasWhiteBackground),\n marginBottom: '11px',\n transition: 'opacity 0.3s ease-out, transform 0.3s ease-out',\n opacity: 1,\n transform: 'translateY(0)',\n '@media (max-width: 420px)': {\n fontSize: '11px',\n lineHeight: '14px',\n marginBottom: '8px',\n },\n '@media (max-width: 400px)': {\n fontSize: '10px',\n lineHeight: '12px',\n marginBottom: '5px',\n },\n '@media (max-width: 375px)': {\n fontSize: '8px',\n lineHeight: '11px',\n marginBottom: '4px',\n },\n});\n\nexport const MysiteHeroContainer = styled((props: StyledBoxProps) => <Box {...props} />)(\n ({ bannerProps, isCircularImage, hasWhiteBackground }) => ({\n backgroundClip: 'border-box',\n display: 'flex',\n background: bannerProps?.backgroundColor ?? '#383838',\n position: 'relative',\n overflow: 'hidden',\n width: '100%',\n height: 'auto',\n flexDirection: 'row',\n alignItems: 'center',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n willChange: 'transform, opacity',\n transform: 'translateZ(0)',\n backfaceVisibility: 'hidden',\n '&.scrolled': {\n top: 0,\n left: 0,\n right: 0,\n boxShadow: '0 2px 8px rgba(0,0,0,0.2)',\n '.content': {\n paddingTop: '0',\n justifyContent: 'center',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n },\n '.body-title': {\n fontSize: '26px',\n lineHeight: '34px',\n marginBottom: '0',\n fontStyle: 'normal',\n fontWeight: '400',\n fontFamily: bannerProps?.headlineFont ?? 'Lora',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n },\n\n '.bg-image': {\n width: '90px',\n height: '90px',\n padding: isCircularImage ? '2px' : '0px',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n objectFit: 'cover',\n objectPosition: 'center',\n },\n '.placeholder-image': {\n '& > div': {\n width: '90px',\n height: '90px',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n },\n },\n },\n '.content': {\n width: '70%',\n height: '100%',\n marginLeft: '2%',\n marginRight: 'auto',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n boxSizing: 'border-box',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n },\n '.bg-image': {\n width: '252px',\n height: '252px',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n willChange: 'width, height, transform',\n padding: isCircularImage ? '3px' : '0px',\n objectFit: 'cover',\n objectPosition: 'center',\n },\n '.placeholder-image': {\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n willChange: 'width, height, transform',\n '& > div': {\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n },\n },\n '.body-title': {\n fontSize: '32px',\n lineHeight: '38px',\n marginBottom: '8px',\n fontWeight: '400',\n color: hasWhiteBackground ? '#000000' : '#FFFFFF',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n fontFamily: bannerProps?.headlineFont ?? 'Lora',\n paddingLeft: '5px',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n },\n '.body-text': {\n fontSize: '16px',\n marginBottom: '12px',\n fontStyle: 'normal',\n fontWeight: '400',\n lineHeight: '22px',\n color: hasWhiteBackground ? '#000000' : '#FFFFFF',\n fontFamily: bannerProps?.paragraphFont ?? 'inherit',\n display: '-webkit-box',\n WebkitBoxOrient: 'vertical',\n overflow: 'hidden',\n WebkitLineClamp: 3,\n textOverflow: 'ellipsis',\n paddingLeft: '5px',\n transition: 'opacity 0.3s ease-out, transform 0.3s ease-out',\n opacity: 1,\n transform: 'translateY(0)',\n },\n '.social-media': {\n display: 'flex',\n flexDirection: 'column',\n transition: 'opacity 0.3s ease-out, transform 0.3s ease-out',\n opacity: 1,\n transform: 'translateY(0)',\n },\n '.email-text': getContactTextStyles(hasWhiteBackground),\n '.phone-text': getContactTextStyles(hasWhiteBackground),\n '.social-title-text': {\n ...getSocialTitleStyles(hasWhiteBackground),\n marginBottom: '8px',\n },\n '.social-icons': {\n ...getSocialIconsStyles(),\n paddingBottom: '8px',\n },\n }),\n);\n\nexport const MysiteHeroContainerMobile = styled((props: StyledBoxProps) => <Box {...props} />)(\n ({ bannerProps, isCircularImage, hasWhiteBackground }) => ({\n backgroundClip: 'border-box',\n display: 'flex',\n background: bannerProps?.backgroundColor ?? '#383838',\n position: 'relative',\n overflow: 'hidden',\n width: '100%',\n flexDirection: 'column',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n willChange: 'transform, opacity',\n transform: 'translateZ(0)',\n backfaceVisibility: 'hidden',\n '&.scrolled': {\n top: 0,\n left: 0,\n right: 0,\n boxShadow: '0 2px 8px rgba(0,0,0,0.2)',\n '.content-mobile': {\n paddingTop: '5px',\n width: '60%',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n },\n '.body-title-mobile': {\n fontSize: '18px',\n lineHeight: '28px',\n marginBottom: '0',\n fontStyle: 'normal',\n fontWeight: '400',\n fontFamily: bannerProps?.headlineFont ?? 'Lora',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n },\n '.bg-image-mobile': {\n width: '75px',\n height: '75px',\n padding: isCircularImage ? '2px' : '0px',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n objectFit: 'cover',\n objectPosition: 'center',\n },\n '.placeholder-image-mobile': {\n '& > div': {\n width: '75px !important',\n height: '75px !important',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n },\n },\n },\n '.image-content-mobile': {\n display: 'flex',\n flexDirection: 'row',\n width: '100%',\n justifyContent: 'center',\n alignItems: 'center',\n },\n '.content-mobile': {\n width: '55%',\n height: '100%',\n paddingTop: '10px',\n paddingRight: '10px',\n marginLeft: '8px',\n marginRight: 'auto',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n position: 'relative',\n boxSizing: 'border-box',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n '@media (max-width: 420px)': {\n paddingTop: '8px',\n width: '100%',\n },\n '@media (max-width: 400px)': {\n paddingTop: '6px',\n width: '100%',\n height: '100%',\n },\n '@media (max-width: 375px)': {\n paddingTop: '4px',\n width: '100%',\n height: '100%',\n },\n },\n '.bg-image-mobile': {\n width: '144px',\n height: '144px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n objectFit: 'cover',\n objectPosition: 'center',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n willChange: 'width, height, transform',\n padding: isCircularImage ? '2px' : '0px',\n '@media (max-width: 420px)': {\n width: '120px',\n height: '120px',\n },\n '@media (max-width: 400px)': {\n width: '112px',\n height: '112px',\n },\n '@media (max-width: 375px)': {\n width: '90px',\n height: '90px',\n },\n },\n '.placeholder-image-mobile': {\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n willChange: 'width, height, transform',\n '& > div': {\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n width: '144px',\n height: '144px',\n '@media (max-width: 420px)': {\n width: '120px',\n height: '120px',\n },\n '@media (max-width: 400px)': {\n width: '110px !important',\n height: '110px !important',\n },\n '@media (max-width: 375px)': {\n width: '90px',\n height: '90px',\n },\n },\n },\n '.body-title-mobile': {\n fontSize: '22px',\n lineHeight: '28px',\n marginBottom: '13px',\n fontWeight: '400',\n color: hasWhiteBackground ? '#000000' : '#FFFFFF',\n fontStyle: 'normal',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n fontFamily: bannerProps?.headlineFont ?? 'Lora',\n paddingLeft: '5px',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n '@media (max-width: 420px)': {\n fontSize: '16px',\n lineHeight: '24px',\n marginBottom: '8px',\n },\n '@media (max-width: 400px)': {\n fontSize: '16px',\n lineHeight: '22px',\n marginBottom: '6px',\n },\n '@media (max-width: 375px)': {\n fontSize: '14px',\n lineHeight: '20px',\n marginBottom: '4px',\n },\n },\n '.body-text-mobile': {\n fontSize: '14px',\n padding: '20px 25px 20px 25px',\n fontStyle: 'normal',\n fontWeight: '400',\n lineHeight: '20px',\n color: '#252525',\n backgroundColor: '#E0E0E0',\n fontFamily: bannerProps?.paragraphFont ?? 'inherit',\n transition: 'all 0.25s cubic-bezier(0.4, 0, 0.2, 1)',\n opacity: 1,\n transform: 'translateY(0)',\n },\n '.expandable-description-mobile': {\n backgroundColor: '#E0E0E0',\n position: 'relative',\n },\n '.description-content-mobile': {\n fontSize: '14px',\n padding: '10px 15px',\n fontStyle: 'normal',\n fontWeight: '400',\n lineHeight: '20px',\n color: '#252525',\n fontFamily: bannerProps?.paragraphFont ?? 'inherit',\n transition: 'max-height 0.3s ease-in-out, opacity 0.3s ease-in-out',\n overflow: 'hidden',\n position: 'relative',\n '&.collapsed': {\n maxHeight: '50px',\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n height: '20px',\n background: 'linear-gradient(transparent, rgba(224, 224, 224, 0.8), #E0E0E0)',\n pointerEvents: 'none',\n },\n },\n '&.expanded': {\n maxHeight: 'none',\n whiteSpace: 'normal',\n display: 'block',\n '&::after': {\n display: 'none',\n },\n },\n },\n '.email-text-mobile': getContactTextMobileStyles(hasWhiteBackground),\n '.phone-text-mobile': getContactTextMobileStyles(hasWhiteBackground),\n '.social-title-text-mobile': getSocialTitleMobileStyles(hasWhiteBackground),\n '.social-icons-mobile': {\n ...getSocialIconsStyles(),\n paddingBottom: '10px',\n transition: 'opacity 0.3s ease-out, transform 0.3s ease-out',\n opacity: 1,\n transform: 'translateY(0)',\n '& img': {\n width: '24px',\n height: '24px',\n '@media (max-width: 400px)': {\n width: '20px',\n height: '20px',\n },\n '@media (max-width: 375px)': {\n width: '18px',\n height: '18px',\n },\n },\n '@media (max-width: 420px)': {\n paddingBottom: '8px',\n },\n '@media (max-width: 400px)': {\n paddingBottom: '4px',\n },\n '@media (max-width: 375px)': {\n paddingBottom: '3px',\n },\n },\n }),\n);\n\nexport const BadgeContainer = styled(Box)({\n display: 'flex',\n gap: '12px',\n marginBottom: '16px',\n paddingLeft: '5px',\n\n '&.mobile-badges': {\n flexDirection: 'column',\n gap: '8px',\n marginBottom: '12px',\n },\n\n '&.tablet-badges': {\n flexDirection: 'row',\n gap: '12px',\n marginBottom: '8px',\n },\n});\n\nexport const Badge = styled((props: BadgeProps) => <Box {...props} />)(({ hasWhiteBackground }) => ({\n backgroundColor: 'rgba(255, 255, 255, 0.2)',\n backdropFilter: 'blur(10px)',\n borderRadius: '20px',\n padding: '8px 16px',\n display: 'flex',\n alignItems: 'center',\n gap: '4px',\n border: '1px solid rgba(255, 255, 255, 0.3)',\n transition: 'all 0.3s ease',\n\n '&.mobile-badge': {\n padding: '6px 12px',\n borderRadius: '16px',\n fontSize: '12px',\n },\n\n '&.tablet-badge': {\n padding: '8px 16px',\n borderRadius: '20px',\n fontSize: '14px',\n },\n\n '&.total-savings-badge': {\n backgroundColor: '#4A6987',\n border: 'none',\n borderRadius: '8px',\n padding: '8px 16px',\n gap: '4px',\n minHeight: '32px',\n backdropFilter: 'none',\n '.badge-value': {\n color: '#FFFFFF',\n },\n '&:hover': {\n backgroundColor: '#4A6987',\n transform: 'none',\n boxShadow: 'none',\n },\n },\n\n '&.expiration-badge': {\n borderRadius: '8px',\n padding: '8px 16px',\n gap: '4px',\n minHeight: '32px',\n },\n\n '&:hover': {\n backgroundColor: 'rgba(255, 255, 255, 0.3)',\n transform: 'translateY(-1px)',\n boxShadow: '0 4px 12px rgba(0, 0, 0, 0.1)',\n },\n\n '.badge-text': {\n color: hasWhiteBackground ? '#000000' : '#FFFFFF',\n fontWeight: '400',\n opacity: 0.9,\n },\n\n '.badge-value': {\n color: hasWhiteBackground ? '#000000' : '#FFFFFF',\n fontWeight: '600',\n },\n}));\nexport const ToggleButtonMobile = styled('button')({\n backgroundColor: '#E0E0E0',\n border: '1px solid #252525',\n borderRadius: '10px',\n cursor: 'pointer',\n width: '40px',\n height: '20px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n margin: '10px auto 5px auto',\n transition: 'all 0.2s ease',\n '& .arrow-icon-mobile': {\n transition: 'transform 0.3s ease',\n '&.expanded': {\n transform: 'rotate(180deg)',\n },\n },\n});\nexport const StyledSpan = styled(Box)`\n background: none;\n border: 2px solid transparent;\n cursor: pointer;\n padding: 2px;\n display: flex;\n align-items: center;\n border-radius: 8px;\n transition: all 0.3s ease;\n\n &:hover {\n transform: scale(1.1);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n }\n\n &:focus,\n &:focus-within {\n outline: none;\n border-color: #007bff;\n box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25);\n }\n\n &:hover svg {\n fill: #ffffff;\n }\n`;\nexport const ImgTabIndex = styled('span')`\n line-height: 0.5;\n`;\n\nexport const ContactLink = styled('a')({\n fontSize: 'inherit',\n fontFamily: 'inherit',\n fontWeight: 'inherit',\n lineHeight: 'inherit',\n letterSpacing: 'inherit',\n color: 'inherit',\n textDecoration: 'none',\n '&:hover': {\n textDecoration: 'underline',\n },\n});\n\nexport const BadgeValue = styled('span')({});\n","import React from 'react';\nimport { Box } from '@mui/material';\n\ntype PlaceholderImageProps = {\n readonly width: string | number;\n readonly height: string | number;\n readonly backgroundColor: string;\n};\n\nexport const PlaceholderImage: React.FC<PlaceholderImageProps> = ({ width, height, backgroundColor }) => {\n return (\n <Box\n sx={{\n width,\n height,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor,\n }}\n data-testid=\"placeholder-image\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"128\" height=\"129\" viewBox=\"0 0 128 129\" fill=\"none\">\n <g id=\"ns_logomark\">\n <path\n id=\"Vector\"\n d=\"M127.495 52.1946C125.663 47.9538 122.999 44.1171 119.661 40.9073C112.565 34.2835 102.562 31.7037 93.1175 34.0622C83.6733 36.4206 76.0882 43.3926 72.991 52.5619C71.4142 56.8414 70.6063 61.3627 70.6039 65.9196C70.6039 85.8227 70.6039 105.737 70.6039 125.662C70.6039 129.001 70.6039 129.001 66.9051 128.834C66.9051 128.2 66.9051 127.499 66.9051 126.831C66.9051 104.323 66.9051 81.8263 66.9051 59.3409C66.3415 45.3064 74.9302 32.5039 88.1888 27.6164C89.79 27.0612 91.4307 26.6259 93.0981 26.314C94.7114 25.98 96.4605 25.8465 98.0738 25.6461C96.0231 16.3291 78.9419 5.60953 65.0889 4.97504C50.3084 4.62252 36.6074 12.6365 29.7509 25.6461C31.331 25.8465 32.8779 25.9466 34.3569 26.2138C48.0999 28.544 58.7086 39.4998 60.5168 53.2298C60.8904 55.7285 61.0812 58.2508 61.0877 60.7769C61.0877 82.7507 61.0877 104.724 61.0877 126.697C61.0877 128.434 60.6842 129.169 58.8016 128.968C56.9183 128.768 57.1204 128.2 57.1204 126.965C57.1204 119.985 57.1204 113.006 57.1204 105.993C57.1204 92.1674 57.1204 78.3423 57.1204 64.5171C57.2385 56.3928 54.2457 48.5271 48.7477 42.5103C42.2429 35.5282 32.6539 32.2371 23.1959 33.7401C13.7379 35.243 5.66194 41.3411 1.67448 49.9906C1.23781 50.8254 0.867444 51.6937 0.262573 52.9293C5.79294 22.3996 32.4752 0.139867 63.7085 0.000656323C94.9411 -0.138555 121.824 21.8824 127.629 52.3616\"\n fill=\"#252525\"\n />\n <path\n id=\"Vector_2\"\n d=\"M86.0995 124.927C86.0995 124.293 86.0995 123.858 86.0995 123.425C86.0995 111.669 86.0995 100.049 86.0995 88.1269C85.8836 82.4231 88.0775 76.89 92.1523 72.8653C97.3131 67.9567 104.984 66.7091 111.452 69.7263C117.892 72.1185 122.166 78.225 122.178 85.0541C122.372 92.1747 119.781 99.0921 114.949 104.356C107.882 113.237 98.6134 120.141 88.05 124.392C87.4217 124.616 86.782 124.805 86.1335 124.96\"\n fill=\"#252525\"\n />\n <path\n id=\"Vector_3\"\n d=\"M41.8183 125.395C37.6149 123.224 33.6477 121.487 29.9828 119.25C21.5405 114.299 14.4778 107.331 9.43828 98.9796C6.53442 94.3985 5.34408 88.9493 6.07591 83.5852C7.056 75.2882 13.8859 68.8841 22.2829 68.3905C31.1231 67.2473 39.3527 73.0751 41.1455 81.7484C41.76 84.263 42.0762 86.8411 42.0868 89.4287C42.0868 100.516 42.0868 111.636 42.0868 122.823C42.0868 123.457 42.0867 124.059 41.8854 125.294\"\n fill=\"#252525\"\n />\n <path\n id=\"Vector_4\"\n d=\"M51.3337 127.431C47.9713 127.431 47.6681 127.198 47.6681 124.326V76.6386C48.1096 67.937 42.9747 59.906 34.8574 56.602C25.8992 52.8557 15.5485 54.8615 8.66523 61.6779C4.28638 66.6086 1.89197 72.9696 1.94049 79.5438C1.95423 80.2444 1.78037 80.9357 1.43588 81.5476C1.06552 79.9446 0.62885 78.2081 0.426687 76.7387C-0.724024 70.4463 0.471163 63.9529 3.78906 58.472C6.09291 54.6111 9.65016 51.6434 13.8762 50.0567C22.8587 46.555 32.9393 47.1785 41.4148 51.7598C47.6592 54.8694 51.5262 61.2882 51.3337 68.2232C51.5019 87.6249 51.3337 107.027 51.3337 126.396C51.3337 126.797 51.3337 127.164 51.3337 127.532\"\n fill=\"#252525\"\n />\n <path\n id=\"Vector_5\"\n d=\"M76.287 127.499V125.094C76.287 107.196 76.4883 89.2963 76.287 71.3966C76.0848 56.9034 84.2554 50.6588 95.7553 48.3545C101.535 47.2005 107.524 47.6393 113.071 49.6235C122.914 53.3319 128.994 63.1725 127.866 73.5672C127.631 76.2831 127.17 78.975 126.487 81.6151C125.916 78.2758 125.68 74.9364 124.772 71.597C122.808 64.3002 117.377 58.4174 110.228 55.8421C103.078 53.2668 95.1132 54.3239 88.8955 58.6734C83.0441 62.6207 79.7011 69.3237 80.086 76.3389C80.086 92.2349 80.086 108.131 80.086 124.026C80.086 127.366 80.086 127.366 76.2198 127.366\"\n fill=\"#252525\"\n />\n </g>\n </svg>\n </Box>\n );\n};\n","import React from 'react';\n\ntype ArrowDownIconProps = {\n readonly width?: string | number;\n readonly height?: string | number;\n readonly className?: string;\n};\n\nexport const ArrowDownIcon: React.FC<ArrowDownIconProps> = ({ width = 16, height = 16, className = '' }) => {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n data-testid=\"arrow-down-icon\"\n >\n <path d=\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z\" />\n </svg>\n );\n};\n","export interface GTMEvent {\n event: string;\n\n [key: string]: unknown;\n}\n\ndeclare global {\n interface Window {\n dataLayer: unknown[];\n }\n}\n\nexport function trackGTMEvent(eventData: GTMEvent): void {\n if (typeof window === 'undefined') {\n return;\n }\n\n const url = window.location.href;\n const updatedEventData = { ...eventData };\n\n const prefix = url.includes('personal-offer') ? 'postorefront_' : 'mysite_';\n updatedEventData.event = prefix + eventData.event;\n\n try {\n if (window.dataLayer) {\n window.dataLayer.push(updatedEventData);\n } else {\n console.error('GTM dataLayer not available, but event logged');\n window.dataLayer = [];\n window.dataLayer.push(updatedEventData);\n }\n } catch (error) {\n console.error('Failed to track GTM event:', error);\n }\n}\n"]}
1
+ {"version":3,"sources":["/gitlab-runner-data/builds/nextgen-development/mysite/npm/react-mysite-elements/dist/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../src/index.ts","../src/common/card/NsProductCard.tsx","../src/common/card/styles/NsProductCard.Styled.tsx","../src/common/carousel/NsProductCarousel.tsx","../src/common/carousel/NsProductCarousel.styled.ts","../src/common/carousel/ProductTabCarousel.tsx","../src/common/Nav-Category-Navigation/NsCategoryNavigation.tsx","../src/common/Nav-Category-Navigation/NsCategoryNavigation.styled.tsx","../src/common/carousel/ProductTabCarousel.styled.tsx","../src/common/headers/MysiteHero.tsx","../src/common/headers/MysiteHero.styled.tsx","../src/common/icon/icons/PlaceholderImage.tsx","../src/common/icon/icons/ArrowDownIcon.tsx","../src/common/utils/gtmTracking.ts"],"names":["Lt","Object","create","J","defineProperty","Ht","getOwnPropertyDescriptor","Dt","getOwnPropertyNames","$t","getPrototypeOf","At","prototype","hasOwnProperty","se","e","t","exports","Wt","o","get","enumerable","ye","i","a","call","D","__esModule","value","_t","require_ReactPropTypesSecret","__commonJSMin","module","ReactPropTypesSecret","require_factoryWithThrowingShims","emptyFunction","emptyFunctionWithReset","Ge","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","err","Error","name","isRequired","getShim","ReactPropTypes","array","bigint","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","require_prop_types","Je","ReactIs","throwOnDirectAccess","index_exports","__export","MysiteHero","NsCategoryNavigation","NsProductCard","NsProductCard_default","ProductCarousel","ProductCardCarousel","ProductTabCarousel","ProductTabCarousel_default","__toCommonJS","import_react","require","import_foundation_ui_components","import_foundation_theme","PriceComponent","M","styled","ProductCardContainer","isMobile","ImageContainer","bgColor","DefaultImage","ProductTitle","ProductBadgeContainer","AddToCartButton","disabled","isHovered","CartIcon","import_material","import_jsx_runtime","productTitle","imageDetails","className","button","onCardClick","productStatusBadge","directSellerBadge","mySitePriceComponent","testId","Ie","useState","isButtonHovered","setIsButtonHovered","Ne","useMediaQuery","handleImageError","target","noImageFallback","fallbackImage","src","v","jsxs","onClick","tabIndex","children","jsx","onError","imageSrc","Be","NsImage","alt","imageAlt","areaLabel","width","title","showButton","buttonText","stopPropagation","onMouseEnter","onMouseLeave","height","viewBox","fill","xmlns","fillRule","clipRule","d","import_react_slick","import_useMediaQuery","import_Box","SlickContainer","w","_","Box","ScrollableContainer","CardList","ControlsContainer","ViewAllWrapper","$isMobile","ProductCountWrapper","ArrowsWrapper","$isDisabled","Scrollablewrapper","CustomTypography","Fe","NsTypography","ViewAllLink","EmptyProductCategories","ControlsHeaderRow","ProductInfoWrapper","CategoryNameWrapper","entries","renderEntry","settings","showControlButtons","allEntryLabel","allEntryLink","categoryName","emptyProductMessage","productsCountLabel","isInitialDataLoading","history","sliderRef","Z","useRef","Ye","prev","useCallback","current","slickPrev","next","slickNext","renderProductEntry","entry","index","h","directSeller","sliderSettings","dots","infinite","speed","slidesToShow","Math","min","length","slidesToScroll","swipe","draggable","arrows","responsive","breakpoint","shouldShowNavigation","renderCarouselContent","map","Ve","Slider","ref","variant","preventDefault","push","qe","NsCarouselControl","viewAllLabel","viewAllUrl","React","import_Tabs","import_Tab","import_prop_types","et","NsCategoryNavigationContainer","tt","div","TabPanel","other","E","role","hidden","id","pe","propTypes","ee","itemArray","controlledValue","onChange","it","internalValue","setInternalValue","rt","at","Tabs","orientation","event","newValue","item","nt","Tab","label","categoryId","findIndex","content","ProductTabCarouselContainer","$","TabsContainer","ContentContainer","LoadingContainer","NoTabsContainer","SpinnerContainer","fetchCategories","fetchProducts","showCustomCategory","emptyProductTabs","getCategoryId","categories","mt","k","isLoadingInitialData","setIsLoadingInitialData","setCategories","selectedTab","setSelectedTab","products","setProducts","loading","setLoading","shouldShowSpinner","setShouldShowSpinner","checkForExistingSpinners","existingSpinners","document","querySelectorAll","useEffect","then","finally","cat","B","xt","NsSpinner","getContactTextStyles","hasWhiteBackground","fontSize","fontStyle","fontWeight","lineHeight","letterSpacing","color","textDecoration","getSocialTitleStyles","textTransform","paddingLeft","getSocialIconsStyles","display","flexDirection","gap","alignItems","getContactTextMobileStyles","paddingBottom","wordBreak","overflowWrap","getSocialTitleMobileStyles","marginBottom","transition","opacity","transform","MysiteHeroContainer","N","oe","j","bannerProps","isCircularImage","backgroundClip","background","backgroundColor","position","overflow","willChange","backfaceVisibility","top","left","right","boxShadow","paddingTop","justifyContent","fontFamily","headlineFont","padding","objectFit","objectPosition","marginLeft","marginRight","boxSizing","whiteSpace","textOverflow","paragraphFont","WebkitBoxOrient","WebkitLineClamp","MysiteHeroContainerMobile","paddingRight","maxHeight","bottom","pointerEvents","BadgeContainer","Badge","backdropFilter","borderRadius","border","minHeight","ToggleButtonMobile","cursor","margin","StyledSpan","ImgTabIndex","ContactLink","BadgeValue","PlaceholderImage","F","Pt","sx","ArrowDownIcon","xe","trackGTMEvent","eventData","window","url","href","updatedEventData","prefix","includes","dataLayer","console","error","renderImageContent","placeholderClass","n","Q","c","renderBadges","showBadges","expirationDate","totalSavings","badgeClass","renderMobileContent","isScrolled","renderSocialMediaIcons","shopTitle","socialTitleText","email","phone","Typography","component","trim","Fragment","renderContactLink","renderDesktopContent","shopDescription","Tooltip","arrow","checkIfImageIsCircular","Promise","resolve","reject","imageContext","Image","crossOrigin","onload","canvas","createElement","context","getContext","drawImage","isCircular","getImageData","data","every","corner","Array","slice","onerror","isWhiteOrNearWhite","hex","replace","toLowerCase","test","fullHex","split","char","join","r","Number","parseInt","substring","g","b","threshold","createContactClickHandler","contactType","contactValue","contact_type","contact_value","click_element","onKeyDown","key","globalThis","protocol","handlers","socialIcons","P","setIsScrolled","isDescriptionExpanded","setIsDescriptionExpanded","setHasWhiteBackground","isImageCircular","setIsImageCircular","toggleDescription","debounceTimeout","lastScrollY","scrollY","currentScrollState","isTransitioning","lastUpdateTime","updateScrollState","newState","now","Date","clearTimeout","setTimeout","scrollTo","behavior","handleScroll","currentScrollY","abs","scrollingDown","scrollDownThreshold","scrollUpThreshold","initializeState","initialScrollY","shouldStartCompact","rafId","lastRafTime","throttledScrollHandler","requestAnimationFrame","addEventListener","passive","removeEventListener","cancelAnimationFrame","useMemo","icon","social_platform","type","social_url","open","NsLink","containerClass","getCharacterLimit","innerWidth","shouldShowToggle"],"mappings":"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","sourcesContent":["\"use strict\";var Lt=Object.create;var J=Object.defineProperty;var Ht=Object.getOwnPropertyDescriptor;var Dt=Object.getOwnPropertyNames;var $t=Object.getPrototypeOf,At=Object.prototype.hasOwnProperty;var se=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Wt=(e,t)=>{for(var o in t)J(e,o,{get:t[o],enumerable:!0})},ye=(e,t,o,i)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let a of Dt(t))!At.call(e,a)&&a!==o&&J(e,a,{get:()=>t[a],enumerable:!(i=Ht(t,a))||i.enumerable});return e};var D=(e,t,o)=>(o=e!=null?Lt($t(e)):{},ye(t||!e||!e.__esModule?J(o,\"default\",{value:e,enumerable:!0}):o,e)),_t=e=>ye(J({},\"__esModule\",{value:!0}),e);var Ge=se((Co,Ze)=>{\"use strict\";var Ot=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\";Ze.exports=Ot});var Je=se((vo,Ke)=>{\"use strict\";var Vt=Ge();function Qe(){}function Ue(){}Ue.resetWarningCache=Qe;Ke.exports=function(){function e(i,a,l,r,d,s){if(s!==Vt){var g=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw g.name=\"Invariant Violation\",g}}e.isRequired=e;function t(){return e}var o={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:Ue,resetWarningCache:Qe};return o.PropTypes=o,o}});var et=se((To,Xe)=>{\"use strict\";Xe.exports=Je()();var ko,So});var Jt={};Wt(Jt,{MysiteHero:()=>he,NsCategoryNavigation:()=>te,NsProductCard:()=>X,ProductCarousel:()=>G,ProductTabCarousel:()=>ht});module.exports=_t(Jt);var Ie=require(\"react\"),Be=require(\"@nuskin/foundation-ui-components\");var M=require(\"@nuskin/foundation-theme\"),we=(0,M.styled)(\"div\")`\n width: 200px;\n text-align: left;\n margin-bottom: 5px;\n`,Ce=(0,M.styled)(\"button\")`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n width: 240px;\n height: ${e=>e.isMobile?\"410px\":\"513px\"};\n overflow: hidden;\n cursor: pointer;\n border: 1px solid #ededed;\n background: var(--color-primary-n-10-primary-white, #fff);\n`,ve=(0,M.styled)(\"div\")`\n width: '240px';\n height: '240px';\n background: ${e=>e.bgColor??\"#f5f5f5\"};\n border-radius: 8px;\n overflow: hidden;\n margin-bottom: 0;\n display: flex;\n align-items: normal;\n justify-content: center;\n position: relative;\n @media (max-width: 560px) {\n width: 200px;\n height: 200px;\n align-items: unset;\n }\n`,ke=(0,M.styled)(\"img\")`\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 8px;\n display: block;\n`,Se=(0,M.styled)(\"div\")`\n width: 200px;\n margin-top: 16px;\n max-height: 66px;\n text-align: left;\n font-size: 16px;\n font-family: 'Inter', sans-serif;\n font-weight: 400;\n line-height: 22px;\n overflow: hidden;\n color: #666;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n text-overflow: ellipsis;\n @media (max-width: 560px) {\n font-size: 14px;\n font-style: normal;\n font-weight: 600;\n margin-top: 5px;\n max-height: 54px;\n line-height: 18px;\n }\n`,de=(0,M.styled)(\"div\")`\n width: 200px;\n text-align: left;\n margin-bottom: 12px;\n @media (max-width: 560px) {\n margin-bottom: 8px;\n }\n`,Te=(0,M.styled)(\"button\")`\n width: 200px;\n height: 40px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n gap: 10px;\n font-family: 'Inter', sans-serif;\n font-size: 14px;\n font-weight: 600;\n line-height: 20px;\n letter-spacing: 0.14px;\n text-transform: none;\n justify-content: flex-start;\n padding-left: 31px;\n overflow: hidden;\n white-space: normal;\n word-break: break-word;\n overflow-wrap: break-word;\n text-overflow: ellipsis;\n margin-top: 8px;\n margin-bottom: 10px;\n -webkit-appearance: none;\n -webkit-tap-highlight-color: transparent;\n\n color: ${e=>e.disabled?\"#999\":\"#fff\"};\n background-color: ${e=>e.disabled?\"#e0e0e0\":!e.isMobile&&e.isHovered?\"#888\":\"#000\"};\n border: ${e=>e.disabled?\"1px solid #ccc\":\"none\"};\n cursor: ${e=>e.disabled?\"not-allowed\":\"pointer\"};\n opacity: ${e=>e.disabled?.6:1};\n transition: ${e=>e.isMobile?\"none\":\"all 0.3s ease\"};\n\n @media (max-width: 560px) {\n margin: 5px 0;\n }\n`,Pe=(0,M.styled)(\"span\")`\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n display: inline-block;\n background: none;\n transition: all 0.3s ease;\n opacity: ${e=>e.disabled?.5:1};\n`;var Ne=require(\"@mui/material\"),v=require(\"react/jsx-runtime\"),jt=({productTitle:e,imageDetails:t,className:o,button:i,onCardClick:a,productStatusBadge:l,directSellerBadge:r,mySitePriceComponent:d,testId:s})=>{let[g,y]=(0,Ie.useState)(!1),b=(0,Ne.useMediaQuery)(\"(max-width: 560px)\"),x=C=>{let R=C.target,S=t?.fallbackImage;S&&R.src!==S&&(R.src=S)};return(0,v.jsxs)(Ce,{className:o,onClick:a,tabIndex:0,\"data-testid\":\"product-card\",isMobile:b,children:[(0,v.jsx)(ve,{bgColor:t?.bgColor,onError:x,children:t?.imageSrc?(0,v.jsx)(Be.NsImage,{\"data-testid\":s??\"test-product-image\",className:t.className??\"\",src:t.imageSrc,alt:t.imageAlt,\"aria-label\":t.areaLabel??t.imageAlt,width:\"100%\"}):(0,v.jsx)(ke,{alt:\"\"})}),(0,v.jsx)(Se,{title:e,\"data-testid\":\"product-title\",children:e}),r&&(0,v.jsx)(de,{children:r}),(0,v.jsx)(de,{children:l}),(0,v.jsx)(we,{children:d}),i?.showButton&&(0,v.jsxs)(Te,{tabIndex:0,\"aria-roledescription\":\":\",\"aria-label\":i.buttonText||\"ADD TO CART\",\"data-testid\":\"add-to-cart-button\",disabled:i?.disabled??!1,isMobile:b,isHovered:g,onClick:C=>{C.stopPropagation(),i?.disabled||i.onClick?.()},onMouseEnter:()=>{!b&&!i?.disabled&&y(!0)},onMouseLeave:()=>{b||y(!1)},children:[(0,v.jsx)(Pe,{className:\"cart-icon\",disabled:i?.disabled,children:(0,v.jsx)(\"svg\",{width:\"24\",height:\"22\",viewBox:\"0 0 24 22\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",children:(0,v.jsx)(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M0 1.86358C0 1.26109 0.488416 0.772675 1.09091 0.772675H3.48173C4.51054 0.772675 5.39955 1.49136 5.61511 2.49733L5.71309 2.95456H22.9091C23.245 2.95456 23.5622 3.10933 23.7689 3.37411C23.9757 3.63889 24.0489 3.98415 23.9674 4.31005L22.4053 10.5583C21.9197 12.5009 20.1743 13.8636 18.172 13.8636H8.05068L8.28444 14.9546H20.7273C21.3298 14.9546 21.8182 15.443 21.8182 16.0455C21.8182 16.648 21.3298 17.1364 20.7273 17.1364H19.6364H8.18182H7.40252C6.88811 17.1364 6.4436 16.777 6.33582 16.274L3.76449 4.27405L3.48173 2.95449H1.09091C0.488416 2.95449 0 2.46608 0 1.86358ZM8.18182 17.1364C6.97683 17.1364 6 18.1132 6 19.3182C6 20.5232 6.97683 21.5 8.18182 21.5C9.3868 21.5 10.3636 20.5232 10.3636 19.3182C10.3636 18.1132 9.3868 17.1364 8.18182 17.1364ZM19.6364 17.1364C18.4314 17.1364 17.4545 18.1132 17.4545 19.3182C17.4545 20.5232 18.4314 21.5 19.6364 21.5C20.8413 21.5 21.8182 20.5232 21.8182 19.3182C21.8182 18.1132 20.8413 17.1364 19.6364 17.1364ZM7.58317 11.6818H18.172C19.1732 11.6818 20.0459 11.0005 20.2887 10.0292L21.5119 5.13638H6.18062L7.58317 11.6818Z\",fill:i?.disabled?\"#999\":\"#ffffff\"})})}),i.buttonText||\"ADD TO CART\"]})]})},X=jt;var Z=require(\"react\"),Ve=D(require(\"react-slick\")),Ye=D(require(\"@mui/material/useMediaQuery\"));var qe=require(\"@nuskin/foundation-ui-components\");var w=require(\"@nuskin/foundation-theme\"),_=D(require(\"@mui/material/Box\")),Fe=require(\"@nuskin/foundation-ui-components\"),Re=(0,w.styled)(_.default)`\n padding: 30px 0 60px;\n width: 100%;\n margin: auto;\n margin-top: 50px;\n position: relative;\n\n .slick-list {\n padding-left: 24px;\n padding-right: 24px;\n }\n .slick-slide {\n display: flex;\n justify-content: center;\n padding: 0 12px;\n box-sizing: border-box;\n }\n .slick-prev,\n .slick-next {\n display: none !important;\n }\n\n @media (max-width: 1200px) {\n max-width: 1024px;\n .slick-list {\n padding-left: 12px;\n padding-right: 12px;\n }\n .slick-slide {\n padding: 0 6px;\n }\n }\n @media (max-width: 700px) {\n max-width: 100vw;\n padding: 10px 0 50px;\n .slick-list {\n padding-left: 4px;\n padding-right: 4px;\n }\n .slick-slide {\n padding: 0 2px;\n }\n }\n @media (max-width: 560px) {\n padding: 10px 0 10px;\n margin-top: 25px;\n }\n`,Me=(0,w.styled)(\"div\")`\n overflow-x: auto;\n display: flex;\n scroll-snap-type: x mandatory;\n -webkit-overflow-scrolling: touch;\n gap: 16px;\n padding: 0 8px 16px;\n width: 100%;\n box-sizing: border-box;\n\n &::-webkit-scrollbar {\n height: 6px;\n }\n\n &::-webkit-scrollbar-thumb {\n background: #007bff;\n border-radius: 10px;\n }\n`,Ee=(0,w.styled)(\"div\")`\n display: flex;\n scroll-snap-align: start;\n justify-content: center;\n gap: 15px;\n`,ze=(0,w.styled)(_.default)`\n position: absolute;\n bottom: calc(100% + 1px);\n right: 1px;\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n box-sizing: border-box;\n`,Le=(0,w.styled)(_.default)`\n display: flex;\n align-items: center;\n margin-left: auto;\n margin-right: ${({$isMobile:e})=>e?0:\"24px\"};\n\n @media (max-width: 560px) {\n margin-left: 0;\n order: 2;\n }\n`,He=(0,w.styled)(_.default)`\n display: none;\n\n @media (max-width: 560px) {\n color: #666666;\n font-family: Inter;\n font-size: 14px !important;\n font-style: normal;\n font-weight: 600;\n line-height: 18px;\n display: flex;\n align-items: center;\n order: 1;\n }\n`,De=(0,w.styled)(_.default)`\n display: flex;\n align-items: center;\n opacity: ${({$isDisabled:e})=>e?.3:1};\n pointer-events: ${({$isDisabled:e})=>e?\"none\":\"auto\"};\n transition: opacity 0.3s ease;\n\n .carousal-prev-button,\n .carousal-next-button {\n transition: all 0.3s ease;\n border: 2px solid #000000;\n border-radius: 3px;\n padding: 9px;\n cursor: pointer;\n\n svg {\n transition: all 0.3s ease;\n }\n\n svg polyline {\n stroke: #000000;\n fill: none;\n }\n\n &:hover {\n background-color: #f5f5f5;\n border: 2px solid #ddd;\n\n svg {\n opacity: 0.5;\n }\n\n svg polyline {\n stroke: #000000;\n fill: none;\n }\n }\n }\n\n @media (max-width: 560px) {\n display: none;\n }\n`,co=(0,w.styled)(\"div\")`\n @media (max-width: 560px) {\n overflow-y: hidden;\n scrollbar-width: thin;\n scrollbar-color: #007bff #eee;\n &::-webkit-scrollbar {\n width: 8px;\n }\n &::-webkit-scrollbar-track {\n background: #eee;\n }\n &::-webkit-scrollbar-thumb {\n background-color: red;\n border-radius: 8px;\n border: 2px solid #eee;\n }\n }\n`,$e=(0,w.styled)(Fe.NsTypography)`\n color: #666666;\n font-family: Inter;\n font-size: 16px;\n font-style: normal;\n font-weight: 600;\n line-height: 22px;\n @media (max-width: 560px) {\n margin: 0 3px;\n }\n`,Ae=(0,w.styled)(\"a\")`\n color: #000000;\n font-family: Inter, sans-serif;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 22px;\n text-decoration: none;\n border-bottom: 1px solid #000000;\n padding-bottom: 4px;\n transition: all 0.3s ease;\n cursor: pointer;\n\n @media (max-width: 560px) {\n font-size: 14px;\n line-height: 18px;\n }\n\n &:hover {\n color: #666666;\n border-bottom: 1px solid #666666;\n cursor: pointer;\n }\n`,We=(0,w.styled)(\"div\")`\n padding-top: 20px;\n font-size: 20px;\n text-align: center;\n`,_e=(0,w.styled)(\"div\")`\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n`,je=(0,w.styled)(\"div\")`\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n`,Oe=(0,w.styled)(\"div\")`\n font-family: 'Lora';\n font-weight: 400;\n font-size: 22px;\n margin-left: 16px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-bottom: 13px;\n`;var h=require(\"react/jsx-runtime\");function G({entries:e,renderEntry:t,settings:o={},showControlButtons:i=!0,allEntryLabel:a=\"View All\",allEntryLink:l=\"\",categoryName:r,emptyProductMessage:d=\"No Products Available For The Selected Category\",productsCountLabel:s=\"Products\",isInitialDataLoading:g,history:y}){let b=(0,Z.useRef)(null),x=(0,Ye.default)(\"(max-width: 560px)\"),C=(0,Z.useCallback)(()=>{b.current?.slickPrev()},[]),R=(0,Z.useCallback)(()=>{b.current?.slickNext()},[]),S=t??((m,I)=>(0,h.jsx)(X,{productTitle:m.productTitle,imageDetails:m.imageDetails,button:m.button,onCardClick:m.onCardClick,productStatusBadge:m.productStatusBadge,directSellerBadge:m.directSeller,mySitePriceComponent:m.mySitePriceComponent},`${m.productTitle}-${I}`)),T={dots:!0,infinite:!0,speed:500,slidesToShow:Math.min(e?.length??0,4),slidesToScroll:4,swipe:!0,draggable:!0,arrows:!0,responsive:[{breakpoint:1320,settings:{slidesToShow:Math.min(e?.length??0,3),slidesToScroll:3}},{breakpoint:900,settings:{slidesToShow:Math.min(e?.length??0,2),slidesToScroll:2}},{breakpoint:600,settings:{slidesToShow:1,slidesToScroll:1,arrows:!1}}],...o},z=(e?.length??0)>T.slidesToShow,L=()=>e?.length===0&&!g?(0,h.jsx)(We,{children:d}):x?(0,h.jsx)(Me,{children:(0,h.jsx)(Ee,{children:e.map((m,I)=>m&&S(m,I))})}):(0,h.jsx)(Ve.default,{...T,ref:b,children:e.map((m,I)=>m&&S(m,I))});return(0,h.jsxs)(Re,{children:[i&&(0,h.jsxs)(ze,{children:[(0,h.jsxs)(_e,{children:[(0,h.jsxs)(je,{children:[(0,h.jsx)(He,{children:(0,h.jsxs)($e,{variant:\"body-m\",children:[e?.length??0,\" \",s]})}),!x&&r&&(0,h.jsx)(Oe,{children:r})]}),(0,h.jsx)(Le,{$isMobile:x,children:(0,h.jsx)(Ae,{onClick:m=>{y&&(m.preventDefault(),y.push(l))},children:a})})]}),!x&&(0,h.jsx)(De,{$isDisabled:!z,children:(0,h.jsx)(qe.NsCarouselControl,{prev:C,next:R,viewAllLabel:\"\",viewAllUrl:\"\"})})]}),L()]})}var k=require(\"react\"),mt=require(\"@mui/material\");var it=D(require(\"react\")),at=D(require(\"@mui/material/Tabs\")),nt=D(require(\"@mui/material/Tab\")),pe=D(require(\"@mui/material/Box\")),ee=D(et());var tt=require(\"@nuskin/foundation-theme\"),ot=tt.styled.div`\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: flex-start;\n width: 100%;\n height: 100%;\n background-color: #fff;\n .tabsStyle {\n display: flex;\n padding-top: 8.533px;\n flex-direction: column;\n align-items: flex-start;\n gap: 12.8px;\n border-right: 1px;\n border-color: divider;\n width: 200px;\n & .Mui-selected {\n font-weight: 700;\n font-size: 14px;\n font-family: 'inter', sans-serif;\n font-style: normal;\n font-height: 20px;\n border-radius: 4px;\n }\n & .MuiTabs-indicator {\n left: 0;\n background-color: #5b81a5;\n color: #5b81a5;\n\n @media (max-width: 768px) {\n display: none;\n }\n }\n }\n\n .tabContainer {\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: flex-start;\n min-width: 100%;\n background-color: #fff;\n @media (max-width: 768px) {\n flex-direction: column;\n justify-content: center;\n align-items: center;\n }\n }\n\n .tabStyle {\n align-items: flex-start;\n display: flex;\n text-align: left;\n font-size: 14px;\n font-family: 'inter' sans-serif;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n min-height: 20px;\n padding: 1px;\n padding-left: 10px;\n margin-bottom: 10px;\n cursor: pointer;\n text-transform: none;\n }\n @media (max-width: 768px) {\n flex-direction: row;\n\n .tabsStyle {\n width: 100%;\n border-right: none;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding-top: 0px;\n }\n\n .tabStyle {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 14px;\n border: 1px solid #ccc;\n border-radius: 70px;\n padding: 8px 16px;\n text-align: center;\n margin: 4px;\n background-color: #fff;\n cursor: pointer;\n color: black;\n font-family: Inter;\n font-style: normal;\n font-weight: 600;\n line-height: 20px;\n }\n\n .tabStyle.Mui-selected {\n background-color: #5b81a5;\n color: #ffffff !important;\n font-weight: 700;\n border-radius: 70px;\n }\n }\n .tabPanel {\n padding: 8px;\n text-align: left;\n }\n`;var rt=require(\"@mui/material\"),E=require(\"react/jsx-runtime\");function lt(e){let{children:t,value:o,index:i,...a}=e;return(0,E.jsx)(\"div\",{role:\"tabpanel\",hidden:o!==i,id:`vertical-tabpanel-${i}`,\"aria-labelledby\":`vertical-tab-${i}`,...a,children:o===i&&(0,E.jsx)(pe.default,{className:\"tabPanel\",children:t})})}lt.propTypes={children:ee.default.node,index:ee.default.number.isRequired,value:ee.default.number.isRequired};var te=({itemArray:e,value:t,onChange:o})=>{let[i,a]=it.useState(0),l=(0,rt.useMediaQuery)(\"(max-width:768px)\"),r=t??i;return(0,E.jsx)(ot,{children:(0,E.jsxs)(pe.default,{className:\"tabContainer\",children:[(0,E.jsx)(at.default,{orientation:l?\"horizontal\":\"vertical\",variant:\"scrollable\",value:r,onChange:(s,g)=>{o?o(s,g):a(g)},\"aria-label\":\"Vertical tabs example\",className:\"tabsStyle\",children:e.map(s=>(0,E.jsx)(nt.default,{label:s.label,className:\"tabStyle\"},s.categoryId))}),e.map(s=>(0,E.jsx)(lt,{value:r,index:e.findIndex(g=>g.categoryId===s.categoryId),children:s.content},s.categoryId))]})})};var xt=require(\"@nuskin/foundation-ui-components\");var $=require(\"@nuskin/foundation-theme\"),st=(0,$.styled)(\"div\")`\n display: flex;\n flex-direction: ${({isMobile:e})=>e?\"column\":\"row\"};\n align-items: ${({isMobile:e})=>e?\"stretch\":\"flex-start\"};\n width: 100%;\n max-width: 1920px;\n min-height: ${({isMobile:e})=>e?\"auto\":\"800px\"};\n margin: 0 auto;\n box-sizing: border-box;\n overflow: visible;\n background: #fff;\n padding: ${({isMobile:e})=>e?\"10px 16px 0px 16px\":\"50px 60px 0px 60px\"};\n\n @media (max-width: 768px) {\n padding: 10px 16px 0px 16px;\n min-height: auto;\n }\n\n @media (min-width: 769px) and (max-width: 1024px) {\n padding: 30px 40px 0px 40px;\n gap: 20px;\n }\n\n transform: translateZ(0);\n will-change: auto;\n`,dt=(0,$.styled)(\"div\")`\n min-width: ${({isMobile:e})=>e?\"100%\":\"auto\"};\n height: ${({isMobile:e})=>e?\"auto\":\"100%\"};\n flex-shrink: 0;\n\n @media (max-width: 768px) {\n width: 100%;\n height: auto;\n\n overflow-x: auto;\n overflow-y: visible;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n -ms-overflow-style: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n }\n\n @media (min-width: 769px) and (max-width: 1024px) {\n min-width: 200px;\n margin-right: 20px;\n }\n`,pt=(0,$.styled)(\"div\")`\n flex: 1;\n min-width: 0;\n height: ${({isMobile:e})=>e?\"auto\":\"100%\"};\n\n @media (max-width: 768px) {\n width: 100%;\n height: auto;\n min-height: 300px;\n\n -webkit-overflow-scrolling: touch;\n overflow-x: hidden;\n overflow-y: auto;\n }\n\n @media (min-width: 769px) and (max-width: 1024px) {\n min-height: 400px;\n }\n\n contain: layout style paint;\n transform: translateZ(0);\n`,Ro=(0,$.styled)(\"div\")`\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 200px;\n padding: 20px;\n\n @media (max-width: 768px) {\n min-height: 150px;\n padding: 16px;\n }\n`,ct=(0,$.styled)(\"div\")`\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 40px 20px;\n color: #666;\n font-size: 16px;\n\n @media (max-width: 768px) {\n padding: 20px 16px;\n font-size: 14px;\n }\n`,gt=(0,$.styled)(\"div\")`\n padding: 10px;\n display: flex;\n justify-content: center;\n`;var B=require(\"react/jsx-runtime\"),Yt=({allEntryLabel:e,allEntryLink:t,renderEntry:o,settings:i,showControlButtons:a=!0,fetchCategories:l,fetchProducts:r,showCustomCategory:d=!1,emptyProductTabs:s=\"No tabs available\",emptyProductMessage:g,productsCountLabel:y,getCategoryId:b,history:x})=>{let C=(0,mt.useMediaQuery)(\"(max-width:768px)\"),[R,S]=(0,k.useState)(!0),[T,z]=(0,k.useState)([]),[L,m]=(0,k.useState)(0),[I,ne]=(0,k.useState)([]),[A,O]=(0,k.useState)(!1),[U,re]=(0,k.useState)(!0),V=(0,k.useCallback)(()=>{let p=document.querySelectorAll('[data-testid*=\"spinner\"], .ns-spinner, [class*=\"spinner\"]');re(p.length===0)},[]);(0,k.useEffect)(()=>{A&&V()},[A,V]),(0,k.useEffect)(()=>{l().then(z)},[l]),(0,k.useEffect)(()=>{if(T.length>0){let p=T[L]?.categoryId;b&&b(p),O(!0),r(p).then(ne).finally(()=>{O(!1),S(!1)})}},[T,L,r]);let f=T.map(p=>({label:p.label,content:\"\",categoryId:p.categoryId}));return(0,B.jsxs)(st,{isMobile:C,children:[d&&(f.length>0?(0,B.jsx)(dt,{isMobile:C,children:(0,B.jsx)(te,{itemArray:f,value:L,onChange:(p,H)=>m(H)})}):(0,B.jsx)(ct,{children:s})),(0,B.jsx)(pt,{isMobile:C,children:A?(0,B.jsx)(gt,{children:U&&(0,B.jsx)(xt.NsSpinner,{})}):(0,B.jsx)(G,{isInitialDataLoading:R,entries:I,allEntryLabel:e,allEntryLink:t,renderEntry:o?p=>o({...p,productStatusBadge:p.productStatusBadge}):void 0,settings:i,showControlButtons:a,categoryName:T[L]?.label,emptyProductMessage:g,productsCountLabel:y,history:x})})]})},ht=Yt;var P=require(\"react\"),c=require(\"@mui/material\"),Q=require(\"@nuskin/foundation-ui-components\");var N=require(\"@nuskin/foundation-theme\"),j=require(\"@mui/material\"),oe=require(\"react/jsx-runtime\"),ce=e=>({fontSize:\"12px\",fontStyle:\"normal\",fontWeight:\"600\",lineHeight:\"16px\",letterSpacing:\"0.12px\",color:e?\"#000000\":\"#FFFFFF\",\"& a\":{color:\"inherit\",textDecoration:\"none\",\"&:hover\":{textDecoration:\"underline\"}}}),ft=e=>({fontSize:\"12px\",fontStyle:\"normal\",fontWeight:\"700\",lineHeight:\"16px\",letterSpacing:\"0.48px\",color:e?\"#000000\":\"#FFFFFF\",textTransform:\"uppercase\",paddingLeft:\"5px\"}),ut=()=>({display:\"flex\",flexDirection:\"row\",gap:\"10px\",alignItems:\"center\"}),bt=e=>({...ce(e),paddingBottom:\"11px\",wordBreak:\"break-all\",overflowWrap:\"break-word\",paddingLeft:\"5px\",\"& a\":{color:\"inherit\",textDecoration:\"none\"},\"@media (max-width: 420px)\":{fontSize:\"11px\",lineHeight:\"15px\",paddingBottom:\"8px\"},\"@media (max-width: 400px)\":{fontSize:\"10px\",lineHeight:\"14px\",paddingBottom:\"6px\"},\"@media (max-width: 375px)\":{fontSize:\"8px\",lineHeight:\"12px\",paddingBottom:\"4px\"}}),qt=e=>({...ft(e),marginBottom:\"11px\",transition:\"opacity 0.3s ease-out, transform 0.3s ease-out\",opacity:1,transform:\"translateY(0)\",\"@media (max-width: 420px)\":{fontSize:\"11px\",lineHeight:\"14px\",marginBottom:\"8px\"},\"@media (max-width: 400px)\":{fontSize:\"10px\",lineHeight:\"12px\",marginBottom:\"5px\"},\"@media (max-width: 375px)\":{fontSize:\"8px\",lineHeight:\"11px\",marginBottom:\"4px\"}}),yt=(0,N.styled)(e=>(0,oe.jsx)(j.Box,{...e}))(({bannerProps:e,isCircularImage:t,hasWhiteBackground:o})=>({backgroundClip:\"border-box\",display:\"flex\",background:e?.backgroundColor??\"#383838\",position:\"relative\",overflow:\"hidden\",width:\"100%\",height:\"auto\",flexDirection:\"row\",alignItems:\"center\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",willChange:\"transform, opacity\",transform:\"translateZ(0)\",backfaceVisibility:\"hidden\",\"&.scrolled\":{top:0,left:0,right:0,boxShadow:\"0 2px 8px rgba(0,0,0,0.2)\",\".content\":{paddingTop:\"0\",justifyContent:\"center\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\"},\".body-title\":{fontSize:\"26px\",lineHeight:\"34px\",marginBottom:\"0\",fontStyle:\"normal\",fontWeight:\"400\",fontFamily:e?.headlineFont??\"Lora\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\"},\".bg-image\":{width:\"90px\",height:\"90px\",padding:t?\"2px\":\"0px\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",objectFit:\"cover\",objectPosition:\"center\"},\".placeholder-image\":{\"& > div\":{width:\"90px\",height:\"90px\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\"}}},\".content\":{width:\"70%\",height:\"100%\",marginLeft:\"2%\",marginRight:\"auto\",display:\"flex\",flexDirection:\"column\",position:\"relative\",boxSizing:\"border-box\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\"},\".bg-image\":{width:\"252px\",height:\"252px\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",willChange:\"width, height, transform\",padding:t?\"3px\":\"0px\",objectFit:\"cover\",objectPosition:\"center\"},\".placeholder-image\":{transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",willChange:\"width, height, transform\",\"& > div\":{transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\"}},\".body-title\":{fontSize:\"32px\",lineHeight:\"38px\",marginBottom:\"8px\",fontWeight:\"400\",color:o?\"#000000\":\"#FFFFFF\",overflow:\"hidden\",whiteSpace:\"nowrap\",textOverflow:\"ellipsis\",fontFamily:e?.headlineFont??\"Lora\",paddingLeft:\"5px\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\"},\".body-text\":{fontSize:\"16px\",marginBottom:\"12px\",fontStyle:\"normal\",fontWeight:\"400\",lineHeight:\"22px\",color:o?\"#000000\":\"#FFFFFF\",fontFamily:e?.paragraphFont??\"inherit\",display:\"-webkit-box\",WebkitBoxOrient:\"vertical\",overflow:\"hidden\",WebkitLineClamp:3,textOverflow:\"ellipsis\",paddingLeft:\"5px\",transition:\"opacity 0.3s ease-out, transform 0.3s ease-out\",opacity:1,transform:\"translateY(0)\"},\".social-media\":{display:\"flex\",flexDirection:\"column\",transition:\"opacity 0.3s ease-out, transform 0.3s ease-out\",opacity:1,transform:\"translateY(0)\"},\".email-text\":ce(o),\".phone-text\":ce(o),\".social-title-text\":{...ft(o),marginBottom:\"8px\"},\".social-icons\":{...ut(),paddingBottom:\"8px\"}})),wt=(0,N.styled)(e=>(0,oe.jsx)(j.Box,{...e}))(({bannerProps:e,isCircularImage:t,hasWhiteBackground:o})=>({backgroundClip:\"border-box\",display:\"flex\",background:e?.backgroundColor??\"#383838\",position:\"relative\",overflow:\"hidden\",width:\"100%\",flexDirection:\"column\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",willChange:\"transform, opacity\",transform:\"translateZ(0)\",backfaceVisibility:\"hidden\",\"&.scrolled\":{top:0,left:0,right:0,boxShadow:\"0 2px 8px rgba(0,0,0,0.2)\",\".content-mobile\":{paddingTop:\"5px\",width:\"60%\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\"},\".body-title-mobile\":{fontSize:\"18px\",lineHeight:\"28px\",marginBottom:\"0\",fontStyle:\"normal\",fontWeight:\"400\",fontFamily:e?.headlineFont??\"Lora\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\"},\".bg-image-mobile\":{width:\"75px\",height:\"75px\",padding:t?\"2px\":\"0px\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",objectFit:\"cover\",objectPosition:\"center\"},\".placeholder-image-mobile\":{\"& > div\":{width:\"75px !important\",height:\"75px !important\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\"}}},\".image-content-mobile\":{display:\"flex\",flexDirection:\"row\",width:\"100%\",justifyContent:\"center\",alignItems:\"center\"},\".content-mobile\":{width:\"55%\",height:\"100%\",paddingTop:\"10px\",paddingRight:\"10px\",marginLeft:\"8px\",marginRight:\"auto\",display:\"flex\",flexDirection:\"column\",justifyContent:\"center\",position:\"relative\",boxSizing:\"border-box\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\"@media (max-width: 420px)\":{paddingTop:\"8px\",width:\"100%\"},\"@media (max-width: 400px)\":{paddingTop:\"6px\",width:\"100%\",height:\"100%\"},\"@media (max-width: 375px)\":{paddingTop:\"4px\",width:\"100%\",height:\"100%\"}},\".bg-image-mobile\":{width:\"144px\",height:\"144px\",display:\"flex\",justifyContent:\"center\",alignItems:\"center\",objectFit:\"cover\",objectPosition:\"center\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",willChange:\"width, height, transform\",padding:t?\"2px\":\"0px\",\"@media (max-width: 420px)\":{width:\"120px\",height:\"120px\"},\"@media (max-width: 400px)\":{width:\"112px\",height:\"112px\"},\"@media (max-width: 375px)\":{width:\"90px\",height:\"90px\"}},\".placeholder-image-mobile\":{transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",willChange:\"width, height, transform\",\"& > div\":{transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",width:\"144px\",height:\"144px\",\"@media (max-width: 420px)\":{width:\"120px\",height:\"120px\"},\"@media (max-width: 400px)\":{width:\"110px !important\",height:\"110px !important\"},\"@media (max-width: 375px)\":{width:\"90px\",height:\"90px\"}}},\".body-title-mobile\":{fontSize:\"22px\",lineHeight:\"28px\",marginBottom:\"13px\",fontWeight:\"400\",color:o?\"#000000\":\"#FFFFFF\",fontStyle:\"normal\",overflow:\"hidden\",whiteSpace:\"nowrap\",textOverflow:\"ellipsis\",fontFamily:e?.headlineFont??\"Lora\",paddingLeft:\"5px\",transition:\"all 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\"@media (max-width: 420px)\":{fontSize:\"16px\",lineHeight:\"24px\",marginBottom:\"8px\"},\"@media (max-width: 400px)\":{fontSize:\"16px\",lineHeight:\"22px\",marginBottom:\"6px\"},\"@media (max-width: 375px)\":{fontSize:\"14px\",lineHeight:\"20px\",marginBottom:\"4px\"}},\".body-text-mobile\":{fontSize:\"14px\",padding:\"20px 25px 20px 25px\",fontStyle:\"normal\",fontWeight:\"400\",lineHeight:\"20px\",color:\"#252525\",backgroundColor:\"#E0E0E0\",fontFamily:e?.paragraphFont??\"inherit\",transition:\"all 0.25s cubic-bezier(0.4, 0, 0.2, 1)\",opacity:1,transform:\"translateY(0)\"},\".expandable-description-mobile\":{backgroundColor:\"#E0E0E0\",position:\"relative\"},\".description-content-mobile\":{fontSize:\"14px\",padding:\"10px 15px\",fontStyle:\"normal\",fontWeight:\"400\",lineHeight:\"20px\",color:\"#252525\",fontFamily:e?.paragraphFont??\"inherit\",transition:\"max-height 0.3s ease-in-out, opacity 0.3s ease-in-out\",overflow:\"hidden\",position:\"relative\",\"&.collapsed\":{maxHeight:\"50px\",display:\"-webkit-box\",WebkitLineClamp:2,WebkitBoxOrient:\"vertical\",\"&::after\":{content:'\"\"',position:\"absolute\",bottom:0,left:0,right:0,height:\"20px\",background:\"linear-gradient(transparent, rgba(224, 224, 224, 0.8), #E0E0E0)\",pointerEvents:\"none\"}},\"&.expanded\":{maxHeight:\"none\",whiteSpace:\"normal\",display:\"block\",\"&::after\":{display:\"none\"}}},\".email-text-mobile\":bt(o),\".phone-text-mobile\":bt(o),\".social-title-text-mobile\":qt(o),\".social-icons-mobile\":{...ut(),paddingBottom:\"10px\",transition:\"opacity 0.3s ease-out, transform 0.3s ease-out\",opacity:1,transform:\"translateY(0)\",\"& img\":{width:\"24px\",height:\"24px\",\"@media (max-width: 400px)\":{width:\"20px\",height:\"20px\"},\"@media (max-width: 375px)\":{width:\"18px\",height:\"18px\"}},\"@media (max-width: 420px)\":{paddingBottom:\"8px\"},\"@media (max-width: 400px)\":{paddingBottom:\"4px\"},\"@media (max-width: 375px)\":{paddingBottom:\"3px\"}}})),Ct=(0,N.styled)(j.Box)({display:\"flex\",gap:\"12px\",marginBottom:\"16px\",paddingLeft:\"5px\",\"&.mobile-badges\":{flexDirection:\"column\",gap:\"8px\",marginBottom:\"12px\"},\"&.tablet-badges\":{flexDirection:\"row\",gap:\"12px\",marginBottom:\"8px\"}}),ge=(0,N.styled)(e=>(0,oe.jsx)(j.Box,{...e}))(({hasWhiteBackground:e})=>({backgroundColor:\"rgba(255, 255, 255, 0.2)\",backdropFilter:\"blur(10px)\",borderRadius:\"20px\",padding:\"8px 16px\",display:\"flex\",alignItems:\"center\",gap:\"4px\",border:\"1px solid rgba(255, 255, 255, 0.3)\",transition:\"all 0.3s ease\",\"&.mobile-badge\":{padding:\"6px 12px\",borderRadius:\"16px\",fontSize:\"12px\"},\"&.tablet-badge\":{padding:\"8px 16px\",borderRadius:\"20px\",fontSize:\"14px\"},\"&.total-savings-badge\":{backgroundColor:\"#4A6987\",border:\"none\",borderRadius:\"8px\",padding:\"8px 16px\",gap:\"4px\",minHeight:\"32px\",backdropFilter:\"none\",\".badge-value\":{color:\"#FFFFFF\"},\"&:hover\":{backgroundColor:\"#4A6987\",transform:\"none\",boxShadow:\"none\"}},\"&.expiration-badge\":{borderRadius:\"8px\",padding:\"8px 16px\",gap:\"4px\",minHeight:\"32px\"},\"&:hover\":{backgroundColor:\"rgba(255, 255, 255, 0.3)\",transform:\"translateY(-1px)\",boxShadow:\"0 4px 12px rgba(0, 0, 0, 0.1)\"},\".badge-text\":{color:e?\"#000000\":\"#FFFFFF\",fontWeight:\"400\",opacity:.9},\".badge-value\":{color:e?\"#000000\":\"#FFFFFF\",fontWeight:\"600\"}})),vt=(0,N.styled)(\"button\")({backgroundColor:\"#E0E0E0\",border:\"1px solid #252525\",borderRadius:\"10px\",cursor:\"pointer\",width:\"40px\",height:\"20px\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",margin:\"10px auto 5px auto\",transition:\"all 0.2s ease\",\"& .arrow-icon-mobile\":{transition:\"transform 0.3s ease\",\"&.expanded\":{transform:\"rotate(180deg)\"}}}),kt=(0,N.styled)(j.Box)`\n background: none;\n border: 2px solid transparent;\n cursor: pointer;\n padding: 2px;\n display: flex;\n align-items: center;\n border-radius: 8px;\n transition: all 0.3s ease;\n\n &:hover {\n transform: scale(1.1);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n }\n\n &:focus,\n &:focus-within {\n outline: none;\n border-color: #007bff;\n box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25);\n }\n\n &:hover svg {\n fill: #ffffff;\n }\n`,St=(0,N.styled)(\"span\")`\n line-height: 0.5;\n`,Tt=(0,N.styled)(\"a\")({fontSize:\"inherit\",fontFamily:\"inherit\",fontWeight:\"inherit\",lineHeight:\"inherit\",letterSpacing:\"inherit\",color:\"inherit\",textDecoration:\"none\",\"&:hover\":{textDecoration:\"underline\"}}),me=(0,N.styled)(\"span\")({});var Pt=require(\"@mui/material\"),F=require(\"react/jsx-runtime\"),It=({width:e,height:t,backgroundColor:o})=>(0,F.jsx)(Pt.Box,{sx:{width:e,height:t,display:\"flex\",justifyContent:\"center\",alignItems:\"center\",backgroundColor:o},\"data-testid\":\"placeholder-image\",children:(0,F.jsx)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"128\",height:\"129\",viewBox:\"0 0 128 129\",fill:\"none\",children:(0,F.jsxs)(\"g\",{id:\"ns_logomark\",children:[(0,F.jsx)(\"path\",{id:\"Vector\",d:\"M127.495 52.1946C125.663 47.9538 122.999 44.1171 119.661 40.9073C112.565 34.2835 102.562 31.7037 93.1175 34.0622C83.6733 36.4206 76.0882 43.3926 72.991 52.5619C71.4142 56.8414 70.6063 61.3627 70.6039 65.9196C70.6039 85.8227 70.6039 105.737 70.6039 125.662C70.6039 129.001 70.6039 129.001 66.9051 128.834C66.9051 128.2 66.9051 127.499 66.9051 126.831C66.9051 104.323 66.9051 81.8263 66.9051 59.3409C66.3415 45.3064 74.9302 32.5039 88.1888 27.6164C89.79 27.0612 91.4307 26.6259 93.0981 26.314C94.7114 25.98 96.4605 25.8465 98.0738 25.6461C96.0231 16.3291 78.9419 5.60953 65.0889 4.97504C50.3084 4.62252 36.6074 12.6365 29.7509 25.6461C31.331 25.8465 32.8779 25.9466 34.3569 26.2138C48.0999 28.544 58.7086 39.4998 60.5168 53.2298C60.8904 55.7285 61.0812 58.2508 61.0877 60.7769C61.0877 82.7507 61.0877 104.724 61.0877 126.697C61.0877 128.434 60.6842 129.169 58.8016 128.968C56.9183 128.768 57.1204 128.2 57.1204 126.965C57.1204 119.985 57.1204 113.006 57.1204 105.993C57.1204 92.1674 57.1204 78.3423 57.1204 64.5171C57.2385 56.3928 54.2457 48.5271 48.7477 42.5103C42.2429 35.5282 32.6539 32.2371 23.1959 33.7401C13.7379 35.243 5.66194 41.3411 1.67448 49.9906C1.23781 50.8254 0.867444 51.6937 0.262573 52.9293C5.79294 22.3996 32.4752 0.139867 63.7085 0.000656323C94.9411 -0.138555 121.824 21.8824 127.629 52.3616\",fill:\"#252525\"}),(0,F.jsx)(\"path\",{id:\"Vector_2\",d:\"M86.0995 124.927C86.0995 124.293 86.0995 123.858 86.0995 123.425C86.0995 111.669 86.0995 100.049 86.0995 88.1269C85.8836 82.4231 88.0775 76.89 92.1523 72.8653C97.3131 67.9567 104.984 66.7091 111.452 69.7263C117.892 72.1185 122.166 78.225 122.178 85.0541C122.372 92.1747 119.781 99.0921 114.949 104.356C107.882 113.237 98.6134 120.141 88.05 124.392C87.4217 124.616 86.782 124.805 86.1335 124.96\",fill:\"#252525\"}),(0,F.jsx)(\"path\",{id:\"Vector_3\",d:\"M41.8183 125.395C37.6149 123.224 33.6477 121.487 29.9828 119.25C21.5405 114.299 14.4778 107.331 9.43828 98.9796C6.53442 94.3985 5.34408 88.9493 6.07591 83.5852C7.056 75.2882 13.8859 68.8841 22.2829 68.3905C31.1231 67.2473 39.3527 73.0751 41.1455 81.7484C41.76 84.263 42.0762 86.8411 42.0868 89.4287C42.0868 100.516 42.0868 111.636 42.0868 122.823C42.0868 123.457 42.0867 124.059 41.8854 125.294\",fill:\"#252525\"}),(0,F.jsx)(\"path\",{id:\"Vector_4\",d:\"M51.3337 127.431C47.9713 127.431 47.6681 127.198 47.6681 124.326V76.6386C48.1096 67.937 42.9747 59.906 34.8574 56.602C25.8992 52.8557 15.5485 54.8615 8.66523 61.6779C4.28638 66.6086 1.89197 72.9696 1.94049 79.5438C1.95423 80.2444 1.78037 80.9357 1.43588 81.5476C1.06552 79.9446 0.62885 78.2081 0.426687 76.7387C-0.724024 70.4463 0.471163 63.9529 3.78906 58.472C6.09291 54.6111 9.65016 51.6434 13.8762 50.0567C22.8587 46.555 32.9393 47.1785 41.4148 51.7598C47.6592 54.8694 51.5262 61.2882 51.3337 68.2232C51.5019 87.6249 51.3337 107.027 51.3337 126.396C51.3337 126.797 51.3337 127.164 51.3337 127.532\",fill:\"#252525\"}),(0,F.jsx)(\"path\",{id:\"Vector_5\",d:\"M76.287 127.499V125.094C76.287 107.196 76.4883 89.2963 76.287 71.3966C76.0848 56.9034 84.2554 50.6588 95.7553 48.3545C101.535 47.2005 107.524 47.6393 113.071 49.6235C122.914 53.3319 128.994 63.1725 127.866 73.5672C127.631 76.2831 127.17 78.975 126.487 81.6151C125.916 78.2758 125.68 74.9364 124.772 71.597C122.808 64.3002 117.377 58.4174 110.228 55.8421C103.078 53.2668 95.1132 54.3239 88.8955 58.6734C83.0441 62.6207 79.7011 69.3237 80.086 76.3389C80.086 92.2349 80.086 108.131 80.086 124.026C80.086 127.366 80.086 127.366 76.2198 127.366\",fill:\"#252525\"})]})})});var xe=require(\"react/jsx-runtime\"),Bt=({width:e=16,height:t=16,className:o=\"\"})=>(0,xe.jsx)(\"svg\",{width:e,height:t,viewBox:\"0 0 24 24\",fill:\"currentColor\",className:o,\"data-testid\":\"arrow-down-icon\",children:(0,xe.jsx)(\"path\",{d:\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z\"})});function ie(e){if(typeof window>\"u\")return;let t=window.location.href,o={...e},i=t.includes(\"personal-offer\")?\"postorefront_\":\"mysite_\";o.event=i+e.event;try{window.dataLayer||(console.error(\"GTM dataLayer not available, but event logged\"),window.dataLayer=[]),window.dataLayer.push(o)}catch(a){console.error(\"Failed to track GTM event:\",a)}}var n=require(\"react/jsx-runtime\"),Nt=(e,t,o)=>{let i=o.includes(\"mobile\")?\"placeholder-image-mobile\":\"placeholder-image\";return e?.imageSrc?(0,n.jsx)(St,{tabIndex:0,children:(0,n.jsx)(Q.NsImage,{className:o,src:e.imageSrc,alt:e.imageAlt})}):(0,n.jsx)(c.Box,{className:i,children:(0,n.jsx)(It,{width:o.includes(\"mobile\")?\"144px\":\"246px\",height:o.includes(\"mobile\")?\"144px\":\"246px\",backgroundColor:t?.backgroundColor??\"#5F5F5F\"})})},Ft=(e,t,o,i,a)=>{if(!e||!t&&!a)return null;let l=o?\"mobile-badge\":\"tablet-badge\";return(0,n.jsxs)(Ct,{className:o?\"mobile-badges\":\"tablet-badges\",children:[a&&(0,n.jsx)(ge,{className:`${l} total-savings-badge`,hasWhiteBackground:i,tabIndex:0,children:(0,n.jsx)(me,{className:\"badge-value\",children:a})}),t&&(0,n.jsx)(ge,{className:`${l} expiration-badge`,hasWhiteBackground:i,tabIndex:0,children:(0,n.jsx)(me,{className:\"badge-value\",children:t})})]})},Zt=(e,t,o,i,a)=>{let{shopTitle:l,socialTitleText:r,email:d,showBadges:s,expirationDate:g,phone:y,totalSavings:b}=e;return(0,n.jsxs)(c.Box,{className:\"content-mobile\",children:[(0,n.jsx)(c.Typography,{component:\"h1\",tabIndex:l?.trim()?0:-1,className:\"body-title-mobile\",children:l}),!t&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(c.Typography,{tabIndex:r?.trim()?0:-1,className:\"social-title-text-mobile\",children:r}),d?.trim()&&ae(\"email\",d,\"email-text-mobile\"),y?.trim()&&ae(\"phone\",y,\"phone-text-mobile\"),(0,n.jsx)(c.Box,{className:\"social-icons-mobile\",children:o}),Ft(s,g??\"\",i,a,b)]})]})},Gt=(e,t,o,i,a)=>{let{shopTitle:l,shopDescription:r,socialTitleText:d,email:s,phone:g,showBadges:y,expirationDate:b,totalSavings:x}=e;return(0,n.jsxs)(c.Box,{className:\"content\",children:[(0,n.jsx)(c.Typography,{component:\"h1\",tabIndex:l?.trim()?0:-1,className:\"body-title\",children:l}),!t&&(0,n.jsxs)(n.Fragment,{children:[r?.length>480?(0,n.jsx)(c.Tooltip,{title:r,arrow:!0,children:(0,n.jsx)(c.Typography,{tabIndex:r?.trim()?0:-1,className:\"body-text\",children:r})}):(0,n.jsx)(c.Typography,{tabIndex:r?.trim()?0:-1,className:\"body-text\",children:r}),(0,n.jsxs)(c.Box,{className:\"social-media\",children:[(0,n.jsx)(c.Typography,{tabIndex:d?.trim()?0:-1,className:\"social-title-text\",children:d}),(0,n.jsxs)(c.Box,{className:\"social-icons\",children:[o,s?.trim()&&ae(\"email\",s,\"email-text\"),g?.trim()&&ae(\"phone\",g,\"phone-text\")]})]}),Ft(y,b??\"\",i,a,x)]})]})},Qt=e=>new Promise((t,o)=>{let i=new Image;i.crossOrigin=\"anonymous\",i.src=e,i.onload=()=>{let a=document.createElement(\"canvas\"),l=a.getContext(\"2d\");if(!l)return o(new Error(\"Canvas not supported\"));a.width=i.width,a.height=i.height,l.drawImage(i,0,0);let d=[l.getImageData(0,0,1,1).data,l.getImageData(i.width-1,0,1,1).data,l.getImageData(0,i.height-1,1,1).data,l.getImageData(i.width-1,i.height-1,1,1).data].every(s=>Array.prototype.slice.call(s)[3]<10);t(d)},i.onerror=()=>o(new Error(\"Failed to load image\"))}),Ut=e=>{if(!e)return!1;let t=e.replace(\"#\",\"\").toLowerCase();if(!/^[0-9a-f]{3,4}$|^[0-9a-f]{6}$|^[0-9a-f]{8}$/i.test(t))return!1;let o=t;(t.length===3||t.length===4)&&(o=t.split(\"\").map(d=>d+d).join(\"\"));let i=Number.parseInt(o.substring(0,2),16),a=Number.parseInt(o.substring(2,4),16),l=Number.parseInt(o.substring(4,6),16),r=220;return i>=r&&a>=r&&l>=r},Kt=(e,t)=>({onClick:()=>{ie({event:\"contact_click\",contact_type:e,contact_value:t,click_element:`${e}_link`})},onKeyDown:o=>{(o.key===\"Enter\"||o.key===\" \")&&(o.preventDefault(),ie({event:\"contact_click\",contact_type:e,contact_value:t,click_element:`${e}_link`}),globalThis.location.href=`${e===\"email\"?\"mailto\":\"tel\"}:${t}`)}}),ae=(e,t,o)=>{let i=e===\"email\"?\"mailto:\":\"tel:\",a=Kt(e,t);return(0,n.jsx)(c.Typography,{className:o,children:(0,n.jsx)(Tt,{href:`${i}${t}`,...a,children:t})})};function he({className:e,shopTitle:t,shopDescription:o,socialTitleText:i,imageDetails:a,email:l,phone:r,bannerProps:d,socialIcons:s,expirationDate:g,showBadges:y=!1,totalSavings:b}){let x=(0,c.useMediaQuery)(\"(max-width: 560px)\"),[C,R]=(0,P.useState)(!1),[S,T]=(0,P.useState)(!1),[z,L]=(0,P.useState)(!1),[m,I]=(0,P.useState)(!1),ne=()=>{T(!S)};(0,P.useEffect)(()=>{(async()=>{if(a?.imageSrc){let p=await Qt(a.imageSrc);I(p)}else I(!1)})()},[a?.imageSrc]),(0,P.useEffect)(()=>{L(Ut(d?.backgroundColor))},[d?.backgroundColor]),(0,P.useEffect)(()=>{let f,p=window.scrollY,H=!1,W=!1,le=0,be=u=>{let K=Date.now();if(H!==u&&!W){if(K-le<100)return;W=!0,H=u,le=K,u&&T(!1),clearTimeout(f),R(u),f=setTimeout(()=>{W=!1,u&&window.scrollY<15&&window.scrollTo({top:x?20:30,behavior:\"smooth\"})},300)}},Rt=()=>{let u=window.scrollY;if(W){p=u;return}if(Math.abs(u-p)<.5)return;let q=u>p,Et=x?15:25,zt=x?8:12;q&&u>Et&&!H?be(!0):!q&&u<zt&&H&&be(!1),p=u},Mt=()=>{let u=window.scrollY,q=u>(x?5:10);H=q,R(q),p=u,le=Date.now()},Y=null,fe=0,ue=()=>{Y||Date.now()-fe<16||(Y=requestAnimationFrame(()=>{Rt(),fe=Date.now(),Y=null}))};return Mt(),window.addEventListener(\"scroll\",ue,{passive:!0}),()=>{window.removeEventListener(\"scroll\",ue),Y&&cancelAnimationFrame(Y),clearTimeout(f)}},[x]);let A=(0,P.useMemo)(()=>s?.map((f,p)=>(0,n.jsx)(kt,{onClick:W=>{W.preventDefault(),ie({event:\"social_click\",social_platform:f.type,social_url:f.url,click_element:\"social_icon\"}),window.open(f.url,\"_blank\")},children:(0,n.jsx)(Q.NsLink,{href:f.url,target:\"_blank\",children:(0,n.jsx)(Q.NsImage,{src:`https://www.google.com/s2/favicons?domain=${f?.url}&sz=24`,alt:`${f.type} icon`,width:\"24\",height:\"24\"},f?.type+p)})},f?.type+p)),[s]),O=`${e} ${C?\"scrolled\":\"\"}`,U={shopTitle:t,shopDescription:o,socialTitleText:i,email:l,phone:r,showBadges:y,expirationDate:g,totalSavings:b},re=()=>window.innerWidth<=380?50:window.innerWidth<=415?56:window.innerWidth<=460?62:80,V=x&&o&&o.length>re();return x?(0,n.jsxs)(wt,{className:O,\"data-testid\":\"my-site-shop-header\",bannerProps:d,isCircularImage:m,hasWhiteBackground:z,children:[(0,n.jsxs)(c.Box,{className:\"image-content-mobile\",children:[Nt(a,d??{},\"bg-image-mobile\"),Zt(U,C,A,x,z)]}),!C&&(0,n.jsxs)(c.Box,{className:\"expandable-description-mobile\",children:[(0,n.jsx)(c.Typography,{className:`description-content-mobile ${S||!V?\"expanded\":\"collapsed\"}`,children:o}),V&&(0,n.jsx)(vt,{onClick:ne,children:(0,n.jsx)(Bt,{width:16,height:16,className:`arrow-icon-mobile ${S?\"expanded\":\"\"}`})})]})]}):(0,n.jsxs)(yt,{className:O,\"data-testid\":\"my-site-shop-header\",bannerProps:d,isCircularImage:m,hasWhiteBackground:z,children:[Nt(a,d??{},\"bg-image\"),Gt(U,C,A,x,z)]})}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","export * from './common';\n","import React, { ReactElement, useState } from 'react';\nimport { NsImage } from '@nuskin/foundation-ui-components';\nimport { ProductImageType } from '../types/image';\nimport {\n PriceComponent,\n ProductCardContainer,\n ImageContainer,\n DefaultImage,\n ProductTitle,\n ProductBadgeContainer,\n AddToCartButton,\n CartIcon,\n} from './styles/NsProductCard.Styled';\nimport { useMediaQuery } from '@mui/material';\nimport { NsCardButton } from './types';\n\ntype NsProductCardProps = {\n readonly productTitle: string;\n readonly imageDetails?: ProductImageType;\n readonly className?: string;\n readonly button?: NsCardButton & { disabled?: boolean };\n readonly onCardClick?: () => void;\n readonly productStatusBadge?: React.ReactNode;\n readonly directSellerBadge?: React.ReactNode;\n readonly mySitePriceComponent?: React.ReactNode;\n readonly testId?: string;\n};\n\nconst NsProductCard = ({\n productTitle,\n imageDetails,\n className,\n button,\n onCardClick,\n productStatusBadge,\n directSellerBadge,\n mySitePriceComponent,\n testId,\n}: NsProductCardProps): ReactElement => {\n const [isButtonHovered, setIsButtonHovered] = useState(false);\n const isMobile = useMediaQuery('(max-width: 560px)');\n\n const handleImageError = (e: React.SyntheticEvent<HTMLImageElement, Event>) => {\n const target = e.target as HTMLImageElement;\n const noImageFallback = imageDetails?.fallbackImage;\n if (noImageFallback && target.src !== noImageFallback) {\n target.src = noImageFallback;\n }\n };\n\n return (\n <ProductCardContainer\n className={className}\n onClick={onCardClick}\n tabIndex={0}\n data-testid=\"product-card\"\n isMobile={isMobile}\n >\n <ImageContainer bgColor={imageDetails?.bgColor} onError={handleImageError}>\n {imageDetails?.imageSrc ? (\n <NsImage\n data-testid={testId ?? 'test-product-image'}\n className={imageDetails.className ?? ''}\n src={imageDetails.imageSrc}\n alt={imageDetails.imageAlt}\n aria-label={imageDetails.areaLabel ?? imageDetails.imageAlt}\n width={'100%'}\n />\n ) : (\n <DefaultImage alt=\"\" />\n )}\n </ImageContainer>\n <ProductTitle title={productTitle} data-testid=\"product-title\">\n {productTitle}\n </ProductTitle>\n {directSellerBadge && <ProductBadgeContainer>{directSellerBadge}</ProductBadgeContainer>}\n <ProductBadgeContainer>{productStatusBadge}</ProductBadgeContainer>\n <PriceComponent>{mySitePriceComponent}</PriceComponent>\n {button?.showButton && (\n <AddToCartButton\n tabIndex={0}\n aria-roledescription=\":\"\n aria-label={button.buttonText || 'ADD TO CART'}\n data-testid=\"add-to-cart-button\"\n disabled={button?.disabled ?? false}\n isMobile={isMobile}\n isHovered={isButtonHovered}\n onClick={(e) => {\n e.stopPropagation();\n if (!button?.disabled) {\n button.onClick?.();\n }\n }}\n onMouseEnter={() => {\n if (!isMobile && !button?.disabled) {\n setIsButtonHovered(true);\n }\n }}\n onMouseLeave={() => {\n if (!isMobile) {\n setIsButtonHovered(false);\n }\n }}\n >\n <CartIcon className=\"cart-icon\" disabled={button?.disabled}>\n <svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M0 1.86358C0 1.26109 0.488416 0.772675 1.09091 0.772675H3.48173C4.51054 0.772675 5.39955 1.49136 5.61511 2.49733L5.71309 2.95456H22.9091C23.245 2.95456 23.5622 3.10933 23.7689 3.37411C23.9757 3.63889 24.0489 3.98415 23.9674 4.31005L22.4053 10.5583C21.9197 12.5009 20.1743 13.8636 18.172 13.8636H8.05068L8.28444 14.9546H20.7273C21.3298 14.9546 21.8182 15.443 21.8182 16.0455C21.8182 16.648 21.3298 17.1364 20.7273 17.1364H19.6364H8.18182H7.40252C6.88811 17.1364 6.4436 16.777 6.33582 16.274L3.76449 4.27405L3.48173 2.95449H1.09091C0.488416 2.95449 0 2.46608 0 1.86358ZM8.18182 17.1364C6.97683 17.1364 6 18.1132 6 19.3182C6 20.5232 6.97683 21.5 8.18182 21.5C9.3868 21.5 10.3636 20.5232 10.3636 19.3182C10.3636 18.1132 9.3868 17.1364 8.18182 17.1364ZM19.6364 17.1364C18.4314 17.1364 17.4545 18.1132 17.4545 19.3182C17.4545 20.5232 18.4314 21.5 19.6364 21.5C20.8413 21.5 21.8182 20.5232 21.8182 19.3182C21.8182 18.1132 20.8413 17.1364 19.6364 17.1364ZM7.58317 11.6818H18.172C19.1732 11.6818 20.0459 11.0005 20.2887 10.0292L21.5119 5.13638H6.18062L7.58317 11.6818Z\"\n fill={button?.disabled ? '#999' : '#ffffff'}\n />\n </svg>\n </CartIcon>\n {button.buttonText || 'ADD TO CART'}\n </AddToCartButton>\n )}\n </ProductCardContainer>\n );\n};\n\nexport default NsProductCard;\n","import { styled } from '@nuskin/foundation-theme';\n\nexport const PriceComponent = styled('div')`\n width: 200px;\n text-align: left;\n margin-bottom: 5px;\n`;\n\nexport const ProductCardContainer = styled('button')<{ isMobile: boolean }>`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n width: 240px;\n height: ${(props) => (props.isMobile ? '410px' : '513px')};\n overflow: hidden;\n cursor: pointer;\n border: 1px solid #ededed;\n background: var(--color-primary-n-10-primary-white, #fff);\n`;\n\nexport const ImageContainer = styled('div')<{\n bgColor?: string;\n}>`\n width: '240px';\n height: '240px';\n background: ${(props) => props.bgColor ?? '#f5f5f5'};\n border-radius: 8px;\n overflow: hidden;\n margin-bottom: 0;\n display: flex;\n align-items: normal;\n justify-content: center;\n position: relative;\n @media (max-width: 560px) {\n width: 200px;\n height: 200px;\n align-items: unset;\n }\n`;\n\nexport const DefaultImage = styled('img')`\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 8px;\n display: block;\n`;\n\nexport const ProductTitle = styled('div')`\n width: 200px;\n margin-top: 16px;\n max-height: 66px;\n text-align: left;\n font-size: 16px;\n font-family: 'Inter', sans-serif;\n font-weight: 400;\n line-height: 22px;\n overflow: hidden;\n color: #666;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n text-overflow: ellipsis;\n @media (max-width: 560px) {\n font-size: 14px;\n font-style: normal;\n font-weight: 600;\n margin-top: 5px;\n max-height: 54px;\n line-height: 18px;\n }\n`;\n\nexport const ProductBadgeContainer = styled('div')`\n width: 200px;\n text-align: left;\n margin-bottom: 12px;\n @media (max-width: 560px) {\n margin-bottom: 8px;\n }\n`;\n\nexport const AddToCartButton = styled('button')<{\n disabled?: boolean;\n isMobile: boolean;\n isHovered: boolean;\n}>`\n width: 200px;\n height: 40px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n gap: 10px;\n font-family: 'Inter', sans-serif;\n font-size: 14px;\n font-weight: 600;\n line-height: 20px;\n letter-spacing: 0.14px;\n text-transform: none;\n justify-content: flex-start;\n padding-left: 31px;\n overflow: hidden;\n white-space: normal;\n word-break: break-word;\n overflow-wrap: break-word;\n text-overflow: ellipsis;\n margin-top: 8px;\n margin-bottom: 10px;\n -webkit-appearance: none;\n -webkit-tap-highlight-color: transparent;\n\n color: ${(props) => (props.disabled ? '#999' : '#fff')};\n background-color: ${(props) => {\n if (props.disabled) return '#e0e0e0';\n if (!props.isMobile && props.isHovered) return '#888';\n return '#000';\n }};\n border: ${(props) => (props.disabled ? '1px solid #ccc' : 'none')};\n cursor: ${(props) => (props.disabled ? 'not-allowed' : 'pointer')};\n opacity: ${(props) => (props.disabled ? 0.6 : 1)};\n transition: ${(props) => (props.isMobile ? 'none' : 'all 0.3s ease')};\n\n @media (max-width: 560px) {\n margin: 5px 0;\n }\n`;\n\nexport const CartIcon = styled('span')<{ disabled?: boolean }>`\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n display: inline-block;\n background: none;\n transition: all 0.3s ease;\n opacity: ${(props) => (props.disabled ? 0.5 : 1)};\n`;\n","import React, { ReactElement, useCallback, ReactNode, useRef } from 'react';\nimport Slider from 'react-slick';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport 'slick-carousel/slick/slick.css';\nimport { NsCardButton, NsCarouselControl } from '@nuskin/foundation-ui-components';\nimport { ProductImageType } from '../types/image';\nimport NsProductCard from '../card/NsProductCard';\nimport {\n SlickContainer,\n ControlsContainer,\n ControlsHeaderRow,\n ScrollableContainer,\n CardList,\n ViewAllWrapper,\n ProductCountWrapper,\n ArrowsWrapper,\n CustomTypography,\n ViewAllLink,\n ProductInfoWrapper,\n CategoryNameWrapper,\n EmptyProductCategories,\n} from './NsProductCarousel.styled';\n\nexport type ProductCardEntry = {\n readonly productTitle: string;\n readonly imageDetails?: ProductImageType;\n readonly button?: NsCardButton;\n readonly onCardClick?: () => void;\n readonly productStatusBadge?: React.ReactNode;\n readonly directSeller?: React.ReactNode;\n readonly mySitePriceComponent?: React.ReactNode;\n};\n\ninterface SlickSettings {\n dots?: boolean;\n infinite?: boolean;\n speed?: number;\n slidesToShow?: number;\n slidesToScroll?: number;\n swipe?: boolean;\n draggable?: boolean;\n arrows?: boolean;\n responsive?: Array<{\n breakpoint: number;\n settings: {\n slidesToShow?: number;\n slidesToScroll?: number;\n arrows?: boolean;\n };\n }>;\n}\n\ninterface ProductCardCarouselProps<T = ProductCardEntry> {\n readonly entries: T[];\n readonly settings?: SlickSettings;\n readonly showControlButtons?: boolean;\n readonly renderEntry?: (entry: T, index: number) => ReactNode;\n readonly allEntryLabel?: string;\n readonly allEntryLink?: string;\n readonly categoryName?: string;\n readonly emptyProductMessage?: string;\n readonly productsCountLabel?: string;\n readonly isInitialDataLoading?: boolean;\n readonly history?: {\n push: (path: string) => void;\n };\n}\n\nexport default function ProductCardCarousel({\n entries,\n renderEntry,\n settings = {},\n showControlButtons = true,\n allEntryLabel = 'View All',\n allEntryLink = '',\n categoryName,\n emptyProductMessage = 'No Products Available For The Selected Category',\n productsCountLabel = 'Products',\n isInitialDataLoading,\n history,\n}: ProductCardCarouselProps): ReactElement {\n const sliderRef = useRef<Slider>(null);\n const isMobile = useMediaQuery('(max-width: 560px)');\n\n const prev = useCallback(() => {\n sliderRef.current?.slickPrev();\n }, []);\n\n const next = useCallback(() => {\n sliderRef.current?.slickNext();\n }, []);\n\n const renderProductEntry =\n renderEntry ??\n ((entry: ProductCardEntry, index: number) => (\n <NsProductCard\n key={`${entry.productTitle}-${index}`}\n productTitle={entry.productTitle}\n imageDetails={entry.imageDetails}\n button={entry.button}\n onCardClick={entry.onCardClick}\n productStatusBadge={entry.productStatusBadge}\n directSellerBadge={entry.directSeller}\n mySitePriceComponent={entry.mySitePriceComponent}\n />\n ));\n\n const sliderSettings = {\n dots: true,\n infinite: true,\n speed: 500,\n slidesToShow: Math.min(entries?.length ?? 0, 4),\n slidesToScroll: 4,\n swipe: true,\n draggable: true,\n arrows: true,\n responsive: [\n {\n breakpoint: 1320,\n settings: {\n slidesToShow: Math.min(entries?.length ?? 0, 3),\n slidesToScroll: 3,\n },\n },\n {\n breakpoint: 900,\n settings: {\n slidesToShow: Math.min(entries?.length ?? 0, 2),\n slidesToScroll: 2,\n },\n },\n {\n breakpoint: 600,\n settings: {\n slidesToShow: 1,\n slidesToScroll: 1,\n arrows: false,\n },\n },\n ],\n ...settings,\n };\n\n const shouldShowNavigation = (entries?.length ?? 0) > sliderSettings.slidesToShow;\n\n const renderCarouselContent = () => {\n if (entries?.length === 0 && !isInitialDataLoading) {\n return <EmptyProductCategories>{emptyProductMessage}</EmptyProductCategories>;\n }\n\n if (isMobile) {\n return (\n <ScrollableContainer>\n <CardList>{entries.map((entry, index) => entry && renderProductEntry(entry, index))}</CardList>\n </ScrollableContainer>\n );\n }\n\n return (\n <Slider {...sliderSettings} ref={sliderRef}>\n {entries.map((entry, index) => entry && renderProductEntry(entry, index))}\n </Slider>\n );\n };\n\n return (\n <SlickContainer>\n {showControlButtons && (\n <ControlsContainer>\n <ControlsHeaderRow>\n <ProductInfoWrapper>\n <ProductCountWrapper>\n <CustomTypography variant=\"body-m\">\n {entries?.length ?? 0} {productsCountLabel}\n </CustomTypography>\n </ProductCountWrapper>\n {!isMobile && categoryName && <CategoryNameWrapper>{categoryName}</CategoryNameWrapper>}\n </ProductInfoWrapper>\n <ViewAllWrapper $isMobile={isMobile}>\n <ViewAllLink\n onClick={(e) => {\n if (history) {\n e.preventDefault();\n history.push(allEntryLink);\n }\n }}\n >\n {allEntryLabel}\n </ViewAllLink>\n </ViewAllWrapper>\n </ControlsHeaderRow>\n {!isMobile && (\n <ArrowsWrapper $isDisabled={!shouldShowNavigation}>\n <NsCarouselControl prev={prev} next={next} viewAllLabel={''} viewAllUrl={''} />\n </ArrowsWrapper>\n )}\n </ControlsContainer>\n )}\n {renderCarouselContent()}\n </SlickContainer>\n );\n}\n","import React from 'react';\nimport { styled } from '@nuskin/foundation-theme';\nimport Box, { BoxProps } from '@mui/material/Box';\nimport { NsTypography } from '@nuskin/foundation-ui-components';\n\nexport const SlickContainer: React.ComponentType<BoxProps> = styled(Box)`\n padding: 30px 0 60px;\n width: 100%;\n margin: auto;\n margin-top: 50px;\n position: relative;\n\n .slick-list {\n padding-left: 24px;\n padding-right: 24px;\n }\n .slick-slide {\n display: flex;\n justify-content: center;\n padding: 0 12px;\n box-sizing: border-box;\n }\n .slick-prev,\n .slick-next {\n display: none !important;\n }\n\n @media (max-width: 1200px) {\n max-width: 1024px;\n .slick-list {\n padding-left: 12px;\n padding-right: 12px;\n }\n .slick-slide {\n padding: 0 6px;\n }\n }\n @media (max-width: 700px) {\n max-width: 100vw;\n padding: 10px 0 50px;\n .slick-list {\n padding-left: 4px;\n padding-right: 4px;\n }\n .slick-slide {\n padding: 0 2px;\n }\n }\n @media (max-width: 560px) {\n padding: 10px 0 10px;\n margin-top: 25px;\n }\n`;\nexport const ScrollableContainer = styled('div')`\n overflow-x: auto;\n display: flex;\n scroll-snap-type: x mandatory;\n -webkit-overflow-scrolling: touch;\n gap: 16px;\n padding: 0 8px 16px;\n width: 100%;\n box-sizing: border-box;\n\n &::-webkit-scrollbar {\n height: 6px;\n }\n\n &::-webkit-scrollbar-thumb {\n background: #007bff;\n border-radius: 10px;\n }\n`;\n\nexport const CardList = styled('div')`\n display: flex;\n scroll-snap-align: start;\n justify-content: center;\n gap: 15px;\n`;\n\nexport const ControlsContainer: React.ComponentType<BoxProps> = styled(Box)`\n position: absolute;\n bottom: calc(100% + 1px);\n right: 1px;\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n box-sizing: border-box;\n`;\n\nexport const ViewAllWrapper: React.ComponentType<BoxProps & { $isMobile?: boolean }> = styled(Box)<{\n $isMobile?: boolean;\n}>`\n display: flex;\n align-items: center;\n margin-left: auto;\n margin-right: ${({ $isMobile }) => ($isMobile ? 0 : '24px')};\n\n @media (max-width: 560px) {\n margin-left: 0;\n order: 2;\n }\n`;\n\nexport const ProductCountWrapper: React.ComponentType<BoxProps> = styled(Box)`\n display: none;\n\n @media (max-width: 560px) {\n color: #666666;\n font-family: Inter;\n font-size: 14px !important;\n font-style: normal;\n font-weight: 600;\n line-height: 18px;\n display: flex;\n align-items: center;\n order: 1;\n }\n`;\n\nexport const ArrowsWrapper: React.ComponentType<BoxProps & { $isDisabled?: boolean }> = styled(Box)<{\n $isDisabled?: boolean;\n}>`\n display: flex;\n align-items: center;\n opacity: ${({ $isDisabled }) => ($isDisabled ? 0.3 : 1)};\n pointer-events: ${({ $isDisabled }) => ($isDisabled ? 'none' : 'auto')};\n transition: opacity 0.3s ease;\n\n .carousal-prev-button,\n .carousal-next-button {\n transition: all 0.3s ease;\n border: 2px solid #000000;\n border-radius: 3px;\n padding: 9px;\n cursor: pointer;\n\n svg {\n transition: all 0.3s ease;\n }\n\n svg polyline {\n stroke: #000000;\n fill: none;\n }\n\n &:hover {\n background-color: #f5f5f5;\n border: 2px solid #ddd;\n\n svg {\n opacity: 0.5;\n }\n\n svg polyline {\n stroke: #000000;\n fill: none;\n }\n }\n }\n\n @media (max-width: 560px) {\n display: none;\n }\n`;\nexport const Scrollablewrapper = styled('div')`\n @media (max-width: 560px) {\n overflow-y: hidden;\n scrollbar-width: thin;\n scrollbar-color: #007bff #eee;\n &::-webkit-scrollbar {\n width: 8px;\n }\n &::-webkit-scrollbar-track {\n background: #eee;\n }\n &::-webkit-scrollbar-thumb {\n background-color: red;\n border-radius: 8px;\n border: 2px solid #eee;\n }\n }\n`;\nexport const CustomTypography = styled(NsTypography)`\n color: #666666;\n font-family: Inter;\n font-size: 16px;\n font-style: normal;\n font-weight: 600;\n line-height: 22px;\n @media (max-width: 560px) {\n margin: 0 3px;\n }\n`;\n\nexport const ViewAllLink = styled('a')`\n color: #000000;\n font-family: Inter, sans-serif;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 22px;\n text-decoration: none;\n border-bottom: 1px solid #000000;\n padding-bottom: 4px;\n transition: all 0.3s ease;\n cursor: pointer;\n\n @media (max-width: 560px) {\n font-size: 14px;\n line-height: 18px;\n }\n\n &:hover {\n color: #666666;\n border-bottom: 1px solid #666666;\n cursor: pointer;\n }\n`;\n\nexport const EmptyProductCategories = styled('div')`\n padding-top: 20px;\n font-size: 20px;\n text-align: center;\n`;\nexport const ControlsHeaderRow = styled('div')`\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n`;\n\nexport const ProductInfoWrapper = styled('div')`\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n`;\n\nexport const CategoryNameWrapper = styled('div')`\n font-family: 'Lora';\n font-weight: 400;\n font-size: 22px;\n margin-left: 16px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-bottom: 13px;\n`;\n","import React, { useState, useEffect, useCallback } from 'react';\nimport { useMediaQuery } from '@mui/material';\n\nimport { NsCategoryNavigation } from '../Nav-Category-Navigation';\nimport { NsSpinner } from '@nuskin/foundation-ui-components';\nimport ProductCardCarousel, { ProductCardEntry } from './NsProductCarousel';\nimport {\n ProductTabCarouselContainer,\n TabsContainer,\n ContentContainer,\n NoTabsContainer,\n SpinnerContainer,\n} from './ProductTabCarousel.styled';\n\ninterface Category {\n label: string;\n categoryId: string;\n}\n\ninterface SlickSettings {\n dots?: boolean;\n infinite?: boolean;\n speed?: number;\n slidesToShow?: number;\n slidesToScroll?: number;\n swipe?: boolean;\n draggable?: boolean;\n arrows?: boolean;\n responsive?: Array<{\n breakpoint: number;\n settings: {\n slidesToShow?: number;\n slidesToScroll?: number;\n arrows?: boolean;\n };\n }>;\n}\n\ninterface ProductTabCarouselProps {\n readonly allEntryLabel?: string;\n readonly allEntryLink?: string;\n readonly renderEntry?: (entry: ProductCardEntry) => React.ReactNode;\n readonly settings?: SlickSettings;\n readonly showControlButtons?: boolean;\n readonly fetchCategories: () => Promise<Category[]>;\n readonly fetchProducts: (categoryId: string) => Promise<ProductCardEntry[]>;\n readonly emptyProductTabs?: string;\n readonly emptyProductMessage?: string;\n readonly showCustomCategory?: boolean;\n readonly productsCountLabel?: string;\n readonly getCategoryId: (categoryId: string) => Promise<Category[]>;\n readonly history?: {\n push: (path: string) => void;\n };\n}\n\nconst ProductTabCarousel: React.FC<ProductTabCarouselProps> = ({\n allEntryLabel,\n allEntryLink,\n renderEntry,\n settings,\n showControlButtons = true,\n fetchCategories,\n fetchProducts,\n showCustomCategory = false,\n emptyProductTabs = 'No tabs available',\n emptyProductMessage,\n productsCountLabel,\n getCategoryId,\n history,\n}) => {\n const isMobile = useMediaQuery('(max-width:768px)');\n const [isLoadingInitialData, setIsLoadingInitialData] = useState(true);\n const [categories, setCategories] = useState<Category[]>([]);\n const [selectedTab, setSelectedTab] = useState(0);\n const [products, setProducts] = useState<ProductCardEntry[]>([]);\n const [loading, setLoading] = useState(false);\n const [shouldShowSpinner, setShouldShowSpinner] = useState(true);\n\n const checkForExistingSpinners = useCallback(() => {\n const existingSpinners = document.querySelectorAll('[data-testid*=\"spinner\"], .ns-spinner, [class*=\"spinner\"]');\n setShouldShowSpinner(existingSpinners.length === 0);\n }, []);\n\n useEffect(() => {\n if (loading) {\n checkForExistingSpinners();\n }\n }, [loading, checkForExistingSpinners]);\n\n useEffect(() => {\n fetchCategories().then(setCategories);\n }, [fetchCategories]);\n\n useEffect(() => {\n if (categories.length > 0) {\n const categoryId = categories[selectedTab]?.categoryId;\n if (getCategoryId) {\n getCategoryId(categoryId);\n }\n\n setLoading(true);\n fetchProducts(categoryId)\n .then(setProducts)\n .finally(() => {\n setLoading(false);\n setIsLoadingInitialData(false);\n });\n }\n }, [categories, selectedTab, fetchProducts]);\n\n const itemArray = categories.map((cat) => ({\n label: cat.label,\n content: '',\n categoryId: cat.categoryId,\n }));\n\n return (\n <ProductTabCarouselContainer isMobile={isMobile}>\n {showCustomCategory &&\n (itemArray.length > 0 ? (\n <TabsContainer isMobile={isMobile}>\n <NsCategoryNavigation\n itemArray={itemArray}\n value={selectedTab}\n onChange={(_, newValue) => setSelectedTab(newValue)}\n />\n </TabsContainer>\n ) : (\n <NoTabsContainer>{emptyProductTabs}</NoTabsContainer>\n ))}\n <ContentContainer isMobile={isMobile}>\n {loading ? (\n <SpinnerContainer>{shouldShowSpinner && <NsSpinner />}</SpinnerContainer>\n ) : (\n <ProductCardCarousel\n isInitialDataLoading={isLoadingInitialData}\n entries={products}\n allEntryLabel={allEntryLabel}\n allEntryLink={allEntryLink}\n renderEntry={\n renderEntry\n ? (entry) => renderEntry({ ...entry, productStatusBadge: entry.productStatusBadge })\n : undefined\n }\n settings={settings}\n showControlButtons={showControlButtons}\n categoryName={categories[selectedTab]?.label}\n emptyProductMessage={emptyProductMessage}\n productsCountLabel={productsCountLabel}\n history={history}\n />\n )}\n </ContentContainer>\n </ProductTabCarouselContainer>\n );\n};\n\nexport default ProductTabCarousel;\n","import * as React from 'react';\nimport Tabs from '@mui/material/Tabs';\nimport Tab from '@mui/material/Tab';\nimport Box from '@mui/material/Box';\nimport PropTypes from 'prop-types';\nimport { NsCategoryNavigationContainer } from './NsCategoryNavigation.styled';\nimport { useMediaQuery } from '@mui/material';\n\nfunction TabPanel(\n props: Readonly<{\n children?: React.ReactNode;\n value: number;\n index: number;\n [key: string]: unknown;\n }>,\n) {\n const { children, value, index, ...other } = props;\n return (\n <div\n role=\"tabpanel\"\n hidden={value !== index}\n id={`vertical-tabpanel-${index}`}\n aria-labelledby={`vertical-tab-${index}`}\n {...other}\n >\n {value === index && <Box className=\"tabPanel\">{children}</Box>}\n </div>\n );\n}\nTabPanel.propTypes = {\n children: PropTypes.node,\n index: PropTypes.number.isRequired,\n value: PropTypes.number.isRequired,\n};\n\ninterface NsCategoryNavigationProps {\n itemArray: { label: string; content: React.ReactNode; categoryId: string }[];\n value?: number;\n onChange?: (event: React.SyntheticEvent, newValue: number) => void;\n}\n\nexport const NsCategoryNavigation: React.FC<Readonly<NsCategoryNavigationProps>> = ({\n itemArray,\n value: controlledValue,\n onChange,\n}) => {\n const [internalValue, setInternalValue] = React.useState(0);\n const isMobile = useMediaQuery('(max-width:768px)');\n const value = controlledValue ?? internalValue;\n const handleChange = (event: React.SyntheticEvent, newValue: number) => {\n if (onChange) {\n onChange(event, newValue);\n } else {\n setInternalValue(newValue);\n }\n };\n\n return (\n <NsCategoryNavigationContainer>\n <Box className=\"tabContainer\">\n <Tabs\n orientation={isMobile ? 'horizontal' : 'vertical'}\n variant=\"scrollable\"\n value={value}\n onChange={handleChange}\n aria-label=\"Vertical tabs example\"\n className=\"tabsStyle\"\n >\n {itemArray.map((item) => (\n <Tab key={item.categoryId} label={item.label} className=\"tabStyle\" />\n ))}\n </Tabs>\n {itemArray.map((item) => (\n <TabPanel\n key={item.categoryId}\n value={value}\n index={itemArray.findIndex((i) => i.categoryId === item.categoryId)}\n >\n {item.content}\n </TabPanel>\n ))}\n </Box>\n </NsCategoryNavigationContainer>\n );\n};\n","import { styled } from '@nuskin/foundation-theme';\nexport const NsCategoryNavigationContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: flex-start;\n width: 100%;\n height: 100%;\n background-color: #fff;\n .tabsStyle {\n display: flex;\n padding-top: 8.533px;\n flex-direction: column;\n align-items: flex-start;\n gap: 12.8px;\n border-right: 1px;\n border-color: divider;\n width: 200px;\n & .Mui-selected {\n font-weight: 700;\n font-size: 14px;\n font-family: 'inter', sans-serif;\n font-style: normal;\n font-height: 20px;\n border-radius: 4px;\n }\n & .MuiTabs-indicator {\n left: 0;\n background-color: #5b81a5;\n color: #5b81a5;\n\n @media (max-width: 768px) {\n display: none;\n }\n }\n }\n\n .tabContainer {\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: flex-start;\n min-width: 100%;\n background-color: #fff;\n @media (max-width: 768px) {\n flex-direction: column;\n justify-content: center;\n align-items: center;\n }\n }\n\n .tabStyle {\n align-items: flex-start;\n display: flex;\n text-align: left;\n font-size: 14px;\n font-family: 'inter' sans-serif;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n min-height: 20px;\n padding: 1px;\n padding-left: 10px;\n margin-bottom: 10px;\n cursor: pointer;\n text-transform: none;\n }\n @media (max-width: 768px) {\n flex-direction: row;\n\n .tabsStyle {\n width: 100%;\n border-right: none;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding-top: 0px;\n }\n\n .tabStyle {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 14px;\n border: 1px solid #ccc;\n border-radius: 70px;\n padding: 8px 16px;\n text-align: center;\n margin: 4px;\n background-color: #fff;\n cursor: pointer;\n color: black;\n font-family: Inter;\n font-style: normal;\n font-weight: 600;\n line-height: 20px;\n }\n\n .tabStyle.Mui-selected {\n background-color: #5b81a5;\n color: #ffffff !important;\n font-weight: 700;\n border-radius: 70px;\n }\n }\n .tabPanel {\n padding: 8px;\n text-align: left;\n }\n`;\n","import { styled } from '@nuskin/foundation-theme';\n\nexport const ProductTabCarouselContainer = styled('div')<{ isMobile?: boolean }>`\n display: flex;\n flex-direction: ${({ isMobile }) => (isMobile ? 'column' : 'row')};\n align-items: ${({ isMobile }) => (isMobile ? 'stretch' : 'flex-start')};\n width: 100%;\n max-width: 1920px;\n min-height: ${({ isMobile }) => (isMobile ? 'auto' : '800px')};\n margin: 0 auto;\n box-sizing: border-box;\n overflow: visible;\n background: #fff;\n padding: ${({ isMobile }) => (isMobile ? '10px 16px 0px 16px' : '50px 60px 0px 60px')};\n\n @media (max-width: 768px) {\n padding: 10px 16px 0px 16px;\n min-height: auto;\n }\n\n @media (min-width: 769px) and (max-width: 1024px) {\n padding: 30px 40px 0px 40px;\n gap: 20px;\n }\n\n transform: translateZ(0);\n will-change: auto;\n`;\n\nexport const TabsContainer = styled('div')<{ isMobile?: boolean }>`\n min-width: ${({ isMobile }) => (isMobile ? '100%' : 'auto')};\n height: ${({ isMobile }) => (isMobile ? 'auto' : '100%')};\n flex-shrink: 0;\n\n @media (max-width: 768px) {\n width: 100%;\n height: auto;\n\n overflow-x: auto;\n overflow-y: visible;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n -ms-overflow-style: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n }\n\n @media (min-width: 769px) and (max-width: 1024px) {\n min-width: 200px;\n margin-right: 20px;\n }\n`;\n\nexport const ContentContainer = styled('div')<{ isMobile?: boolean }>`\n flex: 1;\n min-width: 0;\n height: ${({ isMobile }) => (isMobile ? 'auto' : '100%')};\n\n @media (max-width: 768px) {\n width: 100%;\n height: auto;\n min-height: 300px;\n\n -webkit-overflow-scrolling: touch;\n overflow-x: hidden;\n overflow-y: auto;\n }\n\n @media (min-width: 769px) and (max-width: 1024px) {\n min-height: 400px;\n }\n\n contain: layout style paint;\n transform: translateZ(0);\n`;\n\nexport const LoadingContainer = styled('div')`\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 200px;\n padding: 20px;\n\n @media (max-width: 768px) {\n min-height: 150px;\n padding: 16px;\n }\n`;\n\nexport const NoTabsContainer = styled('div')`\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 40px 20px;\n color: #666;\n font-size: 16px;\n\n @media (max-width: 768px) {\n padding: 20px 16px;\n font-size: 14px;\n }\n`;\nexport const SpinnerContainer = styled('div')`\n padding: 10px;\n display: flex;\n justify-content: center;\n`;\n","import React, { ReactElement, useState, useEffect, useMemo } from 'react';\nimport { Typography, Box, useMediaQuery, Tooltip } from '@mui/material';\nimport { NsLink, NsImage } from '@nuskin/foundation-ui-components';\nimport {\n MysiteHeroContainer,\n MysiteHeroContainerMobile,\n BadgeContainer,\n Badge,\n ToggleButtonMobile,\n StyledSpan,\n ImgTabIndex,\n ContactLink,\n BadgeValue,\n} from '@/common/headers/MysiteHero.styled';\nimport { PlaceholderImage } from '../icon/icons/PlaceholderImage';\nimport { ArrowDownIcon } from '../icon/icons/ArrowDownIcon';\nimport { trackGTMEvent } from '../utils/gtmTracking';\n\ntype MysiteHeroProps = {\n readonly imageDetails?: {\n imageSrc: string;\n imageAlt: string;\n bgColor: string;\n };\n readonly shopTitle: string;\n readonly shopDescription: string;\n readonly socialTitleText: string;\n readonly email: string;\n readonly phone: string;\n readonly className?: string;\n readonly bannerProps?: {\n backgroundColor?: string;\n headlineFont?: string;\n paragraphFont?: string;\n };\n readonly socialIcons?: {\n type: string;\n url: string;\n }[];\n readonly expirationDate?: string;\n readonly showBadges?: boolean;\n readonly totalSavings?: string;\n};\n\ntype ImageDetails = {\n imageSrc: string;\n imageAlt: string;\n bgColor: string;\n};\n\ntype BannerProps = {\n backgroundColor?: string;\n headlineFont?: string;\n paragraphFont?: string;\n};\n\ntype ContentProps = {\n shopTitle: string;\n shopDescription: string;\n socialTitleText: string;\n email: string;\n phone: string;\n showBadges: boolean;\n expirationDate?: string;\n totalSavings?: string;\n};\n\nconst renderImageContent = (imageDetails: ImageDetails | undefined, bannerProps: BannerProps, className: string) => {\n const placeholderClass = className.includes('mobile') ? 'placeholder-image-mobile' : 'placeholder-image';\n return imageDetails?.imageSrc ? (\n <ImgTabIndex tabIndex={0}>\n <NsImage className={className} src={imageDetails.imageSrc} alt={imageDetails.imageAlt} />\n </ImgTabIndex>\n ) : (\n <Box className={placeholderClass}>\n <PlaceholderImage\n width={className.includes('mobile') ? '144px' : '246px'}\n height={className.includes('mobile') ? '144px' : '246px'}\n backgroundColor={bannerProps?.backgroundColor ?? '#5F5F5F'}\n />\n </Box>\n );\n};\n\nconst renderBadges = (\n showBadges: boolean,\n expirationDate: string,\n isMobile: boolean,\n hasWhiteBackground: boolean,\n totalSavings?: string,\n) => {\n if (!showBadges || (!expirationDate && !totalSavings)) return null;\n\n const badgeClass = isMobile ? 'mobile-badge' : 'tablet-badge';\n const containerClass = isMobile ? 'mobile-badges' : 'tablet-badges';\n\n return (\n <BadgeContainer className={containerClass}>\n {totalSavings && (\n <Badge\n className={`${badgeClass} total-savings-badge`}\n hasWhiteBackground={hasWhiteBackground}\n tabIndex={0}\n >\n <BadgeValue className=\"badge-value\">{totalSavings}</BadgeValue>\n </Badge>\n )}\n {expirationDate && (\n <Badge\n className={`${badgeClass} expiration-badge`}\n hasWhiteBackground={hasWhiteBackground}\n tabIndex={0}\n >\n <BadgeValue className=\"badge-value\">{expirationDate}</BadgeValue>\n </Badge>\n )}\n </BadgeContainer>\n );\n};\n\nconst renderMobileContent = (\n props: ContentProps,\n isScrolled: boolean,\n renderSocialMediaIcons: React.ReactNode,\n isMobile: boolean,\n hasWhiteBackground: boolean,\n) => {\n const { shopTitle, socialTitleText, email, showBadges, expirationDate, phone, totalSavings } = props;\n\n return (\n <Box className=\"content-mobile\">\n <Typography component=\"h1\" tabIndex={shopTitle?.trim() ? 0 : -1} className=\"body-title-mobile\">\n {shopTitle}\n </Typography>\n {!isScrolled && (\n <>\n <Typography tabIndex={socialTitleText?.trim() ? 0 : -1} className=\"social-title-text-mobile\">\n {socialTitleText}\n </Typography>\n {email?.trim() && renderContactLink('email', email, 'email-text-mobile')}\n {phone?.trim() && renderContactLink('phone', phone, 'phone-text-mobile')}\n <Box className=\"social-icons-mobile\">{renderSocialMediaIcons}</Box>\n {renderBadges(showBadges, expirationDate ?? '', isMobile, hasWhiteBackground, totalSavings)}\n </>\n )}\n </Box>\n );\n};\n\nconst renderDesktopContent = (\n props: ContentProps,\n isScrolled: boolean,\n renderSocialMediaIcons: React.ReactNode,\n isMobile: boolean,\n hasWhiteBackground: boolean,\n) => {\n const { shopTitle, shopDescription, socialTitleText, email, phone, showBadges, expirationDate, totalSavings } =\n props;\n\n return (\n <Box className=\"content\">\n <Typography component=\"h1\" tabIndex={shopTitle?.trim() ? 0 : -1} className=\"body-title\">\n {shopTitle}\n </Typography>\n {!isScrolled && (\n <>\n {shopDescription?.length > 480 ? (\n <Tooltip title={shopDescription} arrow>\n <Typography tabIndex={shopDescription?.trim() ? 0 : -1} className=\"body-text\">\n {shopDescription}\n </Typography>\n </Tooltip>\n ) : (\n <Typography tabIndex={shopDescription?.trim() ? 0 : -1} className=\"body-text\">\n {shopDescription}\n </Typography>\n )}\n <Box className=\"social-media\">\n <Typography tabIndex={socialTitleText?.trim() ? 0 : -1} className=\"social-title-text\">\n {socialTitleText}\n </Typography>\n <Box className=\"social-icons\">\n {renderSocialMediaIcons}\n {email?.trim() && renderContactLink('email', email, 'email-text')}\n {phone?.trim() && renderContactLink('phone', phone, 'phone-text')}\n </Box>\n </Box>\n {renderBadges(showBadges, expirationDate ?? '', isMobile, hasWhiteBackground, totalSavings)}\n </>\n )}\n </Box>\n );\n};\n\nconst checkIfImageIsCircular = (url: string): Promise<boolean> => {\n return new Promise((resolve, reject) => {\n const imageContext = new Image();\n imageContext.crossOrigin = 'anonymous';\n imageContext.src = url;\n\n imageContext.onload = () => {\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n if (!context) return reject(new Error('Canvas not supported'));\n\n canvas.width = imageContext.width;\n canvas.height = imageContext.height;\n\n context.drawImage(imageContext, 0, 0);\n\n const corners = [\n context.getImageData(0, 0, 1, 1).data,\n context.getImageData(imageContext.width - 1, 0, 1, 1).data,\n context.getImageData(0, imageContext.height - 1, 1, 1).data,\n context.getImageData(imageContext.width - 1, imageContext.height - 1, 1, 1).data,\n ];\n\n const isCircular = corners.every((corner) => {\n const imageArray = Array.prototype.slice.call(corner);\n const alpha = imageArray[3];\n return alpha < 10;\n });\n resolve(isCircular);\n };\n imageContext.onerror = () => reject(new Error('Failed to load image'));\n });\n};\n\nconst isWhiteOrNearWhite = (color: string | undefined): boolean => {\n if (!color) return false;\n\n const hex = color.replace('#', '').toLowerCase();\n\n /* regex pattern for hex color format: 3 chars (#fff), 4 chars (#ffff), 6 chars (#ffffff), or 8 chars (#ffffffff)*/\n if (!/^[0-9a-f]{3,4}$|^[0-9a-f]{6}$|^[0-9a-f]{8}$/i.test(hex)) return false;\n\n let fullHex = hex;\n if (hex.length === 3 || hex.length === 4) {\n fullHex = hex\n .split('')\n .map((char) => char + char)\n .join('');\n }\n\n const r = Number.parseInt(fullHex.substring(0, 2), 16);\n const g = Number.parseInt(fullHex.substring(2, 4), 16);\n const b = Number.parseInt(fullHex.substring(4, 6), 16);\n\n const threshold = 220;\n return r >= threshold && g >= threshold && b >= threshold;\n};\n\nconst createContactClickHandler = (contactType: 'email' | 'phone', contactValue: string) => ({\n onClick: () => {\n trackGTMEvent({\n event: 'contact_click',\n contact_type: contactType,\n contact_value: contactValue,\n click_element: `${contactType}_link`,\n });\n },\n onKeyDown: (e: React.KeyboardEvent<HTMLAnchorElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n trackGTMEvent({\n event: 'contact_click',\n contact_type: contactType,\n contact_value: contactValue,\n click_element: `${contactType}_link`,\n });\n globalThis.location.href = `${contactType === 'email' ? 'mailto' : 'tel'}:${contactValue}`;\n }\n },\n});\n\nconst renderContactLink = (contactType: 'email' | 'phone', contactValue: string, className: string) => {\n const protocol = contactType === 'email' ? 'mailto:' : 'tel:';\n const handlers = createContactClickHandler(contactType, contactValue);\n\n return (\n <Typography className={className}>\n <ContactLink href={`${protocol}${contactValue}`} {...handlers}>\n {contactValue}\n </ContactLink>\n </Typography>\n );\n};\nexport default function MysiteHero({\n className,\n shopTitle,\n shopDescription,\n socialTitleText,\n imageDetails,\n email,\n phone,\n bannerProps,\n socialIcons,\n expirationDate,\n showBadges = false,\n totalSavings,\n}: MysiteHeroProps): ReactElement {\n const isMobile = useMediaQuery('(max-width: 560px)');\n const [isScrolled, setIsScrolled] = useState(false);\n const [isDescriptionExpanded, setIsDescriptionExpanded] = useState(false);\n const [hasWhiteBackground, setHasWhiteBackground] = useState(false);\n const [isImageCircular, setIsImageCircular] = useState(false);\n\n const toggleDescription = () => {\n setIsDescriptionExpanded(!isDescriptionExpanded);\n };\n\n useEffect(() => {\n const checkImage = async () => {\n if (imageDetails?.imageSrc) {\n const isCircular = await checkIfImageIsCircular(imageDetails.imageSrc);\n setIsImageCircular(isCircular);\n } else {\n setIsImageCircular(false);\n }\n };\n\n checkImage();\n }, [imageDetails?.imageSrc]);\n\n useEffect(() => {\n setHasWhiteBackground(isWhiteOrNearWhite(bannerProps?.backgroundColor));\n }, [bannerProps?.backgroundColor]);\n\n useEffect(() => {\n let debounceTimeout: ReturnType<typeof setTimeout>;\n let lastScrollY = window.scrollY;\n let currentScrollState = false;\n let isTransitioning = false;\n let lastUpdateTime = 0;\n\n const updateScrollState = (newState: boolean) => {\n const now = Date.now();\n\n if (currentScrollState !== newState && !isTransitioning) {\n if (now - lastUpdateTime < 100) {\n return;\n }\n\n isTransitioning = true;\n currentScrollState = newState;\n lastUpdateTime = now;\n\n if (newState) {\n setIsDescriptionExpanded(false);\n }\n\n clearTimeout(debounceTimeout);\n setIsScrolled(newState);\n\n debounceTimeout = setTimeout(() => {\n isTransitioning = false;\n\n if (newState && window.scrollY < 15) {\n window.scrollTo({\n top: isMobile ? 20 : 30,\n behavior: 'smooth',\n });\n }\n }, 300);\n }\n };\n\n const handleScroll = () => {\n const currentScrollY = window.scrollY;\n\n if (isTransitioning) {\n lastScrollY = currentScrollY;\n return;\n }\n\n const scrollDelta = Math.abs(currentScrollY - lastScrollY);\n\n if (scrollDelta < 0.5) {\n return;\n }\n\n const scrollingDown = currentScrollY > lastScrollY;\n\n const scrollDownThreshold = isMobile ? 15 : 25;\n const scrollUpThreshold = isMobile ? 8 : 12;\n\n if (scrollingDown && currentScrollY > scrollDownThreshold && !currentScrollState) {\n updateScrollState(true);\n } else if (!scrollingDown && currentScrollY < scrollUpThreshold && currentScrollState) {\n updateScrollState(false);\n }\n\n lastScrollY = currentScrollY;\n };\n\n const initializeState = () => {\n const initialScrollY = window.scrollY;\n const scrollThreshold = isMobile ? 5 : 10;\n const shouldStartCompact = initialScrollY > scrollThreshold;\n\n currentScrollState = shouldStartCompact;\n setIsScrolled(shouldStartCompact);\n lastScrollY = initialScrollY;\n lastUpdateTime = Date.now();\n };\n\n let rafId: number | null = null;\n let lastRafTime = 0;\n const throttledScrollHandler = () => {\n if (rafId) return;\n\n const now = Date.now();\n if (now - lastRafTime < 16) {\n return;\n }\n\n rafId = requestAnimationFrame(() => {\n handleScroll();\n lastRafTime = Date.now();\n rafId = null;\n });\n };\n\n initializeState();\n window.addEventListener('scroll', throttledScrollHandler, { passive: true });\n\n return () => {\n window.removeEventListener('scroll', throttledScrollHandler);\n if (rafId) cancelAnimationFrame(rafId);\n clearTimeout(debounceTimeout);\n };\n }, [isMobile]);\n\n const renderSocialMediaIcons = useMemo(() => {\n return socialIcons?.map((icon, index) => {\n const handleSocialClick = (e: React.MouseEvent) => {\n e.preventDefault();\n trackGTMEvent({\n event: 'social_click',\n social_platform: icon.type,\n social_url: icon.url,\n click_element: 'social_icon',\n });\n window.open(icon.url, '_blank');\n };\n\n return (\n <StyledSpan key={icon?.type + index} onClick={handleSocialClick}>\n <NsLink href={icon.url} target=\"_blank\">\n <NsImage\n key={icon?.type + index}\n src={`https://www.google.com/s2/favicons?domain=${icon?.url}&sz=24`}\n alt={`${icon.type} icon`}\n width=\"24\"\n height=\"24\"\n />\n </NsLink>\n </StyledSpan>\n );\n });\n }, [socialIcons]);\n\n const containerClass = `${className} ${isScrolled ? 'scrolled' : ''}`;\n const props = {\n shopTitle,\n shopDescription,\n socialTitleText,\n email,\n phone,\n showBadges,\n expirationDate,\n totalSavings,\n };\n\n const getCharacterLimit = () => {\n if (window.innerWidth <= 380) return 50;\n if (window.innerWidth <= 415) return 56;\n if (window.innerWidth <= 460) return 62;\n return 80;\n };\n\n const shouldShowToggle = isMobile && shopDescription && shopDescription.length > getCharacterLimit();\n\n return isMobile ? (\n <MysiteHeroContainerMobile\n className={containerClass}\n data-testid=\"my-site-shop-header\"\n bannerProps={bannerProps}\n isCircularImage={isImageCircular}\n hasWhiteBackground={hasWhiteBackground}\n >\n <Box className=\"image-content-mobile\">\n {renderImageContent(imageDetails, bannerProps ?? {}, 'bg-image-mobile')}\n {renderMobileContent(props, isScrolled, renderSocialMediaIcons, isMobile, hasWhiteBackground)}\n </Box>\n {!isScrolled && (\n <Box className=\"expandable-description-mobile\">\n <Typography\n className={`description-content-mobile ${isDescriptionExpanded || !shouldShowToggle ? 'expanded' : 'collapsed'}`}\n >\n {shopDescription}\n </Typography>\n {shouldShowToggle && (\n <ToggleButtonMobile onClick={toggleDescription}>\n <ArrowDownIcon\n width={16}\n height={16}\n className={`arrow-icon-mobile ${isDescriptionExpanded ? 'expanded' : ''}`}\n />\n </ToggleButtonMobile>\n )}\n </Box>\n )}\n </MysiteHeroContainerMobile>\n ) : (\n <MysiteHeroContainer\n className={containerClass}\n data-testid=\"my-site-shop-header\"\n bannerProps={bannerProps}\n isCircularImage={isImageCircular}\n hasWhiteBackground={hasWhiteBackground}\n >\n {renderImageContent(imageDetails, bannerProps ?? {}, 'bg-image')}\n {renderDesktopContent(props, isScrolled, renderSocialMediaIcons, isMobile, hasWhiteBackground)}\n </MysiteHeroContainer>\n );\n}\n","import React from 'react';\nimport { styled } from '@nuskin/foundation-theme';\nimport { Box, BoxProps } from '@mui/material';\n\ninterface StyledBoxProps extends BoxProps {\n bannerProps?: {\n backgroundColor?: string;\n headlineFont?: string;\n paragraphFont?: string;\n };\n isCircularImage?: boolean;\n hasWhiteBackground?: boolean;\n}\n\ninterface BadgeProps extends BoxProps {\n hasWhiteBackground?: boolean;\n}\n\nconst getContactTextStyles = (hasWhiteBackground: boolean | undefined) => ({\n fontSize: '12px',\n fontStyle: 'normal' as const,\n fontWeight: '600',\n lineHeight: '16px',\n letterSpacing: '0.12px',\n color: hasWhiteBackground ? '#000000' : '#FFFFFF',\n '& a': {\n color: 'inherit',\n textDecoration: 'none',\n '&:hover': {\n textDecoration: 'underline',\n },\n },\n});\n\nconst getSocialTitleStyles = (hasWhiteBackground: boolean | undefined) => ({\n fontSize: '12px',\n fontStyle: 'normal' as const,\n fontWeight: '700',\n lineHeight: '16px',\n letterSpacing: '0.48px',\n color: hasWhiteBackground ? '#000000' : '#FFFFFF',\n textTransform: 'uppercase' as const,\n paddingLeft: '5px',\n});\n\nconst getSocialIconsStyles = () => ({\n display: 'flex',\n flexDirection: 'row' as const,\n gap: '10px',\n alignItems: 'center',\n});\n\nconst getContactTextMobileStyles = (hasWhiteBackground: boolean | undefined) => ({\n ...getContactTextStyles(hasWhiteBackground),\n paddingBottom: '11px',\n wordBreak: 'break-all' as const,\n overflowWrap: 'break-word' as const,\n paddingLeft: '5px',\n '& a': {\n color: 'inherit',\n textDecoration: 'none',\n },\n '@media (max-width: 420px)': {\n fontSize: '11px',\n lineHeight: '15px',\n paddingBottom: '8px',\n },\n '@media (max-width: 400px)': {\n fontSize: '10px',\n lineHeight: '14px',\n paddingBottom: '6px',\n },\n '@media (max-width: 375px)': {\n fontSize: '8px',\n lineHeight: '12px',\n paddingBottom: '4px',\n },\n});\n\nconst getSocialTitleMobileStyles = (hasWhiteBackground: boolean | undefined) => ({\n ...getSocialTitleStyles(hasWhiteBackground),\n marginBottom: '11px',\n transition: 'opacity 0.3s ease-out, transform 0.3s ease-out',\n opacity: 1,\n transform: 'translateY(0)',\n '@media (max-width: 420px)': {\n fontSize: '11px',\n lineHeight: '14px',\n marginBottom: '8px',\n },\n '@media (max-width: 400px)': {\n fontSize: '10px',\n lineHeight: '12px',\n marginBottom: '5px',\n },\n '@media (max-width: 375px)': {\n fontSize: '8px',\n lineHeight: '11px',\n marginBottom: '4px',\n },\n});\n\nexport const MysiteHeroContainer = styled((props: StyledBoxProps) => <Box {...props} />)(\n ({ bannerProps, isCircularImage, hasWhiteBackground }) => ({\n backgroundClip: 'border-box',\n display: 'flex',\n background: bannerProps?.backgroundColor ?? '#383838',\n position: 'relative',\n overflow: 'hidden',\n width: '100%',\n height: 'auto',\n flexDirection: 'row',\n alignItems: 'center',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n willChange: 'transform, opacity',\n transform: 'translateZ(0)',\n backfaceVisibility: 'hidden',\n '&.scrolled': {\n top: 0,\n left: 0,\n right: 0,\n boxShadow: '0 2px 8px rgba(0,0,0,0.2)',\n '.content': {\n paddingTop: '0',\n justifyContent: 'center',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n },\n '.body-title': {\n fontSize: '26px',\n lineHeight: '34px',\n marginBottom: '0',\n fontStyle: 'normal',\n fontWeight: '400',\n fontFamily: bannerProps?.headlineFont ?? 'Lora',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n },\n\n '.bg-image': {\n width: '90px',\n height: '90px',\n padding: isCircularImage ? '2px' : '0px',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n objectFit: 'cover',\n objectPosition: 'center',\n },\n '.placeholder-image': {\n '& > div': {\n width: '90px',\n height: '90px',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n },\n },\n },\n '.content': {\n width: '70%',\n height: '100%',\n marginLeft: '2%',\n marginRight: 'auto',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n boxSizing: 'border-box',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n },\n '.bg-image': {\n width: '252px',\n height: '252px',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n willChange: 'width, height, transform',\n padding: isCircularImage ? '3px' : '0px',\n objectFit: 'cover',\n objectPosition: 'center',\n },\n '.placeholder-image': {\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n willChange: 'width, height, transform',\n '& > div': {\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n },\n },\n '.body-title': {\n fontSize: '32px',\n lineHeight: '38px',\n marginBottom: '8px',\n fontWeight: '400',\n color: hasWhiteBackground ? '#000000' : '#FFFFFF',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n fontFamily: bannerProps?.headlineFont ?? 'Lora',\n paddingLeft: '5px',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n },\n '.body-text': {\n fontSize: '16px',\n marginBottom: '12px',\n fontStyle: 'normal',\n fontWeight: '400',\n lineHeight: '22px',\n color: hasWhiteBackground ? '#000000' : '#FFFFFF',\n fontFamily: bannerProps?.paragraphFont ?? 'inherit',\n display: '-webkit-box',\n WebkitBoxOrient: 'vertical',\n overflow: 'hidden',\n WebkitLineClamp: 3,\n textOverflow: 'ellipsis',\n paddingLeft: '5px',\n transition: 'opacity 0.3s ease-out, transform 0.3s ease-out',\n opacity: 1,\n transform: 'translateY(0)',\n },\n '.social-media': {\n display: 'flex',\n flexDirection: 'column',\n transition: 'opacity 0.3s ease-out, transform 0.3s ease-out',\n opacity: 1,\n transform: 'translateY(0)',\n },\n '.email-text': getContactTextStyles(hasWhiteBackground),\n '.phone-text': getContactTextStyles(hasWhiteBackground),\n '.social-title-text': {\n ...getSocialTitleStyles(hasWhiteBackground),\n marginBottom: '8px',\n },\n '.social-icons': {\n ...getSocialIconsStyles(),\n paddingBottom: '8px',\n },\n }),\n);\n\nexport const MysiteHeroContainerMobile = styled((props: StyledBoxProps) => <Box {...props} />)(\n ({ bannerProps, isCircularImage, hasWhiteBackground }) => ({\n backgroundClip: 'border-box',\n display: 'flex',\n background: bannerProps?.backgroundColor ?? '#383838',\n position: 'relative',\n overflow: 'hidden',\n width: '100%',\n flexDirection: 'column',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n willChange: 'transform, opacity',\n transform: 'translateZ(0)',\n backfaceVisibility: 'hidden',\n '&.scrolled': {\n top: 0,\n left: 0,\n right: 0,\n boxShadow: '0 2px 8px rgba(0,0,0,0.2)',\n '.content-mobile': {\n paddingTop: '5px',\n width: '60%',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n },\n '.body-title-mobile': {\n fontSize: '18px',\n lineHeight: '28px',\n marginBottom: '0',\n fontStyle: 'normal',\n fontWeight: '400',\n fontFamily: bannerProps?.headlineFont ?? 'Lora',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n },\n '.bg-image-mobile': {\n width: '75px',\n height: '75px',\n padding: isCircularImage ? '2px' : '0px',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n objectFit: 'cover',\n objectPosition: 'center',\n },\n '.placeholder-image-mobile': {\n '& > div': {\n width: '75px !important',\n height: '75px !important',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n },\n },\n },\n '.image-content-mobile': {\n display: 'flex',\n flexDirection: 'row',\n width: '100%',\n justifyContent: 'center',\n alignItems: 'center',\n },\n '.content-mobile': {\n width: '55%',\n height: '100%',\n paddingTop: '10px',\n paddingRight: '10px',\n marginLeft: '8px',\n marginRight: 'auto',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n position: 'relative',\n boxSizing: 'border-box',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n '@media (max-width: 420px)': {\n paddingTop: '8px',\n width: '100%',\n },\n '@media (max-width: 400px)': {\n paddingTop: '6px',\n width: '100%',\n height: '100%',\n },\n '@media (max-width: 375px)': {\n paddingTop: '4px',\n width: '100%',\n height: '100%',\n },\n },\n '.bg-image-mobile': {\n width: '144px',\n height: '144px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n objectFit: 'cover',\n objectPosition: 'center',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n willChange: 'width, height, transform',\n padding: isCircularImage ? '2px' : '0px',\n '@media (max-width: 420px)': {\n width: '120px',\n height: '120px',\n },\n '@media (max-width: 400px)': {\n width: '112px',\n height: '112px',\n },\n '@media (max-width: 375px)': {\n width: '90px',\n height: '90px',\n },\n },\n '.placeholder-image-mobile': {\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n willChange: 'width, height, transform',\n '& > div': {\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n width: '144px',\n height: '144px',\n '@media (max-width: 420px)': {\n width: '120px',\n height: '120px',\n },\n '@media (max-width: 400px)': {\n width: '110px !important',\n height: '110px !important',\n },\n '@media (max-width: 375px)': {\n width: '90px',\n height: '90px',\n },\n },\n },\n '.body-title-mobile': {\n fontSize: '22px',\n lineHeight: '28px',\n marginBottom: '13px',\n fontWeight: '400',\n color: hasWhiteBackground ? '#000000' : '#FFFFFF',\n fontStyle: 'normal',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n fontFamily: bannerProps?.headlineFont ?? 'Lora',\n paddingLeft: '5px',\n transition: 'all 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n '@media (max-width: 420px)': {\n fontSize: '16px',\n lineHeight: '24px',\n marginBottom: '8px',\n },\n '@media (max-width: 400px)': {\n fontSize: '16px',\n lineHeight: '22px',\n marginBottom: '6px',\n },\n '@media (max-width: 375px)': {\n fontSize: '14px',\n lineHeight: '20px',\n marginBottom: '4px',\n },\n },\n '.body-text-mobile': {\n fontSize: '14px',\n padding: '20px 25px 20px 25px',\n fontStyle: 'normal',\n fontWeight: '400',\n lineHeight: '20px',\n color: '#252525',\n backgroundColor: '#E0E0E0',\n fontFamily: bannerProps?.paragraphFont ?? 'inherit',\n transition: 'all 0.25s cubic-bezier(0.4, 0, 0.2, 1)',\n opacity: 1,\n transform: 'translateY(0)',\n },\n '.expandable-description-mobile': {\n backgroundColor: '#E0E0E0',\n position: 'relative',\n },\n '.description-content-mobile': {\n fontSize: '14px',\n padding: '10px 15px',\n fontStyle: 'normal',\n fontWeight: '400',\n lineHeight: '20px',\n color: '#252525',\n fontFamily: bannerProps?.paragraphFont ?? 'inherit',\n transition: 'max-height 0.3s ease-in-out, opacity 0.3s ease-in-out',\n overflow: 'hidden',\n position: 'relative',\n '&.collapsed': {\n maxHeight: '50px',\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n height: '20px',\n background: 'linear-gradient(transparent, rgba(224, 224, 224, 0.8), #E0E0E0)',\n pointerEvents: 'none',\n },\n },\n '&.expanded': {\n maxHeight: 'none',\n whiteSpace: 'normal',\n display: 'block',\n '&::after': {\n display: 'none',\n },\n },\n },\n '.email-text-mobile': getContactTextMobileStyles(hasWhiteBackground),\n '.phone-text-mobile': getContactTextMobileStyles(hasWhiteBackground),\n '.social-title-text-mobile': getSocialTitleMobileStyles(hasWhiteBackground),\n '.social-icons-mobile': {\n ...getSocialIconsStyles(),\n paddingBottom: '10px',\n transition: 'opacity 0.3s ease-out, transform 0.3s ease-out',\n opacity: 1,\n transform: 'translateY(0)',\n '& img': {\n width: '24px',\n height: '24px',\n '@media (max-width: 400px)': {\n width: '20px',\n height: '20px',\n },\n '@media (max-width: 375px)': {\n width: '18px',\n height: '18px',\n },\n },\n '@media (max-width: 420px)': {\n paddingBottom: '8px',\n },\n '@media (max-width: 400px)': {\n paddingBottom: '4px',\n },\n '@media (max-width: 375px)': {\n paddingBottom: '3px',\n },\n },\n }),\n);\n\nexport const BadgeContainer = styled(Box)({\n display: 'flex',\n gap: '12px',\n marginBottom: '16px',\n paddingLeft: '5px',\n\n '&.mobile-badges': {\n flexDirection: 'column',\n gap: '8px',\n marginBottom: '12px',\n },\n\n '&.tablet-badges': {\n flexDirection: 'row',\n gap: '12px',\n marginBottom: '8px',\n },\n});\n\nexport const Badge = styled((props: BadgeProps) => <Box {...props} />)(({ hasWhiteBackground }) => ({\n backgroundColor: 'rgba(255, 255, 255, 0.2)',\n backdropFilter: 'blur(10px)',\n borderRadius: '20px',\n padding: '8px 16px',\n display: 'flex',\n alignItems: 'center',\n gap: '4px',\n border: '1px solid rgba(255, 255, 255, 0.3)',\n transition: 'all 0.3s ease',\n\n '&.mobile-badge': {\n padding: '6px 12px',\n borderRadius: '16px',\n fontSize: '12px',\n },\n\n '&.tablet-badge': {\n padding: '8px 16px',\n borderRadius: '20px',\n fontSize: '14px',\n },\n\n '&.total-savings-badge': {\n backgroundColor: '#4A6987',\n border: 'none',\n borderRadius: '8px',\n padding: '8px 16px',\n gap: '4px',\n minHeight: '32px',\n backdropFilter: 'none',\n '.badge-value': {\n color: '#FFFFFF',\n },\n '&:hover': {\n backgroundColor: '#4A6987',\n transform: 'none',\n boxShadow: 'none',\n },\n },\n\n '&.expiration-badge': {\n borderRadius: '8px',\n padding: '8px 16px',\n gap: '4px',\n minHeight: '32px',\n },\n\n '&:hover': {\n backgroundColor: 'rgba(255, 255, 255, 0.3)',\n transform: 'translateY(-1px)',\n boxShadow: '0 4px 12px rgba(0, 0, 0, 0.1)',\n },\n\n '.badge-text': {\n color: hasWhiteBackground ? '#000000' : '#FFFFFF',\n fontWeight: '400',\n opacity: 0.9,\n },\n\n '.badge-value': {\n color: hasWhiteBackground ? '#000000' : '#FFFFFF',\n fontWeight: '600',\n },\n}));\nexport const ToggleButtonMobile = styled('button')({\n backgroundColor: '#E0E0E0',\n border: '1px solid #252525',\n borderRadius: '10px',\n cursor: 'pointer',\n width: '40px',\n height: '20px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n margin: '10px auto 5px auto',\n transition: 'all 0.2s ease',\n '& .arrow-icon-mobile': {\n transition: 'transform 0.3s ease',\n '&.expanded': {\n transform: 'rotate(180deg)',\n },\n },\n});\nexport const StyledSpan = styled(Box)`\n background: none;\n border: 2px solid transparent;\n cursor: pointer;\n padding: 2px;\n display: flex;\n align-items: center;\n border-radius: 8px;\n transition: all 0.3s ease;\n\n &:hover {\n transform: scale(1.1);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n }\n\n &:focus,\n &:focus-within {\n outline: none;\n border-color: #007bff;\n box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25);\n }\n\n &:hover svg {\n fill: #ffffff;\n }\n`;\nexport const ImgTabIndex = styled('span')`\n line-height: 0.5;\n`;\n\nexport const ContactLink = styled('a')({\n fontSize: 'inherit',\n fontFamily: 'inherit',\n fontWeight: 'inherit',\n lineHeight: 'inherit',\n letterSpacing: 'inherit',\n color: 'inherit',\n textDecoration: 'none',\n '&:hover': {\n textDecoration: 'underline',\n },\n});\n\nexport const BadgeValue = styled('span')({});\n","import React from 'react';\nimport { Box } from '@mui/material';\n\ntype PlaceholderImageProps = {\n readonly width: string | number;\n readonly height: string | number;\n readonly backgroundColor: string;\n};\n\nexport const PlaceholderImage: React.FC<PlaceholderImageProps> = ({ width, height, backgroundColor }) => {\n return (\n <Box\n sx={{\n width,\n height,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor,\n }}\n data-testid=\"placeholder-image\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"128\" height=\"129\" viewBox=\"0 0 128 129\" fill=\"none\">\n <g id=\"ns_logomark\">\n <path\n id=\"Vector\"\n d=\"M127.495 52.1946C125.663 47.9538 122.999 44.1171 119.661 40.9073C112.565 34.2835 102.562 31.7037 93.1175 34.0622C83.6733 36.4206 76.0882 43.3926 72.991 52.5619C71.4142 56.8414 70.6063 61.3627 70.6039 65.9196C70.6039 85.8227 70.6039 105.737 70.6039 125.662C70.6039 129.001 70.6039 129.001 66.9051 128.834C66.9051 128.2 66.9051 127.499 66.9051 126.831C66.9051 104.323 66.9051 81.8263 66.9051 59.3409C66.3415 45.3064 74.9302 32.5039 88.1888 27.6164C89.79 27.0612 91.4307 26.6259 93.0981 26.314C94.7114 25.98 96.4605 25.8465 98.0738 25.6461C96.0231 16.3291 78.9419 5.60953 65.0889 4.97504C50.3084 4.62252 36.6074 12.6365 29.7509 25.6461C31.331 25.8465 32.8779 25.9466 34.3569 26.2138C48.0999 28.544 58.7086 39.4998 60.5168 53.2298C60.8904 55.7285 61.0812 58.2508 61.0877 60.7769C61.0877 82.7507 61.0877 104.724 61.0877 126.697C61.0877 128.434 60.6842 129.169 58.8016 128.968C56.9183 128.768 57.1204 128.2 57.1204 126.965C57.1204 119.985 57.1204 113.006 57.1204 105.993C57.1204 92.1674 57.1204 78.3423 57.1204 64.5171C57.2385 56.3928 54.2457 48.5271 48.7477 42.5103C42.2429 35.5282 32.6539 32.2371 23.1959 33.7401C13.7379 35.243 5.66194 41.3411 1.67448 49.9906C1.23781 50.8254 0.867444 51.6937 0.262573 52.9293C5.79294 22.3996 32.4752 0.139867 63.7085 0.000656323C94.9411 -0.138555 121.824 21.8824 127.629 52.3616\"\n fill=\"#252525\"\n />\n <path\n id=\"Vector_2\"\n d=\"M86.0995 124.927C86.0995 124.293 86.0995 123.858 86.0995 123.425C86.0995 111.669 86.0995 100.049 86.0995 88.1269C85.8836 82.4231 88.0775 76.89 92.1523 72.8653C97.3131 67.9567 104.984 66.7091 111.452 69.7263C117.892 72.1185 122.166 78.225 122.178 85.0541C122.372 92.1747 119.781 99.0921 114.949 104.356C107.882 113.237 98.6134 120.141 88.05 124.392C87.4217 124.616 86.782 124.805 86.1335 124.96\"\n fill=\"#252525\"\n />\n <path\n id=\"Vector_3\"\n d=\"M41.8183 125.395C37.6149 123.224 33.6477 121.487 29.9828 119.25C21.5405 114.299 14.4778 107.331 9.43828 98.9796C6.53442 94.3985 5.34408 88.9493 6.07591 83.5852C7.056 75.2882 13.8859 68.8841 22.2829 68.3905C31.1231 67.2473 39.3527 73.0751 41.1455 81.7484C41.76 84.263 42.0762 86.8411 42.0868 89.4287C42.0868 100.516 42.0868 111.636 42.0868 122.823C42.0868 123.457 42.0867 124.059 41.8854 125.294\"\n fill=\"#252525\"\n />\n <path\n id=\"Vector_4\"\n d=\"M51.3337 127.431C47.9713 127.431 47.6681 127.198 47.6681 124.326V76.6386C48.1096 67.937 42.9747 59.906 34.8574 56.602C25.8992 52.8557 15.5485 54.8615 8.66523 61.6779C4.28638 66.6086 1.89197 72.9696 1.94049 79.5438C1.95423 80.2444 1.78037 80.9357 1.43588 81.5476C1.06552 79.9446 0.62885 78.2081 0.426687 76.7387C-0.724024 70.4463 0.471163 63.9529 3.78906 58.472C6.09291 54.6111 9.65016 51.6434 13.8762 50.0567C22.8587 46.555 32.9393 47.1785 41.4148 51.7598C47.6592 54.8694 51.5262 61.2882 51.3337 68.2232C51.5019 87.6249 51.3337 107.027 51.3337 126.396C51.3337 126.797 51.3337 127.164 51.3337 127.532\"\n fill=\"#252525\"\n />\n <path\n id=\"Vector_5\"\n d=\"M76.287 127.499V125.094C76.287 107.196 76.4883 89.2963 76.287 71.3966C76.0848 56.9034 84.2554 50.6588 95.7553 48.3545C101.535 47.2005 107.524 47.6393 113.071 49.6235C122.914 53.3319 128.994 63.1725 127.866 73.5672C127.631 76.2831 127.17 78.975 126.487 81.6151C125.916 78.2758 125.68 74.9364 124.772 71.597C122.808 64.3002 117.377 58.4174 110.228 55.8421C103.078 53.2668 95.1132 54.3239 88.8955 58.6734C83.0441 62.6207 79.7011 69.3237 80.086 76.3389C80.086 92.2349 80.086 108.131 80.086 124.026C80.086 127.366 80.086 127.366 76.2198 127.366\"\n fill=\"#252525\"\n />\n </g>\n </svg>\n </Box>\n );\n};\n","import React from 'react';\n\ntype ArrowDownIconProps = {\n readonly width?: string | number;\n readonly height?: string | number;\n readonly className?: string;\n};\n\nexport const ArrowDownIcon: React.FC<ArrowDownIconProps> = ({ width = 16, height = 16, className = '' }) => {\n return (\n <svg\n width={width}\n height={height}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n data-testid=\"arrow-down-icon\"\n >\n <path d=\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z\" />\n </svg>\n );\n};\n","export interface GTMEvent {\n event: string;\n\n [key: string]: unknown;\n}\n\ndeclare global {\n interface Window {\n dataLayer: unknown[];\n }\n}\n\nexport function trackGTMEvent(eventData: GTMEvent): void {\n if (typeof window === 'undefined') {\n return;\n }\n\n const url = window.location.href;\n const updatedEventData = { ...eventData };\n\n const prefix = url.includes('personal-offer') ? 'postorefront_' : 'mysite_';\n updatedEventData.event = prefix + eventData.event;\n\n try {\n if (window.dataLayer) {\n window.dataLayer.push(updatedEventData);\n } else {\n console.error('GTM dataLayer not available, but event logged');\n window.dataLayer = [];\n window.dataLayer.push(updatedEventData);\n }\n } catch (error) {\n console.error('Failed to track GTM event:', error);\n }\n}\n"]}