{"version":3,"sources":["scss/img/logos/brand/MW.png","serviceWorker.ts","context/SteelStorageConfigurator.types.ts","context/SteelStorageConfigurator.utils.ts","context/SteelStorageConfigurator.store.ts","helpers/ga.ts","context/SteelStorageConfigurator.actions.ts","context/SteelStorageConfigurator.reducer.ts","context/SteelStorageConfigurator.context.tsx","helpers/media.ts","helpers/variants.ts","helpers/brand.ts","helpers/fonts.ts","helpers/fluid.ts","components/base/SteelStorageConfigurator.styles.ts","../../api/src/SteelStorageServer.ts","../../api/src/BaseClient.ts","hooks/useSteelStorageServer.tsx","helpers/animation.ts","helpers/global.ts","components/Button/Button.styles.ts","scss/img/icons/icon-button-arrow.svg","scss/img/icons/arrow-right.svg","scss/img/icons/icon-download.svg","scss/img/icons/location.svg","hooks/useWhenWindowLoaded.ts","components/Fitty/FittyStyles.ts","components/Fitty/Fitty.tsx","components/Button/Button.tsx","components/Grid/Grid.styles.ts","components/Views/DrawerCustomisationView/DrawerCustomisationView.styles.ts","components/Views/DrawerCustomisationView/Components/DrawerSelection/DrawerSelection.styles.ts","scss/img/icons/info.svg","components/Image/Image.styles.tsx","components/Image/Image.tsx","components/Views/DrawerCustomisationView/Components/DrawerSelection/DrawerSelection.tsx","components/Views/DrawerCustomisationView/Components/InsertsCustomisation/InsertsCustomisation.styles.ts","scss/img/icons/icon-x.svg","core/api/services/ApiService.ts","components/DesktopFilterSelector/DesktopFilterSelector.styles.ts","components/DesktopFilterSelector/DesktopFilterSelector.tsx","scss/img/icons/icon-chevron-down.svg","scss/img/icons/steel-storage/configurator/drawer_medium.svg","scss/img/icons/steel-storage/configurator/drawer_small.svg","scss/img/icons/steel-storage/configurator/drawer_wide.svg","scss/img/icons/steel-storage/configurator/drawer_wide_with_gap.svg","components/DrawerSelector/DrawerSelector.styles.ts","components/DrawerSelector/DrawerSelector.tsx","scss/img/icons/x.svg","scss/img/icons/icon-search.svg","components/InsertSearch/InsertSearch.styles.ts","components/InsertSearch/InsertSearch.tsx","components/ItemCard/ItemCard.styles.ts","helpers/accessibleHover.ts","components/Button/IconOnlyButton/IconOnlyButton.styles.ts","scss/img/icons/icon-minus.svg","scss/img/icons/plus.svg","components/Button/IconOnlyButton/IconOnlyButton.tsx","components/ItemCard/ItemCard.tsx","scss/img/icons/tick.svg","components/MobileFilterSelector/MobileFilterSelector.styles.ts","components/MobileFilterSelector/MobileFilterSelector.tsx","core/url-resolver/UrlResolver.ts","components/Views/DrawerCustomisationView/Components/InsertsCustomisation/InsertsCustomisation.tsx","components/Views/DrawerCustomisationView/DrawerCustomisationView.tsx","scss/img/icons/chevron.svg","components/ItemCard/SimplifiedItemCard.tsx","components/Views/ExpandStorageView/ExpandStorageView.styles.ts","components/Views/ExpandStorageView/ExpandStorageView.tsx","components/Views/ModelSelectView/ModelSelectView.styles.ts","components/Views/ModelSelectView/ModelSelectView.tsx","components/PopUp/PopUp.styles.ts","components/PopUp/PopUp.tsx","scss/img/icons/tick-white.svg","components/SectionNavigation/SectionNavigation.styles.ts","components/SectionNavigation/SectionNavigation.tsx","helpers/slick.ts","components/Views/SummaryView/SummaryView.styles.ts","helpers/ssr.ts","hooks/useMedia.ts","components/SummaryModal/SummaryModal.styles.ts","img/close.svg","components/SummaryModal/SummaryModal.tsx","components/Button/Link.tsx","components/Views/SummaryView/SummaryView.tsx","components/DrawerConfigurationPopupContent/DrawerConfigurationPopupContent.styles.ts","components/DrawerConfigurationPopupContent/DrawerConfigurationPopupContent.tsx","components/base/SiteHelmet.tsx","components/base/SteelStorageConfigurator.router.tsx","scss/img/logos/brand/logoWithoutText.svg","components/base/useSSC.tsx","hooks/withMotion.tsx","components/Loading/Loading.styles.ts","components/Loading/Loading.tsx","components/ProductInfoPopup/ProductInfoPopup.styles.ts","helpers/query.ts","scss/img/icons/arrow-left.svg","scss/img/icons/chevron-chunky.svg","scss/img/icons/magnify.svg","components/ProductInfoPopup/ProductInfoPopup.tsx","components/NewPdf/NewPdf.styles.ts","components/NewPdf/NewPdf.tsx","components/base/SteelStorageConfigurator.tsx","index.tsx"],"names":["module","exports","Boolean","window","location","hostname","match","SSCModelID","SSCSectionID","DrawerLayout","FoamInsertSize","getSlotSize","size","SIMPLE","key","value","DOUBLE","TRIPLE","FILLER_SMALL","FILLER_LARGE","FILLER_46","populateSlots","layout","WIDE_WITH_GAP","slots","simple","max","used","products","filler","filler_46","totalSlotsCount","WIDE","MEDIUM","SMALL","getEmptyDrawer","id","isExtra","getAllProductsFromDrawer","drawer","keys","Object","allProducts","forEach","push","getInitialState","filters","models","allFilters","activeDrawerId","activeModelId","undefined","completedSectionsIds","currentSectionId","MODEL_SELECTION","drawers","hasSelectedExpansionStorage","SECTIONS","name","EXPANSION_STORAGE_SELECTION","CUSTOMISE_INSERTS","SUMMARY","SECTIONS_IDS","map","section","SWC40","SRC46","ga","event","parameters","dataLayer","request","concat","ActionType","getUpdatedCompletedSections","oldArray","sectionId","currentSectionIndex","indexOf","slice","navigateToSection","state","addToDrawer","drawerIndex","productToAdd","productSlotSize","availableSpace","updatedDrawers","shouldAddAtTheStart","timeStamppedProductToAdd","timestamp","Date","now","unshift","activeDrawer","steelStorageConfiguratorReducer","action","type","ADD_STORAGE_EXPANSION","filter","x","ADD_TO_CURRENT_DRAWER","findIndex","product","console","error","openPopup","fullDrawerPopupProduct","articleNumber","server","emit","ADD_TO_DRAWER_FROM_POP_UP","DISMISS_POPUP","NAVIGATE_TO_NEXT_SECTION","nextSectionIndex","length","nextSectionId","NAVIGATE_TO_SECTION","NAVIGATE_TO_PREVIOUS_SECTION","previousSectionIndex","previousSectionId","OPEN_POPUP","popupId","REMOVE_FROM_CURRENT_DRAWER","productToRemove","productIndex","splice","REMOVE_STORAGE_EXPANSION","RESET_ACTIVE_DRAWER","activeDrawerIndex","RESET_ALL_DRAWERS","SET_ACTIVE_DRAWER","drawerId","SET_ALL_FILTERS","RESET","SET_STORAGE_MODEL","model","newSection","extraStorageProduct","newDrawers","updatedCompletedSections","TOGGLE_FILTER","filterIndex","filterId","updatedFilters","SET_POPUP_DATA","popupData","data","SteelStorageConfiguratorContext","React","SteelStorageConfiguratorContextProvider","_ref","children","props","dispatch","modelsData","Provider","useSteelStorageConfiguratorContext","Device","from","until","FromDevice","styled","div","withConfig","displayName","componentId","device","css","UntilDevice","_ref2","verticalFadeIn","amount","duration","hidden","y","opacity","transition","visible","staggerChildren","base","baseRgb","dark","darkest","steel","97","95","90","85","80","78","75","70","65","60","55","50","45","40","35","30","25","20","15","10","helveticaConfig","family","weight","style","arimoConfig","font","helvetica","ls","arimo","DEFAULT_MIN_VALUE","Mobile","DEFAULT_MAX_VALUE","ActualDesktop","fluid","min","minWidth","arguments","maxWidth","minRem","maxRem","minWidthRem","maxWidthRem","slope","yAxisIntersection","clampMin","round","clampVal","clampMax","num","Math","SteelStorageConfiguratorStyles","Container","brand","TabletLarge","DesktopLarge","NavigationWrapper","ContentWrapper","AnimatedContent","m","attrs","initial","animate","exit","variants","FullDrawerPopupDrawerListing","ul","FullDrawerPopupDrawerItem","li","FullDrawerPopupDrawerName","strong","fonts","defineProperty","this","enumerable","configurable","writable","root","addEventListener","e","clientId","call","message","mapping","callbacks","callback","postMessage","setupListen","super","setRoot","parent","initialState","steelStorageServer","isReady","SteelStorageServerContext","createContext","SteelStorageServerProvider","useLocation","setSteelStorageServer","useState","setIsReady","useEffect","search","split","SteelStorageServer","on","settings","createElement","useSteelStorageServer","useContext","keyframes","shimmerKeyframes","shimmer","shakeKeyframes","dsStylesOverride","ButtonReset","LocationIcon","ButtonIcon","i","animation","baseButtonStyles","underline","iconVisibility","maintainWidth","_ref3","MobileLarge","_ref4","icon","iconPlacement","_ref5","theme","textTheme","_ref6","flat","LinkElement","a","disabled","ButtonStyles","ButtonElement","button","alignCentre","FittyTextWrapper","DownloadIconHolder","Arrow","_path","_extends","assign","bind","target","source","prototype","hasOwnProperty","apply","SvgIconButtonArrow","svgRef","title","viewBox","ref","d","transform","ForwardRef","forwardRef","SvgArrowRight","fill","SvgIconDownload","_defs","SvgLocation","width","height","className","useWhenWindowLoaded","loaded","setLoaded","whenWindowLoaded","then","FittyStyles","Fitty","html","elementRef","useRef","fittyRef","current","fitty","minSize","maxSize","dangerouslySetInnerHTML","__html","Button","text","onClick","attributes","progress","fakeButton","_iconVisibility","iconPadding","preventDefault","renderIcon","word","ButtonDownloadIcon","Location","ButtonArrowRight","ButtonArrow","defaultGap","Tablet","Desktop","defaultInnerStyles","DefaultInner","defaultPadding","reducedPadding","DefaultStyles","Default","ReducedPaddingStyles","Grid","ReducedPadding","defaultBreakoutLeftStyles","defaultBreakoutRightStyles","defaultBreakoutStyles","reducedPaddingGridBreakoutStyles","Header","HeaderInner","ModelName","HeaderNavigation","SimpleButton","TitleWrapper","DrawerCustomisationViewStyles","Subtitle","h4","Title","h3","MediaContainer","MediaWrapper","SRC27","SRC30","SelectorsWrapper","DrawerSelectorButton","ExtraDrawersWrapper","DefaultDrawersWrapper","index","DrawerSelectionStyles","SvgInfo","ImageStyles","Image","img","defaultSrcSetSizes","MobileSmall","DesktopSmall","getQueryCombiner","src","mobileSrc","mobileBreakpoint","sizes","alt","role","Component","srcSetSizes","loading","motionProps","remainingImgProps","queryCombiner","srcSet","join","decoding","mobileQueryCombiner","mobileSrcSet","media","DrawerSelection","mediaUrl","activeModel","frontalViewWithExpandedStorageImageUrl","frontalViewImageUrl","defaultDrawers","extraDrawers","semanticDrawer","semanticIndex","S","translations","hasConfigurationContent","IconInfo","data-model-id","data-is-expanded","MediaFixedDrawer","MediaMovableDrawer","MediaMovableDrawerInsertsContainer","MediaMovableDrawerEmptyMessage","CroppedInsertWrapper","scale","insertType","slotIndex","CroppedInsertOverlay","CroppedInsertIconWrapper","ResetControlsContainer","ActionControlsContainer","DrawerSelectWrapper","FilterSelectWrapper","SearchWrapper","ProductListing","SvgIconX","url","getUrl","headers","Headers","Accept","isMultipartFormData","delete","requestOptions","method","mode","cache","body","getBody","files","response","fetch","status","Error","statusText","json","controller","slug","baseUrl","params","querystring","stringify","formData","FormData","append","JSON","file","DesktopFilterSelectorStyles","span","FilterOptionsWrapper","FilterOption","DesktopFilterSelector","availableFilters","sort","b","EMPTY","localeCompare","data-is-active","data-large","largeButton","SvgIconChevronDown","stroke","strokeWidth","_g","SvgDrawerMedium","SvgDrawerSmall","SvgDrawerWide","SvgDrawerWideWithGap","baseItem","Trigger","Counter","IconWrapper","Name","ChevronWrapper","OptionsWrapper","delayChildren","OptionsInner","slideVariants","OptionsHeader","OptionsTitle","p","OptionsCloseButton","OptionCollection","Option","DrawerSelectorStyles","DrawerSmall","DrawerMedium","DrawerWide","DrawerWideWithGap","DrawerSelector","isOpen","setIsOpen","_index","activeItem","data-is-open","data-normalised-value","namePrefix","ChevronIcon","AnimatePresence","mobileTitle","CrossIcon","onChange","SvgX","SvgIconSearch","Input","input","BaseButton","InsertSearchStyles","SearchButton","ClearButton","InsertSearch","searchTerm","setSearchTerm","placeholder","placeholderText","onKeyDown","onSearch","data-hidden","clearHelperText","onClear","IconClose","searchHelperText","IconSearch","MediaContent","TagsWrapper","FilterTag","QuantityTag","ImageWrapper","TextContent","ModelCode","ButtonsContainer","ButtonWrapper","QuantityCounter","ItemCardStyles","FullWidthButtonWrapper","ProductLink","accessibleHover","styles","IconOnlyButtonStyles","_line","SvgIconMinus","y2","SvgPlus","Icon_Minus","Icon_Plus","IconOnlyButton","_props$theme","_props$size","helperText","ItemCard","_props$quantity","sizeFilter","find","thumbnailUrl","modelCode","hideButtons","exitBeforeEnter","isAddedToDrawer","onRemoveFromDrawer","quantity","onAddToDrawer","SvgTick","MobileFilterSelectorStyles","clipPath","OptionsCollection","OptionIconWrapper","OptionsFooter","MobileFilterSelector","useLockBodyScroll","filterOptions","setFilterOptions","handleClose","updateFilters","option","_filterOptions","optionIndex","handleChange","TickIcon","handleClear","clearFiltersText","updateResultsText","constructor","_localDomain","resolveRelativeUrl","slugSeparator","startsWith","domain","getDomain","process","toLowerCase","formatImageUrl","baseImageUrl","AnimatedProductsInDrawer","renderInserts","positions","Array","previousPosition","previousProduct","previousProductSize","getPositionSizesForLayer","data-debug-key","croppedThumbnailUrl","IconX","InsertsCustomisation","_state$activeModelId2","_drawerIndex","allProductsInDrawer","isLoading","setIsLoading","setResponse","setAvailableFilters","activeDrawerImage","drawerImages","image","fetchProducts","async","_props$cultureCode","_state$activeModelId","_steelStorageServer$s","cultureCode","modelId","whitelistedInserts","inserts","apiResponse","ApiService","UrlResolver","replace","data-drawer-layout","croppedLidImageUrl","data-is-wide","data-is-hidden","_filters","toString","data-loading","gridColumn","productQuantity","DrawerCustomisationView","usePdf","SvgChevron","SimplifiedItemCard","isAdded","onRemove","onAdd","isExpansionProduct","ExpandStorageViewStyles","h2","NavigateBackButton","Content","ContentHeader","ContentSubtitle","ContentTitle","ContentInner","ImagesContainer","CardsContainer","CardWrapper","ExpandStorageView","_props$activeModel$im","IconChevron","data-name","imageUrl","imageUrlWithExpandedStorage","data-selected-expansion-storage","ModelSelectViewStyles","Description","HelperText","Item","ItemImageWrapper","ItemName","ModelSelectView","onModelClick","staggerDuration","staggerOnExit","PopUpStyles","Background","Inner","header","h1","CloseButton","article","PopUp","useMeasure","outerRef","outerSize","document","querySelector","clientHeight","onClose","data-size","SvgTickWhite","SectionNavigationStyles","nav","NavigationButton","ItemCheckmarkWrapper","SectionNavigation","handleGoToPrevSection","data-direction","sections","isEnabled","includes","isActive","data-is-completed","data-is-disabled","handleGoToSection","IconTick","handleGoToNextSection","slickCss","slick","slickThemeCss","slickTheme","HeaderActionButtons","SummaryContainer","SummarySection","SectionTitleWrapper","SectionTitleLine","SectionTitle","SectionTitleCounter","CardCollection","SummaryViewStyles","HorizontalCard","HorizontalCardImageWrapper","HorizontalCardDetails","HorizontalCardModel","HorizontalCardName","PlainText","SliderWrapper","SliderProgress","isSSR","useMedia","queries","values","defaultValue","mediaQueryLists","query","matchMedia","getValue","mql","matches","setValue","handler","addListener","removeListener","ProductRow","ProductImage","MiddleSection","ProductTitle","ProductModelCode","SummaryModalStyles","ProductButton","Divider","NoneAdded","BottomSection","SvgClose","SummaryModal","_translations$custom","allDrawersEmpty","useMemo","every","addToBasketData","flatMap","totalProducts","reduce","acc","toUpperCase","Close","Fragment","data-has-space","j","Link","href","rest","SummaryView","_props$activeModel$fr","_props$activeModel$fr2","isMobile","sliderRef","activeIndex","setActiveIndex","showModal","setShowModal","pdfUrl","setPdfUrl","showPDFButton","iframe","contentDocument","replaced","documentElement","outerHTML","replaceAll","pdfHtml","pdfBaseUrl","origin","slickSettings","dots","arrows","infinite","slidesToShow","slidesToScroll","beforeChange","_","nextSlide","Slider","log","DrawerConfigurationPopupContentStyles","OptionsGrid","OptionLabel","OptionImageWrapper","DrawerConfigurationPopupContent","content","item","options","description","label","SiteHelmet","head","scriptTag","innerHTML","existingTag","remove","appendChild","Helmet","SteelStorageConfiguratorRouter","_path2","_path3","_path4","_props$mobileWidth","_props$mobileWidth2","_props$mobileWidth3","_props$mobileWidth4","_models","entries","propsModel","expansionProducts","useSSC","wrapperRef","iframeRef","bounds","setTimeout","scrollTo","top","offsetTop","left","behavior","_iframeRef$current$co","contentWindow","data-root","data-mobile-width","mobileWidth","culture","drawerConfigurationPopupContent","some","data-section-name","isThereEnoughSpace","checkForAvailableSpaceInDrawer","position","pointerEvents","zIndex","visibility","pathname","withMotion","WrappedComponent","ComponentWithMotion","LazyMotion","features","domAnimation","strict","SvgLogoWithoutText","pulse","LoadingStyles","Loading","MilwaukeeLogo","Wrapper","Side","ProductArticleNumber","SlidersContainer","CarouselControlsWrapper","CarouselArrow","ThumbnailSliderWrapper","SpecsWrapper","SpecContainer","SpecTopSection","SpecCollapsible","active","SpecCollapsibleItem","SpecBullet","MagnifyingGlass","GalleryLayout","ProductInfoPopupStyles","getQuerySeparator","q","SvgArrowLeft","SvgChevronChunky","SvgMagnify","fillRule","clipRule","ProductInfoInner","_state$popupData2","toggleGallery","galleryActive","activeSpec","setActiveSpec","initialSlide","images","_state$popupData","Magnify","_sliderRef$current","slickPrev","ArrowLeft","data-image-count","data-current","_sliderRef$current2","slickGoTo","_sliderRef$current3","slickNext","ArrowRight","specifications","spec","data-active","Chevron","modalOpen","setModalOpen","showFullscreenGallery","setShowFullscreenGallery","data-gallery-active","NewPdfStyles","Page","HeaderImage","MainTitle","ItemWrapper","ItemThumbnailWrapper","ItemThumbnail","ItemTextWrapper","ItemModel","ItemArticleNumber","HorizontalLine","hr","DrawerWrapper","DrawerTitle","DrawerInner","PageNumber","ItemWithForcedOldCSSProperty","elRef","setAttribute","NewPdf","setData","styleSheetRef","allStyles","sheet","cssRules","rule","cssText","styleTagCheck","styleTag","dataset","ev","parse","removeEventListener","App","setProps","setCultureCode","URLSearchParams","get","isPdf","endsWith","ProductInfoPopup","ReactDOM","render","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.6d0ffccb.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"7c252272036f470fda95903844f1ea75.png\";","/* eslint-disable @typescript-eslint/explicit-function-return-type */\r\n\r\n// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/),\r\n);\r\n\r\ntype Config = {\r\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\r\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\r\n};\r\n\r\nexport function register(config?: Config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL((process as { env: { [key: string]: string } }).env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log('This web app is being served cache-first by a service ' + 'worker. To learn more, visit https://bit.ly/CRA-PWA');\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl: string, config?: Config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log('New content is available and will be used when all ' + 'tabs for this page are closed. See https://bit.ly/CRA-PWA.');\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (response.status === 404 || (contentType != null && contentType.indexOf('javascript') === -1)) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log('No internet connection found. App is running in offline mode.');\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","// SSC = Steel Storage Configurator\r\n\r\nimport { ModelsDataT } from '@components/base/SteelStorageConfigurator';\r\n\r\nexport enum SSCModelID {\r\n SRC30 = 'srC30', // 30\"/78cm 6-Drawer Steel Storage Rolling Cabinet\r\n SWC40 = 'swC40', // 40\"/102cm Steel Work Cart\r\n SRC46 = 'stC46', // 46\"/117cm 10-Drawer High Capacity Steel Storage Rolling Cabinet\r\n SRC27 = 'srC27', // 27\"/69cm 7-Drawer Steel Storage Rolling Cabinet\r\n}\r\n\r\nexport enum SSCSectionID {\r\n MODEL_SELECTION = 'MODEL_SELECTION',\r\n EXPANSION_STORAGE_SELECTION = 'EXPANSION_STORAGE_SELECTION',\r\n CUSTOMISE_INSERTS = 'CUSTOMISE_INSERTS',\r\n SUMMARY = 'SUMMARY',\r\n}\r\n\r\nexport type SSCSection = {\r\n id: SSCSectionID;\r\n name: string;\r\n};\r\n\r\nexport type SSCDrawerImage = {\r\n image: string;\r\n layout: DrawerLayout;\r\n};\r\n\r\nexport type SSCModel = {\r\n drawerImages: SSCDrawerImage[];\r\n croppedLidImageUrl: string;\r\n drawers: Drawer[];\r\n extraStorageProduct?: BaseProduct;\r\n frontalViewImageUrl?: string;\r\n frontalViewWithExpandedStorageImageUrl?: string;\r\n id: SSCModelID;\r\n imageUrl: string;\r\n imageUrlWithExpandedStorage?: string;\r\n modelCode: string;\r\n name: string;\r\n articleNumber: string;\r\n};\r\n\r\nexport type SSCPopupData = {\r\n images?: string[];\r\n specifications?: SSCSpecification[];\r\n model: SSCInsertProduct;\r\n isExpansionProduct?: boolean;\r\n};\r\n\r\ntype SSCSpecification = {\r\n title: string;\r\n data: string[];\r\n};\r\n\r\nexport enum DrawerLayout {\r\n SMALL = 'SMALL',\r\n MEDIUM = 'MEDIUM',\r\n WIDE = 'WIDE',\r\n WIDE_WITH_GAP = 'WIDE_WITH_GAP',\r\n}\r\n\r\nexport enum FoamInsertSize {\r\n SIMPLE = 'SIMPLE',\r\n DOUBLE = 'DOUBLE',\r\n TRIPLE = 'TRIPLE',\r\n FILLER_SMALL = 'FILLER_SMALL',\r\n FILLER_LARGE = 'FILLER_LARGE',\r\n FILLER_46 = 'FILLER_46',\r\n EMPTY = 'EMPTY',\r\n}\r\n\r\nexport type FilterOption = {\r\n id: FoamInsertSize;\r\n name: string;\r\n value: boolean;\r\n largeButton: boolean;\r\n};\r\n\r\nexport type BaseProduct = {\r\n id: string;\r\n modelCode: string;\r\n name: string;\r\n productUrl: string;\r\n thumbnailUrl: string;\r\n articleNumber: string;\r\n popupData?: Pick;\r\n};\r\n\r\nexport type SSCInsertProduct = BaseProduct & {\r\n croppedThumbnailUrl: string;\r\n size: FoamInsertSize;\r\n timestamp?: number;\r\n};\r\n\r\nexport type SSCSlots = {\r\n simple: T;\r\n filler: T;\r\n filler_46: T;\r\n};\r\n\r\nexport type Drawer = {\r\n id: string;\r\n layout: DrawerLayout;\r\n isExtra?: boolean;\r\n\r\n slots: SSCSlots<{\r\n max: number;\r\n used: number;\r\n products: SSCInsertProduct[];\r\n }>;\r\n\r\n totalSlotsCount: {\r\n max: number;\r\n used: number;\r\n };\r\n};\r\n\r\nexport type SSCPopupID =\r\n | 'POPUP/RESET_ALL_DRAWERS_CONFIRMATION'\r\n | 'POPUP/DRAWERS_CONFIGURATION'\r\n | 'POPUP/DRAWER_IS_FULL'\r\n | 'POPUP/PRODUCT_INFORMATION';\r\n\r\nexport type SSCState = {\r\n activeDrawerId: string | 'NONE';\r\n activeModelId?: SSCModelID;\r\n allFilters: FilterOption[];\r\n completedSectionsIds: SSCSectionID[];\r\n currentSectionId: SSCSectionID;\r\n drawers: Drawer[];\r\n fullDrawerPopupProduct?: SSCInsertProduct;\r\n hasSelectedExpansionStorage: boolean;\r\n openPopup?: SSCPopupID | null;\r\n popupData?: SSCPopupData;\r\n models: ModelsDataT;\r\n};\r\n\r\nexport type SSCProductListingRequest = {\r\n modelId: SSCModelID;\r\n cultureCode: string;\r\n filters?: FoamInsertSize[];\r\n searchTerm?: string;\r\n whitelistedInserts: string[];\r\n};\r\n\r\nexport type SSCProductListingResponse = {\r\n products: SSCInsertProduct[];\r\n availableFilters: FoamInsertSize[] | undefined;\r\n};\r\n","import { Drawer, DrawerLayout, FoamInsertSize, SSCInsertProduct, SSCSlots } from './SteelStorageConfigurator.types';\r\n\r\nexport const getSlotSize = (size: FoamInsertSize): KeyValuePair | null => {\r\n switch (size) {\r\n case FoamInsertSize.SIMPLE:\r\n return {\r\n key: 'simple',\r\n value: 1,\r\n };\r\n case FoamInsertSize.DOUBLE:\r\n return {\r\n key: 'simple',\r\n value: 2,\r\n };\r\n case FoamInsertSize.TRIPLE:\r\n return {\r\n key: 'simple',\r\n value: 3,\r\n };\r\n case FoamInsertSize.FILLER_SMALL:\r\n return {\r\n key: 'filler',\r\n value: 1,\r\n };\r\n case FoamInsertSize.FILLER_LARGE:\r\n return {\r\n key: 'filler',\r\n value: 3,\r\n };\r\n case FoamInsertSize.FILLER_46:\r\n return {\r\n key: 'filler_46',\r\n value: 1,\r\n };\r\n\r\n // Fallback value -- should never happen\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\nexport const checkForAvailableSpaceInDrawer = (drawer?: Drawer, product?: SSCInsertProduct): boolean => {\r\n if (!drawer || !product) {\r\n return false;\r\n }\r\n\r\n const productSlotSize = getSlotSize(product.size);\r\n\r\n if (!productSlotSize) {\r\n return false;\r\n }\r\n\r\n const availableSpace = drawer.slots[productSlotSize.key].max - drawer.slots[productSlotSize.key].used;\r\n\r\n if (availableSpace < productSlotSize.value) {\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport const populateSlots = (layout: DrawerLayout): Pick => {\r\n switch (layout) {\r\n case DrawerLayout.WIDE_WITH_GAP: {\r\n return {\r\n slots: {\r\n simple: {\r\n max: 4,\r\n used: 0,\r\n products: [],\r\n },\r\n filler: {\r\n max: 4,\r\n used: 0,\r\n products: [],\r\n },\r\n filler_46: {\r\n max: 2,\r\n used: 0,\r\n products: [],\r\n },\r\n },\r\n totalSlotsCount: {\r\n max: 10,\r\n used: 0,\r\n },\r\n };\r\n }\r\n\r\n case DrawerLayout.WIDE: {\r\n return {\r\n slots: {\r\n simple: {\r\n max: 5,\r\n used: 0,\r\n products: [],\r\n },\r\n filler: {\r\n max: 5,\r\n used: 0,\r\n products: [],\r\n },\r\n filler_46: {\r\n max: 1,\r\n used: 0,\r\n products: [],\r\n },\r\n },\r\n totalSlotsCount: {\r\n max: 11,\r\n used: 0,\r\n },\r\n };\r\n }\r\n\r\n case DrawerLayout.MEDIUM: {\r\n return {\r\n slots: {\r\n simple: {\r\n max: 4,\r\n used: 0,\r\n products: [],\r\n },\r\n filler: {\r\n max: 4,\r\n used: 0,\r\n products: [],\r\n },\r\n filler_46: {\r\n max: 0,\r\n used: 0,\r\n products: [],\r\n },\r\n },\r\n totalSlotsCount: {\r\n max: 8,\r\n used: 0,\r\n },\r\n };\r\n }\r\n\r\n case DrawerLayout.SMALL:\r\n default:\r\n return {\r\n slots: {\r\n simple: {\r\n max: 3,\r\n used: 0,\r\n products: [],\r\n },\r\n filler: {\r\n max: 0,\r\n used: 0,\r\n products: [],\r\n },\r\n filler_46: {\r\n max: 0,\r\n used: 0,\r\n products: [],\r\n },\r\n },\r\n totalSlotsCount: {\r\n max: 3,\r\n used: 0,\r\n },\r\n };\r\n }\r\n};\r\n\r\nexport const getEmptyDrawer = (id: string, layout: DrawerLayout, isExtra?: boolean): Drawer => {\r\n switch (layout) {\r\n case DrawerLayout.WIDE_WITH_GAP: {\r\n return {\r\n id,\r\n layout,\r\n isExtra,\r\n slots: {\r\n simple: {\r\n max: 4,\r\n used: 0,\r\n products: [],\r\n },\r\n filler: {\r\n max: 4,\r\n used: 0,\r\n products: [],\r\n },\r\n filler_46: {\r\n max: 2,\r\n used: 0,\r\n products: [],\r\n },\r\n },\r\n totalSlotsCount: {\r\n max: 10,\r\n used: 0,\r\n },\r\n };\r\n }\r\n\r\n case DrawerLayout.WIDE: {\r\n return {\r\n id,\r\n layout,\r\n isExtra,\r\n slots: {\r\n simple: {\r\n max: 5,\r\n used: 0,\r\n products: [],\r\n },\r\n filler: {\r\n max: 5,\r\n used: 0,\r\n products: [],\r\n },\r\n filler_46: {\r\n max: 1,\r\n used: 0,\r\n products: [],\r\n },\r\n },\r\n totalSlotsCount: {\r\n max: 11,\r\n used: 0,\r\n },\r\n };\r\n }\r\n\r\n case DrawerLayout.MEDIUM: {\r\n return {\r\n id,\r\n layout,\r\n isExtra,\r\n slots: {\r\n simple: {\r\n max: 4,\r\n used: 0,\r\n products: [],\r\n },\r\n filler: {\r\n max: 4,\r\n used: 0,\r\n products: [],\r\n },\r\n filler_46: {\r\n max: 0,\r\n used: 0,\r\n products: [],\r\n },\r\n },\r\n totalSlotsCount: {\r\n max: 8,\r\n used: 0,\r\n },\r\n };\r\n }\r\n\r\n case DrawerLayout.SMALL:\r\n default:\r\n return {\r\n id,\r\n layout,\r\n isExtra,\r\n slots: {\r\n simple: {\r\n max: 3,\r\n used: 0,\r\n products: [],\r\n },\r\n filler: {\r\n max: 0,\r\n used: 0,\r\n products: [],\r\n },\r\n filler_46: {\r\n max: 0,\r\n used: 0,\r\n products: [],\r\n },\r\n },\r\n totalSlotsCount: {\r\n max: 3,\r\n used: 0,\r\n },\r\n };\r\n }\r\n};\r\n\r\nexport const getAllProductsFromDrawer = (drawer: Drawer): SSCInsertProduct[] => {\r\n const keys = Object.keys(drawer.slots) as (keyof SSCSlots)[];\r\n const allProducts: SSCInsertProduct[] = [];\r\n\r\n keys.forEach(key => {\r\n allProducts.push(...drawer.slots[key].products);\r\n });\r\n\r\n return allProducts;\r\n};\r\n","import { ModelsDataT } from '@components/base/SteelStorageConfigurator';\r\nimport { SSCModel, DrawerLayout, SSCModelID, SSCSection, SSCSectionID, SSCState, Drawer, FilterOption } from './SteelStorageConfigurator.types';\r\nimport { getEmptyDrawer } from './SteelStorageConfigurator.utils';\r\n\r\nexport const getInitialState = (filters: FilterOption[], models: ModelsDataT): SSCState => {\r\n return {\r\n allFilters: filters,\r\n activeDrawerId: 'NONE',\r\n activeModelId: undefined,\r\n completedSectionsIds: [],\r\n currentSectionId: SSCSectionID.MODEL_SELECTION,\r\n drawers: [],\r\n hasSelectedExpansionStorage: false,\r\n models,\r\n };\r\n};\r\n\r\nexport const SECTIONS: SSCSection[] = [\r\n {\r\n id: SSCSectionID.MODEL_SELECTION,\r\n name: 'custom.ssc.storageUnit',\r\n },\r\n {\r\n id: SSCSectionID.EXPANSION_STORAGE_SELECTION,\r\n name: 'custom.ssc.expandStorage',\r\n },\r\n {\r\n id: SSCSectionID.CUSTOMISE_INSERTS,\r\n name: 'custom.ssc.inserts',\r\n },\r\n {\r\n id: SSCSectionID.SUMMARY,\r\n name: 'custom.ssc.summary',\r\n },\r\n];\r\n\r\nexport const SECTIONS_IDS: SSCSectionID[] = SECTIONS.map(section => section.id);\r\n\r\n// export const SSC_MODEL_SRC30: SSCModel = {\r\n// id: SSCModelID.SRC30,\r\n// name: '',\r\n// modelCode: '',\r\n// imageUrl: '',\r\n// croppedLidImageUrl: '',\r\n// drawerImages: [],\r\n// drawers: [\r\n// getEmptyDrawer('drawer-1', DrawerLayout.SMALL),\r\n// getEmptyDrawer('drawer-2', DrawerLayout.SMALL),\r\n// getEmptyDrawer('drawer-3', DrawerLayout.SMALL),\r\n// getEmptyDrawer('drawer-4', DrawerLayout.SMALL),\r\n// getEmptyDrawer('drawer-5', DrawerLayout.SMALL),\r\n// getEmptyDrawer('drawer-6', DrawerLayout.SMALL),\r\n// ],\r\n// articleNumber: '4932478849',\r\n// };\r\n\r\nexport const SSC_MODEL_SRC30_EXTRA_DRAWERS: Drawer[] = [\r\n getEmptyDrawer('drawer-1--extra', DrawerLayout.SMALL, true),\r\n getEmptyDrawer('drawer-2--extra', DrawerLayout.SMALL, true),\r\n getEmptyDrawer('drawer-3--extra', DrawerLayout.SMALL, true),\r\n getEmptyDrawer('drawer-4--extra', DrawerLayout.SMALL, true),\r\n];\r\n\r\nexport const SSC_MODEL_SWC40: SSCModel = {\r\n id: SSCModelID.SWC40,\r\n modelCode: '',\r\n name: '',\r\n imageUrl: '',\r\n croppedLidImageUrl: '',\r\n drawerImages: [],\r\n drawers: [getEmptyDrawer('drawer-1', DrawerLayout.MEDIUM)],\r\n articleNumber: '4932478856',\r\n};\r\n\r\nexport const SSC_MODEL_STC46: SSCModel = {\r\n id: SSCModelID.SRC46,\r\n modelCode: '',\r\n name: '',\r\n imageUrl: '',\r\n croppedLidImageUrl: '',\r\n drawerImages: [],\r\n drawers: [\r\n getEmptyDrawer('drawer-1', DrawerLayout.WIDE),\r\n getEmptyDrawer('drawer-2', DrawerLayout.WIDE),\r\n getEmptyDrawer('drawer-3', DrawerLayout.WIDE_WITH_GAP),\r\n getEmptyDrawer('drawer-4', DrawerLayout.WIDE_WITH_GAP),\r\n getEmptyDrawer('drawer-5', DrawerLayout.WIDE_WITH_GAP),\r\n ],\r\n articleNumber: '4932478852',\r\n};\r\n\r\nexport const SSC_MODEL_STC46_EXTRA_DRAWERS: Drawer[] = [\r\n getEmptyDrawer('drawer-1--extra', DrawerLayout.WIDE_WITH_GAP, true),\r\n getEmptyDrawer('drawer-2--extra', DrawerLayout.WIDE_WITH_GAP, true),\r\n getEmptyDrawer('drawer-3--extra', DrawerLayout.WIDE_WITH_GAP, true),\r\n];\r\n","type GA4Event = 'add-to-basket' | 'product-added' | 'product-removed';\r\n\r\ninterface BaseGA4Event {\r\n event: `steelstoragebuilder_${GA4Event}`;\r\n}\r\n\r\nexport function ga(event: GA4Event, parameters?: Record): void {\r\n if (!window.dataLayer) {\r\n window.dataLayer = [];\r\n }\r\n\r\n const request: BaseGA4Event = {\r\n event: `steelstoragebuilder_${event}`,\r\n ...parameters,\r\n };\r\n\r\n window.dataLayer.push(request);\r\n}\r\n","import SteelStorageServer from '@steelstorage/api/src/SteelStorageServer';\r\nimport { FilterOption, FoamInsertSize, SSCInsertProduct, SSCModel, SSCPopupData, SSCPopupID, SSCSectionID } from './SteelStorageConfigurator.types';\r\n\r\n// Actions are organised in alphabetical order, please keep them this way\r\nexport enum ActionType {\r\n ADD_STORAGE_EXPANSION = 'ADD_STORAGE_EXPANSION',\r\n ADD_TO_CURRENT_DRAWER = 'ADD_TO_CURRENT_DRAWER',\r\n ADD_TO_DRAWER_FROM_POP_UP = 'ADD_TO_DRAWER_FROM_POP_UP',\r\n DISMISS_POPUP = 'DISMISS_POPUP',\r\n NAVIGATE_TO_NEXT_SECTION = 'NAVIGATE_TO_NEXT_SECTION',\r\n NAVIGATE_TO_PREVIOUS_SECTION = 'NAVIGATE_TO_PREVIOUS_SECTION',\r\n NAVIGATE_TO_SECTION = 'NAVIGATE_TO_SECTION',\r\n OPEN_POPUP = 'OPEN_POPUP',\r\n REMOVE_FROM_CURRENT_DRAWER = 'REMOVE_FROM_CURRENT_DRAWER',\r\n REMOVE_STORAGE_EXPANSION = 'REMOVE_STORAGE_EXPANSION',\r\n RESET_ACTIVE_DRAWER = 'RESET_ACTIVE_DRAWER',\r\n RESET_ALL_DRAWERS = 'RESET_ALL_DRAWERS',\r\n RESET = 'RESET',\r\n SET_ACTIVE_DRAWER = 'SET_ACTIVE_DRAWER',\r\n SET_ALL_FILTERS = 'SET_ALL_FILTERS',\r\n SET_STORAGE_MODEL = 'SET_STORAGE_MODEL',\r\n TOGGLE_FILTER = 'TOGGLE_FILTER',\r\n SET_POPUP_DATA = 'SET_POPUP_DATA',\r\n}\r\n\r\nexport type Action =\r\n | { type: ActionType.ADD_STORAGE_EXPANSION }\r\n | { type: ActionType.ADD_TO_CURRENT_DRAWER; product: SSCInsertProduct; server: SteelStorageServer | null }\r\n | { type: ActionType.ADD_TO_DRAWER_FROM_POP_UP; drawerIndex: number; server: SteelStorageServer | null }\r\n | { type: ActionType.DISMISS_POPUP }\r\n | { type: ActionType.NAVIGATE_TO_NEXT_SECTION }\r\n | { type: ActionType.NAVIGATE_TO_PREVIOUS_SECTION }\r\n | { type: ActionType.NAVIGATE_TO_SECTION; sectionId: SSCSectionID }\r\n | { type: ActionType.OPEN_POPUP; popupId: SSCPopupID }\r\n | { type: ActionType.REMOVE_FROM_CURRENT_DRAWER; product: SSCInsertProduct; timestamp?: number }\r\n | { type: ActionType.REMOVE_STORAGE_EXPANSION }\r\n | { type: ActionType.RESET_ACTIVE_DRAWER }\r\n | { type: ActionType.RESET_ALL_DRAWERS }\r\n | { type: ActionType.RESET }\r\n | { type: ActionType.SET_ACTIVE_DRAWER; drawerId: string }\r\n | { type: ActionType.SET_ALL_FILTERS; filters: FilterOption[] }\r\n | { type: ActionType.SET_STORAGE_MODEL; model: SSCModel }\r\n | { type: ActionType.TOGGLE_FILTER; filterId: FoamInsertSize }\r\n | { type: ActionType.SET_POPUP_DATA; data: SSCPopupData | undefined };\r\n","import { ga } from '@helpers/ga';\r\nimport { Action, ActionType } from './SteelStorageConfigurator.actions';\r\nimport { SECTIONS_IDS, getInitialState } from './SteelStorageConfigurator.store';\r\nimport { Drawer, DrawerLayout, SSCInsertProduct, SSCModel, SSCModelID, SSCSectionID, SSCSlots, SSCState } from './SteelStorageConfigurator.types';\r\nimport { getEmptyDrawer, getSlotSize, populateSlots } from './SteelStorageConfigurator.utils';\r\n\r\n// --- Utility functions --- //\r\nconst getUpdatedCompletedSections = (oldArray: SSCSectionID[], sectionId: SSCSectionID): SSCSectionID[] => {\r\n const currentSectionIndex = SECTIONS_IDS.indexOf(sectionId);\r\n\r\n if (currentSectionIndex === -1) {\r\n return oldArray;\r\n }\r\n\r\n const _completedSectionsIds = SECTIONS_IDS.slice(0, currentSectionIndex);\r\n\r\n return _completedSectionsIds;\r\n};\r\n\r\nconst navigateToSection = (state: SSCState, sectionId: SSCSectionID): SSCState => {\r\n const completedSectionsIds = getUpdatedCompletedSections(state.completedSectionsIds, sectionId);\r\n\r\n return {\r\n ...state,\r\n activeDrawerId:\r\n sectionId === SSCSectionID.MODEL_SELECTION || sectionId === SSCSectionID.EXPANSION_STORAGE_SELECTION ? 'NONE' : state.activeDrawerId,\r\n currentSectionId: sectionId,\r\n completedSectionsIds,\r\n };\r\n};\r\n\r\nconst addToDrawer = (\r\n drawers: Drawer[],\r\n drawerIndex: number,\r\n productToAdd: SSCInsertProduct,\r\n productSlotSize: KeyValuePair,\r\n availableSpace: number,\r\n): { drawers: Drawer[]; activeDrawer: string } => {\r\n const updatedDrawers = [...drawers];\r\n\r\n let shouldAddAtTheStart = false;\r\n\r\n // If the drawer is of type WIDE_WITH_GAP, we have to check if rearranging the products is necessary\r\n // This is necessary as to avoid unwanted overlap of products in the drawer preview\r\n if (updatedDrawers[drawerIndex].layout === DrawerLayout.WIDE_WITH_GAP) {\r\n if (availableSpace === productSlotSize.value && productSlotSize.value > 1) {\r\n shouldAddAtTheStart = true;\r\n }\r\n }\r\n\r\n const timeStamppedProductToAdd = { ...productToAdd };\r\n timeStamppedProductToAdd.timestamp = Date.now();\r\n\r\n // Add the product to the drawer\r\n if (shouldAddAtTheStart) {\r\n updatedDrawers[drawerIndex].slots[productSlotSize.key].products.unshift(timeStamppedProductToAdd);\r\n } else {\r\n updatedDrawers[drawerIndex].slots[productSlotSize.key].products.push(timeStamppedProductToAdd);\r\n }\r\n\r\n // Update the used slots\r\n updatedDrawers[drawerIndex].slots[productSlotSize.key].used += productSlotSize.value;\r\n updatedDrawers[drawerIndex].totalSlotsCount.used += productSlotSize.value;\r\n\r\n return { drawers: updatedDrawers, activeDrawer: updatedDrawers[drawerIndex].id };\r\n};\r\n// --- End of utility functions --- //\r\n\r\n// --- Reducer --- //\r\n// Actions are organised alphabetically, please keep them this way\r\nexport function steelStorageConfiguratorReducer(state: SSCState, action: Action): SSCState {\r\n switch (action.type) {\r\n case ActionType.ADD_STORAGE_EXPANSION: {\r\n const extraDrawers = state.models[state.activeModelId as SSCModelID].drawers.filter(x => x.isExtra);\r\n\r\n const updatedDrawers = [...extraDrawers.map(x => ({ ...x, ...populateSlots(x.layout) } as Drawer)), ...state.drawers];\r\n\r\n return {\r\n ...state,\r\n hasSelectedExpansionStorage: true,\r\n drawers: updatedDrawers,\r\n };\r\n }\r\n\r\n case ActionType.ADD_TO_CURRENT_DRAWER: {\r\n // Check if there's enough space in the drawer\r\n const drawerIndex = state.drawers.findIndex(drawer => drawer.id === state.activeDrawerId);\r\n const drawer = state.drawers[drawerIndex];\r\n const productToAdd = action.product;\r\n const productSlotSize = getSlotSize(action.product.size);\r\n\r\n // Safeguards for faulty data\r\n if (!productSlotSize || !drawer || drawerIndex === -1) {\r\n console.error('Error: faulty data in ADD_TO_CURRENT_DRAWER action', { productSlotSize, drawer, drawerIndex });\r\n return { ...state };\r\n }\r\n\r\n const availableSpace = drawer.slots[productSlotSize.key].max - drawer.slots[productSlotSize.key].used;\r\n\r\n // If there's not enough space, we open a pop up to give the user the option to add it elsewhere\r\n if (availableSpace < productSlotSize.value) {\r\n return { ...state, openPopup: 'POPUP/DRAWER_IS_FULL', fullDrawerPopupProduct: productToAdd };\r\n }\r\n\r\n // Add product to drawer\r\n const { drawers } = addToDrawer(state.drawers, drawerIndex, productToAdd, productSlotSize, availableSpace);\r\n\r\n ga('product-added', { articleNumber: action.product.articleNumber });\r\n\r\n if (action.server) {\r\n action.server.emit('product-added', action.product.articleNumber);\r\n }\r\n\r\n return {\r\n ...state,\r\n drawers,\r\n };\r\n }\r\n\r\n case ActionType.ADD_TO_DRAWER_FROM_POP_UP: {\r\n // If no product has been populated in fullDrawerPopupProduct, we return the current state\r\n if (!state.fullDrawerPopupProduct) {\r\n return { ...state };\r\n }\r\n\r\n // Check if there's enough space in the drawer\r\n const drawerIndex = action.drawerIndex;\r\n const drawer = state.drawers[action.drawerIndex];\r\n const productToAdd = state.fullDrawerPopupProduct;\r\n const productSlotSize = getSlotSize(productToAdd.size);\r\n\r\n // Safeguards for faulty data\r\n if (!productSlotSize || !drawer || drawerIndex === -1) {\r\n console.error('Error: faulty data in ADD_TO_DRAWER_FROM_POP_UP action');\r\n return { ...state };\r\n }\r\n\r\n const availableSpace = drawer.slots[productSlotSize.key].max - drawer.slots[productSlotSize.key].used;\r\n\r\n // If there's not enough space, we return the current state\r\n if (availableSpace < productSlotSize.value) {\r\n // Note that this should never happen as we're already checking for the available space in the pop up component\r\n return { ...state };\r\n }\r\n\r\n // Add product to drawer\r\n const { drawers, activeDrawer } = addToDrawer(state.drawers, drawerIndex, productToAdd, productSlotSize, availableSpace);\r\n\r\n if (action.server) {\r\n action.server.emit('product-added', productToAdd.articleNumber);\r\n }\r\n\r\n ga('product-added', { articleNumber: productToAdd.articleNumber });\r\n\r\n return {\r\n ...state,\r\n activeDrawerId: activeDrawer !== state.activeDrawerId ? activeDrawer : state.activeDrawerId,\r\n drawers,\r\n openPopup: null,\r\n fullDrawerPopupProduct: undefined,\r\n };\r\n }\r\n\r\n case ActionType.DISMISS_POPUP: {\r\n return {\r\n ...state,\r\n openPopup: null,\r\n };\r\n }\r\n\r\n case ActionType.NAVIGATE_TO_NEXT_SECTION: {\r\n const nextSectionIndex = SECTIONS_IDS.indexOf(state.currentSectionId) + 1;\r\n\r\n if (nextSectionIndex === SECTIONS_IDS.length) {\r\n return state;\r\n }\r\n\r\n const nextSectionId = SECTIONS_IDS[nextSectionIndex];\r\n\r\n return navigateToSection(state, nextSectionId);\r\n }\r\n\r\n case ActionType.NAVIGATE_TO_SECTION: {\r\n return navigateToSection(state, action.sectionId);\r\n }\r\n\r\n case ActionType.NAVIGATE_TO_PREVIOUS_SECTION: {\r\n const previousSectionIndex = SECTIONS_IDS.indexOf(state.currentSectionId) - 1;\r\n\r\n // Safeguard\r\n if (previousSectionIndex === -1) {\r\n console.error('Error: Navigation went wrong in NAVIGATE_TO_PREVIOUS_SECTION action');\r\n return state;\r\n }\r\n\r\n const previousSectionId = SECTIONS_IDS[previousSectionIndex];\r\n\r\n return navigateToSection(state, previousSectionId);\r\n }\r\n\r\n case ActionType.OPEN_POPUP: {\r\n return {\r\n ...state,\r\n openPopup: action.popupId,\r\n };\r\n }\r\n\r\n case ActionType.REMOVE_FROM_CURRENT_DRAWER: {\r\n // Get the index of the active drawer\r\n const drawerIndex = state.drawers.findIndex(drawer => drawer.id === state.activeDrawerId);\r\n\r\n // If the active drawer is not found, we return the current state\r\n if (drawerIndex === -1) {\r\n console.error('Error: No active drawer found in REMOVE_FROM_CURRENT_DRAWER action');\r\n return { ...state };\r\n }\r\n\r\n const updatedDrawers = [...state.drawers];\r\n const productToRemove = action.product;\r\n const productSlotSize = getSlotSize(productToRemove.size);\r\n\r\n // If the product size is not found, we return the current state\r\n if (!productSlotSize) {\r\n console.error('Error: No product size found in REMOVE_FROM_CURRENT_DRAWER action');\r\n return { ...state };\r\n }\r\n\r\n // Find the product index in the drawer\r\n let productIndex = -1;\r\n\r\n if (action.timestamp) {\r\n // If timestamp is provided, we look for the product with the same timestamp\r\n productIndex = updatedDrawers[drawerIndex].slots[productSlotSize.key].products.findIndex(\r\n product => product.id === productToRemove.id && product.timestamp === action.timestamp,\r\n );\r\n } else {\r\n // Otherwise, we look for the product with the same id\r\n productIndex = updatedDrawers[drawerIndex].slots[productSlotSize.key].products.findIndex(product => product.id === productToRemove.id);\r\n }\r\n\r\n ga('product-removed', { articleNumber: productToRemove.articleNumber });\r\n\r\n // If the product is not found, we return the current state\r\n if (productIndex === -1) {\r\n console.error('Error: No product found in REMOVE_FROM_CURRENT_DRAWER action');\r\n return state;\r\n }\r\n\r\n // Remove the product from the drawer\r\n updatedDrawers[drawerIndex].slots[productSlotSize.key].products.splice(productIndex, 1);\r\n\r\n // Update the used slots\r\n updatedDrawers[drawerIndex].slots[productSlotSize.key].used -= productSlotSize.value;\r\n updatedDrawers[drawerIndex].totalSlotsCount.used -= productSlotSize.value;\r\n\r\n return {\r\n ...state,\r\n drawers: updatedDrawers,\r\n };\r\n }\r\n\r\n case ActionType.REMOVE_STORAGE_EXPANSION: {\r\n const updatedDrawers = [...state.drawers].filter(drawer => !drawer.isExtra);\r\n\r\n return {\r\n ...state,\r\n hasSelectedExpansionStorage: false,\r\n drawers: updatedDrawers,\r\n };\r\n }\r\n\r\n case ActionType.RESET_ACTIVE_DRAWER: {\r\n const activeDrawerIndex = state.drawers.findIndex(drawer => drawer.id === state.activeDrawerId);\r\n\r\n // Safeguard\r\n if (activeDrawerIndex === -1) {\r\n console.error('Error: No active drawer found in RESET_ACTIVE_DRAWER action');\r\n return { ...state };\r\n }\r\n\r\n const activeDrawer = state.drawers[activeDrawerIndex];\r\n const updatedDrawers = [...state.drawers];\r\n\r\n // Substitute active drawer for an empty one\r\n updatedDrawers[activeDrawerIndex] = getEmptyDrawer(activeDrawer.id, activeDrawer.layout);\r\n\r\n return {\r\n ...state,\r\n drawers: updatedDrawers,\r\n };\r\n }\r\n\r\n case ActionType.RESET_ALL_DRAWERS: {\r\n // Clean up inserts and used slots\r\n const updatedDrawers = [...state.drawers].map(drawer => {\r\n return getEmptyDrawer(drawer.id, drawer.layout, drawer.isExtra);\r\n });\r\n\r\n return {\r\n ...state,\r\n drawers: updatedDrawers,\r\n openPopup: null,\r\n };\r\n }\r\n\r\n case ActionType.SET_ACTIVE_DRAWER: {\r\n return {\r\n ...state,\r\n activeDrawerId: action.drawerId,\r\n };\r\n }\r\n\r\n case ActionType.SET_ALL_FILTERS: {\r\n return {\r\n ...state,\r\n allFilters: action.filters,\r\n };\r\n }\r\n\r\n case ActionType.RESET: {\r\n return getInitialState(state.allFilters, state.models);\r\n }\r\n\r\n case ActionType.SET_STORAGE_MODEL: {\r\n const model = {\r\n ...action.model,\r\n drawers: action.model.drawers.filter(x => !x.isExtra).map(drawer => ({ ...drawer, ...populateSlots(drawer.layout) })),\r\n } as SSCModel;\r\n\r\n if (!model) {\r\n // Safeguard\r\n console.error(`Error: No model in SET_STORAGE_MODEL action`);\r\n return state;\r\n }\r\n\r\n const newSection = model.extraStorageProduct ? SSCSectionID.EXPANSION_STORAGE_SELECTION : SSCSectionID.CUSTOMISE_INSERTS;\r\n\r\n // Upon selecting a new model, we set the drawers to the default ones for that model\r\n const newDrawers = model.drawers;\r\n\r\n const updatedCompletedSections = getUpdatedCompletedSections(state.completedSectionsIds, newSection);\r\n\r\n return {\r\n ...state,\r\n activeModelId: model.id,\r\n currentSectionId: newSection,\r\n completedSectionsIds: updatedCompletedSections,\r\n drawers: newDrawers,\r\n hasSelectedExpansionStorage: false,\r\n // activeDrawerId: newDrawers[0].id,\r\n };\r\n }\r\n\r\n case ActionType.TOGGLE_FILTER: {\r\n // Find filter index\r\n const filterIndex = state.allFilters.findIndex(filter => filter.id === action.filterId);\r\n\r\n // Safeguard\r\n if (filterIndex === -1) {\r\n console.error(`Error: No filter with id '${action.filterId}' found in TOGGLE_FILTER action`);\r\n return state;\r\n }\r\n\r\n // Toggle filter value\r\n const updatedFilters = [...state.allFilters];\r\n updatedFilters[filterIndex].value = !updatedFilters[filterIndex].value;\r\n\r\n return {\r\n ...state,\r\n allFilters: updatedFilters,\r\n };\r\n }\r\n\r\n case ActionType.SET_POPUP_DATA: {\r\n return {\r\n ...state,\r\n popupData: action.data,\r\n };\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { Action } from './SteelStorageConfigurator.actions';\r\nimport { getInitialState } from './SteelStorageConfigurator.store';\r\nimport { SSCState } from './SteelStorageConfigurator.types';\r\nimport { steelStorageConfiguratorReducer } from './SteelStorageConfigurator.reducer';\r\nimport * as React from 'react';\r\nimport { SteelStorageConfiguratorProps } from '@components/base/SteelStorageConfigurator';\r\n\r\nconst SteelStorageConfiguratorContext = React.createContext({});\r\n\r\nexport const SteelStorageConfiguratorContextProvider: React.FunctionComponent<{ props: SteelStorageConfiguratorProps }> = ({ children, props }) => {\r\n const [state, dispatch] = React.useReducer(steelStorageConfiguratorReducer, getInitialState(props.allFilters, props.modelsData));\r\n\r\n return {children};\r\n};\r\n\r\ntype SteelStorageConfiguratorContextType = {\r\n state: SSCState;\r\n dispatch: React.Dispatch;\r\n};\r\n\r\nexport const useSteelStorageConfiguratorContext = (): SteelStorageConfiguratorContextType => {\r\n const value = React.useContext(SteelStorageConfiguratorContext);\r\n\r\n return value as SteelStorageConfiguratorContextType;\r\n};\r\n","import styled, { css } from 'styled-components';\r\n\r\nexport enum Device {\r\n MobileSmall = 320,\r\n Mobile = 375,\r\n MobileLarge = 480,\r\n Tablet = 768,\r\n TabletLarge = 1024,\r\n DesktopSmall = 1280,\r\n Desktop = 1366,\r\n DesktopLarge = 1600,\r\n ActualDesktop = 1920,\r\n ExtraLargeDesktop = 2560,\r\n}\r\n\r\nexport function from(size: Device): string {\r\n return `(min-width: ${size}px)`;\r\n}\r\n\r\nexport function until(size: Device): string {\r\n return `(max-width: ${size - 1}px)`;\r\n}\r\n\r\nexport function between(start: Device, end: Device): string {\r\n return `${from(start)} and ${until(end)}`;\r\n}\r\n\r\nexport const FromDevice = styled.div<{ device: Device }>`\r\n display: none;\r\n\r\n ${({ device }) =>\r\n device\r\n ? css`\r\n @media ${from(device)} {\r\n display: block;\r\n }\r\n `\r\n : null}\r\n`;\r\n\r\nexport const UntilDevice = styled.div<{ device: Device }>`\r\n display: block;\r\n\r\n ${({ device }) =>\r\n device\r\n ? css`\r\n @media ${from(device)} {\r\n display: none;\r\n }\r\n `\r\n : null}\r\n`;\r\n","import { Variants } from 'framer-motion';\r\n\r\nexport function verticalFadeIn(amount?: number, duration?: number): Variants {\r\n return {\r\n hidden: {\r\n y: amount ?? 30,\r\n opacity: 0,\r\n transition: { duration: duration ? duration / 2 : 0.3 },\r\n },\r\n visible: {\r\n y: 0,\r\n opacity: 1,\r\n transition: { duration: duration ?? 0.6, staggerChildren: 0.15 },\r\n },\r\n };\r\n}\r\n\r\nexport function horizontalFadeIn(amount?: number, duration?: number): Variants {\r\n return {\r\n hidden: {\r\n x: amount ?? -30,\r\n opacity: 0,\r\n transition: { duration: duration ? duration / 2 : 0.3 },\r\n },\r\n visible: {\r\n x: 0,\r\n opacity: 1,\r\n transition: { duration: duration ?? 0.6, staggerChildren: 0.15 },\r\n },\r\n };\r\n}\r\n\r\nexport function scaleFadeIn(amount?: number, duration?: number): Variants {\r\n return {\r\n hidden: {\r\n scale: amount ?? 2,\r\n opacity: 0,\r\n transition: { duration: duration ?? 0.4 },\r\n },\r\n visible: {\r\n scale: 1,\r\n opacity: 1,\r\n transition: { duration: duration ?? 0.6, staggerChildren: 0.15 },\r\n },\r\n };\r\n}\r\n\r\nexport function staggerChildren(staggerDuration?: number, staggerOnExit?: boolean): Variants {\r\n return {\r\n hidden: {\r\n opacity: 1,\r\n transition: { duration: 0.4, staggerChildren: staggerOnExit ? staggerDuration ?? 0.15 : 0 },\r\n },\r\n visible: {\r\n opacity: 1,\r\n transition: { duration: 0.6, staggerChildren: staggerDuration ?? 0.15 },\r\n },\r\n };\r\n}\r\n\r\nexport function scaleIn(amount?: number, duration?: number): Variants {\r\n return {\r\n hidden: {\r\n scale: amount ?? 2,\r\n transition: { duration: duration ?? 0.4 },\r\n },\r\n visible: {\r\n scale: 1,\r\n transition: { duration: duration ?? 0.6, staggerChildren: 0.15 },\r\n },\r\n };\r\n}\r\n\r\nexport function horizontalSlideIn(amount?: number, duration?: number): Variants {\r\n return {\r\n hidden: {\r\n x: amount ? `${amount}%` : '-100%',\r\n transition: { duration: duration ?? 0.4 },\r\n },\r\n visible: {\r\n x: 0,\r\n transition: { duration: duration ?? 0.6, staggerChildren: 0.15 },\r\n },\r\n };\r\n}\r\n\r\nexport function verticalSlideIn(amount?: number | string, duration?: number): Variants {\r\n return {\r\n hidden: {\r\n y: amount ?? '100%',\r\n transition: { duration: duration ? duration / 2 : 0.3 },\r\n },\r\n visible: {\r\n y: '0%',\r\n transition: { duration: duration ?? 0.6, staggerChildren: 0.15 },\r\n },\r\n };\r\n}\r\n\r\nexport function fadeIn(duration?: number): Variants {\r\n return {\r\n hidden: {\r\n opacity: 0,\r\n transition: { duration: duration ? duration / 2 : 0.3 },\r\n },\r\n visible: {\r\n opacity: 1,\r\n transition: { duration: duration ?? 0.6, staggerChildren: 0.15 },\r\n },\r\n };\r\n}\r\n","export default {\r\n black: '#000000',\r\n nearlyBlack: '#231f20',\r\n white: '#ffffff',\r\n red: {\r\n base: '#db011c',\r\n baseRgb: '219, 1, 28',\r\n dark: '#ab0116',\r\n darkest: '#840111',\r\n },\r\n green: {\r\n base: '#00A600',\r\n dark: '#008F00',\r\n },\r\n orange: {\r\n base: '#F0803B',\r\n },\r\n grey: {\r\n steel: '#C6C6C6',\r\n 97: 'hsl(0, 0%, 97%);',\r\n 95: 'hsl(0, 0%, 95%);',\r\n 90: 'hsl(0, 0%, 90%);',\r\n 85: 'hsl(0, 0%, 85%);',\r\n 80: 'hsl(0, 0%, 80%);',\r\n 78: 'hsl(0, 0%, 78%);',\r\n 75: 'hsl(0, 0%, 75%);',\r\n 70: 'hsl(0, 0%, 70%);',\r\n 65: 'hsl(0, 0%, 65%);',\r\n 60: 'hsl(0, 0%, 60%);',\r\n 55: 'hsl(0, 0%, 55%);',\r\n 50: 'hsl(0, 0%, 50%);',\r\n 45: 'hsl(0, 0%, 45%);',\r\n 40: 'hsl(0, 0%, 40%);',\r\n 35: 'hsl(0, 0%, 35%);',\r\n 30: 'hsl(0, 0%, 30%);',\r\n 25: 'hsl(0, 0%, 25%);',\r\n 20: 'hsl(0, 0%, 20%);',\r\n 15: 'hsl(0, 0%, 15%);',\r\n 10: 'hsl(0, 0%, 10%);',\r\n '05': 'hsl(0, 0%, 5%);',\r\n },\r\n};\r\n","import { css, FlattenInterpolation, ThemeProps } from 'styled-components';\r\n\r\nexport const helveticaConfig = {\r\n ['45-light']: {\r\n family: 'Helvetica Neue LT W05_45 Light',\r\n weight: 300,\r\n style: 'normal',\r\n },\r\n ['45-light-italic']: {\r\n family: 'Helvetica Neue LT W05_46 Lt It',\r\n weight: 300,\r\n style: 'italic',\r\n },\r\n ['53-extended']: {\r\n family: 'Helvetica Neue LT W05_53 Ext',\r\n weight: 400,\r\n style: 'normal',\r\n },\r\n ['53-extended-oblique']: {\r\n family: 'Helvetica Neue LT W05_53 Ex Ob',\r\n weight: 400,\r\n style: 'oblique',\r\n },\r\n ['55-roman']: {\r\n family: 'Helvetica Neue LT W05_55 Roman',\r\n weight: 500,\r\n style: 'normal',\r\n },\r\n ['55-roman-italic']: {\r\n family: 'Helvetica Neue LT W05_55 Roman',\r\n weight: 500,\r\n style: 'italic',\r\n },\r\n ['63-medium-extended']: {\r\n family: 'Helvetica Neue LT W05_63 Md Ex',\r\n weight: 400,\r\n style: 'normal',\r\n },\r\n ['63-medium-extended-oblique']: {\r\n family: 'Helvetica Neue LT W05_63MdExOb',\r\n weight: 400,\r\n style: 'oblique',\r\n },\r\n ['67-medium-condensed']: {\r\n family: 'Helvetica Neue LT W05_67 Md Cn',\r\n weight: 400,\r\n style: 'normal',\r\n },\r\n ['73-bold-extended']: {\r\n family: 'Helvetica Neue LT W05_73 Bd Ex',\r\n weight: 700,\r\n style: 'normal',\r\n },\r\n ['73-bold-extended-oblique']: {\r\n family: 'Helvetica Neue LT W05_73BdExObl',\r\n weight: 700,\r\n style: 'oblique',\r\n },\r\n ['77-bold-condensed']: {\r\n family: 'Helvetica Neue LT W05_77 Bd Cn',\r\n weight: 700,\r\n style: 'normal',\r\n },\r\n ['83-heavy-extended']: {\r\n family: 'Helvetica Neue LT W05_83 Hv Ex',\r\n weight: 800,\r\n style: 'normal',\r\n },\r\n ['83-heavy-extended-oblique']: {\r\n family: 'Helvetica Neue LT W05_83HvExObl',\r\n weight: 800,\r\n style: 'oblique',\r\n },\r\n ['87-heavy-condensed']: {\r\n family: 'Helvetica Neue LT W05_87 Hv Cn',\r\n weight: 800,\r\n style: 'normal',\r\n },\r\n ['87-heavy-condensed-oblique']: {\r\n family: 'Helvetica Neue LT W05_87HvCnObl',\r\n weight: 800,\r\n style: 'oblique',\r\n },\r\n ['93-black-extended']: {\r\n family: 'Helvetica Neue LT W05_93 Blk E',\r\n weight: 900,\r\n style: 'normal',\r\n },\r\n ['93-black-extended-oblique']: {\r\n family: 'Helvetica Neue LT W0593BlkExObl',\r\n weight: 900,\r\n style: 'oblique',\r\n },\r\n ['97-black-condensed']: {\r\n family: 'Helvetica Neue LT W05_97 Blk C',\r\n weight: 900,\r\n style: 'normal',\r\n },\r\n ['97-black-condensed-oblique']: {\r\n family: 'Helvetica Neue LT W0597BlkCnObl',\r\n weight: 900,\r\n style: 'oblique',\r\n },\r\n};\r\n\r\nexport const arimoConfig = {\r\n family: 'Arimo',\r\n};\r\n\r\nfunction font(family: string, weight?: number, style?: string): FlattenInterpolation> {\r\n return css`\r\n body.RURU & {\r\n ${weight && weight >= 800\r\n ? css`\r\n font-family: ${() => arimoConfig.family} !important;\r\n `\r\n : css`\r\n font-family: ${() => arimoConfig.family}, ${family} !important;\r\n `}\r\n }\r\n\r\n font-family: ${family} !important;\r\n font-weight: normal !important;\r\n font-style: ${style} !important;\r\n `;\r\n}\r\n\r\nexport default {\r\n helvetica: {\r\n ['45-light']: font(\r\n helveticaConfig['45-light'].family,\r\n helveticaConfig['45-light'].weight,\r\n helveticaConfig['45-light'].style,\r\n ),\r\n ['45-light-italic']: font(\r\n helveticaConfig['45-light-italic'].family,\r\n helveticaConfig['45-light-italic'].weight,\r\n helveticaConfig['45-light-italic'].style,\r\n ),\r\n ['53-extended']: font(\r\n helveticaConfig['53-extended'].family,\r\n helveticaConfig['53-extended'].weight,\r\n helveticaConfig['53-extended'].style,\r\n ),\r\n ['53-extended-oblique']: font(\r\n helveticaConfig['53-extended-oblique'].family,\r\n helveticaConfig['53-extended-oblique'].weight,\r\n helveticaConfig['53-extended-oblique'].style,\r\n ),\r\n ['55-roman']: font(\r\n helveticaConfig['55-roman'].family,\r\n helveticaConfig['55-roman'].weight,\r\n helveticaConfig['55-roman'].style,\r\n ),\r\n ['63-medium-extended']: font(\r\n helveticaConfig['63-medium-extended'].family,\r\n helveticaConfig['63-medium-extended'].weight,\r\n helveticaConfig['63-medium-extended'].style,\r\n ),\r\n ['63-medium-extended-oblique']: font(\r\n helveticaConfig['63-medium-extended-oblique'].family,\r\n helveticaConfig['63-medium-extended-oblique'].weight,\r\n helveticaConfig['63-medium-extended-oblique'].style,\r\n ),\r\n ['67-medium-condensed']: font(\r\n helveticaConfig['67-medium-condensed'].family,\r\n helveticaConfig['67-medium-condensed'].weight,\r\n helveticaConfig['67-medium-condensed'].style,\r\n ),\r\n ['73-bold-extended']: font(\r\n helveticaConfig['73-bold-extended'].family,\r\n helveticaConfig['73-bold-extended'].weight,\r\n helveticaConfig['73-bold-extended'].style,\r\n ),\r\n ['73-bold-extended-oblique']: font(\r\n helveticaConfig['73-bold-extended-oblique'].family,\r\n helveticaConfig['73-bold-extended-oblique'].weight,\r\n helveticaConfig['73-bold-extended-oblique'].style,\r\n ),\r\n ['77-bold-condensed']: font(\r\n helveticaConfig['77-bold-condensed'].family,\r\n helveticaConfig['77-bold-condensed'].weight,\r\n helveticaConfig['77-bold-condensed'].style,\r\n ),\r\n ['83-heavy-extended']: font(\r\n helveticaConfig['83-heavy-extended'].family,\r\n helveticaConfig['83-heavy-extended'].weight,\r\n helveticaConfig['83-heavy-extended'].style,\r\n ),\r\n ['83-heavy-extended-oblique']: font(\r\n helveticaConfig['83-heavy-extended-oblique'].family,\r\n helveticaConfig['83-heavy-extended-oblique'].weight,\r\n helveticaConfig['83-heavy-extended-oblique'].style,\r\n ),\r\n ['87-heavy-condensed']: font(\r\n helveticaConfig['87-heavy-condensed'].family,\r\n helveticaConfig['87-heavy-condensed'].weight,\r\n helveticaConfig['87-heavy-condensed'].style,\r\n ),\r\n ['87-heavy-condensed-oblique']: font(\r\n helveticaConfig['87-heavy-condensed-oblique'].family,\r\n helveticaConfig['87-heavy-condensed-oblique'].weight,\r\n helveticaConfig['87-heavy-condensed-oblique'].style,\r\n ),\r\n ['93-black-extended']: font(\r\n helveticaConfig['93-black-extended'].family,\r\n helveticaConfig['93-black-extended'].weight,\r\n helveticaConfig['93-black-extended'].style,\r\n ),\r\n ['93-black-extended-oblique']: font(\r\n helveticaConfig['93-black-extended-oblique'].family,\r\n helveticaConfig['93-black-extended-oblique'].weight,\r\n helveticaConfig['93-black-extended-oblique'].style,\r\n ),\r\n ['97-black-condensed']: font(\r\n helveticaConfig['97-black-condensed'].family,\r\n helveticaConfig['97-black-condensed'].weight,\r\n helveticaConfig['97-black-condensed'].style,\r\n ),\r\n ['97-black-condensed-oblique']: font(\r\n helveticaConfig['97-black-condensed-oblique'].family,\r\n helveticaConfig['97-black-condensed-oblique'].weight,\r\n helveticaConfig['97-black-condensed-oblique'].style,\r\n ),\r\n },\r\n ls: (value: number): string => {\r\n return `calc(${value / 1000} * 1em)`;\r\n },\r\n arimo: (): FlattenInterpolation> => {\r\n return font(arimoConfig.family);\r\n },\r\n};\r\n","import { Device } from './media';\r\n\r\n/**\r\n * Base pixel value for the \"rem\" unit.\r\n */\r\nexport const PIXELS_PER_REM = 16;\r\n\r\n/**\r\n * Default pixel value for the min width.\r\n */\r\nexport const DEFAULT_MIN_VALUE = Device.Mobile;\r\n\r\n/**\r\n * Default pixel value for the max width.\r\n */\r\nexport const DEFAULT_MAX_VALUE = Device.ActualDesktop;\r\n\r\n/**\r\n * Define a fluid value between the min/max values at the min/max widths.\r\n */\r\nexport function fluid(\r\n min: number,\r\n max: number,\r\n minWidth: number = DEFAULT_MIN_VALUE,\r\n maxWidth: number = DEFAULT_MAX_VALUE,\r\n): string {\r\n const minRem = min / PIXELS_PER_REM;\r\n const maxRem = max / PIXELS_PER_REM;\r\n const minWidthRem = minWidth / PIXELS_PER_REM;\r\n const maxWidthRem = maxWidth / PIXELS_PER_REM;\r\n\r\n const slope = (maxRem - minRem) / (maxWidthRem - minWidthRem);\r\n const yAxisIntersection = -minWidthRem * slope + minRem;\r\n\r\n const clampMin = `${round(minRem)}rem`;\r\n const clampVal = `${round(yAxisIntersection)}rem + ${round(slope * 100)}vw`;\r\n const clampMax = `${round(maxRem)}rem`;\r\n\r\n return `clamp(${clampMin}, ${clampVal}, ${clampMax})`;\r\n}\r\n\r\n/**\r\n * Define a fluid value between the min/max values at the min/max widths.\r\n */\r\nexport function fluidUnit(\r\n min: number,\r\n max: number,\r\n minWidth: number = DEFAULT_MIN_VALUE,\r\n maxWidth: number = DEFAULT_MAX_VALUE,\r\n unit: string,\r\n): string {\r\n const slope = (max - min) / (maxWidth - minWidth);\r\n const yAxisIntersection = -minWidth * slope + min;\r\n\r\n const clampMin = `${round(min)}`;\r\n const clampVal = `${round(yAxisIntersection)}${unit} + ${round(slope * 100)}vw`;\r\n const clampMax = `${round(max)}`;\r\n\r\n return `clamp(${clampMin}${unit}, ${clampVal}, ${clampMax}${unit})`;\r\n}\r\n\r\n/**\r\n * Round to nearest hundredth.\r\n */\r\nfunction round(num: number): number {\r\n return Math.round(num * 100) / 100;\r\n}\r\n","import { from, Device } from '@helpers/media';\r\nimport { m } from 'framer-motion';\r\nimport { verticalFadeIn } from '@helpers/variants';\r\nimport brand from '@helpers/brand';\r\nimport styled, { css } from 'styled-components';\r\nimport fonts from '@helpers/fonts';\r\nimport { fluid } from '@helpers/fluid';\r\n\r\nconst Container = styled.section`\r\n background-color: ${brand.grey[15]};\r\n position: relative;\r\n z-index: 1;\r\n display: grid;\r\n grid-template-areas: 'content' 'navigation';\r\n height: 100%;\r\n\r\n --navHeight: 50px;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-template-areas: 'navigation' 'content';\r\n grid-template-rows: var(--navHeight) 1fr;\r\n min-height: 100dvh;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n --navHeight: 60px;\r\n }\r\n`;\r\n\r\nconst NavigationWrapper = styled.div`\r\n height: var(--navHeight);\r\n grid-area: navigation;\r\n\r\n position: sticky;\r\n bottom: 0;\r\n left: 0;\r\n z-index: 2;\r\n background-color: black;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n bottom: unset;\r\n top: 0;\r\n }\r\n`;\r\n\r\nconst ContentWrapper = styled.div`\r\n grid-area: content;\r\n`;\r\n\r\nconst AnimatedContent = styled(m.div).attrs({\r\n initial: 'hidden',\r\n animate: 'visible',\r\n exit: 'hidden',\r\n variants: verticalFadeIn(0),\r\n})<{ 'data-mobile-width'?: number }>`\r\n height: 100%;\r\n\r\n @media (max-width: ${props =>\r\n css`\r\n ${props['data-mobile-width']}px\r\n `}) {\r\n height: max-content;\r\n max-height: 100%;\r\n }\r\n width: 100%;\r\n`;\r\n\r\nconst FullDrawerPopupDrawerListing = styled.ul`\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst FullDrawerPopupDrawerItem = styled.li`\r\n list-style: none;\r\n border-bottom: 1px solid ${brand.grey[90]};\r\n padding: 10px 0;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n gap: 12px;\r\n\r\n &:last-child {\r\n border-bottom: none;\r\n }\r\n`;\r\n\r\nconst FullDrawerPopupDrawerName = styled.strong`\r\n ${fonts.helvetica['93-black-extended']};\r\n color: ${brand.nearlyBlack};\r\n font-size: ${fluid(14, 18)};\r\n line-height: 1em;\r\n text-transform: uppercase;\r\n`;\r\n\r\nconst SteelStorageConfiguratorStyles = {\r\n Container,\r\n NavigationWrapper,\r\n ContentWrapper,\r\n AnimatedContent,\r\n FullDrawerPopupDrawerListing,\r\n FullDrawerPopupDrawerItem,\r\n FullDrawerPopupDrawerName,\r\n};\r\n\r\nexport default SteelStorageConfiguratorStyles;\r\n","import { BaseClient } from \"./BaseClient\";\nclass SteelStorageServer extends BaseClient {\n constructor() {\n super();\n Object.defineProperty(this, \"settings\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.setRoot(window.parent);\n }\n}\nexport default SteelStorageServer;\n","export class BaseClient {\n constructor() {\n Object.defineProperty(this, \"clientId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"root\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"callbacks\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"setRoot\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (root) => {\n if (!root) {\n return;\n }\n this.root = root;\n }\n });\n Object.defineProperty(this, \"setupListen\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n window.addEventListener(\"message\", (e) => {\n if (this.clientId !== undefined && this.clientId !== e.data.clientId) {\n return;\n }\n this.call(e.data.type, e.data.message);\n });\n }\n });\n Object.defineProperty(this, \"call\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (event, data) => {\n for (const mapping of this.callbacks) {\n if (mapping.event === event || mapping.event === \"*\") {\n mapping.callback(data);\n }\n }\n }\n });\n Object.defineProperty(this, \"emit\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (event, value) => {\n this.root.postMessage({ type: event, message: value, clientId: this.clientId }, \"*\");\n }\n });\n Object.defineProperty(this, \"on\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (event, callback) => {\n this.callbacks.push({ event, callback });\n }\n });\n this.setupListen();\n }\n}\n","import { SteelStorageSettings } from '@steelstorage/api/src/SteelStorageClient';\r\nimport SteelStorageServer from '@steelstorage/api/src/SteelStorageServer';\r\nimport React, { createContext } from 'react';\r\nimport { useLocation } from 'react-use';\r\n\r\ninterface SteelStorageServerContextProps {\r\n steelStorageServer: SteelStorageServer | null;\r\n isReady: boolean;\r\n}\r\n\r\nconst initialState: SteelStorageServerContextProps = {\r\n steelStorageServer: null,\r\n isReady: false,\r\n};\r\n\r\nconst SteelStorageServerContext = createContext(initialState);\r\n\r\nexport const SteelStorageServerProvider: React.FunctionComponent = ({ children }) => {\r\n const location = useLocation();\r\n const [steelStorageServer, setSteelStorageServer] = React.useState(initialState.steelStorageServer);\r\n const [isReady, setIsReady] = React.useState(initialState.isReady);\r\n\r\n React.useEffect(() => {\r\n if (location.search) {\r\n if (steelStorageServer === null && location.search.indexOf('clientid') > -1) {\r\n const clientId = location.search.split('clientid=')[1];\r\n const server = new SteelStorageServer();\r\n server.clientId = clientId;\r\n setSteelStorageServer(server);\r\n }\r\n }\r\n }, [location.search, steelStorageServer]);\r\n\r\n React.useEffect(() => {\r\n if (steelStorageServer === null) {\r\n return;\r\n }\r\n\r\n steelStorageServer.emit('server-loaded');\r\n\r\n steelStorageServer.on('settings', (settings: SteelStorageSettings) => {\r\n steelStorageServer.settings = settings;\r\n setSteelStorageServer(steelStorageServer);\r\n setIsReady(true);\r\n });\r\n\r\n steelStorageServer.on('loaded', () => {\r\n setIsReady(true);\r\n });\r\n }, [steelStorageServer]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\n// eslint-disable-next-line\r\nconst useSteelStorageServer = () => React.useContext(SteelStorageServerContext);\r\n\r\nexport default useSteelStorageServer;\r\n","import { css, FlattenSimpleInterpolation, keyframes } from 'styled-components';\r\n\r\nexport default {\r\n easeInOutCubic: 'cubic-bezier(0.645, 0.045, 0.355, 1)',\r\n};\r\n\r\nconst reset = keyframes`\r\n 100% {\r\n transform: translate(0%, 0%);\r\n opacity: 1;\r\n }\r\n`;\r\n\r\nexport function fadeInLeft(amount: number, duration: number, delay: number, easingFunc: string): FlattenSimpleInterpolation {\r\n return css`\r\n opacity: 0;\r\n transform: translateX(-${amount}px);\r\n animation: ${reset} ${duration}ms ${delay}ms ${easingFunc} forwards;\r\n `;\r\n}\r\n\r\nexport function fadeIn(inView: boolean, duration: number, delay: number, easingFunc: string): FlattenSimpleInterpolation {\r\n return css`\r\n transition: opacity ${duration}ms ${delay}ms ${easingFunc};\r\n\r\n ${inView\r\n ? css`\r\n opacity: 1;\r\n `\r\n : css`\r\n opacity: 0;\r\n `}\r\n `;\r\n}\r\n\r\nexport function fadeInUp(inView: boolean, amount: number, duration: number, delay: number, easingFunc: string): FlattenSimpleInterpolation {\r\n return css`\r\n transition: transform ${duration}ms ${delay}ms ${easingFunc}, opacity ${duration}ms ${delay}ms ${easingFunc};\r\n\r\n ${inView\r\n ? css`\r\n opacity: 1;\r\n transform: translateY(0px);\r\n `\r\n : css`\r\n opacity: 0;\r\n transform: translateY(${amount}px);\r\n `}\r\n `;\r\n}\r\n\r\nexport function scaleFadeIn(inView: boolean, amount: number, duration: number, delay: number, easingFunc: string): FlattenSimpleInterpolation {\r\n return css`\r\n transition: transform ${duration}ms ${delay}ms ${easingFunc}, opacity ${duration}ms ${delay}ms ${easingFunc};\r\n\r\n ${inView\r\n ? css`\r\n opacity: 1;\r\n transform: scale(1);\r\n `\r\n : css`\r\n opacity: 0;\r\n transform: scale(${amount});\r\n `}\r\n `;\r\n}\r\n\r\nexport function fadeInDown(inView: boolean, amount: number, duration: number, delay: number, easingFunc: string): FlattenSimpleInterpolation {\r\n return css`\r\n transition: transform ${duration}ms ${delay}ms ${easingFunc}, opacity ${duration}ms ${delay}ms ${easingFunc};\r\n\r\n ${inView\r\n ? css`\r\n opacity: 1;\r\n transform: translateY(0px);\r\n `\r\n : css`\r\n opacity: 0;\r\n transform: translateY(-${amount}px);\r\n `}\r\n `;\r\n}\r\n\r\nexport function slideInUp(inView: boolean, duration: number, delay: number, easingFunc: string): FlattenSimpleInterpolation {\r\n return css`\r\n overflow: hidden;\r\n\r\n span {\r\n display: inline-block;\r\n transition: transform ${duration}ms ${delay}ms ${easingFunc}, opacity ${duration}ms ${delay}ms ${easingFunc};\r\n }\r\n\r\n ${inView\r\n ? css`\r\n span {\r\n opacity: 1;\r\n transform: translateY(0px);\r\n }\r\n `\r\n : css`\r\n span {\r\n opacity: 0;\r\n transform: translateY(100%);\r\n }\r\n `}\r\n `;\r\n}\r\n\r\nexport function greyscaleImgFade(\r\n inView: boolean,\r\n duration: number,\r\n delay: number,\r\n filterDelay: number,\r\n easingFunc: string,\r\n): FlattenSimpleInterpolation {\r\n return css`\r\n transition: opacity ${duration}ms ${delay}ms ${easingFunc}, filter ${duration}ms ${filterDelay}ms ${easingFunc};\r\n\r\n ${inView\r\n ? css`\r\n opacity: 1;\r\n filter: grayscale(0);\r\n `\r\n : css`\r\n opacity: 0;\r\n filter: grayscale(1);\r\n `}\r\n `;\r\n}\r\n\r\nconst shimmerKeyframes = keyframes`\r\n 0% {\r\n background-position: -1000px 0;\r\n }\r\n 100% {\r\n background-position: 1000px 0;\r\n }\r\n`;\r\n\r\nexport const shimmer = css`\r\n animation: ${shimmerKeyframes} 2s infinite linear;\r\n background: linear-gradient(to right, #eff1f3 4%, #e2e2e2 25%, #eff1f3 36%);\r\n background-size: 1000px 100%;\r\n`;\r\n\r\nconst fadeInAnimationKeyframes = keyframes`\r\n0% {\r\n opacity: 0;\r\n}\r\n100% {\r\n opacity: 1;\r\n}\r\n`;\r\n\r\nconst shakeKeyframes = keyframes`\r\n 10%, 90% {\r\n transform: translateX(-1px);\r\n }\r\n \r\n 20%, 80% {\r\n transform: translateX(2px);\r\n }\r\n\r\n 30%, 50%, 70% {\r\n transform: translateX(-4px);\r\n }\r\n\r\n 40%, 60% {\r\n transform: translateX(4px);\r\n }\r\n`;\r\n\r\nexport const shake = css`\r\n animation: ${shakeKeyframes} 0.82s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;\r\n`;\r\n\r\nexport function fadeInKeyframes(duration: number, delay: number, easingFunc: string): FlattenSimpleInterpolation {\r\n return css`\r\n opacity: 0;\r\n animation: ${fadeInAnimationKeyframes} ${duration}ms ${delay}ms ${easingFunc} forwards;\r\n `;\r\n}\r\n\r\nexport function loadingEllipsis(delay?: number): FlattenSimpleInterpolation {\r\n return css`\r\n @keyframes ellipsis {\r\n to {\r\n width: 1.5em;\r\n }\r\n }\r\n\r\n &[data-loading='true'],\r\n [data-loading='true'] & {\r\n &::after {\r\n content: '...';\r\n overflow: hidden;\r\n display: inline-block;\r\n vertical-align: bottom;\r\n animation: ellipsis steps(4, end) 1s infinite ${delay ?? 0}s;\r\n width: 0px;\r\n }\r\n }\r\n `;\r\n}\r\n","import brand from '@helpers/brand';\r\nimport { css, FlattenSimpleInterpolation, SimpleInterpolation } from 'styled-components';\r\n\r\nexport default {\r\n navHeight: 76,\r\n navHeightSmall: 68,\r\n contentPadding: 24,\r\n rootMarginValues: '0px 0px -20% 0px',\r\n};\r\n\r\nexport function customScrollbar(scrollbarBG = brand.grey[90], thumbBG = brand.grey[55]): FlattenSimpleInterpolation {\r\n return css`\r\n scrollbar-width: thin;\r\n scrollbar-color: ${thumbBG} ${scrollbarBG};\r\n\r\n &::-webkit-scrollbar {\r\n width: 11px;\r\n }\r\n &::-webkit-scrollbar-track {\r\n background: ${scrollbarBG};\r\n }\r\n\r\n &::-webkit-scrollbar-thumb {\r\n background-color: ${thumbBG};\r\n border-radius: 6px;\r\n border: 3px solid ${scrollbarBG};\r\n }\r\n `;\r\n}\r\n\r\nexport const legacyStylesOverride = (styled: SimpleInterpolation): SimpleInterpolation => css`\r\n .CSCZ .mainContent &,\r\n .HUHU .mainContent &,\r\n .PLPL .mainContent &,\r\n .RURU .mainContent &,\r\n .SKSK .mainContent &,\r\n .RORO .mainContent &,\r\n .mainContent & {\r\n ${styled}\r\n }\r\n`;\r\n\r\nexport const dsStylesOverride = (styled: SimpleInterpolation): SimpleInterpolation => css`\r\n .ds & {\r\n ${styled}\r\n }\r\n`;\r\n\r\nexport const ButtonReset = css`\r\n border: none;\r\n outline: none;\r\n padding: 0px;\r\n background: none;\r\n border-radius: 0px;\r\n`;\r\n","import animation, { shimmer } from '@helpers/animation';\r\nimport brand from '@helpers/brand';\r\nimport fonts from '@helpers/fonts';\r\nimport { dsStylesOverride } from '@helpers/global';\r\nimport { Device, from } from '@helpers/media';\r\nimport styled, { css, keyframes } from 'styled-components';\r\nimport { ButtonIconT, IconVisibilityT } from './Button';\r\n\r\nconst LocationIcon = keyframes`\r\n 0% { \r\n transform: scale(1);\r\n }\t\r\n 50% {\r\n transform: scale(1.4);\r\n }\r\n 100% { \r\n transform: scale(1);\r\n }\t\r\n`;\r\n\r\nexport const ButtonIcon = styled.i`\r\n position: absolute;\r\n top: 50%;\r\n right: 14px;\r\n width: 14px;\r\n height: 14px;\r\n opacity: 0;\r\n transform: translateY(-50%) translateX(-14px);\r\n transition: transform 0.3s ${animation.easeInOutCubic}, opacity 0.3s ${animation.easeInOutCubic};\r\n z-index: 2;\r\n\r\n svg {\r\n display: block;\r\n width: 100%;\r\n height: 100%;\r\n }\r\n`;\r\n\r\ninterface baseButtonStylesProps {\r\n alignCentre?: boolean;\r\n theme: 'red' | 'red-white' | 'white' | 'black' | 'black-grey' | 'grey' | 'dark-grey' | 'green' | 'black-outline' | 'white-red' | 'white-outline';\r\n size: 'small' | 'normal';\r\n textTheme: 'black' | undefined;\r\n underline: boolean;\r\n iconPadding: boolean;\r\n icon: ButtonIconT;\r\n iconPlacement: 'before' | 'after';\r\n iconVisibility: IconVisibilityT;\r\n maintainWidth?: boolean;\r\n flat?: boolean;\r\n}\r\n\r\nconst baseButtonStyles = css`\r\n outline: none;\r\n border: none;\r\n line-height: 1.2;\r\n ${fonts.helvetica['83-heavy-extended']};\r\n letter-spacing: ${fonts.ls(15)};\r\n text-transform: uppercase !important;\r\n padding: 14px;\r\n display: inline-block;\r\n border-radius: 3px;\r\n text-decoration: ${({ underline }) => (underline ? 'underline' : '')};\r\n min-width: 90px;\r\n width: auto;\r\n text-align: center;\r\n height: auto;\r\n transition: background 375ms ${animation.easeInOutCubic};\r\n position: relative;\r\n user-select: none;\r\n cursor: pointer;\r\n\r\n &[disabled] {\r\n opacity: 0.5;\r\n }\r\n\r\n ${({ iconVisibility, size, maintainWidth }) => {\r\n switch (iconVisibility) {\r\n case 'always':\r\n return css`\r\n ${() => {\r\n switch (size) {\r\n case 'normal': {\r\n return css`\r\n padding: 14px 40px 14px 14px;\r\n `;\r\n }\r\n\r\n case 'small': {\r\n return css`\r\n padding: 10px 28px 10px 10px;\r\n `;\r\n }\r\n }\r\n }}\r\n\r\n ${ButtonIcon} {\r\n opacity: 1;\r\n transform: translateY(-50%) translateX(0px);\r\n }\r\n `;\r\n\r\n case 'onHover':\r\n return css`\r\n ${ButtonIcon} {\r\n transition: none;\r\n }\r\n\r\n &:hover {\r\n padding-right: 40px;\r\n\r\n ${ButtonIcon} {\r\n position: absolute;\r\n opacity: 1;\r\n transform: translateY(-50%) translateX(0px);\r\n }\r\n }\r\n\r\n ${maintainWidth &&\r\n css`\r\n min-width: unset;\r\n\r\n &:not(:hover) {\r\n margin-right: 26px;\r\n }\r\n `}\r\n `;\r\n\r\n case 'never':\r\n default:\r\n return;\r\n }\r\n }}\r\n\r\n ${({ size }) => {\r\n switch (size) {\r\n default:\r\n case 'small':\r\n return css`\r\n font-size: 12px;\r\n `;\r\n\r\n case 'normal':\r\n return css`\r\n font-size: 14px;\r\n\r\n @media ${from(Device.MobileLarge)} {\r\n font-size: 16px;\r\n }\r\n `;\r\n }\r\n }}\r\n\r\n ${({ icon, iconPlacement }) => {\r\n switch (icon) {\r\n case 'arrow':\r\n return css`\r\n ${ButtonIcon} {\r\n transform: translateY(-50%) translateX(-14px) rotate(90deg);\r\n }\r\n\r\n &:hover {\r\n ${ButtonIcon} {\r\n transform: translateY(-50%) translateX(0px) rotate(90deg);\r\n }\r\n }\r\n `;\r\n\r\n case 'arrow-right':\r\n return css`\r\n padding-right: 35px;\r\n `;\r\n\r\n case 'location':\r\n return css`\r\n display: flex;\r\n align-items: center;\r\n\r\n &:hover {\r\n svg {\r\n animation: ${LocationIcon} 2s linear infinite;\r\n animation-play-state: running;\r\n }\r\n }\r\n\r\n svg {\r\n ${iconPlacement === 'after' ? 'margin-left: 8px' : 'margin-right: 8px'};\r\n }\r\n `;\r\n\r\n case 'download':\r\n return css`\r\n display: flex;\r\n align-items: center;\r\n\r\n svg {\r\n transform: translateY(1px);\r\n }\r\n\r\n ${iconPlacement === 'after'\r\n ? css`\r\n svg {\r\n margin-left: 8px;\r\n }\r\n\r\n ${ButtonIcon} {\r\n right: 20px;\r\n left: unset;\r\n }\r\n `\r\n : css`\r\n margin-right: 8px;\r\n `};\r\n `;\r\n }\r\n }}\r\n\r\n ${({ theme, textTheme }) => {\r\n switch (theme) {\r\n case 'red': {\r\n return css`\r\n background-color: ${brand.red.base};\r\n\r\n &:not([disabled]):hover {\r\n background-color: ${brand.red.dark};\r\n }\r\n\r\n ${() => {\r\n switch (textTheme) {\r\n case 'black': {\r\n return css`\r\n color: ${brand.black};\r\n\r\n ${ButtonIcon} svg {\r\n fill: ${brand.black};\r\n }\r\n `;\r\n }\r\n default:\r\n return css`\r\n color: ${brand.white};\r\n\r\n ${dsStylesOverride(` color: ${brand.white};`)};\r\n\r\n ${ButtonIcon} svg {\r\n fill: ${brand.white};\r\n }\r\n `;\r\n }\r\n }}\r\n `;\r\n }\r\n\r\n case 'red-white': {\r\n return css`\r\n background-color: ${brand.red.base};\r\n border: 1px solid;\r\n\r\n &:not([disabled]):hover {\r\n background-color: ${brand.white};\r\n }\r\n\r\n ${() => {\r\n switch (textTheme) {\r\n case 'black': {\r\n return css`\r\n color: ${brand.black};\r\n\r\n ${ButtonIcon} svg {\r\n fill: ${brand.black};\r\n }\r\n `;\r\n }\r\n default:\r\n return css`\r\n color: ${brand.white};\r\n\r\n ${ButtonIcon} svg {\r\n fill: ${brand.red.base};\r\n }\r\n\r\n &:hover {\r\n color: ${brand.red.base};\r\n }\r\n `;\r\n }\r\n }}\r\n `;\r\n }\r\n\r\n case 'black-outline': {\r\n return css`\r\n outline: 1px solid ${brand.black};\r\n background-color: transparent;\r\n\r\n &:not([disabled]):hover {\r\n background-color: transparent;\r\n }\r\n\r\n ${() => {\r\n switch (textTheme) {\r\n case 'black': {\r\n return css`\r\n color: ${brand.black};\r\n\r\n ${ButtonIcon} svg {\r\n fill: ${brand.black};\r\n }\r\n `;\r\n }\r\n default:\r\n return css`\r\n color: ${brand.black};\r\n\r\n ${dsStylesOverride(` color: ${brand.black};`)};\r\n\r\n ${ButtonIcon} svg {\r\n fill: ${brand.black};\r\n }\r\n `;\r\n }\r\n }}\r\n `;\r\n }\r\n\r\n case 'white': {\r\n return css`\r\n background-color: ${brand.white};\r\n\r\n &:not([disabled]):hover {\r\n background-color: ${brand.grey[90]};\r\n }\r\n\r\n ${() => {\r\n switch (textTheme) {\r\n case 'black': {\r\n return css`\r\n color: ${brand.black};\r\n\r\n ${ButtonIcon} svg {\r\n fill: ${brand.black};\r\n }\r\n `;\r\n }\r\n default:\r\n return css`\r\n color: ${brand.red.base};\r\n\r\n ${ButtonIcon} svg {\r\n fill: ${brand.red.base};\r\n }\r\n `;\r\n }\r\n }}\r\n `;\r\n }\r\n\r\n case 'black': {\r\n return css`\r\n background-color: ${brand.black};\r\n\r\n &:not([disabled]):hover {\r\n background-color: ${brand.grey[20]};\r\n color: ${brand.white};\r\n }\r\n\r\n ${() => {\r\n switch (textTheme) {\r\n case 'black': {\r\n return css`\r\n color: ${brand.black};\r\n\r\n ${ButtonIcon} svg {\r\n fill: ${brand.black};\r\n }\r\n `;\r\n }\r\n default:\r\n return css`\r\n color: ${brand.white};\r\n\r\n ${ButtonIcon} svg {\r\n fill: ${brand.white};\r\n }\r\n `;\r\n }\r\n }}\r\n `;\r\n }\r\n\r\n case 'shimmer': {\r\n return css`\r\n ${shimmer};\r\n color: ${brand.grey[70]};\r\n `;\r\n }\r\n\r\n case 'black-grey': {\r\n return css`\r\n background-color: ${brand.black};\r\n\r\n &:not([disabled]):hover {\r\n background-color: ${brand.grey[20]};\r\n }\r\n\r\n ${() => {\r\n switch (textTheme) {\r\n case 'black': {\r\n return css`\r\n color: ${brand.white};\r\n\r\n ${ButtonIcon} svg {\r\n fill: ${brand.white};\r\n }\r\n `;\r\n }\r\n default:\r\n return css`\r\n color: ${brand.white};\r\n\r\n ${ButtonIcon} svg {\r\n fill: ${brand.white};\r\n }\r\n `;\r\n }\r\n }}\r\n `;\r\n }\r\n\r\n case 'grey': {\r\n return css`\r\n background-color: ${brand.grey[45]};\r\n\r\n &:not([disabled]):hover {\r\n background-color: ${brand.grey[40]};\r\n }\r\n\r\n ${() => {\r\n switch (textTheme) {\r\n case 'black': {\r\n return css`\r\n color: ${brand.black};\r\n\r\n ${ButtonIcon} svg {\r\n fill: ${brand.black};\r\n }\r\n `;\r\n }\r\n default:\r\n return css`\r\n color: ${brand.white};\r\n\r\n ${ButtonIcon} svg {\r\n fill: ${brand.white};\r\n }\r\n `;\r\n }\r\n }}\r\n `;\r\n }\r\n\r\n case 'dark-grey': {\r\n return css`\r\n background-color: ${brand.grey[20]};\r\n\r\n &:not([disabled]):hover {\r\n background-color: ${brand.grey[15]};\r\n }\r\n\r\n ${() => {\r\n switch (textTheme) {\r\n case 'black': {\r\n return css`\r\n color: ${brand.black};\r\n\r\n ${ButtonIcon} svg {\r\n fill: ${brand.black};\r\n }\r\n `;\r\n }\r\n default:\r\n return css`\r\n color: ${brand.white};\r\n\r\n ${ButtonIcon} svg {\r\n fill: ${brand.white};\r\n }\r\n `;\r\n }\r\n }}\r\n `;\r\n }\r\n\r\n case 'green': {\r\n return css`\r\n background-color: ${brand.green.base};\r\n\r\n &:not([disabled]):hover {\r\n background-color: ${brand.green.dark};\r\n }\r\n\r\n ${() => {\r\n switch (textTheme) {\r\n case 'black': {\r\n return css`\r\n color: ${brand.black};\r\n\r\n ${ButtonIcon} svg {\r\n fill: ${brand.black};\r\n }\r\n `;\r\n }\r\n default:\r\n return css`\r\n color: ${brand.white};\r\n\r\n ${ButtonIcon} svg {\r\n fill: ${brand.white};\r\n }\r\n `;\r\n }\r\n }}\r\n `;\r\n }\r\n\r\n case 'white-red': {\r\n return css`\r\n background-color: ${brand.white};\r\n border: 1px solid ${brand.red.base};\r\n\r\n &:not([disabled]):hover {\r\n background-color: ${brand.red.base};\r\n border: 1px solid ${brand.red.base};\r\n color: ${brand.white};\r\n\r\n ${ButtonIcon} svg {\r\n fill: ${brand.white};\r\n }\r\n }\r\n\r\n ${() => {\r\n switch (textTheme) {\r\n case 'black': {\r\n return css`\r\n color: ${brand.black};\r\n\r\n ${ButtonIcon} svg {\r\n fill: ${brand.black};\r\n }\r\n `;\r\n }\r\n default:\r\n return css`\r\n color: ${brand.red.base};\r\n\r\n ${ButtonIcon} svg {\r\n fill: ${brand.red.base};\r\n }\r\n `;\r\n }\r\n }}\r\n `;\r\n }\r\n\r\n case 'transparent': {\r\n return css`\r\n background-color: none;\r\n border: 1px solid ${brand.white};\r\n color: ${brand.white};\r\n\r\n &:not([disabled]):hover {\r\n background-color: ${brand.white};\r\n color: ${brand.red.base};\r\n }\r\n `;\r\n }\r\n\r\n case 'white-outline': {\r\n return css`\r\n background-color: ${brand.black};\r\n border: 1px solid ${brand.white};\r\n color: ${brand.white};\r\n\r\n &:not([disabled]):hover {\r\n background-color: ${brand.white};\r\n color: ${brand.black};\r\n }\r\n `;\r\n }\r\n }\r\n }};\r\n \r\n ${({ flat }) =>\r\n flat &&\r\n css`\r\n background: 0;\r\n text-transform: none !important;\r\n ${fonts.helvetica['63-medium-extended']};\r\n\r\n &:hover {\r\n background: none !important;\r\n }\r\n `}\r\n`;\r\n\r\nconst LinkElement = styled.a`\r\n ${baseButtonStyles};\r\n\r\n pointer-events: ${props => (props.disabled ? 'none' : 'all')};\r\n`;\r\n\r\nconst ButtonElement = styled.button.attrs({ type: 'button' })`\r\n ${baseButtonStyles};\r\n justify-content: ${props => (props.alignCentre ? 'center' : 'flex-start')};\r\n display: inline-block;\r\n`;\r\n\r\nconst FittyTextWrapper = styled.div`\r\n height: 100%;\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: center;\r\n padding: 0.5em;\r\n align-content: center;\r\n gap: 0 0.5em;\r\n\r\n > div {\r\n display: block;\r\n text-align: center;\r\n }\r\n`;\r\n\r\nconst DownloadIconHolder = styled.div`\r\n transform: scale(0.8);\r\n`;\r\n\r\nconst Arrow = styled.div`\r\n transition: transform 0.5s ${animation.easeInOutCubic};\r\n`;\r\n\r\nexport const ButtonStyles = {\r\n ButtonElement,\r\n FittyTextWrapper,\r\n LinkElement,\r\n DownloadIconHolder,\r\n Arrow,\r\n};\r\n","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nconst SvgIconButtonArrow = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 13.11 14.104\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"e0ff\",\n d: \"M14.1,6.058,7.052,13.11,0,6.058H3.155V0h7.422V6.058Z\",\n transform: \"translate(0 14.104) rotate(-90)\"\n })));\n};\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgIconButtonArrow, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/icon-button-arrow.499f0d87.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nconst SvgArrowRight = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20.24 33.734\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"icon-slider-arrow-right\",\n d: \"M0,3.373,3.373,0,20.24,16.867,3.373,33.734,0,30.36,13.388,16.867Z\",\n fill: \"currentColor\"\n })));\n};\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgArrowRight, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/arrow-right.89425c5c.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nconst SvgIconDownload = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 19\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 16.36H15.235V18.56H0V16.36ZM15.235 6.544L7.618 14.162L0 6.544H4.346V0H10.89V6.544H15.235Z\"\n })));\n};\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgIconDownload, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/icon-download.f616ebd0.svg\";\nexport { ForwardRef as ReactComponent };","var _defs, _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nconst SvgLocation = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 10.285,\n height: 14.543,\n viewBox: \"0 0 10.285 14.543\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \".a{fill:#fff;}\"))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n className: \"a\",\n d: \"M6.7,5.142a1.591,1.591,0,0,0,.522,1.185,1.688,1.688,0,0,0,1.205.5,1.667,1.667,0,0,0,1.225-.5,1.621,1.621,0,0,0,.5-1.185,1.656,1.656,0,0,0-.522-1.205,1.652,1.652,0,0,0-2.41,0A1.656,1.656,0,0,0,6.7,5.142Zm6.87,0A8.816,8.816,0,0,1,12.28,9.22a22.107,22.107,0,0,1-2.571,3.837L8.424,14.543Q7.861,13.94,7,12.9a27.357,27.357,0,0,1-2.29-3.535A8.945,8.945,0,0,1,3.281,5.142,4.954,4.954,0,0,1,4.788,1.507,4.954,4.954,0,0,1,8.424,0a4.954,4.954,0,0,1,3.636,1.507A4.954,4.954,0,0,1,13.566,5.142Z\",\n transform: \"translate(-3.281)\"\n })));\n};\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgLocation, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/location.e3aeb45c.svg\";\nexport { ForwardRef as ReactComponent };","import whenWindowLoaded from '@netc/when-window-loaded';\r\nimport { useEffect, useState } from 'react';\r\n\r\nconst useWhenWindowLoaded = (): boolean => {\r\n const [loaded, setLoaded] = useState(false);\r\n\r\n useEffect(() => {\r\n whenWindowLoaded().then(() => setLoaded(true));\r\n }, []);\r\n\r\n return loaded;\r\n};\r\n\r\nexport default useWhenWindowLoaded;\r\n","import styled from 'styled-components';\r\n\r\nconst Container = styled.div`\r\n display: inline-block;\r\n white-space: nowrap;\r\n`;\r\n\r\nexport const FittyStyles = {\r\n Container,\r\n};\r\n","import useWhenWindowLoaded from '@hooks/useWhenWindowLoaded';\r\nimport fitty, { FittyInstance } from 'fitty';\r\nimport React, { FunctionComponent, useEffect, useRef } from 'react';\r\nimport { FittyStyles } from './FittyStyles';\r\n\r\ninterface FittyProps {\r\n min?: number;\r\n max?: number;\r\n html?: string;\r\n}\r\n\r\nconst Fitty: FunctionComponent = ({ children, min = 12, max = 60, html }) => {\r\n const elementRef = useRef(null);\r\n const fittyRef = useRef();\r\n const loaded = useWhenWindowLoaded();\r\n\r\n useEffect(() => {\r\n if (loaded === false) {\r\n return;\r\n }\r\n\r\n if (elementRef.current === null) {\r\n return;\r\n }\r\n\r\n fittyRef.current = fitty(elementRef.current, {\r\n minSize: min,\r\n maxSize: max,\r\n });\r\n }, [loaded]);\r\n\r\n if (html) {\r\n return ;\r\n }\r\n\r\n return {children};\r\n};\r\n\r\nexport default Fitty;\r\n","import React, { forwardRef } from 'react';\r\nimport { ButtonIcon, ButtonStyles } from './Button.styles';\r\nimport { ReactComponent as ButtonArrow } from '@img/icons/icon-button-arrow.svg';\r\nimport { ReactComponent as ButtonArrowRight } from '@img/icons/arrow-right.svg';\r\nimport { ReactComponent as ButtonDownloadIcon } from '@img/icons/icon-download.svg';\r\nimport { ReactComponent as Location } from '@img/icons/location.svg';\r\nimport Fitty from '@components/Fitty/Fitty';\r\n\r\nexport type ButtonIconT = 'none' | 'arrow' | 'download' | 'location' | 'minus' | 'plus' | 'arrow-right';\r\n\r\nexport interface ButtonProps {\r\n alignCentre?: boolean;\r\n text?: string;\r\n theme?: 'red' | 'red-white' | 'white' | 'black' | 'black-grey' | 'grey' | 'dark-grey' | 'shimmer' | 'green' | 'black-outline' | 'white-red';\r\n size?: 'small' | 'normal';\r\n icon?: ButtonIconT;\r\n iconPlacement?: 'before' | 'after';\r\n textTheme?: 'black';\r\n underline?: boolean;\r\n onClick?: (event: React.MouseEvent) => void;\r\n disabled?: boolean;\r\n progress?: boolean;\r\n fakeButton?: boolean;\r\n attributes?: Record;\r\n style?: React.CSSProperties;\r\n iconVisibility?: IconVisibilityT;\r\n maintainWidth?: boolean;\r\n flat?: boolean;\r\n}\r\n\r\nexport type IconVisibilityT = 'never' | 'onHover' | 'always';\r\n\r\nconst Button = forwardRef(\r\n (\r\n {\r\n alignCentre,\r\n text,\r\n onClick,\r\n textTheme,\r\n attributes,\r\n style,\r\n theme = 'red',\r\n size = 'normal',\r\n disabled = false,\r\n progress = false,\r\n fakeButton = false,\r\n underline = false,\r\n icon = 'none',\r\n iconPlacement = 'after',\r\n iconVisibility,\r\n maintainWidth = false,\r\n flat,\r\n },\r\n ref,\r\n ) => {\r\n function shouldRenderIcon(): IconVisibilityT {\r\n if (iconVisibility) {\r\n return iconVisibility;\r\n }\r\n if (icon === null || icon === undefined || icon === 'none') {\r\n return 'never';\r\n }\r\n if (icon === 'download') {\r\n return 'always';\r\n }\r\n\r\n return 'onHover';\r\n }\r\n\r\n const _iconVisibility: IconVisibilityT = shouldRenderIcon();\r\n\r\n const _onClick = (event: React.MouseEvent): void => {\r\n if (fakeButton) {\r\n return;\r\n }\r\n\r\n if (disabled || progress || !onClick) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n onClick(event);\r\n };\r\n\r\n return (\r\n \r\n {iconPlacement === 'before' && renderIcon(icon)}\r\n {text && (\r\n \r\n {text.split(' ').map((word, y) => (\r\n \r\n {word}\r\n \r\n ))}\r\n \r\n )}\r\n {iconPlacement === 'after' && renderIcon(icon)}\r\n \r\n );\r\n },\r\n);\r\n\r\nfunction renderIcon(icon: ButtonIconT): React.ReactNode {\r\n switch (icon) {\r\n case 'none': {\r\n return null;\r\n }\r\n\r\n case 'download': {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n case 'location': {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n case 'arrow-right': {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n default:\r\n case 'arrow': {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n}\r\n\r\nButton.displayName = 'Button';\r\n\r\nexport default Button;\r\n","import { Device, from } from '@helpers/media';\r\nimport styled, { css } from 'styled-components';\r\n\r\nconst defaultGap = css`\r\n grid-gap: 16px;\r\n\r\n @media ${from(Device.Tablet)} {\r\n grid-gap: 32px;\r\n }\r\n\r\n @media ${from(Device.Desktop)} {\r\n grid-gap: 28px;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n grid-gap: 30px;\r\n }\r\n`;\r\n\r\nconst base = css`\r\n display: grid;\r\n grid-template-columns: repeat(12, 1fr);\r\n max-width: 1920px;\r\n margin: auto;\r\n`;\r\n\r\nconst defaultInnerStyles = css`\r\n ${base};\r\n ${defaultGap};\r\n`;\r\n\r\nconst DefaultInner = styled.div`\r\n ${defaultInnerStyles};\r\n`;\r\n\r\nconst defaultPadding = css`\r\n padding: 0px 16px;\r\n\r\n @media ${from(Device.Tablet)} {\r\n padding: 0px 40px;\r\n }\r\n\r\n @media ${from(Device.Desktop)} {\r\n padding: 0px 32px;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n padding: 0px 165px;\r\n }\r\n`;\r\n\r\n// Not using the padding shorthand here to allow padding-top & bottom overrides without resorting to !important\r\nconst reducedPadding = css`\r\n --grid-padding: 16px;\r\n padding-left: var(--grid-padding);\r\n padding-right: var(--grid-padding);\r\n\r\n @media ${from(Device.Tablet)} {\r\n --grid-padding: 32px;\r\n }\r\n\r\n @media ${from(Device.Desktop)} {\r\n --grid-padding: 28px;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n --grid-padding: 30px;\r\n }\r\n`;\r\n\r\nconst DefaultStyles = css`\r\n ${base};\r\n ${defaultGap};\r\n ${defaultPadding};\r\n`;\r\n\r\nconst Default = styled.div`\r\n ${DefaultStyles};\r\n`;\r\n\r\nconst ReducedPaddingStyles = css`\r\n ${base};\r\n ${defaultGap};\r\n ${reducedPadding};\r\n`;\r\n\r\nconst ReducedPadding = styled.div`\r\n ${ReducedPaddingStyles};\r\n`;\r\n\r\nexport const Grid = {\r\n Default,\r\n DefaultStyles,\r\n\r\n DefaultInner,\r\n defaultInnerStyles,\r\n\r\n defaultGap,\r\n defaultPadding,\r\n\r\n reducedPadding,\r\n ReducedPadding,\r\n ReducedPaddingStyles,\r\n};\r\n\r\nconst Full = styled.div`\r\n grid-column: span 12;\r\n`;\r\n\r\nconst Half = styled.div`\r\n grid-column: span 6;\r\n`;\r\n\r\nconst HalfToFull = styled.div`\r\n grid-column: span 12;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-column: span 6;\r\n }\r\n`;\r\n\r\nconst Third = styled.div`\r\n grid-column: span 4;\r\n`;\r\n\r\nconst Quarter = styled.div`\r\n grid-column: span 3;\r\n`;\r\n\r\nconst Container = styled.div`\r\n grid-column: span 12;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-column: 2 / span 10;\r\n }\r\n`;\r\n\r\nconst defaultBreakoutLeftStyles = css`\r\n margin-left: -16px;\r\n\r\n @media ${from(Device.Tablet)} {\r\n margin-left: -40px;\r\n }\r\n\r\n @media ${from(Device.Desktop)} {\r\n margin-left: -32px;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n margin-left: -165px;\r\n }\r\n`;\r\n\r\nconst defaultBreakoutRightStyles = css`\r\n margin-right: -16px;\r\n\r\n @media ${from(Device.Tablet)} {\r\n margin-right: -40px;\r\n }\r\n\r\n @media ${from(Device.Desktop)} {\r\n margin-right: -32px;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n margin-right: -165px;\r\n }\r\n`;\r\n\r\nconst defaultBreakoutStyles = css`\r\n ${defaultBreakoutLeftStyles};\r\n ${defaultBreakoutRightStyles};\r\n`;\r\n\r\nconst DefaultGridBreakout = styled.div`\r\n grid-column: span 12;\r\n\r\n ${defaultBreakoutStyles};\r\n`;\r\n\r\nconst reducedPaddingGridBreakoutStyles = css`\r\n margin-left: -16px;\r\n margin-right: -16px;\r\n\r\n @media ${from(Device.Tablet)} {\r\n margin-left: -32px;\r\n margin-right: -32px;\r\n }\r\n\r\n @media ${from(Device.Desktop)} {\r\n margin-left: -28px;\r\n margin-right: -28px;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n margin-left: -30px;\r\n margin-right: -30px;\r\n }\r\n`;\r\n\r\nconst ReducedPaddingGridBreakout = styled.div`\r\n grid-column: span 12;\r\n\r\n ${reducedPaddingGridBreakoutStyles};\r\n`;\r\n\r\nexport const Column = {\r\n Full,\r\n Half,\r\n HalfToFull,\r\n Third,\r\n Quarter,\r\n Container,\r\n\r\n DefaultGridBreakout,\r\n defaultBreakoutStyles,\r\n defaultBreakoutLeftStyles,\r\n defaultBreakoutRightStyles,\r\n\r\n ReducedPaddingGridBreakout,\r\n reducedPaddingGridBreakoutStyles,\r\n};\r\n","import { ButtonReset } from '@helpers/global';\r\nimport { fluid } from '@helpers/fluid';\r\nimport { from, Device, until } from '@helpers/media';\r\nimport { Grid } from '@components/Grid/Grid.styles';\r\nimport brand from '@helpers/brand';\r\nimport fonts from '@helpers/fonts';\r\nimport styled from 'styled-components';\r\nimport { m } from 'framer-motion';\r\nimport { verticalFadeIn } from '@helpers/variants';\r\nimport { ButtonStyles } from '@components/Button/Button.styles';\r\n\r\nconst Container = styled.section`\r\n background-color: ${brand.grey[15]};\r\n overflow: hidden;\r\n`;\r\n\r\nconst Header = styled.div`\r\n --padding: ${fluid(20, 32)};\r\n padding-top: var(--padding);\r\n padding-bottom: 24px;\r\n background-color: ${brand.grey[20]};\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n overflow: hidden;\r\n }\r\n`;\r\n\r\nconst HeaderInner = styled.div`\r\n ${Grid.defaultPadding};\r\n max-width: 1920px;\r\n display: grid;\r\n grid-template-columns: 1fr;\r\n gap: 16px;\r\n color: ${brand.white};\r\n margin: 0 auto;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-template-columns: 1fr 1fr;\r\n }\r\n`;\r\n\r\nconst ModelName = styled.div`\r\n ${fonts.helvetica['93-black-extended']};\r\n font-size: ${fluid(18, 28)};\r\n line-height: 1.2em;\r\n text-transform: uppercase;\r\n color: ${brand.white};\r\n`;\r\n\r\nconst HeaderNavigation = styled.div`\r\n display: flex;\r\n gap: ${fluid(6, 30)};\r\n transition: opacity 0.35s ease-in-out;\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n flex-direction: column;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n padding: 0px 30px;\r\n background-color: ${brand.grey[10]};\r\n justify-content: space-between;\r\n width: 100%;\r\n align-items: center;\r\n position: relative;\r\n top: calc(var(--padding) * -1);\r\n height: calc(100% + var(--padding) * 2);\r\n\r\n ${ButtonStyles.ButtonElement} {\r\n min-width: max-content;\r\n }\r\n\r\n span {\r\n width: 100%;\r\n }\r\n }\r\n\r\n span {\r\n ${fonts.helvetica['55-roman']};\r\n }\r\n\r\n &[data-is-hidden='true'] {\r\n opacity: 0;\r\n pointer-events: none;\r\n }\r\n`;\r\n\r\nconst SimpleButton = styled.button.attrs({ type: 'button' })`\r\n ${ButtonReset};\r\n ${fonts.helvetica['55-roman']};\r\n font-size: ${fluid(14, 16)};\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n color: ${brand.white};\r\n text-decoration: underline;\r\n\r\n i {\r\n height: 1em;\r\n\r\n svg {\r\n height: 100%;\r\n color: ${brand.white};\r\n }\r\n }\r\n`;\r\n\r\nconst AnimatedContent = styled(m.div).attrs({\r\n initial: 'hidden',\r\n animate: 'visible',\r\n exit: 'hidden',\r\n variants: verticalFadeIn(0),\r\n})`\r\n grid-column: 1 / span 12;\r\n padding: 16px 0 24px;\r\n`;\r\n\r\nconst TitleWrapper = styled.div`\r\n grid-area: title-wrapper;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n`;\r\n\r\nconst Subtitle = styled.h4`\r\n ${fonts.helvetica['83-heavy-extended']};\r\n color: ${brand.grey[80]};\r\n font-size: ${fluid(12, 16)};\r\n line-height: 1em;\r\n text-transform: uppercase;\r\n`;\r\n\r\nconst Title = styled.h3`\r\n ${fonts.helvetica['93-black-extended']};\r\n color: ${brand.white};\r\n font-size: ${fluid(14, 20)};\r\n line-height: 1em;\r\n text-transform: uppercase;\r\n`;\r\n\r\nconst DrawerCustomisationViewStyles = {\r\n Container,\r\n Header,\r\n HeaderInner,\r\n ModelName,\r\n HeaderNavigation,\r\n AnimatedContent,\r\n Subtitle,\r\n Title,\r\n TitleWrapper,\r\n SimpleButton,\r\n};\r\n\r\nexport default DrawerCustomisationViewStyles;\r\n","import { SSCModelID } from '@context/SteelStorageConfigurator.types';\r\nimport animation from '@helpers/animation';\r\nimport brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport fonts from '@helpers/fonts';\r\nimport { ButtonReset } from '@helpers/global';\r\nimport { Device, from } from '@helpers/media';\r\nimport styled from 'styled-components';\r\n\r\nconst Container = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n gap: 24px;\r\n`;\r\n\r\nconst MediaContainer = styled.div`\r\n grid-area: media-container;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 16px;\r\n align-items: center;\r\n`;\r\n\r\nconst MediaWrapper = styled.div`\r\n width: 100%;\r\n max-width: 500px;\r\n position: relative;\r\n z-index: 1;\r\n\r\n img {\r\n position: absolute;\r\n z-index: 1;\r\n width: 100%;\r\n height: 100%;\r\n }\r\n\r\n &[data-model-id='${SSCModelID.SRC27}'],\r\n &[data-model-id='${SSCModelID.SRC30}'] {\r\n aspect-ratio: 510 / 451;\r\n\r\n &[data-is-expanded='true'] {\r\n aspect-ratio: 510 / 632;\r\n }\r\n }\r\n\r\n &[data-model-id='${SSCModelID.SRC46}'] {\r\n aspect-ratio: 510 / 322.42;\r\n\r\n &[data-is-expanded='true'] {\r\n aspect-ratio: 510 / 500;\r\n }\r\n }\r\n`;\r\n\r\nconst SelectorsWrapper = styled.div`\r\n position: absolute;\r\n z-index: 2;\r\n\r\n display: flex;\r\n flex-direction: column;\r\n\r\n [data-model-id='${SSCModelID.SRC27}'] &,\r\n [data-model-id='${SSCModelID.SRC30}'] & {\r\n left: 25.9%;\r\n top: 13.6%;\r\n width: 46%;\r\n height: 45%;\r\n }\r\n\r\n [data-model-id='${SSCModelID.SRC27}'][data-is-expanded='true'] &,\r\n [data-model-id='${SSCModelID.SRC30}'][data-is-expanded='true'] & {\r\n left: 25.9%;\r\n top: 11%;\r\n width: 46%;\r\n height: 60%;\r\n }\r\n\r\n [data-model-id='${SSCModelID.SRC46}'] & {\r\n left: 20.7%;\r\n top: 14.4%;\r\n width: 59.6%;\r\n height: 38.8%;\r\n }\r\n\r\n [data-model-id='${SSCModelID.SRC46}'][data-is-expanded='true'] & {\r\n left: 20.7%;\r\n top: 24.4%;\r\n width: 59.6%;\r\n height: 45.8%;\r\n }\r\n\r\n @media ${from(Device.Tablet)} {\r\n &:hover {\r\n ${() => DrawerSelectorButton} {\r\n opacity: 0.5;\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst ExtraDrawersWrapper = styled.div`\r\n display: grid;\r\n grid-template-columns: 1fr;\r\n\r\n position: absolute;\r\n z-index: 1;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n\r\n [data-model-id='${SSCModelID.SRC30}'] & {\r\n grid-template-rows: repeat(4, 1fr);\r\n height: 34%;\r\n }\r\n\r\n [data-model-id='${SSCModelID.SRC46}'] & {\r\n grid-template-rows: repeat(3, 1fr);\r\n height: 34%;\r\n }\r\n`;\r\n\r\nconst DefaultDrawersWrapper = styled.div`\r\n display: grid;\r\n grid-template-columns: 1fr;\r\n\r\n position: absolute;\r\n z-index: 1;\r\n bottom: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n\r\n [data-model-id='${SSCModelID.SRC30}'] & {\r\n grid-template-rows: repeat(5, 1fr) 23%;\r\n }\r\n\r\n [data-model-id='${SSCModelID.SRC30}'][data-is-expanded='true'] & {\r\n height: 54%;\r\n }\r\n\r\n [data-model-id='${SSCModelID.SRC46}'] & {\r\n grid-template-rows: repeat(2, 1fr) 10% repeat(3, 1fr);\r\n\r\n ${() => DrawerSelectorButton}:nth-child(3) {\r\n border-top-color: ${brand.white};\r\n }\r\n\r\n &::after {\r\n content: '';\r\n display: block;\r\n width: 100%;\r\n order: 1;\r\n }\r\n }\r\n\r\n [data-model-id='${SSCModelID.SRC46}'][data-is-expanded='true'] & {\r\n height: 54.4%;\r\n }\r\n`;\r\n\r\nconst DrawerSelectorButton = styled.button.attrs({ type: 'button' })<{ index?: number }>`\r\n ${ButtonReset};\r\n order: ${({ index }) => index};\r\n width: 100%;\r\n border: 2px dashed ${brand.white};\r\n padding: 0 4px;\r\n display: grid;\r\n place-items: center;\r\n background-color: ${brand.nearlyBlack}77;\r\n transition: opacity 0.2s ${animation.easeInOutCubic}, border-color 0.2s ${animation.easeInOutCubic};\r\n\r\n &:not(:first-child) {\r\n border-top-color: transparent;\r\n }\r\n\r\n span {\r\n display: block;\r\n color: ${brand.white};\r\n ${fonts.helvetica['93-black-extended']};\r\n text-transform: uppercase;\r\n text-align: center;\r\n font-size: ${fluid(10, 14)};\r\n line-height: 1em;\r\n }\r\n\r\n @media ${from(Device.Tablet)} {\r\n &:hover {\r\n opacity: 1 !important;\r\n border-top-color: ${brand.white};\r\n }\r\n }\r\n`;\r\n\r\nconst DrawerSelectionStyles = {\r\n Container,\r\n MediaContainer,\r\n MediaWrapper,\r\n SelectorsWrapper,\r\n ExtraDrawersWrapper,\r\n DefaultDrawersWrapper,\r\n DrawerSelectorButton,\r\n};\r\n\r\nexport default DrawerSelectionStyles;\r\n","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nconst SvgInfo = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 18 18\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentcolor\",\n id: \"e2a2\",\n d: \"M9.887,6.3V4.479H8.113V6.3Zm0,7.225V8.113H8.113v5.408ZM9,0a8.668,8.668,0,0,1,6.359,2.641A8.668,8.668,0,0,1,18,9a8.668,8.668,0,0,1-2.641,6.359A8.668,8.668,0,0,1,9,18a8.668,8.668,0,0,1-6.359-2.641A8.668,8.668,0,0,1,0,9,8.668,8.668,0,0,1,2.641,2.641,8.668,8.668,0,0,1,9,0Z\"\n })));\n};\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgInfo, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/info.5307e38d.svg\";\nexport { ForwardRef as ReactComponent };","import styled from 'styled-components';\r\n\r\nexport const Image = styled.img``;\r\n\r\nexport const ImageStyles = {\r\n Image,\r\n};\r\n","import { Device, from } from '@helpers/media';\r\nimport { MotionProps } from 'framer-motion';\r\nimport React, { FunctionComponent } from 'react';\r\nimport { ImageStyles } from './Image.styles';\r\n\r\nexport type ImageProps = React.ImgHTMLAttributes & {\r\n Component?: any; // eslint-disable-line @typescript-eslint/no-explicit-any\r\n src: string;\r\n mobileSrc?: string;\r\n mobileBreakpoint?: Device;\r\n srcSetSizes?: number[];\r\n alt?: string;\r\n role?: string;\r\n sizes: string;\r\n loading?: 'eager' | 'lazy';\r\n motionProps?: MotionProps;\r\n};\r\n\r\nconst defaultSrcSetSizes = [\r\n Device.MobileSmall,\r\n Device.Mobile,\r\n Device.Tablet,\r\n Device.DesktopSmall,\r\n Device.Desktop,\r\n Device.DesktopLarge,\r\n Device.ActualDesktop,\r\n];\r\n\r\nconst Image: FunctionComponent = ({\r\n src,\r\n mobileSrc,\r\n mobileBreakpoint = Device.TabletLarge,\r\n sizes,\r\n alt,\r\n role,\r\n Component = ImageStyles.Image,\r\n srcSetSizes = defaultSrcSetSizes,\r\n loading = 'lazy',\r\n motionProps,\r\n ...remainingImgProps\r\n}) => {\r\n if (src) {\r\n // Check to see if url contains ?, if it does use & instead\r\n const queryCombiner = getQueryCombiner(src);\r\n\r\n // Generate srcSet from all of the given sizes\r\n const srcSet = srcSetSizes.map(x => `${src}${queryCombiner}width=${x} ${x}w`).join(', ');\r\n\r\n const props: React.DetailedHTMLProps, HTMLImageElement> = {\r\n ...remainingImgProps,\r\n decoding: 'async',\r\n loading,\r\n src,\r\n srcSet,\r\n sizes,\r\n alt,\r\n role,\r\n };\r\n\r\n if (mobileSrc) {\r\n const mobileQueryCombiner = getQueryCombiner(mobileSrc);\r\n const mobileSrcSet = srcSetSizes.map(x => `${mobileSrc}${mobileQueryCombiner}width=${x} ${x}w`).join(', ');\r\n\r\n return (\r\n \r\n \r\n\r\n {Component ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n return Component !== undefined ? : ;\r\n }\r\n\r\n // If no src or mobileSrc provided, we can't render anything //\r\n return null;\r\n};\r\n\r\nfunction getQueryCombiner(src: string): string {\r\n return src.indexOf('?') === -1 ? '?' : '&';\r\n}\r\n\r\nexport default Image;\r\n","import * as React from 'react';\r\nimport S from './DrawerSelection.styles';\r\n\r\nimport { ActionType } from '@context/SteelStorageConfigurator.actions';\r\nimport { Device, from } from '@helpers/media';\r\nimport { Drawer } from '@context/SteelStorageConfigurator.types';\r\nimport { DrawerCustomisationViewProps } from '../../DrawerCustomisationView';\r\nimport { ReactComponent as IconInfo } from '@img/icons/info.svg';\r\nimport { useSteelStorageConfiguratorContext } from '@context/SteelStorageConfigurator.context';\r\nimport DrawerCustomisationViewStyles from '../../DrawerCustomisationView.styles';\r\nimport Image from '@components/Image/Image';\r\n\r\ntype SemanticDrawer = Drawer & {\r\n semanticIndex: number;\r\n};\r\n\r\nconst DrawerSelection: React.FC = props => {\r\n const { state, dispatch } = useSteelStorageConfiguratorContext();\r\n const mediaUrl = state.hasSelectedExpansionStorage\r\n ? props.activeModel.frontalViewWithExpandedStorageImageUrl\r\n : props.activeModel.frontalViewImageUrl;\r\n\r\n const defaultDrawers: SemanticDrawer[] = [];\r\n const extraDrawers: SemanticDrawer[] = [];\r\n\r\n state.drawers.forEach((drawer, index) => {\r\n const semanticDrawer: SemanticDrawer = {\r\n ...drawer,\r\n semanticIndex: index + 1,\r\n };\r\n\r\n if (drawer.isExtra) {\r\n extraDrawers.push(semanticDrawer);\r\n } else {\r\n defaultDrawers.push(semanticDrawer);\r\n }\r\n });\r\n\r\n return (\r\n \r\n \r\n {props.translations['custom.ssc.inserts']}\r\n \r\n {props.translations['custom.ssc.drawerCustomisationView.selectInserts']}\r\n \r\n \r\n\r\n \r\n {props.hasConfigurationContent && (\r\n dispatch({ type: ActionType.OPEN_POPUP, popupId: 'POPUP/DRAWERS_CONFIGURATION' })}\r\n >\r\n \r\n \r\n \r\n {props.translations['custom.ssc.drawerCustomisationView.drawerConfigurations']}\r\n \r\n )}\r\n\r\n \r\n \r\n\r\n \r\n {state.hasSelectedExpansionStorage && (\r\n \r\n {extraDrawers.map(drawer => (\r\n dispatch({ type: ActionType.SET_ACTIVE_DRAWER, drawerId: drawer.id })}>\r\n \r\n {props.translations['custom.ssc.drawer']} {drawer.semanticIndex}\r\n \r\n \r\n ))}\r\n \r\n )}\r\n\r\n \r\n {defaultDrawers.map((drawer, index) => (\r\n dispatch({ type: ActionType.SET_ACTIVE_DRAWER, drawerId: drawer.id })}\r\n >\r\n \r\n {props.translations['custom.ssc.drawer']} {drawer.semanticIndex}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default DrawerSelection;\r\n","import { ButtonReset } from '@helpers/global';\r\nimport { fluid } from '@helpers/fluid';\r\nimport { from, Device, until } from '@helpers/media';\r\nimport { Variants, m } from 'framer-motion';\r\nimport animation from '@helpers/animation';\r\nimport brand from '@helpers/brand';\r\nimport fonts from '@helpers/fonts';\r\nimport styled, { css } from 'styled-components';\r\nimport { DrawerLayout, FoamInsertSize, SSCModelID, SSCSlots } from '@context/SteelStorageConfigurator.types';\r\n\r\nconst Container = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n gap: 24px;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n display: grid;\r\n grid-template-columns: min(500px, 50%) 1fr;\r\n grid-template-areas:\r\n 'title-wrapper action-controls'\r\n 'media-container product-listing';\r\n }\r\n`;\r\n\r\nconst MediaContainer = styled.div`\r\n grid-area: media-container;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 16px;\r\n align-items: center;\r\n`;\r\n\r\nconst MediaWrapper = styled.div`\r\n width: 100%;\r\n max-width: 500px;\r\n position: relative;\r\n z-index: 1;\r\n aspect-ratio: 364 / 215;\r\n\r\n &[data-model-id='${SSCModelID.SRC30}'] {\r\n aspect-ratio: 364 / 215;\r\n }\r\n\r\n &[data-model-id='${SSCModelID.SRC46}'] {\r\n aspect-ratio: 1000 / 445;\r\n }\r\n\r\n &[data-model-id='${SSCModelID.SWC40}'] {\r\n aspect-ratio: 1000 / 619;\r\n }\r\n`;\r\n\r\nconst MediaFixedDrawer = styled.div`\r\n position: absolute;\r\n z-index: 3;\r\n width: 100%;\r\n aspect-ratio: 1000 / 80;\r\n left: 0;\r\n top: 0;\r\n\r\n img {\r\n position: absolute;\r\n inset: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: contain;\r\n z-index: 1;\r\n }\r\n\r\n &::after {\r\n position: absolute;\r\n content: '';\r\n inset: 0;\r\n z-index: 2;\r\n background: linear-gradient(0deg, rgba(38, 38, 38, 0) 25%, rgba(38, 38, 38, 1) 90%);\r\n }\r\n\r\n [data-model-id='${SSCModelID.SRC30}'] & {\r\n aspect-ratio: 1000 / 80;\r\n }\r\n\r\n [data-model-id='${SSCModelID.SRC46}'] & {\r\n aspect-ratio: 1000 / 80.2;\r\n }\r\n\r\n [data-model-id='${SSCModelID.SWC40}'] & {\r\n aspect-ratio: 1000 / 106.59;\r\n }\r\n`;\r\n\r\nconst MediaMovableDrawer = styled.div`\r\n position: absolute;\r\n z-index: 2;\r\n width: 100%;\r\n aspect-ratio: 1000 / 525;\r\n left: 0;\r\n bottom: 0;\r\n\r\n img {\r\n position: absolute;\r\n inset: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: contain;\r\n z-index: 1;\r\n }\r\n\r\n [data-model-id='${SSCModelID.SRC30}'] & {\r\n aspect-ratio: 1000 / 525;\r\n }\r\n\r\n [data-model-id='${SSCModelID.SRC46}'] & {\r\n aspect-ratio: 1000 / 375;\r\n }\r\n\r\n [data-model-id='${SSCModelID.SWC40}'] & {\r\n aspect-ratio: 1000 / 528;\r\n }\r\n`;\r\n\r\nconst MediaMovableDrawerInsertsContainer = styled.div`\r\n position: absolute;\r\n z-index: 1;\r\n top: 2%;\r\n left: 21%;\r\n width: 59.2%;\r\n height: 80.3%;\r\n\r\n [data-model-id='${SSCModelID.SRC30}'] & {\r\n top: 2%;\r\n left: 21%;\r\n width: 59.2%;\r\n height: 80.3%;\r\n }\r\n\r\n [data-model-id='${SSCModelID.SWC40}'] & {\r\n top: 1%;\r\n left: 17.6%;\r\n width: 70.1%;\r\n height: 89.3%;\r\n }\r\n\r\n [data-model-id='${SSCModelID.SRC46}'][data-drawer-layout='${DrawerLayout.WIDE_WITH_GAP}'] & {\r\n top: 2%;\r\n left: 11.6%;\r\n width: 42.2%;\r\n height: 80.3%;\r\n }\r\n\r\n [data-model-id='${SSCModelID.SRC46}'][data-drawer-layout='${DrawerLayout.WIDE}'] & {\r\n top: 2%;\r\n left: 12.4%;\r\n width: 67.1%;\r\n height: 80.3%;\r\n }\r\n`;\r\n\r\nconst MediaMovableDrawerEmptyMessage = styled.div`\r\n position: absolute;\r\n inset: 0px;\r\n z-index: 3;\r\n background-color: transparent;\r\n color: ${brand.white};\r\n padding: ${fluid(8, 16)};\r\n border: 2px dashed ${brand.white};\r\n transition: opacity 0.35s ${animation.easeInOutCubic}, transform 0.35s ${animation.easeInOutCubic};\r\n pointer-events: none;\r\n\r\n &[data-is-wide='true'] {\r\n width: 163%;\r\n }\r\n\r\n &[data-is-hidden='true'] {\r\n opacity: 0;\r\n transform: scale(0.9);\r\n }\r\n`;\r\n\r\nconst FittyTextWrapper = styled.div`\r\n height: 100%;\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: center;\r\n padding: 0.5em;\r\n align-content: center;\r\n gap: 0 0.5em;\r\n\r\n > div {\r\n display: block;\r\n text-align: center;\r\n text-transform: uppercase;\r\n ${fonts.helvetica['93-black-extended']};\r\n font-size: ${fluid(10, 16)};\r\n line-height: 1.1em;\r\n }\r\n`;\r\n\r\nconst croppedInsertWrapperVariants: Variants = {\r\n hidden: {\r\n opacity: 0,\r\n scale: 0.8,\r\n transition: {\r\n duration: 0.35,\r\n },\r\n },\r\n visible: {\r\n opacity: 1,\r\n scale: 1,\r\n transition: {\r\n duration: 0.35,\r\n },\r\n },\r\n} as Variants;\r\n\r\nconst CroppedInsertWrapper = styled(m.div).attrs({\r\n initial: 'hidden',\r\n animate: 'visible',\r\n exit: 'hidden',\r\n variants: croppedInsertWrapperVariants,\r\n})<{ insertType: keyof SSCSlots; size: FoamInsertSize; slotIndex: number }>`\r\n --slot-base-size: calc(100% / 3);\r\n --slot-index: 0;\r\n --slot-size: var(--slot-base-size);\r\n --slot-displacement: 0px;\r\n\r\n ${({ insertType, slotIndex }) => {\r\n switch (insertType) {\r\n case 'simple':\r\n return css`\r\n [data-model-id='${SSCModelID.SRC30}'] & {\r\n --slot-base-size: calc(100% / 3);\r\n }\r\n\r\n [data-model-id='${SSCModelID.SWC40}'] & {\r\n --slot-base-size: calc(100% / 4);\r\n height: 84%;\r\n }\r\n\r\n [data-model-id='${SSCModelID.SRC46}'][data-drawer-layout='${DrawerLayout.WIDE}'] & {\r\n --slot-base-size: calc(85% / 5);\r\n height: 84%;\r\n }\r\n\r\n [data-model-id='${SSCModelID.SRC46}'][data-drawer-layout='${DrawerLayout.WIDE_WITH_GAP}'] & {\r\n --slot-base-size: calc(76.5% / 3);\r\n --slot-displacement: ${slotIndex === 3 ? '37%' : '0px'};\r\n height: 84%;\r\n }\r\n `;\r\n\r\n case 'filler':\r\n return css`\r\n [data-model-id='${SSCModelID.SWC40}'] & {\r\n --slot-base-size: calc(100% / 4);\r\n height: 16%;\r\n top: 85%;\r\n }\r\n\r\n [data-model-id='${SSCModelID.SRC46}'][data-drawer-layout='${DrawerLayout.WIDE}'] & {\r\n --slot-base-size: calc(85% / 5);\r\n height: 16%;\r\n top: 85%;\r\n }\r\n\r\n [data-model-id='${SSCModelID.SRC46}'][data-drawer-layout='${DrawerLayout.WIDE_WITH_GAP}'] & {\r\n --slot-base-size: calc(76.5% / 3);\r\n --slot-displacement: ${slotIndex === 3 ? '37%' : '0px'};\r\n height: 16%;\r\n top: 85%;\r\n }\r\n `;\r\n\r\n case 'filler_46':\r\n return css`\r\n [data-model-id='${SSCModelID.SRC46}'][data-drawer-layout='${DrawerLayout.WIDE}'] & {\r\n --slot-base-size: 15%;\r\n --slot-displacement: 85%;\r\n }\r\n\r\n [data-model-id='${SSCModelID.SRC46}'][data-drawer-layout='${DrawerLayout.WIDE_WITH_GAP}'] & {\r\n --slot-base-size: 23.5%;\r\n --slot-displacement: ${slotIndex === 1 ? '115.8%' : '76.5%'};\r\n }\r\n `;\r\n }\r\n }}\r\n\r\n ${({ slotIndex }) => css`\r\n --slot-index: ${slotIndex};\r\n `}\r\n\r\n ${({ size }) => {\r\n switch (size) {\r\n case FoamInsertSize.DOUBLE:\r\n return css`\r\n --slot-size: calc(2 * var(--slot-base-size));\r\n `;\r\n case FoamInsertSize.TRIPLE:\r\n case FoamInsertSize.FILLER_LARGE:\r\n return css`\r\n --slot-size: calc(3 * var(--slot-base-size));\r\n `;\r\n default:\r\n return css`\r\n --slot-size: var(--slot-base-size);\r\n `;\r\n }\r\n }}\r\n\r\n position: absolute;\r\n z-index: 2;\r\n top: 0;\r\n left: calc(var(--slot-index) * var(--slot-base-size) + var(--slot-displacement));\r\n width: var(--slot-size);\r\n height: 100%;\r\n transition: left 0.35s ${animation.easeInOutCubic};\r\n background-color: ${brand.nearlyBlack}40;\r\n\r\n img {\r\n position: absolute;\r\n inset: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: contain;\r\n z-index: 1;\r\n }\r\n`;\r\n\r\nconst CroppedInsertOverlay = styled.button.attrs({ type: 'button' })`\r\n ${ButtonReset};\r\n\r\n position: absolute;\r\n z-index: 3;\r\n display: grid;\r\n place-items: center;\r\n inset: 0;\r\n\r\n @media ${from(Device.Tablet)} {\r\n background-color: ${brand.nearlyBlack}22;\r\n backdrop-filter: blur(2px);\r\n border: 2px dashed ${brand.white};\r\n opacity: 0;\r\n transition: opacity 0.2s ${animation.easeInOutCubic}, transform 0.2s ${animation.easeInOutCubic};\r\n\r\n &:hover {\r\n opacity: 1;\r\n }\r\n }\r\n`;\r\n\r\nconst CroppedInsertIconWrapper = styled.i`\r\n @media ${until(Device.Tablet)} {\r\n position: absolute;\r\n z-index: 4;\r\n right: 0;\r\n top: -4px;\r\n padding: 5px;\r\n display: grid;\r\n place-items: center;\r\n background-color: ${brand.black};\r\n border-radius: 50%;\r\n }\r\n\r\n width: 18px;\r\n height: 18px;\r\n\r\n svg {\r\n width: 100%;\r\n color: ${brand.white};\r\n }\r\n`;\r\n\r\nconst ResetControlsContainer = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n gap: 24px;\r\n transition: opacity 0.35s ${animation.easeInOutCubic}, transform 0.35s ${animation.easeInOutCubic};\r\n\r\n &[data-is-hidden='true'] {\r\n opacity: 0;\r\n transform: translateY(30px);\r\n pointer-events: none;\r\n }\r\n`;\r\n\r\nconst ActionControlsContainer = styled.div`\r\n grid-area: action-controls;\r\n display: grid;\r\n grid-template-areas: 'drawer-select filter-select' 'search search';\r\n grid-template-columns: 4fr 3fr;\r\n gap: 10px;\r\n\r\n @media ${from(Device.MobileLarge)} {\r\n grid-template-columns: 1fr 1fr;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-template-areas: 'drawer-select' 'filter-select' 'search';\r\n grid-template-columns: 1fr;\r\n }\r\n\r\n @media ${from(Device.Desktop)} {\r\n grid-template-areas: 'drawer-select filter-select' 'search search';\r\n grid-template-columns: 1fr 1fr;\r\n }\r\n`;\r\n\r\nconst DrawerSelectWrapper = styled.div`\r\n grid-area: drawer-select;\r\n`;\r\n\r\nconst FilterSelectWrapper = styled.div`\r\n grid-area: filter-select;\r\n width: 100%;\r\n height: 50px;\r\n`;\r\n\r\nconst SearchWrapper = styled.div`\r\n grid-area: search;\r\n width: 100%;\r\n`;\r\n\r\nconst ProductListing = styled.div`\r\n grid-area: product-listing;\r\n display: flex;\r\n gap: 16px;\r\n flex-wrap: nowrap;\r\n overflow: auto;\r\n\r\n .loading {\r\n font-size: 20px;\r\n color: ${brand.white};\r\n }\r\n\r\n &[data-loading='true'] {\r\n min-height: 25px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n display: grid;\r\n max-height: calc(100vh - var(--navHeight, 50px) - 360px);\r\n --columns: 2;\r\n grid-template-columns: repeat(var(--columns), 1fr);\r\n }\r\n\r\n @media ${from(Device.Desktop)} {\r\n max-height: calc(100vh - var(--navHeight, 50px) - 300px);\r\n --columns: 3;\r\n }\r\n`;\r\n\r\nconst DrawerCustomisationViewStyles = {\r\n Container,\r\n MediaContainer,\r\n MediaWrapper,\r\n MediaFixedDrawer,\r\n MediaMovableDrawer,\r\n MediaMovableDrawerInsertsContainer,\r\n MediaMovableDrawerEmptyMessage,\r\n FittyTextWrapper,\r\n CroppedInsertWrapper,\r\n CroppedInsertOverlay,\r\n CroppedInsertIconWrapper,\r\n ResetControlsContainer,\r\n ActionControlsContainer,\r\n DrawerSelectWrapper,\r\n FilterSelectWrapper,\r\n SearchWrapper,\r\n ProductListing,\r\n};\r\n\r\nexport default DrawerCustomisationViewStyles;\r\n","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nconst SvgIconX = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 18 18\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"e921\",\n d: \"M18,1.43,16.57,0,9,7.57,1.43,0,0,1.43,7.57,9,0,16.57,1.43,18,9,10.43,16.57,18,18,16.57,10.43,9Z\",\n fill: \"currentColor\"\n })));\n};\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgIconX, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/icon-x.3f414c41.svg\";\nexport { ForwardRef as ReactComponent };","import querystring from 'querystring';\r\nimport { ApiRequest } from '../Models';\r\n\r\nclass ApiService {\r\n async request(request: ApiRequest): Promise {\r\n // Get the url\r\n const url = this.getUrl(request);\r\n\r\n // Headers\r\n const headers = new Headers({\r\n 'Content-Type': 'application/json; charset=utf-8',\r\n Accept: 'application/json',\r\n });\r\n\r\n if (request.isMultipartFormData === true) {\r\n headers.delete('Content-Type');\r\n }\r\n\r\n // construct a request\r\n const requestOptions: RequestInit = {\r\n method: request.method,\r\n headers,\r\n mode: 'cors',\r\n cache: 'default',\r\n body: this.getBody(request, request.files),\r\n };\r\n\r\n // await the response\r\n const response = await fetch(url, requestOptions);\r\n\r\n if (response.status >= 400) {\r\n throw new Error(`${response.status}: ${response.statusText}`);\r\n }\r\n\r\n const json = await response.json();\r\n\r\n const data = json as T;\r\n\r\n return data;\r\n }\r\n\r\n private getUrl(request: ApiRequest): string {\r\n let url = `/api/${request.controller}/${request.slug}`;\r\n\r\n if (request.baseUrl) {\r\n url = `${request.baseUrl}${url}`;\r\n }\r\n\r\n if ((request.method === 'GET' || request.method === 'DELETE') && request.params) {\r\n url += '?';\r\n url += querystring.stringify({ ...request.params });\r\n }\r\n\r\n return url;\r\n }\r\n\r\n private getBody(request: ApiRequest, files?: File[] | FileList | null | []): string | FormData | null {\r\n if (request.method === 'GET') {\r\n return null;\r\n }\r\n\r\n if (request.isMultipartFormData === true) {\r\n const formData = new FormData();\r\n\r\n formData.append('params', JSON.stringify(request.params));\r\n\r\n if (files && files.length > 0) {\r\n for (let index = 0; index < files.length; index++) {\r\n const file = files[index];\r\n formData.append(`files-${index}`, file);\r\n }\r\n }\r\n\r\n return formData;\r\n }\r\n\r\n return JSON.stringify(request.params);\r\n }\r\n}\r\n\r\nexport default new ApiService();\r\n","import { ButtonReset } from '@helpers/global';\r\nimport brand from '@helpers/brand';\r\nimport fonts from '@helpers/fonts';\r\nimport styled from 'styled-components';\r\nimport animation from '@helpers/animation';\r\n\r\nconst Container = styled.div`\r\n display: flex;\r\n gap: 16px;\r\n`;\r\n\r\nconst Title = styled.span`\r\n ${fonts.helvetica['55-roman']};\r\n height: 50px;\r\n color: ${brand.white};\r\n font-size: 14px;\r\n line-height: 1em;\r\n display: flex;\r\n align-items: center;\r\n`;\r\n\r\nconst FilterOptionsWrapper = styled.div`\r\n display: flex;\r\n flex-wrap: wrap;\r\n gap: 8px;\r\n`;\r\n\r\nconst FilterOption = styled.button.attrs({ type: 'button' })`\r\n ${ButtonReset};\r\n height: 50px;\r\n width: 50px;\r\n border: 1px solid ${brand.white};\r\n background-color: ${brand.grey[25]};\r\n color: ${brand.white};\r\n cursor: pointer;\r\n display: grid;\r\n place-items: center;\r\n font-size: 14px;\r\n line-height: 1em;\r\n text-transform: uppercase;\r\n transition: background-color 0.2s ${animation.easeInOutCubic}, border-color 0.2s ${animation.easeInOutCubic};\r\n &[data-large='true'] {\r\n width: 100px;\r\n }\r\n\r\n &[data-is-active='true'],\r\n &:hover {\r\n background-color: ${brand.red.dark};\r\n border-color: ${brand.red.dark};\r\n }\r\n\r\n &:hover {\r\n background-color: ${brand.red.dark};\r\n border-color: ${brand.white};\r\n }\r\n\r\n &:active {\r\n background-color: ${brand.red.base};\r\n }\r\n`;\r\n\r\nconst DesktopFilterSelectorStyles = {\r\n Container,\r\n Title,\r\n FilterOptionsWrapper,\r\n FilterOption,\r\n};\r\n\r\nexport default DesktopFilterSelectorStyles;\r\n","import { ActionType } from '@context/SteelStorageConfigurator.actions';\r\nimport { useSteelStorageConfiguratorContext } from '@context/SteelStorageConfigurator.context';\r\nimport * as React from 'react';\r\nimport S from './DesktopFilterSelector.styles';\r\nimport { FoamInsertSize } from '@context/SteelStorageConfigurator.types';\r\n\r\nexport type DesktopFilterSelectorProps = {\r\n title: string;\r\n availableFilters: FoamInsertSize[] | undefined;\r\n};\r\n\r\nconst DesktopFilterSelector: React.FC = props => {\r\n const { state, dispatch } = useSteelStorageConfiguratorContext();\r\n\r\n if (!props.availableFilters) {\r\n return <>;\r\n }\r\n\r\n return (\r\n \r\n {props.title}\r\n \r\n {state.allFilters\r\n .filter(x => (props.availableFilters as FoamInsertSize[]).indexOf(x.id) > -1)\r\n .sort((a, b) => {\r\n if (a.id === FoamInsertSize.EMPTY) {\r\n return -1;\r\n } else if (b.id === FoamInsertSize.EMPTY) {\r\n return 1;\r\n } else {\r\n return a.name.localeCompare(b.name);\r\n }\r\n })\r\n .map(filter => (\r\n dispatch({ type: ActionType.TOGGLE_FILTER, filterId: filter.id })}\r\n data-is-active={filter.value}\r\n data-large={filter.largeButton}\r\n >\r\n {filter.name}\r\n \r\n ))}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default DesktopFilterSelector;\r\n","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nconst SvgIconChevronDown = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 10.783 6.186\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_4094\",\n \"data-name\": \"Path 4094\",\n d: \"M42.965-1258.887l5.162,5.118,4.908-5.118\",\n transform: \"translate(-42.613 1259.242)\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2\n })));\n};\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgIconChevronDown, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/icon-chevron-down.2225dfa9.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nconst SvgDrawerMedium = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 35 23\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n stroke: \"#fff\",\n \"data-name\": \"Group 33131\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Rectangle 26073\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n d: \"M0 0h8v17H0z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M.5.5h7v16h-7z\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Rectangle 26074\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n d: \"M10 0h8v17h-8z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.5.5h7v16h-7z\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Rectangle 26075\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n d: \"M20 0h8v17h-8z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.5.5h7v16h-7z\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Rectangle 26228\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n d: \"M30 0h5v23h-5z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.5.5h4v22h-4z\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Rectangle 26229\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n d: \"M28 19v4H0v-4z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.5 19.5v3H.5v-3z\"\n })))));\n};\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgDrawerMedium, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/drawer_medium.8dfcc963.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nconst SvgDrawerSmall = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 28 23\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n stroke: \"#fff\",\n \"data-name\": \"Group 33132\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Rectangle 26073\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n d: \"M0 0h8v23H0z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M.5.5h7v22h-7z\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Rectangle 26074\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n d: \"M10 0h8v23h-8z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.5.5h7v22h-7z\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Rectangle 26075\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n d: \"M20 0h8v23h-8z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.5.5h7v22h-7z\"\n })))));\n};\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgDrawerSmall, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/drawer_small.005a4240.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nconst SvgDrawerWide = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 55 23\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n stroke: \"#fff\",\n \"data-name\": \"Group 33128\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Rectangle 26073\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n d: \"M0 0h8v17H0z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M.5.5h7v16h-7z\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Rectangle 26074\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n d: \"M10 0h8v17h-8z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.5.5h7v16h-7z\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Rectangle 26343\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n d: \"M20 0h8v17h-8z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.5.5h7v16h-7z\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Rectangle 26344\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n d: \"M30 0h8v17h-8z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.5.5h7v16h-7z\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Rectangle 26345\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n d: \"M40 0h8v17h-8z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.5.5h7v16h-7z\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Rectangle 26228\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n d: \"M50 0h5v23h-5z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.5.5h4v22h-4z\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Rectangle 26229\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n d: \"M48 19v4H0v-4z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M47.5 19.5v3H.5v-3z\"\n })))));\n};\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgDrawerWide, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/drawer_wide.99a8dbed.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nconst SvgDrawerWideWithGap = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 55 23\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n stroke: \"#fff\",\n \"data-name\": \"Group 33133\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Rectangle 26073\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n d: \"M0 0h8v17H0z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M.5.5h7v16h-7z\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Rectangle 26074\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n d: \"M10 0h8v17h-8z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.5.5h7v16h-7z\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Rectangle 26343\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n d: \"M20 0h8v17h-8z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.5.5h7v16h-7z\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Rectangle 26345\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n d: \"M40 0h8v17h-8z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.5.5h7v16h-7z\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Rectangle 26228\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n d: \"M50 0h5v23h-5z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.5.5h4v22h-4z\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Rectangle 26346\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n d: \"M30 0h5v23h-5z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.5.5h4v22h-4z\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Rectangle 26229\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n d: \"M28 19v4H0v-4z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.5 19.5v3H.5v-3z\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Rectangle 26347\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n d: \"M48 19v4h-8v-4z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M47.5 19.5v3h-7v-3z\"\n })))));\n};\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgDrawerWideWithGap, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/drawer_wide_with_gap.2a363020.svg\";\nexport { ForwardRef as ReactComponent };","import { ButtonReset } from '@helpers/global';\r\nimport { fluid } from '@helpers/fluid';\r\nimport { from, Device, until } from '@helpers/media';\r\nimport { Grid } from '@components/Grid/Grid.styles';\r\nimport { Variants, m } from 'framer-motion';\r\nimport brand from '@helpers/brand';\r\nimport fonts from '@helpers/fonts';\r\nimport styled, { css } from 'styled-components';\r\n\r\nconst Container = styled.div`\r\n position: relative;\r\n color: ${brand.white};\r\n width: 100%;\r\n`;\r\n\r\nconst baseItem = css`\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-start;\r\n width: 100%;\r\n height: 50px;\r\n gap: 8px;\r\n padding: 0px 10px;\r\n background-color: ${brand.grey[25]};\r\n border: 1px solid ${brand.white};\r\n color: ${brand.white};\r\n position: relative;\r\n cursor: pointer;\r\n`;\r\n\r\nconst Trigger = styled.button.attrs({ type: 'button' })`\r\n ${ButtonReset};\r\n ${baseItem};\r\n padding-left: 4px;\r\n\r\n ${() => Counter}::after {\r\n right: unset;\r\n left: 0;\r\n }\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n ${() => Counter} span {\r\n display: none;\r\n }\r\n }\r\n`;\r\n\r\nconst IconWrapper = styled.div`\r\n height: 20px;\r\n @media ${from(Device.TabletLarge)} {\r\n display: grid;\r\n place-items: center;\r\n }\r\n\r\n svg {\r\n color: currentColor;\r\n height: 100%;\r\n }\r\n`;\r\n\r\nconst Name = styled.span`\r\n ${fonts.helvetica['93-black-extended']};\r\n font-size: ${fluid(12, 16)};\r\n line-height: 1em;\r\n flex-grow: 2;\r\n text-transform: uppercase;\r\n text-align: left;\r\n`;\r\n\r\nconst ChevronWrapper = styled.div`\r\n width: 14px;\r\n justify-self: flex-end;\r\n\r\n svg {\r\n width: 100%;\r\n }\r\n`;\r\n\r\nconst optionsWrapperVariants: Variants = {\r\n hidden: {\r\n '--clipPath': 'polygon(0% 0%, 0% 0%, 0% 100%, 0% 100%)',\r\n transition: {\r\n duration: 0.35,\r\n },\r\n },\r\n visible: {\r\n '--clipPath': 'polygon(0 0, 100% 0, 100% 100%, 0% 100%)',\r\n transition: {\r\n duration: 0.35,\r\n delayChildren: 0.05,\r\n },\r\n },\r\n} as Variants;\r\n\r\nconst OptionsWrapper = styled(m.div).attrs({\r\n initial: 'hidden',\r\n animate: 'visible',\r\n exit: 'hidden',\r\n variants: optionsWrapperVariants,\r\n})`\r\n @media ${until(Device.TabletLarge)} {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100vh;\r\n z-index: 1000;\r\n overflow: hidden;\r\n clip-path: var(--clipPath);\r\n }\r\n\r\n position: absolute;\r\n left: 0;\r\n z-index: 5;\r\n top: 100%;\r\n width: 100%;\r\n height: auto;\r\n overflow: auto;\r\n background-color: ${brand.grey[15]};\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n max-height: 250px;\r\n }\r\n`;\r\n\r\nconst optionsInnerVariants: Variants = {\r\n hidden: {\r\n height: 0,\r\n transition: {\r\n duration: 0.35,\r\n },\r\n },\r\n visible: {\r\n height: 'auto',\r\n transition: {\r\n duration: 0.35,\r\n },\r\n },\r\n};\r\n\r\nconst OptionsInner = styled(m.div).attrs({ variants: optionsInnerVariants })`\r\n display: contents;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n display: flex;\r\n }\r\n`;\r\n\r\nconst slideVariants = {\r\n hidden: {\r\n '--x': '-100%',\r\n '--y': '-40px',\r\n opacity: 0,\r\n transition: {\r\n duration: 0.35,\r\n },\r\n },\r\n visible: {\r\n '--x': '0%',\r\n '--y': '0px',\r\n opacity: 1,\r\n transition: {\r\n duration: 0.35,\r\n },\r\n },\r\n};\r\n\r\nconst OptionsHeader = styled(m.div).attrs({ variants: slideVariants })`\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n text-transform: uppercase;\r\n margin-bottom: 16px;\r\n margin-top: 24px;\r\n ${Grid.defaultPadding};\r\n\r\n transform: translateX(var(--x));\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n display: none;\r\n }\r\n`;\r\n\r\nconst OptionsTitle = styled.p`\r\n ${fonts.helvetica['93-black-extended']};\r\n font-size: ${fluid(14, 18)};\r\n line-height: 1em;\r\n`;\r\n\r\nconst OptionsCloseButton = styled.button.attrs({ type: 'button' })`\r\n ${ButtonReset};\r\n\r\n display: grid;\r\n place-items: center;\r\n color: ${brand.white};\r\n width: 22px;\r\n height: 22px;\r\n\r\n svg {\r\n color: inherit;\r\n width: 100%;\r\n }\r\n`;\r\n\r\nconst OptionCollection = styled(m.ul).attrs({ variants: slideVariants })`\r\n @media ${until(Device.TabletLarge)} {\r\n ${Grid.defaultPadding};\r\n transform: translateX(var(--x));\r\n }\r\n\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n flex-grow: 2;\r\n overflow: auto;\r\n max-height: calc(100vh - 120px);\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n border: 1px solid ${brand.white};\r\n border-top: none;\r\n transform: translateY(var(--y));\r\n max-height: unset;\r\n overflow: unset;\r\n }\r\n`;\r\n\r\nconst Option = styled.li`\r\n list-style: none;\r\n ${baseItem};\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n border: none;\r\n }\r\n`;\r\n\r\nconst Counter = styled.div`\r\n --color: ${brand.orange.base};\r\n\r\n span {\r\n color: var(--color);\r\n margin-right: 4px;\r\n ${fonts.helvetica['55-roman']};\r\n font-size: 14px;\r\n line-height: 1em;\r\n }\r\n\r\n &::after {\r\n content: '';\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n height: 100%;\r\n width: 4px;\r\n background-color: var(--color);\r\n }\r\n\r\n &[data-normalised-value='0'] {\r\n --color: ${brand.green.base};\r\n }\r\n\r\n &[data-normalised-value='1'] {\r\n --color: ${brand.red.base};\r\n }\r\n`;\r\n\r\nconst DrawerSelectorStyles = {\r\n Container,\r\n Trigger,\r\n IconWrapper,\r\n Name,\r\n ChevronWrapper,\r\n OptionsWrapper,\r\n OptionsInner,\r\n OptionsHeader,\r\n OptionsTitle,\r\n OptionsCloseButton,\r\n OptionCollection,\r\n Option,\r\n Counter,\r\n};\r\n\r\nexport default DrawerSelectorStyles;\r\n","import { AnimatePresence } from 'framer-motion';\r\nimport { Drawer, DrawerLayout } from '@context/SteelStorageConfigurator.types';\r\nimport { ReactComponent as ChevronIcon } from '@img/icons/icon-chevron-down.svg';\r\nimport { ReactComponent as CrossIcon } from '@img/icons/icon-x.svg';\r\nimport { ReactComponent as DrawerMedium } from '@img/icons/steel-storage/configurator/drawer_medium.svg';\r\nimport { ReactComponent as DrawerSmall } from '@img/icons/steel-storage/configurator/drawer_small.svg';\r\nimport { ReactComponent as DrawerWide } from '@img/icons/steel-storage/configurator/drawer_wide.svg';\r\nimport { ReactComponent as DrawerWideWithGap } from '@img/icons/steel-storage/configurator/drawer_wide_with_gap.svg';\r\nimport * as React from 'react';\r\nimport S from './DrawerSelector.styles';\r\n\r\nexport type DrawerSelectorProps = {\r\n activeDrawerId: string;\r\n drawers: Drawer[];\r\n onChange: (id: string) => void;\r\n namePrefix: string;\r\n mobileTitle: string;\r\n};\r\n\r\n// TODO: Add active item indicator\r\n// TODO: Add hover effect to options\r\n// TODO: Add OptionsFooter and 'customise Drawer' button on mobile\r\n\r\nconst DrawerSelector: React.FC = props => {\r\n const [isOpen, setIsOpen] = React.useState(false);\r\n\r\n const activeDrawerIndex = React.useMemo(() => {\r\n const _index = props.drawers.findIndex(drawer => drawer.id === props.activeDrawerId);\r\n\r\n return Math.max(0, _index);\r\n }, [props.activeDrawerId]);\r\n\r\n const activeItem = props.drawers[activeDrawerIndex];\r\n\r\n return (\r\n \r\n setIsOpen(x => !x)}>\r\n \r\n {renderIcon(activeItem.layout)}\r\n \r\n {props.namePrefix} {activeDrawerIndex + 1}\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n {isOpen && (\r\n \r\n \r\n \r\n {props.mobileTitle}\r\n setIsOpen(false)}>\r\n \r\n \r\n \r\n\r\n \r\n {props.drawers.map((drawer, index) => (\r\n {\r\n props.onChange(drawer.id);\r\n setIsOpen(false);\r\n }}\r\n >\r\n {renderIcon(drawer.layout)}\r\n \r\n {props.namePrefix} {index + 1}\r\n \r\n \r\n \r\n {drawer.totalSlotsCount.used}/{drawer.totalSlotsCount.max}\r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nconst renderIcon = (icon: DrawerLayout): React.ReactNode => {\r\n switch (icon) {\r\n case DrawerLayout.SMALL:\r\n return ;\r\n\r\n case DrawerLayout.MEDIUM:\r\n return ;\r\n\r\n case DrawerLayout.WIDE:\r\n return ;\r\n\r\n case DrawerLayout.WIDE_WITH_GAP:\r\n return ;\r\n\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\nexport default DrawerSelector;\r\n","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nconst SvgX = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"icon\",\n viewBox: \"0 0 18 18\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"e921\",\n d: \"M18,1.43,16.57,0,9,7.57,1.43,0,0,1.43,7.57,9,0,16.57,1.43,18,9,10.43,16.57,18,18,16.57,10.43,9Z\",\n fill: \"currentcolor\"\n })));\n};\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgX, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/x.384ec99a.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nconst SvgIconSearch = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 31.875 31.875\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M11.878,20.082a7.911,7.911,0,0,0,5.811-2.393,7.911,7.911,0,0,0,2.393-5.811,7.911,7.911,0,0,0-2.393-5.811,7.911,7.911,0,0,0-5.811-2.393A7.911,7.911,0,0,0,6.067,6.067a7.911,7.911,0,0,0-2.393,5.811,7.911,7.911,0,0,0,2.393,5.811A7.911,7.911,0,0,0,11.878,20.082Zm10.938,0,9.058,9.058L29.14,31.875l-9.058-9.058V21.364l-.513-.513a11.348,11.348,0,0,1-7.691,2.82,11.531,11.531,0,0,1-8.417-3.418A11.317,11.317,0,0,1,0,11.878,11.458,11.458,0,0,1,3.461,3.461,11.458,11.458,0,0,1,11.878,0a11.317,11.317,0,0,1,8.375,3.461,11.531,11.531,0,0,1,3.418,8.417,11.348,11.348,0,0,1-2.82,7.691l.513.513Z\"\n })));\n};\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgIconSearch, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/icon-search.2147e470.svg\";\nexport { ForwardRef as ReactComponent };","import { ButtonReset } from '@helpers/global';\r\nimport animation from '@helpers/animation';\r\nimport styled from 'styled-components';\r\nimport brand from '@helpers/brand';\r\nimport fonts from '@helpers/fonts';\r\n\r\nconst Container = styled.div`\r\n display: flex;\r\n align-items: center;\r\n padding: 0px 12px;\r\n border: 1px solid ${brand.white};\r\n background-color: ${brand.grey[25]};\r\n color: ${brand.white};\r\n ${fonts.helvetica['55-roman']};\r\n font-size: 14px;\r\n line-height: 1em;\r\n width: 100%;\r\n height: 50px;\r\n`;\r\n\r\nconst Input = styled.input`\r\n flex-grow: 2;\r\n padding-right: 8px;\r\n border: 0;\r\n background-color: transparent;\r\n color: ${brand.white};\r\n font: inherit;\r\n height: 100%;\r\n\r\n &::placeholder {\r\n color: ${brand.white};\r\n opacity: 0.9;\r\n }\r\n`;\r\n\r\nconst BaseButton = styled.button.attrs({ type: 'button' })`\r\n ${ButtonReset};\r\n width: 1em;\r\n height: 100%;\r\n flex-shrink: 0;\r\n flex-grow: 0;\r\n display: grid;\r\n place-items: center;\r\n\r\n svg {\r\n width: 100%;\r\n color: ${brand.white};\r\n }\r\n`;\r\n\r\nconst SearchButton = styled(BaseButton)`\r\n margin-left: 12px;\r\n font-size: 1.4em;\r\n`;\r\n\r\nconst ClearButton = styled(BaseButton)`\r\n font-size: 0.8em;\r\n transition: opacity 0.2s ${animation.easeInOutCubic};\r\n\r\n &[data-hidden='true'] {\r\n opacity: 0;\r\n pointer-events: none;\r\n }\r\n`;\r\n\r\nconst InsertSearchStyles = {\r\n Container,\r\n Input,\r\n SearchButton,\r\n ClearButton,\r\n};\r\n\r\nexport default InsertSearchStyles;\r\n","import { ReactComponent as IconClose } from '@img/icons/x.svg';\r\nimport { ReactComponent as IconSearch } from '@img/icons/icon-search.svg';\r\nimport * as React from 'react';\r\nimport S from './InsertSearch.styles';\r\n\r\nexport type InsertSearchProps = {\r\n placeholderText: string;\r\n onSearch: (searchTerm: string) => void;\r\n onClear: () => void;\r\n searchHelperText?: string;\r\n clearHelperText?: string;\r\n};\r\n\r\nconst InsertSearch: React.FC = props => {\r\n const [searchTerm, setSearchTerm] = React.useState('');\r\n\r\n return (\r\n \r\n setSearchTerm(e.target.value)}\r\n onKeyDown={e => {\r\n if (e.key === 'Enter') {\r\n props.onSearch(searchTerm);\r\n }\r\n }}\r\n />\r\n\r\n {\r\n props.onClear();\r\n setSearchTerm('');\r\n }}\r\n >\r\n \r\n \r\n\r\n props.onSearch(searchTerm)} title={props.searchHelperText}>\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default InsertSearch;\r\n","import { ButtonStyles } from '@components/Button/Button.styles';\r\nimport { from, Device, until } from '@helpers/media';\r\nimport brand from '@helpers/brand';\r\nimport fonts from '@helpers/fonts';\r\nimport styled from 'styled-components';\r\nimport { m } from 'framer-motion';\r\nimport { verticalFadeIn } from '@helpers/variants';\r\nimport { fluid } from '@helpers/fluid';\r\n\r\nconst Container = styled.div`\r\n display: flex;\r\n gap: 8px;\r\n background-color: ${brand.white};\r\n padding: ${fluid(12, 24)} 12px 16px;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n padding: 30px 12px 14px;\r\n flex-direction: column;\r\n }\r\n`;\r\n\r\nconst MediaContent = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n position: relative;\r\n z-index: 1;\r\n }\r\n`;\r\n\r\nconst TagsWrapper = styled.div`\r\n @media ${until(Device.TabletLarge)} {\r\n order: 2;\r\n flex-grow: 2;\r\n align-items: flex-end;\r\n }\r\n\r\n display: flex;\r\n gap: 10px;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n position: absolute;\r\n left: 0;\r\n top: -16px;\r\n z-index: 2;\r\n }\r\n`;\r\n\r\nconst FilterTag = styled.div`\r\n border: 1px solid ${brand.nearlyBlack};\r\n display: grid;\r\n place-items: center;\r\n padding: 4px;\r\n width: 30px;\r\n height: 30px;\r\n background-color: ${brand.white};\r\n\r\n color: ${brand.nearlyBlack};\r\n ${fonts.helvetica['55-roman']};\r\n font-size: 12px;\r\n`;\r\n\r\nconst QuantityTag = styled.div`\r\n display: grid;\r\n place-items: center;\r\n padding: 4px;\r\n width: 30px;\r\n height: 30px;\r\n background-color: ${brand.red.dark};\r\n\r\n color: ${brand.white};\r\n ${fonts.helvetica['55-roman']};\r\n font-size: 12px;\r\n`;\r\n\r\nconst ImageWrapper = styled.div`\r\n width: ${fluid(85, 115)};\r\n aspect-ratio: 1;\r\n position: relative;\r\n z-index: 1;\r\n margin: 0 auto;\r\n\r\n img {\r\n position: absolute;\r\n inset: 0;\r\n object-fit: contain;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n width: 100%;\r\n max-width: 150px;\r\n }\r\n`;\r\n\r\nconst TextContent = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n flex-grow: 1;\r\n`;\r\n\r\nconst Name = styled.strong`\r\n display: block;\r\n ${fonts.helvetica['73-bold-extended']};\r\n font-size: 13px;\r\n line-height: 1.2em;\r\n text-transform: uppercase;\r\n color: ${brand.nearlyBlack};\r\n flex-grow: 2;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n text-align: center;\r\n }\r\n`;\r\n\r\nconst ModelCode = styled.span`\r\n display: block;\r\n ${fonts.helvetica['93-black-extended']};\r\n text-transform: uppercase;\r\n font-size: 12px;\r\n line-height: 1em;\r\n color: ${brand.grey[70]};\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n text-align: center;\r\n }\r\n`;\r\n\r\nconst ButtonsContainer = styled(m.div).attrs({\r\n initial: 'hidden',\r\n animate: 'visible',\r\n exit: 'hidden',\r\n variants: verticalFadeIn(0, 0.3),\r\n})`\r\n display: flex;\r\n gap: 6px;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n justify-content: center;\r\n }\r\n`;\r\n\r\nconst ButtonWrapper = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 100%;\r\n\r\n ${ButtonStyles.ButtonElement} {\r\n width: 100%;\r\n }\r\n`;\r\n\r\nconst QuantityCounter = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n padding: 4px 8px;\r\n height: 32px;\r\n min-width: 32px;\r\n border: 1px solid ${brand.black};\r\n\r\n span {\r\n text-align: center;\r\n ${fonts.helvetica['83-heavy-extended']};\r\n color: ${brand.black};\r\n font-size: 12px;\r\n line-height: 1em;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n height: 40px;\r\n min-width: 40px;\r\n\r\n span {\r\n font-size: 14px;\r\n }\r\n }\r\n`;\r\n\r\nconst FullWidthButtonWrapper = styled(m.div).attrs({\r\n initial: 'hidden',\r\n animate: 'visible',\r\n exit: 'hidden',\r\n variants: verticalFadeIn(0, 0.3),\r\n})`\r\n width: 100%;\r\n\r\n ${ButtonStyles.ButtonElement} {\r\n width: 100%;\r\n }\r\n`;\r\n\r\nconst ProductLink = styled.div`\r\n display: block;\r\n margin-top: 8px;\r\n ${fonts.helvetica['55-roman']};\r\n font-size: 12px;\r\n color: ${brand.nearlyBlack};\r\n text-decoration: underline;\r\n text-align: center;\r\n cursor: pointer;\r\n`;\r\n\r\nconst ItemCardStyles = {\r\n Container,\r\n MediaContent,\r\n TagsWrapper,\r\n FilterTag,\r\n QuantityTag,\r\n ImageWrapper,\r\n TextContent,\r\n Name,\r\n ModelCode,\r\n ButtonsContainer,\r\n ButtonWrapper,\r\n FullWidthButtonWrapper,\r\n ProductLink,\r\n QuantityCounter,\r\n};\r\n\r\nexport default ItemCardStyles;\r\n","import { css, FlattenSimpleInterpolation } from 'styled-components';\r\n/**\r\n * Applies the provided @param styles to both &:hover and &:focus-visible.\r\n * Hover styles are conditionally applied via a media query that determines whether or not the device supports such action.\r\n * This is done so touch based devices don't retain the hover styles upon interaction\r\n *\r\n * @param styles Css styles to be applied\r\n * @returns\r\n */\r\nexport const accessibleHover = (styles: FlattenSimpleInterpolation): FlattenSimpleInterpolation => css`\r\n &:focus-visible {\r\n ${styles};\r\n }\r\n\r\n @media (hover: hover) or (pointer: fine) {\r\n &:hover {\r\n ${styles}\r\n }\r\n }\r\n`;\r\n","import { accessibleHover } from '@helpers/accessibleHover';\r\nimport { ButtonReset } from '@helpers/global';\r\nimport { Device, until } from '@helpers/media';\r\nimport { IconOnlyButtonProps } from './IconOnlyButton';\r\nimport animation from '@helpers/animation';\r\nimport brand from '@helpers/brand';\r\nimport styled, { css } from 'styled-components';\r\n\r\nconst Button = styled.button.attrs({ type: 'button' })>`\r\n ${ButtonReset};\r\n\r\n --main-color: ${brand.red.base};\r\n --hover-color: ${brand.red.dark};\r\n --accent-color: ${brand.white};\r\n\r\n ${({ theme }) => {\r\n switch (theme) {\r\n case 'black':\r\n return css`\r\n --main-color: ${brand.black};\r\n --accent-color: ${brand.white};\r\n --hover-color: ${brand.grey[20]};\r\n `;\r\n\r\n case 'red':\r\n default:\r\n return css`\r\n --main-color: ${brand.red.base};\r\n --accent-color: ${brand.white};\r\n --hover-color: ${brand.red.dark};\r\n `;\r\n }\r\n }}\r\n\r\n ${({ size }) => {\r\n switch (size) {\r\n case 'small':\r\n return css`\r\n padding: 4px 10px;\r\n min-width: 32px;\r\n min-height: 32px;\r\n\r\n ${() => IconWrapper} {\r\n width: 12px;\r\n }\r\n `;\r\n\r\n case 'small-mobile':\r\n return css`\r\n @media ${until(Device.TabletLarge)} {\r\n padding: 4px 10px;\r\n min-width: 32px;\r\n min-height: 32px;\r\n\r\n ${() => IconWrapper} {\r\n width: 12px;\r\n }\r\n }\r\n\r\n min-width: 40px;\r\n min-height: 40px;\r\n padding: 6px 14px;\r\n `;\r\n\r\n case 'normal':\r\n default:\r\n return css`\r\n min-width: 40px;\r\n min-height: 40px;\r\n padding: 6px 14px;\r\n `;\r\n }\r\n }}\r\n\r\n background-color: var(--main-color);\r\n border-radius: 3px;\r\n transition: background-color 0.375s ${animation.easeInOutCubic};\r\n cursor: pointer;\r\n display: grid;\r\n place-items: center;\r\n\r\n &:disabled {\r\n opacity: 0.5;\r\n }\r\n\r\n ${accessibleHover(css`\r\n background-color: var(--hover-color);\r\n `)}\r\n`;\r\n\r\nconst IconWrapper = styled.i`\r\n width: 14px;\r\n display: grid;\r\n place-items: center;\r\n\r\n svg {\r\n width: 100%;\r\n color: var(--accent-color);\r\n fill: var(--accent-color);\r\n }\r\n`;\r\n\r\nconst IconOnlyButtonStyles = {\r\n Button,\r\n IconWrapper,\r\n};\r\n\r\nexport default IconOnlyButtonStyles;\r\n","var _line;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nconst SvgIconMinus = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20 3\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _line || (_line = /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_1083\",\n \"data-name\": \"Line 1083\",\n y2: 20,\n transform: \"translate(20 1.5) rotate(90)\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 3\n })));\n};\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgIconMinus, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/icon-minus.d86aeb97.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nconst SvgPlus = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 18 18\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"e069\",\n d: \"M18,10.268H10.268V18H7.732V10.268H0V7.732H7.732V0h2.537V7.732H18Z\",\n fill: \"currentColor\"\n })));\n};\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgPlus, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/plus.a7e8da26.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from 'react';\r\nimport S from './IconOnlyButton.styles';\r\nimport { ButtonIconT } from '../Button';\r\n\r\nimport { ReactComponent as Icon_Minus } from '@img/icons/icon-minus.svg';\r\nimport { ReactComponent as Icon_Plus } from '@img/icons/plus.svg';\r\n\r\nexport type IconOnlyButtonProps = {\r\n icon: ButtonIconT;\r\n onClick: () => void;\r\n theme?: 'red' | 'black';\r\n size?: 'normal' | 'small' | 'small-mobile';\r\n disabled?: boolean;\r\n helperText?: string;\r\n};\r\n\r\nconst IconOnlyButton: React.FC = props => {\r\n return (\r\n \r\n {renderIcon(props.icon)}\r\n \r\n );\r\n};\r\n\r\nconst renderIcon = (icon: ButtonIconT): React.ReactNode => {\r\n switch (icon) {\r\n case 'minus':\r\n return ;\r\n\r\n case 'plus':\r\n return ;\r\n\r\n case 'none':\r\n return null;\r\n }\r\n};\r\n\r\nexport default IconOnlyButton;\r\n","import { AnimatePresence } from 'framer-motion';\r\nimport { Device, from } from '@helpers/media';\r\nimport { FilterOption, SSCInsertProduct } from '@context/SteelStorageConfigurator.types';\r\nimport * as React from 'react';\r\nimport Image from '@components/Image/Image';\r\nimport S from './ItemCard.styles';\r\nimport Button from '@components/Button/Button';\r\nimport IconOnlyButton from '@components/Button/IconOnlyButton/IconOnlyButton';\r\nimport { useSteelStorageConfiguratorContext } from '@context/SteelStorageConfigurator.context';\r\nimport { ActionType } from '@context/SteelStorageConfigurator.actions';\r\n\r\nexport type ItemCardProps = {\r\n product: SSCInsertProduct;\r\n translations: Record;\r\n onAddToDrawer: (product: SSCInsertProduct) => void;\r\n onRemoveFromDrawer: (product: SSCInsertProduct) => void;\r\n isAddedToDrawer?: boolean;\r\n quantity?: number;\r\n allFilters: FilterOption[];\r\n hideButtons?: boolean;\r\n};\r\n\r\nconst ItemCard: React.FC = props => {\r\n const { dispatch } = useSteelStorageConfiguratorContext();\r\n const sizeFilter = React.useMemo(() => props.allFilters.find(x => x.id === props.product.size), [props.allFilters]);\r\n\r\n return (\r\n \r\n \r\n {sizeFilter ? {sizeFilter.name} : null}\r\n\r\n \r\n {props.product.name}\r\n \r\n \r\n\r\n \r\n {props.product.name}\r\n {props.product.modelCode}\r\n\r\n {props.hideButtons ? null : (\r\n <>\r\n \r\n {props.isAddedToDrawer ? (\r\n \r\n \r\n props.onRemoveFromDrawer(props.product)}\r\n theme=\"black\"\r\n icon=\"minus\"\r\n size=\"small-mobile\"\r\n helperText={props.translations['custom.ssc.removeFromDrawer']}\r\n />\r\n \r\n\r\n \r\n {props.quantity ?? 0}\r\n \r\n\r\n \r\n props.onAddToDrawer(props.product)}\r\n theme=\"red\"\r\n icon=\"plus\"\r\n size=\"small-mobile\"\r\n helperText={props.translations['custom.ssc.addToDrawer']}\r\n />\r\n \r\n \r\n ) : (\r\n \r\n props.onAddToDrawer(props.product)}\r\n theme=\"red\"\r\n size=\"small\"\r\n />\r\n \r\n )}\r\n \r\n\r\n \r\n dispatch({\r\n type: ActionType.SET_POPUP_DATA,\r\n data: { ...props.product.popupData, model: props.product },\r\n })\r\n }\r\n >\r\n {props.translations['custom.ssc.learnMore']}\r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ItemCard;\r\n","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nconst SvgTick = _ref => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 10.461 8.047\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"checked\",\n d: \"M.121,7.426a.389.389,0,0,1,0-.563L.684,6.3a.389.389,0,0,1,.563,0l.04.04L3.5,8.714a.194.194,0,0,0,.282,0L9.174,3.121h.04a.389.389,0,0,1,.563,0l.563.563a.389.389,0,0,1,0,.563h0L3.9,10.927a.389.389,0,0,1-.563,0L.2,7.547l-.08-.121Z\",\n transform: \"translate(0 -3)\",\n fill: \"currentColor\"\n })));\n};\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgTick, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/tick.a5d215fd.svg\";\nexport { ForwardRef as ReactComponent };","import { ButtonReset } from '@helpers/global';\r\nimport { fluid } from '@helpers/fluid';\r\nimport { Grid } from '@components/Grid/Grid.styles';\r\nimport { Variants, m } from 'framer-motion';\r\nimport brand from '@helpers/brand';\r\nimport fonts from '@helpers/fonts';\r\nimport styled, { css } from 'styled-components';\r\n\r\nconst baseItem = css`\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-start;\r\n width: 100%;\r\n height: 50px;\r\n gap: 8px;\r\n padding: 0px 10px;\r\n background-color: ${brand.grey[25]};\r\n border: 1px solid ${brand.white};\r\n color: ${brand.white};\r\n position: relative;\r\n cursor: pointer;\r\n`;\r\n\r\nconst Trigger = styled.button.attrs({ type: 'button' })`\r\n ${ButtonReset};\r\n ${baseItem};\r\n`;\r\n\r\nconst Name = styled.div`\r\n ${fonts.helvetica['93-black-extended']};\r\n font-size: ${fluid(12, 16)};\r\n line-height: 1em;\r\n flex-grow: 2;\r\n text-transform: uppercase;\r\n text-align: left;\r\n`;\r\n\r\nconst ChevronWrapper = styled.div`\r\n width: 14px;\r\n margin-left: 12px;\r\n justify-self: flex-end;\r\n\r\n svg {\r\n width: 100%;\r\n }\r\n`;\r\n\r\nconst optionsWrapperVariants: Variants = {\r\n hidden: {\r\n clipPath: 'polygon(0% 0%, 0% 0%, 0% 100%, 0% 100%)',\r\n transition: {\r\n duration: 0.35,\r\n },\r\n },\r\n visible: {\r\n clipPath: 'polygon(0 0, 100% 0, 100% 100%, 0% 100%)',\r\n transition: {\r\n duration: 0.35,\r\n delayChildren: 0.05,\r\n },\r\n },\r\n} as Variants;\r\n\r\nconst OptionsWrapper = styled(m.div).attrs({\r\n initial: 'hidden',\r\n animate: 'visible',\r\n exit: 'hidden',\r\n variants: optionsWrapperVariants,\r\n})`\r\n position: fixed;\r\n left: 0;\r\n width: 100%;\r\n z-index: 1000;\r\n background-color: ${brand.grey[15]};\r\n ${Grid.defaultPadding};\r\n`;\r\n\r\nconst optionsInnerVariants = {\r\n hidden: {\r\n opacity: 0,\r\n x: '-100%',\r\n transition: {\r\n duration: 0.3,\r\n },\r\n },\r\n visible: {\r\n opacity: 1,\r\n x: 0,\r\n transition: {\r\n duration: 0.35,\r\n },\r\n },\r\n};\r\n\r\nconst OptionsInner = styled(m.div).attrs({ variants: optionsInnerVariants })`\r\n padding: 24px 0;\r\n display: flex;\r\n flex-direction: column;\r\n height: 100%;\r\n`;\r\n\r\nconst OptionsHeader = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n text-transform: uppercase;\r\n margin-bottom: 16px;\r\n color: ${brand.white};\r\n`;\r\n\r\nconst OptionsTitle = styled.p`\r\n ${fonts.helvetica['93-black-extended']};\r\n font-size: ${fluid(14, 18)};\r\n line-height: 1em;\r\n`;\r\n\r\nconst OptionsCloseButton = styled.button.attrs({ type: 'button' })`\r\n ${ButtonReset};\r\n\r\n display: grid;\r\n place-items: center;\r\n color: inherit;\r\n width: 22px;\r\n height: 22px;\r\n\r\n svg {\r\n color: inherit;\r\n width: 100%;\r\n }\r\n`;\r\n\r\nconst OptionsCollection = styled.ul`\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n flex-grow: 2;\r\n overflow: auto;\r\n max-height: calc(100vh - 120px);\r\n`;\r\n\r\nconst Option = styled.li`\r\n list-style: none;\r\n ${baseItem};\r\n`;\r\n\r\nconst OptionIconWrapper = styled.i`\r\n width: 18px;\r\n height: 18px;\r\n background-color: ${brand.white};\r\n border-radius: 50%;\r\n padding: 4px;\r\n display: grid;\r\n place-items: center;\r\n position: absolute;\r\n right: 10px;\r\n\r\n svg {\r\n width: 100%;\r\n color: ${brand.grey[25]};\r\n }\r\n`;\r\n\r\nconst OptionsFooter = styled.div`\r\n display: flex;\r\n align-items: center;\r\n gap: 14px;\r\n`;\r\n\r\nconst MobileFilterSelectorStyles = {\r\n Trigger,\r\n Name,\r\n ChevronWrapper,\r\n OptionsWrapper,\r\n OptionsInner,\r\n OptionsHeader,\r\n OptionsTitle,\r\n OptionsCloseButton,\r\n OptionsCollection,\r\n Option,\r\n OptionIconWrapper,\r\n OptionsFooter,\r\n};\r\n\r\nexport default MobileFilterSelectorStyles;\r\n","import { AnimatePresence } from 'framer-motion';\r\nimport { FilterOption, FoamInsertSize } from '@context/SteelStorageConfigurator.types';\r\nimport { ReactComponent as ChevronIcon } from '@img/icons/icon-chevron-down.svg';\r\nimport { ReactComponent as CrossIcon } from '@img/icons/icon-x.svg';\r\nimport { ReactComponent as TickIcon } from '@img/icons/tick.svg';\r\nimport * as React from 'react';\r\nimport Button from '@components/Button/Button';\r\nimport S from './MobileFilterSelector.styles';\r\nimport { useLockBodyScroll } from 'react-use';\r\n\r\nexport type MobileFilterSelectorProps = {\r\n filterOptions: FilterOption[];\r\n updateFilters: (newFilters: FilterOption[]) => void;\r\n title: string;\r\n clearFiltersText: string;\r\n updateResultsText: string;\r\n availableFilters: FoamInsertSize[] | undefined;\r\n};\r\n\r\nconst MobileFilterSelector: React.FC = props => {\r\n const [isOpen, setIsOpen] = React.useState(false);\r\n useLockBodyScroll(isOpen);\r\n const [filterOptions, setFilterOptions] = React.useState(props.filterOptions);\r\n\r\n const handleChange = (id: string): void => {\r\n const _filterOptions = [...filterOptions];\r\n const optionIndex = _filterOptions.findIndex(x => x.id === id);\r\n\r\n if (optionIndex === -1) {\r\n return;\r\n }\r\n\r\n _filterOptions[optionIndex].value = !_filterOptions[optionIndex].value;\r\n\r\n return setFilterOptions(_filterOptions);\r\n };\r\n\r\n const handleClear = (): void => {\r\n setFilterOptions(\r\n filterOptions.map(option => ({\r\n ...option,\r\n value: false,\r\n })),\r\n );\r\n\r\n return;\r\n };\r\n\r\n const handleClose = (): void => {\r\n props.updateFilters(filterOptions);\r\n\r\n return setIsOpen(false);\r\n };\r\n\r\n if (!props.availableFilters) {\r\n return <>;\r\n }\r\n\r\n return (\r\n <>\r\n setIsOpen(true)}>\r\n {props.title}\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n {isOpen && (\r\n \r\n \r\n \r\n {props.title}\r\n \r\n \r\n \r\n \r\n\r\n \r\n {filterOptions\r\n .filter(x => (props.availableFilters as FoamInsertSize[]).indexOf(x.id) > -1)\r\n .map(option => (\r\n {\r\n handleChange(option.id);\r\n }}\r\n >\r\n {option.name}\r\n\r\n {option.value && (\r\n \r\n \r\n \r\n )}\r\n \r\n ))}\r\n \r\n\r\n \r\n