{"version":3,"file":"143.chunk.js","mappings":"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","sources":["webpack://oritoparea/./src/containers/ErrorBoundary.tsx","webpack://oritoparea/./src/containers/I18nContainer.tsx","webpack://oritoparea/./src/containers/LazyTopArea.tsx","webpack://oritoparea/./src/containers/TopAreaApp.tsx","webpack://oritoparea/./src/utils/customerTokenMismatchCheck.ts","webpack://oritoparea/./src/App.css?019a","webpack://oritoparea/./src/AppRender.tsx","webpack://oritoparea/./src/utils/extractTokenFromUrl.ts","webpack://oritoparea/./src/components/BurgerMenu/Catalogues/CatalogueImage.tsx","webpack://oritoparea/./src/components/BurgerMenu/Catalogues/Catalogues.tsx","webpack://oritoparea/./src/components/BurgerMenu/BurgerMenuContent.tsx","webpack://oritoparea/./src/components/BurgerMenu/BurgerMenuLinks/BurgerMenuLinks.tsx","webpack://oritoparea/./src/components/Skeleton/TopAreaSkeleton.tsx","webpack://oritoparea/./src/components/Skeleton/Mobile/SkeletonCatalogueMobile.tsx","webpack://oritoparea/./src/components/Skeleton/Mobile/SkeletonMainCategoryMobile.tsx","webpack://oritoparea/./src/components/Skeleton/Mobile/SkeletonSubCategoryMobile.tsx","webpack://oritoparea/./src/components/Skeleton/Desktop/SkeletonCatalogueDesktop.tsx","webpack://oritoparea/./src/components/Skeleton/Desktop/SkeletonMainCategoryDesktop.tsx","webpack://oritoparea/./src/components/Skeleton/Desktop/SkeletonSubCategoryDesktop.tsx","webpack://oritoparea/./src/components/TopAreaBlock.tsx","webpack://oritoparea/./src/constants/index.ts","webpack://oritoparea/./src/components/About/AboutTileImage.tsx","webpack://oritoparea/./src/components/About/AboutMenu.tsx","webpack://oritoparea/./src/components/Account/AccountFlyout.tsx","webpack://oritoparea/./src/components/BurgerMenu/BurgerMenuTab.tsx","webpack://oritoparea/./src/components/BurgerMenu/BurgerMenu.tsx","webpack://oritoparea/./src/components/Join/JoinTileImage.tsx","webpack://oritoparea/./src/components/Join/JoinMenu.tsx","webpack://oritoparea/./src/utils/createMarginWithImportant.ts","webpack://oritoparea/./src/components/About/AboutIcon.tsx","webpack://oritoparea/./src/components/BurgerMenu/BurgerMenuIcon.tsx","webpack://oritoparea/./src/components/BurgerMenu/BurgerMenuToggle.tsx","webpack://oritoparea/./src/components/Join/JoinIcon.tsx","webpack://oritoparea/./src/components/SearchIcon.tsx","webpack://oritoparea/./src/components/UserIcon.tsx","webpack://oritoparea/./src/components/VipOrder/VipOrderConsultant.tsx","webpack://oritoparea/./src/components/VipOrder/VipOrderForm.tsx","webpack://oritoparea/./src/components/VipOrder/VipOrder.tsx","webpack://oritoparea/./src/components/VipOrder/VipOrderIcon.tsx","webpack://oritoparea/./src/components/LeftActionsSection.tsx","webpack://oritoparea/./src/components/OriflameLogo.tsx","webpack://oritoparea/./src/components/FavoritesHeartIcon.tsx","webpack://oritoparea/./src/components/NotificationBellIcon.tsx","webpack://oritoparea/./src/components/PbsIcon.tsx","webpack://oritoparea/./src/components/ShoppingBagIcon/ShoppingBagCounter.tsx","webpack://oritoparea/./src/components/ShoppingBagIcon/ShoppingBagIcon.tsx","webpack://oritoparea/./src/components/SearchInput.tsx","webpack://oritoparea/./src/components/RightActionsSection.tsx","webpack://oritoparea/./src/components/common/ProductImage.tsx","webpack://oritoparea/./src/components/common/ProductTile.tsx","webpack://oritoparea/./src/components/SearchResults/PopularProducts.tsx","webpack://oritoparea/./src/components/SearchResults/PopularSearchQueries.tsx","webpack://oritoparea/./src/components/SearchResults/SearchResults.tsx","webpack://oritoparea/./src/containers/TopArea.tsx","webpack://oritoparea/./src/contexts/ApiProviderContext.tsx","webpack://oritoparea/./src/contexts/AppConfigurationContext.tsx","webpack://oritoparea/./src/contexts/CataloguesContext.tsx","webpack://oritoparea/./src/contexts/NavigationContext.tsx","webpack://oritoparea/./src/hooks/useFetchNavigationItems.ts","webpack://oritoparea/./src/contexts/NotificationsContext.tsx","webpack://oritoparea/./src/contexts/WindowDimensionsContext.tsx","webpack://oritoparea/./src/helpers/analytics.ts","webpack://oritoparea/./src/helpers/axios.ts","webpack://oritoparea/./src/helpers/boldMatchedText.tsx","webpack://oritoparea/./src/helpers/keyboardEvents.ts","webpack://oritoparea/./src/helpers/vipOrderLinks.ts","webpack://oritoparea/./src/helpers/toggleMenu.ts","webpack://oritoparea/./src/hooks/useHover.ts","webpack://oritoparea/./src/hooks/useMenuToggle.ts","webpack://oritoparea/./src/hooks/useClickSignInButtonSupportCenter.ts","webpack://oritoparea/./src/hooks/useTranslationByKey.ts","webpack://oritoparea/./src/hooks/useIsMarketCN.ts","webpack://oritoparea/./src/hooks/useMobileWidth.ts","webpack://oritoparea/./src/hooks/useWindowSize.ts","webpack://oritoparea/./src/models/BurgerMenuTabNames.ts","webpack://oritoparea/./src/models/TranslationKeys.ts","webpack://oritoparea/./src/models/CombinedTranslationKeys.ts","webpack://oritoparea/./src/models/Categories.ts","webpack://oritoparea/./src/models/FavoritesLink.ts","webpack://oritoparea/./src/models/JoinLinks.ts","webpack://oritoparea/./src/models/NavigationTypes.ts","webpack://oritoparea/./src/models/OurStoryLinks.ts","webpack://oritoparea/./src/models/SocialMediaPlatforms.ts","webpack://oritoparea/./src/models/SpecialLinks.ts","webpack://oritoparea/./src/utils/formatDate.ts","webpack://oritoparea/./src/utils/setTopNavHeight.ts","webpack://oritoparea/./src/utils/getToken.ts","webpack://oritoparea/./src/utils/loadAppConfiguration.ts","webpack://oritoparea/./src/utils/log.ts","webpack://oritoparea/./src/utils/sendSignalToFusion.ts","webpack://oritoparea/./src/App.css"],"sourcesContent":["import React from 'react';\n\ninterface ErrorBoundaryProps {\n children: JSX.Element;\n}\n\ninterface ErrorBoundaryState {\n error?: Error;\n}\n\nexport class ErrorBoundary extends React.Component {\n override readonly state: ErrorBoundaryState = {};\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { error };\n }\n\n override render(): JSX.Element {\n const { error }: ErrorBoundaryState = this.state;\n\n if (error) {\n return (\n
\n
{error.message}
\n
\n );\n }\n\n const { children }: ErrorBoundaryProps = this.props;\n\n return children;\n }\n}\n","/* eslint-disable import/extensions -- no worries here */\nimport { fetchTranslations } from '@ori/i18n';\nimport i18next from 'i18next';\nimport type { FC, PropsWithChildren } from 'react';\nimport { useEffect, useMemo } from 'react';\nimport { I18nextProvider, initReactI18next } from 'react-i18next';\nimport useSWRImmutable from 'swr/immutable';\n\nimport type { CombinedTranslations } from '../models';\nimport { CombinedTranslationKeys } from '../models';\nimport { useAppConfigurationContext } from '~/contexts/AppConfigurationContext';\nimport { log } from '~/utils';\n\nconst DEFAULT_LANGUAGE_KEY = 'default';\nexport const DEFAULT_NAMESPACE = 'translations';\n\nconst i18nextInstance = i18next\n .createInstance({\n keySeparator: '::',\n lng: DEFAULT_LANGUAGE_KEY,\n fallbackLng: DEFAULT_LANGUAGE_KEY,\n defaultNS: DEFAULT_NAMESPACE,\n resources: {},\n\n interpolation: {\n escapeValue: false, // react already safes from xss\n prefix: '{',\n suffix: '}',\n },\n\n react: {\n bindI18n: 'added removed languageChanged',\n bindI18nStore: 'added removed',\n },\n })\n .use(initReactI18next);\n\ni18nextInstance.init();\n\nexport const I18nContainer: FC<\n PropsWithChildren<{ preloadedTranslations?: CombinedTranslations }>\n> = ({ children, preloadedTranslations }) => {\n const { currentLanguage = DEFAULT_LANGUAGE_KEY, onlineBaseUrl } = useAppConfigurationContext();\n\n if (!onlineBaseUrl && typeof window === 'undefined' && !preloadedTranslations) {\n log.warn('cannot download translations on server if onlineBaseUrl is not provided');\n }\n\n const payload = useMemo(\n () =>\n !preloadedTranslations && (!!onlineBaseUrl || typeof window !== 'undefined')\n ? {\n baseUrl: onlineBaseUrl ?? window.location.origin,\n currentLanguage,\n keys: CombinedTranslationKeys,\n }\n : null,\n [currentLanguage, onlineBaseUrl, preloadedTranslations],\n );\n const { data: localizationData } = useSWRImmutable(\n // Either include onlineBaseUrl to enable ssr or fallback on client fetch only\n payload,\n fetchTranslations,\n { suspense: true },\n );\n\n useEffect(() => {\n const newResources: CombinedTranslations | undefined =\n localizationData?.translations ?? preloadedTranslations;\n\n i18nextInstance.addResourceBundle(\n currentLanguage,\n DEFAULT_NAMESPACE,\n newResources ?? {},\n false,\n true,\n );\n }, [localizationData, currentLanguage, preloadedTranslations]);\n\n useEffect(() => {\n if (currentLanguage) {\n i18nextInstance.changeLanguage(currentLanguage);\n }\n }, [currentLanguage]);\n\n return {children};\n};\n","import { useToken } from '@ori/auth';\nimport { lazy } from 'react';\n\nconst TopArea = lazy(async () =>\n import('./TopArea').then((module) => ({ default: module.TopArea })),\n);\n\n// TODO -- Improve this after refactoring NavigationContext (make sure everything is loaded before TopNav gets rendered)\nexport const LazyTopArea = () => {\n const { formattedToken } = useToken();\n\n return formattedToken ? : null;\n};\n","import { useToken } from '@ori/auth';\nimport { PbsApp } from '@ori/personal-beauty-store';\nimport type {\n PbsAppProps,\n RemoveQueryParameterCallback,\n SetQueryParameterCallback,\n} from '@ori/personal-beauty-store';\nimport { Team, TestIdProvider } from '@ori/testid-generator';\nimport type { VFC } from 'react';\nimport { Suspense, useMemo } from 'react';\n\nimport { TopAreaBlock } from '../components/TopAreaBlock';\nimport { ApiProviderContextProvider } from '../contexts/ApiProviderContext';\nimport { AppConfigurationProvider } from '../contexts/AppConfigurationContext';\nimport { CataloguesContextProvider } from '../contexts/CataloguesContext';\nimport { NavigationContextProvider } from '../contexts/NavigationContext';\nimport { NotificationsContextProvider } from '../contexts/NotificationsContext';\nimport { WindowDimensionsProvider } from '../contexts/WindowDimensionsContext';\nimport type { AppConfiguration, CombinedTranslations } from '../models';\nimport { I18nContainer } from './I18nContainer';\nimport { LazyTopArea } from './LazyTopArea';\nimport { TopAreaSkeleton } from '~/components/Skeleton/TopAreaSkeleton';\n\nexport type TopAreaAppProps = AppConfiguration & {\n /**\n * Preloaded translations for this app\n */\n translations?: CombinedTranslations;\n\n removeQueryParameter?: RemoveQueryParameterCallback;\n setQueryParameter?: SetQueryParameterCallback;\n};\n\nexport const TopAreaApp: VFC = (config) => {\n const {\n translations: preloadedTranslations,\n pbsIconInBurgerMenu,\n removeQueryParameter,\n setQueryParameter,\n } = config;\n const { customerId } = useToken();\n\n const pbsConfiguration = useMemo((): PbsAppProps['configuration'] => {\n const { translations: _, ...restConfig } = config;\n\n return {\n ...restConfig,\n isEnabled: Boolean(pbsIconInBurgerMenu),\n customerId,\n };\n }, [config, pbsIconInBurgerMenu, customerId]);\n\n return (\n \n \n \n \n \n \n \n }>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import type { ITelemetryItem } from '@microsoft/applicationinsights-core-js';\nimport { SeverityLevel } from '@microsoft/applicationinsights-web';\nimport type { OidcAccessToken } from '@ori/auth';\n\ninterface AppInsightsExceptionData {\n message?: string;\n}\n\nconst telemetryInitializer = (item: ITelemetryItem): boolean => {\n if (item.baseType === 'ExceptionData' && item.baseData) {\n const exceptions: AppInsightsExceptionData[] | null | undefined = item.baseData.exceptions as\n | AppInsightsExceptionData[]\n | null\n | undefined;\n\n if (exceptions?.[0] && exceptions[0].message?.startsWith('Customer ID mismatch')) {\n if (!item.tags) {\n // eslint-disable-next-line no-param-reassign -- Needs to initialize empty tags\n item.tags = [];\n }\n // eslint-disable-next-line no-param-reassign -- Needs to set the modified tags\n item.tags['ai.user.id'] = '-';\n }\n }\n\n return true;\n};\n\nexport const trackCustomerTokenMismatch = (customerId: number, token: OidcAccessToken) => {\n if (window.appInsights) {\n const tokenCustomerId = Number(token.getClaim('customer_id'));\n if (tokenCustomerId !== customerId && customerId > 0) {\n window.appInsights.addTelemetryInitializer(telemetryInitializer);\n window.appInsights.trackException({\n exception: new Error(\n `Customer ID mismatch, app ID: ${customerId}, token ID: ${tokenCustomerId}`,\n ),\n severityLevel: SeverityLevel.Error,\n });\n }\n }\n};\n","\n import API from \"!../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./App.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./App.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { ThemeProvider } from '@ori-ui/mui';\nimport { PrefetchedTokenProvider } from '@ori/auth';\nimport ReactDOM from 'react-dom';\n\nimport { ErrorBoundary, TopAreaApp } from './containers';\nimport { getAppConfiguration, getToken } from './utils';\nimport { trackCustomerTokenMismatch } from './utils/customerTokenMismatchCheck';\nimport { extractTokenFromUrl } from './utils/extractTokenFromUrl';\nimport 'core-js/proposals/relative-indexing-method';\nimport './App.css';\n\n/**\n * React app renderer that is used when app is used as a standalone SPA\n */\nexport const render = async (): Promise => {\n const rootEl = document.getElementById('online-top-area-root');\n\n if (rootEl) {\n const { config = '' } = rootEl.dataset;\n const appConfig = getAppConfiguration(config);\n const { customerId, tenant, identityUrl: dirtyIdentityUrl } = appConfig;\n const identityUrl = dirtyIdentityUrl.endsWith('/')\n ? dirtyIdentityUrl.slice(0, -1)\n : dirtyIdentityUrl;\n\n await extractTokenFromUrl(identityUrl);\n\n const token = await getToken({ customerId, tenant, identityUrl });\n\n try {\n trackCustomerTokenMismatch(customerId, token);\n } catch (error: unknown) {\n console.warn(error);\n }\n\n ReactDOM.render(\n \n \n \n \n \n \n ,\n rootEl,\n );\n }\n};\n","import { AuthorizationCodeTokenClient, OidcUrlHelper } from '@ori/auth';\n\nimport { IDENTITY_CLIENT_ID } from '../constants';\n\n/**\n * Token extraction for development\n */\nexport const extractTokenFromUrl = async (identityUrl?: string) => {\n // extract token from URL; only on dev machine, not needed elsewhere\n if (process.env.NODE_ENV !== 'production') {\n const searchParams = new URLSearchParams(window.location.hash.split('?')[1]);\n\n if (searchParams.has('state')) {\n const oidcUrlHelper = new OidcUrlHelper();\n\n const tokenClient = new AuthorizationCodeTokenClient({\n clientId: IDENTITY_CLIENT_ID,\n identityUrl: identityUrl ?? '',\n });\n oidcUrlHelper.storeAuthCodeFromParams(searchParams);\n await tokenClient.initializeTokenFromAuthorizationCode();\n oidcUrlHelper.handleRedirectAfterLogin();\n }\n }\n};\n","import { styled } from '@ori-ui/mui';\nimport type { ImageSizesHelperParams } from '@ori/image-sizes-helper';\nimport { getImageVariants, generateSrcSet } from '@ori/image-sizes-helper';\nimport useTestId from '@ori/testid-generator';\nimport type { VFC } from 'react';\n\nconst ProductImageRoot = styled('img')(({ theme }) => ({\n objectFit: 'cover',\n // TODO(10/05/2022): Remove after new release of ori-ui.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any -- not working theme augmentation\n borderRadius: (theme.shape as any).largeComponentRadius,\n}));\n\ninterface ProductImageProps {\n catalogue: string;\n image: string;\n alt: string;\n}\n\nexport const ProductImage: VFC = ({ image, alt, catalogue }) => {\n const { getTestId } = useTestId();\n\n const imagesVariants: ImageSizesHelperParams = {\n url: image,\n params: [\n {\n width: 131,\n height: 131,\n quality: 90,\n },\n {\n width: 250,\n height: 228,\n quality: 90,\n },\n {\n width: 310,\n height: 282,\n quality: 90,\n },\n {\n width: 375,\n height: 342,\n quality: 80,\n },\n {\n width: 438,\n height: 399,\n quality: 75,\n },\n {\n width: 500,\n height: 456,\n quality: 70,\n },\n {\n width: 688,\n height: 627,\n quality: 65,\n },\n {\n width: 750,\n height: 684,\n quality: 60,\n },\n ],\n };\n const images = getImageVariants(imagesVariants);\n const currentCatalogue = '(max-width: 1023px) 250px, 310px';\n const nextCatalogue = '131px';\n\n return (\n \n );\n};\n","import * as UserAction from '@ori-events/user-action';\nimport { alpha, Link, styled, Typography } from '@ori-ui/mui';\nimport type { Maybe, Navigation } from '@ori/graphql-schema';\nimport { Banner } from '@ori/presentation-components';\nimport { shouldForwardProp } from '@ori/presentation-utils';\nimport useTestId from '@ori/testid-generator';\nimport type { VFC } from 'react';\n\nimport { ProductImage } from './CatalogueImage';\nimport { SkeletonCatalogueDesktop, SkeletonCatalogueMobile } from '~/components/Skeleton';\nimport {\n CLICK_CATALOGUE_DETAIL,\n DESKTOP_BREAKPOINT,\n TENANTS_LIST_WHERE_CATALOG_HEADER_IS_HIDDEN,\n} from '~/constants';\nimport { useAppConfigurationContext } from '~/contexts/AppConfigurationContext';\nimport { useCataloguesContext } from '~/contexts/CataloguesContext';\nimport { useNavigationContext } from '~/contexts/NavigationContext';\nimport { useMobileWidth, useTranslationByKey } from '~/hooks';\nimport { useIsMarketCN } from '~/hooks/useIsMarketCN';\nimport { TranslationKeys } from '~/models';\nimport { formatDate } from '~/utils';\n\ninterface IsMarketCNProps {\n isMarketCN: boolean;\n}\n\ninterface IsMobileProps {\n isMobile: boolean;\n}\n\nconst CataloguesRoot = styled('div', {\n shouldForwardProp: shouldForwardProp(),\n})(({ isMarketCN, isMobile, theme }) => ({\n alignItems: 'center',\n background: theme.palette.common.white,\n color: theme.palette.text.primary,\n display: isMobile ? 'unset' : 'flex',\n flexDirection: 'column',\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n alignItems: 'center',\n columnGap: 20,\n display: 'grid',\n flexDirection: 'row',\n gridTemplateColumns: '310px auto',\n gridTemplateRows: isMarketCN ? '83px 286px 37px' : '83px 440px 37px',\n justifyContent: 'center',\n marginBottom: theme.spacing(6),\n width: '100%',\n },\n}));\n\nconst CataloguesCurrentDetails = styled('div')(({ theme }) => ({\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n alignSelf: 'flex-end',\n gridColumn: 1,\n gridRow: 1,\n },\n}));\n\nconst CataloguesCurrentTitle = styled(Link)(({ theme }) => ({\n display: 'block',\n fontSize: theme.typography.pxToRem(17),\n fontWeight: theme.typography.fontWeightBold,\n lineHeight: theme.typography.pxToRem(25),\n textAlign: 'center',\n textDecoration: 'none',\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n '&:hover': {\n color: theme.palette.grey.A400,\n },\n },\n}));\n\nconst CataloguesCurrentValidity = styled(Typography)(({ theme }) => ({\n color: theme.palette.grey.A700,\n fontSize: theme.typography.body1.fontSize,\n lineHeight: theme.typography.pxToRem(17),\n margin: theme.spacing(2, 0, 3),\n textAlign: 'center',\n}));\n\nconst CataloguesCurrentImage = styled(Link, {\n shouldForwardProp: shouldForwardProp(),\n})(({ isMarketCN, theme }) => ({\n display: 'block',\n height: isMarketCN ? 231 : 355,\n WebkitTapHighlightColor: 'transparent',\n width: 250,\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n alignSelf: 'flex-start',\n gridColumn: 1,\n gridRow: 2,\n height: isMarketCN ? 286 : 440,\n width: 310,\n\n '&:hover::before': {\n background: alpha(theme.palette.common.black, 0.3),\n // TODO(10/05/2022): Remove after new release of ori-ui.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any -- not working theme augmentation\n borderRadius: (theme.shape as any).largeComponentRadius,\n content: '\"\"',\n height: isMarketCN ? 286 : 440,\n position: 'absolute',\n width: 310,\n },\n },\n}));\n\nconst CataloguesOtherLabel = styled(Typography)(({ theme }) => ({\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n alignSelf: 'flex-end',\n fontSize: theme.typography.body1.fontSize,\n fontWeight: theme.typography.fontWeightBold,\n gridColumn: 2,\n gridRow: 1,\n lineHeight: theme.typography.pxToRem(21),\n marginBottom: theme.spacing(4),\n textAlign: 'center',\n },\n}));\n\nconst CataloguesNextImage = styled(Link, {\n shouldForwardProp: shouldForwardProp(),\n})(({ isMarketCN, theme }) => ({\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n alignSelf: 'flex-start',\n display: 'block',\n gridColumn: 2,\n gridRow: 2,\n height: isMarketCN ? 121 : 186,\n WebkitTapHighlightColor: 'transparent',\n width: 131,\n\n '&:hover::before': {\n background: alpha(theme.palette.common.black, 0.3),\n content: '\"\"',\n height: isMarketCN ? 121 : 186,\n position: 'absolute',\n width: 131,\n },\n },\n}));\n\nconst CataloguesSeeAll = styled('div')<{ ownerState: { isSingleCatalogue: boolean } }>(\n ({ ownerState, theme }) => ({\n marginTop: theme.spacing(3),\n textAlign: 'center',\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n alignSelf: 'flex-start',\n gridColumn: 2,\n gridRow: 3,\n marginTop: theme.spacing(4),\n\n ...(ownerState.isSingleCatalogue && {\n gridColumn: 1,\n gridRow: 3,\n }),\n },\n }),\n);\n\nconst CataloguesSeeAllLink = styled(Link)(({ theme }) => ({\n color: theme.palette.text.primary,\n fontSize: theme.typography.body1.fontSize,\n fontWeight: theme.typography.fontWeightBold,\n lineHeight: theme.typography.pxToRem(17),\n textTransform: 'uppercase',\n WebkitTapHighlightColor: 'transparent',\n textDecorationThickness: '2px',\n textUnderlineOffset: '5px',\n}));\n\nconst BannerWrapper = styled('div')(({ theme }) => ({\n padding: theme.spacing(4, 4, 1, 5),\n}));\n\nexport const Catalogues: VFC = () => {\n const { catalogues, isDataFetched } = useCataloguesContext();\n const { shopSection } = useNavigationContext();\n const isMarketCN = useIsMarketCN();\n const isMobile = useMobileWidth();\n const translations = useTranslationByKey();\n const { getTestId } = useTestId();\n const { tenant } = useAppConfigurationContext();\n\n if (!isDataFetched) {\n return isMobile ? : ;\n }\n\n const children = shopSection as Maybe> | undefined;\n\n if (!children) {\n return null;\n }\n\n const formatValidity = (catalogueId: string) => {\n const catalogue = catalogues?.find((e) => e.catalogueId.toString() === catalogueId);\n\n if (!catalogue?.valid) {\n return null;\n }\n\n const from = formatDate(catalogue.valid.from);\n const to = formatDate(catalogue.valid.to);\n\n if (!from || !to) {\n return null;\n }\n\n return `${from} - ${to}`;\n };\n const link = children.find((e) => e?.linkType === 'Catalogue');\n const catalogueCurrent = link?.children?.find((e) => e?.linkType === 'DigitalCatalogueCurrent');\n const catalogueNext = link?.children?.find((e) => e?.linkType === 'DigitalCatalogueNext');\n const cataloguesAll = link?.children?.find((e) => e?.linkType === 'Catalogues');\n const isCatalogueNextValid = Boolean(\n !isMobile && catalogueNext?.imageUrl && catalogueNext.title && catalogueNext.url,\n );\n const ownerState = { isSingleCatalogue: Boolean(cataloguesAll) };\n\n if (\n !catalogueCurrent?.id ||\n !catalogueCurrent.imageUrl ||\n !catalogueCurrent.title ||\n !catalogueCurrent.url\n ) {\n return null;\n }\n\n return (\n \n {isMobile ? (\n \n \n \n ) : (\n <>\n \n {TENANTS_LIST_WHERE_CATALOG_HEADER_IS_HIDDEN.includes(tenant) ? null : (\n <>\n \n {catalogueCurrent.title}\n \n \n {formatValidity(catalogueCurrent.id)}\n \n \n )}\n \n UserAction.dispatch(CLICK_CATALOGUE_DETAIL)}\n >\n \n \n \n )}\n {isCatalogueNextValid ? (\n <>\n \n {translations(TranslationKeys.Other)}\n \n \n \n \n \n ) : null}\n {cataloguesAll?.url ? (\n \n \n {translations(TranslationKeys.SeeAll)}\n \n \n ) : null}\n \n );\n};\n","import loadable from '@loadable/component';\nimport { styled } from '@ori-ui/mui';\nimport { NavigationLinkType } from '@ori/graphql-schema';\nimport { MenuContentContainer as PbsMenuContent } from '@ori/personal-beauty-store';\nimport useTestId from '@ori/testid-generator';\nimport type { RefObject, VFC } from 'react';\nimport { Suspense, memo } from 'react';\n\nimport { Catalogues } from './Catalogues/Catalogues';\nimport { SkeletonSubCategoryDesktop, SkeletonSubCategoryMobile } from '~/components/Skeleton';\nimport { DESKTOP_BREAKPOINT } from '~/constants';\nimport { useNavigationContext } from '~/contexts/NavigationContext';\nimport { useMobileWidth } from '~/hooks';\nimport type { CategoryContentProps } from '~/models';\n\nconst BurgerMenuContentRoot = styled('div')(({ theme }) => ({\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n display: 'flex',\n width: '80%',\n },\n}));\n\nconst StyledPbsMenuContent = styled(PbsMenuContent)(({ theme }) => ({\n marginLeft: '4rem',\n marginTop: '3rem',\n}));\n\nconst LazyInspiration = loadable(async () =>\n import('./Inspiration/Inspiration').then((mod) => mod.Inspiration),\n) as VFC;\nconst LazyCategoryContent = loadable(async () =>\n import('./CategoryContent/CategoryContent').then((mod) => mod.CategoryContent),\n) as VFC;\n\nconst CategoryContent: VFC = memo(({ isMobile }) => (\n : }>\n \n \n));\n\nexport interface BurgerMenuContentProps {\n contentRootRef?: RefObject;\n}\n\nexport const BurgerMenuContent = ({ contentRootRef }: BurgerMenuContentProps) => {\n const isMobile = useMobileWidth();\n const { activeLink, pbsContentIsShown } = useNavigationContext();\n const { linkType, id } = activeLink ?? {};\n const { getTestId } = useTestId();\n\n const navigation = {\n isCatalogue: linkType === NavigationLinkType.Catalogue,\n isCategory: linkType === NavigationLinkType.Category,\n isInspiration: linkType === NavigationLinkType.Inspiration,\n };\n\n return (\n \n {pbsContentIsShown ? (\n \n ) : (\n <>\n {navigation.isCatalogue ? : null}\n {navigation.isCategory && id ? (\n \n ) : null}\n {navigation.isInspiration ? : null}\n \n )}\n \n );\n};\n","import type { VFC } from 'react';\nimport { lazy, Suspense } from 'react';\n\nimport type { BurgerMenuLinksProps } from './types';\nimport { SkeletonMainCategoriesDesktop, SkeletonMainCategoriesMobile } from '~/components/Skeleton';\nimport { useMobileWidth } from '~/hooks';\n\nconst LazyGeneratedBurgerMainMenuLinks = lazy(async () => import('./Links'));\n\nexport const BurgerMenuLinks: VFC = ({ isBrandPartner }) => {\n const isMobile = useMobileWidth();\n\n return (\n : }\n >\n \n \n );\n};\n\nexport default BurgerMenuLinks;\n","import { styled, Skeleton } from '@ori-ui/mui';\nimport type { VFC } from 'react';\n\nimport { DESKTOP_BREAKPOINT, TOP_NAV_HEIGHT, TOP_NAV_HEIGHT_MOBILE } from '../../constants';\nimport { TopAreaBlock } from '../TopAreaBlock';\n\nconst SQUARES_SIZE = 27;\n\nconst UnifiedSkeleton = styled(Skeleton)({\n transform: 'none',\n});\n\nconst Root = styled('div')(({ theme }) => ({\n display: 'grid',\n position: 'fixed',\n alignItems: 'center',\n justifyContent: 'space-between',\n top: 0,\n left: 0,\n background: 'white',\n zIndex: theme.zIndex.appBar,\n width: '100vw',\n height: TOP_NAV_HEIGHT_MOBILE,\n gridTemplateColumns: '1fr 100px 1fr',\n padding: '0 17px',\n boxSizing: 'border-box',\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n gridTemplateColumns: '1fr 180px 1fr',\n height: TOP_NAV_HEIGHT,\n padding: '0 45px 0 30px',\n },\n [theme.breakpoints.up('lg')]: {\n padding: '0 55px 0 40px',\n },\n [theme.breakpoints.up('xl')]: {\n padding: '0 75px 0 60px',\n },\n}));\n\nconst LogoSkeleton = styled(UnifiedSkeleton)(({ theme }) => ({\n width: 105,\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n width: 180,\n },\n}));\n\nconst LeftSideRoot = styled('div')({\n display: 'flex',\n});\n\nconst LeftSideSkeletonItem = styled(UnifiedSkeleton)(({ theme }) => ({\n display: 'inline-block',\n '&:nth-of-type(2)': {\n marginLeft: 30,\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n marginLeft: 42,\n marginRight: 40,\n },\n },\n '&:last-of-type': {\n display: 'none',\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n display: 'block',\n },\n },\n}));\n\nconst RightSideRoot = styled('div')({\n display: 'flex',\n alignItems: 'center',\n gridColumn: '3/4',\n justifySelf: 'end',\n});\n\nconst SearchBarSkeleton = styled(UnifiedSkeleton)(() => ({\n borderRadius: '999px',\n marginRight: '50px',\n display: 'none',\n [DESKTOP_BREAKPOINT]: {\n display: 'block',\n },\n}));\n\nexport const TopAreaSkeleton: VFC = () => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n","import { Box, Skeleton, styled } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\n\nimport { useIsMarketCN } from '~/hooks/useIsMarketCN';\n\nconst SkeletonCatalogueMobileRoot = styled(Box)({\n margin: 'auto',\n\n '& > *': {\n margin: 'auto',\n },\n});\n\nconst SkeletonCatalogueMobileValidity = styled(Skeleton)(({ theme }) => ({\n margin: theme.spacing(1, 'auto', 3),\n}));\n\nconst SkeletonCatalogueMobileSeeAll = styled(Skeleton)({\n marginTop: 16,\n});\n\nexport const SkeletonCatalogueMobile = () => {\n const isMarketCN = useIsMarketCN();\n const { getTestId } = useTestId();\n\n return (\n \n \n \n \n \n \n );\n};\n","import { Box, Skeleton, styled } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\n\nconst SkeletonMainCategoriesMobileCategory = styled(Skeleton)(({ theme }) => ({\n margin: theme.spacing(0, 3, 1),\n minWidth: '80%',\n}));\n\nconst SkeletonMainCategoriesMobileCategoryLarge = styled(Skeleton)(({ theme }) => ({\n margin: theme.spacing(5, 3, 1),\n minWidth: '80%',\n}));\n\nconst SKELETON_HEIGHT = 60;\n\nexport const SkeletonMainCategoriesMobile = () => {\n const elements = Math.floor(window.innerHeight / SKELETON_HEIGHT);\n const steps = Array.from({ length: elements }, (element, index) => index);\n const { getTestId } = useTestId();\n\n const skeletonElements = steps.map((step) => (\n \n ));\n\n return (\n \n \n\n {skeletonElements}\n\n \n \n );\n};\n","import { Box, Skeleton, styled } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\n\nconst SkeletonSubCategoryMobileRoot = styled(Box)(({ theme }) => ({\n marginTop: theme.spacing(2),\n}));\n\nconst SkeletonSubCategoryMobileLoader = styled(Skeleton)(({ theme }) => ({\n margin: theme.spacing(0, 3, 1, 6),\n paddingTop: theme.spacing(4),\n}));\n\nconst TOPNAV_EXPANDED_HEIGHT_OFFSET = 200;\nconst SKELETON_HEIGHT = 60;\n\nexport const SkeletonSubCategoryMobile = () => {\n const elements = Math.floor(\n (window.innerHeight - TOPNAV_EXPANDED_HEIGHT_OFFSET) / SKELETON_HEIGHT,\n );\n const { getTestId } = useTestId();\n const steps = Array.from({ length: elements }, (element, index) => index);\n\n const skeletonElements = steps.map((step) => (\n \n ));\n\n return (\n \n {skeletonElements}\n \n );\n};\n","import { Box, Skeleton, styled } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\n\nimport { useIsMarketCN } from '~/hooks/useIsMarketCN';\n\nconst SkeletonCatalogueDesktopRoot = styled(Box)(({ theme }) => ({\n gridColumnStart: 1,\n margin: theme.spacing(2, 'auto', 5),\n paddingRight: theme.spacing(3),\n\n '& > *': {\n margin: 'auto',\n },\n}));\n\nconst SkeletonCatalogueDesktopValidity = styled(Skeleton)(({ theme }) => ({\n margin: theme.spacing(1, 'auto', 1),\n}));\n\nconst SkeletonCatalogueDesktopContent = styled(Skeleton)(({ theme }) => ({\n marginTop: theme.spacing(2),\n}));\n\nconst SkeletonCatalogueDesktopSeeAll = styled(Skeleton)(({ theme }) => ({\n marginTop: theme.spacing(3),\n}));\n\nexport const SkeletonCatalogueDesktop = () => {\n const isMarketCN = useIsMarketCN();\n const { getTestId } = useTestId();\n\n return (\n \n \n \n \n \n \n );\n};\n","import { Box, Skeleton, styled } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport times from 'lodash.times';\n\nconst SkeletonMenuLinks = styled(Box)(({ theme }) => ({\n borderRight: `2px solid ${theme.palette.grey[100]}`,\n display: 'flex',\n flexDirection: 'column',\n padding: theme.spacing(0, 2),\n}));\n\nconst CATEGORIES_LINKS = 15;\n\nexport const SkeletonMainCategoriesDesktop = () => {\n const { getTestId } = useTestId();\n\n return (\n \n \n {times(CATEGORIES_LINKS, (index) => (\n \n ))}\n \n \n );\n};\n","import { Box, Skeleton, styled } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\n\nconst SkeletonSubCategoryRoot = styled(Box)(({ theme }) => ({\n marginTop: theme.spacing(4),\n}));\n\nconst SkeletonSubCategoryLoader = styled(Skeleton)(({ theme }) => ({\n margin: theme.spacing(0, 3, 2, 10),\n}));\n\nconst SKELETON_ELEMENTS = 10;\nconst SKELETON_ELEMENT_HEIGHT = 32;\n\nexport const SkeletonSubCategoryDesktop = () => {\n const steps = Array.from({ length: SKELETON_ELEMENTS }, (element, index) => index);\n const { getTestId } = useTestId();\n\n const skeletonElements = steps.map((step) => (\n \n ));\n\n return (\n \n {skeletonElements}\n \n );\n};\n","import { styled } from '@ori-ui/mui';\nimport type { PropsWithChildren, VFC } from 'react';\n\nimport { TOP_NAV_HEIGHT, TOP_NAV_HEIGHT_MOBILE } from '../constants';\n\nconst TopAreaReservedSpaceBlock = styled('div')(({ theme }) => ({\n minHeight: TOP_NAV_HEIGHT,\n [theme.breakpoints.down('md')]: {\n minHeight: TOP_NAV_HEIGHT_MOBILE,\n },\n}));\n\nexport const TopAreaBlock: VFC> = ({ children }) => (\n {children}\n);\n","export const APPLICATION_NAME = '@ori/top-area';\nexport const CN_MARKET = 'cn';\nexport const CONSULTANT_NUMBER_QUERY_PARAM_KEY = 'chPwdUsr';\nexport const DESKTOP_BREAKPOINT = 1024;\nexport const RETURN_URL_QUERY_PARAM_KEY = 'returnUrl';\nexport const SCROLL_THROTTLE_DELAY = 100;\n\n// Temporary (few months) solution, will be removed in future\nexport const TENANTS_LIST_WHERE_CATALOG_HEADER_IS_HIDDEN = [\n 'ks',\n 'bg',\n 'si',\n 'hr',\n 'rs',\n 'bg',\n 'ba',\n 'ee',\n 'lv',\n 'lt',\n 'ma',\n];\n\n// Google Analytics base not changing meta hierarchy\nexport const CLICK_CATALGOUE = ['open_ecatalogue', 'Main menu sidebar'];\nexport const CLICK_CATALOGUE_DETAIL = ['open_ecatalogue', 'Main menu content'];\nexport const CLICK_BURGER_MENU = ['open_main_menu', 'Top navigation'];\nexport const CLICK_CATEGORY_BRAND = ['select_brand', 'Main menu content'];\nexport const START_SEARCH = ['search_start', 'Search 1'];\nexport const SEARCH_THROTTLE_TIME = 1000 * 60 * 5;\nexport const CATALOG_LINK_TYPE = 'Catalogue';\nexport const CLICK_FAVORITE_ICON = ['open_favorites', 'Top navigation'];\nexport const CLICK_NOTIFICATION_ICON = ['open_notifications', 'Top navigation'];\nexport const ROBOTO_FONT_URL = 'https://fonts.googleapis.com/css?family=Roboto:400&display=swap';\n\nexport const TOP_NAV_HEIGHT = 80;\nexport const TOP_NAV_HEIGHT_SHRUNK = 60;\nexport const TOP_NAV_HEIGHT_MOBILE = 56;\n\n/**\n * Identity server client ID for authentication.\n */\nexport const IDENTITY_CLIENT_ID = 'SPADev';\n","import type { ImageSizesHelperParams } from '@ori/image-sizes-helper';\nimport { getImageVariants, generateSrcSet } from '@ori/image-sizes-helper';\nimport type { VFC } from 'react';\n\ninterface ArticleImageProps {\n image: string;\n name?: string;\n}\n\nexport const AboutTileImage: VFC = ({ image, name }) => {\n const imagesVariants: ImageSizesHelperParams = {\n url: image,\n params: [\n {\n width: 452,\n height: 452,\n quality: 90,\n },\n ],\n };\n const images = getImageVariants(imagesVariants);\n\n return (\n \n );\n};\n","import * as ToggleMenuFlyout from '@ori-events/toggle-menu-flyout';\nimport { alpha, Backdrop, Link, Typography, styled, SHADOW_LEVEL1 } from '@ori-ui/mui';\nimport type { VFC } from 'react';\nimport { useCallback } from 'react';\n\nimport { AboutTileImage } from './AboutTileImage';\nimport { DESKTOP_BREAKPOINT } from '~/constants';\nimport { useNavigationContext } from '~/contexts/NavigationContext';\n\nconst AboutMenuRoot = styled('div')(({ theme }) => ({\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n backgroundColor: theme.palette.common.white,\n border: `1px solid ${theme.palette.grey[100]}`,\n boxShadow: SHADOW_LEVEL1,\n display: 'flex',\n left: 0,\n position: 'absolute',\n top: 'var(--top-nav-height)',\n transition: 'top var(--top-nav-height-animation)',\n width: '100%',\n },\n}));\n\nconst AboutTilesWrapper = styled('div')(({ theme }) => ({\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n alignItems: 'center',\n borderBottom: `6px solid ${theme.palette.common.white}`,\n columnGap: 6,\n display: 'grid',\n gridAutoColumns: 'minmax(337px, 452px)',\n gridAutoFlow: 'column',\n gridTemplateRows: 325,\n justifyContent: 'center',\n overflow: 'hidden',\n width: '100%',\n },\n}));\n\nconst AboutTileLink = styled(Link)(({ theme }) => ({\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n overflow: 'hidden',\n position: 'relative',\n\n '&:hover, &:focus, &:active': {\n color: theme.palette.common.white,\n },\n\n '&:hover::before': {\n opacity: 1,\n },\n\n '&::before': {\n background: alpha(theme.palette.common.black, 0.3),\n content: '\"\"',\n height: '100%',\n left: 0,\n opacity: 0,\n position: 'absolute',\n top: 0,\n width: '100%',\n },\n },\n}));\n\nconst AboutTileTitle = styled(Typography)(({ theme }) => ({\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n color: theme.palette.common.white,\n fontWeight: theme.typography.fontWeightBold,\n left: '50%',\n position: 'absolute',\n textAlign: 'center',\n textShadow: theme.shadows[1],\n top: '50%',\n transform: 'translate(-50%, -50%)',\n width: '100%',\n },\n}));\n\nconst NUMBER_OF_VISIBLE_TILES = 3;\n\nconst AboutMenuContent: VFC = () => {\n const { aboutTiles, toggleMenu } = useNavigationContext();\n const slicedAboutTiles = aboutTiles.slice(0, NUMBER_OF_VISIBLE_TILES);\n const onClickOverlay = useCallback(() => toggleMenu(''), [toggleMenu]);\n\n return (\n \n \n {slicedAboutTiles.map((tile) => (\n \n {tile.imageUrl ? (\n \n ) : null}\n {tile.title}\n \n ))}\n \n \n \n );\n};\n\nexport const AboutMenu: VFC = () => {\n const { activeMenu } = useNavigationContext();\n const isMenuActive = activeMenu === ToggleMenuFlyout.MenuTypes.AboutMenu;\n\n // no need to render hidden menu\n return isMenuActive ? : null;\n};\n","import * as ToggleMenuFlyout from '@ori-events/toggle-menu-flyout';\nimport { Modal, Slide, styled, useTheme } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport type { VFC } from 'react';\nimport { lazy, useCallback } from 'react';\n\nimport { useNavigationContext } from '~/contexts/NavigationContext';\nimport { useMobileWidth } from '~/hooks';\n\nconst AccountFlyoutRoot = styled('div')(({ theme }) => ({\n background: theme.palette.common.white,\n height: '100%',\n paddingTop: 'var(--top-nav-height)',\n position: 'absolute',\n width: 280,\n}));\n\nconst AccountLazy = lazy(async () => import('./LoginLibrary')) as VFC;\n\nexport const AccountFlyout: VFC = () => {\n const { toggleMenu, activeMenu } = useNavigationContext();\n const isMobile = useMobileWidth();\n\n const { getTestId } = useTestId();\n\n const { zIndex } = useTheme();\n\n const handleModalClose = useCallback(\n () => toggleMenu(ToggleMenuFlyout.MenuTypes.AccountSideMenu),\n [toggleMenu],\n );\n\n const isAccountMenuActive =\n !isMobile && activeMenu === ToggleMenuFlyout.MenuTypes.AccountSideMenu;\n\n return (\n \n \n \n \n \n \n \n );\n};\n","import type { SvgIcon } from '@ori-ui/mui';\nimport { ButtonBase, styled } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport type { FC } from 'react';\nimport { useCallback } from 'react';\n\nimport type { BurgerMenuTabNames } from '~/models';\n\nconst BurgerMenuTabRoot = styled(ButtonBase)<{ ownerState: { isActive: boolean } }>(\n ({ ownerState, theme }) => ({\n alignItems: 'center',\n backgroundColor: theme.palette.grey[100],\n borderRadius: theme.spacing(0, 0, 1, 1),\n color: theme.palette.text.primary,\n display: 'flex',\n fontSize: theme.typography.overline.fontSize,\n fontWeight: theme.typography.fontWeightBold,\n justifyContent: 'flex-start',\n textTransform: 'uppercase',\n width: '50%',\n\n ...(ownerState.isActive && {\n backgroundColor: theme.palette.common.white,\n }),\n\n '&::before': {\n fontSize: theme.typography.pxToRem(29),\n margin: theme.spacing(0, 3),\n },\n }),\n);\n\nconst BurgerMenuTabIconWrapper = styled('div')<{ ownerState: { isLoggedIn?: boolean } }>(\n ({ ownerState, theme }) => ({\n borderRadius: '50%',\n display: 'flex',\n fontSize: theme.typography.pxToRem(29),\n height: 29,\n margin: theme.spacing(4, 2),\n\n ...(ownerState.isLoggedIn && {\n background: theme.palette.primary.main,\n borderRadius: '50%',\n color: theme.palette.common.white,\n display: 'flex',\n fontSize: theme.typography.pxToRem(26),\n height: 26,\n }),\n }),\n);\n\nconst BurgerMenuTabLabelWrapper = styled('div')(({ theme }) => ({\n marginRight: theme.spacing(3),\n overflow: 'hidden',\n textAlign: 'left',\n textOverflow: 'ellipsis',\n width: '100%',\n}));\n\ninterface BurgerMenuTabProps {\n activeTab: BurgerMenuTabNames;\n tabName: BurgerMenuTabNames;\n tabIcon: typeof SvgIcon;\n onTabClick: (tabName: BurgerMenuTabNames) => void;\n isLoggedIn?: boolean;\n}\n\nexport const BurgerMenuTab: FC = ({\n children,\n activeTab,\n tabIcon,\n tabName,\n onTabClick,\n isLoggedIn,\n}) => {\n const clickHandler = useCallback(() => onTabClick(tabName), [onTabClick, tabName]);\n const TabIcon = tabIcon;\n const ownerState = { isActive: activeTab === tabName, isLoggedIn };\n const { getTestId } = useTestId();\n\n return (\n \n \n \n \n \n {children}\n \n \n );\n};\n","import loadable from '@loadable/component';\nimport * as ToggleMenuFlyout from '@ori-events/toggle-menu-flyout';\nimport { BurgerMenu as BurgerMenuIcon, User, UserFilled } from '@ori-ui/icons';\nimport type { SvgIcon } from '@ori-ui/mui';\nimport { Backdrop, Modal, SHADOW_LEVEL1, Slide, styled, useTheme } from '@ori-ui/mui';\nimport { useToken } from '@ori/auth';\nimport type { GlobalCustomersCustomerInfoDto } from '@ori/global-api-client/esm/models';\nimport type { PersonalMenuProps } from '@ori/personal-menu';\nimport useTestId from '@ori/testid-generator';\nimport type { VFC } from 'react';\nimport { lazy, memo, useCallback, useState, useEffect } from 'react';\n\nimport { BurgerMenuContent } from './BurgerMenuContent';\nimport { BurgerMenuLinks } from './BurgerMenuLinks/BurgerMenuLinks';\nimport type { BurgerMenuLinksProps } from './BurgerMenuLinks/types';\nimport { BurgerMenuTab } from './BurgerMenuTab';\nimport { useAppConfigurationContext } from '~/contexts/AppConfigurationContext';\nimport { useNavigationContext } from '~/contexts/NavigationContext';\nimport { useMobileWidth, useTranslationByKey } from '~/hooks';\nimport { BurgerMenuTabNames, TranslationKeys } from '~/models';\n\nconst BurgerMenuRoot = styled('aside')<{ ownerState: { isMobile?: boolean; isDesktop?: boolean } }>(\n ({ ownerState, theme }) => ({\n backgroundColor: theme.palette.common.white,\n border: `1px solid ${theme.palette.grey[100]}`,\n display: 'none',\n transition: 'top var(--top-nav-height-animation)',\n\n ...(ownerState.isMobile && {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n maxWidth: 'calc(100% - 45px)',\n position: 'absolute',\n width: 330,\n }),\n\n ...(ownerState.isDesktop && {\n boxShadow: SHADOW_LEVEL1,\n display: 'flex',\n left: 0,\n minHeight: 590,\n position: 'absolute',\n top: 'var(--top-nav-height)',\n width: '100%',\n }),\n }),\n);\n\nconst BurgerMenuContainer = styled('div')(() => ({\n display: 'flex',\n height: 54,\n width: '100%',\n}));\n\nconst LazyPersonalMenu = loadable(async () =>\n import('@ori/personal-menu').then((mod) => mod.PersonalMenu),\n) as VFC;\n\nconst LazyAccount = lazy(async () => import('../Account/LoginLibrary')) as VFC;\n\nconst LazyBurgerMenuLinks = lazy(\n async () => import('./BurgerMenuLinks/BurgerMenuLinks'),\n) as VFC;\n\ninterface BurgerMenuProps\n extends Pick {\n lang: string;\n}\n\nexport const BurgerMenu: VFC = memo(({ consultantNumber, customerType, lang }) => {\n const { BurgerMenu: BurgerMenuType, AccountSideMenu: AccountSideMenuType } =\n ToggleMenuFlyout.MenuTypes;\n const { activeMenu, burgerMenuTab, toggleMenu, setPbsContentIsShown } = useNavigationContext();\n const { pbsIconInBurgerMenu } = useAppConfigurationContext();\n const [isAccountTabActive, setIsAccountTabActive] = useState(false);\n const isMobile = useMobileWidth();\n const ownerState = { isMobile };\n const isBrandPartner = customerType?.customerTypeId === 1;\n const handleTabClick = useCallback(\n (tabName: BurgerMenuTabNames) => {\n const menuType: ToggleMenuFlyout.MenuTypes =\n tabName === BurgerMenuTabNames.ProductsTab ? BurgerMenuType : AccountSideMenuType;\n toggleMenu(menuType);\n setIsAccountTabActive(tabName === BurgerMenuTabNames.AccountTab);\n },\n [AccountSideMenuType, BurgerMenuType, toggleMenu],\n );\n const translations = useTranslationByKey();\n const {\n globalApiUrl,\n staticApiUrl,\n tenant,\n personalMenuInitialData,\n mobileOfficeApiUrl,\n consultantNumber: configConsultantNumber,\n consultantType,\n reportsItemName,\n } = useAppConfigurationContext();\n\n const { zIndex } = useTheme();\n\n const { customerId, isAnonymousUser, token } = useToken();\n\n const isLoggedIn = !isAnonymousUser;\n const isMenuActive =\n activeMenu === BurgerMenuType || (isMobile && activeMenu === AccountSideMenuType);\n const activeTab =\n activeMenu === BurgerMenuType ? BurgerMenuTabNames.ProductsTab : BurgerMenuTabNames.AccountTab;\n const { getTestId } = useTestId();\n\n // Show PBS content as default view if PBS is active\n useEffect(() => {\n if (pbsIconInBurgerMenu) {\n setPbsContentIsShown(true);\n }\n\n return () => setPbsContentIsShown(false);\n }, [pbsIconInBurgerMenu, setPbsContentIsShown]);\n\n const accountTabContent = isAnonymousUser ? (\n \n ) : (\n \n );\n\n const onClickOverlay = useCallback(() => {\n setIsAccountTabActive(false);\n toggleMenu(BurgerMenuType);\n }, [BurgerMenuType, setIsAccountTabActive, toggleMenu]);\n\n if (isMobile) {\n return (\n \n \n \n \n \n {translations(TranslationKeys.Products)}\n \n \n {isLoggedIn\n ? translations(TranslationKeys.MyAccount)\n : `${translations(TranslationKeys.LogIn)}/${translations(\n TranslationKeys.Register,\n )}`}\n \n \n {activeTab === BurgerMenuTabNames.ProductsTab && (\n \n )}\n {activeTab === BurgerMenuTabNames.AccountTab && accountTabContent}\n \n \n \n );\n }\n\n if (!isMenuActive || burgerMenuTab === BurgerMenuTabNames.AccountTab) {\n return null;\n }\n\n return (\n \n \n \n \n \n );\n});\n","import type { ImageSizesHelperParams } from '@ori/image-sizes-helper';\nimport { getImageVariants, generateSrcSet } from '@ori/image-sizes-helper';\nimport type { VFC } from 'react';\n\ninterface TileProps {\n image: string;\n name?: string;\n}\n\nexport const JoinTileImage: VFC = ({ image, name }) => {\n const imagesVariants: ImageSizesHelperParams = {\n url: image,\n params: [\n {\n width: 680,\n quality: 90,\n },\n ],\n };\n const images = getImageVariants(imagesVariants);\n\n return (\n \n );\n};\n","import * as ToggleMenuFlyout from '@ori-events/toggle-menu-flyout';\nimport { alpha, Backdrop, Link, Typography, styled, SHADOW_LEVEL1 } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport type { VFC } from 'react';\nimport { useCallback } from 'react';\n\nimport { JoinTileImage } from './JoinTileImage';\nimport { DESKTOP_BREAKPOINT } from '~/constants';\nimport { useNavigationContext } from '~/contexts/NavigationContext';\n\nconst JoinMenuRoot = styled('div')<{ ownerState: { isVisible: boolean } }>(\n ({ ownerState, theme }) => ({\n backgroundColor: theme.palette.common.white,\n border: `1px solid ${theme.palette.grey[100]}`,\n display: 'none',\n ...(ownerState.isVisible && {\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n boxShadow: SHADOW_LEVEL1,\n display: 'flex',\n flexDirection: 'column',\n left: 0,\n position: 'absolute',\n top: 'var(--top-nav-height)',\n transition: 'top var(--top-nav-height-animation)',\n width: '100%',\n },\n }),\n }),\n);\n\nconst JoinTilesWrapper = styled('div')(({ theme }) => ({\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n alignItems: 'center',\n borderBottom: `6px solid ${theme.palette.common.white}`,\n columnGap: 6,\n display: 'grid',\n gridAutoColumns: 'minmax(325px, 680px)',\n gridAutoFlow: 'column',\n gridTemplateRows: 325,\n justifyContent: 'center',\n overflow: 'hidden',\n },\n}));\n\nconst JoinTileLink = styled(Link)(({ theme }) => ({\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n color: theme.palette.common.white,\n display: 'flex',\n height: '100%',\n overflow: 'hidden',\n position: 'relative',\n width: '100%',\n\n '&:hover, &:focus, &:active': {\n color: theme.palette.common.white,\n webkitTapHighlightColor: 'transparent',\n },\n\n '&:hover::before': {\n background: alpha(theme.palette.common.black, 0.3),\n },\n\n '&:hover': {\n '.joinTileTitle': {\n background: '#cda89c',\n borderColor: '#cda89c',\n },\n },\n\n '&::before': {\n background: 'transparent',\n content: '\"\"',\n height: '100%',\n position: 'absolute',\n transition: '0.25s',\n width: '100%',\n },\n\n '& > img': {\n height: '100%',\n objectFit: 'cover',\n width: '100%',\n },\n },\n}));\n\nconst JoinTileDescription = styled(Typography)(({ theme }) => ({\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n fontWeight: theme.typography.fontWeightBold,\n margin: theme.spacing(0, 6),\n overflow: 'hidden',\n position: 'absolute',\n textAlign: 'center',\n textOverflow: 'ellipsis',\n textShadow: theme.shadows[1],\n top: '50%',\n transform: 'translateY(-150%)',\n whiteSpace: 'nowrap',\n },\n}));\n\nconst JoinTileTitle = styled(Typography)(({ theme }) => ({\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n border: `2px solid ${theme.palette.common.white}`,\n borderRadius: 23,\n fontSize: theme.typography.body1,\n fontWeight: theme.typography.fontWeightBold,\n left: '50%',\n lineHeight: theme.typography.pxToRem(41),\n maxWidth: 295,\n minWidth: 125,\n overflow: 'hidden',\n padding: theme.spacing(0, 6),\n position: 'absolute',\n textAlign: 'center',\n textOverflow: 'ellipsis',\n textShadow: theme.shadows[1],\n top: '50%',\n transform: 'translate(-50%, 50%)',\n transition: '0.25s',\n whiteSpace: 'nowrap',\n },\n}));\n\nconst JoinMenuIdkyLink = styled(Link)(({ theme }) => ({\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n alignSelf: 'center',\n color: theme.palette.default.main,\n fontSize: theme.typography.pxToRem(15),\n fontWeight: theme.typography.fontWeightBold,\n lineHeight: theme.typography.pxToRem(23),\n margin: theme.spacing(2, 0),\n textDecoration: 'underline',\n transition: '0.25s',\n\n '&:hover, &:focus, &:active': {\n color: theme.palette.default.light,\n webkitTapHighlightColor: 'transparent',\n },\n },\n}));\n\nexport const JoinMenu: VFC = () => {\n const { activeMenu, iDontKnowYetLink, joinTiles, toggleMenu } = useNavigationContext();\n const exitMenu = useCallback(() => toggleMenu(''), [toggleMenu]);\n\n const { getTestId } = useTestId();\n\n if (joinTiles.length === 0) {\n return null;\n }\n\n const isMenuActive = activeMenu === ToggleMenuFlyout.MenuTypes.JoinMenu;\n const ownerState = { isVisible: isMenuActive };\n\n return (\n \n \n {joinTiles.map(({ url, imageUrl, title, description }) => (\n \n {imageUrl ? (\n \n ) : null}\n \n {description}\n \n \n {title}\n \n \n ))}\n \n {iDontKnowYetLink?.url ? (\n {iDontKnowYetLink.title}\n ) : null}\n \n \n );\n};\n","import type { Theme } from '@ori-ui/mui';\n\nexport const createMarginWithImportant = (theme: Theme, spacing: number): string =>\n `${theme.spacing(spacing)} !important`;\n","import * as ToggleMenuFlyoutEvent from '@ori-events/toggle-menu-flyout';\nimport { ButtonBase, styled } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport type { VFC } from 'react';\n\nimport { DESKTOP_BREAKPOINT } from '~/constants';\nimport { useNavigationContext } from '~/contexts/NavigationContext';\nimport { dispatchToggleMenu } from '~/helpers';\nimport { createMarginWithImportant } from '~/utils/createMarginWithImportant';\n\nconst AboutLabelRoot = styled(ButtonBase)(({ theme }) => ({\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n color: theme.palette.text.primary,\n display: 'block',\n fontSize: theme.typography.pxToRem(15),\n fontWeight: theme.typography.fontWeightBold,\n marginRight: createMarginWithImportant(theme, 6),\n\n '&:hover, &:focus, &:active': {\n color: theme.palette.grey[600],\n },\n },\n\n [theme.breakpoints.up('lg')]: {\n marginRight: createMarginWithImportant(theme, 8),\n },\n}));\n\nconst handleClick = () => dispatchToggleMenu(ToggleMenuFlyoutEvent.MenuTypes.AboutMenu);\n\nexport const AboutIcon: VFC = () => {\n const { aboutLabel } = useNavigationContext();\n const { getTestId } = useTestId();\n\n return (\n \n {aboutLabel}\n \n );\n};\n","import { HeartsAnimation } from '@ori/favorites-heart';\nimport { usePersonalBeautyStore } from '@ori/personal-beauty-store';\nimport useTestId from '@ori/testid-generator';\nimport * as FavoritesUpdatedEvent from '@ori-events/favorites-updated';\nimport { ButtonBase, styled } from '@ori-ui/mui';\nimport type { VFC } from 'react';\nimport { useEffect, useState, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { DESKTOP_BREAKPOINT } from '~/constants';\nimport { useAppConfigurationContext } from '~/contexts/AppConfigurationContext';\nimport { useToggleMenu } from '~/hooks';\nimport { TranslationKeys } from '~/models';\n\nconst BurgerMenuIconRoot = styled(ButtonBase)<{ ownerState?: { isOpen?: boolean } }>(\n ({ ownerState, theme }) => ({\n color: theme.palette.grey.A700,\n fontSize: theme.typography.pxToRem(28),\n height: 32,\n marginRight: theme.spacing(5),\n padding: '0 0 0 3px',\n\n [theme.breakpoints.up('sm')]: {\n marginRight: theme.spacing(6),\n },\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n '&:hover': {\n '.burgerMenuIconLine': {\n height: 3,\n },\n },\n\n ...(ownerState?.isOpen && {\n '&:hover': {\n '.burgerMenuIconLine': {\n height: 2,\n },\n },\n }),\n },\n\n [theme.breakpoints.up('lg')]: {\n marginRight: theme.spacing(8),\n },\n }),\n);\n\nconst BurgerMenuIconWrapper = styled('div')<{\n ownerState?: { isOpen?: boolean; isMobile?: boolean };\n}>(({ ownerState, theme }) => ({\n display: 'none',\n\n ...(ownerState?.isMobile && {\n display: 'block',\n }),\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n display: 'block',\n\n ...(ownerState?.isMobile && {\n display: 'none',\n }),\n },\n}));\n\nconst BurgerMenuIconLine = styled('div')<{\n ownerState?: { isOpen?: boolean; isMobile?: boolean };\n}>(({ ownerState, theme }) => ({\n backgroundColor: theme.palette.grey.A700,\n height: 2,\n margin: '6px 0',\n opacity: 1,\n position: 'relative',\n transform: 'translateX(0) rotate(0) translateY(0)',\n transition: 'opacity 0.3s linear, transform 0.3s linear',\n width: 24,\n\n ...(ownerState?.isMobile && {\n display: 'block',\n }),\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n width: 25,\n ...(ownerState?.isOpen && {\n '&:nth-of-type(1)': {\n transform: 'rotate(45deg) translateY(9px) translateX(2px)',\n },\n\n '&:nth-of-type(2)': {\n opacity: 0,\n transform: 'translateX(22px)',\n },\n\n '&:nth-of-type(3)': {\n transform: 'rotate(-45deg) translateY(-9px) translateX(2px);',\n },\n }),\n },\n}));\n\nconst emptyFunction = () => {};\n\nexport const BurgerMenuIcon: VFC = () => {\n const [menuIsOpen, toggleMenu] = useToggleMenu();\n const [wasFavoriteAdded, setWasFavoriteAdded] = useState(false);\n const {\n tooltipWasShown: pbsTooltipWasShown,\n setTooltipWasShown: setPbsTooltipWasShown,\n pbsData,\n } = usePersonalBeautyStore();\n\n const { pbsIconInBurgerMenu } = useAppConfigurationContext();\n const [translate] = useTranslation();\n const ownerState = { isOpen: menuIsOpen };\n const { getTestId } = useTestId();\n\n const onClickCallback = useCallback(() => {\n const { firstName, lastName } = pbsData?.beautyStore?.profile ?? {};\n\n if (!pbsTooltipWasShown && pbsIconInBurgerMenu && firstName && lastName) {\n setPbsTooltipWasShown(true);\n }\n\n toggleMenu();\n }, [\n pbsTooltipWasShown,\n toggleMenu,\n setPbsTooltipWasShown,\n pbsIconInBurgerMenu,\n pbsData?.beautyStore?.profile,\n ]);\n\n const onFavoritesUpdated = ({\n detail: { favorites, lastUpdated },\n }: FavoritesUpdatedEvent.Event) => {\n if (lastUpdated && favorites.includes(lastUpdated)) {\n setWasFavoriteAdded(() => true);\n\n setTimeout(() => {\n setWasFavoriteAdded(() => false);\n }, 0);\n }\n };\n\n useEffect(() => {\n window.addEventListener(FavoritesUpdatedEvent.Name, onFavoritesUpdated as EventListener);\n\n return () => {\n window.removeEventListener(FavoritesUpdatedEvent.Name, onFavoritesUpdated as EventListener);\n };\n }, []);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { styled } from '@ori-ui/mui';\nimport { TooltipContainer as PbsTooltip } from '@ori/personal-beauty-store';\nimport type { FC } from 'react';\nimport { useCallback } from 'react';\n\nimport { BurgerMenuIcon } from './BurgerMenuIcon';\nimport { useToggleMenu } from '~/hooks';\n\nconst pbsTooltipOffset = {\n x: -10,\n y: -40,\n};\n\nconst BurgerMenuToggleRoot = styled('div')({\n position: 'relative',\n});\n\nconst StyledPbsTooltip = styled(PbsTooltip)({\n position: 'absolute',\n top: `calc(100% - ${pbsTooltipOffset.y}px)`,\n left: pbsTooltipOffset.x,\n});\n\nexport const BurgerMenuToggle: FC = () => {\n const [, toggleMenu] = useToggleMenu();\n\n const onPbsTooltipClick = useCallback(() => {\n toggleMenu();\n }, [toggleMenu]);\n\n return (\n \n \n \n \n );\n};\n","import * as ToggleMenuFlyoutEvent from '@ori-events/toggle-menu-flyout';\nimport { ButtonBase, Link, styled } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport type { VFC } from 'react';\n\nimport { DESKTOP_BREAKPOINT } from '~/constants';\nimport { useNavigationContext } from '~/contexts/NavigationContext';\nimport { dispatchToggleMenu } from '~/helpers';\nimport { createMarginWithImportant } from '~/utils/createMarginWithImportant';\n\nconst JoinLabel = styled(Link)<{\n disableRipple?: boolean;\n}>(({ theme }) => ({\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n color: theme.palette.text.primary,\n display: 'block',\n fontSize: theme.typography.pxToRem(15),\n fontWeight: theme.typography.fontWeightBold,\n marginRight: createMarginWithImportant(theme, 6),\n textDecoration: 'none',\n\n '&:hover, &:focus, &:active': {\n color: theme.palette.grey[600],\n cursor: 'pointer',\n },\n },\n\n [theme.breakpoints.up('lg')]: {\n marginRight: createMarginWithImportant(theme, 8),\n },\n}));\n\nconst handleClick = () => dispatchToggleMenu(ToggleMenuFlyoutEvent.MenuTypes.JoinMenu);\n\nexport const JoinIcon: VFC = () => {\n const { joinLabel, joinTiles, joinUrl } = useNavigationContext();\n const { getTestId } = useTestId();\n\n if (joinTiles.length > 0) {\n return (\n \n {joinLabel}\n \n );\n }\n\n if (joinUrl) {\n return {joinLabel};\n }\n\n return null;\n};\n","import { Search } from '@ori-ui/icons';\nimport { ButtonBase, styled } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport type { VFC } from 'react';\nimport { useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { TranslationKeys } from '../models';\nimport { useNavigationContext } from '~/contexts/NavigationContext';\n\nconst SearchIconRoot = styled(ButtonBase)(({ theme }) => ({\n color: theme.palette.grey[700],\n fontSize: theme.typography.pxToRem(28),\n marginRight: 'auto',\n\n [theme.breakpoints.up('sm')]: {\n marginRight: theme.spacing(6),\n },\n}));\n\nexport const SearchIcon: VFC = () => {\n const [translate] = useTranslation();\n const { hideSearchResultsTab, toggleIsSearchInputVisible, isSearchInputVisible } =\n useNavigationContext();\n const { getTestId } = useTestId();\n\n const handleClick = useCallback(() => {\n toggleIsSearchInputVisible();\n\n if (isSearchInputVisible) {\n hideSearchResultsTab();\n }\n }, [hideSearchResultsTab, isSearchInputVisible, toggleIsSearchInputVisible]);\n\n return (\n \n \n \n );\n};\n","import { MenuTypes } from '@ori-events/toggle-menu-flyout';\nimport { User, UserFilled } from '@ori-ui/icons';\nimport { ButtonBase, Link, styled } from '@ori-ui/mui';\nimport { useToken } from '@ori/auth';\nimport useTestId from '@ori/testid-generator';\nimport type { MouseEvent, VFC } from 'react';\nimport { useCallback } from 'react';\n\nimport { DESKTOP_BREAKPOINT } from '~/constants';\nimport { useAppConfigurationContext } from '~/contexts/AppConfigurationContext';\nimport { useNavigationContext } from '~/contexts/NavigationContext';\nimport { dispatchToggleMenu } from '~/helpers';\nimport { useHover } from '~/hooks';\nimport { createMarginWithImportant } from '~/utils/createMarginWithImportant';\n\nconst UserIconRoot = styled(Link)(({ theme }) => ({\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n alignItems: 'center',\n background: theme.palette.primary.main,\n borderRadius: '50%',\n color: theme.palette.common.white,\n display: 'flex',\n fontSize: theme.typography.pxToRem(20),\n height: 25,\n justifyContent: 'center',\n marginRight: createMarginWithImportant(theme, 6),\n width: 25,\n\n '&:hover, &:focus, &:active': {\n color: theme.palette.grey[600],\n },\n },\n\n [theme.breakpoints.up('lg')]: {\n marginRight: createMarginWithImportant(theme, 8),\n },\n}));\n\nconst UserIconButton = styled(ButtonBase)(({ theme }) => ({\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n alignItems: 'center',\n color: theme.palette.grey[600],\n display: 'flex',\n fontSize: theme.typography.pxToRem(28),\n marginRight: createMarginWithImportant(theme, 6),\n\n '&:hover, &:focus, &:active': {\n color: theme.palette.grey[600],\n },\n },\n\n [theme.breakpoints.up('lg')]: {\n marginRight: createMarginWithImportant(theme, 8),\n },\n}));\n\nexport const UserIcon: VFC = () => {\n const [ref, Icon] = useHover(UserFilled, User);\n const { ssoAdLoginUrl } = useAppConfigurationContext();\n const { activeMenu } = useNavigationContext();\n const { isAnonymousUser } = useToken();\n\n const { getTestId } = useTestId();\n\n const handleClick = useCallback(\n (event: MouseEvent) => {\n if ((event.ctrlKey || event.metaKey) && ssoAdLoginUrl) {\n window.location.href = ssoAdLoginUrl;\n\n return;\n }\n\n dispatchToggleMenu(MenuTypes.AccountSideMenu, activeMenu);\n },\n [activeMenu, ssoAdLoginUrl],\n );\n\n if (!isAnonymousUser) {\n return (\n \n \n \n );\n }\n\n return (\n \n \n \n );\n};\n","import { Box, Typography } from '@ori-ui/mui';\nimport type { VFC } from 'react';\n\nimport type { VipAccessData, VipAccessLabels } from '~/models';\n\ninterface VipOrderConsultantProps {\n vipAccessData: VipAccessData;\n vipAccessLabels: VipAccessLabels;\n}\n\nconst consultantDetail = (label: string, value: string) => `${label} ${value}`;\n\nexport const VipOrderConsultant: VFC = ({\n vipAccessData: {\n AvailableCredit,\n Debt,\n GroupBp,\n PersonalBp,\n RemainingDiscount,\n RemainingPrepayment,\n },\n vipAccessLabels: {\n AvailableCredit: availableCreditLabel,\n Debt: debtLabel,\n GroupBp: groupBpLabel,\n PersonalBp: personalBpLabel,\n RemainingDiscount: remainingDiscountLabel,\n RemainingPrepayment: remainingPrepaymentLabel,\n },\n}) => (\n \n {PersonalBp ? (\n {consultantDetail(personalBpLabel, PersonalBp)}\n ) : null}\n {GroupBp ? (\n {consultantDetail(groupBpLabel, GroupBp)}\n ) : null}\n {AvailableCredit ? (\n \n {consultantDetail(availableCreditLabel, AvailableCredit)}\n \n ) : null}\n {Debt ? {consultantDetail(debtLabel, Debt)} : null}\n {RemainingDiscount ? (\n \n {consultantDetail(remainingDiscountLabel, RemainingDiscount)}\n \n ) : null}\n {RemainingPrepayment ? (\n \n {consultantDetail(remainingPrepaymentLabel, RemainingPrepayment)}\n \n ) : null}\n \n);\n","/* eslint-disable react/jsx-no-bind -- Designed by MUI. */\n/* eslint-disable no-console -- We want to log errors in case of failed calls. */\nimport { Autocomplete, Button, styled, TextField } from '@ori-ui/mui';\nimport type { CancelTokenSource } from '@ori/axios';\nimport { axios } from '@ori/axios';\nimport type { MutableRefObject, VFC, ChangeEvent } from 'react';\nimport { useCallback, useRef, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\n\nimport { useAppConfigurationContext } from '~/contexts/AppConfigurationContext';\nimport {\n accessConsultantUrl,\n basketUrl,\n getConsultantNumbersUrl,\n getCustomAxios,\n vipAccessSwitchUrl,\n vipAccessSwitchValidateUrl,\n} from '~/helpers';\nimport type {\n AccessConsultantResponse,\n ConsultantNumberHint,\n GetConsultantNumbersResponse,\n VipAccessLabels,\n VipAccessValidateResponse,\n} from '~/models';\nimport { TranslationKeys } from '~/models';\n\nconst VipOrderFormRoot = styled('form')(({ theme }) => ({\n alignItems: 'center',\n columnGap: theme.spacing(4),\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n position: 'relative',\n}));\n\nconst VipOrderFormInput = styled(TextField)(() => ({\n width: 200,\n}));\n\nconst VipOrderFormSubmit = styled(Button)(() => ({\n width: 175,\n}));\n\ninterface VipOrderFormProps {\n vipAccessLabels: VipAccessLabels;\n}\n\nexport const VipOrderForm: VFC = ({\n vipAccessLabels: { ConsultantChangeConsultantNumber },\n}) => {\n const cancelToken: MutableRefObject = useRef(null);\n const formRef = useRef(null);\n const [areHintsLoading, setAreHintsLoading] = useState(false);\n const [consultantNumber, setConsultantNumber] = useState('');\n const [errorMessage, setErrorMessage] = useState(null);\n const [hints, setHints] = useState([]);\n const [isSubmitLocked, setIsSubmitLocked] = useState(true);\n const [translate] = useTranslation();\n\n const { currentLanguage } = useAppConfigurationContext();\n\n const { register, handleSubmit } = useForm();\n\n const handleChange = useCallback(\n (event: ChangeEvent) => {\n const { value } = event.target;\n setConsultantNumber(value);\n setErrorMessage(null);\n setAreHintsLoading(true);\n setIsSubmitLocked(true);\n\n if (!value) {\n return;\n }\n\n if (cancelToken.current?.cancel) {\n cancelToken.current.cancel('Operation canceled due to new request.');\n }\n\n cancelToken.current = { ...axios.CancelToken.source() };\n\n getCustomAxios(currentLanguage)\n .get(getConsultantNumbersUrl(value), {\n cancelToken: cancelToken.current.token,\n })\n .then(({ data }) => setHints(data.map((hint, index) => ({ index, hint }))))\n .catch((error: unknown) => console.error(error))\n .finally(() => {\n setAreHintsLoading(false);\n });\n },\n [currentLanguage],\n );\n\n const handleSelect = useCallback(\n (event: ChangeEvent) => {\n const id = (event.target as HTMLInputElement).textContent;\n setConsultantNumber(id ?? '');\n setHints([]);\n\n if (!id) {\n return;\n }\n\n getCustomAxios(currentLanguage)\n .post(vipAccessSwitchValidateUrl(id))\n .then(({ data: { message, result } }) => {\n setErrorMessage(message);\n setIsSubmitLocked(!result);\n })\n .catch((error: unknown) => console.error(error));\n },\n [currentLanguage],\n );\n\n const onSubmit = useCallback(async () => {\n try {\n const responseConsultant = await getCustomAxios(\n currentLanguage,\n ).get(accessConsultantUrl(consultantNumber));\n\n const {\n ConsultantNumber: consultant,\n ErrorMessage,\n IsAccessGranted,\n } = responseConsultant.data;\n\n if (IsAccessGranted) {\n try {\n await getCustomAxios(currentLanguage).post(vipAccessSwitchUrl(consultant));\n\n if (!formRef.current) {\n return;\n }\n\n formRef.current.submit();\n } catch (error: unknown) {\n setErrorMessage(translate(TranslationKeys.FailedToSubmit));\n console.warn(error);\n }\n } else {\n setErrorMessage(ErrorMessage);\n }\n } catch (error: unknown) {\n console.warn(error);\n }\n }, [consultantNumber, translate, currentLanguage]);\n\n return (\n \n String(hint.hint)}\n id=\"ConsultantNumber\"\n loading={areHintsLoading}\n loadingText={translate(TranslationKeys.Loading)}\n noOptionsText={translate(TranslationKeys.NoOptions)}\n options={hints}\n renderInput={(props) => (\n \n )}\n onChange={handleSelect}\n />\n \n {translate(TranslationKeys.Change)}\n \n \n );\n};\n","import { Link, SHADOW_LEVEL1, styled, Typography } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport type { VFC } from 'react';\n\nimport { VipOrderConsultant } from './VipOrderConsultant';\nimport { VipOrderForm } from './VipOrderForm';\nimport type { VipAccessData, VipAccessLabels } from '~/models';\n\nconst VipOrderRoot = styled('div')(({ theme }) => ({\n background: theme.palette.common.white,\n // TODO(10/05/2022): Remove after new release of ori-ui.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any -- not working theme augmentation\n borderRadius: (theme.shape as any).mediumComponentRadius,\n boxShadow: SHADOW_LEVEL1,\n display: 'flex',\n flexDirection: 'column',\n height: 'fit-content',\n margin: theme.spacing(1),\n padding: theme.spacing(3),\n position: 'absolute',\n right: theme.spacing(10),\n top: '100%',\n width: 400,\n\n [theme.breakpoints.down('sm')]: {\n right: 0,\n width: 'calc(100% - 40px)',\n },\n}));\n\nconst VipOrderLink = styled(Link)(({ theme }) => ({\n marginTop: theme.spacing(2),\n textDecoration: 'none',\n WebkitTapHighlightColor: 'transparent',\n width: 'fit-content',\n}));\n\nconst VipOrderLinkValue = styled(Typography)(({ theme }) => ({\n textDecoration: 'none',\n\n '&:hover, &:focus, &:active': {\n color: theme.palette.text.disabled,\n },\n}));\n\ninterface VipOrderProps {\n vipAccessData: VipAccessData;\n vipAccessLabels: VipAccessLabels;\n}\n\nexport const VipOrder: VFC = ({ vipAccessData, vipAccessLabels }) => {\n const { CustomerOnBehalfOfFormattedName, ConsultantNumber, Links } = vipAccessData;\n const { getTestId } = useTestId();\n\n return (\n \n {CustomerOnBehalfOfFormattedName}\n {ConsultantNumber}\n \n \n {Links.map((link) => (\n \n {link.Text}\n \n ))}\n \n );\n};\n","/* eslint-disable no-console -- We want to log errors */\nimport * as ToggleMenuFlyout from '@ori-events/toggle-menu-flyout';\nimport { NewUser, NewUserFilled } from '@ori-ui/icons';\nimport { IconButton, styled } from '@ori-ui/mui';\nimport { axios } from '@ori/axios';\nimport useTestId from '@ori/testid-generator';\nimport type { VFC } from 'react';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { VipOrder } from './VipOrder';\nimport { DESKTOP_BREAKPOINT } from '~/constants';\nimport { useAppConfigurationContext } from '~/contexts/AppConfigurationContext';\nimport { useNavigationContext } from '~/contexts/NavigationContext';\nimport { dispatchToggleMenu, getCustomAxios, onEnterKey, vipAccessUrl } from '~/helpers';\nimport type { VipAccessResponse } from '~/models';\nimport { log } from '~/utils';\n\nconst VipOrderIconRoot = styled(IconButton)(({ theme }) => ({\n alignItems: 'center',\n color: theme.palette.grey.A700,\n cursor: 'pointer',\n display: 'flex',\n fontSize: theme.typography.h4.fontSize,\n height: 'fit-content',\n marginRight: 'auto',\n\n [theme.breakpoints.up('sm')]: {\n marginLeft: theme.spacing(6),\n },\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n marginLeft: 'auto',\n },\n\n [theme.breakpoints.up('lg')]: {\n marginLeft: theme.spacing(4),\n },\n\n [theme.breakpoints.up('xl')]: {\n marginLeft: theme.spacing(6),\n },\n}));\n\nexport const VipOrderIcon: VFC = () => {\n const { activeMenu } = useNavigationContext();\n const [consultantData, setConsultantData] = useState({});\n const isPopupOpen = activeMenu === ToggleMenuFlyout.MenuTypes.VipOrder;\n const ref = useRef(null);\n const { getTestId } = useTestId();\n const { currentLanguage } = useAppConfigurationContext();\n\n useEffect(() => {\n const cancelSource = axios.CancelToken.source();\n\n const getData = async () => {\n try {\n const { data } = await getCustomAxios(currentLanguage).get(\n vipAccessUrl,\n { cancelToken: cancelSource.token },\n );\n setConsultantData(data);\n } catch (error) {\n if (axios.isCancel(error)) {\n log.info('consultantData data request canceled in useEffect cleanup');\n } else {\n console.warn(error);\n }\n }\n };\n\n getData();\n\n return () => {\n cancelSource.cancel();\n };\n }, [currentLanguage]);\n\n const onClick = useCallback(() => {\n dispatchToggleMenu(ToggleMenuFlyout.MenuTypes.VipOrder, activeMenu);\n }, [activeMenu]);\n\n if (!(consultantData.VipAccessData && consultantData.VipAccessLabels)) {\n return null;\n }\n\n return (\n
\n \n {isPopupOpen ? : }\n \n {isPopupOpen ? (\n \n ) : null}\n
\n );\n};\n","import { styled } from '@ori-ui/mui';\nimport type { VFC } from 'react';\n\nimport { AboutIcon } from './About/AboutIcon';\nimport { BurgerMenuToggle } from './BurgerMenu/BurgerMenuToggle';\nimport { JoinIcon } from './Join/JoinIcon';\nimport { SearchIcon } from './SearchIcon';\nimport { UserIcon } from './UserIcon';\nimport { VipOrderIcon } from './VipOrder';\nimport { useMobileWidth } from '~/hooks';\n\nconst LeftActionsSectionRoot = styled('div')(({ theme }) => ({\n alignItems: 'center',\n display: 'flex',\n maxWidth: 130,\n\n [theme.breakpoints.up('sm')]: {\n maxWidth: 'none',\n },\n}));\n\nexport const LeftActionsSection: VFC = () => {\n const isMobile = useMobileWidth();\n\n return (\n \n \n {isMobile ? : null}\n {isMobile ? : null}\n {!isMobile && }\n {!isMobile && }\n {!isMobile && }\n \n );\n};\n","import { Box, Link, styled } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport type { VFC } from 'react';\n\nimport { CN_MARKET, DESKTOP_BREAKPOINT } from '~/constants';\nimport { useAppConfigurationContext } from '~/contexts/AppConfigurationContext';\n\nconst OriflameLogoSvg = styled('svg')(({ theme }) => ({\n fill: theme.palette.grey[700],\n width: 100,\n transition: 'width var(--top-nav-height-animation)',\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n width: 135,\n },\n}));\n\nconst chineseLogo = (\n ({ [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: { width: 160 } })}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 151 45\"\n data-id=\"cn\"\n >\n \n \n);\n\nconst commonLogo = (\n \n \n \n);\n\nexport const OriflameLogo: VFC = () => {\n const { getTestId } = useTestId();\n const { tenant } = useAppConfigurationContext();\n\n return (\n \n \n {tenant === CN_MARKET ? chineseLogo : commonLogo}\n \n \n );\n};\n","import * as FavoritesUpdatedEvent from '@ori-events/favorites-updated';\nimport { MenuTypes } from '@ori-events/toggle-menu-flyout';\nimport * as UserAction from '@ori-events/user-action';\nimport { Heart, HeartFilled } from '@ori-ui/icons';\nimport { ButtonBase, styled } from '@ori-ui/mui';\nimport { HeartsAnimation } from '@ori/favorites-heart';\nimport useTestId from '@ori/testid-generator';\nimport type { VFC } from 'react';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { CLICK_FAVORITE_ICON, DESKTOP_BREAKPOINT } from '~/constants';\nimport { useNavigationContext } from '~/contexts/NavigationContext';\nimport { dispatchToggleMenu } from '~/helpers';\nimport { useHover } from '~/hooks';\nimport { FavoritesLink } from '~/models';\n\nconst FavoritesHeartRoot = styled(ButtonBase)(({ theme }) => ({\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n color: theme.palette.grey[600],\n fontSize: theme.typography.pxToRem(30),\n height: 'fit-content',\n marginLeft: 'auto',\n\n '&:hover, &:focus, &:active': {\n color: theme.palette.grey[600],\n cursor: 'pointer',\n },\n\n '& div:first-of-type': {\n alignItems: 'center',\n display: 'flex',\n },\n },\n\n [theme.breakpoints.up('lg')]: {\n marginLeft: theme.spacing(4),\n },\n\n [theme.breakpoints.up('xl')]: {\n marginLeft: theme.spacing(6),\n },\n}));\n\nconst emptyFunction = () => {};\n\nexport const FavoritesHeartIcon: VFC = () => {\n const [ref, Icon] = useHover(HeartFilled, Heart);\n const [wasFavoriteAdded, setWasFavoriteAdded] = useState(false);\n const [shouldFavoritesRender, setShouldFavoritesRender] = useState(false);\n const { activeMenu } = useNavigationContext();\n\n const { getTestId } = useTestId();\n\n const handleClick = useCallback(() => {\n UserAction.dispatch(CLICK_FAVORITE_ICON);\n\n if (window.location.pathname === FavoritesLink) {\n return;\n }\n\n dispatchToggleMenu(MenuTypes.FavoritesSideMenu, activeMenu);\n }, [activeMenu]);\n\n const onFavoritesUpdated = ({\n detail: { favorites, lastUpdated },\n }: FavoritesUpdatedEvent.Event) => {\n if (lastUpdated && favorites.includes(lastUpdated)) {\n setWasFavoriteAdded(() => true);\n\n setTimeout(() => {\n setWasFavoriteAdded(() => false);\n }, 0);\n }\n };\n\n useEffect(() => {\n window.addEventListener(FavoritesUpdatedEvent.Name, onFavoritesUpdated as EventListener);\n\n return () => {\n window.removeEventListener(FavoritesUpdatedEvent.Name, onFavoritesUpdated as EventListener);\n };\n }, []);\n\n useEffect(() => {\n const getConfigElement = document.getElementById('favorites-provider-root');\n setShouldFavoritesRender(Boolean(getConfigElement));\n }, []);\n\n if (!shouldFavoritesRender) {\n return null;\n }\n\n return (\n \n \n \n \n \n );\n};\n","import * as ToggleMenuFlyoutEvent from '@ori-events/toggle-menu-flyout';\nimport * as UserAction from '@ori-events/user-action';\nimport { Notification, NotificationFilled } from '@ori-ui/icons';\nimport { Badge, IconButton, styled } from '@ori-ui/mui';\nimport { useToken } from '@ori/auth';\nimport type { VFC } from 'react';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { CLICK_NOTIFICATION_ICON, DESKTOP_BREAKPOINT } from '~/constants';\nimport { useAppConfigurationContext } from '~/contexts/AppConfigurationContext';\nimport { useNotificationsContext } from '~/contexts/NotificationsContext';\nimport { dispatchToggleMenu } from '~/helpers';\nimport { useHover } from '~/hooks';\n\nconst NotificationBellIconRoot = styled('div')(({ theme }) => ({\n marginLeft: 'auto',\n\n [theme.breakpoints.up('sm')]: {\n marginLeft: theme.spacing(6),\n },\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n marginLeft: 'auto',\n },\n\n [theme.breakpoints.up('lg')]: {\n marginLeft: theme.spacing(4),\n },\n\n [theme.breakpoints.up('xl')]: {\n marginLeft: theme.spacing(6),\n },\n}));\n\nconst NotificationBellIconButton = styled(IconButton)(({ theme }) => ({\n color: theme.palette.grey.A700,\n fontSize: theme.typography.h4.fontSize,\n padding: 0,\n\n '&:hover, &:focus, &:active': {\n background: 'none',\n color: theme.palette.grey.A700,\n },\n}));\n\nexport const NotificationBellIcon: VFC = () => {\n const [ref, Icon] = useHover(NotificationFilled, Notification);\n const [isClicked, setIsClicked] = useState(false);\n const { shouldDisplayNotificationIcon, tenant } = useAppConfigurationContext();\n const { customerId, isAnonymousUser } = useToken();\n const { notificationsCount, loadNotificationsCount } = useNotificationsContext();\n const isVisible = shouldDisplayNotificationIcon && !isAnonymousUser;\n\n useEffect(() => {\n const abortController = new AbortController();\n\n if (isVisible) {\n loadNotificationsCount(customerId, tenant, {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any -- microsoft's implementation of AbortSignalLike is not type compatible with native AbortSignal\n abortSignal: abortController.signal as any,\n }).catch((error: Error) => {\n // No need to do anything if we aborted in cleanup function\n if (error.name === 'AbortError') {\n return;\n }\n\n throw error;\n });\n }\n\n return () => {\n // Abort previous\n abortController.abort();\n };\n }, [isVisible, customerId, tenant, loadNotificationsCount]);\n\n const handleClick = useCallback(() => {\n UserAction.dispatch(CLICK_NOTIFICATION_ICON);\n setIsClicked(true);\n\n dispatchToggleMenu(ToggleMenuFlyoutEvent.MenuTypes.Notifications);\n }, []);\n\n if (!isVisible) {\n return null;\n }\n\n return (\n \n \n \n \n \n \n \n );\n};\n","import { styled } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport type { VFC } from 'react';\nimport { useEffect, useRef } from 'react';\n\nimport { DESKTOP_BREAKPOINT } from '~/constants';\n\n/*\n Note: this is a temporary solution. PBS icon is taken from the markup and relocated\n to avoid losing event listener attached to it. Dispatching custom event prevents\n the tooltip from showing too early.\n*/\n\nconst PbsIconRoot = styled('div')(({ theme }) => ({\n marginLeft: 'auto',\n\n [theme.breakpoints.up('sm')]: {\n marginLeft: theme.spacing(6),\n },\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n marginLeft: 'auto',\n },\n\n [theme.breakpoints.up('lg')]: {\n marginLeft: theme.spacing(4),\n },\n\n [theme.breakpoints.up('xl')]: {\n marginLeft: theme.spacing(6),\n },\n}));\n\nconst SHOW_PBSLITE_TOOLTIP_EVENT_NAME = 'show-pbslite-tooltip';\nconst SHOW_PBSLITE_TOOLTIP_TIMEOUT = 5000;\nconst STORAGE_PBSLITE_DONT_OPEN_KEY = 'NHeaderSponsor-dont-open';\n\nconst relocateElement = (element: HTMLElement, target: HTMLElement) => {\n const elementParent = element.parentElement;\n elementParent?.removeChild(element);\n target.append(element);\n};\n\nconst shouldOpenTooltip = () => {\n try {\n return sessionStorage.getItem(STORAGE_PBSLITE_DONT_OPEN_KEY) === null;\n } catch {\n return true;\n }\n};\n\nexport const PbsIcon: VFC = () => {\n const ref = useRef(null);\n const { getTestId } = useTestId();\n\n useEffect(() => {\n const pbsIcon = document.querySelector('.js-header-sponsor');\n\n if (pbsIcon && ref.current) {\n relocateElement(pbsIcon, ref.current);\n pbsIcon.classList.remove('pbs-hidden');\n\n setTimeout(() => {\n if (shouldOpenTooltip()) {\n window.dispatchEvent(new CustomEvent(SHOW_PBSLITE_TOOLTIP_EVENT_NAME));\n }\n }, SHOW_PBSLITE_TOOLTIP_TIMEOUT);\n }\n }, []);\n\n return (\n \n );\n};\n","import { keyframes } from '@emotion/react';\nimport { Typography, styled } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport type { VFC } from 'react';\nimport { useEffect, useState } from 'react';\n\nconst growShrinkAnimation = keyframes`\n 50% {\n transform: scale(1.2);\n }\n`;\n\nconst ShoppingBagCounterRoot = styled(Typography)<{\n ownerState: { isAnimationActive: boolean };\n}>(({ theme, ownerState }) => ({\n alignItems: 'center',\n backgroundColor: theme.palette.primary.main,\n border: `1px solid ${theme.palette.common.white}`,\n borderRadius: '50%',\n bottom: theme.spacing(2),\n color: theme.palette.common.white,\n display: 'flex',\n fontSize: theme.typography.pxToRem(10),\n fontWeight: theme.typography.fontWeightBold,\n height: 22,\n justifyContent: 'center',\n left: theme.spacing(3),\n letterSpacing: 0,\n position: 'absolute',\n width: 22,\n\n ...(ownerState.isAnimationActive && {\n animationDuration: '1s',\n animationName: `${growShrinkAnimation}`,\n }),\n}));\n\nconst MINIBAG_COUNTER_ANIMATION_TIMEOUT = 1000;\n\ninterface ShoppingBagCounterProps {\n shoppingBagQuantity: number;\n}\n\nexport const ShoppingBagCounter: VFC = ({ shoppingBagQuantity }) => {\n const [isAnimationActive, setIsAnimationActive] = useState(false);\n const ownerState = { isAnimationActive };\n const { getTestId } = useTestId();\n\n useEffect(() => setIsAnimationActive(true), [shoppingBagQuantity]);\n\n useEffect(() => {\n if (isAnimationActive) {\n setTimeout(() => setIsAnimationActive(false), MINIBAG_COUNTER_ANIMATION_TIMEOUT);\n }\n }, [isAnimationActive]);\n\n return (\n \n {shoppingBagQuantity}\n \n );\n};\n","import * as BasketUpdated from '@ori-events/basket-updated';\nimport * as RequestShoppingContext from '@ori-events/request-shopping-context';\nimport * as ShoppingContextLoaded from '@ori-events/shopping-context-loaded';\nimport * as ToggleMenuFlyoutEvent from '@ori-events/toggle-menu-flyout';\nimport { EmptyBasket, MiniBag, MiniBagFilled, ShoppingBasketFilled } from '@ori-ui/icons';\nimport { ButtonBase, Link, styled } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport type { VFC } from 'react';\nimport { useCallback, useMemo, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { ShoppingBagCounter } from './ShoppingBagCounter';\nimport { CN_MARKET, DESKTOP_BREAKPOINT } from '~/constants';\nimport { useAppConfigurationContext } from '~/contexts/AppConfigurationContext';\nimport { useHover } from '~/hooks';\nimport { TranslationKeys } from '~/models';\n\nconst ShoppingBagIconRoot = styled(Link)<{\n ownerState: { isCnMarket: boolean };\n disableRipple?: boolean;\n}>(({ ownerState, theme }) => ({\n alignItems: 'center',\n color: theme.palette.grey[600],\n display: 'flex',\n fontSize: theme.typography.pxToRem(30),\n height: '100%',\n marginLeft: 'auto',\n position: 'relative',\n\n ...(ownerState.isCnMarket && {\n color: theme.palette.error.main,\n }),\n\n '&:hover, &:focus, &:active': {\n color: theme.palette.grey[600],\n\n ...(ownerState.isCnMarket && {\n color: theme.palette.error.main,\n }),\n },\n\n [theme.breakpoints.up('sm')]: {\n marginLeft: theme.spacing(6),\n },\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n marginLeft: 'auto',\n },\n\n [theme.breakpoints.up('lg')]: {\n marginLeft: theme.spacing(4),\n },\n\n [theme.breakpoints.up('xl')]: {\n marginLeft: theme.spacing(6),\n },\n}));\n\nconst E_CATALOGUE_ROOT_ID = 'catalogue-ipaper-root';\nconst eCatalogueRootElement = document.getElementById(E_CATALOGUE_ROOT_ID);\n\nconst getFLyoutEvent = (shouldOpen?: boolean) =>\n new CustomEvent(ToggleMenuFlyoutEvent.Name, {\n detail: { menuType: ToggleMenuFlyoutEvent.MenuTypes.Minibag, shouldOpen },\n });\n\nexport const ShoppingBagIcon: VFC = () => {\n const [translate] = useTranslation();\n const isECatalogue = Boolean(eCatalogueRootElement);\n const mobileBreakpoint = window.matchMedia('(max-width: 600px)');\n const mobileBreakpointECatalogue = window.matchMedia('(max-width: 1024px)');\n const { tenant } = useAppConfigurationContext();\n const { getTestId } = useTestId();\n\n const isMobile = useCallback(\n () => (isECatalogue ? mobileBreakpointECatalogue.matches : mobileBreakpoint.matches),\n [isECatalogue, mobileBreakpointECatalogue.matches, mobileBreakpoint.matches],\n );\n const ownerState = { isCnMarket: tenant === CN_MARKET };\n let iconOnHover = MiniBagFilled;\n let icon = MiniBag;\n\n if (tenant === CN_MARKET) {\n iconOnHover = ShoppingBasketFilled;\n icon = EmptyBasket;\n }\n\n const [ref, Icon] = useHover(iconOnHover, icon);\n\n const [shoppingBagQuantity, setShoppingBagQuantity] = useState(0);\n const [isReceivedShoppingContext, setIsReceivedShoppingContext] = useState(false);\n\n const updateShoppingBagQuantity = (newShoppingBagQuantity: number) => {\n if (newShoppingBagQuantity >= 0) {\n setShoppingBagQuantity(newShoppingBagQuantity);\n }\n };\n\n const shoppingContextLoadedEventHandler = useCallback((event: ShoppingContextLoaded.Event) => {\n updateShoppingBagQuantity(event.detail.shoppingBag.shoppingBagQuantity);\n setIsReceivedShoppingContext(true);\n }, []) as EventListener;\n\n const basketUpdatedEventHandler = useCallback((event: BasketUpdated.Event) => {\n updateShoppingBagQuantity(event.detail.shoppingBag.shoppingBagQuantity);\n }, []) as EventListener;\n\n const triggerRequestShoppingContext = () => {\n const requestShoppongContextEvent = new CustomEvent(RequestShoppingContext.Name);\n window.dispatchEvent(requestShoppongContextEvent);\n };\n\n useEffect(() => {\n window.addEventListener(ShoppingContextLoaded.Name, shoppingContextLoadedEventHandler);\n window.addEventListener(BasketUpdated.Name, basketUpdatedEventHandler);\n\n triggerRequestShoppingContext();\n\n return () => {\n window.removeEventListener(ShoppingContextLoaded.Name, shoppingContextLoadedEventHandler);\n window.removeEventListener(BasketUpdated.Name, basketUpdatedEventHandler);\n };\n }, [shoppingContextLoadedEventHandler, basketUpdatedEventHandler]);\n\n useEffect(() => {\n if (isReceivedShoppingContext) {\n window.removeEventListener(ShoppingContextLoaded.Name, shoppingContextLoadedEventHandler);\n }\n }, [isReceivedShoppingContext, shoppingContextLoadedEventHandler]);\n\n const onMouseEnter = useCallback(() => {\n if (isECatalogue || isMobile()) {\n return;\n }\n\n window.dispatchEvent(getFLyoutEvent(true));\n }, [isECatalogue, isMobile]);\n\n const onMouseLeave = useCallback(() => {\n if (isECatalogue || isMobile()) {\n return;\n }\n\n window.dispatchEvent(getFLyoutEvent(false));\n }, [isECatalogue, isMobile]);\n\n const onMobileEcataloguePageClick = useCallback(() => {\n window.dispatchEvent(getFLyoutEvent());\n }, []);\n\n const ShoppingBagContent = useMemo(\n () => (\n <>\n \n {Boolean(shoppingBagQuantity) && (\n \n )}\n \n ),\n [shoppingBagQuantity, Icon],\n );\n\n if (isMobile() && isECatalogue) {\n return (\n \n {ShoppingBagContent}\n \n );\n }\n\n return (\n \n {ShoppingBagContent}\n \n );\n};\n","import * as ToggleMenuFlyout from '@ori-events/toggle-menu-flyout';\nimport * as UserAction from '@ori-events/user-action';\nimport { Clear, Search } from '@ori-ui/icons';\nimport { Backdrop, ButtonBase, SHADOW_LEVEL3, styled } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport type { ChangeEvent, KeyboardEvent, VFC } from 'react';\nimport { useCallback, useEffect } from 'react';\nimport { useDebounce, useThrottledCallback } from 'use-debounce';\n\nimport { DESKTOP_BREAKPOINT, SEARCH_THROTTLE_TIME, START_SEARCH } from '~/constants';\nimport { useNavigationContext } from '~/contexts/NavigationContext';\nimport { useWindowDimensionsContext } from '~/contexts/WindowDimensionsContext';\nimport { dispatchToggleMenu } from '~/helpers';\nimport { useMobileWidth, useTranslationByKey } from '~/hooks';\nimport { TranslationKeys } from '~/models';\n\nconst SearchInputRoot = styled('div')<{\n ownerState: { isVisible: boolean };\n}>(({ ownerState, theme }) => ({\n background: theme.palette.common.white,\n boxSizing: 'border-box',\n height: 68,\n justifySelf: 'center',\n left: 0,\n marginLeft: 'auto',\n padding: theme.spacing(3, 0),\n position: 'fixed',\n top: 56,\n width: '100%',\n zIndex: theme.zIndex.speedDial,\n\n ...(ownerState.isVisible && {\n display: 'flex',\n justifyContent: 'center',\n }),\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n background: 'transparent',\n display: 'block',\n height: 38,\n marginLeft: 'auto',\n padding: theme.spacing(0, 0, 0, 3),\n position: 'static',\n width: 150,\n zIndex: 'unset',\n },\n\n [theme.breakpoints.up('lg')]: {\n marginLeft: 'auto',\n width: 185,\n },\n\n [theme.breakpoints.up('xl')]: {\n marginLeft: theme.spacing(6),\n width: 220,\n },\n}));\n\nconst SearchInputBox = styled('div')<{\n ownerState: { isFocus: boolean };\n}>(({ ownerState, theme }) => ({\n alignItems: 'center',\n background: theme.palette.grey[100],\n borderRadius: 18,\n boxSizing: 'border-box',\n color: theme.palette.grey[600],\n display: 'flex',\n fontSize: theme.typography.pxToRem(23),\n height: 38,\n paddingLeft: theme.spacing(3),\n width: 'calc(100% - 30px)',\n\n ...(ownerState.isFocus && {\n boxShadow: SHADOW_LEVEL3,\n }),\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n height: 38,\n visibility: 'visible',\n width: 150,\n },\n\n [theme.breakpoints.up('lg')]: {\n width: 185,\n },\n\n [theme.breakpoints.up('xl')]: {\n maxWidth: 220,\n width: 220,\n },\n}));\n\nconst SearchInputInput = styled('input')(({ theme }) => ({\n background: theme.palette.grey[100],\n border: 'none',\n color: theme.palette.text.primary,\n fontSize: theme.typography.pxToRem(16),\n height: 20,\n marginLeft: 8,\n width: '100%',\n\n '&::placeholder': {\n color: theme.palette.text.primary,\n },\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n width: 65,\n },\n\n [theme.breakpoints.up('lg')]: {\n width: 95,\n },\n\n [theme.breakpoints.up('xl')]: {\n maxWidth: 135,\n width: 135,\n },\n}));\n\nconst SearchInputClear = styled(ButtonBase)<{\n ownerState: { isFocus: boolean };\n}>(({ ownerState, theme }) => ({\n height: 23,\n marginRight: theme.spacing(3),\n width: 23,\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n fontSize: theme.typography.pxToRem(20),\n marginLeft: theme.spacing(2),\n marginRight: 0,\n visibility: 'hidden',\n\n ...(ownerState.isFocus && {\n visibility: 'visible',\n }),\n },\n}));\n\nconst onEnterPressHandler = (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n window.location.href = `/search?query=${(e.target as HTMLInputElement).value}`;\n }\n};\n\nexport const SearchInput: VFC = () => {\n const translations = useTranslationByKey();\n const {\n isSearchInputFocus,\n isSearchInputVisible,\n setIsSearchInputFocus,\n getSearchResults,\n setSearchInputValue,\n searchInputValue,\n hideSearchResultsTab,\n clearSearchResults,\n startFetchingSearchData,\n toggleMenu,\n activeMenu,\n } = useNavigationContext();\n const { syncSizes } = useWindowDimensionsContext();\n const isMenuActive = activeMenu === ToggleMenuFlyout.MenuTypes.SearchResults;\n const isMobile = useMobileWidth();\n const ownerState = {\n isVisible: isSearchInputVisible,\n isFocus: isSearchInputFocus,\n };\n const { getTestId } = useTestId();\n\n const [debouncedValue] = useDebounce(searchInputValue, 350);\n\n const throttledAnalytics = useThrottledCallback(\n () => UserAction.dispatch(START_SEARCH),\n SEARCH_THROTTLE_TIME,\n );\n\n const onFocusHandler = useCallback(() => {\n setIsSearchInputFocus(true);\n syncSizes();\n }, [setIsSearchInputFocus, syncSizes]);\n\n const onChangeHandler = useCallback(\n ({ target: { value } }: ChangeEvent) => {\n const isValueEmpty = value.length === 0;\n\n if (isValueEmpty) {\n toggleMenu('');\n clearSearchResults();\n }\n\n setSearchInputValue(value);\n\n throttledAnalytics();\n\n if (!isValueEmpty && !isMenuActive) {\n dispatchToggleMenu(ToggleMenuFlyout.MenuTypes.SearchResults);\n }\n startFetchingSearchData();\n },\n [\n throttledAnalytics,\n clearSearchResults,\n isMenuActive,\n setSearchInputValue,\n startFetchingSearchData,\n toggleMenu,\n ],\n );\n\n const clearInput = useCallback(() => {\n setSearchInputValue('');\n clearSearchResults();\n toggleMenu('');\n setIsSearchInputFocus(false);\n }, [clearSearchResults, setIsSearchInputFocus, setSearchInputValue, toggleMenu]);\n\n const handleOnBlur = useCallback(() => {\n if (!searchInputValue) {\n setIsSearchInputFocus(false);\n }\n syncSizes();\n }, [searchInputValue, setIsSearchInputFocus, syncSizes]);\n\n useEffect(() => {\n getSearchResults(debouncedValue);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- we want to fetch results ONLY when input value changes (with debounce)\n }, [debouncedValue]);\n\n if (isMobile && !isSearchInputVisible) {\n return null;\n }\n\n return (\n \n \n \n \n \n \n \n \n {isMobile && !isMenuActive ? (\n \n ) : null}\n \n );\n};\n","import { styled } from '@ori-ui/mui';\nimport { useToken } from '@ori/auth';\nimport type { VFC } from 'react';\n\nimport { FavoritesHeartIcon } from './FavoritesHeartIcon';\nimport { NotificationBellIcon } from './NotificationBellIcon';\nimport { PbsIcon } from './PbsIcon';\nimport { ShoppingBagIcon } from './ShoppingBagIcon/ShoppingBagIcon';\nimport { VipOrderIcon } from './VipOrder';\nimport { SearchInput } from '~/components/SearchInput';\nimport { DESKTOP_BREAKPOINT } from '~/constants';\nimport { useAppConfigurationContext } from '~/contexts/AppConfigurationContext';\nimport { useMobileWidth } from '~/hooks';\n\nconst RightActionsSectionRoot = styled('div')(({ theme }) => ({\n alignItems: 'center',\n display: 'flex',\n gridColumn: '3/4',\n justifySelf: 'end',\n maxWidth: 130,\n width: '100%',\n\n [theme.breakpoints.up('sm')]: {\n justifyContent: 'end',\n },\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n maxWidth: 'none',\n },\n}));\n\nexport const RightActionsSection: VFC = () => {\n const isMobile = useMobileWidth();\n const { isAnonymousUser } = useToken();\n const { pbsIconInBurgerMenu } = useAppConfigurationContext();\n\n const showFavorites = !isAnonymousUser && !isMobile;\n\n return (\n \n \n {!pbsIconInBurgerMenu && }\n {!isMobile && }\n \n {showFavorites ? : null}\n \n \n );\n};\n","import { Products } from '@ori-ui/icons';\nimport { styled } from '@ori-ui/mui';\nimport type { ImageSizesHelperParams } from '@ori/image-sizes-helper';\nimport { generateSrcSet, getImageVariants } from '@ori/image-sizes-helper';\nimport useTestId from '@ori/testid-generator';\nimport type { VFC } from 'react';\n\nimport { DESKTOP_BREAKPOINT } from '~/constants';\n\nconst ProductImageRoot = styled('img')<{ ownerState: { isSmall: boolean } }>(\n ({ ownerState, theme }) => ({\n width: 70,\n height: 70,\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n width: 88,\n height: 88,\n objectFit: 'scale-down',\n\n ...(ownerState.isSmall && {\n width: 65,\n height: 65,\n }),\n },\n }),\n);\n\nconst ProductImageNoImage = styled('div')(({ theme }) => ({\n alignItems: 'center',\n color: theme.palette.text.primary,\n display: 'flex',\n fontSize: theme.typography.h3.fontSize,\n justifyContent: 'center',\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n width: 65,\n height: 65,\n },\n}));\n\ninterface ProductImageProps {\n image: string;\n name: string;\n size?: string;\n}\n\nexport const ProductImage: VFC = ({ image, name, size }) => {\n const { getTestId } = useTestId();\n\n if (!image) {\n return (\n \n \n \n );\n }\n const imagesVariants: ImageSizesHelperParams = {\n url: image,\n params: [\n {\n width: 65,\n height: 65,\n quality: 90,\n },\n {\n width: 70,\n height: 70,\n quality: 90,\n },\n {\n width: 88,\n height: 88,\n quality: 90,\n },\n {\n width: 105,\n height: 105,\n quality: 70,\n },\n {\n width: 123,\n height: 123,\n quality: 70,\n },\n {\n width: 140,\n height: 140,\n quality: 50,\n },\n {\n width: 184,\n height: 184,\n quality: 50,\n },\n {\n width: 193,\n height: 193,\n quality: 35,\n },\n {\n width: 210,\n height: 210,\n quality: 35,\n },\n ],\n };\n\n const images = getImageVariants(imagesVariants);\n const isSmall = size === 'small';\n const imageSizes = isSmall ? '65px' : '(max-width: 1023px) 70px, 88px';\n const ownerState = { isSmall };\n\n return (\n \n );\n};\n","import { Link, styled } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport type { VFC } from 'react';\nimport { useCallback } from 'react';\n\nimport { ProductImage } from './ProductImage';\nimport { DESKTOP_BREAKPOINT } from '~/constants';\n\nconst ProductTileRoot = styled('div')<{ ownerState: { isLarge: boolean } }>(\n ({ ownerState, theme }) => ({\n boxSizing: 'border-box',\n color: theme.palette.text.disabled,\n height: 113,\n lineHeight: theme.typography.pxToRem(18),\n\n ...(ownerState.isLarge && {\n flexBasis: '40%',\n fontSize: theme.typography.caption.fontSize,\n justifyContent: 'center',\n lineHeight: theme.typography.pxToRem(18),\n margin: theme.spacing(0, '5%', 3),\n textAlign: 'center',\n }),\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n ...(ownerState.isLarge && {\n flexBasis: 'unset',\n height: 148,\n margin: theme.spacing(12, '4%', 0),\n width: '17%',\n }),\n },\n }),\n);\n\nconst ProductTileProductLink = styled(Link)<{ ownerState: { isLarge: boolean } }>(\n ({ ownerState, theme }) => ({\n alignItems: 'center',\n color: theme.palette.text.primary,\n display: 'flex',\n flexDirection: 'column',\n textDecoration: 'none',\n\n ...(ownerState.isLarge && {\n background: theme.palette.common.white,\n }),\n\n '&:hover, &:focus, &:active': {\n color: theme.palette.grey[600],\n WebkitTapHighlightColor: 'transparent',\n },\n }),\n);\n\nconst ProductTileTitle = styled('span')<{ ownerState: { isLarge: boolean } }>(\n ({ ownerState, theme }) => ({\n ...(ownerState.isLarge && {\n display: '-webkit-box',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: 2,\n }),\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n '&:hover, &:focus, &:active': {\n ...(ownerState.isLarge && {\n color: theme.palette.text.primary,\n }),\n },\n },\n }),\n);\n\nconst ProductTilePriceBox = styled('div')<{ ownerState: { isLarge: boolean } }>(\n ({ ownerState }) => ({\n display: 'flex',\n flexDirection: 'column',\n\n ...(ownerState.isLarge && {\n alignItems: 'stretch',\n flexDirection: 'row',\n justifyContent: 'space-around',\n width: '100%',\n }),\n }),\n);\nconst ProductTileActualPrice = styled('span')<{ ownerState: { isLarge: boolean } }>(\n ({ ownerState, theme }) => ({\n fontWeight: theme.typography.fontWeightBold,\n marginTop: theme.spacing(2),\n\n ...(ownerState.isLarge && {\n margin: theme.spacing(0),\n }),\n }),\n);\n\nconst ProductTileStandardPrice = styled('span')<{ ownerState: { isLarge: boolean } }>(\n ({ ownerState, theme }) => ({\n textDecoration: 'line-through',\n\n ...(ownerState.isLarge && {\n color: theme.palette.text.disabled,\n }),\n }),\n);\n\ninterface ProductTileProps {\n basicCataloguePrice?: string;\n currentPrice?: string;\n displayProductName?: boolean;\n imageUrl?: string;\n largeVersion?: boolean;\n position: number;\n productCode?: string;\n productName?: string;\n onClick: (position: number) => void;\n}\n\nexport const ProductTile: VFC = ({\n basicCataloguePrice,\n currentPrice,\n displayProductName = false,\n imageUrl,\n largeVersion = false,\n position,\n productCode,\n productName,\n onClick,\n}) => {\n const productUrl = `/products/product?code=${productCode ?? ''}`;\n const ownerState = { isLarge: largeVersion };\n const { getTestId } = useTestId();\n\n const onClickHandler = useCallback(() => {\n onClick(Number(position));\n }, [onClick, position]);\n\n return (\n \n \n \n {!!displayProductName && (\n \n {productName}\n \n )}\n \n {currentPrice}\n {currentPrice !== basicCataloguePrice && (\n \n {basicCataloguePrice}\n \n )}\n \n \n \n );\n};\n","import * as SearchSuggestionClick from '@ori-events/search-suggestion-click';\nimport { styled, Typography } from '@ori-ui/mui';\nimport { ContentType, Placement } from '@ori/analytics-data';\nimport useTestId from '@ori/testid-generator';\nimport type { VFC } from 'react';\nimport { useCallback } from 'react';\n\nimport { ProductTile } from '~/components/common/ProductTile';\nimport { DESKTOP_BREAKPOINT } from '~/constants';\nimport { useAppConfigurationContext } from '~/contexts/AppConfigurationContext';\nimport { useNavigationContext } from '~/contexts/NavigationContext';\nimport { formatProduct, getSignalsData } from '~/helpers';\nimport { useTranslationByKey } from '~/hooks';\nimport type { Product, SendSignalToFusionProps } from '~/models';\nimport { TranslationKeys } from '~/models';\nimport { sendSignalToFusion } from '~/utils';\n\nconst PopularProductsRoot = styled('div')(({ theme }) => ({\n boxSizing: 'border-box',\n height: '100%',\n position: 'relative',\n width: '100%',\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n display: 'flex',\n flexDirection: 'column',\n gridColumn: 2,\n gridRow: '1 / 3',\n margin: 0,\n padding: '0 calc(10% - 60px) 0 10%',\n textAlign: 'center',\n\n '&::before': {\n backgroundColor: theme.palette.grey[100],\n content: '\"\"',\n height: '100%',\n left: 0,\n marginLeft: theme.spacing(5),\n position: 'absolute',\n width: 4,\n },\n },\n}));\n\nconst PopularProductsHeader = styled(Typography)(({ theme }) => ({\n fontWeight: theme.typography.fontWeightBold,\n marginBottom: theme.spacing(3),\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n marginBottom: theme.spacing(-6),\n },\n}));\n\nconst PopularProductsWrapper = styled('div')(() => ({\n display: 'flex',\n flexWrap: 'wrap',\n margin: 0,\n padding: 0,\n}));\n\ninterface PopularProductProps {\n formattedToken: string;\n}\n\nexport const PopularProducts: VFC = ({ formattedToken }) => {\n const { searchResults, searchTimestamp } = useNavigationContext();\n const { tenant, globalApiUrl, currentLanguage } = useAppConfigurationContext();\n const translations = useTranslationByKey();\n const { getTestId } = useTestId();\n\n const onClick = useCallback(\n (position: number) => {\n if (searchResults?.Products.length == null) {\n return;\n }\n\n const searchSignalsData = getSignalsData(searchResults, position, searchTimestamp);\n\n const searchSuggestionClickData: SearchSuggestionClick.Data = {\n itemData: formatProduct(searchResults.Products[position] as Product),\n itemType: ContentType.Product,\n searchQuery: searchResults.Query,\n placement: Placement.TopNavigationSearchSuggestions,\n position,\n };\n\n const sendSignalData: SendSignalToFusionProps = {\n data: searchSignalsData,\n tenant,\n formattedToken,\n globalApiUrl,\n acceptLanguage: currentLanguage,\n };\n\n sendSignalToFusion(sendSignalData);\n\n window.dispatchEvent(\n new CustomEvent(SearchSuggestionClick.Name, {\n detail: searchSuggestionClickData,\n }),\n );\n },\n [searchResults, searchTimestamp, tenant, formattedToken, currentLanguage, globalApiUrl],\n );\n\n if (!searchResults?.Products) {\n return null;\n }\n\n return (\n \n \n {translations(TranslationKeys.PopularProductsInThisSearchQuery)}\n \n \n {searchResults.Products.map(\n ({ ProductCode, StandardPrice, ActualPrice, ProductImageUrl, ConceptName }, index) => (\n \n ),\n )}\n \n \n );\n};\n","import * as SearchSuggestionClick from '@ori-events/search-suggestion-click';\nimport { Link, styled, Typography } from '@ori-ui/mui';\nimport { ContentType, Placement } from '@ori/analytics-data';\nimport useTestId from '@ori/testid-generator';\nimport type { VFC } from 'react';\nimport { useCallback } from 'react';\n\nimport { DESKTOP_BREAKPOINT } from '~/constants';\nimport { useNavigationContext } from '~/contexts/NavigationContext';\nimport { boldMatchedText } from '~/helpers';\nimport { useTranslationByKey } from '~/hooks';\nimport { TranslationKeys } from '~/models';\n\nconst PopularSearchQueriesRoot = styled('div')(({ theme }) => ({\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n display: 'block',\n marginTop: 0,\n },\n}));\n\nconst PopularSearchQueriesHeading = styled(Typography)(({ theme }) => ({\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n fontWeight: theme.typography.fontWeightBold,\n lineHeight: theme.typography.pxToRem(19),\n margin: theme.spacing(2, 0, 3),\n },\n}));\n\nconst PopularSearchQueriesResults = styled('ul')(({ theme }) => ({\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n listStyleType: 'none',\n marginBottom: 0,\n padding: 0,\n },\n}));\n\nconst PopularSearchQueriesItem = styled('li')(({ theme }) => ({\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n marginBottom: theme.spacing(2),\n },\n}));\n\nconst PopularSearchQueriesLink = styled(Link)(({ theme }) => ({\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n color: theme.palette.text.primary,\n textDecoration: 'none',\n\n '&:hover, &:focus, &:active': {\n color: theme.palette.text.disabled,\n },\n },\n}));\n\nconst searchQuery = (name: string) => `/search?query=${name}`;\n\nexport const PopularSearchQueries: VFC = () => {\n const { searchResults, searchInputValue } = useNavigationContext();\n const translations = useTranslationByKey();\n const { getTestId } = useTestId();\n\n const onClick = useCallback(\n (localBannerTitle: string, position: number) => {\n window.dispatchEvent(\n new CustomEvent(SearchSuggestionClick.Name, {\n detail: {\n itemData: {\n target: searchQuery(localBannerTitle),\n localBannerTitle,\n media: [],\n },\n itemType: ContentType.PopularQuery,\n searchQuery: searchResults?.Query ?? '',\n placement: Placement.TopNavigationSearchSuggestions,\n position,\n },\n }),\n );\n },\n [searchResults?.Query],\n );\n\n return (\n \n \n {translations(TranslationKeys.PopularSearchQueries)}\n \n \n {searchResults?.Suggestions.map(({ name }, index) => (\n \n onClick(name, index)}\n >\n {boldMatchedText(name, searchInputValue)}\n \n \n ))}\n \n \n );\n};\n","import loadable from '@loadable/component';\nimport * as ToggleMenuFlyout from '@ori-events/toggle-menu-flyout';\nimport { Backdrop, Link, SHADOW_LEVEL1, styled } from '@ori-ui/mui';\nimport useTestId from '@ori/testid-generator';\nimport type { VFC } from 'react';\nimport { useEffect, useMemo, useState } from 'react';\n\nimport { PopularProducts } from './PopularProducts';\nimport { PopularSearchQueries } from './PopularSearchQueries';\nimport { DESKTOP_BREAKPOINT } from '~/constants';\nimport { useNavigationContext } from '~/contexts/NavigationContext';\nimport { useWindowDimensionsContext } from '~/contexts/WindowDimensionsContext';\nimport { useMobileWidth, useTranslationByKey } from '~/hooks';\nimport { TranslationKeys } from '~/models';\n\nconst SearchResultsRoot = styled('div')(({ theme }) => ({\n background: theme.palette.common.white,\n boxShadow: SHADOW_LEVEL1,\n boxSizing: 'border-box',\n color: theme.palette.text.primary,\n display: 'flex',\n flexDirection: 'column',\n left: 0,\n padding: theme.spacing(14, 3, 3),\n position: 'absolute',\n top: 'var(--top-nav-height)',\n transition: 'top var(--top-nav-height-animation)',\n width: `calc(100% - var(--minibag-desktop-width, 0px))`,\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n padding: theme.spacing(6, 12),\n },\n}));\n\nconst SearchResultsContentWrapper = styled('div')<{ ownerState: { innerHeight: number } }>(\n ({ ownerState: { innerHeight }, theme }) => {\n const rootPaddings = theme.spacing(17);\n\n return {\n display: 'flex',\n flexDirection: 'column',\n maxHeight: `calc(${innerHeight}px - ${rootPaddings} - var(--top-nav-height))`,\n minHeight: 100,\n position: 'relative',\n width: '100%',\n\n [theme.breakpoints.down(DESKTOP_BREAKPOINT)]: {\n overflowY: 'auto',\n overscrollBehaviorY: 'contain',\n },\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n display: 'grid',\n gridTemplateColumns: '30% 70%',\n gridTemplateRows: '29px auto',\n },\n };\n },\n);\n\nconst SearchResultsHeader = styled('span')(({ theme }) => ({\n fontWeight: theme.typography.fontWeightBold,\n margin: theme.spacing(1, 0, 4),\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n gridColumn: 1,\n gridRow: 1,\n margin: 0,\n marginTop: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n}));\n\nconst SearchResultsQuery = styled(Link)(({ theme }) => ({\n borderBottom: `2px solid ${theme.palette.text.primary}`,\n color: theme.palette.text.primary,\n fontWeight: theme.typography.fontWeightBold,\n marginLeft: 3,\n paddingBottom: 3,\n textDecoration: 'none',\n\n '&:hover, &:focus, &:active': {\n borderBottom: `2px solid ${theme.palette.text.disabled}`,\n color: theme.palette.text.disabled,\n },\n}));\n\nconst SearchResultsLeftSide = styled('div')(({ theme }) => ({\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n gridColumn: 1,\n gridRow: 2,\n },\n}));\n\nconst SearchResultsLoader = styled('span')(({ theme }) => ({\n top: '60%',\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n top: '50%',\n },\n}));\n\nconst LazyArticles = loadable(async () =>\n import('./Articles/Articles').then((mod) => mod.Articles),\n) as VFC;\n\ninterface SearchResultsProps {\n formattedToken: string;\n}\n\nconst SearchResultsContent: VFC = ({ formattedToken }) => {\n const { hideSearchResultsTab, isFetching, searchResults } = useNavigationContext();\n const { windowHeight } = useWindowDimensionsContext();\n const [innerHeight, setInnerHeight] = useState(windowHeight);\n const translations = useTranslationByKey();\n const isArticles = Boolean(searchResults?.Contents.length);\n const isMobile = useMobileWidth();\n const { getTestId } = useTestId();\n\n const RenderSearchResult = () =>\n useMemo(\n () => (\n <>\n {searchResults?.Query ? (\n \n {translations(TranslationKeys.SeeAllResultsFor)}\n \n {searchResults.Query}\n \n \n ) : null}\n \n \n {!isMobile && }\n {isArticles ? : null}\n \n \n ),\n [],\n );\n\n useEffect(() => {\n setInnerHeight(windowHeight);\n }, [windowHeight]);\n\n return (\n \n \n {isFetching ? (\n \n ) : (\n \n )}\n \n \n \n );\n};\n\nexport const SearchResults: VFC = ({ formattedToken }) => {\n const { activeMenu } = useNavigationContext();\n const isMenuActive = activeMenu === ToggleMenuFlyout.MenuTypes.SearchResults;\n\n // no need to render hidden menu\n return isMenuActive ? : null;\n};\n","import * as ToggleMenuFlyout from '@ori-events/toggle-menu-flyout';\nimport { styled } from '@ori-ui/mui';\nimport { useToken } from '@ori/auth';\nimport type { GlobalCustomersCustomerInfoDto } from '@ori/global-api-client/esm/models';\nimport { shouldForwardProp } from '@ori/presentation-utils';\nimport throttle from 'lodash.throttle';\nimport type { ReactPortal, VFC } from 'react';\nimport { memo, useEffect, useLayoutEffect, useState, lazy, useRef } from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { AboutMenu } from '~/components/About/AboutMenu';\nimport { AccountFlyout } from '~/components/Account/AccountFlyout';\nimport { BurgerMenu } from '~/components/BurgerMenu/BurgerMenu';\nimport { JoinMenu } from '~/components/Join/JoinMenu';\nimport { LeftActionsSection } from '~/components/LeftActionsSection';\nimport { OriflameLogo } from '~/components/OriflameLogo';\nimport { RightActionsSection } from '~/components/RightActionsSection';\nimport { SearchResults } from '~/components/SearchResults/SearchResults';\nimport {\n CONSULTANT_NUMBER_QUERY_PARAM_KEY,\n DESKTOP_BREAKPOINT,\n RETURN_URL_QUERY_PARAM_KEY,\n SCROLL_THROTTLE_DELAY,\n} from '~/constants';\nimport { useApiProviderContext } from '~/contexts/ApiProviderContext';\nimport { useAppConfigurationContext } from '~/contexts/AppConfigurationContext';\nimport { useNavigationContext } from '~/contexts/NavigationContext';\nimport { dispatchToggleMenu } from '~/helpers';\nimport { useClickSignInButtonSupportCenter, useMobileWidth } from '~/hooks';\nimport { log, setTopNavHeight, TopNavHeight } from '~/utils';\n\nconst LazyPersonalMenu = lazy(async () => ({\n default: (await import('@ori/personal-menu')).PersonalMenu,\n}));\n\nconst InnerTopAreaRoot = styled('nav', {\n shouldForwardProp: shouldForwardProp(),\n})(({ theme }) => ({\n alignItems: 'center',\n backgroundColor: theme.palette.common.white,\n borderBottom: `2px solid ${theme.palette.grey[100]}`,\n boxSizing: 'border-box',\n display: 'grid',\n gridTemplateColumns: '1fr 100px 1fr',\n height: 'var(--top-nav-height)',\n left: 0,\n padding: theme.spacing(0, 3),\n position: 'fixed',\n top: 0,\n transition: 'height var(--top-nav-height-animation), background-color 0.1s ease-in-out',\n width: '100vw',\n zIndex: theme.zIndex.appBar,\n\n [theme.breakpoints.up(DESKTOP_BREAKPOINT)]: {\n gridTemplateColumns: '1fr 180px 1fr',\n height: 'var(--top-nav-height)',\n padding: theme.spacing(0, 9, 0, 6),\n },\n\n [theme.breakpoints.up('lg')]: {\n padding: theme.spacing(0, 11, 0, 8),\n },\n\n [theme.breakpoints.up('xl')]: {\n padding: theme.spacing(0, 15, 0, 12),\n },\n}));\n\nconst InnerTopArea: VFC = memo(() => {\n const { globalApiClient } = useApiProviderContext();\n const { currentLanguage } = useAppConfigurationContext();\n const { customerId, token, formattedToken, isAnonymousUser } = useToken();\n const myPagesPersonalMenuRootRef = useRef();\n const [language, setLanguage] = useState(currentLanguage);\n\n const [consultantNumber, setConsultantNumber] =\n useState();\n const [customerType, setCustomerType] =\n useState();\n const {\n externalLoginName,\n globalApiUrl,\n staticApiUrl,\n tenant,\n personalMenuInitialData,\n mobileOfficeApiUrl,\n consultantNumber: configConsultantNumber,\n consultantType,\n reportsItemName,\n } = useAppConfigurationContext();\n\n const isMobile = useMobileWidth();\n let personalMenu: ReactPortal | undefined;\n\n const { areNavigationsElementsFetched, getNavigationElements, toggleMenu, activeMenu } =\n useNavigationContext();\n\n useClickSignInButtonSupportCenter(activeMenu);\n\n // Previous implementation reacted to document language\n // TODO -- Is this really necessary? currentLanguage from config should be enough\n useEffect(() => {\n const documentLang = document.documentElement.lang;\n\n setLanguage((prevLanguage) => {\n if (documentLang && prevLanguage !== documentLang) {\n log.info(\n `A document lang found. Changing language for personal menu and burger menu from '${prevLanguage}' to '${documentLang}'`,\n );\n\n return documentLang;\n }\n\n if (!documentLang && currentLanguage !== prevLanguage) {\n log.info(\n `New currentLanguage value. Changing language for personal menu and burger menu from '${prevLanguage}' to '${currentLanguage}'`,\n );\n\n return currentLanguage;\n }\n\n return prevLanguage;\n });\n }, [currentLanguage]);\n\n // Find and save element\n useEffect(() => {\n myPagesPersonalMenuRootRef.current = document.getElementById('personal-menu-root');\n\n return () => {\n myPagesPersonalMenuRootRef.current = undefined;\n };\n }, []);\n\n useLayoutEffect(() => {\n const bodyEl = document.body;\n const topAreaRoot = document.getElementById('online-top-area-root');\n topAreaRoot?.classList.add('top-nav--is-loaded');\n bodyEl.classList.add(TopNavHeight.DESKTOP_DEFAULT);\n }, []);\n\n useLayoutEffect(() => {\n setTopNavHeight(isMobile ? TopNavHeight.MOBILE : TopNavHeight.DESKTOP_DEFAULT);\n }, [isMobile]);\n\n useEffect(() => {\n const handleScroll = () => {\n const isPageScrolled = window.scrollY > 0;\n\n if (!isMobile) {\n if (isPageScrolled) {\n setTopNavHeight(TopNavHeight.DESKTOP_SHRUNK);\n } else {\n setTopNavHeight(TopNavHeight.DESKTOP_DEFAULT);\n }\n }\n };\n const throttledHandleScroll = throttle(handleScroll, SCROLL_THROTTLE_DELAY);\n\n window.addEventListener('scroll', throttledHandleScroll);\n\n return () => {\n window.removeEventListener('scroll', throttledHandleScroll);\n };\n }, [isMobile]);\n\n useEffect(() => {\n const toggleMenuHandler = (event: ToggleMenuFlyout.Event) => {\n toggleMenu(event.detail.menuType);\n };\n\n window.addEventListener(ToggleMenuFlyout.Name, toggleMenuHandler as EventListener);\n\n return () => {\n window.removeEventListener(ToggleMenuFlyout.Name, toggleMenuHandler as EventListener);\n };\n }, [toggleMenu]);\n\n useEffect(() => {\n if (!areNavigationsElementsFetched()) {\n getNavigationElements();\n }\n }, [areNavigationsElementsFetched, getNavigationElements]);\n\n useEffect(() => {\n const { searchParams } = new URL(window.location.href);\n const returnUrl = searchParams.get(RETURN_URL_QUERY_PARAM_KEY);\n const consultantNumberQueryParam = searchParams.get(CONSULTANT_NUMBER_QUERY_PARAM_KEY);\n\n if (returnUrl || externalLoginName || consultantNumberQueryParam) {\n dispatchToggleMenu(ToggleMenuFlyout.MenuTypes.AccountSideMenu);\n }\n }, [externalLoginName]);\n\n useEffect(() => {\n if (!isAnonymousUser && consultantNumber == null) {\n globalApiClient\n .getApplicationsNavigationCustomerInfo(tenant, customerId.toString())\n .then(\n ({ consultantNumber: consultantNumberResponse, customerType: customerTypeResponse }) => {\n setConsultantNumber(consultantNumberResponse);\n setCustomerType(customerTypeResponse);\n },\n )\n\n // eslint-disable-next-line no-console -- Logging errors to console.\n .catch((error: unknown) => console.warn(error));\n }\n }, [\n consultantNumber,\n customerId,\n globalApiUrl,\n tenant,\n globalApiClient,\n formattedToken,\n isAnonymousUser,\n ]);\n\n if (myPagesPersonalMenuRootRef.current && !isMobile) {\n personalMenu = ReactDOM.createPortal(\n ,\n myPagesPersonalMenuRootRef.current,\n );\n }\n\n return (\n \n \n \n \n \n \n \n \n \n {personalMenu}\n \n );\n});\nexport const TopArea = InnerTopArea;\n","import { createGlobalApiClient, createStaticApiClient } from '@ori-appshell/shared';\nimport { useToken } from '@ori/auth';\nimport type { Api as GlobalApi } from '@ori/global-api-client';\nimport type { Api as StaticApi } from '@ori/static-api-client';\nimport type { FC } from 'react';\nimport { createContext, useContext, useMemo } from 'react';\n\nimport { useAppConfigurationContext } from '~/contexts/AppConfigurationContext';\n\ninterface ApiProviderValues {\n globalApiClient: GlobalApi;\n staticApiClient: StaticApi;\n}\n\nexport const ApiProviderContext = createContext(undefined);\n\nexport const ApiProviderContextProvider: FC = ({ children }) => {\n const { currentLanguage, tenant, globalApiUrl, staticApiUrl } = useAppConfigurationContext();\n const { formattedToken } = useToken();\n const globalApiClient = createGlobalApiClient({\n acceptLanguage: currentLanguage,\n baseUrl: globalApiUrl,\n tenant,\n token: formattedToken,\n });\n const staticApiClient = createStaticApiClient({ baseUrl: staticApiUrl });\n const value: ApiProviderValues = useMemo(\n () => ({\n staticApiClient,\n globalApiClient,\n }),\n [globalApiClient, staticApiClient],\n );\n\n return {children};\n};\n\nexport const useApiProviderContext = () => {\n const context = useContext(ApiProviderContext);\n if (context) {\n return context;\n }\n throw new Error('ApiProviderContext value must be set.');\n};\n","import type { SocialMediaProviders } from '@ori/login-sidebar';\nimport type { PersonalMenuInitialData } from '@ori/personal-menu/lib/models/PersonalMenuInitialData';\nimport type { FC } from 'react';\nimport { createContext, useContext, useMemo, useState } from 'react';\n\nimport type { AppConfiguration } from '../models';\n\ninterface AppConfigurationProviderProps {\n readonly config: AppConfiguration;\n}\n\nexport const AppConfigurationContext = createContext(undefined);\n\nexport const AppConfigurationProvider: FC = ({\n config,\n children,\n}) => {\n const { pbsIconInBurgerMenu } = config;\n\n const [currentLanguage, setCurrentLanguage] = useState(config.currentLanguage);\n const [graphqlUrl, setGraphqlUrl] = useState(config.graphqlUrl);\n const [tenant, setTenant] = useState(config.tenant);\n\n const [globalApiUrl, setGlobalApiUrl] = useState(config.globalApiUrl);\n const [isCumulusMarket, setIsCumulusMarket] = useState(config.isCumulusMarket);\n const [staticApiUrl, setStaticApiUrl] = useState(config.staticApiUrl);\n const [mobileOfficeApiUrl, setMobileOfficeApiUrl] = useState(config.mobileOfficeApiUrl);\n const [shouldDisplayNotificationIcon, setShouldDisplayNotificationIcon] = useState(\n config.shouldDisplayNotificationIcon,\n );\n const [ssoAdLoginUrl, setSsoAdLoginUrl] = useState(config.ssoAdLoginUrl);\n const [identityUrl, setIdentityUrl] = useState(config.identityUrl);\n\n const [externalLoginName, setExternalLoginName] = useState(\n config.externalLoginName,\n );\n const [personalMenuInitialData, setPersonalMenuInitialData] = useState<\n PersonalMenuInitialData | null | undefined\n >(config.personalMenuInitialData ?? null);\n const [externalProviderType, setExternalProviderType] = useState<\n SocialMediaProviders | undefined\n >(config.externalProviderType);\n\n const [consultantNumber, setConsultantNumber] = useState(\n config.consultantNumber,\n );\n const [consultantType, setConsultantType] = useState(config.consultantType);\n const [reportsItemName, setReportsItemName] = useState(\n config.reportsItemName,\n );\n\n const value = useMemo(\n () => ({\n currentLanguage,\n externalLoginName,\n externalProviderType,\n globalApiUrl,\n graphqlUrl,\n isCumulusMarket,\n mobileOfficeApiUrl,\n personalMenuInitialData,\n shouldDisplayNotificationIcon,\n ssoAdLoginUrl,\n staticApiUrl,\n tenant,\n identityUrl,\n consultantNumber,\n consultantType,\n reportsItemName,\n setExternalLoginName,\n setExternalProviderType,\n setIsCumulusMarket,\n setMobileOfficeApiUrl,\n setShouldDisplayNotificationIcon,\n setSsoAdLoginUrl,\n setPersonalMenuInitialData,\n setIdentityUrl,\n setStaticApiUrl,\n setGlobalApiUrl,\n setTenant,\n setGraphqlUrl,\n setCurrentLanguage,\n pbsIconInBurgerMenu,\n setConsultantNumber,\n setConsultantType,\n setReportsItemName,\n }),\n [\n currentLanguage,\n externalLoginName,\n externalProviderType,\n globalApiUrl,\n graphqlUrl,\n isCumulusMarket,\n mobileOfficeApiUrl,\n personalMenuInitialData,\n shouldDisplayNotificationIcon,\n ssoAdLoginUrl,\n staticApiUrl,\n tenant,\n identityUrl,\n consultantNumber,\n consultantType,\n reportsItemName,\n setExternalLoginName,\n setExternalProviderType,\n setIsCumulusMarket,\n setMobileOfficeApiUrl,\n setShouldDisplayNotificationIcon,\n setSsoAdLoginUrl,\n setPersonalMenuInitialData,\n setIdentityUrl,\n setStaticApiUrl,\n setGlobalApiUrl,\n setTenant,\n setGraphqlUrl,\n setCurrentLanguage,\n pbsIconInBurgerMenu,\n setConsultantNumber,\n setConsultantType,\n setReportsItemName,\n ],\n );\n\n return (\n {children} \n );\n};\n\nexport const useAppConfigurationContext = () => {\n const context = useContext(AppConfigurationContext);\n\n if (context) {\n return context;\n }\n throw new Error('ConfigurationContext value must be set.');\n};\n","import type { GlobalCataloguesCatalogueDto } from '@ori/global-api-client/esm/models';\nimport type { StaticCataloguesCatalogueDto } from '@ori/static-api-client/esm/models';\nimport type { FC } from 'react';\nimport { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';\n\nimport { useApiProviderContext } from '~/contexts/ApiProviderContext';\nimport { useAppConfigurationContext } from '~/contexts/AppConfigurationContext';\n\ninterface CataloguesContextProps {\n catalogues?: GlobalCataloguesCatalogueDto[];\n isDataFetched: boolean;\n}\n\nexport const CataloguesContext = createContext(undefined);\n\nexport const CataloguesContextProvider: FC = ({ children }) => {\n const { tenant } = useAppConfigurationContext();\n const [catalogues, setCatalogues] = useState(\n undefined,\n );\n const [isDataFetched, setIsDataFetched] = useState(false);\n const { staticApiClient } = useApiProviderContext();\n\n const getCatalogues = useCallback(async () => {\n setIsDataFetched(true);\n const { collection } = await staticApiClient.getTenantCatalogues(tenant);\n\n return collection;\n }, [staticApiClient, tenant]);\n\n useEffect(() => {\n if (!isDataFetched) {\n getCatalogues().then(setCatalogues);\n }\n }, [getCatalogues, isDataFetched, staticApiClient]);\n\n const value: CataloguesContextProps = useMemo(\n () => ({\n catalogues,\n isDataFetched,\n }),\n [catalogues, isDataFetched],\n );\n\n return {children};\n};\n\nexport const useCataloguesContext = () => {\n const context = useContext(CataloguesContext);\n if (context) {\n return context;\n }\n throw new Error('CataloguesContext value must be set.');\n};\n","/* eslint-disable no-console -- we want to log errors */\n\nimport * as ToggleMenuFlyout from '@ori-events/toggle-menu-flyout';\nimport type { CancelTokenSource } from '@ori/axios';\nimport { axios } from '@ori/axios';\nimport type { Navigation } from '@ori/graphql-schema';\nimport type {\n NavigationType,\n StaticNavigationNavigationItemDto,\n} from '@ori/static-api-client/esm/models';\nimport type { FC } from 'react';\nimport { createContext, useCallback, useContext, useMemo, useState } from 'react';\n\nimport { useAppConfigurationContext } from './AppConfigurationContext';\nimport { getCustomAxios } from '~/helpers';\nimport { useFetchNavigationItems } from '~/hooks/useFetchNavigationItems';\nimport { useMobileWidth } from '~/hooks/useMobileWidth';\nimport type { NavigationContextValues, SuggestionsAndResults } from '~/models';\nimport { BurgerMenuTabNames, JoinLinks, NavigationTypes } from '~/models';\n\nconst ABOUT_TILE = 'AboutTiles';\nconst JOIN_TILE = 'JoinTiles';\n\nconst findLabel = (\n label: string,\n navigationCollection?: StaticNavigationNavigationItemDto[] | null,\n) =>\n navigationCollection?.find((navigationElement) => navigationElement.type === label)?.title ?? '';\n\nconst findUrl = (\n label: string,\n navigationCollection?: StaticNavigationNavigationItemDto[] | null,\n) => navigationCollection?.find((navigationElement) => navigationElement.type === label)?.url;\n\nexport const NavigationContext = createContext(undefined);\n\nexport const NavigationContextProvider: FC = ({ children }) => {\n const [activeLink, setActiveLink] = useState(null);\n const [pbsContentIsShown, setPbsContentIsShown] = useState(false);\n const [activeMenu, setActiveMenu] = useState('');\n const [aboutLabel, setAboutLabel] = useState('');\n const [aboutTiles, setAboutTiles] = useState([]);\n const [joinLabel, setJoinLabel] = useState('');\n const [joinUrl, setJoinUrl] = useState('');\n const [isFetching, setIsFetching] = useState(false);\n const [burgerMenuTab, setBurgerMenuTab] = useState(\n BurgerMenuTabNames.ProductsTab,\n );\n const [isSearchInputFocus, setIsSearchInputFocus] = useState(false);\n const [isSearchInputVisible, setIsSearchInputVisible] = useState(false);\n const [searchInputValue, setSearchInputValue] = useState('');\n const [searchResults, setSearchResults] = useState(null);\n const [searchTimestamp, setSearchTimestamp] = useState(0);\n const [joinTiles, setJoinTiles] = useState([]);\n const [iDontKnowYetLink, setIDontKnowYetLink] = useState<\n StaticNavigationNavigationItemDto | null | undefined\n >(null);\n const [inspirationTiles, setInspirationTiles] = useState([]);\n const [shopSection, setShopSection] = useState([]);\n const [cancelToken, setCancelToken] = useState();\n const [isNavigationsFetched, setNavigationsElementsFetcher] = useState(false);\n const [isMenuDownloaded, setIsMenuDownloaded] = useState(false);\n const isMobile = useMobileWidth();\n\n const { currentLanguage } = useAppConfigurationContext();\n\n const getNavigationData = useFetchNavigationItems();\n\n const updateActiveLinkAction = useCallback(\n (link: Navigation | null) => {\n // We make sure that on link change is pbs hidden\n setPbsContentIsShown(false);\n if (isMobile && activeLink === link) {\n setActiveLink(null);\n } else {\n setActiveLink(link);\n }\n },\n [activeLink, isMobile],\n );\n\n const getTopNavigationAttributes = useCallback(async () => {\n const response = await getNavigationData('TopNavigation');\n\n setAboutLabel(findLabel(ABOUT_TILE, response));\n setJoinLabel(findLabel(JOIN_TILE, response));\n setJoinUrl(findUrl(JOIN_TILE, response));\n }, [getNavigationData]);\n\n const getElements = useCallback(\n async (navigationType: NavigationType): Promise => {\n const response = await getNavigationData(navigationType);\n\n switch (navigationType) {\n case NavigationTypes.AboutTiles: {\n setAboutTiles(response);\n break;\n }\n case NavigationTypes.ShopSection: {\n setIsMenuDownloaded(true);\n setShopSection(response);\n break;\n }\n case NavigationTypes.InspirationTiles: {\n setInspirationTiles(response);\n break;\n }\n case NavigationTypes.JoinTiles: {\n setJoinTiles(response.filter((tile) => tile.linkType === JoinLinks.JoinTile));\n setIDontKnowYetLink(\n response.find((link) => link.linkType === JoinLinks.IDontKnowYetLink),\n );\n break;\n }\n default: {\n throw new Error('Unknown collection');\n }\n }\n },\n [getNavigationData],\n );\n\n const areNavigationsElementsFetched = useCallback(\n () => isNavigationsFetched,\n [isNavigationsFetched],\n );\n\n const getNavigationElements = useCallback(() => {\n try {\n setNavigationsElementsFetcher(true);\n\n Object.values(NavigationTypes).forEach((element) => {\n if (element === NavigationTypes.ShopSection) {\n setIsMenuDownloaded(false);\n }\n getElements(element);\n });\n\n getTopNavigationAttributes();\n } catch (error: unknown) {\n console.warn(error);\n }\n }, [getElements, getTopNavigationAttributes]);\n\n const openBurgerMenuTab = (tab: BurgerMenuTabNames): void => {\n setBurgerMenuTab(tab);\n };\n\n const toggleIsSearchInputVisible = useCallback((): void => {\n setIsSearchInputVisible(!isSearchInputVisible);\n }, [isSearchInputVisible]);\n\n const getSearchResults = useCallback(\n async (query: string) => {\n if (!query) {\n return;\n }\n\n try {\n if (cancelToken) {\n cancelToken.cancel();\n }\n\n const newCancelToken = axios.CancelToken.source();\n setCancelToken(newCancelToken);\n\n const url = new URL(`${window.location.origin}/system/ajax/Search/SuggestionsAndResults`);\n url.searchParams.set('q', query);\n\n const { data } = await getCustomAxios(currentLanguage).get(\n url.toString(),\n {\n cancelToken: newCancelToken.token,\n },\n );\n\n if (searchInputValue.trim() === data.Query) {\n setSearchResults(data);\n setSearchTimestamp(performance.now());\n }\n\n setIsFetching(false);\n } catch (error: unknown) {\n if (axios.isCancel(error)) {\n console.log('Search request canceled', error);\n } else {\n console.log(error);\n }\n } finally {\n setCancelToken(undefined);\n }\n },\n [cancelToken, currentLanguage, searchInputValue],\n );\n\n const toggleMenu = useCallback(\n (menuType: ToggleMenuFlyout.MenuTypes | ''): void => {\n if (menuType === ToggleMenuFlyout.MenuTypes.SearchInput) {\n toggleIsSearchInputVisible();\n } else if (activeMenu === menuType) {\n setActiveMenu('');\n } else {\n setActiveMenu(menuType);\n }\n },\n [activeMenu, toggleIsSearchInputVisible],\n );\n\n const hideSearchResultsTab = useCallback((): void => {\n setSearchInputValue('');\n setIsSearchInputFocus(false);\n toggleMenu('');\n setSearchResults(null);\n setIsSearchInputVisible(false);\n }, [toggleMenu]);\n\n const clearSearchResults = (): void => {\n setSearchResults(null);\n };\n\n const startFetchingSearchData = (): void => {\n setIsFetching(true);\n };\n\n const value: NavigationContextValues = useMemo(\n () => ({\n aboutLabel,\n aboutTiles,\n activeLink,\n activeMenu,\n areNavigationsElementsFetched,\n burgerMenuTab,\n clearSearchResults,\n getNavigationElements,\n getSearchResults,\n hideSearchResultsTab,\n iDontKnowYetLink,\n inspirationTiles,\n isFetching,\n isMenuDownloaded,\n isSearchInputFocus,\n isSearchInputVisible,\n joinLabel,\n joinTiles,\n joinUrl,\n openBurgerMenuTab,\n searchInputValue,\n searchResults,\n searchTimestamp,\n shopSection,\n setIsMenuDownloaded,\n setIsSearchInputFocus,\n setSearchInputValue,\n startFetchingSearchData,\n toggleIsSearchInputVisible,\n toggleMenu,\n pbsContentIsShown,\n setPbsContentIsShown,\n updateActiveLinkAction,\n }),\n [\n aboutLabel,\n aboutTiles,\n activeLink,\n activeMenu,\n areNavigationsElementsFetched,\n burgerMenuTab,\n getNavigationElements,\n getSearchResults,\n hideSearchResultsTab,\n iDontKnowYetLink,\n inspirationTiles,\n isFetching,\n isMenuDownloaded,\n isSearchInputFocus,\n isSearchInputVisible,\n joinLabel,\n joinTiles,\n joinUrl,\n searchInputValue,\n searchResults,\n searchTimestamp,\n shopSection,\n toggleIsSearchInputVisible,\n toggleMenu,\n pbsContentIsShown,\n updateActiveLinkAction,\n ],\n );\n\n return {children};\n};\n\nexport const useNavigationContext = () => {\n const context = useContext(NavigationContext);\n if (context) {\n return context;\n }\n throw new Error('NavigationContext value must be set.');\n};\n","import { useToken } from '@ori/auth';\nimport type {\n ApiGetTenantApplicationsNavigationNavigationOptionalParams,\n NavigationType,\n StaticNavigationNavigationItemDto,\n} from '@ori/static-api-client/esm/models';\nimport { useCallback } from 'react';\n\nimport { useApiProviderContext } from '~/contexts/ApiProviderContext';\nimport { useAppConfigurationContext } from '~/contexts/AppConfigurationContext';\n\nexport const useFetchNavigationItems = (): ((\n navigationType: NavigationType,\n) => Promise) => {\n const { tenant, currentLanguage } = useAppConfigurationContext();\n const { globalApiClient, staticApiClient } = useApiProviderContext();\n const { isAnonymousUser } = useToken();\n const { customerId } = useToken();\n\n return useCallback(\n async (navigationType: NavigationType) => {\n const requestOptions: ApiGetTenantApplicationsNavigationNavigationOptionalParams = {\n excludeChildren: false,\n lang: currentLanguage,\n };\n\n if (!isAnonymousUser) {\n const customerInfo = await globalApiClient.getApplicationsNavigationCustomerInfo(\n tenant,\n customerId.toString(),\n );\n requestOptions.customerTypeId = customerInfo.customerType?.customerTypeId;\n requestOptions.visitorSegment = customerInfo.visitorSegment;\n }\n\n const responseNavigation = await staticApiClient.getTenantApplicationsNavigationNavigation(\n tenant,\n navigationType,\n requestOptions,\n );\n\n return responseNavigation.navigationCollection;\n },\n [currentLanguage, customerId, globalApiClient, isAnonymousUser, staticApiClient, tenant],\n );\n};\n","import type { RequestOptionsBase } from '@azure/ms-rest-js';\nimport { useToken } from '@ori/auth';\nimport type { FC } from 'react';\nimport { createContext, useCallback, useContext, useMemo, useState } from 'react';\n\nimport { useApiProviderContext } from '~/contexts/ApiProviderContext';\n\nexport interface NotificationsContextValues {\n notificationsCount: number;\n loadNotificationsCount: (\n customerId: number,\n tenant: string,\n options?: RequestOptionsBase,\n ) => Promise;\n}\n\nexport const NotificationsContext = createContext(\n undefined,\n);\nNotificationsContext.displayName = 'NotificationsContext';\n\nexport const NotificationsContextProvider: FC = ({ children }) => {\n const [notificationsCount, setNotificationsCount] = useState(0);\n const { globalApiClient } = useApiProviderContext();\n const { isAnonymousUser } = useToken();\n\n const loadNotificationsCount = useCallback(\n async (customerId: number, tenant: string, options?: RequestOptionsBase) => {\n if (!isAnonymousUser) {\n const response = await globalApiClient.getCustomerUnseenNotificationsCount(\n tenant,\n 'Web',\n customerId,\n options,\n );\n\n setNotificationsCount(response.count);\n }\n },\n [globalApiClient, isAnonymousUser],\n );\n\n const value: NotificationsContextValues = useMemo(\n () => ({\n loadNotificationsCount,\n notificationsCount,\n }),\n [loadNotificationsCount, notificationsCount],\n );\n\n return {children};\n};\n\nexport const useNotificationsContext = () => {\n const context = useContext(NotificationsContext);\n\n if (context) {\n return context;\n }\n\n throw new Error('NotificationsContext value must be set.');\n};\n","import type { FC } from 'react';\nimport { useContext, createContext, useMemo } from 'react';\n\nimport { useWindowSize } from '~/hooks';\n\ninterface WindowDimensionsContextProps {\n windowHeight: number;\n windowWidth: number;\n syncSizes: () => void;\n}\n\nexport const WindowDimensionsContext = createContext(\n undefined,\n);\n\nexport const WindowDimensionsProvider: FC = ({ children }) => {\n const { height: windowHeight, width: windowWidth, sync: syncSizes } = useWindowSize();\n\n const value: WindowDimensionsContextProps = useMemo(\n () => ({\n windowHeight,\n windowWidth,\n syncSizes,\n }),\n [windowHeight, windowWidth, syncSizes],\n );\n\n return (\n {children}\n );\n};\n\nexport const useWindowDimensionsContext = () => {\n const context = useContext(WindowDimensionsContext);\n\n if (context) {\n return context;\n }\n throw new Error('WindowDimensionsContext value must be set.');\n};\n","import type { ProductData } from '@ori/analytics-data';\nimport type { Maybe, Product } from '@ori/graphql-schema';\n\nimport type { Product as ProductTypes, SignalsData, SuggestionsAndResults } from '~/models';\n\n// Formats array of Products gathered from GQL into Analytics format.\nexport const formatProducts = (\n products: Array | undefined>,\n categoryName?: Maybe,\n): ProductData[] =>\n products.map((product) => ({\n currency: product?.price?.currency ?? '',\n globalBrandName: product?.concept?.brand?.originalName ?? '',\n globalCategoryName: '',\n globalName: product?.concept?.originalName ?? '',\n itemCode: product?.productCode ?? '',\n localBrandName: product?.concept?.brand?.originalName ?? '',\n localCategoryName: categoryName ?? '',\n localName: product?.concept?.productName ?? '',\n media: product?.imageUrl ? [product.imageUrl] : [],\n price:\n product?.price?.price?.currentPrice == null || Number.isNaN(product.price.price.currentPrice)\n ? 0\n : Number(product.price.price.currentPrice),\n }));\n\n// Formats a single product from the API into Analytics format.\nexport const formatProduct = ({\n ActualPriceUnformated,\n ConceptName,\n CurrencyCode,\n GtmBrand,\n GtmCategory,\n ProductCode,\n ProductImageUrl,\n}: ProductTypes): ProductData => ({\n currency: CurrencyCode,\n globalBrandName: '',\n globalCategoryName: '',\n globalName: '',\n itemCode: ProductCode,\n localBrandName: GtmBrand,\n localCategoryName: GtmCategory,\n localName: ConceptName,\n media: [ProductImageUrl],\n price: ActualPriceUnformated,\n});\n\n// Creates an object with Fusion Analytics data.\nexport const getSignalsData = (\n searchResults: SuggestionsAndResults,\n position: number,\n timestamp: number,\n): SignalsData => ({\n SignalsParameters: {\n DocumentId: new URL(\n searchResults.Products[position]?.ProductDetailUrl as string,\n window.location.origin,\n ).toString(),\n FilterQueries: [],\n Position: position + 1,\n Query: searchResults.Query,\n SearchTime: Math.round(performance.now() - timestamp),\n SessionId: searchResults.OnlineSessionId,\n TotalHits: searchResults.Products.length,\n },\n TimeStamp: new Date(),\n Type: 'click',\n});\n","import { axios } from '@ori/axios';\nimport type { AxiosInstance } from '@ori/axios';\n\nlet customAxiosInstance: AxiosInstance | null;\n\nexport const getCustomAxios = (currentLanguage: string) => {\n if (!customAxiosInstance) {\n customAxiosInstance = axios.create({\n baseURL: typeof window === 'undefined' ? '' : window.location.origin,\n headers: {\n 'Accept-Language': currentLanguage,\n },\n });\n }\n\n return customAxiosInstance;\n};\n","export const boldMatchedText = (articleContent: string | null, searchPhrase: string) => {\n if (!articleContent) {\n return null;\n }\n\n const escapedSearchPhrase = searchPhrase.replace(/[$()*+.?[\\\\\\]^{|}]/g, '\\\\$&').trim();\n const regExpPattern = new RegExp(escapedSearchPhrase, 'igu');\n const splittedText = articleContent.split(regExpPattern);\n const matches = regExpPattern.exec(articleContent);\n\n if (!matches) {\n return articleContent;\n }\n\n return splittedText.map((el, index) => {\n if (index > matches.length) {\n return el;\n }\n\n return (\n // eslint-disable-next-line react/no-array-index-key -- there is nothing unique here and this array is not mutable\n \n {el}\n {matches[index]}\n \n );\n });\n};\n","export const onEnterKey = (handler: () => void) => (event: React.KeyboardEvent) => {\n if (event.key === 'Enter') {\n handler();\n }\n};\n","export const accessConsultantUrl = (consultantNumber: string) =>\n `/system/ajax/VipShopping/AccessConsultant?consultantNumber=${consultantNumber}`;\n\nexport const basketUrl = '/shopping/basket';\n\nexport const getConsultantNumbersUrl = (hint: string) =>\n `/system/ajax/VipShopping/GetConsultantNumbers?hint=${hint}`;\n\nexport const vipAccessUrl = '/system/ajax/stickybar/VipAccessJson';\n\nexport const vipAccessSwitchUrl = (consultantNumber: number) =>\n `/system/ajax/StickyBar/VipAccessSwitch?ConsultantNumber=${consultantNumber}`;\n\nexport const vipAccessSwitchValidateUrl = (consultantNumber: string) =>\n `/system/ajax/StickyBar/VipAccessSwitchValidate?ajaxId=69&related%5BConsultantNumber%5D=${consultantNumber}&activeInput=ConsultantNumber&ConsultantNumber=${consultantNumber}`;\n","import * as ToggleMenuFlyoutEvent from '@ori-events/toggle-menu-flyout';\n\nexport const dispatchToggleMenu = (\n menuToggle: ToggleMenuFlyoutEvent.MenuTypes,\n activeMenu?: ToggleMenuFlyoutEvent.MenuTypes | '',\n) => {\n const event = (menuType: ToggleMenuFlyoutEvent.MenuTypes) =>\n new CustomEvent(ToggleMenuFlyoutEvent.Name, {\n detail: {\n menuType,\n },\n });\n\n if (activeMenu && menuToggle !== activeMenu) {\n window.dispatchEvent(event(activeMenu));\n }\n\n requestAnimationFrame(() => {\n window.dispatchEvent(event(menuToggle));\n });\n};\n","import { useMediaQuery } from '@ori-ui/mui';\nimport type { RefObject, ElementType } from 'react';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nexport const useHover = <\n IconType extends ElementType,\n Ref extends HTMLElement = HTMLAnchorElement & HTMLButtonElement,\n>(\n iconOnHover: IconType,\n icon: IconType,\n): [RefObject, IconType] => {\n const [isHover, setIsHover] = useState(false);\n const ref = useRef(null);\n const isHoverAvailable = useMediaQuery('(hover: hover)');\n\n const getIcon = useMemo(() => {\n if (isHover) {\n return iconOnHover;\n }\n\n return icon;\n }, [isHover, icon, iconOnHover]);\n\n const handleMouseOver = useCallback(() => {\n setIsHover(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setIsHover(false);\n }, []);\n\n useEffect(() => {\n const element = ref.current;\n\n if (isHoverAvailable) {\n element?.addEventListener('mouseover', handleMouseOver);\n element?.addEventListener('mouseleave', handleMouseLeave);\n }\n\n return () => {\n if (isHoverAvailable) {\n element?.removeEventListener('mouseover', handleMouseOver);\n element?.removeEventListener('mouseleave', handleMouseLeave);\n }\n };\n }, [isHoverAvailable, handleMouseOver, handleMouseLeave]);\n\n return [ref, getIcon];\n};\n","import * as ToggleMenuFlyout from '@ori-events/toggle-menu-flyout';\nimport * as UserAction from '@ori-events/user-action';\n\nimport { CLICK_BURGER_MENU } from '../constants';\nimport { useNavigationContext } from '~/contexts/NavigationContext';\nimport { dispatchToggleMenu } from '~/helpers/toggleMenu';\n\nconst toggleMenu = () => {\n UserAction.dispatch(CLICK_BURGER_MENU);\n dispatchToggleMenu(ToggleMenuFlyout.MenuTypes.BurgerMenu);\n};\n\nexport const useToggleMenu = () => {\n const { activeMenu } = useNavigationContext();\n\n return [activeMenu === ToggleMenuFlyout.MenuTypes.BurgerMenu, toggleMenu] as const;\n};\n","import { MenuTypes } from '@ori-events/toggle-menu-flyout';\nimport { useEffect } from 'react';\n\nimport { dispatchToggleMenu } from '~/helpers';\n\nexport const useClickSignInButtonSupportCenter = (activeMenu: MenuTypes | '') => {\n const LOGIN_BUTTON_SELECTOR = '.support-center-footer-login__button';\n\n useEffect(() => {\n const loginButton = document.querySelector(LOGIN_BUTTON_SELECTOR);\n loginButton?.addEventListener('click', (e) => {\n e.preventDefault();\n\n return dispatchToggleMenu(MenuTypes.AccountSideMenu, activeMenu);\n });\n\n return () =>\n loginButton?.removeEventListener('click', () =>\n dispatchToggleMenu(MenuTypes.AccountSideMenu, activeMenu),\n );\n }, [activeMenu]);\n};\n","import type { TFunction, TOptionsBase } from 'i18next';\nimport { useTranslation } from 'react-i18next';\n\nimport type { SitecoreTranslation, TranslationKey } from '~/models';\n\nconst sitecoreTranslation = (value: SitecoreTranslation): TOptionsBase => ({\n ...value,\n interpolation: {\n prefix: '{',\n suffix: '}',\n },\n});\n\nconst translateKey = (key: string, t: TFunction, interpolationOptions?: SitecoreTranslation) => {\n if (typeof interpolationOptions === 'undefined') {\n return t(key);\n }\n\n return t(key, sitecoreTranslation(interpolationOptions));\n};\n\nexport function useTranslationByKey(): (\n key: TranslationKey,\n interpolationOptions?: SitecoreTranslation,\n) => string {\n const [t] = useTranslation();\n\n return (key: string, interpolationOptions?: SitecoreTranslation) =>\n translateKey(key, t, interpolationOptions);\n}\n","import { CN_MARKET } from '../constants';\nimport { useAppConfigurationContext } from '../contexts/AppConfigurationContext';\n\nexport const useIsMarketCN = () => {\n const { tenant } = useAppConfigurationContext();\n\n return tenant === CN_MARKET;\n};\n","import { useWindowSize } from './useWindowSize';\nimport { DESKTOP_BREAKPOINT } from '~/constants';\n\nexport const useMobileWidth = (): boolean => {\n const { width: windowWidth } = useWindowSize();\n\n return windowWidth < DESKTOP_BREAKPOINT;\n};\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useDebouncedCallback } from 'use-debounce';\n\nconst RESIZE = 'resize';\nexport const RESIZE_DEBOUNCE_DELAY = 275;\n\nexport const useWindowSize = () => {\n const [height, setHeight] = useState(0);\n const [width, setWidth] = useState(0);\n\n const syncSizes = useCallback(() => {\n setHeight(window.innerHeight);\n setWidth(window.innerWidth);\n }, []);\n\n const debouncedSyncSizes = useDebouncedCallback(() => {\n syncSizes();\n }, RESIZE_DEBOUNCE_DELAY);\n\n useEffect(() => {\n syncSizes();\n window.addEventListener(RESIZE, debouncedSyncSizes);\n\n return () => {\n window.removeEventListener(RESIZE, debouncedSyncSizes);\n };\n }, [debouncedSyncSizes, syncSizes]);\n\n return useMemo(() => ({ width, height, sync: syncSizes }), [width, height, syncSizes]);\n};\n","export enum BurgerMenuTabNames {\n ProductsTab = 'products-tab',\n AccountTab = 'account-tab',\n}\n","/**\n * Translation keys enum for top-area. Actual translation keys are values that are sent and returned from translation API are values of this object instead of keys\n */\nexport enum TranslationKeys {\n AllBrands = 'All brands',\n Articles = 'Articles',\n brands = 'brands',\n Change = 'Change',\n FailedToSubmit = 'FailedToSubmit',\n Loading = 'Loading',\n LogIn = 'Log in',\n Menu = 'Menu',\n MyAccount = 'MyAccount',\n MyFavouriteProducts = 'My favourite products',\n NoOptions = 'NoOptions',\n Other = 'Other',\n PopularProducts = 'Popular products',\n PopularProductsInThisSearchQuery = 'Popular products in this search query',\n PopularSearchQueries = 'Popular search queries',\n Products = 'Products',\n Register = 'Register',\n Search = 'Search',\n SeeAll = 'See all',\n SeeAllResultsFor = 'See all results for',\n ShopFor = 'Shop for',\n ShoppingBag = 'Shopping bag',\n}\n","import { TranslationKeys } from './TranslationKeys';\n\nexport const CombinedTranslationKeys = { ...TranslationKeys };\n","export enum Categories {\n ACCESORIES = 'accessories',\n BATH_BODY = 'bath-body',\n FRAGNANCE = 'fragrance',\n HAIR = 'hair',\n MAKEUP = 'makeup',\n MEN = 'men',\n SKINCARE = 'skincare',\n WELLNES = 'wellness',\n ESSENTIAL_OILS = 'essential-oils',\n KIDS_BABY = 'kids-baby',\n}\n","export const FavoritesLink = '/favourite-products';\n","export enum JoinLinks {\n JoinTile = 'MenuTiles',\n IDontKnowYetLink = 'IDontKnowYet',\n}\n","export const NavigationTypes = {\n ShopSection: 'ShopSection',\n AboutTiles: 'AboutTiles',\n JoinTiles: 'JoinTiles',\n InspirationTiles: 'InspirationTiles',\n} as const;\n","export enum OurStoryLinks {\n ProductPhilosophy = '/product-philosophy',\n SupportCenter = '/support-center',\n Sustainability = '/sustainability',\n WhoWeAre = '/about',\n}\n","export enum SocialMediaPlatforms {\n Apple = 'apple',\n Facebook = 'facebook',\n Google = 'google',\n VKontakte = 'vkontakte',\n Wechat = 'wechat',\n}\n","export enum SpecialLinks {\n OutletShop = 'OutletShop',\n JoinRewards = 'JoinRewards',\n RewardsShop = 'RewardsShop',\n SampleShop = 'SampleShop',\n New = 'New',\n}\n\nexport enum SpecialLinksOrder {\n New,\n SampleShop,\n OutletShop,\n RewardsShop,\n JoinRewards,\n}\n\nexport declare type SpecialLinksType = keyof typeof SpecialLinksOrder;\n","export const formatDate = (date?: Date | unknown) => {\n if (!(date instanceof Date)) {\n return null;\n }\n const day = date.getDate();\n const month = date.getMonth();\n const year = date.getFullYear();\n\n return `${day}.${month + 1}.${year}`;\n};\n","export enum TopNavHeight {\n DESKTOP_DEFAULT = 'top-nav',\n DESKTOP_SHRUNK = 'top-nav--is-shrunk',\n MOBILE = 'top-nav--is-mobile',\n}\n\nexport const setTopNavHeight = (className: TopNavHeight) => {\n const bodyEl = document.body;\n const { DESKTOP_DEFAULT, DESKTOP_SHRUNK, MOBILE } = TopNavHeight;\n const remove = (cName: TopNavHeight) => bodyEl.classList.remove(cName);\n const add = (cName: TopNavHeight) => bodyEl.classList.add(cName);\n\n switch (className) {\n case DESKTOP_DEFAULT:\n remove(DESKTOP_SHRUNK);\n remove(MOBILE);\n break;\n case DESKTOP_SHRUNK:\n remove(MOBILE);\n add(DESKTOP_SHRUNK);\n break;\n case MOBILE:\n remove(DESKTOP_SHRUNK);\n add(MOBILE);\n break;\n default:\n break;\n }\n};\n","import type { TokenData } from '@ori/auth';\nimport { OidcAccessToken, OidcClient, OidcTokenStorage } from '@ori/auth';\n\nimport { IDENTITY_CLIENT_ID } from '../constants';\n\nexport interface TokenConfiguration {\n customerId: number;\n forceReload?: boolean;\n identityUrl?: string;\n tenant: string;\n}\n\nexport const getToken = async ({\n customerId,\n tenant,\n identityUrl,\n forceReload,\n}: TokenConfiguration) => {\n // try to get the token from tokenService\n if (window.ori?.tokenService) {\n if (customerId > 0) {\n try {\n const oriToken = await window.ori.tokenService.getToken();\n if (oriToken) {\n return new OidcAccessToken(oriToken.Token);\n }\n } catch (error) {\n // eslint-disable-next-line no-console -- Log error to the console\n console.log('getToken error: %o', error);\n }\n } else {\n try {\n const oriToken = await window.ori.tokenService.getPublicToken();\n if (oriToken) {\n return new OidcAccessToken(oriToken.Token);\n }\n } catch (error) {\n // eslint-disable-next-line no-console -- Log error to the console\n console.log('getPublicToken error: %o', error);\n }\n }\n }\n\n // try to get the token from session storage\n if (customerId > 0) {\n try {\n const authToken = sessionStorage.getItem('AuthToken');\n if (authToken) {\n const transformed = JSON.parse(authToken) as TokenData;\n const token = transformed.Token;\n\n return new OidcAccessToken(token);\n }\n } catch (error) {\n // eslint-disable-next-line no-console -- Log error to the console\n console.log('sessionStorage AuthToken error: %o', error);\n }\n } else {\n try {\n const publicToken = sessionStorage.getItem('PublicToken');\n if (publicToken) {\n const transformed = JSON.parse(publicToken) as TokenData;\n const token = transformed.Token;\n\n return new OidcAccessToken(token);\n }\n } catch (error) {\n // eslint-disable-next-line no-console -- Log error to the console\n console.log('sessionStorage PublicToken error: %o', error);\n }\n }\n\n // only on dev machine, not needed elsewhere\n if (process.env.NODE_ENV !== 'production') {\n const oidcTokenStorage = new OidcTokenStorage();\n let token;\n\n try {\n token = oidcTokenStorage.getAccessToken();\n } catch {\n throw new Error('Failed to obtain token');\n }\n\n if (token && !forceReload) {\n return token;\n }\n if (identityUrl) {\n const clientId = IDENTITY_CLIENT_ID;\n\n const oidcClient = new OidcClient(\n {\n callbackUrl: '#/',\n redirectUrl: window.location.href,\n },\n {\n clientId,\n identityUrl,\n\n acrValues: `tenant:${tenant}`,\n scope: 'openid profile user_identification',\n },\n );\n\n oidcClient.doLogin();\n }\n }\n\n throw new Error('Unsupported token configuration');\n};\n","import { parseSpaConfig } from '@ori-appshell/config';\n\nconst GRAPHQL_STRING = 'graphql';\n\nexport const getAppConfiguration = (config: string) => {\n const configValues = parseSpaConfig<{\n ssoAdLoginUrl: string;\n isCumulusMarket: boolean;\n mobileOfficeApiUrl: string;\n staticApiUrl: string;\n shouldDisplayNotificationIcon: boolean;\n globalApiUrl: string;\n identityUrl: string;\n }>(config, [\n 'globalApiUrl',\n 'identityUrl',\n 'staticApiUrl',\n 'mobileOfficeApiUrl',\n 'ssoAdLoginUrl',\n 'isCumulusMarket',\n 'shouldDisplayNotificationIcon',\n ]);\n\n const graphQlUrl = configValues.graphqlUrl;\n\n if (!graphQlUrl.endsWith(GRAPHQL_STRING)) {\n configValues.graphqlUrl = new URL(GRAPHQL_STRING, graphQlUrl).href;\n }\n\n return configValues;\n};\n","const methods = ['error', 'log', 'warn'] as const;\n\nconst base =\n (method: T) =>\n (...params: Parameters) => {\n if (process.env.NODE_ENV !== 'production') {\n console[method]('[top-area]: ', ...params);\n }\n };\n\nexport const log = {\n info: base('log'),\n error: base('error'),\n warn: base('warn'),\n};\n","import type { SendSignalToFusionProps } from '~/models';\n\nexport const sendSignalToFusion = async ({\n data,\n tenant,\n globalApiUrl,\n formattedToken,\n acceptLanguage,\n}: SendSignalToFusionProps) =>\n fetch(`${globalApiUrl}/applications/navigation/signal`, {\n body: JSON.stringify(data),\n headers: {\n 'accept-language': acceptLanguage,\n authorization: formattedToken,\n 'content-type': 'application/json',\n 'x-tenant-context': tenant,\n },\n keepalive: true,\n method: 'POST',\n });\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".top-nav {\\n --top-nav-height-animation: 0.3s ease-in-out;\\n --top-nav-height: 80px;\\n}\\n\\n.top-nav--is-shrunk {\\n --top-nav-height: 60px;\\n}\\n\\n.top-nav--is-mobile {\\n --top-nav-height: 56px;\\n}\\n\\n#online-top-area-root.top-nav--is-loaded {\\n height: var(--top-nav-height);\\n transition: height var(--top-nav-height-animation);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/App.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,4CAA4C;EAC5C,sBAAsB;AACxB;;AAEA;EACE,sBAAsB;AACxB;;AAEA;EACE,sBAAsB;AACxB;;AAEA;EACE,6BAA6B;EAC7B,kDAAkD;AACpD\",\"sourcesContent\":[\".top-nav {\\n --top-nav-height-animation: 0.3s ease-in-out;\\n --top-nav-height: 80px;\\n}\\n\\n.top-nav--is-shrunk {\\n --top-nav-height: 60px;\\n}\\n\\n.top-nav--is-mobile {\\n --top-nav-height: 56px;\\n}\\n\\n#online-top-area-root.top-nav--is-loaded {\\n height: var(--top-nav-height);\\n transition: height var(--top-nav-height-animation);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n"],"names":["ErrorBoundary","error","this","state","message","props","children","React","DEFAULT_LANGUAGE_KEY","DEFAULT_NAMESPACE","i18nextInstance","i18next","keySeparator","lng","fallbackLng","defaultNS","resources","interpolation","escapeValue","prefix","suffix","react","bindI18n","bindI18nStore","use","initReactI18next","init","I18nContainer","preloadedTranslations","useAppConfigurationContext","currentLanguage","onlineBaseUrl","window","log","payload","useMemo","baseUrl","location","origin","keys","CombinedTranslationKeys","localizationData","useSWRImmutable","fetchTranslations","suspense","data","useEffect","newResources","translations","addResourceBundle","changeLanguage","I18nextProvider","i18n","TopArea","lazy","async","then","module","default","LazyTopArea","useToken","formattedToken","TopAreaApp","config","pbsIconInBurgerMenu","removeQueryParameter","setQueryParameter","customerId","pbsConfiguration","isEnabled","Boolean","ApiProviderContext","TestIdProvider","team","Team","project","NavigationContext","NotificationsContext","CataloguesContext","Suspense","fallback","TopAreaSkeleton","configuration","TopAreaBlock","telemetryInitializer","item","baseType","baseData","exceptions","startsWith","tags","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","render","rootEl","document","getElementById","dataset","appConfig","getAppConfiguration","tenant","dirtyIdentityUrl","identityUrl","endsWith","slice","extractTokenFromUrl","token","getToken","appInsights","tokenCustomerId","Number","getClaim","addTelemetryInitializer","trackException","exception","Error","severityLevel","SeverityLevel","trackCustomerTokenMismatch","console","warn","ReactDOM","PrefetchedTokenProvider","toString","ThemeProvider","enableCacheProvider","cacheKey","ProductImageRoot","styled","objectFit","borderRadius","theme","shape","largeComponentRadius","ProductImage","image","alt","catalogue","getTestId","useTestId","imagesVariants","url","params","width","height","quality","images","getImageVariants","srcSet","generateSrcSet","sizes","src","at","CataloguesRoot","shouldForwardProp","isMarketCN","isMobile","alignItems","background","palette","common","white","color","text","primary","display","flexDirection","breakpoints","up","DESKTOP_BREAKPOINT","columnGap","gridTemplateColumns","gridTemplateRows","justifyContent","marginBottom","spacing","CataloguesCurrentDetails","alignSelf","gridColumn","gridRow","CataloguesCurrentTitle","Link","fontSize","typography","pxToRem","fontWeight","fontWeightBold","lineHeight","textAlign","textDecoration","grey","A400","CataloguesCurrentValidity","Typography","A700","body1","margin","CataloguesCurrentImage","WebkitTapHighlightColor","alpha","black","content","position","CataloguesOtherLabel","CataloguesNextImage","CataloguesSeeAll","ownerState","marginTop","isSingleCatalogue","CataloguesSeeAllLink","textTransform","textDecorationThickness","textUnderlineOffset","BannerWrapper","padding","Catalogues","useCataloguesContext","catalogues","isDataFetched","shopSection","useNavigationContext","useIsMarketCN","useMobileWidth","useTranslationByKey","Skeleton","formatValidity","catalogueId","find","e","valid","from","formatDate","to","link","linkType","catalogueCurrent","catalogueNext","cataloguesAll","isCatalogueNextValid","imageUrl","title","id","Banner","type","dateRange","TENANTS_LIST_WHERE_CATALOG_HEADER_IS_HIDDEN","href","onClick","UserAction","CLICK_CATALOGUE_DETAIL","TranslationKeys","BurgerMenuContentRoot","StyledPbsMenuContent","PbsMenuContent","marginLeft","LazyInspiration","loadable","mod","Inspiration","LazyCategoryContent","CategoryContent","memo","BurgerMenuContent","contentRootRef","activeLink","pbsContentIsShown","navigation","NavigationLinkType","ref","LazyGeneratedBurgerMainMenuLinks","BurgerMenuLinks","isBrandPartner","SQUARES_SIZE","UnifiedSkeleton","transform","Root","top","left","zIndex","appBar","TOP_NAV_HEIGHT_MOBILE","boxSizing","TOP_NAV_HEIGHT","LogoSkeleton","LeftSideRoot","LeftSideSkeletonItem","marginRight","RightSideRoot","justifySelf","SearchBarSkeleton","SkeletonCatalogueMobileRoot","Box","SkeletonCatalogueMobileValidity","SkeletonCatalogueMobileSeeAll","SkeletonCatalogueMobile","animation","variant","SkeletonMainCategoriesMobileCategory","minWidth","SkeletonMainCategoriesMobileCategoryLarge","SkeletonMainCategoriesMobile","elements","Math","floor","innerHeight","steps","Array","length","element","index","skeletonElements","map","step","SkeletonSubCategoryMobileRoot","SkeletonSubCategoryMobileLoader","paddingTop","SkeletonSubCategoryMobile","SkeletonCatalogueDesktopRoot","gridColumnStart","paddingRight","SkeletonCatalogueDesktopValidity","SkeletonCatalogueDesktopContent","SkeletonCatalogueDesktopSeeAll","SkeletonCatalogueDesktop","SkeletonMenuLinks","borderRight","SkeletonMainCategoriesDesktop","sx","times","SkeletonSubCategoryRoot","SkeletonSubCategoryLoader","SkeletonSubCategoryDesktop","TopAreaReservedSpaceBlock","minHeight","down","CN_MARKET","CONSULTANT_NUMBER_QUERY_PARAM_KEY","RETURN_URL_QUERY_PARAM_KEY","SCROLL_THROTTLE_DELAY","CLICK_CATALGOUE","CLICK_BURGER_MENU","CLICK_CATEGORY_BRAND","START_SEARCH","SEARCH_THROTTLE_TIME","CATALOG_LINK_TYPE","CLICK_FAVORITE_ICON","CLICK_NOTIFICATION_ICON","AboutTileImage","name","AboutMenuRoot","backgroundColor","border","boxShadow","SHADOW_LEVEL1","transition","AboutTilesWrapper","borderBottom","gridAutoColumns","gridAutoFlow","overflow","AboutTileLink","opacity","AboutTileTitle","textShadow","shadows","AboutMenuContent","aboutTiles","toggleMenu","slicedAboutTiles","onClickOverlay","useCallback","tile","Backdrop","open","AboutMenu","activeMenu","ToggleMenuFlyout","AccountFlyoutRoot","AccountLazy","AccountFlyout","useTheme","handleModalClose","isAccountMenuActive","Modal","style","modal","onClose","Slide","in","direction","BurgerMenuTabRoot","ButtonBase","overline","isActive","BurgerMenuTabIconWrapper","isLoggedIn","main","BurgerMenuTabLabelWrapper","textOverflow","BurgerMenuTab","activeTab","tabIcon","tabName","onTabClick","clickHandler","TabIcon","disableRipple","BurgerMenuRoot","maxWidth","isDesktop","BurgerMenuContainer","LazyPersonalMenu","PersonalMenu","LazyAccount","LazyBurgerMenuLinks","BurgerMenu","consultantNumber","customerType","lang","BurgerMenuType","AccountSideMenuType","AccountSideMenu","burgerMenuTab","setPbsContentIsShown","useState","isAccountTabActive","setIsAccountTabActive","customerTypeId","handleTabClick","menuType","BurgerMenuTabNames","globalApiUrl","staticApiUrl","personalMenuInitialData","mobileOfficeApiUrl","configConsultantNumber","consultantType","reportsItemName","isAnonymousUser","isMenuActive","accountTabContent","drawer","componentsProps","backdrop","BurgerMenuIcon","UserFilled","User","as","JoinTileImage","JoinMenuRoot","isVisible","JoinTilesWrapper","JoinTileLink","webkitTapHighlightColor","borderColor","JoinTileDescription","whiteSpace","JoinTileTitle","JoinMenuIdkyLink","light","JoinMenu","iDontKnowYetLink","joinTiles","exitMenu","description","className","createMarginWithImportant","AboutLabelRoot","handleClick","dispatchToggleMenu","ToggleMenuFlyoutEvent","AboutIcon","aboutLabel","BurgerMenuIconRoot","isOpen","BurgerMenuIconWrapper","BurgerMenuIconLine","emptyFunction","useToggleMenu","menuIsOpen","wasFavoriteAdded","setWasFavoriteAdded","usePersonalBeautyStore","pbsTooltipWasShown","tooltipWasShown","setPbsTooltipWasShown","setTooltipWasShown","pbsData","useTranslation","translate","onClickCallback","beautyStore","profile","firstName","lastName","onFavoritesUpdated","detail","favorites","lastUpdated","includes","setTimeout","addEventListener","FavoritesUpdatedEvent","removeEventListener","HeartsAnimation","shouldAnimationRun","pbsTooltipOffset","BurgerMenuToggleRoot","StyledPbsTooltip","PbsTooltip","BurgerMenuToggle","onPbsTooltipClick","JoinLabel","cursor","JoinIcon","joinLabel","joinUrl","SearchIconRoot","SearchIcon","hideSearchResultsTab","toggleIsSearchInputVisible","isSearchInputVisible","Search","UserIconRoot","UserIconButton","UserIcon","useHover","Icon","ssoAdLoginUrl","event","ctrlKey","metaKey","MenuTypes","consultantDetail","label","value","VipOrderConsultant","vipAccessData","AvailableCredit","Debt","GroupBp","PersonalBp","RemainingDiscount","RemainingPrepayment","vipAccessLabels","availableCreditLabel","debtLabel","groupBpLabel","personalBpLabel","remainingDiscountLabel","remainingPrepaymentLabel","mx","my","VipOrderFormRoot","VipOrderFormInput","TextField","VipOrderFormSubmit","Button","VipOrderForm","ConsultantChangeConsultantNumber","cancelToken","useRef","formRef","areHintsLoading","setAreHintsLoading","setConsultantNumber","errorMessage","setErrorMessage","hints","setHints","isSubmitLocked","setIsSubmitLocked","useForm","register","handleSubmit","handleChange","target","current","cancel","axios","getCustomAxios","get","getConsultantNumbersUrl","hint","catch","finally","handleSelect","textContent","post","vipAccessSwitchValidateUrl","result","onSubmit","accessConsultantUrl","consultant","ConsultantNumber","ErrorMessage","IsAccessGranted","vipAccessSwitchUrl","submit","action","basketUrl","autoComplete","method","Autocomplete","getOptionLabel","String","loading","loadingText","noOptionsText","renderInput","helperText","onChange","disabled","VipOrderRoot","mediumComponentRadius","right","VipOrderLink","VipOrderLinkValue","VipOrder","CustomerOnBehalfOfFormattedName","Links","Url","Text","VipOrderIconRoot","IconButton","h4","VipOrderIcon","consultantData","setConsultantData","isPopupOpen","cancelSource","vipAccessUrl","getData","VipAccessData","VipAccessLabels","onKeyDown","onEnterKey","NewUserFilled","NewUser","LeftActionsSectionRoot","LeftActionsSection","OriflameLogoSvg","fill","chineseLogo","xmlns","viewBox","d","commonLogo","OriflameLogo","FavoritesHeartRoot","FavoritesHeartIcon","HeartFilled","Heart","shouldFavoritesRender","setShouldFavoritesRender","pathname","FavoritesLink","getConfigElement","NotificationBellIconRoot","NotificationBellIconButton","NotificationBellIcon","NotificationFilled","Notification","isClicked","setIsClicked","shouldDisplayNotificationIcon","useNotificationsContext","notificationsCount","loadNotificationsCount","abortController","AbortController","abortSignal","signal","abort","Badge","badgeContent","max","invisible","PbsIconRoot","PbsIcon","elementParent","pbsIcon","querySelector","parentElement","removeChild","append","classList","remove","sessionStorage","getItem","shouldOpenTooltip","dispatchEvent","CustomEvent","growShrinkAnimation","keyframes","ShoppingBagCounterRoot","bottom","letterSpacing","isAnimationActive","animationDuration","animationName","ShoppingBagCounter","shoppingBagQuantity","setIsAnimationActive","ShoppingBagIconRoot","isCnMarket","eCatalogueRootElement","getFLyoutEvent","shouldOpen","ShoppingBagIcon","isECatalogue","mobileBreakpoint","matchMedia","mobileBreakpointECatalogue","matches","iconOnHover","MiniBagFilled","icon","MiniBag","ShoppingBasketFilled","EmptyBasket","setShoppingBagQuantity","isReceivedShoppingContext","setIsReceivedShoppingContext","updateShoppingBagQuantity","newShoppingBagQuantity","shoppingContextLoadedEventHandler","shoppingBag","basketUpdatedEventHandler","requestShoppongContextEvent","ShoppingContextLoaded","BasketUpdated","RequestShoppingContext","onMouseEnter","onMouseLeave","onMobileEcataloguePageClick","ShoppingBagContent","SearchInputRoot","speedDial","SearchInputBox","paddingLeft","isFocus","SHADOW_LEVEL3","visibility","SearchInputInput","SearchInputClear","onEnterPressHandler","key","SearchInput","isSearchInputFocus","setIsSearchInputFocus","getSearchResults","setSearchInputValue","searchInputValue","clearSearchResults","startFetchingSearchData","syncSizes","useWindowDimensionsContext","useDebounce","debouncedValue","throttledAnalytics","useThrottledCallback","onFocusHandler","onChangeHandler","isValueEmpty","clearInput","handleOnBlur","autoFocus","placeholder","onFocus","onBlur","Clear","RightActionsSectionRoot","RightActionsSection","showFavorites","isSmall","ProductImageNoImage","h3","size","Products","imageSizes","ProductTileRoot","isLarge","flexBasis","caption","ProductTileProductLink","ProductTileTitle","WebkitBoxOrient","WebkitLineClamp","ProductTilePriceBox","ProductTileActualPrice","ProductTileStandardPrice","ProductTile","basicCataloguePrice","currentPrice","displayProductName","largeVersion","productCode","productName","productUrl","onClickHandler","PopularProductsRoot","PopularProductsHeader","PopularProductsWrapper","flexWrap","PopularProducts","searchResults","searchTimestamp","searchSignalsData","getSignalsData","searchSuggestionClickData","itemData","formatProduct","itemType","ContentType","searchQuery","Query","placement","Placement","sendSignalData","acceptLanguage","sendSignalToFusion","SearchSuggestionClick","ProductCode","StandardPrice","ActualPrice","ProductImageUrl","ConceptName","PopularSearchQueriesRoot","PopularSearchQueriesHeading","PopularSearchQueriesResults","listStyleType","PopularSearchQueriesItem","PopularSearchQueriesLink","PopularSearchQueries","localBannerTitle","media","Suggestions","boldMatchedText","SearchResultsRoot","SearchResultsContentWrapper","rootPaddings","maxHeight","overflowY","overscrollBehaviorY","SearchResultsHeader","SearchResultsQuery","paddingBottom","SearchResultsLeftSide","SearchResultsLoader","LazyArticles","Articles","SearchResultsContent","isFetching","windowHeight","setInnerHeight","isArticles","Contents","RenderSearchResult","SearchResults","InnerTopAreaRoot","personalMenu","globalApiClient","useApiProviderContext","myPagesPersonalMenuRootRef","language","setLanguage","setCustomerType","externalLoginName","areNavigationsElementsFetched","getNavigationElements","useClickSignInButtonSupportCenter","documentLang","documentElement","prevLanguage","undefined","useLayoutEffect","bodyEl","body","topAreaRoot","add","TopNavHeight","setTopNavHeight","throttledHandleScroll","throttle","isPageScrolled","scrollY","toggleMenuHandler","searchParams","URL","returnUrl","consultantNumberQueryParam","getApplicationsNavigationCustomerInfo","consultantNumberResponse","customerTypeResponse","createContext","ApiProviderContextProvider","createGlobalApiClient","staticApiClient","createStaticApiClient","Provider","context","useContext","AppConfigurationContext","AppConfigurationProvider","setCurrentLanguage","graphqlUrl","setGraphqlUrl","setTenant","setGlobalApiUrl","isCumulusMarket","setIsCumulusMarket","setStaticApiUrl","setMobileOfficeApiUrl","setShouldDisplayNotificationIcon","setSsoAdLoginUrl","setIdentityUrl","setExternalLoginName","setPersonalMenuInitialData","externalProviderType","setExternalProviderType","setConsultantType","setReportsItemName","CataloguesContextProvider","setCatalogues","setIsDataFetched","getCatalogues","getTenantCatalogues","collection","JOIN_TILE","findLabel","navigationCollection","navigationElement","NavigationContextProvider","setActiveLink","setActiveMenu","setAboutLabel","setAboutTiles","setJoinLabel","setJoinUrl","setIsFetching","setBurgerMenuTab","setIsSearchInputVisible","setSearchResults","setSearchTimestamp","setJoinTiles","setIDontKnowYetLink","inspirationTiles","setInspirationTiles","setShopSection","setCancelToken","isNavigationsFetched","setNavigationsElementsFetcher","isMenuDownloaded","setIsMenuDownloaded","getNavigationData","navigationType","requestOptions","excludeChildren","customerInfo","visitorSegment","getTenantApplicationsNavigationNavigation","useFetchNavigationItems","updateActiveLinkAction","getTopNavigationAttributes","response","getElements","NavigationTypes","filter","JoinLinks","Object","values","forEach","openBurgerMenuTab","tab","query","newCancelToken","set","trim","performance","now","displayName","NotificationsContextProvider","setNotificationsCount","getCustomerUnseenNotificationsCount","count","WindowDimensionsContext","WindowDimensionsProvider","useWindowSize","windowWidth","sync","customAxiosInstance","ActualPriceUnformated","CurrencyCode","GtmBrand","GtmCategory","currency","globalBrandName","globalCategoryName","globalName","itemCode","localBrandName","localCategoryName","localName","price","timestamp","SignalsParameters","DocumentId","ProductDetailUrl","FilterQueries","Position","SearchTime","round","SessionId","OnlineSessionId","TotalHits","TimeStamp","Date","Type","baseURL","headers","articleContent","searchPhrase","escapedSearchPhrase","replace","regExpPattern","RegExp","splittedText","split","exec","el","handler","menuToggle","requestAnimationFrame","isHover","setIsHover","isHoverAvailable","useMediaQuery","getIcon","handleMouseOver","handleMouseLeave","loginButton","preventDefault","translateKey","t","interpolationOptions","RESIZE","setHeight","setWidth","innerWidth","debouncedSyncSizes","useDebouncedCallback","Categories","OurStoryLinks","SocialMediaPlatforms","SpecialLinks","SpecialLinksOrder","ShopSection","AboutTiles","JoinTiles","InspirationTiles","date","day","getDate","month","getMonth","year","getFullYear","forceReload","ori","tokenService","oriToken","OidcAccessToken","Token","getPublicToken","authToken","JSON","parse","publicToken","GRAPHQL_STRING","configValues","parseSpaConfig","graphQlUrl","info","fetch","stringify","authorization","keepalive","DESKTOP_DEFAULT","DESKTOP_SHRUNK","MOBILE","cName","___CSS_LOADER_EXPORT___","push"],"sourceRoot":""}